📄 wmi.c
字号:
wmi_qos_state_init(wmip); return status;}A_STATUSwmi_startscan_cmd(struct wmi_t *wmip, WMI_SCAN_TYPE scanType){ void *osbuf; WMI_START_SCAN_CMD *sc; if ((scanType != WMI_LONG_SCAN) && (scanType != WMI_SHORT_SCAN)) { return A_EINVAL; } osbuf = a_netbuf_alloc(sizeof(*sc)); if (osbuf == NULL) { return A_NO_MEMORY; } a_netbuf_put(osbuf, sizeof(*sc)); sc = (WMI_START_SCAN_CMD *)(a_netbuf_to_data(osbuf)); sc->scanType = scanType; return (wmi_cmd_send(wmip, osbuf, WMI_START_SCAN_CMDID, NO_SYNC_WMIFLAG));}A_STATUSwmi_scanparams_cmd(struct wmi_t *wmip, A_UINT16 fg_start_sec, A_UINT16 fg_end_sec, A_UINT16 bg_sec, A_UINT16 act_chdw_msec, A_UINT16 pas_chdw_msec, A_UINT8 shScanRatio){ void *osbuf; WMI_SCAN_PARAMS_CMD *sc; osbuf = a_netbuf_alloc(sizeof(*sc)); if (osbuf == NULL) { return A_NO_MEMORY; } a_netbuf_put(osbuf, sizeof(*sc)); sc = (WMI_SCAN_PARAMS_CMD *)(a_netbuf_to_data(osbuf)); A_MEMZERO(sc, sizeof(*sc)); sc->fg_start_period = fg_start_sec; sc->fg_end_period = fg_end_sec; sc->bg_period = bg_sec; sc->act_chdwell_time = act_chdw_msec; sc->pas_chdwell_time = pas_chdw_msec; sc->shortScanRatio = shScanRatio; return (wmi_cmd_send(wmip, osbuf, WMI_SET_SCAN_PARAMS_CMDID, NO_SYNC_WMIFLAG));}A_STATUSwmi_bssfilter_cmd(struct wmi_t *wmip, A_UINT8 filter){ void *osbuf; WMI_BSS_FILTER_CMD *cmd; if (filter >= LAST_BSS_FILTER) { return A_EINVAL; } osbuf = a_netbuf_alloc(sizeof(*cmd)); if (osbuf == NULL) { return A_NO_MEMORY; } a_netbuf_put(osbuf, sizeof(*cmd)); cmd = (WMI_BSS_FILTER_CMD *)(a_netbuf_to_data(osbuf)); A_MEMZERO(cmd, sizeof(*cmd)); cmd->bssFilter = filter; return (wmi_cmd_send(wmip, osbuf, WMI_SET_BSS_FILTER_CMDID, NO_SYNC_WMIFLAG));}A_STATUSwmi_probedSsid_cmd(struct wmi_t *wmip, A_UINT8 index, A_UINT8 flag, A_UINT8 ssidLength, A_UCHAR *ssid){ void *osbuf; WMI_PROBED_SSID_CMD *cmd; if (index > MAX_PROBED_SSID_INDEX) { return A_EINVAL; } if (ssidLength > sizeof(cmd->ssid)) { return A_EINVAL; } if ((flag & (DISABLE_SSID_FLAG | ANY_SSID_FLAG)) && (ssidLength > 0)) { return A_EINVAL; } if ((flag & SPECIFIC_SSID_FLAG) && !ssidLength) { return A_EINVAL; } osbuf = a_netbuf_alloc(sizeof(*cmd)); if (osbuf == NULL) { return A_NO_MEMORY; } a_netbuf_put(osbuf, sizeof(*cmd)); cmd = (WMI_PROBED_SSID_CMD *)(a_netbuf_to_data(osbuf)); A_MEMZERO(cmd, sizeof(*cmd)); cmd->entryIndex = index; cmd->flag = flag; cmd->ssidLength = ssidLength; A_MEMCPY(cmd->ssid, ssid, ssidLength); return (wmi_cmd_send(wmip, osbuf, WMI_SET_PROBED_SSID_CMDID, NO_SYNC_WMIFLAG));}A_STATUSwmi_listeninterval_cmd(struct wmi_t *wmip, A_UINT16 listenInterval, A_UINT16 listenBeacons){ void *osbuf; WMI_LISTEN_INT_CMD *cmd; osbuf = a_netbuf_alloc(sizeof(*cmd)); if (osbuf == NULL) { return A_NO_MEMORY; } a_netbuf_put(osbuf, sizeof(*cmd)); cmd = (WMI_LISTEN_INT_CMD *)(a_netbuf_to_data(osbuf)); A_MEMZERO(cmd, sizeof(*cmd)); cmd->listenInterval = listenInterval; cmd->numBeacons = listenBeacons; return (wmi_cmd_send(wmip, osbuf, WMI_SET_LISTEN_INT_CMDID, NO_SYNC_WMIFLAG));}A_STATUSwmi_bmisstime_cmd(struct wmi_t *wmip, A_UINT16 bmissTime, A_UINT16 bmissBeacons){ void *osbuf; WMI_BMISS_TIME_CMD *cmd; osbuf = a_netbuf_alloc(sizeof(*cmd)); if (osbuf == NULL) { return A_NO_MEMORY; } a_netbuf_put(osbuf, sizeof(*cmd)); cmd = (WMI_BMISS_TIME_CMD *)(a_netbuf_to_data(osbuf)); A_MEMZERO(cmd, sizeof(*cmd)); cmd->bmissTime = bmissTime; cmd->numBeacons = bmissBeacons; return (wmi_cmd_send(wmip, osbuf, WMI_SET_BMISS_TIME_CMDID, NO_SYNC_WMIFLAG));}A_STATUSwmi_associnfo_cmd(struct wmi_t *wmip, A_UINT8 ieType, A_UINT8 ieLen, A_UINT8 *ieInfo){ void *osbuf; WMI_SET_ASSOC_INFO_CMD *cmd; A_UINT16 cmdLen; cmdLen = sizeof(*cmd) + ieLen - 1; osbuf = a_netbuf_alloc(cmdLen); if (osbuf == NULL) { return A_NO_MEMORY; } a_netbuf_put(osbuf, cmdLen); cmd = (WMI_SET_ASSOC_INFO_CMD *)(a_netbuf_to_data(osbuf)); A_MEMZERO(cmd, cmdLen); cmd->ieType = ieType; cmd->bufferSize = ieLen; A_MEMCPY(cmd->assocInfo, ieInfo, ieLen); return (wmi_cmd_send(wmip, osbuf, WMI_SET_ASSOC_INFO_CMDID, NO_SYNC_WMIFLAG));}A_STATUSwmi_powermode_cmd(struct wmi_t *wmip, A_UINT8 powerMode){ void *osbuf; WMI_POWER_MODE_CMD *cmd; osbuf = a_netbuf_alloc(sizeof(*cmd)); if (osbuf == NULL) { return A_NO_MEMORY; } a_netbuf_put(osbuf, sizeof(*cmd)); cmd = (WMI_POWER_MODE_CMD *)(a_netbuf_to_data(osbuf)); A_MEMZERO(cmd, sizeof(*cmd)); cmd->powerMode = powerMode; wmip->wmi_powerMode = powerMode; return (wmi_cmd_send(wmip, osbuf, WMI_SET_POWER_MODE_CMDID, NO_SYNC_WMIFLAG));}A_STATUSwmi_ibsspmcaps_cmd(struct wmi_t *wmip, A_UINT8 pmEnable, A_UINT8 ttl, A_UINT16 atim_windows, A_UINT16 timeout_value){ void *osbuf; WMI_IBSS_PM_CAPS_CMD *cmd; osbuf = a_netbuf_alloc(sizeof(*cmd)); if (osbuf == NULL) { return A_NO_MEMORY; } a_netbuf_put(osbuf, sizeof(*cmd)); cmd = (WMI_IBSS_PM_CAPS_CMD *)(a_netbuf_to_data(osbuf)); A_MEMZERO(cmd, sizeof(*cmd)); cmd->power_saving = pmEnable; cmd->ttl = ttl; cmd->atim_windows = atim_windows; cmd->timeout_value = timeout_value; return (wmi_cmd_send(wmip, osbuf, WMI_SET_IBSS_PM_CAPS_CMDID, NO_SYNC_WMIFLAG));}A_STATUSwmi_pmparams_cmd(struct wmi_t *wmip, A_UINT16 idlePeriod, A_UINT16 psPollNum, A_UINT16 dtimPolicy){ void *osbuf; WMI_POWER_PARAMS_CMD *pm; osbuf = a_netbuf_alloc(sizeof(*pm)); if (osbuf == NULL) { return A_NO_MEMORY; } a_netbuf_put(osbuf, sizeof(*pm)); pm = (WMI_POWER_PARAMS_CMD *)(a_netbuf_to_data(osbuf)); A_MEMZERO(pm, sizeof(*pm)); pm->idle_period = idlePeriod; pm->pspoll_number = psPollNum; pm->dtim_policy = dtimPolicy; return (wmi_cmd_send(wmip, osbuf, WMI_SET_POWER_PARAMS_CMDID, NO_SYNC_WMIFLAG));}A_STATUSwmi_disctimeout_cmd(struct wmi_t *wmip, A_UINT8 timeout){ void *osbuf; WMI_DISC_TIMEOUT_CMD *cmd; osbuf = a_netbuf_alloc(sizeof(*cmd)); if (osbuf == NULL) { return A_NO_MEMORY; } a_netbuf_put(osbuf, sizeof(*cmd)); cmd = (WMI_DISC_TIMEOUT_CMD *)(a_netbuf_to_data(osbuf)); A_MEMZERO(cmd, sizeof(*cmd)); cmd->disconnectTimeout = timeout; return (wmi_cmd_send(wmip, osbuf, WMI_SET_DISC_TIMEOUT_CMDID, NO_SYNC_WMIFLAG));}A_STATUSwmi_addKey_cmd(struct wmi_t *wmip, A_UINT8 keyIndex, CRYPTO_TYPE keyType, A_UINT8 keyUsage, A_UINT8 keyLength, A_UINT8 *keyRSC, A_UINT8 *keyMaterial, WMI_SYNC_FLAG sync_flag){ void *osbuf; WMI_ADD_CIPHER_KEY_CMD *cmd; if ((keyIndex > WMI_MAX_KEY_INDEX) || (keyLength > WMI_MAX_KEY_LEN) || (keyMaterial == NULL)) { return A_EINVAL; } if ((WEP_CRYPT != keyType) && (NULL == keyRSC)) { return A_EINVAL; } osbuf = a_netbuf_alloc(sizeof(*cmd)); if (osbuf == NULL) { return A_NO_MEMORY; } a_netbuf_put(osbuf, sizeof(*cmd)); cmd = (WMI_ADD_CIPHER_KEY_CMD *)(a_netbuf_to_data(osbuf)); A_MEMZERO(cmd, sizeof(*cmd)); cmd->keyIndex = keyIndex; cmd->keyType = keyType; cmd->keyUsage = keyUsage; cmd->keyLength = keyLength; A_MEMCPY(cmd->key, keyMaterial, keyLength); if (NULL != keyRSC) { A_MEMCPY(cmd->keyRSC, keyRSC, sizeof(cmd->keyRSC)); } return (wmi_cmd_send(wmip, osbuf, WMI_ADD_CIPHER_KEY_CMDID, sync_flag));}A_STATUSwmi_add_krk_cmd(struct wmi_t *wmip, A_UINT8 *krk){ void *osbuf; WMI_ADD_KRK_CMD *cmd; osbuf = a_netbuf_alloc(sizeof(*cmd)); if (osbuf == NULL) { return A_NO_MEMORY; } a_netbuf_put(osbuf, sizeof(*cmd)); cmd = (WMI_ADD_KRK_CMD *)(a_netbuf_to_data(osbuf)); A_MEMZERO(cmd, sizeof(*cmd)); A_MEMCPY(cmd->krk, krk, WMI_KRK_LEN); return (wmi_cmd_send(wmip, osbuf, WMI_ADD_KRK_CMDID, NO_SYNC_WMIFLAG));}A_STATUSwmi_delete_krk_cmd(struct wmi_t *wmip){ void *osbuf; osbuf = a_netbuf_alloc(0); if (osbuf == NULL) { return A_NO_MEMORY; } return (wmi_cmd_send(wmip, osbuf, WMI_DELETE_KRK_CMDID, NO_SYNC_WMIFLAG));}A_STATUSwmi_deleteKey_cmd(struct wmi_t *wmip, A_UINT8 keyIndex){ void *osbuf; WMI_DELETE_CIPHER_KEY_CMD *cmd; if (keyIndex > WMI_MAX_KEY_INDEX) { return A_EINVAL; } osbuf = a_netbuf_alloc(sizeof(*cmd)); if (osbuf == NULL) { return A_NO_MEMORY; } a_netbuf_put(osbuf, sizeof(*cmd)); cmd = (WMI_DELETE_CIPHER_KEY_CMD *)(a_netbuf_to_data(osbuf)); A_MEMZERO(cmd, sizeof(*cmd)); cmd->keyIndex = keyIndex; return (wmi_cmd_send(wmip, osbuf, WMI_DELETE_CIPHER_KEY_CMDID, NO_SYNC_WMIFLAG));}A_STATUSwmi_setPmkid_cmd(struct wmi_t *wmip, A_UINT8 *bssid, A_UINT8 *pmkId, A_BOOL set){ void *osbuf; WMI_SET_PMKID_CMD *cmd; if (bssid == NULL) { return A_EINVAL; } if ((set == TRUE) && (pmkId == NULL)) { return A_EINVAL; } osbuf = a_netbuf_alloc(sizeof(*cmd)); if (osbuf == NULL) { return A_NO_MEMORY; } a_netbuf_put(osbuf, sizeof(*cmd)); cmd = (WMI_SET_PMKID_CMD *)(a_netbuf_to_data(osbuf)); A_MEMCPY(cmd->bssid, bssid, sizeof(cmd->bssid)); if (set == TRUE) { A_MEMCPY(cmd->pmkid, pmkId, sizeof(cmd->pmkid)); cmd->enable = PMKID_ENABLE; } else { A_MEMZERO(cmd->pmkid, sizeof(cmd->pmkid)); cmd->enable = PMKID_DISABLE; } return (wmi_cmd_send(wmip, osbuf, WMI_SET_PMKID_CMDID, NO_SYNC_WMIFLAG));}A_STATUSwmi_set_tkip_countermeasures_cmd(struct wmi_t *wmip, A_BOOL en){ void *osbuf; WMI_SET_TKIP_COUNTERMEASURES_CMD *cmd; osbuf = a_netbuf_alloc(sizeof(*cmd)); if (osbuf == NULL) { return A_NO_MEMORY; } a_netbuf_put(osbuf, sizeof(*cmd)); cmd = (WMI_SET_TKIP_COUNTERMEASURES_CMD *)(a_netbuf_to_data(osbuf)); cmd->cm_en = (en == TRUE)? WMI_TKIP_CM_ENABLE : WMI_TKIP_CM_DISABLE; return (wmi_cmd_send(wmip, osbuf, WMI_SET_TKIP_COUNTERMEASURES_CMDID, NO_SYNC_WMIFLAG));}A_STATUSwmi_dataSync_send(struct wmi_t *wmip, void *osbuf, int endPoint){ WMI_DATA_HDR *dtHdr; A_ASSERT(endPoint != WMI_CONTROL_MBOX); A_ASSERT(osbuf != NULL); if (a_netbuf_push(osbuf, sizeof(WMI_DATA_HDR)) != A_OK) { return A_NO_MEMORY; } dtHdr = (WMI_DATA_HDR *)a_netbuf_to_data(osbuf); dtHdr->info = (SYNC_MSGTYPE & WMI_DATA_HDR_MSG_TYPE_MASK) << WMI_DATA_HDR_MSG_TYPE_SHIFT; WMI_DEBUG_PRINTF("wmi sync pkt sent on mbox %d\n", endPoint); return (ar6000_control_tx(wmip->wmi_devt, osbuf, endPoint));}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -