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, &currentChannel)) 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