⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cisaironetstmibioctl.c

📁 vworks 下wlan的实现代码
💻 C
字号:
/* cisAironetStMibIoctl.c - Mib driver Ioctl (control) routines  *//* Copyright 2001-2003 Wind River Systems, Inc. *//*modification history--------------------01n,09may03,rb  Removed warnings caused by IPv6 integration01m,26feb03,ss  Fixed diab compiler warnings01h,09may02,dxb  Removed CIS_AIRONET_SLEEP and CIS_AIRONET_WAKEUP.01g,08may02,dxb  Updated comments.01f,06may02,eja  Added changes to support trimmed mib.01d,08apr02,eja  Code clean up before FCS.01c,08mar02,eja  Added new power save macro around ioctl call.01b,28feb02,eja  Changes to mib leaf element defines.01a,14feb02,eja  Added macro to convert FALSE to DOT11_FALSE (2).*//*DESCRIPTIONThis module provides the support routines for the Cisco Aironet 340/350wireless 802.11b driver.INCLUDE FILES: cisAironet.h, wlanEnd.hSEE ALSO: cisAironetHw.c, cisAironetEnd.c, cisAironetIoctl.c, configWlan.h*/#include <vxWorks.h>#include <string.h>#include <ioLib.h>#include <stdio.h>#include <logLib.h>#include "wrn/wlan/cisAironet.h"#include "wrn/wlan/wlanEnd.h"#include "wrn/wlan/snmp802dot11.h"#define VXBOOL_TO_DOT11BOOL(truthVal) \    { \    truthVal = (truthVal == FALSE) ? DOT11_FALSE: truthVal; \    }/**************************************************************************** cisAironetStMibIoctl - Ioctl Routines for MIB support* * RETURNS : OK, EINVAL for an invalid value, or ERROR if an error occured** ERRNO : N/A** SEE ALSO: Cisco Aironet 340/350 Driver Programmer's Manual** NOMANUAL*/   int cisAironetStMibIoctl    (    CARD_CTRL_T * pDev,  /* Pointer to device control structure */    INT32         cmd,   /* ioctl command to execute */    caddr_t       data   /* generic data pointer - varies by cmd */    )    {    INT32                 status   = OK;    PDOT11_IOCTL_PARAM_T  pCmdObj  = NULL;    INT16                 mibGroup = 0;    INT16                 mibLeaf  = 0;    if (pDev == NULL)         {        ANET_DEBUG(DEBUG_ERROR,                    (" cisAironetStMibIoctl: NULL pointer"));        return (ERROR);        }    /* attach to command object */    pCmdObj = (PDOT11_IOCTL_PARAM_T) data;    /* Extract the mib group */    mibGroup = (INT16) (pCmdObj->cmdCall >> 16);    /* Extract the mib leaf */    mibLeaf  = (INT16) pCmdObj->cmdCall;    /* Get or Set a station variable (mib leaf) */    switch (cmd)        {        /* Get station variables */        case EIOCGMIB2STA:            {            /* Get the object element for the snmp agent */             switch (mibGroup)                {                /* Get the leaf element for the snmp agent */                case STATION_CONFIG_ENTRY:                    {                    CFG_RID_T                cfg;                    STATUS_RID_T             stat;                    PSTATION_CONFIG_ENTRY_T  pInfo = NULL;                                        /* Get the card config Rid */                    if ( cisAironetHwRidActualConfigGet (pDev, (void *) &cfg)                         == ERROR )                        {                        status = EINVAL;                        break;                        }                                        /* Get the card status */                    if ( cisAironetHwRidStatusGet (pDev, (void *) &stat)                         == ERROR )                        {                        status = EINVAL;                        break;                        }                                        /* Copy the configuration info into the data buffer */                    pInfo = (PSTATION_CONFIG_ENTRY_T) pCmdObj->pData;                                        switch (mibLeaf)                        {                        case  SMT_STATION_ID:                            bcopy ((char *) stat.mac,                                     (char *) pInfo->dot11StationID,                                   NELEMENTS(stat.mac));                            break;                        case  SMT_MEDIUM_OCCUPANCY_LIMIT:                            pInfo->dot11MediumOccupancyLimit = DOT11_MOL_MIN;                            break;                        case  SMT_CF_POLLABLE:                            pInfo->dot11CFPollable = DOT11_TRUE;                            break;                        case  SMT_CFP_PERIOD:                            pInfo->dot11CFPPeriod  = cfg.dtimPeriod * 1024;                            break;                        case  SMT_CFP_MAX_DURATION:                            pInfo->dot11CFPMaxDuration = DOT11_MOL_MIN;                            break;                        case  SMT_AUTH_RESP_TOUT:                            pInfo->dot11AuthenticationResponseTimeOut =                                 cfg.authTimeout;                            break;                        case  SMT_PRIV_OPT_IMPL:                            pInfo->dot11PrivacyOptionImplemented = DOT11_TRUE;                            break;                        case  SMT_PWR_MGR_MODE:                            VXBOOL_TO_DOT11BOOL(cfg.powerSaveMode);                            pInfo->dot11PowerManagementMode = cfg.powerSaveMode;                            break;                        case  SMT_DESIRED_SSID:                            bcopy ((char *) stat.SSID,                                    (char *)pInfo->dot11DesiredSSID,                                   NELEMENTS(stat.currentBssID));                            break;                        case  SMT_DESIRED_BSS_TYPE:                            bcopy ((char *) stat.SSID,                                    (char *) pInfo->dot11DesiredSSID,                                   NELEMENTS(stat.currentBssID));                            break;                        case  SMT_OPER_RATE_SET:                            bcopy ((char *) cfg.rates,                                    (char *) pInfo->dot11OperationalRateSet,                                   NELEMENTS(cfg.rates));                            break;                        case  SMT_BEACON_PERIOD:                        case  SMT_DTIM_PERIOD:                            pInfo->dot11DTIMPeriod  = cfg.dtimPeriod;                            break;                        case  SMT_ASSOC_RESP_TOUT:                            pInfo->dot11AssociationResponseTimeOut =                                 cfg.associationTimeout;                            break;                        default:                            status = EINVAL;                            break;                        }                    }                    break;                case AUTH_ALGORITHM_ENTRY:                case OPERATION_ENTRY:                case COUNTERS_ENTRY:                case GROUP_ADDRESSES_ENTRY:                case RESOURCE_INFO_ENTRY:                case PHY_OPERATION_ENTRY:                case PHY_DSSS_ENTRY:                default:                    status = EINVAL;                    break;                }            }            break;        /* Set station variables */        case  EIOCSMIB2STA:            status = EINVAL;            break;        default:            status = EINVAL;        }    /* If there's an error, return that */    return (status);    }                  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -