1981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* 2981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * cu_cmd.c 3981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * 4981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * Copyright 2001-2009 Texas Instruments, Inc. - http://www.ti.com/ 5981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * 6981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * Licensed under the Apache License, Version 2.0 (the "License"); 7981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * you may not use this file except in compliance with the License. 8981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * You may obtain a copy of the License at 9981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * 10981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * http://www.apache.org/licenses/LICENSE-2.0 11981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * 12981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * Unless required by applicable law or agreed to in writing, software 13981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * distributed under the License is distributed on an "AS IS" BASIS, 14981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * See the License for the specific language governing permissions and 16981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * limitations under the License. 17981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt */ 18981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 19981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/**************************************************************************** 20981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 21981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* MODULE: cu_cmd.c 22981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 23981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* PURPOSE: 24981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 25981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* DESCRIPTION: 26981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* ============ 27981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 28981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 29981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt****************************************************************************/ 30981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 31981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* includes */ 32981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/************/ 33981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 34981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include <stdio.h> 35981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 36981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "cu_osapi.h" 37981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "TWDriver.h" 38981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "convert.h" 39981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "console.h" 40981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "cu_common.h" 41981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "cu_os.h" 42981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "ipc_event.h" 43981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "wpa_core.h" 44981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "cu_cmd.h" 45981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "oserr.h" 46981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 47981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* defines */ 48981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/***********/ 49981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#define print_available_values(arr) \ 50981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { \ 51981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 i; \ 52981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for(i=0; i<SIZE_ARR(arr); i++) \ 53981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"%d - %s%s", arr[i].value, arr[i].name, (i>=SIZE_ARR(arr)-1) ? (PS8)"\n" : (PS8)", " ); \ 54981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 55981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 56981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#define CU_CMD_FIND_NAME_ARRAY(index, arr, val) \ 57981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for ( index = 0; index < SIZE_ARR(arr); index++ ) \ 58981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if ( arr[ index ].value == (val) ) \ 59981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; \ 60981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 61981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#define CHAN_FREQ_TABLE_SIZE (sizeof(ChanFreq) / sizeof(struct CHAN_FREQ)) 62981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 63981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#define IS_BASIC_RATE(a) ((a) & NET_BASIC_MASK) 64981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 65981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#define RATE_2_MBPS(a) ((F32)((a) & (NET_BASIC_MASK-1))/2) 66981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 67981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#define NET_BASIC_MASK 0x80 /* defined in common/src/utils/utils.c */ 68981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 69981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#define BIT_TO_BYTE_FACTOR 8 70981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 71981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#define NVS_FILE_TX_PARAMETERS_UPDATE 0 72981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#define NVS_FILE_RX_PARAMETERS_UPDATE 1 73981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 74981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 75981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* local types */ 76981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/***************/ 77981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Module control block */ 78981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidttypedef struct CuCmd_t 79981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 80981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt THandle hCuWext; 81981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt THandle hCuCommon; 82981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt THandle hConsole; 83981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt THandle hIpcEvent; 84981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt THandle hWpaCore; 85981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 86981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 isDeviceRunning; 87981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 88981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt scan_Params_t appScanParams; 89981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TPeriodicScanParams tPeriodicAppScanParams; 90981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt scan_Policy_t scanPolicy; 91981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 92981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} CuCmd_t; 93981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 94981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* local variables */ 95981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/*******************/ 96981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstruct CHAN_FREQ { 97981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U8 chan; 98981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 freq; 99981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} ChanFreq[] = { 100981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {1,2412000}, {2,2417000}, {3,2422000}, {4,2427000}, 101981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {5,2432000}, {6,2437000}, {7,2442000}, {8,2447000}, 102981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {9,2452000}, 103981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {10,2457000}, {11,2462000}, {12,2467000}, {13,2472000}, 104981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {14,2484000}, {36,5180000}, {40,5200000}, {44,5220000}, 105981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {48,5240000}, {52,5260000}, {56,5280000}, {60,5300000}, 106981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {64,5320000}, 107981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {100,5500000}, {104,5520000}, {108,5540000}, {112,5560000}, 108981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {116,5580000}, {120,5600000}, {124,5620000}, {128,5640000}, 109981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {132,5660000}, {136,5680000}, {140,5700000}, {149,5745000}, 110981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {153,5765000}, {157,5785000}, {161,5805000} }; 111981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 112981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic named_value_t BSS_type[] = 113981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 114981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { os802_11IBSS, (PS8)"AD-Hoc" }, 115981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { os802_11Infrastructure, (PS8)"Infr." }, 116981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { os802_11AutoUnknown, (PS8)"Auto" }, 117981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt}; 118981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 119981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic named_value_t Current_mode[] = 120981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 121981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 0, (PS8)"SME Auto" }, 122981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1, (PS8)"SME Manual" }, 123981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt}; 124981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 125981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic named_value_t BeaconFilter_use[] = 126981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 127981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 0, (PS8)"INACTIVE" }, 128981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1, (PS8)"ACTIVE" }, 129981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt}; 130981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 131981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic named_value_t event_type[] = { 132981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { IPC_EVENT_ASSOCIATED, (PS8)"Associated" }, 133981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { IPC_EVENT_DISASSOCIATED, (PS8)"Disassociated" }, 134981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { IPC_EVENT_LINK_SPEED, (PS8)"LinkSpeed" }, 135981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { IPC_EVENT_AUTH_SUCC, (PS8)"Authentication Success" }, 136981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { IPC_EVENT_SCAN_COMPLETE, (PS8)"ScanComplete" }, 137653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt { IPC_EVENT_SCAN_STOPPED, (PS8)"ScanStopped" }, 138981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#ifdef XCC_MODULE_INCLUDED 139981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { IPC_EVENT_CCKM_START, (PS8)"CCKM_Start" }, 140981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 141981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { IPC_EVENT_MEDIA_SPECIFIC, (PS8)"Media_Specific" }, 142981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { IPC_EVENT_EAPOL, (PS8)"EAPOL" }, 143653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt { IPC_EVENT_RE_AUTH_STARTED, (PS8)"IPC_EVENT_RE_AUTH_STARTED" }, 144653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt { IPC_EVENT_RE_AUTH_COMPLETED, (PS8)"IPC_EVENT_RE_AUTH_COMPLETED" }, 145653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt { IPC_EVENT_RE_AUTH_TERMINATED, (PS8)"IPC_EVENT_RE_AUTH_TERMINATED" }, 146981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { IPC_EVENT_BOUND, (PS8)"Bound" }, 147981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { IPC_EVENT_UNBOUND, (PS8)"Unbound" }, 148981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#ifdef WPA_ENTERPRISE 149981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { IPC_EVENT_PREAUTH_EAPOL, (PS8)"PreAuth EAPOL"}, 150981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 151981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { IPC_EVENT_LOW_RSSI, (PS8)"Low RSSI" }, 152981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { IPC_EVENT_TSPEC_STATUS, (PS8)"IPC_EVENT_TSPEC_STATUS" }, 153981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { IPC_EVENT_TSPEC_RATE_STATUS, (PS8)"IPC_EVENT_TSPEC_RATE_STATUS" }, 154981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { IPC_EVENT_MEDIUM_TIME_CROSS, (PS8)"IPC_EVENT_MEDIUM_TIME_CROSS" }, 155981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { IPC_EVENT_ROAMING_COMPLETE, (PS8)"ROAMING_COMPLETE"}, 156981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { IPC_EVENT_EAP_AUTH_FAILURE, (PS8)"EAP-FAST/LEAP Auth Failed"}, 157981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { IPC_EVENT_WPA2_PREAUTHENTICATION, (PS8)"IPC_EVENT_WPA2_PREAUTHENTICATION" }, 158981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { IPC_EVENT_TRAFFIC_INTENSITY_THRESHOLD_CROSSED, (PS8)"IPC_EVENT_TRAFFIC_INTENSITY_THRESHOLD_CROSSED" }, 159653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt { IPC_EVENT_SCAN_FAILED, (PS8)"ScanFailed" }, 160981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { IPC_EVENT_WPS_SESSION_OVERLAP, (PS8)"IPC_EVENT_WPS_SESSION_OVERLAP" }, 161981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { IPC_EVENT_RSSI_SNR_TRIGGER_0, (PS8)"IPC_EVENT_RSSI_SNR_TRIGGER_0" }, 162653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt { IPC_EVENT_RSSI_SNR_TRIGGER_1, (PS8)"IPC_EVENT_RSSI_SNR_TRIGGER_1" }, 163653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt { IPC_EVENT_TIMEOUT, (PS8)"Timeout" } 164981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt}; 165981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 166981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic named_value_t report_module[] = 167981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 168981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_0 , (PS8)"timer " }, 169981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_1 , (PS8)"measurementMgr " }, 170981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_2 , (PS8)"measurementMgrSM " }, 171981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_3 , (PS8)"regulatoryDomain " }, 172981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_4 , (PS8)"requestHandler " }, 173981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_5 , (PS8)"SoftGemini " }, 174981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_6 , (PS8)"spectrumMngmntMgr " }, 175981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_7 , (PS8)"SwitchChannel " }, 176981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_8 , (PS8)"roamingMngr " }, 177981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_9 , (PS8)"scanMngr " }, 178981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_10 , (PS8)"admCtrlXCC " }, 179981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_11 , (PS8)"XCCMngr " }, 180981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_12 , (PS8)"XCCRMMngr " }, 181981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_13 , (PS8)"XCCTSMngr " }, 182981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_14 , (PS8)"rogueAp " }, 183981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_15 , (PS8)"TransmitPowerXCC " }, 184981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_16 , (PS8)"admCtrl " }, 185981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_17 , (PS8)"admCtrlNone " }, 186981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_18 , (PS8)"admCtrlWep " }, 187981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_19 , (PS8)"admCtrlWpa " }, 188981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_20 , (PS8)"admCtrlWpa2 " }, 189981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_21 , (PS8)"apConn " }, 190981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_22 , (PS8)"broadcastKey802_1x " }, 191981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_23 , (PS8)"broadcastKeyNone " }, 192981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_24 , (PS8)"broadcastKeySM " }, 193981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_25 , (PS8)"conn " }, 194981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_26 , (PS8)"connIbss " }, 195981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_27 , (PS8)"connInfra " }, 196981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_28 , (PS8)"keyDerive " }, 197981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_29 , (PS8)"keyDeriveAes " }, 198981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_30 , (PS8)"keyDeriveCkip " }, 199981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_31 , (PS8)"keyDeriveTkip " }, 200981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_32 , (PS8)"keyDeriveWep " }, 201981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_33 , (PS8)"keyParser " }, 202981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_34 , (PS8)"keyParserExternal " }, 203981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_35 , (PS8)"keyParserWep " }, 204981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_36 , (PS8)"mainKeysSm " }, 205981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_37 , (PS8)"mainSecKeysOnly " }, 206981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_38 , (PS8)"mainSecNull " }, 207981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_39 , (PS8)"mainSecSm " }, 208981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_40 , (PS8)"rsn " }, 209981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_41 , (PS8)"sme " }, 210981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_42 , (PS8)"smeSelect " }, 211981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_43 , (PS8)"smeSm " }, 212981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_44 , (PS8)"unicastKey802_1x " }, 213981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_45 , (PS8)"unicastKeyNone " }, 214981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_46 , (PS8)"unicastKeySM " }, 215981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_47 , (PS8)"CmdDispatcher " }, 216981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_48 , (PS8)"CmdHndlr " }, 217981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_49 , (PS8)"DrvMain " }, 218981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_50 , (PS8)"EvHandler " }, 219981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_51 , (PS8)"Ctrl " }, 220981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_52 , (PS8)"GeneralUtil " }, 221981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_53 , (PS8)"RateAdaptation " }, 222981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_54 , (PS8)"rx " }, 223981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_55 , (PS8)"TrafficMonitor " }, 224981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_56 , (PS8)"txCtrl " }, 225981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_57 , (PS8)"txCtrlParams " }, 226981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_58 , (PS8)"txCtrlServ " }, 227981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_59 , (PS8)"TxDataClsfr " }, 228981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_60 , (PS8)"txDataQueue " }, 229981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_61 , (PS8)"txMgmtQueue " }, 230981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_62 , (PS8)"txPort " }, 231981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_63 , (PS8)"assocSM " }, 232981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_64 , (PS8)"authSm " }, 233981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_65 , (PS8)"currBss " }, 234981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_66 , (PS8)"healthMonitor " }, 235981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_67 , (PS8)"mlmeBuilder " }, 236981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_68 , (PS8)"mlmeParser " }, 237981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_69 , (PS8)"mlmeSm " }, 238981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_70 , (PS8)"openAuthSm " }, 239981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_71 , (PS8)"PowerMgr " }, 240981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_72 , (PS8)"PowerMgrDbgPrint " }, 241981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_73 , (PS8)"PowerMgrKeepAlive " }, 242981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_74 , (PS8)"qosMngr " }, 243981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_75 , (PS8)"roamingInt " }, 244981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_76 , (PS8)"ScanCncn " }, 245981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_77 , (PS8)"ScanCncnApp " }, 246981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_78 , (PS8)"ScanCncnOsSm " }, 247981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_79 , (PS8)"ScanCncnSm " }, 248981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_80 , (PS8)"ScanCncnSmSpecific " }, 249981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_81 , (PS8)"scanResultTable " }, 250981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_82 , (PS8)"scr " }, 251981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_83 , (PS8)"sharedKeyAuthSm " }, 252981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_84 , (PS8)"siteHash " }, 253981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_85 , (PS8)"siteMgr " }, 254981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_86 , (PS8)"StaCap " }, 255981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_87 , (PS8)"systemConfig " }, 256981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_88 , (PS8)"templates " }, 257981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_89 , (PS8)"trafficAdmControl " }, 258981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_90 , (PS8)"CmdBld " }, 259981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_91 , (PS8)"CmdBldCfg " }, 260981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_92 , (PS8)"CmdBldCfgIE " }, 261981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_93 , (PS8)"CmdBldCmd " }, 262981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_94 , (PS8)"CmdBldCmdIE " }, 263981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_95 , (PS8)"CmdBldItr " }, 264981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_96 , (PS8)"CmdBldItrIE " }, 265981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_97 , (PS8)"CmdQueue " }, 266981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_98 , (PS8)"RxQueue " }, 267981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_99 , (PS8)"txCtrlBlk " }, 268981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_100 , (PS8)"txHwQueue " }, 269981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_101 , (PS8)"CmdMBox " }, 270981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_102 , (PS8)"eventMbox " }, 271981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_103 , (PS8)"fwDebug " }, 272981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_104 , (PS8)"FwEvent " }, 273981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_105 , (PS8)"HwInit " }, 274981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_106 , (PS8)"RxXfer " }, 275981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_107 , (PS8)"txResult " }, 276981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_108 , (PS8)"txXfer " }, 277981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_109 , (PS8)"MacServices " }, 278981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_110 , (PS8)"MeasurementSrv " }, 279981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_111 , (PS8)"measurementSrvDbgPrint " }, 280981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_112 , (PS8)"MeasurementSrvSM " }, 281981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_113 , (PS8)"PowerSrv " }, 282981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_114 , (PS8)"PowerSrvSM " }, 283981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_115 , (PS8)"ScanSrv " }, 284981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_116 , (PS8)"ScanSrvSM " }, 285981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_117 , (PS8)"TWDriver " }, 286981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_118 , (PS8)"TWDriverCtrl " }, 287981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_119 , (PS8)"TWDriverRadio " }, 288981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_120 , (PS8)"TWDriverTx " }, 289981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_121 , (PS8)"TwIf " }, 290981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_122 , (PS8)"SdioBusDrv " }, 291981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_123 , (PS8)"TxnQueue " }, 292981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_124 , (PS8)"WspiBusDrv " }, 293981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_125 , (PS8)"context " }, 294981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_126 , (PS8)"freq " }, 295981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_127 , (PS8)"fsm " }, 296981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_128 , (PS8)"GenSM " }, 297981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_129 , (PS8)"mem " }, 298981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_130 , (PS8)"queue " }, 299981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_131 , (PS8)"rate " }, 300981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_132 , (PS8)"report " }, 301981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FILE_ID_133 , (PS8)"stack " } 302981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt}; 303981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 304981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic named_value_t report_severity[] = { 305981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 0, (PS8)"----" }, 306981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { REPORT_SEVERITY_INIT, (PS8)"INIT", }, 307981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { REPORT_SEVERITY_INFORMATION, (PS8)"INFORMATION", }, 308981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { REPORT_SEVERITY_WARNING, (PS8)"WARNING", }, 309981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { REPORT_SEVERITY_ERROR, (PS8)"ERROR", }, 310981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { REPORT_SEVERITY_FATAL_ERROR, (PS8)"FATAL_ERROR", }, 311981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { REPORT_SEVERITY_SM, (PS8)"SM", }, 312981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { REPORT_SEVERITY_CONSOLE, (PS8)"CONSOLE" } 313981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt}; 314981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 315981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic named_value_t power_level[] = { 316981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { OS_POWER_LEVEL_ELP, (PS8)"Extreme Low Power" }, 317981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { OS_POWER_LEVEL_PD, (PS8)"Power Down" }, 318981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { OS_POWER_LEVEL_AWAKE, (PS8)"Awake" }, 319981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt}; 320981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 321981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic named_value_t band2Str[] = { 322981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { RADIO_BAND_2_4_GHZ, (PS8)"2.4 GHz" }, 323981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { RADIO_BAND_5_0_GHZ, (PS8)"5.0 GHz" }, 324981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { RADIO_BAND_DUAL, (PS8)"Both " } 325981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt}; 326981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 327981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic named_value_t EtEvent2Str[] = { 328981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { SCAN_ET_COND_DISABLE, (PS8)"ET disabled " }, 329981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { SCAN_ET_COND_BEACON, (PS8)"ET on Beacon " }, 330981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { SCAN_ET_COND_PROBE_RESP, (PS8)"ET on Prb Rsp" }, 331981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { SCAN_ET_COND_ANY_FRAME, (PS8)"ET on both " } 332981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt}; 333981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 334981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic named_value_t rate2Str[] = { 335981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { DRV_RATE_MASK_AUTO, (PS8)"Auto " }, 336981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { DRV_RATE_MASK_1_BARKER, (PS8)"1 Mbps " }, 337981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { DRV_RATE_MASK_2_BARKER, (PS8)"2 Mbps " }, 338981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { DRV_RATE_MASK_5_5_CCK, (PS8)"5.5 Mbps" }, 339981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { DRV_RATE_MASK_11_CCK, (PS8)"11 Mbps " }, 340981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { DRV_RATE_MASK_22_PBCC, (PS8)"22 Mbps " }, 341981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { DRV_RATE_MASK_6_OFDM, (PS8)"6 Mbps " }, 342981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { DRV_RATE_MASK_9_OFDM, (PS8)"9 Mbps " }, 343981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { DRV_RATE_MASK_12_OFDM, (PS8)"12 Mbps " }, 344981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { DRV_RATE_MASK_18_OFDM, (PS8)"18 Mbps " }, 345981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { DRV_RATE_MASK_24_OFDM, (PS8)"24 Mbps " }, 346981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { DRV_RATE_MASK_36_OFDM, (PS8)"36 Mbps " }, 347981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { DRV_RATE_MASK_48_OFDM, (PS8)"48 Mbps " }, 348981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { DRV_RATE_MASK_54_OFDM, (PS8)"54 Mbps " } 349981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt}; 350981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 351981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic named_value_t scanType2Str[] = { 352981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { SCAN_TYPE_NORMAL_PASSIVE, (PS8)"Passive Normal Scan" }, 353981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { SCAN_TYPE_NORMAL_ACTIVE, (PS8)"Active Normal Scan" }, 354981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { SCAN_TYPE_SPS, (PS8)"Scheduled Passive Scan (SPS)" }, 355981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { SCAN_TYPE_TRIGGERED_PASSIVE, (PS8)"Passive Triggered Scan" }, 356981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { SCAN_TYPE_TRIGGERED_ACTIVE, (PS8)"Active Triggered Scan" } 357981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt}; 358981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 359981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic named_value_t booleanStr[] = { 360981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { FALSE, (PS8)"False" }, 361981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { TRUE, (PS8)"True" } 362981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt}; 363981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 364981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic named_value_t ssidVisabilityStr[] = { 365981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { SCAN_SSID_VISABILITY_PUBLIC, (PS8)"Public" }, 366981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { SCAN_SSID_VISABILITY_HIDDEN, (PS8)"Hidden" } 367981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt}; 368981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 369981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic named_value_t bssTypeStr[] = { 370981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { BSS_INDEPENDENT, (PS8)"Independent" }, 371981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { BSS_INFRASTRUCTURE, (PS8)"Infrastructure" }, 372981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { BSS_ANY, (PS8)"Any" } 373981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt}; 374981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 375981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic named_value_t power_mode_val[] = { 376981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { OS_POWER_MODE_AUTO, (PS8)"AUTO" }, 377981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { OS_POWER_MODE_ACTIVE, (PS8)"ACTIVE" }, 378981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { OS_POWER_MODE_SHORT_DOZE, (PS8)"SHORT_DOZE" }, 379981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { OS_POWER_MODE_LONG_DOZE, (PS8)"LONG_DOZE" } 380981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt}; 381981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 382981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic named_value_t encrypt_type[] = { 383981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { OS_ENCRYPTION_TYPE_NONE, (PS8)"None" }, 384981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { OS_ENCRYPTION_TYPE_WEP, (PS8)"WEP" }, 385981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { OS_ENCRYPTION_TYPE_TKIP, (PS8)"TKIP" }, 386981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { OS_ENCRYPTION_TYPE_AES, (PS8)"AES" } 387981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt}; 388981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 389981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic named_value_t tKeepAliveTriggerTypes[] = { 390981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { KEEP_ALIVE_TRIG_TYPE_NO_TX, (PS8)"When Idle" }, 391981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { KEEP_ALIVE_TRIG_TYPE_PERIOD_ONLY, (PS8)"Always" } 392981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt}; 393981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 394981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#if 0 /* need to create debug logic for CLI */ 395981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic named_value_t cli_level_type[] = { 396981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { CU_MSG_DEBUG, (PS8)"CU_MSG_DEBUG" }, 397981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { CU_MSG_INFO1, (PS8)"CU_MSG_INFO1" }, 398981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { CU_MSG_WARNING, (PS8)"CU_MSG_WARNING" }, 399981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { CU_MSG_ERROR, (PS8)"CU_MSG_ERROR" }, 400981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { CU_MSG_INFO2, (PS8)"CU_MSG_INFO2" } 401981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt}; 402981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 403981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 404981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 405981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* local fucntions */ 406981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/*******************/ 407981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic S32 CuCmd_Str2MACAddr(PS8 str, PU8 mac) 408981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 409981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 i; 410981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 411981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for( i=0; i<MAC_ADDR_LEN; i++ ) 412981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 413981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt mac[i] = (U8) os_strtoul(str, &str, 16); 414981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt str++; 415981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 416981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return TRUE; 417981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 418981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 419981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* used in get_bssid_list() */ 420981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic U8 CuCmd_Freq2Chan(U32 freq) 421981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 422981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 i; 423981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 424981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for(i=0; i<CHAN_FREQ_TABLE_SIZE; i++) 425981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(ChanFreq[i].freq == freq) 426981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return ChanFreq[i].chan; 427981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 428981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return 0; 429981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 430981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 431981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Converts a single ASCII character to a hex value (i.e. '0'-'9' = 0-9, 'a'-'f' = a-f, 'A'-'F' = a-f) */ 432981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic U8 CuCmd_atox(U8 c) 433981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 434981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (('0' <= c) && ('9' >= c)) 435981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 436981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return c - '0'; 437981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 438981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else if (('a' <= c) && ('f' >= c)) 439981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 440981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return c - 'a' + 10; 441981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 442981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else /* assuming input is valid */ 443981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 444981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return c - 'A' + 10; 445981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 446981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 447981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 448981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* converts an ASCII string to a buffer */ 449981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic void CuCmd_atox_string (U8* srcString, U8* dstBuffer) 450981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 451981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 uIndex, uLength; 452981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 453981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt uLength = os_strlen ((PS8)srcString); 454981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 455981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* clear the destination buffer */ 456981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memset (dstBuffer, 0, (uLength / 2) + 1); 457981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 458981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for (uIndex = 0; uIndex < uLength; uIndex++) 459981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 460981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (0 == (uIndex % 2)) 461981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 462981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt dstBuffer[ uIndex / 2 ] |= (CuCmd_atox (srcString[ uIndex ]) << 4); 463981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 464981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 465981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 466981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt dstBuffer[ uIndex / 2 ] |= CuCmd_atox (srcString[ uIndex ]); 467981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 468981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 469981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 470981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 471981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic void CuCmd_xtoa_string (U8* srcBuffer, U32 srcBufferLength, U8* dstString) 472981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 473981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 uIndex; 474981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 475981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for (uIndex = 0; uIndex < srcBufferLength; uIndex++) 476981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 477981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_sprintf ((PS8)&(dstString[ uIndex * 2 ]), (PS8)"%02x", srcBuffer[ uIndex ]); 478981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 479981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 480981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 481981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic VOID CuCmd_Init_Scan_Params(CuCmd_t* pCuCmd) 482981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 483981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U8 i,j; 484981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 485981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* init application scan default params */ 486981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->appScanParams.desiredSsid.len = 0; 487981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->appScanParams.scanType = SCAN_TYPE_NORMAL_ACTIVE; 488981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->appScanParams.band = RADIO_BAND_2_4_GHZ; 489981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->appScanParams.probeReqNumber = 3; 490981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->appScanParams.probeRequestRate = RATE_MASK_UNSPECIFIED; /* Let the FW select */; 491981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->appScanParams.numOfChannels = 14; 492981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for ( i = 0; i < 14; i++ ) 493981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 494981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for ( j = 0; j < 6; j++ ) 495981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 496981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->appScanParams.channelEntry[ i ].normalChannelEntry.bssId[ j ] = 0xff; 497981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 498981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->appScanParams.channelEntry[ i ].normalChannelEntry.earlyTerminationEvent = SCAN_ET_COND_DISABLE; 499981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->appScanParams.channelEntry[ i ].normalChannelEntry.ETMaxNumOfAPframes = 0; 500981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->appScanParams.channelEntry[ i ].normalChannelEntry.maxChannelDwellTime = 60000; 501981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->appScanParams.channelEntry[ i ].normalChannelEntry.minChannelDwellTime = 30000; 502981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->appScanParams.channelEntry[ i ].normalChannelEntry.txPowerDbm = DEF_TX_POWER; 503981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->appScanParams.channelEntry[ i ].normalChannelEntry.channel = i + 1; 504981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 505981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 506981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* init periodic application scan params */ 507981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->tPeriodicAppScanParams.uSsidNum = 0; 508653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt pCuCmd->tPeriodicAppScanParams.uSsidListFilterEnabled = 1; 509981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->tPeriodicAppScanParams.uCycleNum = 0; /* forever */ 510981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->tPeriodicAppScanParams.uCycleIntervalMsec[ 0 ] = 3; 511981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for (i = 1; i < PERIODIC_SCAN_MAX_INTERVAL_NUM; i++) 512981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 513981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->tPeriodicAppScanParams.uCycleIntervalMsec[ i ] = 30000; 514981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 515981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->tPeriodicAppScanParams.iRssiThreshold = -80; 516981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->tPeriodicAppScanParams.iSnrThreshold = 0; 517981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->tPeriodicAppScanParams.uFrameCountReportThreshold = 1; 518981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->tPeriodicAppScanParams.bTerminateOnReport = TRUE; 519981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->tPeriodicAppScanParams.eBssType = BSS_ANY; 520981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->tPeriodicAppScanParams.uProbeRequestNum = 3; 521981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->tPeriodicAppScanParams.uChannelNum = 14; 522981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for ( i = 0; i < 14; i++ ) 523981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 524981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->tPeriodicAppScanParams.tChannels[ i ].eBand = RADIO_BAND_2_4_GHZ; 525981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->tPeriodicAppScanParams.tChannels[ i ].uChannel = i + 1; 526981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->tPeriodicAppScanParams.tChannels[ i ].eScanType = SCAN_TYPE_NORMAL_ACTIVE; 527981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->tPeriodicAppScanParams.tChannels[ i ].uMinDwellTimeMs = 5; 528981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->tPeriodicAppScanParams.tChannels[ i ].uMaxDwellTimeMs = 20; 529981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->tPeriodicAppScanParams.tChannels[ i ].uTxPowerLevelDbm = DEF_TX_POWER; 530981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 531981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 532981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* init default scan policy */ 533981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->scanPolicy.normalScanInterval = 10000; 534981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->scanPolicy.deterioratingScanInterval = 5000; 535981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->scanPolicy.maxTrackFailures = 3; 536981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->scanPolicy.BSSListSize = 4; 537981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->scanPolicy.BSSNumberToStartDiscovery = 1; 538981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->scanPolicy.numOfBands = 1; 539981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->scanPolicy.bandScanPolicy[ 0 ].band = RADIO_BAND_2_4_GHZ; 540981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->scanPolicy.bandScanPolicy[ 0 ].rxRSSIThreshold = -80; 541981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->scanPolicy.bandScanPolicy[ 0 ].numOfChannles = 14; 542981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->scanPolicy.bandScanPolicy[ 0 ].numOfChannlesForDiscovery = 3; 543981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for ( i = 0; i < 14; i++ ) 544981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 545981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->scanPolicy.bandScanPolicy[ 0 ].channelList[ i ] = i + 1; 546981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 547981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->scanPolicy.bandScanPolicy[ 0 ].trackingMethod.scanType = SCAN_TYPE_NORMAL_ACTIVE; 548981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->scanPolicy.bandScanPolicy[ 0 ].trackingMethod.method.basicMethodParams.earlyTerminationEvent = SCAN_ET_COND_DISABLE; 549981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->scanPolicy.bandScanPolicy[ 0 ].trackingMethod.method.basicMethodParams.ETMaxNumberOfApFrames = 0; 550981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->scanPolicy.bandScanPolicy[ 0 ].trackingMethod.method.basicMethodParams.maxChannelDwellTime = 30000; 551981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->scanPolicy.bandScanPolicy[ 0 ].trackingMethod.method.basicMethodParams.minChannelDwellTime = 15000; 552981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->scanPolicy.bandScanPolicy[ 0 ].trackingMethod.method.basicMethodParams.probReqParams.bitrate = RATE_MASK_UNSPECIFIED; /* Let the FW select */ 553981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->scanPolicy.bandScanPolicy[ 0 ].trackingMethod.method.basicMethodParams.probReqParams.numOfProbeReqs = 3; 554981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->scanPolicy.bandScanPolicy[ 0 ].trackingMethod.method.basicMethodParams.probReqParams.txPowerDbm = DEF_TX_POWER; 555981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->scanPolicy.bandScanPolicy[ 0 ].discoveryMethod.scanType = SCAN_TYPE_NORMAL_ACTIVE; 556981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->scanPolicy.bandScanPolicy[ 0 ].discoveryMethod.method.basicMethodParams.earlyTerminationEvent = SCAN_ET_COND_DISABLE; 557981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->scanPolicy.bandScanPolicy[ 0 ].discoveryMethod.method.basicMethodParams.ETMaxNumberOfApFrames = 0; 558981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->scanPolicy.bandScanPolicy[ 0 ].discoveryMethod.method.basicMethodParams.maxChannelDwellTime = 30000; 559981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->scanPolicy.bandScanPolicy[ 0 ].discoveryMethod.method.basicMethodParams.minChannelDwellTime = 15000; 560981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->scanPolicy.bandScanPolicy[ 0 ].discoveryMethod.method.basicMethodParams.probReqParams.bitrate = RATE_MASK_UNSPECIFIED; /* Let the FW select */; 561981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->scanPolicy.bandScanPolicy[ 0 ].discoveryMethod.method.basicMethodParams.probReqParams.numOfProbeReqs = 3; 562981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->scanPolicy.bandScanPolicy[ 0 ].discoveryMethod.method.basicMethodParams.probReqParams.txPowerDbm = DEF_TX_POWER; 563981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->scanPolicy.bandScanPolicy[ 0 ].immediateScanMethod.scanType = SCAN_TYPE_NORMAL_ACTIVE; 564981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->scanPolicy.bandScanPolicy[ 0 ].immediateScanMethod.method.basicMethodParams.earlyTerminationEvent = SCAN_ET_COND_DISABLE; 565981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->scanPolicy.bandScanPolicy[ 0 ].immediateScanMethod.method.basicMethodParams.ETMaxNumberOfApFrames = 0; 566981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->scanPolicy.bandScanPolicy[ 0 ].immediateScanMethod.method.basicMethodParams.maxChannelDwellTime = 30000; 567981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->scanPolicy.bandScanPolicy[ 0 ].immediateScanMethod.method.basicMethodParams.minChannelDwellTime = 15000; 568981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->scanPolicy.bandScanPolicy[ 0 ].immediateScanMethod.method.basicMethodParams.probReqParams.bitrate = RATE_MASK_UNSPECIFIED; /* Let the FW select */; 569981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->scanPolicy.bandScanPolicy[ 0 ].immediateScanMethod.method.basicMethodParams.probReqParams.numOfProbeReqs = 3; 570981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->scanPolicy.bandScanPolicy[ 0 ].immediateScanMethod.method.basicMethodParams.probReqParams.txPowerDbm = DEF_TX_POWER; 571981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 572981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 573981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtchar* PrintSSID(OS_802_11_SSID* ssid) 574981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 575981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(ssid->SsidLength < 32) 576981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ssid->Ssid[ssid->SsidLength] = 0; 577981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 578981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ssid->Ssid[31] = 0; 579981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 580981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return (char*)&ssid->Ssid[0]; 581981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 582981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 583981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 584981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic VOID CuCmd_PrintBssidList(OS_802_11_BSSID_LIST_EX* bssidList, S32 IsFullPrint, TMacAddr CurrentBssid) 585981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 586981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 i; 587981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S8 connectionTypeStr[50]; 588981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt POS_802_11_BSSID_EX pBssid = &bssidList->Bssid[0]; 589981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 590981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"BssId List: Num=%u\n", bssidList->NumberOfItems); 591981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" MAC Privacy Rssi Mode Channel SSID\n"); 592981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for(i=0; i<bssidList->NumberOfItems; i++) 593981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 594981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt switch (pBssid->InfrastructureMode) 595981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 596981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case os802_11IBSS: 597981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_strcpy (connectionTypeStr, (PS8)"Adhoc"); 598981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 599981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case os802_11Infrastructure: 600981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_strcpy (connectionTypeStr, (PS8)"Infra"); 601981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 602981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case os802_11AutoUnknown: 603981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_strcpy (connectionTypeStr, (PS8)"Auto"); 604981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 605981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt default: 606981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_strcpy (connectionTypeStr, (PS8)" --- "); 607981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 608981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 609981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"%s%02x.%02x.%02x.%02x.%02x.%02x %3u %4d %s %6d %s\n", 610981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt (!os_memcmp(CurrentBssid, pBssid->MacAddress, MAC_ADDR_LEN))?"*":" ", 611981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBssid->MacAddress[0], 612981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBssid->MacAddress[1], 613981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBssid->MacAddress[2], 614981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBssid->MacAddress[3], 615981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBssid->MacAddress[4], 616981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBssid->MacAddress[5], 617981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBssid->Privacy, 618981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt (char)pBssid->Rssi | 0xffffff00, /* need the 0xffffff00 to get negative value display */ 619981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt connectionTypeStr, 620981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_Freq2Chan(pBssid->Configuration.Union.channel), 621981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt (pBssid->Ssid.Ssid[0] == '\0')?(PS8)"****":((PS8)pBssid->Ssid.Ssid) ); 622981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 623981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (IsFullPrint) 624981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 625981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" BeaconInterval %d\n", pBssid->Configuration.BeaconPeriod); 626981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" Capabilities 0x%x\n", pBssid->Capabilities); 627981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 628981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#ifdef _WINDOWS 629981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBssid = (POS_802_11_BSSID_EX)((S8*)pBssid + (pBssid->Length ? pBssid->Length : sizeof(OS_802_11_BSSID_EX))); 630981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#else /*for Linux*/ 631981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBssid = &bssidList->Bssid[i+1]; 632981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 633981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 634981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 635981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 636981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic U8 CuCmd_Char2Hex( S8 c ) 637981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 638981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( c >= '0' && c <= '9' ) 639981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return c - '0'; 640981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else if( os_tolower(c) >= 'a' && os_tolower(c) <= 'f' ) 641981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return (U8) (os_tolower(c) - 'a' + 0x0a); 642981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_ERROR, (PS8)"ERROR - CuCmd_Char2Hex - invalid symbol '%c'\n", c ); 643981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return ((U8)-1); 644981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 645981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 646981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic PS8 CuCmd_CreateRateStr(PS8 str, U8 rate) 647981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 648981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( rate == 0 ) 649981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return os_strcpy(str,(PS8)"Auto (0)"); 650981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 651981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_sprintf(str, (PS8)"%.3g Mbps", 652981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt RATE_2_MBPS(rate)); 653981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 654981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return str; 655981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 656981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 657981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic VOID CuCmd_PrintScanMethod(scan_Method_t* scanMethod) 658981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 659981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 i; 660981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Scan type: %s\n", scanType2Str[ scanMethod->scanType ].name); 661981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt switch (scanMethod->scanType) 662981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 663981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case SCAN_TYPE_NORMAL_ACTIVE: 664981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case SCAN_TYPE_NORMAL_PASSIVE: 665981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Max channel dwell time: %d, Min channel dwell time: %d\n", 666981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt scanMethod->method.basicMethodParams.maxChannelDwellTime, 667981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt scanMethod->method.basicMethodParams.minChannelDwellTime); 668981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 669981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CU_CMD_FIND_NAME_ARRAY(i, EtEvent2Str, scanMethod->method.basicMethodParams.earlyTerminationEvent); 670981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2 ,(PS8)"ET condition: %s, ET number of frames: %d\n", 671981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt EtEvent2Str[i].name, 672981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt scanMethod->method.basicMethodParams.ETMaxNumberOfApFrames); 673981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 674981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CU_CMD_FIND_NAME_ARRAY(i, rate2Str, scanMethod->method.basicMethodParams.probReqParams.bitrate); 675981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2 ,(PS8)"Probe request number: %d, probe request rate: %s, TX level: %d\n", 676981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt scanMethod->method.basicMethodParams.probReqParams.numOfProbeReqs, 677981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt rate2Str[i].name, 678981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt scanMethod->method.basicMethodParams.probReqParams.txPowerDbm); 679981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 680981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 681981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case SCAN_TYPE_TRIGGERED_ACTIVE: 682981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case SCAN_TYPE_TRIGGERED_PASSIVE: 683981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Triggering Tid: %d\n", scanMethod->method.TidTriggerdMethodParams.triggeringTid); 684981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Max channel dwell time: %d, Min channel dwell time: %d\n", 685981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt scanMethod->method.basicMethodParams.maxChannelDwellTime, 686981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt scanMethod->method.basicMethodParams.minChannelDwellTime); 687981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 688981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CU_CMD_FIND_NAME_ARRAY(i, EtEvent2Str, scanMethod->method.basicMethodParams.earlyTerminationEvent); 689981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"ET condition: %s, ET number of frames: %d\n", 690981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt EtEvent2Str[i].name, 691981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt scanMethod->method.basicMethodParams.ETMaxNumberOfApFrames); 692981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 693981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CU_CMD_FIND_NAME_ARRAY(i, rate2Str, scanMethod->method.basicMethodParams.probReqParams.bitrate); 694981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Probe request number: %d, probe request rate: %s, TX level: %d\n", 695981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt scanMethod->method.basicMethodParams.probReqParams.numOfProbeReqs, 696981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt rate2Str[i].name, 697981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt scanMethod->method.basicMethodParams.probReqParams.txPowerDbm); 698981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 699981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 700981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case SCAN_TYPE_SPS: 701981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CU_CMD_FIND_NAME_ARRAY(i, EtEvent2Str, scanMethod->method.spsMethodParams.earlyTerminationEvent); 702981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"ET condition: %s, ET number of frames: %d\n", 703981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt EtEvent2Str[i].name, 704981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt scanMethod->method.spsMethodParams.ETMaxNumberOfApFrames); 705981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Scan duration: %d\n", scanMethod->method.spsMethodParams.scanDuration); 706981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 707981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 708981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case SCAN_TYPE_NO_SCAN: 709981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case SCAN_TYPE_PACTSIVE: 710981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 711981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 712981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 713981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 714981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic VOID CuCmd_PrintScanBand(scan_bandPolicy_t* pBandPolicy) 715981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 716981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 j; 717981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 718981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"\nBand: %s\n", band2Str[ pBandPolicy->band ].name); 719981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"RSSI Threshold: %d dBm\n", pBandPolicy->rxRSSIThreshold); 720981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Number of channels for each discovery interval: %d\n", pBandPolicy->numOfChannlesForDiscovery); 721981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"\nTracking Method:\n"); 722981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_PrintScanMethod( &(pBandPolicy->trackingMethod) ); 723981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"\nDiscovery Method:\n"); 724981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_PrintScanMethod( &(pBandPolicy->discoveryMethod) ); 725981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"\nImmediate Scan Method:\n"); 726981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_PrintScanMethod( &(pBandPolicy->immediateScanMethod) ); 727981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if ( pBandPolicy->numOfChannles > 0 ) 728981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 729981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"\nChannel list: "); 730981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for ( j = 0; j < pBandPolicy->numOfChannles; j++ ) 731981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 732981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"%3d ", pBandPolicy->channelList[ j ]); 733981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 734981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"\n"); 735981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 736981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 737981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 738981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"\nNo channels defined.\n"); 739981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 740981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 741981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 742981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic U32 CuCmd_IsValueRate(U32 rate) 743981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 744981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 745981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt switch (rate) 746981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 747981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case 1: 748981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case 2: 749981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case 5: 750981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case 6: 751981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case 9: 752981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case 11: 753981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case 12: 754981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case 18: 755981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case 24: 756981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case 36: 757981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case 48: 758981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case 54: 759981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return (TRUE); 760981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 761981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt default: 762981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return (FALSE); 763981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 764981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 765981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 766981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic VOID CuCmd_ParseMaskString(PS8 pString, PU8 pBuffer, PU8 pLength) 767981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 768981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S8 ch; 769981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 iter = 0; 770981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U8 val; 771981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 772981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt while ((ch = pString[iter])) 773981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 774981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt val = (ch == '1' ? 1 : 0); 775981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 776981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (iter % BIT_TO_BYTE_FACTOR) 777981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBuffer[iter / BIT_TO_BYTE_FACTOR] |= (val << (iter % BIT_TO_BYTE_FACTOR)); 778981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 779981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBuffer[iter / BIT_TO_BYTE_FACTOR] = val; 780981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 781981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ++iter; 782981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 783981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 784981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* iter = 0 len = 0, iter = 1 len = 1, iter = 8 len = 1, and so on... */ 785981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *pLength = (U8) (iter + BIT_TO_BYTE_FACTOR - 1) / BIT_TO_BYTE_FACTOR; 786981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 787981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 788981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic VOID CuCmd_ParsePatternString(PS8 pString, PU8 pBuffer, PU8 pLength) 789981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 790981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S8 ch; 791981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 iter = 0; 792981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U8 val; 793981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 794981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt while ((ch = pString[iter])) 795981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 796981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt val = ((ch >= '0' && ch <= '9') ? (ch - '0') : 797981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt (ch >= 'A' && ch <= 'F') ? (0xA + ch - 'A') : 798981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt (ch >= 'a' && ch <= 'f') ? (0xA + ch - 'a') : 0); 799981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 800981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* even indexes go to the lower nibble, odd indexes push them to the */ 801981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* higher nibble and then go themselves to the lower nibble. */ 802981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (iter % 2) 803981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBuffer[iter / 2] = ((pBuffer[iter / 2] << (BIT_TO_BYTE_FACTOR / 2)) | val); 804981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 805981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBuffer[iter / 2] = val; 806981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 807981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ++iter; 808981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 809981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 810981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* iter = 0 len = 0, iter = 1 len = 1, iter = 2 len = 1, and so on... */ 811981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *pLength = (U8) (iter + 1) / 2; 812981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 813981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 814981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* functions */ 815981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/*************/ 816981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtTHandle CuCmd_Create(const PS8 device_name, THandle hConsole, S32 BypassSupplicant, PS8 pSupplIfFile) 817981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 818981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt THandle hIpcSta; 819981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 820981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)os_MemoryCAlloc(sizeof(CuCmd_t), sizeof(U8)); 821981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(pCuCmd == NULL) 822981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 823981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_ERROR, (PS8)"ERROR - CuCmd_Create - cant allocate control block\n"); 824981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return NULL; 825981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 826981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 827981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->isDeviceRunning = FALSE; 828981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->hConsole = hConsole; 829981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 830981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->hCuCommon= CuCommon_Create(&hIpcSta, device_name); 831981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(pCuCmd->hCuCommon == NULL) 832981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 833981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_Destroy(pCuCmd); 834981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return NULL; 835981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 836981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 837981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->hCuWext= CuOs_Create(hIpcSta); 838981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(pCuCmd->hCuWext == NULL) 839981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 840981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_Destroy(pCuCmd); 841981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return NULL; 842981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 843981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 844981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->hIpcEvent = (THandle) IpcEvent_Create(); 845981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(pCuCmd->hIpcEvent == NULL) 846981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 847981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_Destroy(pCuCmd); 848981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return NULL; 849981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 850981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 851981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(BypassSupplicant) 852981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 853981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* specify that there is no supplicant */ 854981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->hWpaCore = NULL; 855981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 856981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 857981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 858981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#ifndef NO_WPA_SUPPL 859981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 res; 860981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 861981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->hWpaCore = WpaCore_Create(&res, pSupplIfFile); 862981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if((pCuCmd->hWpaCore == NULL) && (res != EOALERR_IPC_WPA_ERROR_CANT_CONNECT_TO_SUPPL)) 863981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 864981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_Destroy(pCuCmd); 865981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return NULL; 866981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 867981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 868981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(res == EOALERR_IPC_WPA_ERROR_CANT_CONNECT_TO_SUPPL) 869981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 870981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_ERROR, (PS8)"******************************************************\n"); 871981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_ERROR, (PS8)"Connection to supplicant failed\n"); 872981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_ERROR, (PS8)"******************************************************\n"); 873981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 874981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 875981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 876981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Connection established with supplicant\n"); 877981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 878981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 879981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 880981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 881981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_Init_Scan_Params(pCuCmd); 882981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 883981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return pCuCmd; 884981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 885981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 886981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_Destroy(THandle hCuCmd) 887981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 888981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 889981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 890981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(pCuCmd->hCuCommon) 891981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 892981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCommon_Destroy(pCuCmd->hCuCommon); 893981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 894981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 895981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(pCuCmd->hCuWext) 896981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 897981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuOs_Destroy(pCuCmd->hCuWext); 898981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 899981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 900981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(pCuCmd->hIpcEvent) 901981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 902981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt IpcEvent_Destroy(pCuCmd->hIpcEvent); 903981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 904981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 905981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#ifndef NO_WPA_SUPPL 906981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(pCuCmd->hWpaCore) 907981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 908981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt WpaCore_Destroy(pCuCmd->hWpaCore); 909981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 910981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 911981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 912981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_MemoryFree(pCuCmd); 913981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 914981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 915981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtS32 CuCmd_GetDeviceStatus(THandle hCuCmd) 916981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 917981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 918981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 status; 919981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 920981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt status = CuCommon_GetU32(pCuCmd->hCuCommon, DRIVER_STATUS_PARAM, &pCuCmd->isDeviceRunning); 921981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 922981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if ((status == OK) && pCuCmd->isDeviceRunning) 923981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return OK; 924981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 925981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return ECUERR_CU_CMD_ERROR_DEVICE_NOT_LOADED; 926981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 927981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 928981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_StartDriver(THandle hCuCmd) 929981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 930981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 931981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 uDummyBuf; 932981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 933981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_SetBuffer(pCuCmd->hCuCommon, DRIVER_START_PARAM, &uDummyBuf, sizeof(uDummyBuf))) 934981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 935981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_ERROR, (PS8)"ERROR - Failed to start driver!\n"); 936981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 937981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 938981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 939981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_StopDriver(THandle hCuCmd) 940981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 941981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 942981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 uDummyBuf; 943981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 944981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_SetBuffer(pCuCmd->hCuCommon, DRIVER_STOP_PARAM, &uDummyBuf, sizeof(uDummyBuf))) 945981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 946981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_ERROR, (PS8)"ERROR - Failed to stop driver!\n"); 947981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 948981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 949981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 950981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#ifdef XCC_MODULE_INCLUDED 951981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtTHandle CuCmd_GetCuCommonHandle(THandle hCuCmd) 952981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 953981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 954981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 955981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return pCuCmd->hCuCommon; 956981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 957653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt 958653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry ShmidtTHandle CuCmd_GetCuWpaHandle (THandle hCuCmd) 959653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt{ 960653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 961653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt 962653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt return pCuCmd->hWpaCore; 963653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt 964653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt} 965981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 966981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 967981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_Show_Status(THandle hCuCmd, ConParm_t parm[], U16 nParms) 968981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 969981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 970981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 971981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TMacAddr Mac; 972981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt OS_802_11_SSID ssid; 973981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TMacAddr bssid; 974981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 channel, threadid=0; 975981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 976981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCmd_GetDeviceStatus(hCuCmd)) 977981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 978981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Driver is stopped!\n"); 979981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 980981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 981981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 982981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuOs_GetDriverThreadId(pCuCmd->hCuWext, &threadid); 983981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetBuffer(pCuCmd->hCuCommon, CTRL_DATA_MAC_ADDRESS, Mac, sizeof(TMacAddr))) return; 984981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuOs_Get_SSID(pCuCmd->hCuWext, &ssid)) return; 985981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuOs_Get_BSSID(pCuCmd->hCuWext, bssid)) return; 986981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuOs_GetCurrentChannel(pCuCmd->hCuWext, &channel)) return; 987981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 988981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (threadid != 0) 989981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 990981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Thread id: %u (0x%x)\n\n", threadid, threadid); 991981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 992981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"==========================\n"); 993981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Status : running\n"); 994981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"MAC : %02x.%02x.%02x.%02x.%02x.%02x\n",Mac[0],Mac[1],Mac[2],Mac[3],Mac[4],Mac[5]); 995981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"SSID : %s\n",(ssid.SsidLength)?PrintSSID(&ssid):"<empty>"); 996981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"BSSID : %02x.%02x.%02x.%02x.%02x.%02x\n",bssid[0],bssid[1],bssid[2],bssid[3],bssid[4],bssid[5]); 997981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(channel) 998981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Channel : %d\n",channel); 999981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 1000981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Channel : <empty>\n"); 1001981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"==========================\n"); 1002981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1003981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 1004981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1005981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_BssidList(THandle hCuCmd, ConParm_t parm[], U16 nParms) 1006981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 1007981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 1008981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 SizeOfBssiList=0; 1009981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt OS_802_11_BSSID_LIST_EX* bssidList; 1010981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TMacAddr bssid; 1011981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1012981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_Get_BssidList_Size(pCuCmd->hCuCommon, &SizeOfBssiList)) 1013981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1014981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_ERROR, (PS8)"ERROR - CuCmd_Bssid_List - cant get Bssid list size\n"); 1015981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 1016981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1017981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1018981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* allocate the bssidList */ 1019981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt bssidList = os_MemoryCAlloc(SizeOfBssiList, sizeof(U8)); 1020981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(bssidList == NULL) 1021981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1022981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_ERROR, (PS8)"ERROR - CuCmd_Bssid_List - cant allocate Bssid list\n"); 1023981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 1024981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1025981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1026981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(SizeOfBssiList == sizeof(U32)) 1027981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1028981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* means that bssidList is empty*/ 1029981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt bssidList->NumberOfItems = 0; 1030981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* os_error_printf(CU_MSG_ERROR, (PS8)"ERROR - CuCmd_Bssid_List - size of list is %d, indicating empty list\n", 1031981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt sizeof(U32)); */ 1032981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1033981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 1034981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1035981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (OK != CuOs_GetBssidList(pCuCmd->hCuWext, bssidList)) 1036981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1037981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_ERROR, (PS8)"ERROR - CuCmd_Bssid_List - cant get Bssid list\n"); 1038981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_MemoryFree(bssidList); 1039981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 1040981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1041981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1042981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1043981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* get currently connected bssid */ 1044981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuOs_Get_BSSID(pCuCmd->hCuWext, bssid)) 1045981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1046981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_ERROR, (PS8)"ERROR - CuCmd_Bssid_List - cant get current BSSID\n"); 1047981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_MemoryFree(bssidList); 1048981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 1049981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1050981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1051981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* print the list to the terminal */ 1052981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_PrintBssidList(bssidList, FALSE, bssid); 1053981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1054981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* free the bssidList */ 1055981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_MemoryFree(bssidList); 1056981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1057981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 1058981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1059981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_FullBssidList(THandle hCuCmd, ConParm_t parm[], U16 nParms) 1060981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 1061981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 1062981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 SizeOfBssiList=0; 1063981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt OS_802_11_BSSID_LIST_EX* bssidList; 1064981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TMacAddr bssid; 1065981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1066981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_Get_BssidList_Size(pCuCmd->hCuCommon, &SizeOfBssiList)) return; 1067981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1068981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* allocate the bssidList */ 1069981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt bssidList = os_MemoryCAlloc(SizeOfBssiList, sizeof(U8)); 1070981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(bssidList == NULL) 1071981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1072981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_ERROR, (PS8)"ERROR - CuCmd_Bssid_List - cant allocate Bssid list\n"); 1073981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 1074981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1075981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1076981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(SizeOfBssiList == sizeof(U32)) 1077981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1078981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* means that bssidList is empty*/ 1079981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt bssidList->NumberOfItems = 0; 1080981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1081981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1082981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 1083981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1084981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuOs_GetBssidList(pCuCmd->hCuWext, bssidList) ) return; 1085981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1086981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1087981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* get currently connected bssid */ 1088981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuOs_Get_BSSID(pCuCmd->hCuWext, bssid)) return; 1089981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1090981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* print the list to the terminal */ 1091981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_PrintBssidList(bssidList, TRUE, bssid); 1092981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1093981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* free the bssidList */ 1094981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_MemoryFree(bssidList); 1095981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 1096981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1097981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#if defined(CONFIG_EAP_WSC) && !defined(NO_WPA_SUPPL) 1098981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_StartEnrolleePIN(THandle hCuCmd, ConParm_t parm[], U16 nParms) 1099981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 1100981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 1101981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1102981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (pCuCmd->hWpaCore == NULL) 1103981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1104981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_ERROR, (PS8)"ERROR - Cannot start Enrollee without connection to supplicant\n"); 1105981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 1106981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1107981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1108981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt WpaCore_StartWpsPIN(pCuCmd->hWpaCore); 1109981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"WPS in PIN mode started\n"); 1110981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 1111981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1112981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_StartEnrolleePBC(THandle hCuCmd, ConParm_t parm[], U16 nParms) 1113981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 1114981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 1115981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1116981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (pCuCmd->hWpaCore == NULL) 1117981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1118981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_ERROR, (PS8)"ERROR - Cannot start Enrollee push button without connection to supplicant\n"); 1119981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 1120981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1121981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1122981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt WpaCore_StartWpsPBC(pCuCmd->hWpaCore); 1123981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"WPS in PBC mode started\n"); 1124981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 1125981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1126981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_StopEnrollee(THandle hCuCmd, ConParm_t parm[], U16 nParms) 1127981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 1128981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 1129981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (pCuCmd->hWpaCore == NULL) 1130981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1131981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_ERROR, (PS8)"ERROR - Cannot Stop Enrollee without connection to supplicant\n"); 1132981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 1133981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1134981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1135981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt WpaCore_StopWps(pCuCmd->hWpaCore); 1136981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"WPS mode stopped\n"); 1137981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 1138981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1139981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_SetPin(THandle hCuCmd, ConParm_t parm[], U16 nParms) 1140981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 1141981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 1142981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1143981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (pCuCmd->hWpaCore == NULL) 1144981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1145981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_ERROR, (PS8)"ERROR - Cannot set PIN without connection to supplicant\n"); 1146981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 1147981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1148981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1149981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt WpaCore_SetPin(pCuCmd->hWpaCore, (PS8)parm[0].value); 1150981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"WPS PIN set %s\n", parm[0].value); 1151981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 1152981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1153981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif /* CONFIG_EAP_WSC */ 1154981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1155981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_Connect(THandle hCuCmd, ConParm_t parm[], U16 nParms) 1156981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 1157981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 1158981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TMacAddr bssid = { 0xff,0xff,0xff,0xff,0xff,0xff }; 1159981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt OS_802_11_SSID ssid; 1160981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 BssType; 1161981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1162981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt switch (nParms) 1163981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1164981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case 0 : 1165981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* 1166981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * No SSID & No BSSID are set - 1167981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * Use Any SSID & Any BSSID. 1168981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt */ 1169981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ssid.SsidLength = 0; 1170981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ssid.Ssid[0] = 0; 1171981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 1172981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case 1: 1173981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* 1174981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * SSID set & BSSID insn't set - 1175981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * Use CLI's SSID & Any BSSID. 1176981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt */ 1177981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ssid.SsidLength = os_strlen( (PS8)parm[0].value); 1178981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memcpy((PVOID)ssid.Ssid, (PVOID) parm[0].value, ssid.SsidLength); 1179981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ssid.Ssid[ssid.SsidLength] = '\0'; 1180981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 1181981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case 2: 1182981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* 1183981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * Both SSID & BSSID are set - 1184981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * Use CLI's SSID & BSSID. 1185981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt */ 1186981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(!CuCmd_Str2MACAddr( (PS8)parm[1].value, bssid) ) 1187981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 1188981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ssid.SsidLength = os_strlen((PS8) parm[0].value); 1189981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memcpy((PVOID)ssid.Ssid, (PVOID) parm[0].value, ssid.SsidLength); 1190981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ssid.Ssid[ssid.SsidLength] = '\0'; 1191981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 1192981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1193981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1194981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(pCuCmd->hWpaCore == NULL) 1195981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1196981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetU32(pCuCmd->hCuCommon, CTRL_DATA_CURRENT_BSS_TYPE_PARAM, &BssType)) return; 1197981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1198981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if((BssType == os802_11IBSS/* Ad-Hoc */) && (ssid.SsidLength == 0)) 1199981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1200981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"SSID string is needed due to fact that BSS Type set to Ad-Hoc.\n"); 1201981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 1202981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1203981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1204981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuOs_Set_BSSID(pCuCmd->hCuWext, bssid ) ) return; 1205981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuOs_Set_ESSID(pCuCmd->hCuWext, &ssid) ) return; 1206981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1207981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 1208981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1209981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#ifndef NO_WPA_SUPPL 1210981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != WpaCore_GetBssType(pCuCmd->hWpaCore, &BssType)) return; 1211981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1212981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if((BssType == os802_11IBSS/* Ad-Hoc */) && (ssid.SsidLength == 0)) 1213981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1214981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"SSID string is needed due to fact BSS Type set to Ad-Hoc\n"); 1215981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 1216981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1217981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1218981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt WpaCore_SetSsid(pCuCmd->hWpaCore, &ssid, bssid); 1219981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 1220981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1221981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 1222981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1223981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_Disassociate(THandle hCuCmd, ConParm_t parm[], U16 nParms) 1224981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 1225981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 1226981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1227981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(pCuCmd->hWpaCore == NULL) 1228981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1229981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt OS_802_11_SSID ssid; 1230981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1231981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ssid.SsidLength = MAX_SSID_LEN; 1232981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memset(ssid.Ssid, 0, MAX_SSID_LEN); 1233981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1234981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuOs_Set_ESSID(pCuCmd->hCuWext, &ssid); 1235981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1236981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 1237981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1238981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#ifndef NO_WPA_SUPPL 1239981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt WpaCore_Disassociate(pCuCmd->hWpaCore); 1240981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 1241981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1242981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 1243981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1244981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_ModifySsid(THandle hCuCmd, ConParm_t parm[], U16 nParms) 1245981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 1246981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 1247981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt OS_802_11_SSID ssid; 1248981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TMacAddr bssid = { 0xff,0xff,0xff,0xff,0xff,0xff }; 1249981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1250981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms == 0 ) 1251981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1252981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt OS_802_11_SSID ssid; 1253981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuOs_Get_SSID(pCuCmd->hCuWext, &ssid)) return; 1254981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"SSID: %s\n",(ssid.SsidLength)?(PS8)PrintSSID(&ssid):(PS8)"<empty>"); 1255981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1256981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 1257981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1258981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* Setting the new SSID, BRCS BSSID is set to clean pre-set BSSID */ 1259981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ssid.SsidLength = os_strlen((PS8) parm[0].value); 1260981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memcpy((PVOID)ssid.Ssid, (PVOID) parm[0].value, ssid.SsidLength); 1261981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(ssid.SsidLength < MAX_SSID_LEN) 1262981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1263981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ssid.Ssid[ssid.SsidLength] = 0; 1264981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1265981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1266981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuOs_Set_BSSID(pCuCmd->hCuWext, bssid ) ) return; 1267981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuOs_Set_ESSID(pCuCmd->hCuWext, &ssid) ) return; 1268981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1269981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 1270981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1271981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_ModifyConnectMode(THandle hCuCmd, ConParm_t parm[], U16 nParms) 1272981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 1273981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 1274981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 i; 1275981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1276981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms == 0 ) 1277981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1278981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 uConnectMode; 1279981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1280981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetU32 (pCuCmd->hCuCommon, SME_CONNECTION_MODE_PARAM, &uConnectMode)) return; 1281981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CU_CMD_FIND_NAME_ARRAY (i, Current_mode, uConnectMode); 1282981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf (CU_MSG_INFO2, (PS8)"Current mode = %s\n", Current_mode[i].name); 1283981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt print_available_values (Current_mode); 1284981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1285981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 1286981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1287981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 uConnectMode = parm[0].value; 1288981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1289981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* check if the param is valid */ 1290981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CU_CMD_FIND_NAME_ARRAY (i, Current_mode, uConnectMode); 1291981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(i == SIZE_ARR(Current_mode)) 1292981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1293981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"CuCmd_ModifyConnectMode, Connect Mode %d is not defined!\n", uConnectMode); 1294981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt print_available_values (Current_mode); 1295981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 1296981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1297981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 1298981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1299981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCommon_SetU32(pCuCmd->hCuCommon, SME_CONNECTION_MODE_PARAM, uConnectMode); 1300981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1301981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1302981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 1303981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1304981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_ModifyChannel(THandle hCuCmd, ConParm_t parm[], U16 nParms) 1305981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 1306981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 1307981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1308981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms == 0 ) 1309981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1310981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U8 desiredChannel = 0; 1311981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 currentChannel = 0; 1312981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1313981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1314981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetU8(pCuCmd->hCuCommon, SITE_MGR_DESIRED_CHANNEL_PARAM, &desiredChannel)) return; 1315981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuOs_GetCurrentChannel(pCuCmd->hCuWext, ¤tChannel)) return; 1316981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1317981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Channel=%d (desired: %d)\n",currentChannel,desiredChannel); 1318981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1319981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 1320981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1321981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCommon_SetU32(pCuCmd->hCuCommon, SITE_MGR_DESIRED_CHANNEL_PARAM, parm[0].value); 1322981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1323981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 1324981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1325981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_GetTxRate(THandle hCuCmd, ConParm_t parm[], U16 nParms) 1326981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 1327981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 1328981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1329981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms == 0) 1330981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1331981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U8 CurrentTxRate; 1332981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S8 CurrentTxRateStr[50]; 1333981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1334981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetU8(pCuCmd->hCuCommon, TIWLN_802_11_CURRENT_RATES_GET, &CurrentTxRate)) return; 1335981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1336981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_CreateRateStr(CurrentTxRateStr, CurrentTxRate); 1337981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Rate: %s\n", CurrentTxRateStr); 1338981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1339981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 1340981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1341981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_ModifyBssType(THandle hCuCmd, ConParm_t parm[], U16 nParms) 1342981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 1343981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 1344653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt U8 BssType; 1345981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 i; 1346981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1347981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms == 0 ) 1348981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1349981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(pCuCmd->hWpaCore == NULL) 1350981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1351653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt if(OK != CuCommon_GetU8(pCuCmd->hCuCommon, CTRL_DATA_CURRENT_BSS_TYPE_PARAM, &BssType)) return; 1352981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1353981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 1354981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1355981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#ifndef NO_WPA_SUPPL 1356653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt if(OK != WpaCore_GetBssType(pCuCmd->hWpaCore, (U32*)&BssType)) return; 1357981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 1358981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1359981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1360981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CU_CMD_FIND_NAME_ARRAY(i, BSS_type, BssType); 1361981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(i == SIZE_ARR(BSS_type)) 1362981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1363981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Error getting the current BssType! BssType=0x%x\n",BssType); 1364981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 1365981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1366981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 1367981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1368981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Current mode = %s\n", BSS_type[i].name); 1369981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1370981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt print_available_values(BSS_type); 1371981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1372981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 1373981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1374981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt BssType = parm[0].value; 1375981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* check if the param is valid */ 1376981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CU_CMD_FIND_NAME_ARRAY(i, BSS_type, BssType); 1377981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(i == SIZE_ARR(BSS_type)) 1378981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1379981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"CuCmd_ModifyBssType, BssType %d is not defined!\n", BssType); 1380981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 1381981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1382981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(pCuCmd->hWpaCore == NULL) 1383981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1384653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt CuCommon_SetU8(pCuCmd->hCuCommon, CTRL_DATA_CURRENT_BSS_TYPE_PARAM, BssType); 1385981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1386981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 1387981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1388981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#ifndef NO_WPA_SUPPL 1389981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt WpaCore_SetBssType(pCuCmd->hWpaCore, BssType); 1390981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 1391981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1392981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1393981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 1394981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1395981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_ModifyFragTh(THandle hCuCmd, ConParm_t parm[], U16 nParms) 1396981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 1397981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 1398981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 FragTh; 1399981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1400981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms == 0 ) 1401981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1402981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuOs_GetFragTh(pCuCmd->hCuWext, &FragTh)) return; 1403981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Frag. threshold = %d\n", FragTh); 1404981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1405981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 1406981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1407981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt FragTh = parm[0].value; 1408981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuOs_SetFragTh(pCuCmd->hCuWext, FragTh); 1409981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1410981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 1411981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1412981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_ModifyRtsTh(THandle hCuCmd, ConParm_t parm[], U16 nParms) 1413981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 1414981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 1415981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 RtsTh; 1416981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1417981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms == 0 ) 1418981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1419981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuOs_GetRtsTh(pCuCmd->hCuWext, &RtsTh)) return; 1420981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"RTS threshold = %d\n", RtsTh); 1421981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1422981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 1423981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1424981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt RtsTh = parm[0].value; 1425981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuOs_SetRtsTh(pCuCmd->hCuWext, RtsTh); 1426981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1427981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 1428981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1429981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_ModifyPreamble(THandle hCuCmd, ConParm_t parm[], U16 nParms) 1430981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 1431981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 1432981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt EPreamble Preamble; 1433981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 i; 1434981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt named_value_t preamble_type[] = { 1435981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { PREAMBLE_LONG, (PS8)"PREAMBLE_LONG" }, 1436981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { PREAMBLE_SHORT, (PS8)"PREAMBLE_SHORT" } 1437981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt }; 1438981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1439981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(nParms) 1440981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1441981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt Preamble = parm[0].value; 1442981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* check if the param is valid */ 1443981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CU_CMD_FIND_NAME_ARRAY(i, preamble_type, Preamble); 1444981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(i == SIZE_ARR(preamble_type)) 1445981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1446981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"CuCmd_ModifyPreamble, Preamble %d is not defined!\n", Preamble); 1447981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 1448981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1449981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCommon_SetU32(pCuCmd->hCuCommon, TIWLN_802_11_SHORT_PREAMBLE_SET, Preamble); 1450981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1451981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 1452981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1453981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 PreambleData; 1454981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetU32(pCuCmd->hCuCommon, TIWLN_802_11_SHORT_PREAMBLE_GET, (PU32)&PreambleData)) return; 1455981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt Preamble = PreambleData; 1456981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Preamble = %d\n", Preamble); 1457981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt print_available_values(preamble_type); 1458981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1459981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 1460981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1461981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_ModifyShortSlot(THandle hCuCmd, ConParm_t parm[], U16 nParms) 1462981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 1463981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 1464981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt slotTime_e SlotTime; 1465981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 i; 1466981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt named_value_t SlotTime_type[] = { 1467981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { PHY_SLOT_TIME_LONG, (PS8)"PHY_SLOT_TIME_LONG" }, 1468981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { PHY_SLOT_TIME_SHORT, (PS8)"PHY_SLOT_TIME_SHORT" } 1469981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt }; 1470981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1471981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(nParms) 1472981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1473981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt SlotTime = parm[0].value; 1474981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* check if the param is valid */ 1475981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CU_CMD_FIND_NAME_ARRAY(i, SlotTime_type, SlotTime); 1476981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(i == SIZE_ARR(SlotTime_type)) 1477981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1478981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"CuCmd_ModifyShortSlot, SlotTime %d is not defined!\n", SlotTime); 1479981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 1480981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1481981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCommon_SetU32(pCuCmd->hCuCommon, TIWLN_SHORT_SLOT_SET, SlotTime); 1482981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1483981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 1484981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1485981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 SlotTimeData; 1486981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetU32(pCuCmd->hCuCommon, TIWLN_SHORT_SLOT_GET, (PU32)&SlotTimeData)) return; 1487981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt SlotTime = SlotTimeData; 1488981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"SlotTime = %d\n", SlotTime); 1489981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt print_available_values(SlotTime_type); 1490981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1491981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 1492981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1493981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1494981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_RadioOnOff(THandle hCuCmd, ConParm_t parm[], U16 nParms) 1495981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 1496981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 1497981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 on_off; 1498981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1499981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(nParms) 1500981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1501981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt on_off = parm[0].value; 1502981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCommon_SetU32(pCuCmd->hCuCommon, SME_RADIO_ON_PARAM, on_off); 1503981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1504981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 1505981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1506981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetU32(pCuCmd->hCuCommon, SME_RADIO_ON_PARAM, &on_off)) { 1507981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_ERROR, (PS8)"CuCmd_RadioOnOff error, Cannot get radio state!\n"); 1508981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 1509981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1510981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_ERROR, (PS8)"Radio state = %s\n", on_off ? "ON" : "OFF"); 1511981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_ERROR, (PS8)"Turn radio on/off. 0=OFF, 1=ON\n"); 1512981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1513981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 1514981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1515981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1516981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_GetSelectedBssidInfo(THandle hCuCmd, ConParm_t parm[], U16 nParms) 1517981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 1518981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 1519981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt OS_802_11_SSID ssid; 1520981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TMacAddr bssid; 1521981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1522981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuOs_Get_SSID(pCuCmd->hCuWext, &ssid)) return; 1523981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuOs_Get_BSSID(pCuCmd->hCuWext, bssid)) return; 1524981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1525981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Selected BSSID Info:\n"); 1526981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"--------------------\n"); 1527981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"SSID : %s\n",(ssid.SsidLength)?(PS8)PrintSSID(&ssid):(PS8)"<empty>"); 1528981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"BSSID : %02x.%02x.%02x.%02x.%02x.%02x\n",bssid[0],bssid[1],bssid[2],bssid[3],bssid[4],bssid[5]); 1529981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 1530981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1531981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_GetRsiiLevel(THandle hCuCmd, ConParm_t parm[], U16 nParms) 1532981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 1533981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 1534981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S8 dRssi, bRssi; 1535981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1536981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetRssi(pCuCmd->hCuCommon, &dRssi, &bRssi)) return; 1537981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* need the 0xffffff00 to get negative value display */ 1538981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Current dataRSSI=%d beaconRssi=%d\n", dRssi?dRssi|0xffffff00:dRssi, bRssi?bRssi|0xffffff00:bRssi); 1539981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 1540981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1541981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_GetSnrRatio(THandle hCuCmd, ConParm_t parm[], U16 nParms) 1542981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 1543981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 1544981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 dSnr, bSnr; 1545981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1546981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetSnr(pCuCmd->hCuCommon, &dSnr, &bSnr)) return; 1547981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Current dataSNR=%d beaconSnr=%d\n", dSnr, bSnr); 1548981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 1549981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1550981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_ShowTxPowerLevel(THandle hCuCmd, ConParm_t parm[], U16 nParms) 1551981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 1552981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 1553981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1554981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 txPowerLevel; 1555981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuOs_GetTxPowerLevel(pCuCmd->hCuWext, &txPowerLevel)) return; 1556981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1557981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Tx Power level = %d\n", txPowerLevel); 1558981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 1559981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1560981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_ShowTxPowerTable(THandle hCuCmd, ConParm_t parm[], U16 nParms) 1561981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 1562981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 1563981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TpowerLevelTable_t txPowerLevel; 1564981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 i, res; 1565981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1566981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt res = CuCommon_GetBuffer(pCuCmd->hCuCommon, REGULATORY_DOMAIN_TX_POWER_LEVEL_TABLE_PARAM, &txPowerLevel, sizeof(txPowerLevel)); 1567981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1568981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( !res ) 1569981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1570981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Power level table (Dbm/10)\n"); 1571981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for (i = 0; i < NUMBER_OF_SUB_BANDS_E; i++) 1572981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1573981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"sub-band %i: %d %d %d %d\n", i, 1574981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt txPowerLevel.uDbm[i][0], 1575981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt txPowerLevel.uDbm[i][1], 1576981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt txPowerLevel.uDbm[i][2], 1577981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt txPowerLevel.uDbm[i][3]); 1578981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1579981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1580981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 1581981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1582981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Tx Power level table ERROR !!!\n"); 1583981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1584981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 1585981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1586981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_TxPowerDbm(THandle hCuCmd, ConParm_t parm[], U16 nParms) 1587981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 1588981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 1589981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U8 txPowerLevelDbm = (U8)parm[0].value; 1590981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1591981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(nParms == 0) 1592981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1593981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetU8(pCuCmd->hCuCommon, TIWLN_802_11_TX_POWER_DBM_GET, (PU8)&txPowerLevelDbm)) return; 1594981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1595981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 1596981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1597981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (parm[0].value > MAX_TX_POWER) 1598981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1599981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Please use values between %d and %d\n", MIN_TX_POWER, MAX_TX_POWER); return; 1600981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1601981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 1602981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1603981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_SetU8(pCuCmd->hCuCommon, TIWLN_802_11_TX_POWER_DBM_GET, (U8)txPowerLevelDbm)) return; 1604981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1605981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1606981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1607981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Tx Power in DBM = %d\n", txPowerLevelDbm); 1608981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 1609981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1610981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_ModifyState_802_11d(THandle hCuCmd, ConParm_t parm[], U16 nParms) 1611981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 1612981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 1613981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 Enabled_802_11d; 1614981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1615981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(nParms == 0) 1616981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1617981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetU32(pCuCmd->hCuCommon, TIWLN_REG_DOMAIN_GET_802_11D, &Enabled_802_11d)) return; 1618981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"802_11d enabled = %s\n", (Enabled_802_11d)?"TRUE":"FALSE"); 1619981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1620981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 1621981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1622981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt Enabled_802_11d = parm[0].value; 1623981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_SetU32(pCuCmd->hCuCommon, TIWLN_REG_DOMAIN_ENABLE_DISABLE_802_11D, Enabled_802_11d)) 1624981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1625981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 Enabled_802_11h; 1626981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetU32(pCuCmd->hCuCommon, TIWLN_REG_DOMAIN_GET_802_11H, &Enabled_802_11h)) return; 1627981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(Enabled_802_11h && (!Enabled_802_11d)) 1628981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"802_11d cannot be disabled while 802_11h is enabled!!\n" ); 1629981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1630981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1631981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 1632981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1633981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"802_11d status is updated to = %s\n", (Enabled_802_11d)?"TRUE":"FALSE" ); 1634981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1635981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1636981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 1637981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1638981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_ModifyState_802_11h(THandle hCuCmd, ConParm_t parm[], U16 nParms) 1639981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 1640981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 1641981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 Enabled_802_11h; 1642981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1643981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(nParms == 0) 1644981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1645981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetU32(pCuCmd->hCuCommon, TIWLN_REG_DOMAIN_GET_802_11H, &Enabled_802_11h)) return; 1646981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"802_11h enabled = %s\n", (Enabled_802_11h)?"TRUE":"FALSE"); 1647981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1648981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 1649981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1650981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt Enabled_802_11h = parm[0].value; 1651981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_SetU32(pCuCmd->hCuCommon, TIWLN_REG_DOMAIN_ENABLE_DISABLE_802_11H, Enabled_802_11h)) return; 1652981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(Enabled_802_11h) 1653981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"802_11h enables automatically 802_11d!!\n" ); 1654981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1655981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"802_11h status is updated to =%d\n", Enabled_802_11h ); 1656981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1657981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 1658981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1659981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_D_Country_2_4Ie(THandle hCuCmd, ConParm_t parm[], U16 nParms) 1660981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 1661981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 1662981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1663981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms == 0 ) 1664981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1665981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U8 CountryString[DOT11_COUNTRY_STRING_LEN+1]; 1666981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetSetBuffer(pCuCmd->hCuCommon, TIWLN_REG_DOMAIN_GET_COUNTRY_2_4, 1667981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CountryString, DOT11_COUNTRY_STRING_LEN+1)) return; 1668981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CountryString[DOT11_COUNTRY_STRING_LEN] = '\0'; 1669981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (CountryString[0] == '\0') 1670981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1671981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"802_11d Country for 2.4 GHz is not found\n"); 1672981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1673981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 1674981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1675981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"802_11d Country for 2.4 GHz is %s \n", CountryString ); 1676981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1677981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1678981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 1679981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1680981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt country_t CountryWorld; 1681981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1682981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CountryWorld.elementId = COUNTRY_IE_ID; 1683981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CountryWorld.len = 6; 1684981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memcpy( (PVOID)CountryWorld.countryIE.CountryString,(PVOID)"GB ", 3); 1685981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CountryWorld.countryIE.tripletChannels[0].firstChannelNumber = 1; 1686981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CountryWorld.countryIE.tripletChannels[0].maxTxPowerLevel = 23; 1687981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CountryWorld.countryIE.tripletChannels[0].numberOfChannels = 11; 1688981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1689981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_SetBuffer(pCuCmd->hCuCommon, TIWLN_REG_DOMAIN_SET_COUNTRY_2_4, 1690981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &CountryWorld, sizeof(country_t))) return; 1691981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1692981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"802_11d Start Setting GB Country for 2.4 GHz\n"); 1693981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1694981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 1695981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1696981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1697981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_D_Country_5Ie(THandle hCuCmd, ConParm_t parm[], U16 nParms) 1698981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 1699981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 1700981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1701981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms == 0 ) 1702981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1703981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U8 CountryString[DOT11_COUNTRY_STRING_LEN+1]; 1704981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1705981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetSetBuffer(pCuCmd->hCuCommon, TIWLN_REG_DOMAIN_GET_COUNTRY_5, 1706981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CountryString, DOT11_COUNTRY_STRING_LEN+1)) return; 1707981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1708981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CountryString[DOT11_COUNTRY_STRING_LEN] = '\0'; 1709981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (CountryString[0] == '\0') 1710981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1711981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"802_11d Country for 5 GHz is not found\n"); 1712981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1713981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 1714981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1715981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"802_11d Country for 5 GHz is %s\n", CountryString ); 1716981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1717981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1718981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 1719981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1720981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt country_t CountryWorld; 1721981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1722981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CountryWorld.elementId = COUNTRY_IE_ID; 1723981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CountryWorld.len = 6; 1724981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memcpy((PVOID) CountryWorld.countryIE.CountryString,(PVOID)"US ", 3); 1725981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CountryWorld.countryIE.tripletChannels[0].firstChannelNumber = 36; 1726981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CountryWorld.countryIE.tripletChannels[0].maxTxPowerLevel = 13; 1727981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CountryWorld.countryIE.tripletChannels[0].numberOfChannels = 8; 1728981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1729981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_SetBuffer(pCuCmd->hCuCommon, TIWLN_REG_DOMAIN_SET_COUNTRY_5, 1730981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &CountryWorld, sizeof(country_t))) return; 1731981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1732981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"802_11d Start Setting US Country for 5 GHz\n"); 1733981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1734981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 1735981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1736981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_ModifyDfsRange(THandle hCuCmd, ConParm_t parm[], U16 nParms) 1737981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 1738981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 1739981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U16 minDFS_channelNum; 1740981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U16 maxDFS_channelNum; 1741981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1742981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms == 0 ) 1743981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1744981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetDfsChannels(pCuCmd->hCuCommon, &minDFS_channelNum, &maxDFS_channelNum)) return; 1745981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1746981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"DFS min channel is %d, DFS max channel is %d\n", 1747981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt minDFS_channelNum, maxDFS_channelNum); 1748981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1749981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 1750981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1751981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt minDFS_channelNum = (U16) parm[0].value; 1752981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt maxDFS_channelNum = (U16) parm[1].value; 1753981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1754981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_SetDfsChannels(pCuCmd->hCuCommon, minDFS_channelNum, maxDFS_channelNum)) return; 1755981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1756981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Setting DFS min channel %d, DFS max channel %d\n", 1757981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt minDFS_channelNum, maxDFS_channelNum); 1758981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1759981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 1760981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1761981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_SetBeaconFilterDesiredState(THandle hCuCmd, ConParm_t parm[], U16 nParms) 1762981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 1763981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 1764981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1765981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms == 0 ) 1766981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1767981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt print_available_values(BeaconFilter_use); 1768981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1769981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 1770981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1771981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCommon_SetU8(pCuCmd->hCuCommon, TIWLN_802_11_BEACON_FILTER_DESIRED_STATE_SET, (U8)parm[0].value); 1772981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1773981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 1774981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1775981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_GetBeaconFilterDesiredState(THandle hCuCmd, ConParm_t parm[], U16 nParms) 1776981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 1777981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 1778981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U8 beaconFilterDesiredState = 0; 1779981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1780981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetU8(pCuCmd->hCuCommon, TIWLN_802_11_BEACON_FILTER_DESIRED_STATE_GET, &beaconFilterDesiredState)) return; 1781981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1782981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Desired State is %s\n", (beaconFilterDesiredState == 0)?"FILTER INACTIVE":"FILTER ACTIVE" ); 1783981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 1784981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1785981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_ModifySupportedRates(THandle hCuCmd, ConParm_t parm[], U16 nParms) 1786981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 1787981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 1788981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt rates_t SupportedRates; 1789981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 i; 1790981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1791981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms == 0 ) 1792981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1793981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetBuffer(pCuCmd->hCuCommon, TIWLN_802_11_SUPPORTED_RATES, 1794981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &SupportedRates, sizeof(rates_t))) return; 1795981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1796981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" Rates: "); 1797981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for( i=0; i < SupportedRates.len; i++ ) 1798981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1799981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, 1800981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt (PS8)"%g Mbps(%u%s)%s", 1801981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* patch in order to support NET_RATE_MCS7 values that equal to NET_RATE_1M_BASIC */ 1802981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt (RATE_2_MBPS(SupportedRates.ratesString[i]) == 63.5) ? 65 : RATE_2_MBPS(SupportedRates.ratesString[i]), 1803981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* patch in order to support NET_RATE_MCS7 values that equal to NET_RATE_1M_BASIC */ 1804981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt (SupportedRates.ratesString[i] == 0x7f) ? 0x83 : SupportedRates.ratesString[i], 1805981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt IS_BASIC_RATE(SupportedRates.ratesString[i]) ? " - basic" : "", 1806981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt (i < SupportedRates.len-1) ? "," : "" ); 1807981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1808981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"\n"); 1809981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1810981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 1811981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1812981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt PS8 buf = (PS8) parm[0].value; 1813981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt PS8 end_p; 1814981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 val; 1815981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 MaxVal = ((1 << (sizeof(SupportedRates.ratesString[i]) * 8))-1); 1816981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1817981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"param: %s\n", buf ); 1818981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1819981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for( i=0; *buf && i < DOT11_MAX_SUPPORTED_RATES; i++ ) 1820981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1821981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt val = os_strtoul(buf, &end_p, 0); 1822981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(val == 0) 1823981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1824981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"CuCmd_ModifySupportedRates: invalid value - %s\n", buf ); 1825981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 1826981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1827981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(val > MaxVal) 1828981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1829981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"CuCmd_ModifySupportedRates: out of range %d\n", val ); 1830981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 1831981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1832981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* patch in order to support NET_RATE_MCS7 values that equal to NET_RATE_1M_BASIC */ 1833981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (val == 0x83) 1834981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1835981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt val = 0x7f; 1836981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1837981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt SupportedRates.ratesString[i] = (U8)(val); 1838981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt buf = end_p; 1839981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt while( *buf==' ' || *buf == ',' ) buf++; 1840981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1841981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(*buf) 1842981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1843981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"too many parameters. Max=%d\n", DOT11_MAX_SUPPORTED_RATES ); 1844981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 1845981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1846981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1847981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt SupportedRates.len = (U8) i; 1848981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCommon_SetBuffer(pCuCmd->hCuCommon, TIWLN_802_11_SUPPORTED_RATES, 1849981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &SupportedRates, sizeof(rates_t)); 1850981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1851981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 1852981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1853981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_SendHealthCheck(THandle hCuCmd, ConParm_t parm[], U16 nParms) 1854981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 1855981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 1856981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1857981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (OK != CuCommon_SetU32(pCuCmd->hCuCommon, HEALTH_MONITOR_CHECK_DEVICE, TRUE)) return; 1858981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1859981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Send health check...\n"); 1860981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 1861981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1862981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_EnableRxDataFilters(THandle hCuCmd, ConParm_t parm[], U16 nParms) 1863981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 1864981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 1865981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1866981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (OK != CuCommon_SetU32(pCuCmd->hCuCommon, TIWLN_ENABLE_DISABLE_RX_DATA_FILTERS, TRUE)) return; 1867981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1868981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Enabling Rx data filtering...\n"); 1869981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 1870981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1871981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_DisableRxDataFilters(THandle hCuCmd, ConParm_t parm[], U16 nParms) 1872981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 1873981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 1874981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1875981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (OK != CuCommon_SetU32(pCuCmd->hCuCommon, TIWLN_ENABLE_DISABLE_RX_DATA_FILTERS, FALSE)) return; 1876981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1877981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Disabling Rx data filtering...\n"); 1878981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 1879981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1880981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_AddRxDataFilter(THandle hCuCmd, ConParm_t parm[], U16 nParms) 1881981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 1882981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 1883981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 res; 1884981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TRxDataFilterRequest request; 1885981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt PS8 mask = (PS8) parm[1].value; 1886981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt PS8 pattern = (PS8) parm[2].value; 1887981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1888981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt request.offset = (U8)parm[0].value; 1889981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_ParseMaskString(mask, request.mask, &request.maskLength); 1890981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_ParsePatternString(pattern, request.pattern, &request.patternLength); 1891981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1892981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt res = CuCommon_SetBuffer(pCuCmd->hCuCommon, TIWLN_ADD_RX_DATA_FILTER, 1893981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &request, sizeof(TRxDataFilterRequest)); 1894981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1895981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(res == OK) 1896981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Filter added.\n"); 1897981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 1898981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_ERROR, (PS8)"ERROR - CuCmd_AddRxDataFilter - Couldn't add Rx data filter...\n"); 1899981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1900981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 1901981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1902981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_RemoveRxDataFilter(THandle hCuCmd, ConParm_t parm[], U16 nParms) 1903981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 1904981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 1905981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 res; 1906981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TRxDataFilterRequest request; 1907981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt PS8 mask = (PS8) parm[1].value; 1908981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt PS8 pattern = (PS8) parm[2].value; 1909981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1910981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt request.offset = (U8)parm[0].value; 1911981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_ParseMaskString(mask, request.mask, &request.maskLength); 1912981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_ParsePatternString(pattern, request.pattern, &request.patternLength); 1913981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1914981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt res = CuCommon_SetBuffer(pCuCmd->hCuCommon, TIWLN_REMOVE_RX_DATA_FILTER, 1915981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &request, sizeof(TRxDataFilterRequest)); 1916981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1917981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(res == OK) 1918981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Filter Removed.\n"); 1919981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 1920981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_ERROR, (PS8)"ERROR - CuCmd_AddRxDataFilter - Couldn't remove Rx data filter...\n"); 1921981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 1922981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1923981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_GetRxDataFiltersStatistics(THandle hCuCmd, ConParm_t parm[], U16 nParms) 1924981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 1925981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 1926981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 UnmatchedPacketsCount; 1927981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 MatchedPacketsCount[4]; 1928981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1929981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (OK != CuCommon_GetRxDataFiltersStatistics(pCuCmd->hCuCommon, &UnmatchedPacketsCount, MatchedPacketsCount)) return; 1930981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1931981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Rx data filtering statistics:\n"); 1932981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Unmatched packets: %u\n", UnmatchedPacketsCount); 1933981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Packets matching filter #1: %u\n", MatchedPacketsCount[0]); 1934981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Packets matching filter #2: %u\n", MatchedPacketsCount[1]); 1935981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Packets matching filter #3: %u\n", MatchedPacketsCount[2]); 1936981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Packets matching filter #4: %u\n", MatchedPacketsCount[3]); 1937981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 1938981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1939981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_ShowStatistics(THandle hCuCmd, ConParm_t parm[], U16 nParms) 1940981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 1941981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 1942981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1943981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 powerMode; 1944981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TMacAddr Mac; 1945981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt OS_802_11_SSID ssid; 1946981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U8 desiredChannel; 1947981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 rtsTh; 1948981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 fragTh; 1949981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 txPowerLevel; 1950653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt U8 bssType; 1951981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 desiredPreambleType; 1952981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TIWLN_COUNTERS driverCounters; 1953981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 AuthMode; 1954981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U8 CurrentTxRate; 1955981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S8 CurrentTxRateStr[20]; 1956653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt U8 CurrentRxRate; 1957653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt S8 CurrentRxRateStr[20]; 1958981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 DefaultKeyId; 1959981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 WepStatus; 1960981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S8 dRssi, bRssi; 1961981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#ifdef XCC_MODULE_INCLUDED 1962981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 XCCNetEap; 1963981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 1964981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1965981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetBuffer(pCuCmd->hCuCommon, CTRL_DATA_MAC_ADDRESS, 1966981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt Mac, sizeof(TMacAddr))) return; 1967981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetBuffer(pCuCmd->hCuCommon, TIWLN_802_11_POWER_MODE_GET, &powerMode, sizeof(U32))) return; 1968981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuOs_Get_SSID(pCuCmd->hCuWext, &ssid)) return; 1969981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetU8(pCuCmd->hCuCommon, SITE_MGR_DESIRED_CHANNEL_PARAM, &desiredChannel)) return; 1970981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuOs_GetRtsTh(pCuCmd->hCuWext, &rtsTh)) return; 1971981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuOs_GetFragTh(pCuCmd->hCuWext, &fragTh)) return; 1972981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuOs_GetTxPowerLevel(pCuCmd->hCuWext, &txPowerLevel)) return; 1973653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt if(OK != CuCommon_GetU8(pCuCmd->hCuCommon, CTRL_DATA_CURRENT_BSS_TYPE_PARAM, &bssType)) return; 1974981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetU32(pCuCmd->hCuCommon, TIWLN_802_11_SHORT_PREAMBLE_GET, &desiredPreambleType)) return; 1975981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetBuffer(pCuCmd->hCuCommon, SITE_MGR_TI_WLAN_COUNTERS_PARAM, &driverCounters, sizeof(TIWLN_COUNTERS))) return; 1976981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetU32(pCuCmd->hCuCommon, RSN_ENCRYPTION_STATUS_PARAM, &WepStatus)) return; 1977981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetRssi(pCuCmd->hCuCommon, &dRssi, &bRssi)) return; 1978981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (pCuCmd->hWpaCore == NULL) 1979981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1980981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetU32(pCuCmd->hCuCommon, RSN_EXT_AUTHENTICATION_MODE, &AuthMode)) return; 1981981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetU32(pCuCmd->hCuCommon, RSN_DEFAULT_KEY_ID, &DefaultKeyId)) return; 1982981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1983981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 1984981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 1985981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#ifndef NO_WPA_SUPPL 1986981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != WpaCore_GetAuthMode(pCuCmd->hWpaCore, &AuthMode)) return; 1987981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != WpaCore_GetDefaultKey(pCuCmd->hWpaCore, &DefaultKeyId)) return; 1988981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 1989981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 1990981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1991981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetU8(pCuCmd->hCuCommon, TIWLN_802_11_CURRENT_RATES_GET, &CurrentTxRate)) return; 1992981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_CreateRateStr(CurrentTxRateStr, CurrentTxRate); 1993653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt 1994653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt if(OK != CuCommon_GetU8(pCuCmd->hCuCommon, TIWLN_GET_RX_DATA_RATE, &CurrentRxRate)) return; 1995653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt CuCmd_CreateRateStr(CurrentRxRateStr, CurrentRxRate); 1996981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 1997981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#ifdef XCC_MODULE_INCLUDED 1998981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetU32(pCuCmd->hCuCommon, RSN_XCC_NETWORK_EAP, &XCCNetEap)) return; 1999981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 2000981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2001981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"******************\n"); 2002981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Driver Statistics:\n"); 2003981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"******************\n"); 2004981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2005981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" dot11CurrentTxRate : %s\n", CurrentTxRateStr); 2006653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" CurrentRxRate : %s\n", CurrentRxRateStr); 2007981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" dot11DesiredChannel : %d\n", desiredChannel); 2008981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" currentMACAddress : %02x.%02x.%02x.%02x.%02x.%02x\n",Mac[0],Mac[1],Mac[2],Mac[3],Mac[4],Mac[5]); 2009981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" dot11DesiredSSID : %s\n", ssid.Ssid); 2010981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" dot11BSSType : %d\n", bssType); 2011981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" AuthenticationMode : %d\n", AuthMode ); 2012981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" bShortPreambleUsed : %d\n", desiredPreambleType ); 2013981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" RTSThreshold : %d\n", rtsTh ); 2014981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"FragmentationThreshold : %d\n", fragTh ); 2015981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" bDefaultWEPKeyDefined : %d\n", DefaultKeyId); 2016981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" WEPStatus : %d\n", WepStatus); 2017981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" TxPowerLevel : %d\n", txPowerLevel ); 2018981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" PowerMode : %d\n", powerMode ); 2019981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" dataRssi : %d\n", dRssi); 2020981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" beaconRssi : %d\n", bRssi); 2021981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /**/ 2022981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* network layer statistics*/ 2023981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /**/ 2024981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" RecvOk : %d\n", driverCounters.RecvOk ); 2025981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" RecvError : %d\n", driverCounters.RecvError ); 2026981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" DirectedBytesRecv : %d\n", driverCounters.DirectedBytesRecv ); 2027981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" DirectedFramesRecv : %d\n", driverCounters.DirectedFramesRecv ); 2028981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" MulticastBytesRecv : %d\n", driverCounters.MulticastBytesRecv ); 2029981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" MulticastFramesRecv : %d\n", driverCounters.MulticastFramesRecv ); 2030981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" BroadcastBytesRecv : %d\n", driverCounters.BroadcastBytesRecv ); 2031981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" BroadcastFramesRecv : %d\n", driverCounters.BroadcastFramesRecv ); 2032981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" FcsErrors : %d\n", driverCounters.FcsErrors ); 2033981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" BeaconsRecv : %d\n", driverCounters.BeaconsRecv ); 2034981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" AssocRejects : %d\n", driverCounters.AssocRejects ); 2035981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" AssocTimeouts : %d\n", driverCounters.AssocTimeouts ); 2036981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" AuthRejects : %d\n", driverCounters.AuthRejects ); 2037981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" AuthTimeouts : %d\n", driverCounters.AuthTimeouts ); 2038981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2039981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /**/ 2040981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* other statistics*/ 2041981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /**/ 2042981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#ifdef XCC_MODULE_INCLUDED 2043981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" dwSecuritySuit : %d\n", XCCNetEap); 2044981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 2045981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 2046981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2047981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_ShowTxStatistics(THandle hCuCmd, ConParm_t parm[], U16 nParms) 2048981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 2049981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 2050981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TIWLN_TX_STATISTICS txCounters; 2051981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 TxQid; 2052981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 AverageDelay; 2053981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 AverageFWDelay; 2054981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 AverageMacDelay; 2055981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2056981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms == 0 ) 2057981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 2058981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetTxStatistics(pCuCmd->hCuCommon, &txCounters, 0)) return; 2059981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 2060981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 2061981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 2062981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetTxStatistics(pCuCmd->hCuCommon, &txCounters, parm[0].value)) return; 2063981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 2064981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2065981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"*********************\n"); 2066981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Tx Queues Statistics:\n"); 2067981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"*********************\n"); 2068981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2069981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for (TxQid = 0; TxQid < MAX_NUM_OF_AC; TxQid++) 2070981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 2071981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"\nTx Queue %d:\n", TxQid); 2072981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"===========\n"); 2073981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2074981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" Total Good Frames : %d\n", txCounters.txCounters[TxQid].XmitOk ); 2075981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" Unicast Bytes : %d\n", txCounters.txCounters[TxQid].DirectedBytesXmit ); 2076981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" Unicast Frames : %d\n", txCounters.txCounters[TxQid].DirectedFramesXmit ); 2077981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" Multicast Bytes : %d\n", txCounters.txCounters[TxQid].MulticastBytesXmit ); 2078981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" Multicast Frames : %d\n", txCounters.txCounters[TxQid].MulticastFramesXmit ); 2079981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" Broadcast Bytes : %d\n", txCounters.txCounters[TxQid].BroadcastBytesXmit ); 2080981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" Broadcast Frames : %d\n", txCounters.txCounters[TxQid].BroadcastFramesXmit ); 2081981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" Retry Failures : %d\n", txCounters.txCounters[TxQid].RetryFailCounter ); 2082981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" Tx Timeout Failures : %d\n", txCounters.txCounters[TxQid].TxTimeoutCounter ); 2083981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" No Link Failures : %d\n", txCounters.txCounters[TxQid].NoLinkCounter ); 2084981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" Other Failures : %d\n", txCounters.txCounters[TxQid].OtherFailCounter ); 2085981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" Max Consecutive Retry Failures : %d\n\n", txCounters.txCounters[TxQid].MaxConsecutiveRetryFail ); 2086981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2087981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" Retry histogram:\n"); 2088981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" ----------------\n\n"); 2089981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" Retries: %8d %8d %8d %8d %8d %8d %8d %8d\n", 0, 1, 2, 3, 4, 5, 6, 7); 2090981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" packets: %8d %8d %8d %8d %8d %8d %8d %8d\n\n", 2091981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt txCounters.txCounters[TxQid].RetryHistogram[ 0 ], 2092981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt txCounters.txCounters[TxQid].RetryHistogram[ 1 ], 2093981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt txCounters.txCounters[TxQid].RetryHistogram[ 2 ], 2094981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt txCounters.txCounters[TxQid].RetryHistogram[ 3 ], 2095981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt txCounters.txCounters[TxQid].RetryHistogram[ 4 ], 2096981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt txCounters.txCounters[TxQid].RetryHistogram[ 5 ], 2097981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt txCounters.txCounters[TxQid].RetryHistogram[ 6 ], 2098981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt txCounters.txCounters[TxQid].RetryHistogram[ 7 ]); 2099981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" Retries: %8d %8d %8d %8d %8d %8d %8d %8d\n", 8, 9, 10, 11, 12, 13, 14, 15); 2100981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" packets: %8d %8d %8d %8d %8d %8d %8d %8d\n\n", 2101981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt txCounters.txCounters[TxQid].RetryHistogram[ 8 ], 2102981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt txCounters.txCounters[TxQid].RetryHistogram[ 9 ], 2103981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt txCounters.txCounters[TxQid].RetryHistogram[ 10 ], 2104981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt txCounters.txCounters[TxQid].RetryHistogram[ 11 ], 2105981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt txCounters.txCounters[TxQid].RetryHistogram[ 12 ], 2106981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt txCounters.txCounters[TxQid].RetryHistogram[ 13 ], 2107981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt txCounters.txCounters[TxQid].RetryHistogram[ 14 ], 2108981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt txCounters.txCounters[TxQid].RetryHistogram[ 15 ]); 2109981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2110981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (txCounters.txCounters[TxQid].NumPackets) 2111981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 2112981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt AverageDelay = txCounters.txCounters[TxQid].SumTotalDelayMs / txCounters.txCounters[TxQid].NumPackets; 2113981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt AverageFWDelay = txCounters.txCounters[TxQid].SumFWDelayUs / txCounters.txCounters[TxQid].NumPackets; 2114981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt AverageMacDelay = txCounters.txCounters[TxQid].SumMacDelayUs / txCounters.txCounters[TxQid].NumPackets; 2115981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 2116981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 2117981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 2118981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt AverageDelay = 0; 2119981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt AverageFWDelay = 0; 2120981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt AverageMacDelay = 0; 2121981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 2122981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2123981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" Total Delay ms (average/sum) : %d / %d\n", AverageDelay, txCounters.txCounters[TxQid].SumTotalDelayMs); 2124981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" FW Delay us (average/sum) : %d / %d\n", AverageFWDelay, txCounters.txCounters[TxQid].SumFWDelayUs); 2125981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" MAC Delay us (average/sum) : %d / %d\n\n", AverageMacDelay, txCounters.txCounters[TxQid].SumMacDelayUs); 2126981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2127981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" Delay Ranges [msec] : Num of packets\n"); 2128981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" ------------------- : --------------\n"); 2129981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" 0 - 1 : %d\n", txCounters.txCounters[TxQid].txDelayHistogram[TX_DELAY_RANGE_0_TO_1] ); 2130981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" 1 - 10 : %d\n", txCounters.txCounters[TxQid].txDelayHistogram[TX_DELAY_RANGE_1_TO_10] ); 2131981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" 10 - 20 : %d\n", txCounters.txCounters[TxQid].txDelayHistogram[TX_DELAY_RANGE_10_TO_20] ); 2132981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" 20 - 40 : %d\n", txCounters.txCounters[TxQid].txDelayHistogram[TX_DELAY_RANGE_20_TO_40] ); 2133981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" 40 - 60 : %d\n", txCounters.txCounters[TxQid].txDelayHistogram[TX_DELAY_RANGE_40_TO_60] ); 2134981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" 60 - 80 : %d\n", txCounters.txCounters[TxQid].txDelayHistogram[TX_DELAY_RANGE_60_TO_80] ); 2135981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" 80 - 100 : %d\n", txCounters.txCounters[TxQid].txDelayHistogram[TX_DELAY_RANGE_80_TO_100] ); 2136981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" 100 - 200 : %d\n", txCounters.txCounters[TxQid].txDelayHistogram[TX_DELAY_RANGE_100_TO_200] ); 2137981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" Above 200 : %d\n", txCounters.txCounters[TxQid].txDelayHistogram[TX_DELAY_RANGE_ABOVE_200] ); 2138981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 2139981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 2140981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2141981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_ShowAdvancedParams(THandle hCuCmd, ConParm_t parm[], U16 nParms) 2142981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 2143981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 2144981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2145981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 AuthMode; 2146981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TPowerMgr_PowerMode Mode; 2147981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 txPowerLevel; 2148981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#ifndef NO_WPA_SUPPL 2149981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt OS_802_11_ENCRYPTION_TYPES EncryptionTypePairwise; 2150981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt OS_802_11_ENCRYPTION_TYPES EncryptionTypeGroup; 2151981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 2152981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 Preamble; 2153981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 FragTh; 2154981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 RtsTh; 2155981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2156981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (pCuCmd->hWpaCore == NULL) 2157981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 2158981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetU32(pCuCmd->hCuCommon, RSN_EXT_AUTHENTICATION_MODE, &AuthMode)) return; 2159981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 2160981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 2161981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 2162981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#ifndef NO_WPA_SUPPL 2163981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != WpaCore_GetAuthMode(pCuCmd->hWpaCore, &AuthMode)) return; 2164981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 2165981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 2166981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetBuffer(pCuCmd->hCuCommon, TIWLN_802_11_POWER_MODE_GET, &Mode, sizeof(TPowerMgr_PowerMode))) return; 2167981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuOs_GetTxPowerLevel(pCuCmd->hCuWext, &txPowerLevel)) return; 2168981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#ifndef NO_WPA_SUPPL 2169981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != WpaCore_GetEncryptionPairWise(pCuCmd->hWpaCore, &EncryptionTypePairwise)) return; 2170981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != WpaCore_GetEncryptionGroup(pCuCmd->hWpaCore, &EncryptionTypeGroup)) return; 2171981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 2172981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetU32(pCuCmd->hCuCommon, TIWLN_802_11_SHORT_PREAMBLE_GET, (PU32)&Preamble)) return; 2173981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuOs_GetFragTh(pCuCmd->hCuWext, &FragTh)) return; 2174981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuOs_GetRtsTh(pCuCmd->hCuWext, &RtsTh)) return; 2175981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2176981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2177981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"********************\n"); 2178981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Advanced Statistics:\n"); 2179981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"********************\n"); 2180981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2181981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" Authentication : %u\n", AuthMode ); 2182981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" Power mode : %d\n", Mode.PowerMode ); 2183981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" Tx Power level : %d\n", txPowerLevel ); 2184981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#ifndef NO_WPA_SUPPL 2185981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" Encryption Pairwise: %u\n", EncryptionTypePairwise ); 2186981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" Encryption Group: %u\n", EncryptionTypeGroup ); 2187981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 2188981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" Preamble : <%s>\n", (Preamble) ? "short" : "long"); 2189981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" Frag. threshold : %u\n", FragTh); 2190981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" RTS threshold : %u\n", RtsTh ); 2191981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" Power mode: "); 2192981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt print_available_values(power_mode_val); 2193981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" Encryption type: "); 2194981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt print_available_values(encrypt_type); 2195981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2196981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 2197981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2198981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2199981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID Cucmd_ShowPowerConsumptionStats(THandle hCuCmd,ConParm_t parm[],U16 nParms) 2200981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 2201981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 2202981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ACXPowerConsumptionTimeStat_t tStatistics; 2203981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2204981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memset( &tStatistics, 0, sizeof(ACXPowerConsumptionTimeStat_t) ); 2205981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2206981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (OK != CuCommon_GetPowerConsumptionStat(pCuCmd->hCuCommon,&tStatistics)) 2207981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 2208981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_ERROR, (PS8)"ERROR - Failed to read power consumption statistic!\n"); 2209981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 2210981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 2211981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2212981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2213981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2214981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"\nPower Consumption Statistics:\n"); 2215981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"-----------------------------\n"); 2216981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"activeTimeCnt:0x%x%x\n", tStatistics.awakeTimeCnt_Hi,tStatistics.awakeTimeCnt_Low ); 2217981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"elpTimeCnt: 0x%x%x\n", tStatistics.elpTimeCnt_Hi,tStatistics.elpTimeCnt_Low); 2218981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"powerDownTimeCnt: 0x%x%x\n", tStatistics.powerDownTimeCnt_Hi,tStatistics.powerDownTimeCnt_Low); 2219981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"ListenMode11BTimeCnt: 0x%x%x\n", tStatistics.ListenMode11BTimeCnt_Hi,tStatistics.ListenMode11BTimeCnt_Low); 2220981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"ListenModeOFDMTimeCnt: 0x%x%x\n", tStatistics.ListenModeOFDMTimeCnt_Hi,tStatistics.ListenModeOFDMTimeCnt_Low); 2221981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2222981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 2223981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2224981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2225981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2226981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_ScanAppGlobalConfig(THandle hCuCmd, ConParm_t parm[], U16 nParms) 2227981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 2228981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 2229981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2230981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if ( 0 == os_strcmp( (PS8)"<empty>", (PS8)parm[0].value) ) 2231981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 2232981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->appScanParams.desiredSsid.len = 0; 2233981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->appScanParams.desiredSsid.str[ 0 ] = '\0'; 2234981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 2235981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 2236981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 2237981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->appScanParams.desiredSsid.len = (U8) os_strlen((PS8)parm[0].value); 2238981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memcpy( (PVOID)&(pCuCmd->appScanParams.desiredSsid.str), (PVOID)parm[0].value, pCuCmd->appScanParams.desiredSsid.len ); 2239981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(pCuCmd->appScanParams.desiredSsid.len < MAX_SSID_LEN) 2240981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 2241981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->appScanParams.desiredSsid.str[pCuCmd->appScanParams.desiredSsid.len] = 0; 2242981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 2243981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 2244981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->appScanParams.scanType = parm[1].value; 2245981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->appScanParams.band = parm[2].value; 2246981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->appScanParams.probeReqNumber = (U8)parm[3].value; 2247981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->appScanParams.probeRequestRate = parm[4].value; 2248981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#ifdef TI_DBG 2249981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->appScanParams.Tid = (U8)parm[5].value; 2250981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->appScanParams.numOfChannels = (U8)parm[6].value; 2251981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#else 2252981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->appScanParams.Tid = 0; 2253981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->appScanParams.numOfChannels = (U8)parm[5].value; 2254981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 2255981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 2256981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2257981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_ScanAppChannelConfig(THandle hCuCmd, ConParm_t parm[], U16 nParms) 2258981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 2259981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 2260981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2261981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt scan_normalChannelEntry_t* pChannelEntry = 2262981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &(pCuCmd->appScanParams.channelEntry[ parm[0].value ].normalChannelEntry); 2263981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2264981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (parm[2].value < parm[3].value) 2265981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 2266981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Max Dwell Time must be larger than or equal to Min Dwell Time...\n"); 2267981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 2268981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 2269981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2270981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_Str2MACAddr ((PS8)parm[1].value, pChannelEntry->bssId); 2271981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pChannelEntry->maxChannelDwellTime = parm[2].value; 2272981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pChannelEntry->minChannelDwellTime = parm[3].value; 2273981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pChannelEntry->earlyTerminationEvent = parm[4].value; 2274981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pChannelEntry->ETMaxNumOfAPframes = (U8)parm[5].value; 2275981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pChannelEntry->txPowerDbm = (U8)parm[6].value; 2276981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pChannelEntry->channel = (U8)parm[7].value; 2277981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 2278981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2279981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_ScanAppClear(THandle hCuCmd, ConParm_t parm[], U16 nParms) 2280981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 2281981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 2282981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memset( &pCuCmd->appScanParams, 0, sizeof(scan_Params_t) ); 2283981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Application scan parameters cleared.\n"); 2284981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 2285981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2286981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_ScanAppDisplay(THandle hCuCmd, ConParm_t parm[], U16 nParms) 2287981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 2288981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 2289981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 i,j; 2290981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt scan_normalChannelEntry_t* pNormalChannel; 2291981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2292981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CU_CMD_FIND_NAME_ARRAY(j, rate2Str, pCuCmd->appScanParams.probeRequestRate); 2293981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Application Scan params:\n"); 2294981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"SSID: %s, Type: %s\n", 2295981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->appScanParams.desiredSsid.str, 2296981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt scanType2Str[ pCuCmd->appScanParams.scanType ].name); 2297981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Band: %s, Number of probe req:%d, probe req. rate:%s\n", 2298981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt band2Str[ pCuCmd->appScanParams.band ].name, 2299981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->appScanParams.probeReqNumber, 2300981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt rate2Str[j].name); 2301981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#ifdef TI_DBG 2302981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Tid :%d\n\n", pCuCmd->appScanParams.Tid); 2303981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#else 2304981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"\n"); 2305981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 2306981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Channel BSS ID Max time Min time ET event ET frame num Power\n"); 2307981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"-------------------------------------------------------------------------------\n"); 2308981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for ( i = 0; i < pCuCmd->appScanParams.numOfChannels; i++ ) 2309981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 2310981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pNormalChannel = &(pCuCmd->appScanParams.channelEntry[ i ].normalChannelEntry); 2311981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CU_CMD_FIND_NAME_ARRAY(j, EtEvent2Str, pNormalChannel->earlyTerminationEvent); 2312981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"%2d %02x.%02x.%02x.%02x.%02x.%02x %7d %7d %s%3d %1d\n", 2313981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pNormalChannel->channel, 2314981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pNormalChannel->bssId[0],pNormalChannel->bssId[1],pNormalChannel->bssId[2],pNormalChannel->bssId[3],pNormalChannel->bssId[4],pNormalChannel->bssId[5], 2315981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pNormalChannel->maxChannelDwellTime, 2316981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pNormalChannel->minChannelDwellTime, 2317981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt EtEvent2Str[j].name, 2318981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pNormalChannel->ETMaxNumOfAPframes, 2319981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pNormalChannel->txPowerDbm); 2320981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 2321981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"\n"); 2322981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 2323981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2324981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_StartScan(THandle hCuCmd, ConParm_t parm[], U16 nParms) 2325981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 2326981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 2327981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2328981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_SetBuffer(pCuCmd->hCuCommon, TIWLN_802_11_START_APP_SCAN_SET, 2329981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &pCuCmd->appScanParams, sizeof(scan_Params_t))) 2330981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 2331981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 2332981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 2333981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2334981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Application scan started\n"); 2335981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2336981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* 2337981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * In order to have ability to set the application scan we are using application scan priver command 2338981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * exsample for using supplicant scan command below: 2339981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * #ifndef NO_WPA_SUPPL 2340981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * CuOs_Start_Scan(pCuCmd->hCuWext, &ssid); 2341981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * #endif 2342981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt */ 2343981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 2344981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2345981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_WextStartScan(THandle hCuCmd, ConParm_t parm[], U16 nParms) 2346981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 2347981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 2348981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt OS_802_11_SSID ssid; 2349981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2350981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt switch (nParms) 2351981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 2352981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case 0 : 2353981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* 2354981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * No SSID & No BSSID are set - 2355981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * Use Any SSID & Any BSSID. 2356981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt */ 2357981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ssid.SsidLength = 0; 2358981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ssid.Ssid[0] = 0; 2359981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 2360981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case 1: 2361981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* 2362981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * SSID set 2363981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * Use CLI's SSID & Any BSSID. 2364981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt */ 2365981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ssid.SsidLength = os_strlen( (PS8)parm[0].value); 2366981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memcpy((PVOID)ssid.Ssid, (PVOID) parm[0].value, ssid.SsidLength); 2367981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ssid.Ssid[ssid.SsidLength] = '\0'; 2368981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 2369981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2370981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt default: 2371981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"w <ssid Name As optional>\n"); 2372981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 2373981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 2374981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2375981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#ifndef NO_WPA_SUPPL 2376981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuOs_Start_Scan(pCuCmd->hCuWext, &ssid); 2377981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#else 2378981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"WEXT not build, Scan Not Started\n"); 2379981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 2380981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2381981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 2382981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2383981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_StopScan (THandle hCuCmd, ConParm_t parm[], U16 nParms) 2384981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 2385981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 2386981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2387981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_SetBuffer(pCuCmd->hCuCommon, TIWLN_802_11_STOP_APP_SCAN_SET, NULL, 0)) 2388981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 2389981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 2390981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 2391981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Application scan stopped\n"); 2392981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 2393981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2394981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_ConfigPeriodicScanGlobal (THandle hCuCmd, ConParm_t parm[], U16 nParms) 2395981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 2396981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 2397981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2398981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->tPeriodicAppScanParams.iRssiThreshold = (S8)parm[ 0 ].value; 2399981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->tPeriodicAppScanParams.iSnrThreshold = (S8)parm[ 1 ].value; 2400981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->tPeriodicAppScanParams.uFrameCountReportThreshold = parm[ 2 ].value; 2401981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->tPeriodicAppScanParams.bTerminateOnReport = parm[ 3 ].value; 2402981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->tPeriodicAppScanParams.eBssType = (ScanBssType_e )parm[ 4 ].value; 2403981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->tPeriodicAppScanParams.uProbeRequestNum = parm[ 5 ].value; 2404981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->tPeriodicAppScanParams.uCycleNum = parm[ 6 ].value; 2405981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->tPeriodicAppScanParams.uSsidNum = parm[ 7 ].value; 2406653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt pCuCmd->tPeriodicAppScanParams.uSsidListFilterEnabled = (U8)(parm[ 8 ].value); 2407653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt pCuCmd->tPeriodicAppScanParams.uChannelNum = parm[ 9 ].value; 2408981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 2409981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2410981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_ConfigPeriodicScanInterval (THandle hCuCmd, ConParm_t parm[], U16 nParms) 2411981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 2412981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 2413981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2414981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->tPeriodicAppScanParams.uCycleIntervalMsec[ parm[ 0 ].value ] = parm[ 1 ].value; 2415981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 2416981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2417981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_ConfigurePeriodicScanSsid (THandle hCuCmd, ConParm_t parm[], U16 nParms) 2418981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 2419981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 2420981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TSsid *pSsid = &pCuCmd->tPeriodicAppScanParams.tDesiredSsid[ parm[ 0 ].value ].tSsid; 2421981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2422981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->tPeriodicAppScanParams.tDesiredSsid[ parm[ 0 ].value ].eVisability = parm[ 1 ].value; 2423981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pSsid->len = (U8)os_strlen ((PS8)parm[ 2 ].value); 2424981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memcpy ((PVOID)&(pSsid->str), 2425981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt (PVOID)parm[ 2 ].value, 2426981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pSsid->len); 2427981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(pSsid->len < MAX_SSID_LEN) 2428981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 2429981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pSsid->str[pSsid->len] = 0; 2430981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 2431981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 2432981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2433981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_ConfigurePeriodicScanChannel (THandle hCuCmd, ConParm_t parm[], U16 nParms) 2434981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 2435981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t *pCuCmd = (CuCmd_t*)hCuCmd; 2436981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TPeriodicChannelEntry *pChannelEnrty = &(pCuCmd->tPeriodicAppScanParams.tChannels[ parm[ 0 ].value ]); 2437981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2438981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pChannelEnrty->eBand = parm[ 1 ].value; 2439981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pChannelEnrty->uChannel = parm[ 2 ].value; 2440981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pChannelEnrty->eScanType = parm[ 3 ].value; 2441981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pChannelEnrty->uMinDwellTimeMs = parm[ 4 ].value;; 2442981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pChannelEnrty->uMaxDwellTimeMs = parm[ 5 ].value; 2443981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pChannelEnrty->uTxPowerLevelDbm = parm[ 6 ].value; 2444981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 2445981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2446981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_ClearPeriodicScanConfiguration (THandle hCuCmd, ConParm_t parm[], U16 nParms) 2447981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 2448981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 2449981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2450981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memset (&(pCuCmd->tPeriodicAppScanParams), 0, sizeof (TPeriodicScanParams)); 2451981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Periodic application scan parameters cleared.\n"); 2452981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 2453981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2454981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_DisplayPeriodicScanConfiguration (THandle hCuCmd, ConParm_t parm[], U16 nParms) 2455981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 2456981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 2457981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 i, j, k; 2458981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2459981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Application Periodic Scan parameters:\n"); 2460981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"RSSI Threshold: %d, SNR Threshold: %d, Report Threshold: %d Number of cycles: %d\n", 2461981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->tPeriodicAppScanParams.iRssiThreshold, pCuCmd->tPeriodicAppScanParams.iSnrThreshold, 2462981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->tPeriodicAppScanParams.uFrameCountReportThreshold, pCuCmd->tPeriodicAppScanParams.uCycleNum); 2463981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CU_CMD_FIND_NAME_ARRAY (i, booleanStr, pCuCmd->tPeriodicAppScanParams.bTerminateOnReport); 2464981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CU_CMD_FIND_NAME_ARRAY (j, bssTypeStr, pCuCmd->tPeriodicAppScanParams.eBssType); 2465981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Terminate on Report: %s, BSS type: %s, Probe Request Number: %d\n", 2466981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt booleanStr[ i ].name, bssTypeStr[ j ].name, pCuCmd->tPeriodicAppScanParams.uProbeRequestNum); 2467981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2468981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"\nIntervals (msec):\n"); 2469981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for (i = 0; i < PERIODIC_SCAN_MAX_INTERVAL_NUM; i++) 2470981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 2471981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"%d ", pCuCmd->tPeriodicAppScanParams.uCycleIntervalMsec[ i ]); 2472981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 2473981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"\n\nSSIDs:\n"); 2474981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for (i = 0; i < (S32)pCuCmd->tPeriodicAppScanParams.uSsidNum; i++) 2475981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 2476981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CU_CMD_FIND_NAME_ARRAY (j, ssidVisabilityStr, pCuCmd->tPeriodicAppScanParams.tDesiredSsid[ i ].eVisability); 2477981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"%s (%s), ", pCuCmd->tPeriodicAppScanParams.tDesiredSsid[ i ].tSsid.str, 2478981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ssidVisabilityStr[ j ].name); 2479981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 2480653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"\n\nSSID List Filter Enabled: %d\n", pCuCmd->tPeriodicAppScanParams.uSsidListFilterEnabled ); 2481653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt 2482981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"\n\nChannels:\n"); 2483981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"%-15s %-10s %-20s %-15s %-15s %-20s\n", 2484981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt (PS8)"Band", (PS8)"Channel", (PS8)"Scan type", (PS8)"Min dwell time", (PS8)"Max dwell time", (PS8)"Power level (dBm*10)"); 2485981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"----------------------------------------------------------------------------------------------------\n"); 2486981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for (i = 0; i < (S32)pCuCmd->tPeriodicAppScanParams.uChannelNum; i++) 2487981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 2488981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CU_CMD_FIND_NAME_ARRAY (j, band2Str, pCuCmd->tPeriodicAppScanParams.tChannels[ i ].eBand); 2489981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CU_CMD_FIND_NAME_ARRAY (k, scanType2Str, pCuCmd->tPeriodicAppScanParams.tChannels[ i ].eScanType); 2490981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"%-15s %-10d %-20s %-15d %-15d %-20d\n", 2491981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt band2Str[ j ].name, 2492981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->tPeriodicAppScanParams.tChannels[ i ].uChannel, 2493981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt scanType2Str[ k ].name, 2494981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->tPeriodicAppScanParams.tChannels[ i ].uMinDwellTimeMs, 2495981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->tPeriodicAppScanParams.tChannels[ i ].uMaxDwellTimeMs, 2496981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->tPeriodicAppScanParams.tChannels[ i ].uTxPowerLevelDbm); 2497981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 2498981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"\n"); 2499981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 2500981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2501981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_StartPeriodicScan (THandle hCuCmd, ConParm_t parm[], U16 nParms) 2502981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 2503981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 2504981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2505981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_SetBuffer(pCuCmd->hCuCommon, SCAN_CNCN_START_PERIODIC_SCAN, 2506981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &(pCuCmd->tPeriodicAppScanParams), sizeof(TPeriodicScanParams))) 2507981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 2508981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 2509981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 2510981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Periodic application scan started.\n"); 2511981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 2512981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2513981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_StopPeriodicScan (THandle hCuCmd, ConParm_t parm[], U16 nParms) 2514981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 2515981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 2516981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2517981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_SetBuffer(pCuCmd->hCuCommon, SCAN_CNCN_STOP_PERIODIC_SCAN, 2518981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt NULL, 0)) 2519981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 2520981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 2521981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 2522981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Periodic application scan stopped.\n"); 2523981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 2524981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2525981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_ConfigScanPolicy(THandle hCuCmd, ConParm_t parm[], U16 nParms) 2526981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 2527981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 2528981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2529981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->scanPolicy.normalScanInterval = parm[ 0 ].value; 2530981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->scanPolicy.deterioratingScanInterval = parm[ 1 ].value; 2531981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->scanPolicy.maxTrackFailures = (U8)(parm[ 2 ].value); 2532981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->scanPolicy.BSSListSize = (U8)(parm[ 3 ].value); 2533981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->scanPolicy.BSSNumberToStartDiscovery = (U8)(parm[ 4 ].value); 2534981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->scanPolicy.numOfBands = (U8)(parm[ 5 ].value); 2535981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 2536981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2537981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_ConfigScanBand(THandle hCuCmd, ConParm_t parm[], U16 nParms) 2538981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 2539981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 2540981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt scan_bandPolicy_t* pBandPolicy = &(pCuCmd->scanPolicy.bandScanPolicy[ parm [ 0 ].value ]); 2541981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2542981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->band = parm[ 1 ].value; 2543981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->rxRSSIThreshold = (S8)(parm[ 2 ].value); 2544981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->numOfChannlesForDiscovery = (U8)(parm[ 3 ].value); 2545981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->numOfChannles = (U8)(parm[ 4 ].value); 2546981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 2547981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2548981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_ConfigScanBandChannel(THandle hCuCmd, ConParm_t parm[], U16 nParms) 2549981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 2550981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 2551981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt scan_bandPolicy_t* pBandPolicy = &(pCuCmd->scanPolicy.bandScanPolicy[ parm [ 0 ].value ]); 2552981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2553981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->channelList[ parm[ 1 ].value ] = (U8)(parm[ 2 ].value); 2554981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 2555981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2556981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_ConfigScanBandTrack(THandle hCuCmd, ConParm_t parm[], U16 nParms) 2557981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 2558981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 2559981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt scan_bandPolicy_t* pBandPolicy = &(pCuCmd->scanPolicy.bandScanPolicy[ parm [ 0 ].value ]); 2560981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2561981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (parm[6].value < parm[7].value) 2562981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 2563981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Max Dwell Time must be larger than or equal to Min Dwell Time...\n"); 2564981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 2565981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 2566981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2567981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->trackingMethod.scanType = parm[ 1 ].value; 2568981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2569981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt switch (pBandPolicy->trackingMethod.scanType) 2570981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 2571981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case SCAN_TYPE_NORMAL_ACTIVE: 2572981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case SCAN_TYPE_NORMAL_PASSIVE: 2573981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->trackingMethod.method.basicMethodParams.maxChannelDwellTime = (parm[ 6 ].value); 2574981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->trackingMethod.method.basicMethodParams.minChannelDwellTime = (parm[ 7 ].value); 2575981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->trackingMethod.method.basicMethodParams.earlyTerminationEvent = parm[ 2 ].value; 2576981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->trackingMethod.method.basicMethodParams.ETMaxNumberOfApFrames = (U8)(parm[ 3 ].value); 2577981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->trackingMethod.method.basicMethodParams.probReqParams.bitrate = parm[ 9 ].value; 2578981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->trackingMethod.method.basicMethodParams.probReqParams.numOfProbeReqs = (U8)(parm[ 8 ].value); 2579981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->trackingMethod.method.basicMethodParams.probReqParams.txPowerDbm = (U8)(parm[ 10 ].value); 2580981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 2581981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2582981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case SCAN_TYPE_TRIGGERED_ACTIVE: 2583981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case SCAN_TYPE_TRIGGERED_PASSIVE: 2584981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* Check if valid TID */ 2585981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (((parm[ 4 ].value) > 7) && ((parm[ 4 ].value) != 255)) 2586981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 2587981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf (CU_MSG_INFO2, (PS8)"ERROR Tid (AC) should be 0..7 or 255 instead = %d (using default = 255)\n",(parm[ 4 ].value)); 2588981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt parm[ 4 ].value = 255; 2589981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 2590981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2591981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->trackingMethod.method.TidTriggerdMethodParams.triggeringTid = (U8)(parm[ 4 ].value); 2592981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->trackingMethod.method.TidTriggerdMethodParams.basicMethodParams.maxChannelDwellTime = (parm[ 6 ].value); 2593981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->trackingMethod.method.TidTriggerdMethodParams.basicMethodParams.minChannelDwellTime = (parm[ 7 ].value); 2594981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->trackingMethod.method.TidTriggerdMethodParams.basicMethodParams.earlyTerminationEvent = parm[ 2 ].value; 2595981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->trackingMethod.method.TidTriggerdMethodParams.basicMethodParams.ETMaxNumberOfApFrames = (U8)(parm[ 3 ].value); 2596981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->trackingMethod.method.TidTriggerdMethodParams.basicMethodParams.probReqParams.bitrate = parm[ 9 ].value; 2597981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->trackingMethod.method.TidTriggerdMethodParams.basicMethodParams.probReqParams.numOfProbeReqs = (U8)(parm[ 8 ].value); 2598981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->trackingMethod.method.TidTriggerdMethodParams.basicMethodParams.probReqParams.txPowerDbm = (U8)(parm[ 10 ].value); 2599981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 2600981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2601981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case SCAN_TYPE_SPS: 2602981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->trackingMethod.method.spsMethodParams.earlyTerminationEvent = parm[ 2 ].value; 2603981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->trackingMethod.method.spsMethodParams.ETMaxNumberOfApFrames = (U8)(parm[ 3 ].value); 2604981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->trackingMethod.method.spsMethodParams.scanDuration = parm[ 5 ].value; 2605981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 2606981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2607981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt default: 2608981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->trackingMethod.scanType = SCAN_TYPE_NO_SCAN; 2609981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 2610981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 2611981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 2612981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2613981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_ConfigScanBandDiscover(THandle hCuCmd, ConParm_t parm[], U16 nParms) 2614981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 2615981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 2616981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt scan_bandPolicy_t* pBandPolicy = &(pCuCmd->scanPolicy.bandScanPolicy[ parm [ 0 ].value ]); 2617981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2618981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (parm[6].value < parm[7].value) 2619981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 2620981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Max Dwell Time must be larger than or equal to Min Dwell Time...\n"); 2621981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 2622981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 2623981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2624981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->discoveryMethod.scanType = parm[ 1 ].value; 2625981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2626981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt switch (pBandPolicy->discoveryMethod.scanType) 2627981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 2628981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case SCAN_TYPE_NORMAL_ACTIVE: 2629981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case SCAN_TYPE_NORMAL_PASSIVE: 2630981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->discoveryMethod.method.basicMethodParams.maxChannelDwellTime = (parm[ 6 ].value); 2631981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->discoveryMethod.method.basicMethodParams.minChannelDwellTime = (parm[ 7 ].value); 2632981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->discoveryMethod.method.basicMethodParams.earlyTerminationEvent = parm[ 2 ].value; 2633981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->discoveryMethod.method.basicMethodParams.ETMaxNumberOfApFrames = (U8)(parm[ 3 ].value); 2634981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->discoveryMethod.method.basicMethodParams.probReqParams.bitrate = parm[ 9 ].value; 2635981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->discoveryMethod.method.basicMethodParams.probReqParams.numOfProbeReqs = (U8)(parm[ 8 ].value); 2636981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->discoveryMethod.method.basicMethodParams.probReqParams.txPowerDbm = (U8)(parm[ 10 ].value); 2637981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 2638981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2639981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case SCAN_TYPE_TRIGGERED_ACTIVE: 2640981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case SCAN_TYPE_TRIGGERED_PASSIVE: 2641981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* Check if valid TID */ 2642981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (((parm[ 4 ].value) > 7) && ((parm[ 4 ].value) != 255)) 2643981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 2644981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"ERROR Tid (AC) should be 0..7 or 255 instead = %d (using default = 255)\n",(parm[ 4 ].value)); 2645981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt parm[ 4 ].value = 255; 2646981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 2647981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2648981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->discoveryMethod.method.TidTriggerdMethodParams.triggeringTid = (U8)(parm[ 4 ].value); 2649981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->discoveryMethod.method.TidTriggerdMethodParams.basicMethodParams.maxChannelDwellTime = (parm[ 6 ].value); 2650981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->discoveryMethod.method.TidTriggerdMethodParams.basicMethodParams.minChannelDwellTime = (parm[ 7 ].value); 2651981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->discoveryMethod.method.TidTriggerdMethodParams.basicMethodParams.earlyTerminationEvent = parm[ 2 ].value; 2652981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->discoveryMethod.method.TidTriggerdMethodParams.basicMethodParams.ETMaxNumberOfApFrames = (U8)(parm[ 3 ].value); 2653981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->discoveryMethod.method.TidTriggerdMethodParams.basicMethodParams.probReqParams.bitrate = parm[ 9 ].value; 2654981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->discoveryMethod.method.TidTriggerdMethodParams.basicMethodParams.probReqParams.numOfProbeReqs = (U8)(parm[ 8 ].value); 2655981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->discoveryMethod.method.TidTriggerdMethodParams.basicMethodParams.probReqParams.txPowerDbm = (U8)(parm[ 10 ].value); 2656981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 2657981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2658981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case SCAN_TYPE_SPS: 2659981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->discoveryMethod.method.spsMethodParams.earlyTerminationEvent = parm[ 2 ].value; 2660981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->discoveryMethod.method.spsMethodParams.ETMaxNumberOfApFrames = (U8)(parm[ 3 ].value); 2661981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->discoveryMethod.method.spsMethodParams.scanDuration = parm[ 5 ].value; 2662981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 2663981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2664981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt default: 2665981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->discoveryMethod.scanType = SCAN_TYPE_NO_SCAN; 2666981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 2667981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 2668981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 2669981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2670981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_ConfigScanBandImmed(THandle hCuCmd, ConParm_t parm[], U16 nParms) 2671981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 2672981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 2673981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt scan_bandPolicy_t* pBandPolicy = &(pCuCmd->scanPolicy.bandScanPolicy[ parm [ 0 ].value ]); 2674981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2675981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (parm[6].value < parm[7].value) 2676981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 2677981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Max Dwell Time must be larger than or equal to Min Dwell Time...\n"); 2678981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 2679981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 2680981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2681981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->immediateScanMethod.scanType = parm[ 1 ].value; 2682981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2683981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt switch (pBandPolicy->immediateScanMethod.scanType) 2684981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 2685981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case SCAN_TYPE_NORMAL_ACTIVE: 2686981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case SCAN_TYPE_NORMAL_PASSIVE: 2687981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->immediateScanMethod.method.basicMethodParams.maxChannelDwellTime = (parm[ 6 ].value); 2688981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->immediateScanMethod.method.basicMethodParams.minChannelDwellTime = (parm[ 7 ].value); 2689981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->immediateScanMethod.method.basicMethodParams.earlyTerminationEvent = parm[ 2 ].value; 2690981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->immediateScanMethod.method.basicMethodParams.ETMaxNumberOfApFrames = (U8)(parm[ 3 ].value); 2691981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->immediateScanMethod.method.basicMethodParams.probReqParams.bitrate = parm[ 9 ].value; 2692981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->immediateScanMethod.method.basicMethodParams.probReqParams.numOfProbeReqs = (U8)(parm[ 8 ].value); 2693981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->immediateScanMethod.method.basicMethodParams.probReqParams.txPowerDbm = (U8)(parm[ 10 ].value); 2694981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 2695981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2696981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case SCAN_TYPE_TRIGGERED_ACTIVE: 2697981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case SCAN_TYPE_TRIGGERED_PASSIVE: 2698981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* Check if valid TID */ 2699981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (((parm[ 4 ].value) > 7) && ((parm[ 4 ].value) != 255)) 2700981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 2701981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf (CU_MSG_INFO2, (PS8)"ERROR Tid (AC) should be 0..7 or 255 instead = %d (using default = 255)\n",(parm[ 4 ].value)); 2702981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt parm[ 4 ].value = 255; 2703981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 2704981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2705981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->immediateScanMethod.method.TidTriggerdMethodParams.triggeringTid = (U8)(parm[ 4 ].value); 2706981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->immediateScanMethod.method.TidTriggerdMethodParams.basicMethodParams.maxChannelDwellTime = (parm[ 6 ].value); 2707981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->immediateScanMethod.method.TidTriggerdMethodParams.basicMethodParams.minChannelDwellTime = (parm[ 7 ].value); 2708981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->immediateScanMethod.method.TidTriggerdMethodParams.basicMethodParams.earlyTerminationEvent = parm[ 2 ].value; 2709981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->immediateScanMethod.method.TidTriggerdMethodParams.basicMethodParams.ETMaxNumberOfApFrames = (U8)(parm[ 3 ].value); 2710981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->immediateScanMethod.method.TidTriggerdMethodParams.basicMethodParams.probReqParams.bitrate = parm[ 9 ].value; 2711981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->immediateScanMethod.method.TidTriggerdMethodParams.basicMethodParams.probReqParams.numOfProbeReqs = (U8)(parm[ 8 ].value); 2712981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->immediateScanMethod.method.TidTriggerdMethodParams.basicMethodParams.probReqParams.txPowerDbm = (U8)(parm[ 10 ].value); 2713981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 2714981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2715981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case SCAN_TYPE_SPS: 2716981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->immediateScanMethod.method.spsMethodParams.earlyTerminationEvent = parm[ 2 ].value; 2717981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->immediateScanMethod.method.spsMethodParams.ETMaxNumberOfApFrames = (U8)(parm[ 3 ].value); 2718981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->immediateScanMethod.method.spsMethodParams.scanDuration = parm[ 5 ].value; 2719981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 2720981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2721981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt default: 2722981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pBandPolicy->immediateScanMethod.scanType = SCAN_TYPE_NO_SCAN; 2723981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 2724981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 2725981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 2726981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2727981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_DisplayScanPolicy(THandle hCuCmd, ConParm_t parm[], U16 nParms) 2728981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 2729981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 2730981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 i; 2731981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2732981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Scan Policy:\n"); 2733981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Normal scan interval: %d, deteriorating scan interval: %d\n", 2734981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->scanPolicy.normalScanInterval, pCuCmd->scanPolicy.deterioratingScanInterval); 2735981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Max track attempt failures: %d\n", pCuCmd->scanPolicy.maxTrackFailures); 2736981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"BSS list size: %d, number of BSSes to start discovery: %d\n", 2737981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pCuCmd->scanPolicy.BSSListSize, pCuCmd->scanPolicy.BSSNumberToStartDiscovery); 2738981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Number of configured bands: %d\n", pCuCmd->scanPolicy.numOfBands); 2739981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for ( i = 0; i < pCuCmd->scanPolicy.numOfBands; i++ ) 2740981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 2741981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_PrintScanBand(&(pCuCmd->scanPolicy.bandScanPolicy[ i ])); 2742981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 2743981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 2744981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2745981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_ClearScanPolicy(THandle hCuCmd, ConParm_t parm[], U16 nParms) 2746981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 2747981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 2748981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2749981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memset( &pCuCmd->scanPolicy, 0, sizeof(scan_Policy_t) ); 2750981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Scan policy cleared.\n"); 2751981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 2752981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2753981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_SetScanPolicy(THandle hCuCmd, ConParm_t parm[], U16 nParms) 2754981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 2755981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 2756981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2757981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_SetBuffer(pCuCmd->hCuCommon, TIWLN_802_11_SCAN_POLICY_PARAM_SET, 2758981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &pCuCmd->scanPolicy, sizeof(scan_Policy_t))) return; 2759981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Scan policy stored.\n"); 2760981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 2761981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2762981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_GetScanBssList(THandle hCuCmd, ConParm_t parm[], U16 nParms) 2763981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 2764981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 2765981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt bssList_t list; 2766981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 i; 2767981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2768981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetSetBuffer(pCuCmd->hCuCommon, TIWLN_802_11_SCAN_BSS_LIST_GET, 2769981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &list, sizeof(bssList_t))) return; 2770981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2771981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* os_error_printf list */ 2772981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"BSS List:\n"); 2773981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"%-17s %-7s %-6s %-4s %-10s\n", (PS8)"BSSID", (PS8)"Band", (PS8)"Channel", (PS8)"RSSI", (PS8)"Neighbor?"); 2774981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"-----------------------------------------------------\n"); 2775981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for ( i = 0; i < list.numOfEntries; i++ ) 2776981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 2777981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"%02x.%02x.%02x.%02x.%02x.%02x %s %-7d %-4d %s\n", 2778981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt list.BSSList[i].BSSID[0], list.BSSList[i].BSSID[1], list.BSSList[i].BSSID[2], list.BSSList[i].BSSID[3], list.BSSList[i].BSSID[4], list.BSSList[i].BSSID[5], 2779981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt band2Str[ list.BSSList[ i ].band ].name, 2780981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt list.BSSList[ i ].channel, list.BSSList[ i ].RSSI, 2781981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt (TRUE == list.BSSList[ i ].bNeighborAP ? (PS8)"Yes" : (PS8)"No") ); 2782981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 2783981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 2784981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2785981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_RoamingEnable(THandle hCuCmd, ConParm_t parm[], U16 nParms) 2786981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 2787981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 2788981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt roamingMngrConfigParams_t roamingMngrConfigParams; 2789981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2790981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetBuffer(pCuCmd->hCuCommon, ROAMING_MNGR_APPLICATION_CONFIGURATION, 2791981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &roamingMngrConfigParams, sizeof(roamingMngrConfigParams_t))) return; 2792981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt roamingMngrConfigParams.roamingMngrConfig.enableDisable = ROAMING_ENABLED; 2793981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_SetBuffer(pCuCmd->hCuCommon, ROAMING_MNGR_APPLICATION_CONFIGURATION, 2794981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &roamingMngrConfigParams, sizeof(roamingMngrConfigParams_t)) ) return; 2795981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Roaming is enabled \n"); 2796981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 2797981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2798981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_RoamingDisable(THandle hCuCmd, ConParm_t parm[], U16 nParms) 2799981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 2800981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 2801981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt roamingMngrConfigParams_t roamingMngrConfigParams; 2802981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2803981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetBuffer(pCuCmd->hCuCommon, ROAMING_MNGR_APPLICATION_CONFIGURATION, 2804981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &roamingMngrConfigParams, sizeof(roamingMngrConfigParams_t)) ) return; 2805981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt roamingMngrConfigParams.roamingMngrConfig.enableDisable = ROAMING_DISABLED; 2806981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_SetBuffer (pCuCmd->hCuCommon, ROAMING_MNGR_APPLICATION_CONFIGURATION, 2807981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &roamingMngrConfigParams, sizeof(roamingMngrConfigParams_t)) ) return; 2808981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Roaming is disabled \n"); 2809981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 2810981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2811981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_RoamingLowPassFilter(THandle hCuCmd, ConParm_t parm[], U16 nParms) 2812981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 2813981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 2814981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt roamingMngrConfigParams_t roamingMngrConfigParams; 2815981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2816981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetBuffer (pCuCmd->hCuCommon, ROAMING_MNGR_APPLICATION_CONFIGURATION, 2817981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &roamingMngrConfigParams, sizeof(roamingMngrConfigParams_t)) ) return; 2818981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms != 0 ) 2819981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 2820981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt roamingMngrConfigParams.roamingMngrConfig.lowPassFilterRoamingAttempt = (U16) parm[0].value; 2821981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_SetBuffer (pCuCmd->hCuCommon, ROAMING_MNGR_APPLICATION_CONFIGURATION, 2822981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &roamingMngrConfigParams, sizeof(roamingMngrConfigParams_t)) ) return; 2823981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 2824981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Time in sec to wait before low quality Roaming Triggers, \n lowPassFilterRoamingAttempt = %d sec\n", 2825981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt roamingMngrConfigParams.roamingMngrConfig.lowPassFilterRoamingAttempt); 2826981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 2827981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2828981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_RoamingQualityIndicator(THandle hCuCmd, ConParm_t parm[], U16 nParms) 2829981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 2830981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 2831981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt roamingMngrConfigParams_t roamingMngrConfigParams; 2832981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2833981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetBuffer (pCuCmd->hCuCommon, ROAMING_MNGR_APPLICATION_CONFIGURATION, 2834981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &roamingMngrConfigParams, sizeof(roamingMngrConfigParams_t)) ) return; 2835981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms != 0 ) 2836981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 2837981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt roamingMngrConfigParams.roamingMngrConfig.apQualityThreshold = (S8) parm[0].value; 2838981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_SetBuffer (pCuCmd->hCuCommon, ROAMING_MNGR_APPLICATION_CONFIGURATION, 2839981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &roamingMngrConfigParams, sizeof(roamingMngrConfigParams_t)) ) return; 2840981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 2841981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Quality indicator (RSSI) to be used when comparing AP List matching quality, \n apQualityThreshold = %d \n", 2842981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt (roamingMngrConfigParams.roamingMngrConfig.apQualityThreshold)); 2843981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 2844981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2845981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_RoamingDataRetryThreshold(THandle hCuCmd, ConParm_t parm[], U16 nParms) 2846981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 2847981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 2848981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt roamingMngrConfigParams_t roamingMngrConfigParams; 2849981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2850981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetBuffer (pCuCmd->hCuCommon, ROAMING_MNGR_APPLICATION_CONFIGURATION, 2851981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &roamingMngrConfigParams, sizeof(roamingMngrConfigParams_t)) ) return; 2852981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms != 0 ) 2853981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 2854981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt roamingMngrConfigParams.roamingMngrThresholdsConfig.dataRetryThreshold = (S8) parm[0].value; 2855981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_SetBuffer (pCuCmd->hCuCommon, ROAMING_MNGR_APPLICATION_CONFIGURATION, 2856981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &roamingMngrConfigParams, sizeof(roamingMngrConfigParams_t)) ) return; 2857981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 2858981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"dataRetryThreshold = %d \n", 2859981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt roamingMngrConfigParams.roamingMngrThresholdsConfig.dataRetryThreshold); 2860981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2861981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 2862981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_RoamingNumExpectedTbttForBSSLoss(THandle hCuCmd, ConParm_t parm[], U16 nParms) 2863981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 2864981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 2865981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt roamingMngrConfigParams_t roamingMngrConfigParams; 2866981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2867981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetBuffer (pCuCmd->hCuCommon, ROAMING_MNGR_APPLICATION_CONFIGURATION, 2868981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &roamingMngrConfigParams, sizeof(roamingMngrConfigParams_t)) ) return; 2869981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms != 0 ) 2870981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 2871981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt roamingMngrConfigParams.roamingMngrThresholdsConfig.numExpectedTbttForBSSLoss = (S8) parm[0].value; 2872981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_SetBuffer (pCuCmd->hCuCommon, ROAMING_MNGR_APPLICATION_CONFIGURATION, 2873981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &roamingMngrConfigParams, sizeof(roamingMngrConfigParams_t)) ) return; 2874981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 2875981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Number of expected TBTTs for BSS Loss event, \n numExpectedTbttForBSSLoss = %d \n", 2876981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt roamingMngrConfigParams.roamingMngrThresholdsConfig.numExpectedTbttForBSSLoss); 2877981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2878981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 2879981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_RoamingTxRateThreshold(THandle hCuCmd, ConParm_t parm[], U16 nParms) 2880981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 2881981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 2882981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt roamingMngrConfigParams_t roamingMngrConfigParams; 2883981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2884981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetBuffer (pCuCmd->hCuCommon, ROAMING_MNGR_APPLICATION_CONFIGURATION, 2885981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &roamingMngrConfigParams, sizeof(roamingMngrConfigParams_t)) ) return; 2886981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms != 0 ) 2887981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 2888981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt roamingMngrConfigParams.roamingMngrThresholdsConfig.txRateThreshold = (S8 )parm[0].value; 2889981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_SetBuffer (pCuCmd->hCuCommon, ROAMING_MNGR_APPLICATION_CONFIGURATION, 2890981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &roamingMngrConfigParams, sizeof(roamingMngrConfigParams_t)) ) return; 2891981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 2892981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"txRateThreshold = %d \n", 2893981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt roamingMngrConfigParams.roamingMngrThresholdsConfig.txRateThreshold); 2894981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2895981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 2896981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2897981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_RoamingLowRssiThreshold(THandle hCuCmd, ConParm_t parm[], U16 nParms) 2898981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 2899981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 2900981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt roamingMngrConfigParams_t roamingMngrConfigParams; 2901981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2902981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetBuffer (pCuCmd->hCuCommon, ROAMING_MNGR_APPLICATION_CONFIGURATION, 2903981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &roamingMngrConfigParams, sizeof(roamingMngrConfigParams_t)) ) return; 2904981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms != 0 ) 2905981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 2906981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt roamingMngrConfigParams.roamingMngrThresholdsConfig.lowRssiThreshold = (S8) parm[0].value; 2907981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_SetBuffer (pCuCmd->hCuCommon, ROAMING_MNGR_APPLICATION_CONFIGURATION, 2908981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &roamingMngrConfigParams, sizeof(roamingMngrConfigParams_t)) ) return; 2909981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 2910981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"lowRssiThreshold = %d \n", 2911981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt (roamingMngrConfigParams.roamingMngrThresholdsConfig.lowRssiThreshold)); 2912981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2913981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 2914981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2915981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_RoamingLowSnrThreshold(THandle hCuCmd, ConParm_t parm[], U16 nParms) 2916981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 2917981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 2918981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt roamingMngrConfigParams_t roamingMngrConfigParams; 2919981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2920981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetBuffer (pCuCmd->hCuCommon, ROAMING_MNGR_APPLICATION_CONFIGURATION, 2921981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &roamingMngrConfigParams, sizeof(roamingMngrConfigParams_t)) ) return; 2922981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms != 0 ) 2923981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 2924981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt roamingMngrConfigParams.roamingMngrThresholdsConfig.lowSnrThreshold = (S8)parm[0].value; 2925981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_SetBuffer (pCuCmd->hCuCommon, ROAMING_MNGR_APPLICATION_CONFIGURATION, 2926981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &roamingMngrConfigParams, sizeof(roamingMngrConfigParams_t)) ) return; 2927981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 2928981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"lowSnrThreshold = %d \n", roamingMngrConfigParams.roamingMngrThresholdsConfig.lowSnrThreshold); 2929981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 2930981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2931981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_RoamingLowQualityForBackgroungScanCondition(THandle hCuCmd, ConParm_t parm[], U16 nParms) 2932981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 2933981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 2934981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt roamingMngrConfigParams_t roamingMngrConfigParams; 2935981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2936981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetBuffer (pCuCmd->hCuCommon, ROAMING_MNGR_APPLICATION_CONFIGURATION, 2937981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &roamingMngrConfigParams, sizeof(roamingMngrConfigParams_t)) ) return; 2938981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms != 0 ) 2939981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 2940981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt roamingMngrConfigParams.roamingMngrThresholdsConfig.lowQualityForBackgroungScanCondition = (S8) parm[0].value; 2941981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_SetBuffer (pCuCmd->hCuCommon, ROAMING_MNGR_APPLICATION_CONFIGURATION, 2942981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &roamingMngrConfigParams, sizeof(roamingMngrConfigParams_t)) ) return; 2943981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 2944981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Indicator used to increase the background scan period when quality is low, \n lowQualityForBackgroungScanCondition = %d \n", 2945981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt (roamingMngrConfigParams.roamingMngrThresholdsConfig.lowQualityForBackgroungScanCondition)); 2946981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2947981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 2948981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2949981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_RoamingNormalQualityForBackgroungScanCondition(THandle hCuCmd, ConParm_t parm[], U16 nParms) 2950981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 2951981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 2952981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt roamingMngrConfigParams_t roamingMngrConfigParams; 2953981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2954981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetBuffer (pCuCmd->hCuCommon, ROAMING_MNGR_APPLICATION_CONFIGURATION, 2955981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &roamingMngrConfigParams, sizeof(roamingMngrConfigParams_t)) ) return; 2956981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms != 0 ) 2957981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 2958981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt roamingMngrConfigParams.roamingMngrThresholdsConfig.normalQualityForBackgroungScanCondition = (S8) parm[0].value; 2959981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_SetBuffer (pCuCmd->hCuCommon, ROAMING_MNGR_APPLICATION_CONFIGURATION, 2960981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &roamingMngrConfigParams, sizeof(roamingMngrConfigParams_t)) ) return; 2961981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 2962981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Indicator used to reduce the background scan period when quality is normal, \n normalQualityForBackgroungScanCondition = %d \n", 2963981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt (roamingMngrConfigParams.roamingMngrThresholdsConfig.normalQualityForBackgroungScanCondition)); 2964981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2965981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 2966981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2967981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_RoamingGetConfParams(THandle hCuCmd, ConParm_t parm[], U16 nParms) 2968981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 2969981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 2970981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt roamingMngrConfigParams_t roamingMngrConfigParams; 2971981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2972981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetBuffer (pCuCmd->hCuCommon, ROAMING_MNGR_APPLICATION_CONFIGURATION, 2973981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &roamingMngrConfigParams, sizeof(roamingMngrConfigParams_t)) ) return; 2974981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2975981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Roaming is: %s \n", roamingMngrConfigParams.roamingMngrConfig.enableDisable ? "Enabled" : "Disabled\n"); 2976981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" lowPassFilterRoamingAttempt = %d sec,\n apQualityThreshold = %d\n", 2977981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt roamingMngrConfigParams.roamingMngrConfig.lowPassFilterRoamingAttempt, 2978981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt roamingMngrConfigParams.roamingMngrConfig.apQualityThreshold); 2979981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" Roaming Triggers' thresholds are: \n"); 2980981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" dataRetryThreshold = %d,\n lowQualityForBackgroungScanCondition = %d,\n lowRssiThreshold = %d,\n lowSnrThreshold = %d,\n normalQualityForBackgroungScanCondition = %d,\n numExpectedTbttForBSSLoss = %d,\n txRateThreshold = %d \n", 2981981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt roamingMngrConfigParams.roamingMngrThresholdsConfig.dataRetryThreshold, 2982981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt roamingMngrConfigParams.roamingMngrThresholdsConfig.lowQualityForBackgroungScanCondition, 2983981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt roamingMngrConfigParams.roamingMngrThresholdsConfig.lowRssiThreshold, 2984981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt roamingMngrConfigParams.roamingMngrThresholdsConfig.lowSnrThreshold, 2985981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt roamingMngrConfigParams.roamingMngrThresholdsConfig.normalQualityForBackgroungScanCondition, 2986981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt roamingMngrConfigParams.roamingMngrThresholdsConfig.numExpectedTbttForBSSLoss, 2987981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt roamingMngrConfigParams.roamingMngrThresholdsConfig.txRateThreshold); 2988981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 2989981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2990653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry ShmidtVOID CuCmd_CurrBssUserDefinedTrigger(THandle hCuCmd, ConParm_t parm[], U16 nParms) 2991981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 2992981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t *pCuCmd = (CuCmd_t*)hCuCmd; 2993981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TUserDefinedQualityTrigger userTrigger; 2994981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2995981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (nParms == 0) 2996981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 2997981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 2998981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt userTrigger.uIndex = (U8)parm[0].value; 2999981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt userTrigger.iThreshold = (U16)parm[1].value; 3000981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt userTrigger.uPacing = (U16)parm[2].value; 3001981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt userTrigger.uMetric = (U8)parm[3].value; 3002981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt userTrigger.uType = (U8)parm[4].value; 3003981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt userTrigger.uDirection = (U8)parm[5].value; 3004981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt userTrigger.uHystersis = (U8)parm[6].value; 3005981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt userTrigger.uEnable = (U8)parm[7].value; 3006981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3007653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt userTrigger.uClientID = 0; /* '0' means that external application with no clientId has registered for the event */ 3008653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt 3009653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt if (OK != CuCommon_SetBuffer (pCuCmd->hCuCommon, CURR_BSS_REGISTER_LINK_QUALITY_EVENT_PARAM, 3010981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &userTrigger, sizeof(TUserDefinedQualityTrigger)) ) 3011981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 3012981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3013981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"CuCmd_RoamingUserDefinedTrigger: \n \ 3014981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt index = %d, \n \ 3015981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt threshold = %d, \n \ 3016981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pacing = %d, \n \ 3017981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt metric = %d, \n \ 3018981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt type = %d, \n \ 3019981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt direction = %d, \n \ 3020981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt hystersis = %d, \n \ 3021981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt enable = %d \n", 3022981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt userTrigger.uIndex, 3023981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt userTrigger.iThreshold, 3024981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt userTrigger.uPacing, 3025981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt userTrigger.uMetric, 3026981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt userTrigger.uType, 3027981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt userTrigger.uDirection, 3028981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt userTrigger.uHystersis, 3029981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt userTrigger.uEnable); 3030981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 3031981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3032981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_AddTspec(THandle hCuCmd, ConParm_t parm[], U16 nParms) 3033981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 3034981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 3035981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt OS_802_11_QOS_TSPEC_PARAMS TspecParams; 3036981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3037981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TspecParams.uUserPriority = parm[0].value; 3038981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TspecParams.uNominalMSDUsize = parm[1].value; 3039981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TspecParams.uMeanDataRate = parm[2].value; 3040981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TspecParams.uMinimumPHYRate = parm[3].value * 1000 * 1000; 3041981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TspecParams.uSurplusBandwidthAllowance = parm[4].value << 13; 3042981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TspecParams.uAPSDFlag = parm[5].value; 3043981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TspecParams.uMinimumServiceInterval = parm[6].value; 3044981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TspecParams.uMaximumServiceInterval = parm[7].value; 3045981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3046981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_SetBuffer(pCuCmd->hCuCommon, TIWLN_802_11_ADD_TSPEC, 3047981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &TspecParams, sizeof(OS_802_11_QOS_TSPEC_PARAMS))) return; 3048981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3049981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"TSpec request sent to driver...\n uUserPriority = %d\n uNominalMSDUsize = %d\n uMeanDataRate = %d\n uMinimumPHYRate = %d\n uSurplusBandwidthAllowance = %d\n uAPSDFlag = %d uMinimumServiceInterval = %d uMaximumServiceInterval = %d\n", 3050981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt parm[0].value, 3051981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt parm[1].value, 3052981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt parm[2].value, 3053981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt parm[3].value, 3054981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt parm[4].value, 3055981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt parm[5].value, 3056981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt parm[6].value, 3057981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt parm[7].value); 3058981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3059981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 3060981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3061981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_GetTspec(THandle hCuCmd, ConParm_t parm[], U16 nParms) 3062981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 3063981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 3064981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt OS_802_11_QOS_TSPEC_PARAMS TspecParams; 3065981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3066981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TspecParams.uUserPriority = parm[0].value; 3067981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3068981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetSetBuffer(pCuCmd->hCuCommon, TIWLN_802_11_GET_TSPEC_PARAMS, 3069981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &TspecParams, sizeof(OS_802_11_QOS_TSPEC_PARAMS))) return; 3070981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3071981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"TSpec parameters retrieved:\nuUserPriority = %d\nuNominalMSDUsize = %d\nuMeanDataRate = %d\nuMinimumPHYRate = %d\nuSurplusBandwidthAllowance = %d\nuUAPSD_Flag = %d\nuMinimumServiceInterval = %d\nuMaximumServiceInterval = %d\nuMediumTime = %d\n", 3072981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TspecParams.uUserPriority, 3073981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TspecParams.uNominalMSDUsize, 3074981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TspecParams.uMeanDataRate, 3075981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TspecParams.uMinimumPHYRate, 3076981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TspecParams.uSurplusBandwidthAllowance, 3077981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TspecParams.uAPSDFlag, 3078981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TspecParams.uMinimumServiceInterval, 3079981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TspecParams.uMaximumServiceInterval, 3080981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TspecParams.uMediumTime); 3081981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 3082981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3083981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_DeleteTspec(THandle hCuCmd, ConParm_t parm[], U16 nParms) 3084981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 3085981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 3086981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt OS_802_11_QOS_DELETE_TSPEC_PARAMS TspecParams; 3087981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3088981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TspecParams.uUserPriority = parm[0].value; 3089981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TspecParams.uReasonCode = parm[1].value; 3090981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3091981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_SetBuffer(pCuCmd->hCuCommon, TIWLN_802_11_DELETE_TSPEC, 3092981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &TspecParams, sizeof(OS_802_11_QOS_TSPEC_PARAMS))) return; 3093981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3094981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"TSPEC Delete request sent to driver...\n uUserPriority = %d\n uReasonCode = %d\n", 3095981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TspecParams.uUserPriority, 3096981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TspecParams.uReasonCode); 3097981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 3098981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3099981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_GetApQosParams(THandle hCuCmd, ConParm_t parm[], U16 nParms) 3100981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 3101981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 3102981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt OS_802_11_AC_QOS_PARAMS AcQosParams; 3103981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 i = 0; 3104981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3105981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* test if we can get the AC QOS Params */ 3106981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt AcQosParams.uAC = i; 3107981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetSetBuffer(pCuCmd->hCuCommon, TIWLN_802_11_GET_AP_QOS_PARAMS, 3108981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &AcQosParams, sizeof(AcQosParams))) return; 3109981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3110981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"AP QOS Parameters:\n"); 3111981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"+----+-------------+----------+-----------+-----------+-----------+\n"); 3112981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"| AC | AdmCtrlFlag | AIFS | CwMin | CwMax | TXOPLimit |\n"); 3113981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"+----+-------------+----------+-----------+-----------+-----------+\n"); 3114981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"| %2d | %11d | %8d | %9d | %9d | %9d |\n", 3115981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt i, 3116981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt AcQosParams.uAssocAdmissionCtrlFlag, 3117981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt AcQosParams.uAIFS, 3118981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt AcQosParams.uCwMin, 3119981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt AcQosParams.uCwMax, 3120981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt AcQosParams.uTXOPLimit); 3121981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3122981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for (i=1; i<4; i++) 3123981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3124981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt AcQosParams.uAC = i; 3125981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetSetBuffer(pCuCmd->hCuCommon, TIWLN_802_11_GET_AP_QOS_PARAMS, 3126981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &AcQosParams, sizeof(AcQosParams))) return; 3127981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3128981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"| %2d | %11d | %8d | %9d | %9d | %9d |\n", 3129981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt i, 3130981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt AcQosParams.uAssocAdmissionCtrlFlag, 3131981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt AcQosParams.uAIFS, 3132981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt AcQosParams.uCwMin, 3133981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt AcQosParams.uCwMax, 3134981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt AcQosParams.uTXOPLimit); 3135981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3136981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"+----+-------------+----------+-----------+-----------+-----------+\n"); 3137981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 3138981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3139981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_GetPsRxStreamingParams(THandle hCuCmd, ConParm_t parm[], U16 nParms) 3140981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 3141981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 3142981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TPsRxStreaming tPsRxStreaming; 3143981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 i = 0; 3144981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3145981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"PS Rx Streaming Parameters:\n"); 3146981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"+-----+--------------+------------+---------+\n"); 3147981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"| TID | StreamPeriod | uTxTimeout | Enabled |\n"); 3148981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"+-----+--------------+------------+---------+\n"); 3149981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3150981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for (i=0; i<8; i++) 3151981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3152981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt tPsRxStreaming.uTid = i; 3153981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetSetBuffer(pCuCmd->hCuCommon, QOS_MNGR_PS_RX_STREAMING, 3154981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &tPsRxStreaming, sizeof(TPsRxStreaming))) return; 3155981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3156981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"| %3d | %12d | %10d | %7d |\n", 3157981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt tPsRxStreaming.uTid, 3158981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt tPsRxStreaming.uStreamPeriod, 3159981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt tPsRxStreaming.uTxTimeout, 3160981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt tPsRxStreaming.bEnabled); 3161981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3162981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"+-----+--------------+------------+---------+\n"); 3163981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 3164981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3165981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_GetApQosCapabilities(THandle hCuCmd, ConParm_t parm[], U16 nParms) 3166981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 3167981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 3168981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3169981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt OS_802_11_AP_QOS_CAPABILITIES_PARAMS ApQosCapabiltiesParams; 3170981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3171981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetBuffer(pCuCmd->hCuCommon, TIWLN_802_11_GET_AP_QOS_CAPABILITIES, 3172981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &ApQosCapabiltiesParams, sizeof(OS_802_11_AP_QOS_CAPABILITIES_PARAMS))) return; 3173981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3174981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"AP Qos Capabilities:\n QOSFlag = %d\n APSDFlag = %d\n", 3175981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ApQosCapabiltiesParams.uQOSFlag, 3176981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ApQosCapabiltiesParams.uAPSDFlag); 3177981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3178981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 3179981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3180981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_GetAcStatus(THandle hCuCmd, ConParm_t parm[], U16 nParms) 3181981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 3182981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 3183981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt OS_802_11_AC_UPSD_STATUS_PARAMS AcStatusParams; 3184981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3185981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt AcStatusParams.uAC = parm[0].value; 3186981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3187981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetSetBuffer(pCuCmd->hCuCommon, TIWLN_802_11_GET_CURRENT_AC_STATUS, 3188981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &AcStatusParams, sizeof(OS_802_11_AC_UPSD_STATUS_PARAMS))) return; 3189981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3190981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"AC %d Status:\n", AcStatusParams.uAC); 3191981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"PS Scheme = %d (0=LEGACY, 1=UPSD)\n", AcStatusParams.uCurrentUAPSDStatus); 3192981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Admission Status = %d (0=NOT_ADMITTED, 1=WAIT_ADMISSION, 2=ADMITTED)\n", AcStatusParams.pCurrentAdmissionStatus); 3193981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 3194981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3195981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_ModifyMediumUsageTh(THandle hCuCmd, ConParm_t parm[], U16 nParms) 3196981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 3197981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 3198981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt OS_802_11_THRESHOLD_CROSS_PARAMS ThCrossParams; 3199981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3200981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (nParms == 3) /* If user supplied 3 parameters - this is a SET operation */ 3201981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3202981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ThCrossParams.uAC = parm[0].value; 3203981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ThCrossParams.uHighThreshold = parm[1].value; 3204981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ThCrossParams.uLowThreshold = parm[2].value; 3205981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3206981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (ThCrossParams.uLowThreshold > ThCrossParams.uHighThreshold) 3207981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3208981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Low threshold cannot be higher than the High threshold...Aborting...\n"); 3209981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 3210981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3211981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3212981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_SetBuffer(pCuCmd->hCuCommon, TIWLN_802_11_SET_MEDIUM_USAGE_THRESHOLD, 3213981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &ThCrossParams, sizeof(OS_802_11_THRESHOLD_CROSS_PARAMS))) return; 3214981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3215981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Medium usage threshold for AC %d has been set to:\n LowThreshold = %d\n HighThreshold = %d\n", 3216981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ThCrossParams.uAC, 3217981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ThCrossParams.uLowThreshold, 3218981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ThCrossParams.uHighThreshold); 3219981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3220981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else if (nParms == 1) /* Only 1 parameter means a GET operation */ 3221981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3222981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ThCrossParams.uAC = parm[0].value; 3223981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ThCrossParams.uLowThreshold = 0; 3224981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ThCrossParams.uHighThreshold = 0; 3225981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3226981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetSetBuffer(pCuCmd->hCuCommon, TIWLN_802_11_GET_MEDIUM_USAGE_THRESHOLD, 3227981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &ThCrossParams, sizeof(OS_802_11_THRESHOLD_CROSS_PARAMS))) return; 3228981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3229981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Medium usage threshold for AC %d:\n LowThreshold = %d\n HighThreshold = %d\n", 3230981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ThCrossParams.uAC, 3231981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ThCrossParams.uLowThreshold, 3232981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ThCrossParams.uHighThreshold); 3233981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3234981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 3235981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3236981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3237981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_GetDesiredPsMode(THandle hCuCmd, ConParm_t parm[], U16 nParms) 3238981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 3239981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 3240981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt OS_802_11_QOS_DESIRED_PS_MODE DesiredPsMode; 3241981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3242981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetBuffer(pCuCmd->hCuCommon, TIWLN_802_11_GET_DESIRED_PS_MODE, 3243981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &DesiredPsMode, sizeof(OS_802_11_QOS_DESIRED_PS_MODE))) return; 3244981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3245981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Desired PS Mode (0=PS_POLL, 1=UPSD, 2=PS_NONE):\n"); 3246981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"===============================================\n"); 3247981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" +-----------+------+\n"); 3248981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" | AC | Mode |\n"); 3249981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" +-----------+------+\n"); 3250981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" | General | %d |\n", DesiredPsMode.uDesiredPsMode); 3251981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" | BE_AC | %d |\n", DesiredPsMode.uDesiredWmeAcPsMode[QOS_AC_BE]); 3252981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" | BK_AC | %d |\n", DesiredPsMode.uDesiredWmeAcPsMode[QOS_AC_BK]); 3253981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" | VI_AC | %d |\n", DesiredPsMode.uDesiredWmeAcPsMode[QOS_AC_VI]); 3254981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" | VO_AC | %d |\n", DesiredPsMode.uDesiredWmeAcPsMode[QOS_AC_VO]); 3255981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)" +-----------+------+\n"); 3256981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 3257981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3258981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3259981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_InsertClsfrEntry(THandle hCuCmd, ConParm_t parm[], U16 nParms) 3260981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 3261981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 3262981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt clsfr_tableEntry_t newUserTableEntry; 3263981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 i; 3264981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3265981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (nParms >=2) 3266981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt newUserTableEntry.DTag = (U8) parm[1].value; 3267981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3268981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt switch(parm[0].value) 3269981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3270981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case D_TAG_CLSFR: 3271981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Cannot insert D_TAG classifier entry!\n"); 3272981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 3273981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case DSCP_CLSFR: 3274981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (nParms != 3) 3275981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3276981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"DSCP_CLSFR Entry type, wrong number of parameters(too many?)\n"); 3277981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 3278981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3279981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt newUserTableEntry.Dscp.CodePoint = (U8) parm[2].value; 3280981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Inserting new DSCP_CLSFR classifier entry\nD-Tag = %d\nCodePoint = %d\n",newUserTableEntry.DTag,newUserTableEntry.Dscp.CodePoint); 3281981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 3282981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case PORT_CLSFR: 3283981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (nParms != 3) 3284981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3285981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"PORT_CLSFR Entry type, wrong number of parameters(too many?)\n"); 3286981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 3287981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3288981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt newUserTableEntry.Dscp.DstPortNum = (U16) parm[2].value; 3289981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Inserting new PORT_CLSFR classifier entry\nD-Tag = %d\nPort = %d\n",newUserTableEntry.DTag,newUserTableEntry.Dscp.DstPortNum); 3290981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 3291981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case IPPORT_CLSFR: 3292981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (nParms != 7) 3293981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3294981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"PORT_CLSFR Entry type, wrong number of parameters\n"); 3295981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 3296981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3297981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt newUserTableEntry.Dscp.DstIPPort.DstPortNum = (U16) parm[2].value; 3298981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt newUserTableEntry.Dscp.DstIPPort.DstIPAddress = 0; 3299981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for(i=0; i<4; i++) 3300981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3301981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt newUserTableEntry.Dscp.DstIPPort.DstIPAddress |= parm[i+3].value << i * 8; 3302981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3303981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Inserting new IPPORT_CLSFR classifier entry\nD-Tag = %d\nPort = %d\nIP = %3d.%d.%d.%d\n", 3304981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt newUserTableEntry.DTag, 3305981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt newUserTableEntry.Dscp.DstIPPort.DstPortNum, 3306981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt (S32)parm[3].value,(S32)parm[4].value,(S32)parm[5].value,(S32)parm[6].value); 3307981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 3308981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt default: 3309981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Unknown Classifier Type - Command aborted!\n"); 3310981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 3311981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3312981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3313981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(CuCommon_SetBuffer(pCuCmd->hCuCommon, TIWLN_802_11_CONFIG_TX_CLASS, 3314981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &newUserTableEntry, sizeof(clsfr_tableEntry_t))) 3315981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3316981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Failed to insert new classifier entry...\n"); 3317981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3318981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 3319981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3320981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_RemoveClsfrEntry(THandle hCuCmd, ConParm_t parm[], U16 nParms) 3321981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 3322981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 3323981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt clsfr_tableEntry_t newUserTableEntry; 3324981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 i; 3325981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3326981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (nParms >=2) 3327981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt newUserTableEntry.DTag = (U8) parm[1].value; 3328981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3329981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt switch(parm[0].value) 3330981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3331981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case D_TAG_CLSFR: 3332981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Cannot remove D_TAG classifier entry!\n"); 3333981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 3334981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case DSCP_CLSFR: 3335981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (nParms != 3) 3336981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3337981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"DSCP_CLSFR Entry type, wrong number of parameters(too many?)\n"); 3338981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 3339981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3340981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt newUserTableEntry.Dscp.CodePoint = (U8) parm[2].value; 3341981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Removing DSCP_CLSFR classifier entry\nD-Tag = %d\nCodePoint = %d\n",newUserTableEntry.DTag,newUserTableEntry.Dscp.CodePoint); 3342981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 3343981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case PORT_CLSFR: 3344981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (nParms != 3) 3345981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3346981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"PORT_CLSFR Entry type, wrong number of parameters(too many?)\n"); 3347981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 3348981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3349981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt newUserTableEntry.Dscp.DstPortNum = (U16) parm[2].value; 3350981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Removing PORT_CLSFR classifier entry\nD-Tag = %d\nPort = %d\n",newUserTableEntry.DTag,newUserTableEntry.Dscp.DstPortNum); 3351981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 3352981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case IPPORT_CLSFR: 3353981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (nParms != 7) 3354981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3355981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"PORT_CLSFR Entry type, wrong number of parameters\n"); 3356981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 3357981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3358981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt newUserTableEntry.Dscp.DstIPPort.DstPortNum = (U16) parm[2].value; 3359981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt newUserTableEntry.Dscp.DstIPPort.DstIPAddress = 0; 3360981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for(i=0; i<4; i++) 3361981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3362981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt newUserTableEntry.Dscp.DstIPPort.DstIPAddress |= parm[i+3].value << i * 8; 3363981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3364981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Removing IPPORT_CLSFR classifier entry\nD-Tag = %d\nPort = %d\nIP = %3d.%d.%d.%d\n", 3365981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt newUserTableEntry.DTag, 3366981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt newUserTableEntry.Dscp.DstIPPort.DstPortNum, 3367981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt (S32)parm[3].value,(S32)parm[4].value,(S32)parm[5].value,(S32)parm[6].value); 3368981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 3369981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt default: 3370981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Unknown Classifier Type - Command aborted!\n"); 3371981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 3372981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 3373981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3374981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3375981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(CuCommon_SetBuffer(pCuCmd->hCuCommon, TIWLN_802_11_REMOVE_CLSFR_ENTRY, 3376981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &newUserTableEntry, sizeof(clsfr_tableEntry_t))) 3377981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3378981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Failed to remove classifier entry...\n"); 3379981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3380981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 3381981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3382981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3383981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_SetPsRxDelivery(THandle hCuCmd, ConParm_t parm[], U16 nParms) 3384981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 3385981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 3386981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TPsRxStreaming tPsRxStreaming; 3387981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3388981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt tPsRxStreaming.uTid = parm[0].value; 3389981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt tPsRxStreaming.uStreamPeriod = parm[1].value; 3390981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt tPsRxStreaming.uTxTimeout = parm[2].value; 3391981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt tPsRxStreaming.bEnabled = parm[3].value; 3392981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3393981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (CuCommon_SetBuffer(pCuCmd->hCuCommon, QOS_MNGR_PS_RX_STREAMING, 3394981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &tPsRxStreaming, sizeof(TPsRxStreaming)) == OK) 3395981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3396981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Sent PS Rx Delivery to driver..."); 3397981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3398981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 3399981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3400981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Error: could not set PS Rx Delivery in driver...\n"); 3401981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3402981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, 3403981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt (PS8)"TID = %d \n RxPeriod = %d \n TxTimeout = %d\n Enabled = %d\n", 3404981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt tPsRxStreaming.uTid, 3405981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt tPsRxStreaming.uStreamPeriod, 3406981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt tPsRxStreaming.uTxTimeout, 3407981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt tPsRxStreaming.bEnabled); 3408981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 3409981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3410981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3411981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_SetQosParams(THandle hCuCmd, ConParm_t parm[], U16 nParms) 3412981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 3413981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 3414981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt OS_802_11_QOS_PARAMS QosParams; 3415981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3416981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt QosParams.acID=parm[0].value; 3417981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt QosParams.MaxLifeTime=parm[1].value; 3418981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt QosParams.PSDeliveryProtocol = parm[2].value; 3419981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3420981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (CuCommon_SetBuffer(pCuCmd->hCuCommon, TIWLN_802_11_SET_QOS_PARAMS, 3421981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &QosParams, sizeof(OS_802_11_QOS_PARAMS)) == OK) 3422981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3423981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Sent QOS params to driver...\n AC Number=%d \n MaxLifeTime=%d \n PSDeliveryProtocol = %d\n", 3424981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt QosParams.acID, 3425981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt QosParams.MaxLifeTime, 3426981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt QosParams.PSDeliveryProtocol); 3427981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3428981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 3429981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3430981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Error: could not set QOS params...\n"); 3431981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3432981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 3433981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3434981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_SetRxTimeOut(THandle hCuCmd, ConParm_t parm[], U16 nParms) 3435981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 3436981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 3437981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt OS_802_11_QOS_RX_TIMEOUT_PARAMS rxTimeOut; 3438981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3439981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt rxTimeOut.psPoll = parm[0].value; 3440981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt rxTimeOut.UPSD = parm[1].value; 3441981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3442981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (nParms != 2) 3443981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3444981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Please enter Rx Time Out:\n"); 3445981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 0 - psPoll (0 - 65000)\n"); 3446981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 1 - UPSD (1 - 65000)\n"); 3447981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3448981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 3449981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3450981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(CuCommon_SetBuffer(pCuCmd->hCuCommon, TIWLN_802_11_SET_RX_TIMEOUT, 3451981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &rxTimeOut, sizeof(OS_802_11_QOS_RX_TIMEOUT_PARAMS)) == OK) 3452981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3453981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Sent QOS Rx TimeOut params to driver...\n PsPoll = %d\n UPSD = %d\n", 3454981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt rxTimeOut.psPoll, 3455981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt rxTimeOut.UPSD); 3456981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3457981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 3458981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3459981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Error: could not set Rx TimeOut..\n"); 3460981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3461981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3462981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 3463981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3464981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_RegisterEvents(THandle hCuCmd, ConParm_t parm[], U16 nParms) 3465981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 3466981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 3467981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3468981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms ) 3469981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3470981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 event; 3471981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 res, i; 3472981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3473981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt event = (U32)parm[0].value; 3474981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3475981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CU_CMD_FIND_NAME_ARRAY(i, event_type, event); 3476981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(i == SIZE_ARR(event_type)) 3477981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3478981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"CuCmd_RegisterEvents, event %d is not defined!\n", event); 3479981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 3480981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3481981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3482981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt res = IpcEvent_EnableEvent(pCuCmd->hIpcEvent, event); 3483981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (res == EOALERR_IPC_EVENT_ERROR_EVENT_ALREADY_ENABLED) 3484981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3485981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CU_CMD_FIND_NAME_ARRAY(i, event_type, event); 3486981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"CuCmd_RegisterEvents, event %s is already enabled!\n", event_type[i].name); 3487981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 3488981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3489981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3490981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3491981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 3492981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3493981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt print_available_values(event_type); 3494981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3495981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 3496981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3497981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_UnregisterEvents(THandle hCuCmd, ConParm_t parm[], U16 nParms) 3498981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 3499981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 3500981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3501981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms ) 3502981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3503981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 event; 3504981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 res, i; 3505981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3506981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt event = (U32)parm[0].value; 3507981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3508981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CU_CMD_FIND_NAME_ARRAY(i, event_type, event); 3509981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(i == SIZE_ARR(event_type)) 3510981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3511981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"CuCmd_RegisterEvents, event %d is not defined!\n", event); 3512981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 3513981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3514981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3515981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt res = IpcEvent_DisableEvent(pCuCmd->hIpcEvent, event); 3516981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (res == EOALERR_IPC_EVENT_ERROR_EVENT_ALREADY_DISABLED) 3517981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3518981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CU_CMD_FIND_NAME_ARRAY(i, event_type, event); 3519981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"CuCmd_RegisterEvents, event %s is already disabled!\n", event_type[i].name); 3520981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 3521981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3522981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3523981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3524981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 3525981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3526981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt print_available_values(event_type); 3527981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3528981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 3529981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3530981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_EnableBtCoe(THandle hCuCmd, ConParm_t parm[], U16 nParms) 3531981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 3532981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 3533981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ESoftGeminiEnableModes BtMode; 3534981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 i; 3535981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3536981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt named_value_t BtCoe_Mode[] = 3537981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3538981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { SG_DISABLE, (PS8)"Disable" }, 3539981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { SG_PROTECTIVE, (PS8)"Protective" }, 3540981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { SG_OPPORTUNISTIC, (PS8)"Opportunistic" }, 3541981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt }; 3542981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3543981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3544981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(nParms) 3545981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3546981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CU_CMD_FIND_NAME_ARRAY(i, BtCoe_Mode, parm[0].value); 3547981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(i == SIZE_ARR(BtCoe_Mode)) 3548981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3549981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"CuCmd_EnableBtCoe, mode %d is not defined!\n", parm[0].value); 3550981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 3551981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3552981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt BtMode = parm[0].value; 3553981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCommon_SetU32(pCuCmd->hCuCommon, SOFT_GEMINI_SET_ENABLE, BtMode); 3554981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3555981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 3556981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3557981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt print_available_values(BtCoe_Mode); 3558981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3559981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 3560981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3561981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_ConfigBtCoe(THandle hCuCmd, ConParm_t parm[], U16 nParms) 3562981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 3563981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 3564981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 Values[NUM_OF_CONFIG_PARAMS_IN_SG]; 3565981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U8 Index; 3566981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3567981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms != NUM_OF_CONFIG_PARAMS_IN_SG ) 3568981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3569653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Please enter <index (0,1..)> <value> \n"); 3570653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt 3571653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 0 - coexBtPerThreshold (0 - 10000000) PER threshold in PPM of the BT voice \n"); 3572653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 1 - coexAutoScanCompensationMaxTime (0 - 10000000 usec) \n"); 3573653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 2 - coexBtNfsSampleInterval (1 - 65000 msec) \n"); 3574653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 3 - coexBtLoadRatio (0 - 100 %) \n"); 3575653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 4 - coexAutoPsMode (0 = Disabled, 1 = Enabled) Auto Power Save \n"); 3576653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 5 - coexAutoScanEnlargedNumOfProbeReqPercent (%) \n"); 3577653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 6 - coexAutoScanEnlargedScanWindowPercent (%) \n"); 3578653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 7 - coexAntennaConfiguration (0 = Single, 1 = Dual)\n"); 3579653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 8 - coexMaxConsecutiveBeaconMissPrecent (1 - 100 %) \n"); 3580653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 9 - coexAPRateAdapationThr - rates (1 - 54)\n"); 3581653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 10 - coexAPRateAdapationSnr (-128 - 127)\n"); 3582ed6a25120881135f25d9173223306e9232bb2564Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 11 - coexWlanPsBtAclMasterMinBR (msec) \n"); 3583ed6a25120881135f25d9173223306e9232bb2564Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 12 - coexWlanPsBtAclMasterMaxBR (msec) \n"); 3584ed6a25120881135f25d9173223306e9232bb2564Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 13 - coexWlanPsMaxBtAclMasterBR (msec) \n"); 3585ed6a25120881135f25d9173223306e9232bb2564Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 14 - coexWlanPsBtAclSlaveMinBR (msec) \n"); 3586ed6a25120881135f25d9173223306e9232bb2564Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 15 - coexWlanPsBtAclSlaveMaxBR (msec) \n"); 3587ed6a25120881135f25d9173223306e9232bb2564Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 16 - coexWlanPsMaxBtAclSlaveBR (msec) \n"); 3588ed6a25120881135f25d9173223306e9232bb2564Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 17 - coexWlanPsBtAclMasterMinEDR (msec) \n"); 3589ed6a25120881135f25d9173223306e9232bb2564Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 18 - coexWlanPsBtAclMasterMaxEDR (msec) \n"); 3590ed6a25120881135f25d9173223306e9232bb2564Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 19 - coexWlanPsMaxBtAclMasterEDR (msec) \n"); 3591ed6a25120881135f25d9173223306e9232bb2564Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 20 - coexWlanPsBtAclSlaveMinEDR (msec) \n"); 3592ed6a25120881135f25d9173223306e9232bb2564Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 21 - coexWlanPsBtAclSlaveMaxEDR (msec) \n"); 3593ed6a25120881135f25d9173223306e9232bb2564Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 22 - coexWlanPsMaxBtAclSlaveEDR (msec) \n"); 3594ed6a25120881135f25d9173223306e9232bb2564Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 23 - coexRxt (usec) \n"); 3595ed6a25120881135f25d9173223306e9232bb2564Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 24 - coexTxt (usec) \n"); 3596ed6a25120881135f25d9173223306e9232bb2564Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 25 - coexAdaptiveRxtTxt (0 = Disable, 1 = Enable) \n"); 3597ed6a25120881135f25d9173223306e9232bb2564Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 26 - coexPsPollTimeout (msec) \n"); 3598ed6a25120881135f25d9173223306e9232bb2564Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 27 - coexUpsdTimeout (msec) \n"); 3599ed6a25120881135f25d9173223306e9232bb2564Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 28 - coexWlanActiveBtAclMasterMinEDR (msec) \n"); 3600ed6a25120881135f25d9173223306e9232bb2564Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 29 - coexWlanActiveBtAclMasterMaxEDR (msec) \n"); 3601ed6a25120881135f25d9173223306e9232bb2564Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 30 - coexWlanActiveMaxBtAclMasterEDR (msec) \n"); 3602ed6a25120881135f25d9173223306e9232bb2564Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 31 - coexWlanActiveBtAclSlaveMinEDR (msec) \n"); 3603ed6a25120881135f25d9173223306e9232bb2564Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 32 - coexWlanActiveBtAclSlaveMaxEDR (msec) \n"); 3604ed6a25120881135f25d9173223306e9232bb2564Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 33 - coexWlanActiveMaxBtAclSlaveEDR (msec) \n"); 3605ed6a25120881135f25d9173223306e9232bb2564Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 34 - coexWlanActiveBtAclMinBR (msec) \n"); 3606ed6a25120881135f25d9173223306e9232bb2564Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 35 - coexWlanActiveBtAclMaxBR (msec) \n"); 3607ed6a25120881135f25d9173223306e9232bb2564Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 36 - coexWlanActiveMaxBtAclBR (msec) \n"); 3608ed6a25120881135f25d9173223306e9232bb2564Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 37 - coexTempParam1 \n"); 3609ed6a25120881135f25d9173223306e9232bb2564Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 38 - coexTempParam2 \n"); 3610ed6a25120881135f25d9173223306e9232bb2564Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 39 - coexTempParam3 \n"); 3611ed6a25120881135f25d9173223306e9232bb2564Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 40 - coexTempParam4 \n"); 3612ed6a25120881135f25d9173223306e9232bb2564Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 41 - coexTempParam5 \n"); 3613653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt 3614653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt return; 3615981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3616653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt if ((parm[0].value == SOFT_GEMINI_RATE_ADAPT_THRESH) && (CuCmd_IsValueRate(parm[1].value) == FALSE)) 3617981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3618981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Invalid rate - PHY rate valid values are: 1,2,5,6,9,11,12,18,24,36,48,54\n"); 3619981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3620981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 3621981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3622981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for (Index = 0; Index < NUM_OF_CONFIG_PARAMS_IN_SG; Index++ ) 3623981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3624981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt Values[Index] = parm[Index].value; 3625653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt/* value[0] - parmater index, value[1] - parameter value */ 3626981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3627653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt CuCommon_SetBuffer(pCuCmd->hCuCommon, SOFT_GEMINI_SET_CONFIG, Values, sizeof(Values)); 3628981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3629981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 3630981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3631981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_GetBtCoeStatus(THandle hCuCmd, ConParm_t parm[], U16 nParms) 3632981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 3633981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 3634981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 uDummyBuf; 3635981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3636981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetBuffer(pCuCmd->hCuCommon, SOFT_GEMINI_GET_CONFIG, 3637981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &uDummyBuf, sizeof(U32))) 3638981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3639981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 3640981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3641981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 3642981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3643981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_ConfigCoexActivity(THandle hCuCmd, ConParm_t parm[], U16 nParms) 3644981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 3645981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 3646981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TCoexActivity tCoexActivity; 3647981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3648981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms != NUM_OF_COEX_ACTIVITY_PARAMS_IN_SG ) 3649981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3650981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 1 - coexIp (0 - 1) BT-0, WLAN-1 \n"); 3651981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 2 - activityId (0 - 24) \n"); 3652981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 3 - defaultPriority (0 - 255) \n"); 3653981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 4 - raisedPriority (0 - 255) \n"); 3654981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 5 - minService (0 - 65535) \n"); 3655981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 6 - maxService (0 - 65535) \n"); 3656981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3657981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 3658981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3659981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt tCoexActivity.coexIp = (U8)parm[0].value; 3660981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt tCoexActivity.activityId = (U8)parm[1].value; 3661981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt tCoexActivity.defaultPriority = (U8)parm[2].value; 3662981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt tCoexActivity.raisedPriority = (U8)parm[3].value; 3663981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt tCoexActivity.minService = (U16)parm[4].value; 3664981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt tCoexActivity.maxService = (U16)parm[5].value; 3665981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3666981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCommon_SetBuffer(pCuCmd->hCuCommon, TWD_COEX_ACTIVITY_PARAM, 3667981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &tCoexActivity, sizeof(tCoexActivity)); 3668981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3669981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 3670981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3671653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry ShmidtVOID CuCmd_ConfigFmCoex(THandle hCuCmd, ConParm_t parm[], U16 nParms) 3672653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt{ 3673653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 3674653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt TFmCoexParams tFmCoexParams; 3675653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt 3676653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt if (nParms != 10) 3677653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt { 3678653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"1 - Enable (0 - 1) \n"); 3679653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"2 - SwallowPeriod (0 - 255) \n"); 3680653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"3 - NDividerFrefSet1 (0 - 255) \n"); 3681653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"4 - NDividerFrefSet2 (0 - 255) \n"); 3682653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"5 - MDividerFrefSet1 (0 - 65535) \n"); 3683653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"6 - MDividerFrefSet2 (0 - 65535) \n"); 3684653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"7 - CoexPllStabilizationTime (0 - 4294967295) \n"); 3685653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"8 - LdoStabilizationTime (0 - 65535) \n"); 3686653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"9 - FmDisturbedBandMargin (0 - 255) \n"); 3687653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"10- SwallowClkDif (0 - 255) \n"); 3688653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt } 3689653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt else 3690653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt { 3691653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt tFmCoexParams.uEnable = (TI_UINT8)parm[0].value; 3692653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt tFmCoexParams.uSwallowPeriod = (TI_UINT8)parm[1].value; 3693653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt tFmCoexParams.uNDividerFrefSet1 = (TI_UINT8)parm[2].value; 3694653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt tFmCoexParams.uNDividerFrefSet2 = (TI_UINT8)parm[3].value; 3695653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt tFmCoexParams.uMDividerFrefSet1 = (TI_UINT16)parm[4].value; 3696653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt tFmCoexParams.uMDividerFrefSet2 = (TI_UINT16)parm[5].value; 3697653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt tFmCoexParams.uCoexPllStabilizationTime = parm[6].value; 3698653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt tFmCoexParams.uLdoStabilizationTime = (TI_UINT16)parm[7].value; 3699653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt tFmCoexParams.uFmDisturbedBandMargin = (TI_UINT8)parm[8].value; 3700653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt tFmCoexParams.uSwallowClkDif = (TI_UINT8)parm[9].value; 3701653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt 3702653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt CuCommon_SetBuffer(pCuCmd->hCuCommon, TWD_FM_COEX_PARAM, &tFmCoexParams, sizeof(TFmCoexParams)); 3703653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt } 3704653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt} 3705653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt 3706981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_SetPowerMode(THandle hCuCmd, ConParm_t parm[], U16 nParms) 3707981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 3708981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 3709981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TPowerMgr_PowerMode Mode; 3710981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 i; 3711981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3712981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms ) 3713981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3714981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CU_CMD_FIND_NAME_ARRAY(i, power_mode_val, parm[0].value); 3715981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(i == SIZE_ARR(power_mode_val)) 3716981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3717981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"CuCmd_SetPowerMode, mode %d is not defined!\n", parm[0].value); 3718981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 3719981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3720981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt Mode.PowerMode = parm[0].value; 3721981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt Mode.PowerMngPriority = POWER_MANAGER_USER_PRIORITY; 3722981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCommon_SetBuffer(pCuCmd->hCuCommon, TIWLN_802_11_POWER_MODE_SET, 3723981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &Mode, sizeof(TPowerMgr_PowerMode)); 3724981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3725981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 3726981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3727981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(!CuCommon_GetBuffer(pCuCmd->hCuCommon, TIWLN_802_11_POWER_MODE_GET, &Mode, sizeof(TPowerMgr_PowerMode))) 3728981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3729981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Power mode: %d\n", Mode.PowerMode); 3730981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt print_available_values(power_mode_val); 3731981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3732981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3733981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 3734981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3735981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_SetPowerSavePowerLevel(THandle hCuCmd, ConParm_t parm[], U16 nParms) 3736981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 3737981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 3738981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 PowerSavePowerLevel; 3739981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 i; 3740981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3741981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms ) 3742981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3743981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CU_CMD_FIND_NAME_ARRAY(i, power_level, parm[0].value); 3744981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(i == SIZE_ARR(power_level)) 3745981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3746981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"CuCmd_SetPowerSavePowerLevel, level %d is not defined!\n", parm[0].value); 3747981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 3748981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3749981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt PowerSavePowerLevel = parm[0].value; 3750981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCommon_SetU32(pCuCmd->hCuCommon, TIWLN_802_11_POWER_LEVEL_PS_SET, PowerSavePowerLevel); 3751981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3752981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 3753981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3754981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(!CuCommon_GetU32(pCuCmd->hCuCommon, TIWLN_802_11_POWER_LEVEL_PS_GET, &PowerSavePowerLevel)) 3755981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3756981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CU_CMD_FIND_NAME_ARRAY(i, power_level, PowerSavePowerLevel); 3757981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Power Level PowerSave is: %s\n", power_level[i].name); 3758981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt print_available_values(power_level); 3759981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3760981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3761981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 3762981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3763981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_SetDefaultPowerLevel(THandle hCuCmd, ConParm_t parm[], U16 nParms) 3764981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 3765981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 3766981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 DefaultPowerLevel; 3767981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 i; 3768981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3769981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms ) 3770981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3771981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CU_CMD_FIND_NAME_ARRAY(i, power_level, parm[0].value); 3772981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(i == SIZE_ARR(power_level)) 3773981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3774981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"CuCmd_SetDefaultPowerLevel, level %d is not defined!\n", parm[0].value); 3775981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 3776981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3777981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt DefaultPowerLevel = parm[0].value; 3778981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCommon_SetU32(pCuCmd->hCuCommon, TIWLN_802_11_POWER_LEVEL_DEFAULT_SET, DefaultPowerLevel); 3779981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3780981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 3781981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3782981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(!CuCommon_GetU32(pCuCmd->hCuCommon, TIWLN_802_11_POWER_LEVEL_DEFAULT_GET, &DefaultPowerLevel)) 3783981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3784981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CU_CMD_FIND_NAME_ARRAY(i, power_level, DefaultPowerLevel); 3785981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Power Level Default is: %s\n", power_level[i].name); 3786981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt print_available_values(power_level); 3787981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3788981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3789981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 3790981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3791981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_SetDozeModeInAutoPowerLevel(THandle hCuCmd, ConParm_t parm[], U16 nParms) 3792981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 3793981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 3794981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 DozeModeInAutoPowerLevel; 3795981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 i; 3796981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3797981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms ) 3798981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3799981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt DozeModeInAutoPowerLevel = parm[0].value; 3800981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3801981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if((DozeModeInAutoPowerLevel > AUTO_POWER_MODE_DOZE_MODE_MAX_VALUE) || (DozeModeInAutoPowerLevel < AUTO_POWER_MODE_DOZE_MODE_MIN_VALUE)) 3802981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3803981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"CuCmd_SetDozeModeInAutoPowerLevel, level %d is not defined!\n", DozeModeInAutoPowerLevel); 3804981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 3805981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3806981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCommon_SetU32(pCuCmd->hCuCommon, TIWLN_802_11_POWER_LEVEL_DOZE_MODE_SET, DozeModeInAutoPowerLevel); 3807981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3808981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 3809981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3810981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* set Short or Long Doze. no use of other parameters */ 3811981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(!CuCommon_GetU32(pCuCmd->hCuCommon, TIWLN_802_11_POWER_LEVEL_DOZE_MODE_GET, &DozeModeInAutoPowerLevel)) 3812981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3813981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CU_CMD_FIND_NAME_ARRAY(i, power_mode_val, DozeModeInAutoPowerLevel); 3814981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Doze power level in auto mode is: %s\n", power_mode_val[i].name); 3815981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3816981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3817981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 3818981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3819981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_SetTrafficIntensityTh(THandle hCuCmd, ConParm_t parm[], U16 nParms) 3820981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 3821981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 3822981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt OS_802_11_TRAFFIC_INTENSITY_THRESHOLD_PARAMS TrafficIntensityTh; 3823981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3824981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (nParms == 3) 3825981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3826981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TrafficIntensityTh.uHighThreshold = parm[0].value; 3827981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TrafficIntensityTh.uLowThreshold = parm[1].value; 3828981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TrafficIntensityTh.TestInterval = parm[2].value; 3829981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3830981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (TrafficIntensityTh.uLowThreshold >= TrafficIntensityTh.uHighThreshold) 3831981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3832981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_ERROR, (PS8)"Error - CuCmd_SetTrafficIntensityTh - low threshold equal or greater than the high threshold...aborting...\n"); 3833981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3834981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3835981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK == CuCommon_SetBuffer(pCuCmd->hCuCommon, TIWLN_802_11_SET_TRAFFIC_INTENSITY_THRESHOLDS, 3836981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &TrafficIntensityTh, sizeof(OS_802_11_TRAFFIC_INTENSITY_THRESHOLD_PARAMS))) 3837981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3838981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Successfully set traffic intensity thresholds...\n"); 3839981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3840981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 3841981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3842981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_ERROR, (PS8)"Error - CuCmd_SetTrafficIntensityTh - cannot set thresholds\n"); 3843981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3844981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3845981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else if (nParms == 0) 3846981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3847981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK == CuCommon_GetBuffer(pCuCmd->hCuCommon, TIWLN_802_11_GET_TRAFFIC_INTENSITY_THRESHOLDS, 3848981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &TrafficIntensityTh, sizeof(OS_802_11_TRAFFIC_INTENSITY_THRESHOLD_PARAMS))) 3849981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3850981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Traffic intensity thresholds :\n HighThreshold = %d\n LowThreshold = %d\n TestInterval = %d\n", 3851981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TrafficIntensityTh.uHighThreshold, 3852981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TrafficIntensityTh.uLowThreshold, 3853981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TrafficIntensityTh.TestInterval); 3854981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3855981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 3856981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3857981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf (CU_MSG_ERROR, (PS8)"Error - CuCmd_SetTrafficIntensityTh - cannot get thresholds\n"); 3858981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3859981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3860981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 3861981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3862981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_EnableTrafficEvents(THandle hCuCmd, ConParm_t parm[], U16 nParms) 3863981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 3864981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 3865981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_SetU32(pCuCmd->hCuCommon, TIWLN_802_11_TOGGLE_TRAFFIC_INTENSITY_EVENTS, TRUE) ) return; 3866981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Traffic intensity thresholds enabled...\n"); 3867981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 3868981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3869981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_DisableTrafficEvents(THandle hCuCmd, ConParm_t parm[], U16 nParms) 3870981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 3871981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 3872981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_SetU32(pCuCmd->hCuCommon, TIWLN_802_11_TOGGLE_TRAFFIC_INTENSITY_EVENTS, FALSE) ) return; 3873981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Traffic intensity thresholds disabled...\n"); 3874981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 3875981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3876981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3877981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_LogAddReport(THandle hCuCmd, ConParm_t parm[], U16 nParms) 3878981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 3879981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 3880981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U8 ModuleTable[REPORT_FILES_NUM], ModuleValue[REPORT_FILES_NUM] = {0}; 3881981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt int index = 0; 3882981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3883981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memcpy((THandle)ModuleValue, (THandle)(parm[0].value), nParms); 3884981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3885981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for (index = 0; index < REPORT_FILES_NUM; index ++) 3886981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3887981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (ModuleValue[index] == '1') 3888981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3889981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ModuleTable[index] = '1'; 3890981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3891981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 3892981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3893981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ModuleTable[index] = '0'; 3894981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3895981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3896981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCommon_SetBuffer(pCuCmd->hCuCommon, REPORT_MODULE_TABLE_PARAM, ModuleTable, REPORT_FILES_NUM); 3897981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 3898981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3899981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_LogReportSeverityLevel(THandle hCuCmd, ConParm_t parm[], U16 nParms) 3900981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 3901981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 3902981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U8 SeverityTable[REPORT_SEVERITY_MAX]; 3903981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 index = 0; 3904981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt PS8 SeverityValue = (PS8)(parm[0].value); 3905981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3906981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* Get the current report severity */ 3907981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (!CuCommon_GetBuffer(pCuCmd->hCuCommon, REPORT_SEVERITY_TABLE_PARAM, SeverityTable, REPORT_SEVERITY_MAX)) 3908981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3909981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(nParms == 0) 3910981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3911981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 i; 3912981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3913981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Severity:\n"); 3914981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"-------------------------------\n"); 3915981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"%14s\tState\t%s\n", (PS8)"Severity level", (PS8)"Desc"); 3916981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3917981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for( i=1; i<SIZE_ARR(report_severity); i++ ) 3918981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3919981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"%d\t%c\t%s\n", report_severity[i].value, (SeverityTable[i] == '1') ? '+' : ' ', report_severity[i].name ); 3920981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3921981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3922981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"* Use '0' to clear all table.\n"); 3923981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"* Use '%d' (max index) to set all table.\n", REPORT_SEVERITY_MAX); 3924981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3925981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 3926981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3927981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for (index = 0; index < REPORT_SEVERITY_MAX; index ++) 3928981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3929981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (SeverityValue[index] == '0') 3930981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3931981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt SeverityTable[index] = '0'; 3932981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3933981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 3934981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3935981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt SeverityTable[index] = '1'; 3936981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3937981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3938981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCommon_SetBuffer(pCuCmd->hCuCommon, REPORT_SEVERITY_TABLE_PARAM, SeverityTable, REPORT_SEVERITY_MAX); 3939981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3940981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3941981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 3942981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3943981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_ERROR, (PS8)"Error retriving the severity table from the driver\n"); 3944981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3945981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 3946981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3947981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_SetReport(THandle hCuCmd, ConParm_t parm[], U16 nParms) 3948981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 3949981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 3950981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U8 *pModuleTable = (U8 *)parm[0].value; 3951981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3952981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms != 1) 3953981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3954981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U8 ModuleTable[REPORT_FILES_NUM]; 3955981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 i; 3956981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3957981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (!CuCommon_GetBuffer(pCuCmd->hCuCommon, TIWLN_REPORT_MODULE_GET, ModuleTable, REPORT_FILES_NUM)) 3958981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3959981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"-------------------------------\n"); 3960981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"%.5s\tState\t %s\n", (PS8)"Index", (PS8)"Desc"); 3961981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3962981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for( i = 0; i < SIZE_ARR(report_module); i++) 3963981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3964981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* Check if there is string content (the first character is not ZERO) */ 3965981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( report_module[i].name[0] ) 3966981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3967981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U8 module_num = (U8) report_module[i].value; 3968981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"%3d\t%c\t%s\n", 3969981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt module_num, 3970981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt (ModuleTable[module_num] == '1') ? '+' : ' ', 3971981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt report_module[i].name ); 3972981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3973981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3974981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3975981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 3976981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3977981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_ERROR, (PS8)"Error reading the report table form the driver\n"); 3978981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3979981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3980981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 3981981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3982981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCommon_SetBuffer(pCuCmd->hCuCommon, TIWLN_REPORT_MODULE_SET, pModuleTable, REPORT_FILES_NUM); 3983981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 3984981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 3985981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3986981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_AddReport(THandle hCuCmd, ConParm_t parm[], U16 nParms) 3987981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 3988981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 3989981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U8 ModuleTable[REPORT_FILES_NUM]; 3990981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3991981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms != 1) 3992981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3993981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 i; 3994981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (!CuCommon_GetBuffer(pCuCmd->hCuCommon, TIWLN_REPORT_MODULE_GET, ModuleTable, REPORT_FILES_NUM)) 3995981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 3996981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"-------------------------------\n"); 3997981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"%.5s\tState\t %s\n", (PS8)"Index", (PS8)"Desc"); 3998981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 3999981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for( i = 0; i < SIZE_ARR(report_module); i++) 4000981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4001981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* Check if there is string content (the first character is not ZERO) */ 4002981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( report_module[i].name[0] ) 4003981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4004981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"%3d\t%c\t%s\n", report_module[i].value, (ModuleTable[i] == '1') ? '+' : ' ', report_module[i].name ); 4005981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4006981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4007981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4008981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 4009981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4010981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_ERROR, (PS8)"Error reading the report table form the driver\n"); 4011981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4012981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"* Use '%d' (max index) to set all table.\n", REPORT_FILES_NUM); 4013981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4014981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else if(!CuCommon_GetBuffer(pCuCmd->hCuCommon, TIWLN_REPORT_MODULE_GET, ModuleTable, REPORT_FILES_NUM)) 4015981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4016981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (parm[0].value == REPORT_FILES_NUM) 4017981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4018981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memset(ModuleTable, '1', REPORT_FILES_NUM); 4019981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4020981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else if(parm[0].value < REPORT_FILES_NUM) 4021981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4022981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ModuleTable[parm[0].value] = '1'; 4023981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4024981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCommon_SetBuffer(pCuCmd->hCuCommon, TIWLN_REPORT_MODULE_SET, ModuleTable, REPORT_FILES_NUM); 4025981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4026981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 4027981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4028981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_ClearReport(THandle hCuCmd, ConParm_t parm[], U16 nParms) 4029981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 4030981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 4031981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U8 ModuleTable[REPORT_FILES_NUM]; 4032981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4033981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms != 1) 4034981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4035981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 i; 4036981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (!CuCommon_GetBuffer(pCuCmd->hCuCommon, TIWLN_REPORT_MODULE_GET, ModuleTable, REPORT_FILES_NUM)) 4037981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4038981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"-------------------------------\n"); 4039981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"%.5s\tState\t %s\n", (PS8)"Index", (PS8)"Desc"); 4040981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4041981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for( i = 0; i < SIZE_ARR(report_module); i++) 4042981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4043981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* Check if there is string content (the first character is not ZERO) */ 4044981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( report_module[i].name[0] ) 4045981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4046981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"%3d\t%c\t%s\n", report_module[i].value, (ModuleTable[i] == '1') ? '+' : ' ', report_module[i].name ); 4047981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4048981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4049981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4050981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 4051981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4052981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_ERROR, (PS8)"Error reading the report table form the driver\n"); 4053981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4054981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"* Use '%d' (max index) to clear all table.\n", REPORT_FILES_NUM); 4055981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4056981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else if(!CuCommon_GetBuffer(pCuCmd->hCuCommon, TIWLN_REPORT_MODULE_GET, ModuleTable, REPORT_FILES_NUM)) 4057981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4058981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (parm[0].value == REPORT_FILES_NUM) 4059981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4060981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memset(ModuleTable, '0', REPORT_FILES_NUM); 4061981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4062981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else if(parm[0].value < REPORT_FILES_NUM) 4063981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4064981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt ModuleTable[parm[0].value] = '0'; 4065981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4066981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCommon_SetBuffer(pCuCmd->hCuCommon, TIWLN_REPORT_MODULE_SET, ModuleTable, REPORT_FILES_NUM); 4067981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4068981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 4069981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4070981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_ReportSeverityLevel(THandle hCuCmd, ConParm_t parm[], U16 nParms) 4071981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 4072981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 4073981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U8 SeverityTable[REPORT_SEVERITY_MAX]; 4074981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4075981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* Get the current report severity */ 4076981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (!CuCommon_GetBuffer(pCuCmd->hCuCommon, TIWLN_REPORT_SEVERITY_GET, SeverityTable, REPORT_SEVERITY_MAX)) 4077981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4078981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(nParms == 0) 4079981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4080981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 i; 4081981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4082981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Severity:\n"); 4083981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"-------------------------------\n"); 4084981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"%14s\tState\t%s\n", (PS8)"Severity level", (PS8)"Desc"); 4085981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4086981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for( i=1; i<SIZE_ARR(report_severity); i++ ) 4087981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4088981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"%d\t%c\t%s\n", report_severity[i].value, (SeverityTable[i] == '1') ? '+' : ' ', report_severity[i].name ); 4089981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4090981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4091981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"* Use '0' to clear all table.\n"); 4092981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"* Use '%d' (max index) to set all table.\n", REPORT_SEVERITY_MAX); 4093981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4094981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 4095981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4096981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (parm[0].value == 0) 4097981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4098981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* Disable all severity levels */ 4099981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memset(SeverityTable, '0', sizeof(SeverityTable)); 4100981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCommon_SetBuffer(pCuCmd->hCuCommon, TIWLN_REPORT_SEVERITY_SET, SeverityTable, REPORT_SEVERITY_MAX); 4101981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4102981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else if (parm[0].value == REPORT_SEVERITY_MAX) 4103981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4104981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* Enable all severity levels */ 4105981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memset(SeverityTable, '1', sizeof(SeverityTable)); 4106981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCommon_SetBuffer(pCuCmd->hCuCommon, TIWLN_REPORT_SEVERITY_SET, SeverityTable, REPORT_SEVERITY_MAX); 4107981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4108981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else if (parm[0].value < REPORT_SEVERITY_MAX) 4109981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4110981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Toggle severity level %#lx\n", parm[0].value); 4111981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (SeverityTable[parm[0].value] == '1') 4112981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4113981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* The level is enabled - Disable it */ 4114981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt SeverityTable[parm[0].value] = '0'; 4115981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4116981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 4117981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4118981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* The bit is disabled - Enable it */ 4119981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt SeverityTable[parm[0].value] = '1'; 4120981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4121981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCommon_SetBuffer(pCuCmd->hCuCommon, TIWLN_REPORT_SEVERITY_SET, SeverityTable, REPORT_SEVERITY_MAX); 4122981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4123981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 4124981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4125981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"invalid level value: %#lx\n", parm[0].value ); 4126981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4127981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4128981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4129981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 4130981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4131981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_ERROR, (PS8)"Error retriving the severity table from the driver\n"); 4132981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4133981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 4134981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4135981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_SetReportLevelCLI(THandle hCuCmd, ConParm_t parm[], U16 nParms) 4136981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 4137981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#if 0 /* need to create debug logic for CLI */ 4138981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 4139981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 i, cli_debug_level; 4140981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4141981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(nParms) 4142981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4143981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt cli_debug_level = parm[0].value; 4144981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* check if the param is valid */ 4145981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CU_CMD_FIND_NAME_ARRAY(i, cli_level_type, cli_debug_level); 4146981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(i == SIZE_ARR(cli_level_type)) 4147981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4148981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"CuCmd_SetReportLevelCLI, cli_debug_level %d is not defined!\n", cli_debug_level); 4149981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 4150981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4151981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4152981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt g_debug_level = cli_debug_level; 4153981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt IpcEvent_UpdateDebugLevel(pCuCmd->hIpcEvent, cli_debug_level); 4154981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"set CLI debug value = %s \n", cli_level_type[i].name); 4155981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4156981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 4157981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4158981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt cli_debug_level = g_debug_level; 4159981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CU_CMD_FIND_NAME_ARRAY(i, cli_level_type, cli_debug_level); 4160981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"CLI debug value = %s (%d)\n", cli_level_type[i].name, cli_debug_level); 4161981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt print_available_values(cli_level_type); 4162981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4163981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 4164981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 4165981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4166981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4167981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtchar* SkipSpaces(char* str) 4168981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 4169981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt char* tmp = str; 4170981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4171981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt while(*tmp == ' ') tmp++; 4172981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return tmp; 4173981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 4174981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4175981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#define ti_isdigit(c) ('0' <= (c) && (c) <= '9') 4176981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#define ti_islower(c) ('a' <= (c) && (c) <= 'z') 4177981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#define ti_toupper(c) (ti_islower(c) ? ((c) - 'a' + 'A') : (c)) 4178981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4179981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#define ti_isxdigit(c) (('0' <= (c) && (c) <= '9') \ 4180981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt || ('a' <= (c) && (c) <= 'f') \ 4181981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt || ('A' <= (c) && (c) <= 'F')) 4182981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4183981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#define ti_atol(x) strtoul(x, 0) 4184981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4185981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4186981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtunsigned long ti_strtoul(char *cp, char** endp, unsigned int base) 4187981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 4188981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt unsigned long result = 0, value; 4189981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4190981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (!base) { 4191981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt base = 10; 4192981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (*cp == '0') { 4193981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt base = 8; 4194981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt cp++; 4195981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if ((ti_toupper(*cp) == 'X') && ti_isxdigit(cp[1])) { 4196981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt cp++; 4197981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt base = 16; 4198981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4199981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4200981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } else if (base == 16) { 4201981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (cp[0] == '0' && ti_toupper(cp[1]) == 'X') 4202981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt cp += 2; 4203981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4204981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt while (ti_isxdigit(*cp) && 4205981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt (value = ti_isdigit(*cp) ? *cp-'0' : ti_toupper(*cp)-'A'+10) < base) { 4206981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt result = result*base + value; 4207981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt cp++; 4208981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4209981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4210981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(endp) 4211981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *endp = (char *)cp; 4212981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4213981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return result; 4214981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 4215981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4216981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4217981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_FwDebug(THandle hCuCmd, ConParm_t parm[], U16 nParms) 4218981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 4219981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 4220981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 *buf_ptr, *pbuf; 4221981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt char *pstr = (char *)parm[0].value; 4222981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 parm_length; 4223981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4224981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"FwDebug parm: %s\n", parm[0].value); 4225981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4226981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt buf_ptr = (U32*)os_MemoryCAlloc(252, sizeof(U32)); 4227981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(!buf_ptr) 4228981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 4229981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4230981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pbuf = buf_ptr + 2; 4231981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4232981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pstr = SkipSpaces(pstr); 4233981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt while(*pstr) { 4234981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *pbuf++ = ti_strtoul(pstr, &pstr, 0); 4235981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pstr = SkipSpaces(pstr); 4236981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4237981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4238981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt parm_length = (U32)((U8*)pbuf-(U8*)buf_ptr); 4239981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4240981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Parms buf size = %d\n", parm_length); 4241981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4242981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *buf_ptr = 2210; 4243981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *(buf_ptr+1) = parm_length - 2*sizeof(U32); 4244981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4245981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCommon_PrintDriverDebug(pCuCmd->hCuCommon, (PVOID)buf_ptr, parm_length); 4246981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4247981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_MemoryFree(buf_ptr); 4248981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4249981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 4250981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4251653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry ShmidtVOID CuCmd_SetRateMngDebug(THandle hCuCmd, ConParm_t parm[], U16 nParms) 4252653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt{ 4253653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 4254653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt RateMangeParams_t RateParams; 4255653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt 4256653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt RateParams.paramIndex = (TI_UINT8)parm[0].value; 4257653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt 4258653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt 4259653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt if( nParms == 2 ) 4260653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt { 4261653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt switch (RateParams.paramIndex) 4262653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt { 4263653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt case RATE_MGMT_RETRY_SCORE_PARAM: 4264653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt RateParams.RateRetryScore = (TI_UINT16)parm[1].value; 4265653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt break; 4266653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt case RATE_MGMT_PER_ADD_PARAM: 4267653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt RateParams.PerAdd = (TI_UINT16)parm[1].value; 4268653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt break; 4269653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt case RATE_MGMT_PER_TH1_PARAM: 4270653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt RateParams.PerTh1 = (TI_UINT16)parm[1].value; 4271653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt break; 4272653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt case RATE_MGMT_PER_TH2_PARAM: 4273653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt RateParams.PerTh2 = (TI_UINT16)parm[1].value; 4274653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt break; 4275653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt case RATE_MGMT_MAX_PER_PARAM: 4276653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt RateParams.MaxPer = (TI_UINT16)parm[1].value; 4277653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt break; 4278653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt case RATE_MGMT_INVERSE_CURIOSITY_FACTOR_PARAM: 4279653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt RateParams.InverseCuriosityFactor = (TI_UINT8)parm[1].value; 4280653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt break; 4281653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt case RATE_MGMT_TX_FAIL_LOW_TH_PARAM: 4282653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt RateParams.TxFailLowTh = (TI_UINT8)parm[1].value; 4283653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt break; 4284653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt case RATE_MGMT_TX_FAIL_HIGH_TH_PARAM: 4285653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt RateParams.TxFailHighTh = (TI_UINT8)parm[1].value; 4286653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt break; 4287653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt case RATE_MGMT_PER_ALPHA_SHIFT_PARAM: 4288653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt RateParams.PerAlphaShift = (TI_UINT8)parm[1].value; 4289653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt break; 4290653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt case RATE_MGMT_PER_ADD_SHIFT_PARAM: 4291653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt RateParams.PerAddShift = (TI_UINT8)parm[1].value; 4292653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt break; 4293653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt case RATE_MGMT_PER_BETA1_SHIFT_PARAM: 4294653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt RateParams.PerBeta1Shift = (TI_UINT8)parm[1].value; 4295653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt break; 4296653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt case RATE_MGMT_PER_BETA2_SHIFT_PARAM: 4297653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt RateParams.PerBeta2Shift = (TI_UINT8)parm[1].value; 4298653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt break; 4299653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt case RATE_MGMT_RATE_CHECK_UP_PARAM: 4300653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt RateParams.RateCheckUp = (TI_UINT8)parm[1].value; 4301653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt break; 4302653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt case RATE_MGMT_RATE_CHECK_DOWN_PARAM: 4303653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt RateParams.RateCheckDown = (TI_UINT8)parm[1].value; 4304653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt break; 4305653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt default: 4306653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"Error: index is not valid! \n"); 4307653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt return; 4308653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt 4309653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt } 4310653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt } 4311653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt else if ((nParms == NUM_OF_RATE_MNGT_PARAMS_MAX) && (parm[0].value == RATE_MGMT_RATE_RETRY_POLICY_PARAM )) 4312653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt { 4313653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt int i=0; 4314653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt for (i=1; i < NUM_OF_RATE_MNGT_PARAMS_MAX; i++) 4315653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt { 4316653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt RateParams.RateRetryPolicy[i-1] = (TI_UINT8)parm[i].value; 4317653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt } 4318653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt } 4319653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt else 4320653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt { 4321653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"(0) RateMngRateRetryScore \n"); 4322653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"(1) RateMngPerAdd \n"); 4323653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"(2) RateMngPerTh1 \n"); 4324653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"(3) RateMngPerTh2 \n"); 4325653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"(4) RateMngMaxPer \n"); 4326653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"(5) RateMngInverseCuriosityFactor \n"); 4327653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"(6) RateMngTxFailLowTh \n"); 4328653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"(7) RateMngTxFailHighTh \n"); 4329653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"(8) RateMngPerAlphaShift \n"); 4330653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"(9) RateMngPerAddShift \n"); 4331653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"(10) RateMngPerBeta1Shift \n"); 4332653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"(11) RateMngPerBeta2Shift \n"); 4333653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"(12) RateMngRateCheckUp \n"); 4334653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"(13) RateMngRateCheckDown \n"); 4335653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"(14) RateMngRateRetryPolicy[13] \n"); 4336653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt return; 4337653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt } 4338653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt 4339653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt CuCommon_SetBuffer(pCuCmd->hCuCommon, TIWLN_RATE_MNG_SET,&RateParams, sizeof(RateMangeParams_t)); 4340653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt} 4341653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt 4342653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry ShmidtVOID CuCmd_GetRateMngDebug(THandle hCuCmd, ConParm_t parm[], U16 nParms) 4343653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt{ 4344653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 4345653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt AcxRateMangeParams ReadRateParams; 4346653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt int i; 4347653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt 4348653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_memset(&ReadRateParams,0,sizeof(AcxRateMangeParams)); 4349653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt 4350653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt CuCommon_GetBuffer(pCuCmd->hCuCommon, TIWLN_RATE_MNG_GET, &ReadRateParams, sizeof(AcxRateMangeParams)); 4351653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt 4352653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt if (0 == nParms) 4353653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt { 4354653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt parm[0].value = RATE_MGMT_ALL_PARAMS; 4355653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt } 4356653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt 4357653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt switch (parm[0].value) 4358653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt { 4359653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt case RATE_MGMT_RETRY_SCORE_PARAM: 4360653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"RateMngRateRetryScore = %d \n", ReadRateParams.RateRetryScore); 4361653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt break; 4362653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt case RATE_MGMT_PER_ADD_PARAM: 4363653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"RateMngPerAdd = %d\n" , ReadRateParams.PerAdd); 4364653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt break; 4365653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt case RATE_MGMT_PER_TH1_PARAM: 4366653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"RateMngPerTh1 = %d\n" , ReadRateParams.PerTh1); 4367653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt break; 4368653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt case RATE_MGMT_PER_TH2_PARAM: 4369653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"RateMngPerTh2 = %d\n" , ReadRateParams.PerTh2); 4370653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt break; 4371653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt case RATE_MGMT_MAX_PER_PARAM: 4372653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"RateMngMaxPer = %d\n" , ReadRateParams.MaxPer); 4373653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt break; 4374653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt case RATE_MGMT_INVERSE_CURIOSITY_FACTOR_PARAM: 4375653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"RateMngInverseCuriosityFactor = %d \n" , ReadRateParams.InverseCuriosityFactor); 4376653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt break; 4377653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt case RATE_MGMT_TX_FAIL_LOW_TH_PARAM: 4378653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"RateMngTxFailLowTh = %d\n" , ReadRateParams.TxFailLowTh); 4379653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt break; 4380653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt case RATE_MGMT_TX_FAIL_HIGH_TH_PARAM: 4381653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"RateMngTxFailHighTh = %d\n" , ReadRateParams.TxFailHighTh); 4382653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt break; 4383653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt case RATE_MGMT_PER_ALPHA_SHIFT_PARAM: 4384653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"RateMngPerAlphaShift = %d\n" , ReadRateParams.PerAlphaShift); 4385653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt break; 4386653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt case RATE_MGMT_PER_ADD_SHIFT_PARAM: 4387653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"RateMngPerAddShift = %d\n" , ReadRateParams.PerAddShift); 4388653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt break; 4389653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt case RATE_MGMT_PER_BETA1_SHIFT_PARAM: 4390653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"RateMngPerBeta1Shift = %d\n" , ReadRateParams.PerBeta1Shift); 4391653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt break; 4392653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt case RATE_MGMT_PER_BETA2_SHIFT_PARAM: 4393653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"RateMngPerBeta2Shift = %d\n" , ReadRateParams.PerBeta2Shift); 4394653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt break; 4395653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt case RATE_MGMT_RATE_CHECK_UP_PARAM: 4396653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"RateMngRateCheckUp = %d\n" , ReadRateParams.RateCheckUp); 4397653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt break; 4398653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt case RATE_MGMT_RATE_CHECK_DOWN_PARAM: 4399653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"RateMngRateCheckDown = %d\n" , ReadRateParams.RateCheckDown); 4400653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt break; 4401653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt case RATE_MGMT_RATE_RETRY_POLICY_PARAM: 4402653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"RateMngRateRetryPolicy = "); 4403653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt 4404653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt for (i=0 ; i< RATE_MNG_MAX_RETRY_POLICY_PARAMS_LEN ; i++) 4405653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt { 4406653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"%d ",ReadRateParams.RateRetryPolicy[i]); 4407653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt } 4408653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt 4409653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"\n"); 4410653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt 4411653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt break; 4412653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt 4413653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt case RATE_MGMT_ALL_PARAMS: 4414653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"RateMngRateRetryScore = %d \n", ReadRateParams.RateRetryScore); 4415653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"RateMngPerAdd = %d\n" , ReadRateParams.PerAdd); 4416653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"RateMngPerTh1 = %d\n" , ReadRateParams.PerTh1); 4417653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"RateMngPerTh2 = %d\n" , ReadRateParams.PerTh2); 4418653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"RateMngMaxPer = %d\n" , ReadRateParams.MaxPer); 4419653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"RateMngInverseCuriosityFactor = %d \n" , ReadRateParams.InverseCuriosityFactor); 4420653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"RateMngTxFailLowTh = %d\n" , ReadRateParams.TxFailLowTh); 4421653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"RateMngTxFailHighTh = %d\n" , ReadRateParams.TxFailHighTh); 4422653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"RateMngPerAlphaShift = %d\n" , ReadRateParams.PerAlphaShift); 4423653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"RateMngPerAddShift = %d\n" , ReadRateParams.PerAddShift); 4424653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"RateMngPerBeta1Shift = %d\n" , ReadRateParams.PerBeta1Shift); 4425653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"RateMngPerBeta2Shift = %d\n" , ReadRateParams.PerBeta2Shift); 4426653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"RateMngRateCheckUp = %d\n" , ReadRateParams.RateCheckUp); 4427653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"RateMngRateCheckDown = %d\n" , ReadRateParams.RateCheckDown); 4428653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"RateMngRateRetryPolicy = "); 4429653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt 4430653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt for (i=0 ; i< RATE_MNG_MAX_RETRY_POLICY_PARAMS_LEN ; i++) 4431653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt { 4432653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"%d ",ReadRateParams.RateRetryPolicy[i]); 4433653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt } 4434653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"\n"); 4435653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt break; 4436653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt 4437653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt default: 4438653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2,"Error: index is not valid! \n"); 4439653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt return; 4440653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt } 4441653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt 4442653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt} 4443653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt 4444981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4445981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_PrintDriverDebug(THandle hCuCmd, ConParm_t parm[], U16 nParms) 4446981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 4447981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 4448981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 size = 0; 4449981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TTwdDebug data; 4450981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4451981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* check if nParam is invalid */ 4452981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (( nParms == 0 ) || ( nParms > 4 )) 4453981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4454981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"CuCmd_PrintDriverDebug: Invalid number of Parameters %d\n", nParms); 4455981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 4456981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4457981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4458981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* init */ 4459981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memset( &data.debug_data.mem_debug.UBuf.buf8, 0, sizeof(data.debug_data.mem_debug.UBuf.buf8) ); 4460981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.func_id = parm[0].value; 4461981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt size = sizeof(data.func_id); 4462981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4463981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"CuCmd_PrintDriverDebug: FUN_ID: %u\n", data.func_id); 4464981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4465981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* if R reg request - read data */ 4466981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if ( nParms == 2 ) 4467981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4468981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.debug_data.opt_param = 4; 4469981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.debug_data.opt_param = parm[1].value; 4470981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt size += sizeof(data.debug_data.opt_param); 4471981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4472981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 4473981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* if W reg request - read data */ 4474981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if ( nParms > 2 ) 4475981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4476981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.debug_data.mem_debug.addr = 0; 4477981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4478981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.debug_data.mem_debug.length = 4; 4479981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt size += sizeof(data.debug_data.mem_debug.length); 4480981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4481981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.debug_data.mem_debug.addr = parm[1].value; 4482981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt size += sizeof(data.debug_data.mem_debug.addr); 4483981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4484981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.debug_data.mem_debug.UBuf.buf32[0] = parm[2].value; 4485981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt size += sizeof(data.debug_data.mem_debug.UBuf.buf32[0]); 4486981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4487981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"CuCmd_PrintDriverDebug: addr: 0x%x\n", data.debug_data.opt_param); 4488981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"CuCmd_PrintDriverDebug: data: 0x%x\n", data.debug_data.mem_debug.UBuf.buf32[0]); 4489981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4490981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCommon_PrintDriverDebug(pCuCmd->hCuCommon, (PVOID)&data, size); 4491981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 4492981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4493981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_PrintDriverDebugBuffer(THandle hCuCmd, ConParm_t parm[], U16 nParms) 4494981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 4495981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 4496981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4497981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 func_id = ( nParms > 0 ) ? parm[0].value : 0; 4498981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 opt_param = ( nParms > 1 ) ? parm[1].value : 0; 4499981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4500981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"CuCmd_PrintDriverDebugBuffer: FUNC:%u, PARAM:%u\n", func_id, opt_param); 4501981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4502981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCommon_PrintDriverDebugBuffer(pCuCmd->hCuCommon, func_id, opt_param); 4503981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 4504981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4505981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/*-------------------*/ 4506981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Radio Debug Tests */ 4507981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/*-------------------*/ 4508981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Set the RX channel --> Radio Tune */ 4509981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_RadioDebug_ChannelTune(THandle hCuCmd, ConParm_t parm[], U16 nParms) 4510981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 4511981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 4512981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TPowerMgr_PowerMode Mode; 4513981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TTestCmd data; 4514981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4515981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if ((nParms == 0) || (nParms > 2)) 4516981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4517981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 0 - Band (0-2.4Ghz, 1-5Ghz, 2-4.9Ghz)\n"); 4518981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 1 - Channel\n"); 4519981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4520981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 4521981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4522981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetBuffer(pCuCmd->hCuCommon, TIWLN_802_11_POWER_MODE_GET, 4523981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &Mode, sizeof(TPowerMgr_PowerMode))) return; 4524981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(Mode.PowerMode != OS_POWER_MODE_ACTIVE) 4525981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4526981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Radio tune was not performed becouse Default power-mode is not ACTIVE\n"); 4527981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4528981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 4529981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4530981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memset(&data, 0, sizeof(TTestCmd)); 4531981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmdId = TEST_CMD_CHANNEL_TUNE; 4532981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmd_u.Channel.iChannel = (U8)parm[1].value; 4533981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmd_u.Channel.iBand = (U8)parm[0].value; 4534981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4535981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_Radio_Test(pCuCmd->hCuCommon, &data)) 4536981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4537981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Channel %d tune failed\n",data.testCmd_u.Channel.iChannel); 4538981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 4539981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4540981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Channel tune of channel %d was performed OK\n",(U8)data.testCmd_u.Channel.iChannel); 4541981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4542981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4543981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 4544981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4545981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Start CW test (TELEC) */ 4546981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_RadioDebug_StartTxCw(THandle hCuCmd, ConParm_t parm[], U16 nParms) 4547981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 4548981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 4549981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TTestCmd data; 4550981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4551981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* check # of params OK */ 4552653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt if ((nParms == 0) || (nParms > 2)) 4553981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4554981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* print help */ 4555653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 0 - Power (0-25000 1/1000 db)\n"); 4556653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 1 - Tone Type (1-Single Tone, 2-Carrier Feed Through)\n"); 4557653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt 4558653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt/* os_error_printf(CU_MSG_INFO2, (PS8)"Param 2 - Band\n"); 4559653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 3 - Channel\n"); 4560981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 4 - PPA Step\n"); 4561981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 5 - Tone no. Single Tones\n"); 4562981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 6 - Tone no. Two Tones\n"); 4563981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 7 - Use digital DC\n"); 4564981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 8 - Invert\n"); 4565981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 9 - Eleven N Span\n"); 4566981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 10 - Digital DC\n"); 4567981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 11 - Analog DC Fine\n"); 4568653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 12 - Analog DC Course\n");*/ 4569981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4570981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 4571981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4572981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memset(&data, 0, sizeof(TTestCmd)); 4573981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmdId = TEST_CMD_TELEC; 4574653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt data.testCmd_u.TxToneParams.iPower = (U16)parm[0].value; 4575653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt data.testCmd_u.TxToneParams.iToneType = (U8)parm[1].value; 4576653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt/* data.testCmd_u.TxToneParams.iPpaStep = (U8)parm[4].value; 4577981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmd_u.TxToneParams.iToneNumberSingleTones = (U8)parm[5].value; 4578981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmd_u.TxToneParams.iToneNumberTwoTones = (U8)parm[6].value; 4579981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmd_u.TxToneParams.iUseDigitalDC = (U8)parm[7].value; 4580981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmd_u.TxToneParams.iInvert = (U8)parm[8].value; 4581981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmd_u.TxToneParams.iElevenNSpan = (U8)parm[9].value; 4582981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmd_u.TxToneParams.iDigitalDC = (U8)parm[10].value; 4583981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmd_u.TxToneParams.iAnalogDCFine = (U8)parm[11].value; 4584653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt data.testCmd_u.TxToneParams.iAnalogDCCoarse = (U8)parm[12].value;*/ 4585653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt 4586981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_Radio_Test(pCuCmd->hCuCommon, &data)) 4587981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4588981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"CW test failed\n"); 4589981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 4590981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4591981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"CW test was performed OK\n"); 4592981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4593981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 4594981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4595981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Start TX continues test (FCC) */ 4596981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_RadioDebug_StartContinuousTx(THandle hCuCmd, ConParm_t parm[], U16 nParms) 4597981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 4598981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TMacAddr mac_addr_mask = { 0xff,0xff,0xff,0xff,0xff,0xff }; 4599981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 4600981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TTestCmd data; 4601981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4602981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if ((nParms == 0) || (nParms > 15)) 4603981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4604981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* print help */ 4605981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"\n"); 4606981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 0 - Delay\n"); 4607981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 1 - Rate\n"); 4608981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 2 - Size\n"); 4609981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 3 - Amount\n"); 4610981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 4 - Power\n"); 4611981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 5 - Seed\n"); 4612981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 6 - Packet Mode\n"); 4613981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 7 - DCF On/Off\n"); 4614981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 8 - GI\n"); 4615981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 9 - Preamble\n"); 4616981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 10 - Type\n"); 4617981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 11 - Scrambler\n"); 4618981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 12 - Enable CLPC\n"); 4619981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 13 - Sequance no. Mode\n"); 4620981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* future use. for now the oregenal source address are use. 4621981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 14 - Source MAC Address\n"); 4622981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt */ 4623981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 14 - Destination MAC Address\n"); 4624981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4625981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 4626981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4627981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memset(&data, 0, sizeof(TTestCmd)); 4628981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmdId = TEST_CMD_FCC; 4629981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmd_u.TxPacketParams.iDelay = (U32)parm[0].value; 4630981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmd_u.TxPacketParams.iRate = (U32)parm[1].value; 4631981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmd_u.TxPacketParams.iSize = (U16)parm[2].value; 4632981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmd_u.TxPacketParams.iAmount = (U16)parm[3].value; 4633981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmd_u.TxPacketParams.iPower = (U16)parm[4].value; 4634981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmd_u.TxPacketParams.iSeed = (U16)parm[5].value; 4635981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmd_u.TxPacketParams.iPacketMode = (U8)parm[6].value; 4636981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmd_u.TxPacketParams.iDcfOnOff = (U8)parm[7].value; 4637981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmd_u.TxPacketParams.iGI = (U8)parm[8].value; 4638981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmd_u.TxPacketParams.iPreamble = (U8)parm[9].value; 4639981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmd_u.TxPacketParams.iType = (U8)parm[10].value; 4640981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmd_u.TxPacketParams.iScrambler = (U8)parm[11].value; 4641981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmd_u.TxPacketParams.iEnableCLPC = (U8)parm[12].value; 4642981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmd_u.TxPacketParams.iSeqNumMode = (U8)parm[13].value; 4643981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* future use. for now the oregenal source address are use. 4644981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(!CuCmd_Str2MACAddr((PS8)parm[16].value, (PU8)mac_addr_mask) ) 4645981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4646981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Continuous Tx start has failed to read source MAC Address \n"); 4647981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 4648981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4649981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt */ 4650981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memcpy((PVOID)data.testCmd_u.TxPacketParams.iSrcMacAddr, 4651981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt (PVOID)mac_addr_mask, 4652981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt sizeof(mac_addr_mask)); 4653981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(!CuCmd_Str2MACAddr((PS8)parm[14].value, (PU8)mac_addr_mask) ) 4654981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4655981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Continuous Tx start has failed to read destination MAC Address \n"); 4656981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 4657981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4658981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memcpy((PVOID)data.testCmd_u.TxPacketParams.iDstMacAddr, 4659981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt (PVOID)mac_addr_mask, 4660981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt sizeof(mac_addr_mask)); 4661981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4662981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_Radio_Test(pCuCmd->hCuCommon, &data)) 4663981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4664981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Continuous Tx start has failed\n"); 4665981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 4666981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4667981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Continuous Tx started OK\n"); 4668981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4669981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 4670981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4671981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Stop FCC/TELEC (Radio Debug) */ 4672981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_RadioDebug_StopTx(THandle hCuCmd, ConParm_t parm[], U16 nParms) 4673981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 4674981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 4675981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TTestCmd data; 4676981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4677981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memset(&data, 0, sizeof(TTestCmd)); 4678981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmdId = TEST_CMD_STOP_TX; 4679981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4680981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_Radio_Test(pCuCmd->hCuCommon, &data)) 4681981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4682981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Plt Tx Stop has failed\n"); 4683981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 4684981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4685981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Plt Tx Stop was OK\n"); 4686981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 4687981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4688981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* download packet template for transmissions 4689981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt the template shall be set before calling TX Debug */ 4690981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_RadioDebug_Template(THandle hCuCmd, ConParm_t parm[], U16 nParms) 4691981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 4692981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 4693981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TTestCmd data; 4694981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4695981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if ((nParms == 0) || (nParms > 3)) 4696981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4697981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* print help */ 4698981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"\n"); 4699981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 1 - Buffer Offset\n"); 4700981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Param 2 - Buffer Data\n"); 4701981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4702981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 4703981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4704981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memset(&data, 0, sizeof(TTestCmd)); 4705981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmdId = TEST_CMD_PLT_TEMPLATE; 4706981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmd_u.TxTemplateParams.bufferOffset = (U16)parm[0].value; 4707981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmd_u.TxTemplateParams.bufferLength = (U16)os_strlen((PS8)parm[1].value); 4708981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* check that length is valid */ 4709981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( data.testCmd_u.TxTemplateParams.bufferOffset + data.testCmd_u.TxTemplateParams.bufferLength > TX_TEMPLATE_MAX_BUF_LEN ) 4710981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4711981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Plt Template has failed because of invalid buffer length\n"); 4712981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 4713981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4714981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* convert the string to hexadeciaml values, and copy it */ 4715981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_atox_string ((U8*)parm[1].value,(U8*)data.testCmd_u.TxTemplateParams.buffer); 4716981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4717981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_Radio_Test(pCuCmd->hCuCommon, &data)) 4718981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4719981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Plt Template has failed\n"); 4720981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 4721981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4722981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Plt Template was OK\n"); 4723981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4724981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 4725981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4726981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4727981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Start RX Statistics */ 4728981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_RadioDebug_StartRxStatistics(THandle hCuCmd, ConParm_t parm[], U16 nParms) 4729981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 4730981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 4731981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TTestCmd data; 4732981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4733981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memset(&data, 0, sizeof(TTestCmd)); 4734981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmdId = TEST_CMD_RX_STAT_START; 4735981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4736981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_Radio_Test(pCuCmd->hCuCommon, &data)) 4737981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4738981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Start RX Statistics has failed\n"); 4739981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 4740981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4741981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Start RX Statistics OK\n"); 4742981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 4743981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4744981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Stop RX Statistics */ 4745981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_RadioDebug_StopRxStatistics(THandle hCuCmd, ConParm_t parm[], U16 nParms) 4746981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 4747981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 4748981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TTestCmd data; 4749981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4750981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memset(&data, 0, sizeof(TTestCmd)); 4751981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmdId = TEST_CMD_RX_STAT_STOP; 4752981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4753981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_Radio_Test(pCuCmd->hCuCommon, &data)) 4754981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4755981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Stop RX Statistics has failed\n"); 4756981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 4757981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4758981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Stop RX Statistics OK\n"); 4759981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 4760981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4761981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Reset RX Statistics */ 4762981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_RadioDebug_ResetRxStatistics(THandle hCuCmd, ConParm_t parm[], U16 nParms) 4763981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 4764981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 4765981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TTestCmd data; 4766981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4767981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memset(&data, 0, sizeof(TTestCmd)); 4768981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmdId = TEST_CMD_RX_STAT_RESET; 4769981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4770981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_Radio_Test(pCuCmd->hCuCommon, &data)) 4771981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4772981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Reset RX Statistics has failed\n"); 4773981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 4774981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4775981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Reset RX Statistics OK\n"); 4776981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 4777981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4778981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4779981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Get HDK Version*/ 4780981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_RadioDebug_GetHDKVersion(THandle hCuCmd, ConParm_t parm[], U16 nParms) 4781981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 4782981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 4783981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TTestCmd data; 4784981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4785981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memset(&data, 0, sizeof(TTestCmd)); 4786981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4787981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmdId = TEST_CMD_GET_FW_VERSIONS; 4788981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_Radio_Test(pCuCmd->hCuCommon, &data)) 4789981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4790981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Get FW version function has failed\n"); 4791981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 4792981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4793981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"ProductName: %d\n", data.testCmd_u.fwVersions.hdkVersion.ProductName); 4794981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"PgNumber: %d\n", data.testCmd_u.fwVersions.hdkVersion.PgNumber); 4795981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"SoftwareVersionLevel: %d\n", data.testCmd_u.fwVersions.hdkVersion.SoftwareVersionLevel); 4796981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"radioModuleType: %d\n", data.testCmd_u.fwVersions.hdkVersion.radioModuleType); 4797981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"SoftwareVersionDelivery: %d\n", data.testCmd_u.fwVersions.hdkVersion.SoftwareVersionDelivery); 4798981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"numberOfReferenceDesignsSupported: %d\n", data.testCmd_u.fwVersions.hdkVersion.numberOfReferenceDesignsSupported); 4799981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#ifdef FIX_HDK_VERSION_API /* HDK version struct should be changed aligned and without pointer */ 4800981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"referenceDesignsSupported->referenceDesignId: %d\n", data.testCmd_u.fwVersions.hdkVersion.referenceDesignsSupported->referenceDesignId); 4801981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"referenceDesignsSupported->nvsMajorVersion: %d\n", data.testCmd_u.fwVersions.hdkVersion.referenceDesignsSupported->nvsMajorVersion); 4802981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"referenceDesignsSupported->nvsMinorVersion: %d\n", data.testCmd_u.fwVersions.hdkVersion.referenceDesignsSupported->nvsMinorVersion); 4803981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"referenceDesignsSupported->nvsMinorMinorVersion: %d\n", data.testCmd_u.fwVersions.hdkVersion.referenceDesignsSupported->nvsMinorMinorVersion); 4804981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 4805981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 4806981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4807981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Get RX Statistics */ 4808981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_RadioDebug_GetRxStatistics(THandle hCuCmd, ConParm_t parm[], U16 nParms) 4809981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 4810981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#if 0 /*Temp: currently not supported*/ 4811981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 i = 0; 4812981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 4813981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4814981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 4815981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TTestCmd data; 4816981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4817981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memset(&data, 0, sizeof(TTestCmd)); 4818981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmdId = TEST_CMD_RX_STAT_GET; 4819981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4820981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_Radio_Test(pCuCmd->hCuCommon, &data)) 4821981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4822981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Get RX Statistics has failed\n"); 4823981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 4824981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4825981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* print Statistics Got */ 4826981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"\n"); 4827981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Received Valid Packet no.: %d(0x%x)\n", data.testCmd_u.Statistics.oRxPathStatistics.ReceivedValidPacketsNumber,data.testCmd_u.Statistics.oRxPathStatistics.ReceivedValidPacketsNumber); 4828981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Received FCS Error Packet no.: %d(0x%x)\n", data.testCmd_u.Statistics.oRxPathStatistics.ReceivedFcsErrorPacketsNumber,data.testCmd_u.Statistics.oRxPathStatistics.ReceivedFcsErrorPacketsNumber); 4829981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Received Address mismatched packet: %d(0x%x)\n", data.testCmd_u.Statistics.oRxPathStatistics.ReceivedPlcpErrorPacketsNumber,data.testCmd_u.Statistics.oRxPathStatistics.ReceivedPlcpErrorPacketsNumber); 4830981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Sequance Nomber Missing Count: %d(0x%x)\n", data.testCmd_u.Statistics.oRxPathStatistics.SeqNumMissCount,data.testCmd_u.Statistics.oRxPathStatistics.SeqNumMissCount); 4831981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* The RSSI and SNR are in octal units, the value divided by 8 for the print */ 4832981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Average SNR: %d(0x%x)\n", data.testCmd_u.Statistics.oRxPathStatistics.AverageSnr/8,data.testCmd_u.Statistics.oRxPathStatistics.AverageSnr/8); 4833981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Average RSSI: %d(0x%x)\n", (data.testCmd_u.Statistics.oRxPathStatistics.AverageRssi)/8,(data.testCmd_u.Statistics.oRxPathStatistics.AverageRssi)/8); 4834981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Base Packet ID: %d(0x%x)\n", data.testCmd_u.Statistics.oBasePacketId,data.testCmd_u.Statistics.oBasePacketId); 4835981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Number of Packets: %d(0x%x)\n", data.testCmd_u.Statistics.ioNumberOfPackets,data.testCmd_u.Statistics.ioNumberOfPackets); 4836981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Number of Missed Packets: %d(0x%x)\n", data.testCmd_u.Statistics.oNumberOfMissedPackets,data.testCmd_u.Statistics.oNumberOfMissedPackets); 4837981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#if 0/*Temp: currently not supported*/ 4838981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for ( i = 0 ; i < RX_STAT_PACKETS_PER_MESSAGE ; i++ ) 4839981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4840981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"RX Packet %d Statistics\n",i); 4841981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Length: %d(0x%x)\n", data.testCmd_u.Statistics.RxPacketStatistics[i].Length,data.testCmd_u.Statistics.RxPacketStatistics[i].Length); 4842981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"EVM: %d(0x%x)\n", data.testCmd_u.Statistics.RxPacketStatistics[i].EVM,data.testCmd_u.Statistics.RxPacketStatistics[i].EVM); 4843981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"RSSI: %d(0x%x)\n", data.testCmd_u.Statistics.RxPacketStatistics[i].RSSI,data.testCmd_u.Statistics.RxPacketStatistics[i].RSSI); 4844981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Frequency Delta: %d(0x%x)\n", data.testCmd_u.Statistics.RxPacketStatistics[i].FrequencyDelta,data.testCmd_u.Statistics.RxPacketStatistics[i].FrequencyDelta); 4845981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Flags: %d(0x%x)\n", data.testCmd_u.Statistics.RxPacketStatistics[i].Flags,data.testCmd_u.Statistics.RxPacketStatistics[i].Flags); 4846981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Type: %d(0x%x)\n", data.testCmd_u.Statistics.RxPacketStatistics[i].Type,data.testCmd_u.Statistics.RxPacketStatistics[i].Type); 4847981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Rate: %d(0x%x)\n", data.testCmd_u.Statistics.RxPacketStatistics[i].Rate,data.testCmd_u.Statistics.RxPacketStatistics[i].Rate); 4848981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Noise: %d(0x%x)\n", data.testCmd_u.Statistics.RxPacketStatistics[i].Noise,data.testCmd_u.Statistics.RxPacketStatistics[i].Noise); 4849981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"AGC Gain: %d(0x%x)\n", data.testCmd_u.Statistics.RxPacketStatistics[i].AgcGain,data.testCmd_u.Statistics.RxPacketStatistics[i].AgcGain); 4850981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4851981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 4852981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 4853981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4854981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4855981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/*-----------*/ 4856981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* BIP Tests */ 4857981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/*-----------*/ 4858981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4859981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4860981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtvoid FillMACAddressToNVS(THandle hCuCmd, FILE *nvsBinFile) 4861981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 4862981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 4863981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TMacAddr Mac; 4864981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U8 lengthToSet; 4865981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U8 addressHigher; 4866981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U8 addressLower; 4867981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U8 valueToSet=0; 4868981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4869981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt lengthToSet = 0x1; 4870981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4871981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4872981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Entering FillMACAddressToNVS\n"); 4873981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* param 0 in nvs*/ 4874981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fwrite(&lengthToSet, sizeof(U8), 1, nvsBinFile); 4875981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4876981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* register for MAC Address*/ 4877981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt addressHigher = 0x6D; 4878981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt addressLower = 0x54; 4879981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4880981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* param 1 in nvs*/ 4881981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fwrite(&addressHigher, sizeof(U8), 1, nvsBinFile); 4882981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* param 2 in nvs*/ 4883981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fwrite(&addressLower, sizeof(U8), 1, nvsBinFile); 4884981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4885981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4886981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* read mac address */ 4887981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetBuffer(pCuCmd->hCuCommon, CTRL_DATA_MAC_ADDRESS, Mac, sizeof(TMacAddr))) 4888981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4889981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Unable to get Mac address, aborting\n"); 4890981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 4891981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4892981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Mac[0]=%02x\n", Mac[0]); 4893981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Mac[1]=%02x\n", Mac[1]); 4894981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Mac[2]=%02x\n", Mac[2]); 4895981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Mac[3]=%02x\n", Mac[3]); 4896981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Mac[4]=%02x\n", Mac[4]); 4897981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Mac[5]=%02x\n", Mac[5]); 4898981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4899981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* write the lower MAC address starting from the LSB 4900981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt params 3-6 in NVS*/ 4901981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fwrite(&Mac[5], sizeof(U8), 1, nvsBinFile); 4902981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fwrite(&Mac[4], sizeof(U8), 1, nvsBinFile); 4903981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fwrite(&Mac[3], sizeof(U8), 1, nvsBinFile); 4904981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fwrite(&Mac[2], sizeof(U8), 1, nvsBinFile); 4905981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4906981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* param 7 in NVS*/ 4907981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fwrite(&lengthToSet, sizeof(U8), 1, nvsBinFile); 4908981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4909981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt addressHigher = 0x71; 4910981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt addressLower = 0x54; 4911981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4912981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* params 8-9 in NVS*/ 4913981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fwrite(&addressHigher, sizeof(U8), 1, nvsBinFile); 4914981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fwrite(&addressLower, sizeof(U8), 1, nvsBinFile); 4915981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4916981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4917981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* Write the higher MAC address starting from the LSB 4918981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt params 10-13 in NVS*/ 4919981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fwrite(&Mac[1], sizeof(U8), 1, nvsBinFile); 4920981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fwrite(&Mac[0], sizeof(U8), 1, nvsBinFile); 4921981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4922981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fwrite(&valueToSet, sizeof(U8), 1, nvsBinFile); 4923981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fwrite(&valueToSet, sizeof(U8), 1, nvsBinFile); 4924981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4925981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"exiting FillMACAddressToNVS\n"); 4926981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 4927981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4928981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4929981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/****************************************************************************/ 4930981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Function: FillTXParameterToNVS */ 4931981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/****************************************************************************/ 4932981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Description: Fill TX parameters to the NVS */ 4933981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Parameters: nvsBinFile - NVS bin file */ 4934981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* nvsPtr - NVS pointer */ 4935981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Return Value: True - file created, False - otherwise */ 4936981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/****************************************************************************/ 4937981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtvoid FillTXParameterToNVS(FILE *nvsBinFile, const TTestCmdP2GCal *nvsPtr) 4938981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 4939981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TTestCmdP2GCal *ptgStruct = (TTestCmdP2GCal *)nvsPtr; 4940981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U16 tlvLength; 4941981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U16 index; 4942981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U8 valueToSet; 4943981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4944981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4945981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* TX BiP type */ 4946981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt valueToSet = eNVS_RADIO_TX_PARAMETERS; 4947981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fwrite(&valueToSet, sizeof(U8), 1, nvsBinFile); 4948981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4949981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* TX Bip Length */ 4950981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt tlvLength = NVS_TX_PARAM_LENGTH; 4951981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fwrite(&tlvLength, sizeof(U16), 1, nvsBinFile); 4952981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4953981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for (index = 0; index < NVS_TX_PARAM_LENGTH; index++) 4954981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4955981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt valueToSet = ptgStruct->oNvsStruct.Buffer[index]; 4956981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fwrite(&valueToSet, sizeof(U8), 1, nvsBinFile); 4957981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4958981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 4959981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4960981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4961981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/****************************************************************************/ 4962981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Function: FillOldRXParameterToNVS */ 4963981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/****************************************************************************/ 4964981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Description: Fill old RX parameters to the NVS */ 4965981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Parameters: nvsBinFile - NVS bin file */ 4966981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* buffer - buffer of uin8 values */ 4967981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* maxLengthOfBuffer - maximum length of all the buffer */ 4968981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Return Value: True - file created, False - otherwise */ 4969981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/****************************************************************************/ 4970981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtvoid FillOldRXParameterToNVS(FILE *nvsBinFile, const U8 *buffer) 4971981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 4972981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 index; 4973981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 paramStartIndex = NVS_PRE_PARAMETERS_LENGTH + NVS_RX_PARAM_INDEX; 4974981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 paramEndIndex = paramStartIndex + NVS_RX_PARAM_LENGTH; 4975981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U8 valueToSet; 4976981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U16 tlvLength; 4977981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4978981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* RX BiP type */ 4979981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt valueToSet = eNVS_RADIO_RX_PARAMETERS; 4980981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fwrite(&valueToSet, sizeof(U8), 1, nvsBinFile); 4981981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4982981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* RX Bip Length */ 4983981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt tlvLength = NVS_RX_PARAM_LENGTH; 4984981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fwrite(&tlvLength, sizeof(U16), 1, nvsBinFile); 4985981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4986981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for (index = paramStartIndex; 4987981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt (index < paramEndIndex); 4988981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt index++) 4989981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 4990981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt valueToSet = buffer[index]; 4991981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fwrite(&valueToSet, sizeof(U8), 1, nvsBinFile); 4992981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 4993981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 4994981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 4995981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/****************************************************************************/ 4996981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Function: FillRXParameterToNVS */ 4997981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/****************************************************************************/ 4998981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Description: Fill old TX parameters to the NVS */ 4999981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Parameters: nvsBinFile - NVS bin file */ 5000981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* buffer - buffer of uin8 values */ 5001981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* maxLengthOfBuffer - maximum length of all the buffer */ 5002981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Return Value: True - file created, False - otherwise */ 5003981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/****************************************************************************/ 5004981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtvoid FillRXParameterToNVS(FILE *nvsBinFile, const RadioRxPltCal *nvsPtr) 5005981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 5006981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt RadioRxPltCal *ptgStruct = (RadioRxPltCal *)nvsPtr; 5007981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 index; 5008981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U8 valueToSet; 5009981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U16 tlvLength; 5010981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5011981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* RX BiP type */ 5012981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt valueToSet = eNVS_RADIO_RX_PARAMETERS; 5013981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fwrite(&valueToSet, sizeof(U8), 1, nvsBinFile); 5014981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5015981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* RX Bip Length */ 5016981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt tlvLength = NVS_RX_PARAM_LENGTH; 5017981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fwrite(&tlvLength, sizeof(U16), 1, nvsBinFile); 5018981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5019981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5020981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for (index = 0; 5021981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt index < NVS_RX_PARAM_LENGTH; 5022981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt index++) 5023981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5024981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt valueToSet = ptgStruct->oNvsStruct.Buffer[index]; 5025981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fwrite(&valueToSet, sizeof(U8), 1, nvsBinFile); 5026981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5027981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 5028981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5029981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5030981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/****************************************************************************/ 5031981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Function: FillOldTXParameterToNVS */ 5032981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/****************************************************************************/ 5033981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Description: Fill old TX parameters to the NVS */ 5034981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Parameters: nvsBinFile - NVS bin file */ 5035981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* buffer - buffer of uin8 values */ 5036981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* maxLengthOfBuffer - maximum length of all the buffer */ 5037981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Return Value: True - file created, False - otherwise */ 5038981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/****************************************************************************/ 5039981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtvoid FillOldTXParameterToNVS(FILE *nvsBinFile, const U8 *buffer) 5040981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 5041981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 index ; 5042981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U8 valueToSet; 5043981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U16 tlvLength; 5044981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 paramStartIndex = NVS_PRE_PARAMETERS_LENGTH + NVS_TX_PARAM_INDEX; 5045981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 paramEndIndex = paramStartIndex + NVS_TX_PARAM_LENGTH; 5046981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5047981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* TX BiP type */ 5048981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt valueToSet = eNVS_RADIO_TX_PARAMETERS; 5049981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fwrite(&valueToSet, sizeof(U8), 1, nvsBinFile); 5050981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5051981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* TX Bip Length */ 5052981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt tlvLength = NVS_TX_PARAM_LENGTH; 5053981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fwrite(&tlvLength, sizeof(U16), 1, nvsBinFile); 5054981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5055981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for (index = paramStartIndex; index < paramEndIndex; index++) 5056981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5057981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt valueToSet = buffer[index]; 5058981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fwrite(&valueToSet, sizeof(U8), 1, nvsBinFile); 5059981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5060981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 5061981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5062981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/****************************************************************************/ 5063981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Function: FillDefaultTXParameterToNVS */ 5064981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/****************************************************************************/ 5065981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Description: Set 0 in all tX parameters */ 5066981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Parameters: nvsBinFile - NVS bin file */ 5067981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Return Value: True - file created, False - otherwise */ 5068981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/****************************************************************************/ 5069981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtvoid FillDefaultTXParameterToNVS(FILE *nvsBinFile) 5070981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 5071981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S8 typeValue = eNVS_RADIO_TX_PARAMETERS; 5072981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U16 tlvLength = NVS_TX_PARAM_LENGTH; 5073981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U8 valueToSet = 0; 5074981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 txParamIndex; 5075981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5076981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* TX type */ 5077981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fwrite(&typeValue, sizeof(U8), 1, nvsBinFile); 5078981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5079981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* TX length; */ 5080981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fwrite(&tlvLength, sizeof(U16), 1, nvsBinFile); 5081981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5082981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for (txParamIndex = 0; txParamIndex < tlvLength; txParamIndex++) 5083981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5084981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fwrite(&valueToSet, sizeof(U8), 1, nvsBinFile); 5085981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5086981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 5087981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5088981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5089981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5090981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/****************************************************************************/ 5091981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Function: FillDefaultRXParameterToNVS */ 5092981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/****************************************************************************/ 5093981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Description: Set 0 in all RX parameters */ 5094981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Parameters: nvsBinFile - NVS bin file */ 5095981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Return Value: True - file created, False - otherwise */ 5096981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/****************************************************************************/ 5097981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtvoid FillDefaultRXParameterToNVS(FILE *nvsBinFile) 5098981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 5099981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S8 typeValue = eNVS_RADIO_RX_PARAMETERS; 5100981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U16 lengthValue = NVS_RX_PARAM_LENGTH; 5101981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U8 valueToSet = 0; 5102981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S8 rxParamIndex; 5103981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5104981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* RX type */ 5105981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fwrite(&typeValue, sizeof(U8), 1, nvsBinFile); 5106981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5107981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* RX length; */ 5108981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fwrite(&lengthValue, sizeof(U16), 1, nvsBinFile); 5109981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5110981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for (rxParamIndex = 0; rxParamIndex < lengthValue; rxParamIndex++) 5111981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5112981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fwrite(&valueToSet, sizeof(U8), 1, nvsBinFile); 5113981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5114981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 5115981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5116981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5117981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/****************************************************************************/ 5118981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Function: WriteEndNVSParam */ 5119981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/****************************************************************************/ 5120981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Description: Write end of NVS */ 5121981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Parameters: nvsBinFile - NVS bin file */ 5122981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Return Value: None */ 5123981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/****************************************************************************/ 5124981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtvoid WriteEndNVSParam(FILE *nvsBinFile) 5125981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 5126981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U16 lengthToSet; 5127981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U8 valueToSet; 5128981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5129981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* version type */ 5130981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt valueToSet = eTLV_LAST; 5131981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fwrite(&valueToSet, sizeof(U8), 1, nvsBinFile); 5132981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5133981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt valueToSet = eTLV_LAST; 5134981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fwrite(&valueToSet, sizeof(U8), 1, nvsBinFile); 5135981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5136981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* version length */ 5137981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt lengthToSet = 0; 5138981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fwrite(&lengthToSet, sizeof(U16), 1, nvsBinFile); 5139981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 5140981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5141981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5142981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/****************************************************************************/ 5143981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Function: FillVersionToNVS */ 5144981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/****************************************************************************/ 5145981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Description: Fill version to the NVS */ 5146981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Parameters: nvsBinFile - NVS bin file */ 5147981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* oldVersionValid - old verson parameter valide */ 5148981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* buffer - buffer of uin8 values */ 5149981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* maxLengthOfBuffer - maximum length of all the buffer */ 5150981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Return Value: None */ 5151981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/****************************************************************************/ 5152981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* 25.05.2008 Efil Function Created */ 5153981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/****************************************************************************/ 5154981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtvoid FillVersionToNVS(FILE *nvsBinFile, 5155981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S8 *versionStr, 5156981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt const TI_BOOL oldVersionValid, 5157981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt const U8 *buffer, 5158981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt const U32 maxLengthOfBuffer) 5159981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 5160981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#define NUMBER_OF_DIGIT_VERISON 3 5161981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U8 version[NUMBER_OF_DIGIT_VERISON]; 5162981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U8 charToVersion = 0; 5163981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U8 tempStr[MAX_NVS_VERSION_LENGTH]; 5164981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U8 numberOfVersionDigit; 5165981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U8 valueToSet; 5166981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U16 lengthToSet; 5167981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 index; 5168981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 lengthOfStructStr; 5169981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 startParamIndex; 5170981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 endVersionParamIndex; 5171981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U8 indexForDefaultVersion; 5172981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5173981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* version type */ 5174981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt valueToSet = eNVS_VERSION; 5175981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt fwrite(&valueToSet, sizeof(U8), 1, nvsBinFile); 5176981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5177981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* version length */ 5178981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt lengthToSet = NUMBER_OF_DIGIT_VERISON; 5179981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fwrite(&lengthToSet, sizeof(U16), 1, nvsBinFile); 5180981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5181981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (versionStr != NULL) 5182981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5183981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt lengthOfStructStr = os_strlen(versionStr); 5184981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5185981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for (numberOfVersionDigit = 0, charToVersion = 0, index = 0; 5186981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt (index < MAX_NVS_VERSION_LENGTH) && (numberOfVersionDigit < NUMBER_OF_DIGIT_VERISON); charToVersion = 0, index++) 5187981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5188981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt while ((versionStr[index] != '.') && (index < lengthOfStructStr)) 5189981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5190981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if ((versionStr[index] < '0') || (versionStr[index] > '9')) 5191981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5192981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt index++; 5193981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5194981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 5195981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5196981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt tempStr[charToVersion++] = versionStr[index++]; 5197981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5198981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5199981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5200981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt tempStr[charToVersion] = '\0'; 5201981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5202981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (0 == os_strlen((PS8)tempStr)) 5203981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5204981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for (valueToSet = 0, indexForDefaultVersion = 0; indexForDefaultVersion < NUMBER_OF_DIGIT_VERISON - numberOfVersionDigit; indexForDefaultVersion++) 5205981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5206981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fwrite(&valueToSet, sizeof(U8), 1, nvsBinFile); 5207981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5208981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5209981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 5210981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5211981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5212981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5213981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt version[numberOfVersionDigit] = (U8)os_atoi((PS8)tempStr); 5214981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fwrite(&(version[numberOfVersionDigit]), sizeof(U8), 1, nvsBinFile); 5215981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5216981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt numberOfVersionDigit++; 5217981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5218981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5219981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 5220981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5221981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (oldVersionValid) 5222981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5223981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5224981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt startParamIndex = NVS_PRE_PARAMETERS_LENGTH + NVS_VERSION_PARAMETER_INDEX; 5225981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt endVersionParamIndex = startParamIndex + NUMBER_OF_DIGIT_VERISON; 5226981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5227981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (maxLengthOfBuffer >= endVersionParamIndex) 5228981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5229981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for (index = startParamIndex; index < endVersionParamIndex; index++) 5230981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5231981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt valueToSet = buffer[index]; 5232981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fwrite(&valueToSet, sizeof(U8), 1, nvsBinFile); 5233981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5234981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5235981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 5236981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5237981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt valueToSet = 0; 5238981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5239981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for (index = startParamIndex; index < endVersionParamIndex; index++) 5240981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5241981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fwrite(&valueToSet, sizeof(U8), 1, nvsBinFile); 5242981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5243981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5244981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5245981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5246981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 5247981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5248981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt valueToSet = 0; 5249981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5250981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for (index = 0; index < NUMBER_OF_DIGIT_VERISON; index++) 5251981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5252981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fwrite(&valueToSet, sizeof(U8), 1, nvsBinFile); 5253981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5254981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5255981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5256981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5257981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5258981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 5259981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5260981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5261981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5262981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID build_nvs_file(THandle hCuCmd, TTestCmd data, S8 updatedProtocol) 5263981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 5264981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#ifdef _WINDOWS 5265981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt PS8 nvs_file_name = (PS8)"/windows/nvs_map.bin"; 5266981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#else 5267981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt PS8 nvs_file_name = (PS8)"./nvs_map.bin"; 5268981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif /*_WINDOWS*/ 5269981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt FILE *nvsBinFile = NULL; 5270981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S8 index; 5271981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U8 valueToSet = 0; 5272981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S8 nvsFileValid = TRUE; 5273981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt uint8 Buffer[MAX_TLV_LENGTH]; 5274981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt uint8 uTxTypeIndexValue; 5275981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt uint8 uRrxTypeIndexValue; 5276981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5277981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5278981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memset (Buffer, 0, MAX_TLV_LENGTH); 5279981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5280981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (NULL == (nvsBinFile = os_fopen (nvs_file_name, OS_FOPEN_READ_BINARY))) 5281981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5282981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt nvsFileValid = FALSE; 5283981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5284981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 5285981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5286981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fread(Buffer,1, MAX_TLV_LENGTH, nvsBinFile); 5287981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fclose(nvsBinFile); 5288981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5289981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt uTxTypeIndexValue = Buffer[NVS_PRE_PARAMETERS_LENGTH + NVS_TX_TYPE_INDEX]; 5290981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt uRrxTypeIndexValue = Buffer[NVS_PRE_PARAMETERS_LENGTH + NVS_RX_TYPE_INDEX]; 5291981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5292981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* if the NVS includes just the MAC preamble (the firest 24B) don't use the Tx and RX values */ 5293981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if ((uTxTypeIndexValue != eNVS_RADIO_TX_PARAMETERS) || (uRrxTypeIndexValue != eNVS_RADIO_RX_PARAMETERS)) 5294981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5295981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt nvsFileValid = FALSE; 5296981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5297981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5298981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5299981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* open NVS file */ 5300981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (NULL == (nvsBinFile = os_fopen (nvs_file_name, OS_FOPEN_WRITE_BINARY))) 5301981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5302981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Open NVS file failed\n"); 5303981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 5304981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5305981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5306981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt FillMACAddressToNVS(hCuCmd, nvsBinFile); 5307981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5308981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* fill end burst transaction zeros*/ 5309981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5310981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for (index = 0; index < NVS_END_BURST_TRANSACTION_LENGTH; index++) 5311981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5312981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fwrite(&valueToSet, sizeof(U8), 1, nvsBinFile); 5313981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5314981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5315981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* fill zeros to Align TLV start address*/ 5316981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for (index = 0; index < NVS_ALING_TLV_START_ADDRESS_LENGTH; index++) 5317981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5318981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fwrite(&valueToSet, sizeof(U8), 1, nvsBinFile); 5319981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5320981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5321981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* Getting from TX BiP Command*/ 5322981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(NVS_FILE_TX_PARAMETERS_UPDATE == updatedProtocol) 5323981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5324981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* Fill new TX BiP values*/ 5325981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt FillTXParameterToNVS(nvsBinFile, &data.testCmd_u.P2GCal); 5326981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (nvsFileValid) 5327981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5328981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /*set Parameters of RX from the previous file*/ 5329981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt FillOldRXParameterToNVS(nvsBinFile, 5330981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt Buffer); 5331981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5332981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5333981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 5334981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5335981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt FillDefaultRXParameterToNVS(nvsBinFile); 5336981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5337981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5338981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5339981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else /* Fill new RX BiP values*/ 5340981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5341981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (nvsFileValid) 5342981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5343981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /*set Parameters of TX from the previous file*/ 5344981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt FillOldTXParameterToNVS(nvsBinFile, 5345981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt Buffer); 5346981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5347981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5348981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 5349981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5350981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt FillDefaultTXParameterToNVS(nvsBinFile); 5351981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5352981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5353981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* Fill new RX BiP values*/ 5354981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt FillRXParameterToNVS(nvsBinFile, &data.testCmd_u.RxPlt); 5355981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5356981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5357981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5358981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5359981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /*Fill the NVS version to the NVS*/ 5360981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt FillVersionToNVS(nvsBinFile, 5361981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmd_u.P2GCal.oNvsVersion, 5362981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt nvsFileValid, 5363981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmd_u.P2GCal.oNvsStruct.Buffer, 5364981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmd_u.P2GCal.oNvsStruct.Length); 5365981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5366981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* End of NVS*/ 5367981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt WriteEndNVSParam(nvsBinFile); 5368981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5369981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5370981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#if 0 5371981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* Save NVS Results in NVS file */ 5372981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (data.testCmd_u.P2GCal.oNvsStruct.Length != os_fwrite(data.testCmd_u.P2GCal.oNvsStruct.Buffer, sizeof(U8),data.testCmd_u.P2GCal.oNvsStruct.Length,nvs_file)) 5373981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5374981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Writing to NVS file failed\n"); 5375981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5376981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 5377981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5378981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* close NVS File */ 5379981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_fclose(nvsBinFile); 5380981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 5381981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5382981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_BIP_BufferCalReferencePoint(THandle hCuCmd, ConParm_t parm[], U16 nParms) 5383981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 5384981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#define NUM_OF_PARAMETERS_REF_POINT 3 5385981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5386981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 5387981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TTestCmd data; 5388981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5389981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(nParms != NUM_OF_PARAMETERS_REF_POINT) 5390981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5391981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Missing Param1: iReferencePointDetectorValue\n"); 5392981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Missing Param2: iReferencePointPower\n"); 5393981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Missing Param3: isubBand\n"); 5394981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 5395981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5396981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 5397981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5398981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memset(&data, 0, sizeof(TTestCmd)); 5399981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmdId = TEST_CMD_UPDATE_PD_REFERENCE_POINT; 5400981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* data.testCmd_u.PdBufferCalReferencePoint.iReferencePointDetectorValue = 189; 5401981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmd_u.PdBufferCalReferencePoint.iReferencePointPower = 12; 5402981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmd_u.PdBufferCalReferencePoint.isubBand = 0; 1- BG 2-*/ 5403981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5404981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmd_u.PdBufferCalReferencePoint.iReferencePointDetectorValue = parm[0].value; 5405981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmd_u.PdBufferCalReferencePoint.iReferencePointPower = parm[1].value; 5406981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmd_u.PdBufferCalReferencePoint.isubBand = (U8)parm[2].value; 5407981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5408981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_Radio_Test(pCuCmd->hCuCommon, &data)) 5409981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5410981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"BufferCalReferencePoint has failed\n"); 5411981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 5412981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5413981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5414981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"BufferCalReferencePoint was configured succesfully\n"); 5415981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5416981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 5417981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 5418981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5419981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5420981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* P2G Calibration */ 5421981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_BIP_StartBIP(THandle hCuCmd, ConParm_t parm[], U16 nParms) 5422981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 5423981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 5424981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TTestCmd data; 5425981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 i; 5426981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5427981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memset(&data, 0, sizeof(TTestCmd)); 5428981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5429981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmdId = TEST_CMD_P2G_CAL; 5430981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5431981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmd_u.P2GCal.iSubBandMask = 0; 5432981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for (i = 0; i < 8; i++) 5433981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5434981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmd_u.P2GCal.iSubBandMask |= (U8)parm[i].value << i; 5435981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5436981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5437981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (data.testCmd_u.P2GCal.iSubBandMask == 0) 5438981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5439981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"At least one sub-band should be enabled\n"); 5440981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 5441981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5442981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5443981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_Radio_Test(pCuCmd->hCuCommon, &data)) 5444981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5445981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Tx calibration start has failed\n"); 5446981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 5447981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5448981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5449981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (TI_OK != data.testCmd_u.P2GCal.oRadioStatus) { 5450981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Tx calibration returned status: %d\n", data.testCmd_u.P2GCal.oRadioStatus); 5451981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 5452981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5453981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5454981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* for (i=0;i<data.testCmd_u.P2GCal.oNvsStruct.Length;i++) { 5455981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"nvs buffer[%d]=%x\n, ", i, data.testCmd_u.P2GCal.oNvsStruct.Buffer[i]); 5456981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } */ 5457981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5458981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt build_nvs_file(hCuCmd, data, NVS_FILE_TX_PARAMETERS_UPDATE); 5459981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 5460981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5461981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_BIP_EnterRxBIP(THandle hCuCmd, ConParm_t parm[], U16 nParms) 5462981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 5463981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 5464981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TTestCmd data; 5465981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5466981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memset(&data, 0, sizeof(TTestCmd)); 5467981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5468981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmdId = TEST_CMD_RX_PLT_ENTER; 5469981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5470981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_Radio_Test(pCuCmd->hCuCommon, &data)) 5471981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5472981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Enter Rx calibration has failed\n"); 5473981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 5474981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5475981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5476981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5477981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (TI_OK != data.testCmd_u.RxPlt.oRadioStatus) { 5478981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Enter Rx calibration returned status: %d\n", data.testCmd_u.RxPlt.oRadioStatus); 5479981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 5480981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5481981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5482981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 5483981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5484981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5485981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_BIP_StartRxBIP(THandle hCuCmd, ConParm_t parm[], U16 nParms) 5486981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 5487981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 5488981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TTestCmd data; 5489981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5490981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memset(&data, 0, sizeof(TTestCmd)); 5491981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5492981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmdId = TEST_CMD_RX_PLT_CAL; 5493981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmd_u.RxPlt.iExternalSignalPowerLevel = (S32)parm[0].value; 5494981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5495981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_Radio_Test(pCuCmd->hCuCommon, &data)) 5496981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5497981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Rx calibration has failed\n"); 5498981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 5499981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5500981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5501981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (TI_OK != data.testCmd_u.RxPlt.oRadioStatus) { 5502981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Rx calibration returned status: %d\n", data.testCmd_u.RxPlt.oRadioStatus); 5503981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 5504981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5505981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5506981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt build_nvs_file(hCuCmd, data, NVS_FILE_RX_PARAMETERS_UPDATE); 5507981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5508981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 5509981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5510981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_BIP_ExitRxBIP(THandle hCuCmd, ConParm_t parm[], U16 nParms) 5511981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 5512981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 5513981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TTestCmd data; 5514981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5515981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memset(&data, 0, sizeof(TTestCmd)); 5516981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5517981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.testCmdId = TEST_CMD_RX_PLT_EXIT; 5518981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5519981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_Radio_Test(pCuCmd->hCuCommon, &data)) 5520981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5521981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Exit Rx calibration has failed\n"); 5522981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 5523981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5524981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5525981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5526981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (TI_OK != data.testCmd_u.RxPlt.oRadioStatus) { 5527981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Exit Rx calibration returned status: %d\n", data.testCmd_u.RxPlt.oRadioStatus); 5528981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 5529981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5530981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5531981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 5532981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5533981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5534981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5535981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_SetPrivacyAuth(THandle hCuCmd, ConParm_t parm[], U16 nParms) 5536981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 5537981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 5538981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 AuthMode; 5539981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5540981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms ) 5541981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5542981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Setting privacy authentication to %ld\n", parm[0].value); 5543981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt AuthMode = parm[0].value; 5544981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (pCuCmd->hWpaCore == NULL) 5545981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5546981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* we can only accept WEP or OPEN configurations */ 5547981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if((AuthMode >= os802_11AuthModeOpen) && (AuthMode <= os802_11AuthModeAutoSwitch)) 5548981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5549981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_SetU32(pCuCmd->hCuCommon, RSN_EXT_AUTHENTICATION_MODE, AuthMode)) return; 5550981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5551981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 5552981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5553981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_ERROR, (PS8)"Error - CuCmd_SetPrivacyAuth - cannot set mode (%ld) when Suppl is not present\n", AuthMode); 5554981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 5555981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5556981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5557981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 5558981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5559981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#ifndef NO_WPA_SUPPL 5560981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != WpaCore_SetAuthMode(pCuCmd->hWpaCore, AuthMode)) return; 5561981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 5562981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5563981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5564981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 5565981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5566981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#ifdef WPA_ENTERPRISE 5567981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt static named_value_t auth_mode_type[] = { 5568981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { os802_11AuthModeOpen, (PS8)"Open" }, 5569981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { os802_11AuthModeShared, (PS8)"Shared" }, 5570981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { os802_11AuthModeAutoSwitch, (PS8)"AutoSwitch"}, 5571981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { os802_11AuthModeWPA, (PS8)"WPA" }, 5572981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { os802_11AuthModeWPAPSK, (PS8)"WPAPSK" }, 5573981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { os802_11AuthModeWPANone, (PS8)"WPANone" }, 5574981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { os802_11AuthModeWPA2, (PS8)"WPA2" }, 5575981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { os802_11AuthModeWPA2PSK, (PS8)"WPA2PSK" }, 5576981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt }; 5577981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#else 5578981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt static named_value_t auth_mode_type[] = { 5579981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { os802_11AuthModeOpen, (PS8)"Open" }, 5580981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { os802_11AuthModeShared, (PS8)"Shared" }, 5581981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { os802_11AuthModeWPAPSK, (PS8)"WPAPSK" }, 5582981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { os802_11AuthModeWPA2PSK, (PS8)"WPA2PSK" }, 5583981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt }; 5584981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 5585981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5586981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (pCuCmd->hWpaCore == NULL) 5587981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5588981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetU32(pCuCmd->hCuCommon, RSN_EXT_AUTHENTICATION_MODE, &AuthMode)) return; 5589981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5590981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 5591981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5592981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#ifndef NO_WPA_SUPPL 5593981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != WpaCore_GetAuthMode(pCuCmd->hWpaCore, &AuthMode)) return; 5594981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 5595981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5596981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5597981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt print_available_values(auth_mode_type); 5598981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"AuthenticationMode=%d\n", AuthMode ); 5599981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5600981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 5601981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5602981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_SetPrivacyEap(THandle hCuCmd, ConParm_t parm[], U16 nParms) 5603981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 5604981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 5605981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt OS_802_11_EAP_TYPES EapType; 5606981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 i; 5607981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt named_value_t EapType_type[] = { 5608981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { OS_EAP_TYPE_NONE, (PS8)"OS_EAP_TYPE_NONE" }, 5609981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { OS_EAP_TYPE_MD5_CHALLENGE, (PS8)"OS_EAP_TYPE_MD5_CHALLENGE" }, 5610981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { OS_EAP_TYPE_GENERIC_TOKEN_CARD, (PS8)"OS_EAP_TYPE_GENERIC_TOKEN_CARD" }, 5611981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { OS_EAP_TYPE_TLS, (PS8)"OS_EAP_TYPE_TLS" }, 5612981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { OS_EAP_TYPE_LEAP, (PS8)"OS_EAP_TYPE_LEAP" }, 5613981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { OS_EAP_TYPE_TTLS, (PS8)"OS_EAP_TYPE_TTLS" }, 5614981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { OS_EAP_TYPE_PEAP, (PS8)"OS_EAP_TYPE_PEAP" }, 5615981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { OS_EAP_TYPE_MS_CHAP_V2, (PS8)"OS_EAP_TYPE_MS_CHAP_V2" }, 5616981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { OS_EAP_TYPE_FAST, (PS8)"OS_EAP_TYPE_FAST" } 5617981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt }; 5618981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5619981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* check if we have supplicant */ 5620981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (pCuCmd->hWpaCore == NULL) 5621981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5622981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_ERROR, (PS8)"Error - CuCmd_SetPrivacyEap - cannot set EapType when Suppl is not present\n"); 5623981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 5624981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5625981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5626981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms ) 5627981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5628981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt EapType = parm[0].value; 5629981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* check if the param is valid */ 5630981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CU_CMD_FIND_NAME_ARRAY(i, EapType_type, EapType); 5631981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(i == SIZE_ARR(EapType_type)) 5632981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5633981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"CuCmd_SetPrivacyEap, EapType %d is not defined!\n", EapType); 5634981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 5635981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5636981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5637981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#ifndef NO_WPA_SUPPL 5638981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5639981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != WpaCore_SetPrivacyEap(pCuCmd->hWpaCore, EapType)) 5640981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Error Setting EapType to %ld\n", EapType); 5641981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 5642981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Setting EapType to %ld\n", EapType); 5643981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5644981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 5645981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* 5646981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt WEXT phase I 5647981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_SetEAPType( g_id_adapter, (OS_802_11_EAP_TYPES) parm[0].value ); 5648981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_SetEAPTypeDriver( g_id_adapter, (OS_802_11_EAP_TYPES) parm[0].value ); 5649981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt */ 5650981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5651981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5652981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 5653981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5654981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt print_available_values(EapType_type); 5655981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5656981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 5657981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5658981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5659981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_SetPrivacyEncryption(THandle hCuCmd, ConParm_t parm[], U16 nParms) 5660981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 5661981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 5662981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 EncryptionType; 5663981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#ifndef NO_WPA_SUPPL 5664981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt OS_802_11_ENCRYPTION_TYPES EncryptionTypePairWise; 5665981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt OS_802_11_ENCRYPTION_TYPES EncryptionTypeGroup; 5666981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 5667981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 i; 5668981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5669981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms ) 5670981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5671981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt EncryptionType = parm[0].value; 5672981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5673981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* check if the param is valid */ 5674981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CU_CMD_FIND_NAME_ARRAY(i, encrypt_type, EncryptionType); 5675981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(i == SIZE_ARR(encrypt_type)) 5676981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5677981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"CuCmd_SetPrivacyEncryption, EncryptionType %d is not defined!\n", EncryptionType); 5678981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 5679981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5680981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5681981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (pCuCmd->hWpaCore == NULL) 5682981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5683981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if((EncryptionType == OS_ENCRYPTION_TYPE_NONE) || (EncryptionType == OS_ENCRYPTION_TYPE_WEP)) 5684981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5685981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_SetU32(pCuCmd->hCuCommon, RSN_ENCRYPTION_STATUS_PARAM, (U32)EncryptionType)) return; 5686981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5687981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 5688981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5689981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_ERROR, (PS8)"ERROR - CuCmd_SetPrivacyEncryption - can't set EncryptionType %s when not connected to supplicant",encrypt_type[i].name); 5690981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 5691981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5692981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5693981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 5694981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5695981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#ifndef NO_WPA_SUPPL 5696981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt switch(EncryptionType) 5697981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5698981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case OS_ENCRYPTION_TYPE_NONE: 5699981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt EncryptionTypePairWise = OS_ENCRYPTION_TYPE_NONE; 5700981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt EncryptionTypeGroup = OS_ENCRYPTION_TYPE_NONE; 5701981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 5702981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case OS_ENCRYPTION_TYPE_WEP: 5703981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt EncryptionTypePairWise = OS_ENCRYPTION_TYPE_WEP; 5704981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt EncryptionTypeGroup = OS_ENCRYPTION_TYPE_WEP; 5705981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 5706981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case OS_ENCRYPTION_TYPE_TKIP: 5707981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt EncryptionTypePairWise = OS_ENCRYPTION_TYPE_TKIP; 5708981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt EncryptionTypeGroup = OS_ENCRYPTION_TYPE_TKIP; 5709981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 5710981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case OS_ENCRYPTION_TYPE_AES: 5711981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt EncryptionTypePairWise = OS_ENCRYPTION_TYPE_AES; 5712981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt EncryptionTypeGroup = OS_ENCRYPTION_TYPE_AES; 5713981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 5714981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5715981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5716981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != WpaCore_SetEncryptionPairWise(pCuCmd->hWpaCore, EncryptionTypePairWise)) return; 5717981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != WpaCore_SetEncryptionGroup(pCuCmd->hWpaCore, EncryptionTypeGroup)) return; 5718981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 5719981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5720981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5721981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5722981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Setting privacy encryption to %ld\n", encrypt_type[i]); 5723981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5724981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 5725981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5726981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (pCuCmd->hWpaCore == NULL) 5727981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5728981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetU32(pCuCmd->hCuCommon, RSN_ENCRYPTION_STATUS_PARAM, &EncryptionType)) return; 5729981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5730981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt switch (EncryptionType) 5731981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5732981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case TWD_CIPHER_NONE: 5733981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt EncryptionType = OS_ENCRYPTION_TYPE_NONE; 5734981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 5735981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case TWD_CIPHER_WEP: 5736981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case TWD_CIPHER_WEP104: 5737981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt EncryptionType = OS_ENCRYPTION_TYPE_WEP; 5738981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 5739981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case TWD_CIPHER_TKIP: 5740981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt EncryptionType = OS_ENCRYPTION_TYPE_TKIP; 5741981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 5742981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case TWD_CIPHER_AES_WRAP: 5743981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case TWD_CIPHER_AES_CCMP: 5744981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt EncryptionType = OS_ENCRYPTION_TYPE_AES; 5745981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 5746981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt default: 5747981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_ERROR, (PS8)"ERROR - CuCmd_SetPrivacyEncryption - unknown encryption type (%d)",EncryptionType); 5748981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 5749981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5750981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5751981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 5752981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5753981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#ifndef NO_WPA_SUPPL 5754981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != WpaCore_GetEncryptionPairWise(pCuCmd->hWpaCore, &EncryptionTypePairWise)) return; 5755981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != WpaCore_GetEncryptionGroup(pCuCmd->hWpaCore, &EncryptionTypeGroup)) return; 5756981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5757981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if((EncryptionTypePairWise == OS_ENCRYPTION_TYPE_NONE) && (EncryptionTypeGroup == OS_ENCRYPTION_TYPE_NONE)) 5758981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt EncryptionType = OS_ENCRYPTION_TYPE_NONE; 5759981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else if((EncryptionTypePairWise == OS_ENCRYPTION_TYPE_WEP) && (EncryptionTypeGroup == OS_ENCRYPTION_TYPE_WEP)) 5760981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt EncryptionType = OS_ENCRYPTION_TYPE_WEP; 5761981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else if((EncryptionTypePairWise == OS_ENCRYPTION_TYPE_TKIP) && (EncryptionTypeGroup == OS_ENCRYPTION_TYPE_TKIP)) 5762981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt EncryptionType = OS_ENCRYPTION_TYPE_TKIP; 5763981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else if((EncryptionTypePairWise == OS_ENCRYPTION_TYPE_AES) && (EncryptionTypeGroup == OS_ENCRYPTION_TYPE_AES)) 5764981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt EncryptionType = OS_ENCRYPTION_TYPE_AES; 5765981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 5766981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5767981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_ERROR, (PS8)"ERROR - CuCmd_SetPrivacyEncryption - unknown encryption type (%d,%d)",EncryptionTypePairWise, EncryptionTypeGroup); 5768981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 5769981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5770981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 5771981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5772981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5773981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt print_available_values(encrypt_type); 5774981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Encryption = %d\n", EncryptionType); 5775981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5776981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 5777981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5778981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_SetPrivacyKeyType(THandle hCuCmd, ConParm_t parm[], U16 nParms) 5779981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 5780981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 5781981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt OS_802_11_KEY_TYPES KeyType; 5782981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 i; 5783981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt static named_value_t KeyType_type[] = { 5784981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { OS_KEY_TYPE_STATIC, (PS8)"STATIC" }, 5785981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { OS_KEY_TYPE_DYNAMIC, (PS8)"DYNAMIC"} 5786981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt }; 5787981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5788981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* check if we have supplicant */ 5789981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (pCuCmd->hWpaCore == NULL) 5790981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5791981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_ERROR, (PS8)"Error - CuCmd_SetPrivacyEncryptGroup - cannot set encryption Group when Suppl is not present\n"); 5792981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 5793981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5794981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5795981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms ) 5796981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5797981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt KeyType = parm[0].value; 5798981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* check if the param is valid */ 5799981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CU_CMD_FIND_NAME_ARRAY(i, KeyType_type, KeyType); 5800981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(i == SIZE_ARR(KeyType_type)) 5801981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5802981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"CuCmd_SetPrivacyKeyType - KeyType %d is not defined!\n", KeyType); 5803981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 5804981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5805981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5806981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Setting KeyType to %ld\n", KeyType); 5807981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5808981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* 5809981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt WEXT phase I 5810981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_SetKeyType( g_id_adapter, (OS_802_11_KEY_TYPES)parm[0].value ); 5811981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt */ 5812981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5813981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 5814981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5815981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt print_available_values(KeyType_type); 5816981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5817981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 5818981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5819981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_SetPrivacyMixedMode(THandle hCuCmd, ConParm_t parm[], U16 nParms) 5820981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 5821981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 5822981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 MixedMode; 5823981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5824981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms ) 5825981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5826981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt MixedMode = parm[0].value; 5827981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Setting MixedMode to %s\n", (MixedMode)?"True":"False"); 5828981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5829981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCommon_SetU32(pCuCmd->hCuCommon, TIWLN_802_11_MIXED_MODE_SET, MixedMode); 5830981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5831981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 5832981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5833981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetU32(pCuCmd->hCuCommon, TIWLN_802_11_MIXED_MODE_GET, &MixedMode)) return; 5834981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5835981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Mixed Mode: 0 - FALSE, 1 - TRUE\n"); 5836981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Mixed Mode =%s\n", (MixedMode)?"True":"False"); 5837981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5838981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 5839981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5840981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_SetPrivacyAnyWpaMode(THandle hCuCmd, ConParm_t parm[], U16 nParms) 5841981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 5842981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 5843981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#ifndef NO_WPA_SUPPL 5844981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 anyWpaMode; 5845981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5846981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms ) 5847981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5848981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt anyWpaMode = parm[0].value; 5849981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Setting anyWpaMode to %s\n", (anyWpaMode)?"True":"False"); 5850981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5851981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt WpaCore_SetAnyWpaMode(pCuCmd->hWpaCore,(U8)anyWpaMode); 5852981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5853981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 5854981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5855981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt WpaCore_GetAnyWpaMode(pCuCmd->hWpaCore,(U8 *)&anyWpaMode); 5856981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Any WPA Mode: 0 - FALSE, 1 - TRUE\n"); 5857981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Any WPA =%s\n", (anyWpaMode)?"True":"False"); 5858981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5859981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#else 5860981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Any Wpa Mode support only in Linux supplicants\n"); 5861981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 5862981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 5863981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5864981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_SetPrivacyCredentials(THandle hCuCmd, ConParm_t parm[], U16 nParms) 5865981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 5866981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 5867981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5868981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms == 0 ) 5869981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 5870981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5871981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (pCuCmd->hWpaCore == NULL) 5872981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5873981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_ERROR, (PS8)"Error - CuCmd_SetPrivacyPskPassPhrase - cannot set Credential password phrase when Suppl is not present\n"); 5874981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 5875981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5876981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5877981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#ifndef NO_WPA_SUPPL 5878981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5879981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms == 2 ) 5880981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5881981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt WpaCore_SetCredentials(pCuCmd->hWpaCore,(PU8)(parm[0].value),(PU8)(parm[1].value)); 5882981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5883981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else if( nParms == 1 ) 5884981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5885981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt WpaCore_SetCredentials(pCuCmd->hWpaCore,(PU8)(parm[0].value),NULL); 5886981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5887981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 5888981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 5889981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5890981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_SetPrivacyPskPassPhrase(THandle hCuCmd, ConParm_t parm[], U16 nParms) 5891981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 5892981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 5893981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 IsHexKey = FALSE; 5894981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U8 buf[WPACORE_MAX_PSK_STRING_LENGTH]; 5895981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt PS8 pPassphrase; 5896981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 len; 5897981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5898981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms == 0 ) 5899981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 5900981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5901981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* check if we have supplicant */ 5902981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (pCuCmd->hWpaCore == NULL) 5903981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5904981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_ERROR, (PS8)"Error - CuCmd_SetPrivacyPskPassPhrase - cannot set PSK password phrase when Suppl is not present\n"); 5905981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 5906981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5907981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5908981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt len = os_strlen((PS8)(parm[0].value)); 5909981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pPassphrase = ((PS8)parm[0].value); 5910981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memset(buf, 0, WPACORE_MAX_PSK_STRING_LENGTH); 5911981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5912981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5913981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms == 2 ) 5914981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5915981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( !os_strcmp( (PS8) parm[1].value, (PS8)"hex") ) 5916981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt IsHexKey = TRUE; 5917981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else if(!os_strcmp( (PS8) parm[1].value, (PS8)"text")) 5918981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt IsHexKey = FALSE; 5919981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5920981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5921981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( IsHexKey ) 5922981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5923981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U8 val_l; 5924981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U8 val_u; 5925981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 i; 5926981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5927981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( len != WPACORE_PSK_HEX_LENGTH ) 5928981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5929981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"The hexa PSKPassphrase must be at length of %d hexa digits \n",WPACORE_PSK_HEX_LENGTH); 5930981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 5931981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5932981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5933981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for( i=0; *pPassphrase; i++, pPassphrase++ ) 5934981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5935981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt val_u = CuCmd_Char2Hex(*pPassphrase); 5936981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( val_u == ((U8)-1) ) return; 5937981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt val_l = CuCmd_Char2Hex(*(++pPassphrase)); 5938981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( val_l == ((U8)-1) ) return; 5939981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt buf[i] = ((val_u << 4) | val_l); 5940981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5941981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5942981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 5943981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5944981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (len > WPACORE_MAX_PSK_STRING_LENGTH || len < WPACORE_MIN_PSK_STRING_LENGTH) 5945981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5946981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"The PSKPassphrase must be between %d to %d chars \n", WPACORE_MIN_PSK_STRING_LENGTH, WPACORE_MAX_PSK_STRING_LENGTH); 5947981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 5948981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5949981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5950981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memcpy((PVOID)buf, (PVOID)pPassphrase, len); 5951981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5952981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5953981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Setting PSKPassphrase to %s\n", (PS8) parm[0].value); 5954981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#ifndef NO_WPA_SUPPL 5955981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt WpaCore_SetPskPassPhrase(pCuCmd->hWpaCore, buf); 5956981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 5957981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5958981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 5959981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5960981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_SetPrivacyCertificate(THandle hCuCmd, ConParm_t parm[], U16 nParms) 5961981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 5962981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 5963981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5964981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms == 0 ) 5965981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 5966981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5967981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (pCuCmd->hWpaCore == NULL) 5968981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5969981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_ERROR, (PS8)"Error - CuCmd_SetPrivacyPskPassPhrase - cannot set Certification when Suppl is not present\n"); 5970981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 5971981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5972981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#ifndef NO_WPA_SUPPL 5973981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt WpaCore_SetCertificate(pCuCmd->hWpaCore,(PU8)(parm[0].value)); 5974981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 5975981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5976981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5977981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 5978981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5979981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_StopSuppl(THandle hCuCmd, ConParm_t parm[], U16 nParms) 5980981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 5981981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 5982981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5983981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* check if we have supplicant */ 5984981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (pCuCmd->hWpaCore == NULL) 5985981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 5986981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_ERROR, (PS8)"Error - CuCmd_StopSuppl - cannot stop supplicant when Suppl is not present :-)\n"); 5987981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 5988981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 5989981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#ifndef NO_WPA_SUPPL 5990981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt WpaCore_StopSuppl(pCuCmd->hWpaCore); 5991981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 5992981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 5993981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5994981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_ChangeSupplDebugLevels(THandle hCuCmd, ConParm_t parm[], U16 nParms) 5995981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 5996981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 5997981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 5998981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* check if we have supplicant */ 5999981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (pCuCmd->hWpaCore == NULL) 6000981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 6001981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_ERROR, (PS8)"Error - CuCmd_DebugSuppl - cannot debug supplicant when Suppl is not present :-)\n"); 6002981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 6003981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 6004981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#ifndef NO_WPA_SUPPL 6005981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt WpaCore_ChangeSupplDebugLevels(pCuCmd->hWpaCore, parm[0].value, parm[1].value, parm[2].value); 6006981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 6007981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 6008981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 6009981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_AddPrivacyKey(THandle hCuCmd, ConParm_t parm[], U16 nParms) 6010981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 6011981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 6012981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt PS8 buf; 6013981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 key_id = 0; 6014981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 def_flag = 0; 6015981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 IsHexKey = TRUE; 6016981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt OS_802_11_WEP data; 6017981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U8 val_l, val_u; 6018981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 len; 6019981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 6020981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt buf = (PS8)parm[0].value; 6021981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt key_id = (U32)parm[1].value; 6022981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( parm[2].value ) def_flag = 0x80000000; 6023981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memset(data.KeyMaterial,0,sizeof(data.KeyMaterial)); 6024981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt len = os_strlen((PS8)buf); 6025981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 6026981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(key_id > 3) 6027981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 6028981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"the key index must be between 0 and 3\n"); 6029981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 6030981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 6031981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 6032981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( nParms >= 4 ) 6033981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 6034981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( !os_strcmp( (PS8) parm[3].value, (PS8)"hex") ) 6035981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt IsHexKey = TRUE; 6036981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else if( !os_strcmp( (PS8) parm[3].value, (PS8)"HEX") ) 6037981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt IsHexKey = TRUE; 6038981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else if(!os_strcmp( (PS8) parm[3].value, (PS8)"text")) 6039981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt IsHexKey = FALSE; 6040981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else if(!os_strcmp( (PS8) parm[3].value, (PS8)"TEXT")) 6041981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt IsHexKey = FALSE; 6042981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 6043981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 6044981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( IsHexKey ) 6045981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 6046981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S32 i; 6047981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 6048981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if( len % 2 ) 6049981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 6050981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"The hexa key should be even length\n"); 6051981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 6052981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 6053981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(len <= 10) /*10 is number of character for key length 40 bit*/ 6054981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.KeyLength = 5; 6055981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else if(len <= 26) /*26 is number of character for key length 128 bit*/ 6056981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.KeyLength = 13; 6057981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else if(len <= 58) /*58 is number of character for key length 256 bit*/ 6058981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.KeyLength = 29; 6059981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 6060981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 6061981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_ERROR, (PS8)"ERROR - CuCmd_AddPrivacyKey - key length not valid\n" ); 6062981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 6063981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 6064981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 6065981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for( i=0; *buf; i++, buf++ ) 6066981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 6067981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt val_u = CuCmd_Char2Hex(*buf); 6068981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(val_u == ((U8)-1)) return; 6069981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt val_l = CuCmd_Char2Hex(*(++buf)); 6070981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(val_l == ((U8)-1)) return; 6071981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.KeyMaterial[i] = ((val_u << 4) | val_l); 6072981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 6073981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 6074981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else /* for ascii key */ 6075981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 6076981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(len <= 5) /*10 is number of character for key length 40 bit*/ 6077981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.KeyLength = 5; 6078981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else if(len <= 13) /*26 is number of character for key length 128 bit*/ 6079981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.KeyLength = 13; 6080981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else if(len <= 29) /*58 is number of character for key length 256 bit*/ 6081981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.KeyLength = 29; 6082981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 6083981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 6084981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_ERROR, (PS8)"ERROR - CuCmd_AddPrivacyKey - key length not valid\n" ); 6085981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 6086981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 6087981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memcpy((PVOID)data.KeyMaterial, (PVOID)buf, len); 6088981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 6089981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 6090981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.KeyIndex = def_flag | key_id; 6091981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt data.Length = sizeof(OS_802_11_WEP); 6092981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 6093981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* check if we have supplicant */ 6094981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (pCuCmd->hWpaCore == NULL) 6095981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 6096981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCommon_AddKey(pCuCmd->hCuCommon, &data); 6097981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 6098981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 6099981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 6100981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#ifndef NO_WPA_SUPPL 6101981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt WpaCore_AddKey(pCuCmd->hWpaCore, &data); 6102981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 6103981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 6104981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 6105981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 6106981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_RemovePrivacyKey(THandle hCuCmd, ConParm_t parm[], U16 nParms) 6107981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 6108981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 6109981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 6110981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* check if we have supplicant */ 6111981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCommon_RemoveKey(pCuCmd->hCuCommon, parm[0].value); 6112981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 6113981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 6114981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_GetPrivacyDefaultKey(THandle hCuCmd, ConParm_t parm[], U16 nParms) 6115981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 6116981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 6117981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 DefaultKeyId; 6118981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 6119981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* check if we have supplicant */ 6120981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (pCuCmd->hWpaCore == NULL) 6121981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 6122981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetU32(pCuCmd->hCuCommon, RSN_DEFAULT_KEY_ID, &DefaultKeyId)) return; 6123981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 6124981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 6125981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 6126981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#ifndef NO_WPA_SUPPL 6127981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != WpaCore_GetDefaultKey(pCuCmd->hWpaCore, &DefaultKeyId)) return; 6128981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 6129981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 6130981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 6131981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"WEP default key ID = %d\n", DefaultKeyId ); 6132981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 6133981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 6134981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_EnableKeepAlive (THandle hCuCmd, ConParm_t parm[], U16 nParms) 6135981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 6136981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 6137981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 6138981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (OK != CuCommon_SetU32 (pCuCmd->hCuCommon, POWER_MGR_KEEP_ALIVE_ENA_DIS, 1)) 6139981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 6140981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf (CU_MSG_ERROR, (PS8)"Unable to enable keep-alive messages\n"); 6141981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 6142981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 6143981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 6144981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_DisableKeepAlive (THandle hCuCmd, ConParm_t parm[], U16 nParms) 6145981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 6146981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 6147981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 6148981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (OK != CuCommon_SetU32 (pCuCmd->hCuCommon, POWER_MGR_KEEP_ALIVE_ENA_DIS, 0)) 6149981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 6150981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf (CU_MSG_ERROR, (PS8)"Unable to disable keep-alive messages\n"); 6151981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 6152981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 6153981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 6154981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_AddKeepAliveMessage (THandle hCuCmd, ConParm_t parm[], U16 nParms) 6155981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 6156981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t *pCuCmd = (CuCmd_t*)hCuCmd; 6157981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TKeepAliveTemplate keepAliveParams; 6158981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 6159981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (4 != nParms) 6160981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 6161981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf (CU_MSG_ERROR, (PS8)"Number of params to add keep-alive message is %d\n", nParms); 6162981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 6163981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 6164981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 6165981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* copy keep-alive params */ 6166981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt keepAliveParams.keepAliveParams.index = (U8)parm[ 0 ].value; 6167981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt keepAliveParams.keepAliveParams.interval = parm[ 1 ].value; 6168981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt keepAliveParams.keepAliveParams.trigType = parm[ 2 ].value; 6169981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt keepAliveParams.keepAliveParams.enaDisFlag = 1; /* set to enable */ 6170981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt keepAliveParams.msgBufferLength = os_strlen ((PS8)parm[ 3 ].value); 6171981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (0 == (keepAliveParams.msgBufferLength %2)) 6172981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 6173981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt keepAliveParams.msgBufferLength = keepAliveParams.msgBufferLength / 2; 6174981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 6175981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 6176981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 6177981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt keepAliveParams.msgBufferLength = (keepAliveParams.msgBufferLength / 2) + 1; 6178981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 6179981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* convert the string to hexadeciaml values, and copy it */ 6180981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_atox_string ((U8*)parm[ 3 ].value, &keepAliveParams.msgBuffer[ 0 ]); 6181981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 6182981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (TI_OK != CuCommon_SetBuffer(pCuCmd->hCuCommon, POWER_MGR_KEEP_ALIVE_ADD_REM, 6183981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &(keepAliveParams), sizeof(TKeepAliveTemplate))) 6184981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 6185981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf (CU_MSG_ERROR, (PS8)"Unable to add keep-alive message\n"); 6186981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 6187981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 6188981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 6189981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_RemoveKeepAliveMessage (THandle hCuCmd, ConParm_t parm[], U16 nParms) 6190981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 6191981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t *pCuCmd = (CuCmd_t*)hCuCmd; 6192981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TKeepAliveTemplate keepAliveParams; 6193981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 6194981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (1 != nParms) 6195981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 6196981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf (CU_MSG_ERROR, (PS8)"Number of params to remove keep-alive message is %d\n", nParms); 6197981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return; 6198981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 6199981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 6200981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* copy keep-alive params */ 6201981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt keepAliveParams.keepAliveParams.index = (U8)parm[ 0 ].value; 6202981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt keepAliveParams.keepAliveParams.enaDisFlag = 0; /* set to disable */ 6203981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt keepAliveParams.keepAliveParams.interval = 1000; /* FW validate all parameters, so some reasonable values must be used */ 6204981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt keepAliveParams.keepAliveParams.trigType = KEEP_ALIVE_TRIG_TYPE_PERIOD_ONLY; 6205981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 6206981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (OK != CuCommon_SetBuffer (pCuCmd->hCuCommon, POWER_MGR_KEEP_ALIVE_ADD_REM, 6207981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &(keepAliveParams), sizeof(TKeepAliveTemplate))) 6208981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 6209981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf (CU_MSG_ERROR, (PS8)"Unable to remove keep-alive message\n"); 6210981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 6211981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 6212981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 6213981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_ShowKeepAlive (THandle hCuCmd, ConParm_t parm[], U16 nParms) 6214981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 6215981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t *pCuCmd = (CuCmd_t*)hCuCmd; 6216981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TKeepAliveConfig tConfig; 6217981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt U32 uIndex, uNameIndex; 6218981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S8 msgBuffer[ KEEP_ALIVE_TEMPLATE_MAX_LENGTH * 2 ]; 6219981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 6220981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (OK != CuCommon_GetSetBuffer (pCuCmd->hCuCommon, POWER_MGR_KEEP_ALIVE_GET_CONFIG, 6221981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &(tConfig), sizeof(TKeepAliveConfig))) 6222981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 6223981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf (CU_MSG_ERROR, (PS8)"Unable to read keep-alive configuration\n"); 6224981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 6225981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 6226981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf (CU_MSG_ERROR, (PS8)"Keep-Alive configuration:\n" 6227981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt "-------------------------\n"); 6228981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (TRUE == tConfig.enaDisFlag) 6229981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 6230981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf (CU_MSG_ERROR, (PS8)"Keep-Alive global flag set to enabled\n\n"); 6231981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 6232981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 6233981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 6234981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf (CU_MSG_ERROR, (PS8)"Keep-Alive global flag set to disabled\n\n"); 6235981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 6236981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 6237981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf (CU_MSG_ERROR, (PS8)"%-8s %-8s %-9s %-10s %s\n", (PS8)"Index", (PS8)"Enabled", (PS8)"Trig Type", (PS8)"Interval", (PS8)"Pattern"); 6238981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf (CU_MSG_ERROR, (PS8)"-----------------------------------------------\n"); 6239981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt for (uIndex = 0; uIndex < KEEP_ALIVE_MAX_USER_MESSAGES; uIndex++) 6240981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 6241981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (TRUE == tConfig.templates[ uIndex ].keepAliveParams.enaDisFlag) 6242981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 6243981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CU_CMD_FIND_NAME_ARRAY (uNameIndex, tKeepAliveTriggerTypes, 6244981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt tConfig.templates[ uIndex ].keepAliveParams.trigType); 6245981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_xtoa_string (&(tConfig.templates[ uIndex ].msgBuffer[ 0 ]), 6246981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt tConfig.templates[ uIndex ].msgBufferLength, (U8*)&(msgBuffer[ 0 ])); 6247981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf (CU_MSG_ERROR, (PS8)"%-8d %-8d %-9s %-10d %s\n", uIndex, 6248981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt tConfig.templates[ uIndex ].keepAliveParams.enaDisFlag, 6249981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt tKeepAliveTriggerTypes[ uNameIndex ].name, 6250981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt tConfig.templates[ uIndex ].keepAliveParams.interval, 6251981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt &(msgBuffer[ 0 ])); 6252981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 6253981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 6254981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 6255981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf (CU_MSG_ERROR, (PS8)"%-8d %-8d %-9s %-10d %s\n", uIndex, 0, (PS8)"N/A", 0, (PS8)"N/A"); 6256981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 6257981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 6258981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 6259981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 6260981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_ShowAbout(THandle hCuCmd, ConParm_t parm[], U16 nParms) 6261981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 6262981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 6263981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt S8 FwVesrion[FW_VERSION_LEN]; 6264981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 6265981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if(OK != CuCommon_GetBuffer(pCuCmd->hCuCommon, SITE_MGR_FIRMWARE_VERSION_PARAM, 6266981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt FwVesrion, FW_VERSION_LEN)) return; 6267981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 6268981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#ifdef XCC_MODULE_INCLUDED 6269981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Driver version: %s_XCC\n", 6270981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt SW_VERSION_STR); 6271981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#else 6272981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Driver version: %s_NOCCX\n", 6273981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt SW_VERSION_STR); 6274981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif/* XCC_MODULE_INCLUDED*/ 6275981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_error_printf(CU_MSG_INFO2, (PS8)"Firmware version: %s\n", 6276981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt FwVesrion); 6277981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 6278981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 6279981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 6280981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtVOID CuCmd_Quit(THandle hCuCmd, ConParm_t parm[], U16 nParms) 6281981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 6282981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt CuCmd_t* pCuCmd = (CuCmd_t*)hCuCmd; 6283981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 6284981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt Console_Stop(pCuCmd->hConsole); 6285981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 6286981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 6287981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 6288