ban4jp - / SNICInterface_PullReq

Dependents:   SNIC-httpclient-example SNIC-ntpclient-example

Fork of SNICInterface by muRata

Committer:
kishino
Date:
Wed Mar 19 01:48:37 2014 +0000
Revision:
11:c49007d49e52
Parent:
SNICwifiInterface.cpp@10:49ffd373066b
C_SNICwifi  was modified to singleton class.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kishino 11:c49007d49e52 1 #include "SNICInterface.h"
kishino 8:50d2509479cd 2 #include "SNICwifi_uartmsg.h"
kishino 8:50d2509479cd 3
kishino 8:50d2509479cd 4 using namespace murata_wifi;
kishino 8:50d2509479cd 5
kishino 11:c49007d49e52 6 C_SNICInterface::C_SNICInterface( PinName tx, PinName rx, PinName cts, PinName rts, PinName reset, PinName alarm, int baud)
kishino 8:50d2509479cd 7 {
kishino 11:c49007d49e52 8 mSNICWifi_p = C_SNICwifi::getInstance();
kishino 11:c49007d49e52 9
kishino 11:c49007d49e52 10 mUART_tx = tx;
kishino 11:c49007d49e52 11 mUART_rx = rx;
kishino 11:c49007d49e52 12 mUART_cts = cts;
kishino 11:c49007d49e52 13 mUART_rts = rts;;
kishino 11:c49007d49e52 14 mUART_baud = baud;
kishino 11:c49007d49e52 15 mModuleReset = reset;
kishino 8:50d2509479cd 16 }
kishino 8:50d2509479cd 17
kishino 11:c49007d49e52 18 int C_SNICInterface::init()
kishino 11:c49007d49e52 19 {
kishino 8:50d2509479cd 20 /* Initialize UART */
kishino 11:c49007d49e52 21 mSNICWifi_p->initUart( mUART_tx, mUART_rx, mUART_baud );
kishino 11:c49007d49e52 22
kishino 8:50d2509479cd 23 /* Initialize SNIC API */
kishino 9:a98b45e766c8 24 // Get buffer for response payload from MemoryPool
kishino 11:c49007d49e52 25 tagMEMPOOL_BLOCK_T *payload_buf = mSNICWifi_p->getAlocCmdBuf();
kishino 8:50d2509479cd 26 if( payload_buf == NULL )
kishino 8:50d2509479cd 27 {
kishino 8:50d2509479cd 28 printf("snic_init payload_buf NULL\r\n");
kishino 8:50d2509479cd 29 return -1;
kishino 8:50d2509479cd 30 }
kishino 8:50d2509479cd 31
kishino 8:50d2509479cd 32 tagSNIC_INIT_REQ_T req;
kishino 8:50d2509479cd 33 // Make request
kishino 8:50d2509479cd 34 req.cmd_sid = UART_CMD_SID_SNIC_INIT_REQ;
kishino 8:50d2509479cd 35 req.seq = mUartRequestSeq++;
kishino 8:50d2509479cd 36 req.buf_size = 0x800;
kishino 8:50d2509479cd 37
kishino 8:50d2509479cd 38 unsigned char command_array[UART_REQUEST_PAYLOAD_MAX];
kishino 10:49ffd373066b 39 unsigned int command_len;
kishino 10:49ffd373066b 40 // Preparation of command
kishino 11:c49007d49e52 41 command_len = mSNICWifi_p->preparationSendCommand( UART_CMD_ID_SNIC, req.cmd_sid, (unsigned char *)&req
kishino 11:c49007d49e52 42 , sizeof(tagSNIC_INIT_REQ_T), payload_buf->buf, command_array );
kishino 8:50d2509479cd 43
kishino 8:50d2509479cd 44 // Send uart command request
kishino 11:c49007d49e52 45 mSNICWifi_p->sendUart( command_len, command_array );
kishino 10:49ffd373066b 46
kishino 10:49ffd373066b 47 int ret;
kishino 8:50d2509479cd 48 // Wait UART response
kishino 11:c49007d49e52 49 ret = mSNICWifi_p->mUartCommand.wait();
kishino 8:50d2509479cd 50 if( ret != 0 )
kishino 8:50d2509479cd 51 {
kishino 8:50d2509479cd 52 printf( "snic_init failed\r\n" );
kishino 11:c49007d49e52 53 mSNICWifi_p->freeCmdBuf( payload_buf );
kishino 8:50d2509479cd 54 return -1;
kishino 8:50d2509479cd 55 }
kishino 8:50d2509479cd 56
kishino 11:c49007d49e52 57 if( mSNICWifi_p->mUartCommand.getCommandStatus() != 0 )
kishino 8:50d2509479cd 58 {
kishino 11:c49007d49e52 59 printf("snic_init status:%02x\r\n", mSNICWifi_p->mUartCommand.getCommandStatus());
kishino 8:50d2509479cd 60 ret = -1;
kishino 8:50d2509479cd 61 }
kishino 11:c49007d49e52 62 mSNICWifi_p->freeCmdBuf( payload_buf );
kishino 8:50d2509479cd 63
kishino 8:50d2509479cd 64 return ret;
kishino 8:50d2509479cd 65 }
kishino 8:50d2509479cd 66
kishino 11:c49007d49e52 67 int C_SNICInterface::getFWVersion( unsigned char *version_p )
kishino 8:50d2509479cd 68 {
kishino 8:50d2509479cd 69 // Get buffer for response payload from MemoryPool
kishino 11:c49007d49e52 70 tagMEMPOOL_BLOCK_T *payload_buf = mSNICWifi_p->getAlocCmdBuf();
kishino 8:50d2509479cd 71 if( payload_buf == NULL )
kishino 8:50d2509479cd 72 {
kishino 8:50d2509479cd 73 printf("getFWVersion payload_buf NULL\r\n");
kishino 8:50d2509479cd 74 return -1;
kishino 8:50d2509479cd 75 }
kishino 8:50d2509479cd 76
kishino 8:50d2509479cd 77 tagGEN_FW_VER_GET_REQ_T req;
kishino 8:50d2509479cd 78 // Make request
kishino 8:50d2509479cd 79 req.cmd_sid = UART_CMD_SID_GEN_FW_VER_GET_REQ;
kishino 8:50d2509479cd 80 req.seq = mUartRequestSeq++;
kishino 8:50d2509479cd 81
kishino 10:49ffd373066b 82 unsigned char command_array[UART_REQUEST_PAYLOAD_MAX];
kishino 10:49ffd373066b 83 unsigned int command_len;
kishino 10:49ffd373066b 84 // Preparation of command
kishino 11:c49007d49e52 85 command_len = mSNICWifi_p->preparationSendCommand( UART_CMD_ID_GEN, req.cmd_sid, (unsigned char *)&req
kishino 10:49ffd373066b 86 , sizeof(tagGEN_FW_VER_GET_REQ_T), payload_buf->buf, command_array );
kishino 10:49ffd373066b 87
kishino 8:50d2509479cd 88 int ret;
kishino 8:50d2509479cd 89
kishino 8:50d2509479cd 90 // Send uart command request
kishino 11:c49007d49e52 91 mSNICWifi_p->sendUart( command_len, command_array );
kishino 8:50d2509479cd 92
kishino 8:50d2509479cd 93 // Wait UART response
kishino 11:c49007d49e52 94 ret = mSNICWifi_p->mUartCommand.wait();
kishino 8:50d2509479cd 95 if( ret != 0 )
kishino 8:50d2509479cd 96 {
kishino 8:50d2509479cd 97 printf( "getFWversion failed\r\n" );
kishino 11:c49007d49e52 98 mSNICWifi_p->freeCmdBuf( payload_buf );
kishino 8:50d2509479cd 99 return -1;
kishino 8:50d2509479cd 100 }
kishino 8:50d2509479cd 101
kishino 11:c49007d49e52 102 if( mSNICWifi_p->mUartCommand.getCommandStatus() == 0 )
kishino 8:50d2509479cd 103 {
kishino 8:50d2509479cd 104 unsigned char version_len = payload_buf->buf[3];
kishino 8:50d2509479cd 105 memcpy( version_p, &payload_buf->buf[4], version_len );
kishino 8:50d2509479cd 106 }
kishino 11:c49007d49e52 107 mSNICWifi_p->freeCmdBuf( payload_buf );
kishino 8:50d2509479cd 108 return 0;
kishino 8:50d2509479cd 109 }
kishino 8:50d2509479cd 110
kishino 11:c49007d49e52 111 int C_SNICInterface::connect(const char *ssid_p, unsigned char ssid_len, E_SECURITY sec_type
kishino 8:50d2509479cd 112 , const char *sec_key_p, unsigned char sec_key_len)
kishino 8:50d2509479cd 113 {
kishino 8:50d2509479cd 114 // Parameter check(SSID)
kishino 8:50d2509479cd 115 if( (ssid_p == NULL) || (ssid_len == 0) )
kishino 8:50d2509479cd 116 {
kishino 8:50d2509479cd 117 printf( "connect failed [ parameter NG:SSID ]\r\n" );
kishino 8:50d2509479cd 118 return -1;
kishino 8:50d2509479cd 119 }
kishino 8:50d2509479cd 120
kishino 8:50d2509479cd 121 // Parameter check(Security key)
kishino 8:50d2509479cd 122 if( (sec_type != e_SEC_OPEN) && ( (sec_key_len == 0) || (sec_key_p == NULL) ) )
kishino 8:50d2509479cd 123 {
kishino 8:50d2509479cd 124 printf( "connect failed [ parameter NG:Security key ]\r\n" );
kishino 8:50d2509479cd 125 return -1;
kishino 8:50d2509479cd 126 }
kishino 8:50d2509479cd 127
kishino 9:a98b45e766c8 128 // Get buffer for response payload from MemoryPool
kishino 11:c49007d49e52 129 tagMEMPOOL_BLOCK_T *payload_buf = mSNICWifi_p->getAlocCmdBuf();
kishino 8:50d2509479cd 130 if( payload_buf == NULL )
kishino 8:50d2509479cd 131 {
kishino 8:50d2509479cd 132 printf("connect payload_buf NULL\r\n");
kishino 8:50d2509479cd 133 return -1;
kishino 8:50d2509479cd 134 }
kishino 8:50d2509479cd 135
kishino 10:49ffd373066b 136 unsigned char buf[UART_REQUEST_PAYLOAD_MAX];
kishino 10:49ffd373066b 137 unsigned int buf_len = 0;
kishino 10:49ffd373066b 138 unsigned char command_array[UART_REQUEST_PAYLOAD_MAX];
kishino 10:49ffd373066b 139 unsigned int command_len;
kishino 8:50d2509479cd 140
kishino 8:50d2509479cd 141 memset( buf, 0, UART_REQUEST_PAYLOAD_MAX );
kishino 8:50d2509479cd 142 // Make request
kishino 8:50d2509479cd 143 buf[0] = UART_CMD_SID_WIFI_JOIN_REQ;
kishino 8:50d2509479cd 144 buf_len++;
kishino 8:50d2509479cd 145 buf[1] = mUartRequestSeq++;
kishino 8:50d2509479cd 146 buf_len++;
kishino 8:50d2509479cd 147 // SSID
kishino 8:50d2509479cd 148 memcpy( &buf[2], ssid_p, ssid_len );
kishino 8:50d2509479cd 149 buf_len += ssid_len;
kishino 8:50d2509479cd 150 buf_len++;
kishino 8:50d2509479cd 151
kishino 8:50d2509479cd 152 // Security mode
kishino 8:50d2509479cd 153 buf[ buf_len ] = (unsigned char)sec_type;
kishino 8:50d2509479cd 154 buf_len++;
kishino 8:50d2509479cd 155
kishino 8:50d2509479cd 156 // Security key
kishino 8:50d2509479cd 157 if( sec_type != e_SEC_OPEN )
kishino 8:50d2509479cd 158 {
kishino 8:50d2509479cd 159 buf[ buf_len ] = sec_key_len;
kishino 8:50d2509479cd 160 buf_len++;
kishino 8:50d2509479cd 161 if( sec_key_len > 0 )
kishino 8:50d2509479cd 162 {
kishino 8:50d2509479cd 163 memcpy( &buf[buf_len], sec_key_p, sec_key_len );
kishino 8:50d2509479cd 164 buf_len += sec_key_len;
kishino 8:50d2509479cd 165 }
kishino 8:50d2509479cd 166 }
kishino 10:49ffd373066b 167
kishino 10:49ffd373066b 168 // Preparation of command
kishino 11:c49007d49e52 169 command_len = mSNICWifi_p->preparationSendCommand( UART_CMD_ID_WIFI, UART_CMD_SID_WIFI_JOIN_REQ, buf
kishino 10:49ffd373066b 170 , buf_len, payload_buf->buf, command_array );
kishino 10:49ffd373066b 171
kishino 8:50d2509479cd 172 // Send uart command request
kishino 11:c49007d49e52 173 mSNICWifi_p->sendUart( command_len, command_array );
kishino 8:50d2509479cd 174
kishino 10:49ffd373066b 175 int ret;
kishino 8:50d2509479cd 176 // Wait UART response
kishino 11:c49007d49e52 177 ret = mSNICWifi_p->mUartCommand.wait();
kishino 8:50d2509479cd 178 if( ret != 0 )
kishino 8:50d2509479cd 179 {
kishino 8:50d2509479cd 180 printf( "join failed\r\n" );
kishino 11:c49007d49e52 181 mSNICWifi_p->freeCmdBuf( payload_buf );
kishino 8:50d2509479cd 182 return -1;
kishino 8:50d2509479cd 183 }
kishino 8:50d2509479cd 184
kishino 11:c49007d49e52 185 if( mSNICWifi_p->mUartCommand.getCommandStatus() != 0 )
kishino 8:50d2509479cd 186 {
kishino 11:c49007d49e52 187 printf("join status:%02x\r\n", mSNICWifi_p->mUartCommand.getCommandStatus());
kishino 8:50d2509479cd 188 ret = -1;
kishino 8:50d2509479cd 189 }
kishino 11:c49007d49e52 190 mSNICWifi_p->freeCmdBuf( payload_buf );
kishino 8:50d2509479cd 191
kishino 8:50d2509479cd 192 return ret;
kishino 8:50d2509479cd 193 }
kishino 8:50d2509479cd 194
kishino 11:c49007d49e52 195 int C_SNICInterface::disconnect()
kishino 8:50d2509479cd 196 {
kishino 9:a98b45e766c8 197 // Get buffer for response payload from MemoryPool
kishino 11:c49007d49e52 198 tagMEMPOOL_BLOCK_T *payload_buf = mSNICWifi_p->getAlocCmdBuf();
kishino 8:50d2509479cd 199 if( payload_buf == NULL )
kishino 8:50d2509479cd 200 {
kishino 8:50d2509479cd 201 printf("disconnect payload_buf NULL\r\n");
kishino 8:50d2509479cd 202 return -1;
kishino 8:50d2509479cd 203 }
kishino 8:50d2509479cd 204
kishino 8:50d2509479cd 205 tagWIFI_DISCONNECT_REQ_T req;
kishino 8:50d2509479cd 206 // Make request
kishino 8:50d2509479cd 207 req.cmd_sid = UART_CMD_SID_WIFI_DISCONNECT_REQ;
kishino 8:50d2509479cd 208 req.seq = mUartRequestSeq++;
kishino 8:50d2509479cd 209
kishino 10:49ffd373066b 210 unsigned char command_array[UART_REQUEST_PAYLOAD_MAX];
kishino 10:49ffd373066b 211 unsigned int command_len;
kishino 10:49ffd373066b 212 // Preparation of command
kishino 11:c49007d49e52 213 command_len = mSNICWifi_p->preparationSendCommand( UART_CMD_ID_WIFI, req.cmd_sid, (unsigned char *)&req
kishino 10:49ffd373066b 214 , sizeof(tagWIFI_DISCONNECT_REQ_T), payload_buf->buf, command_array );
kishino 8:50d2509479cd 215
kishino 8:50d2509479cd 216 // Send uart command request
kishino 11:c49007d49e52 217 mSNICWifi_p->sendUart( command_len, command_array );
kishino 8:50d2509479cd 218
kishino 10:49ffd373066b 219 int ret;
kishino 8:50d2509479cd 220 // Wait UART response
kishino 11:c49007d49e52 221 ret = mSNICWifi_p->mUartCommand.wait();
kishino 8:50d2509479cd 222 if( ret != 0 )
kishino 8:50d2509479cd 223 {
kishino 8:50d2509479cd 224 printf( "disconnect failed\r\n" );
kishino 11:c49007d49e52 225 mSNICWifi_p->freeCmdBuf( payload_buf );
kishino 8:50d2509479cd 226 return -1;
kishino 8:50d2509479cd 227 }
kishino 8:50d2509479cd 228
kishino 11:c49007d49e52 229 if( mSNICWifi_p->mUartCommand.getCommandStatus() != 0 )
kishino 8:50d2509479cd 230 {
kishino 11:c49007d49e52 231 printf("disconnect status:%02x\r\n", mSNICWifi_p->mUartCommand.getCommandStatus());
kishino 8:50d2509479cd 232 ret = -1;
kishino 8:50d2509479cd 233 }
kishino 11:c49007d49e52 234 mSNICWifi_p->freeCmdBuf( payload_buf );
kishino 8:50d2509479cd 235 return ret;
kishino 8:50d2509479cd 236 }
kishino 8:50d2509479cd 237
kishino 11:c49007d49e52 238 int C_SNICInterface::scan( const char *ssid_p, unsigned char *bssid_p
kishino 8:50d2509479cd 239 , void (*result_handler_p)(tagSCAN_RESULT_T *scan_result) )
kishino 8:50d2509479cd 240 {
kishino 9:a98b45e766c8 241 // Get buffer for response payload from MemoryPool
kishino 11:c49007d49e52 242 tagMEMPOOL_BLOCK_T *payload_buf = mSNICWifi_p->getAlocCmdBuf();
kishino 8:50d2509479cd 243 if( payload_buf == NULL )
kishino 8:50d2509479cd 244 {
kishino 8:50d2509479cd 245 printf("scan payload_buf NULL\r\n");
kishino 8:50d2509479cd 246 return -1;
kishino 8:50d2509479cd 247 }
kishino 8:50d2509479cd 248
kishino 8:50d2509479cd 249 tagWIFI_SCAN_REQ_T req;
kishino 10:49ffd373066b 250 unsigned int buf_len = 0;
kishino 8:50d2509479cd 251
kishino 8:50d2509479cd 252 memset( &req, 0, sizeof(tagWIFI_SCAN_REQ_T) );
kishino 8:50d2509479cd 253 // Make request
kishino 8:50d2509479cd 254 req.cmd_sid = UART_CMD_SID_WIFI_SCAN_REQ;
kishino 8:50d2509479cd 255 buf_len++;
kishino 8:50d2509479cd 256 req.seq = mUartRequestSeq++;
kishino 8:50d2509479cd 257 buf_len++;
kishino 8:50d2509479cd 258
kishino 8:50d2509479cd 259 // Set scan type(Active scan)
kishino 8:50d2509479cd 260 req.scan_type = 0;
kishino 8:50d2509479cd 261 buf_len++;
kishino 8:50d2509479cd 262 // Set bss type(any)
kishino 8:50d2509479cd 263 req.bss_type = 2;
kishino 8:50d2509479cd 264 buf_len++;
kishino 8:50d2509479cd 265 // Set BSSID
kishino 8:50d2509479cd 266 if( bssid_p != NULL )
kishino 8:50d2509479cd 267 {
kishino 8:50d2509479cd 268 memcpy( req.bssid, bssid_p, BSSID_MAC_LENTH );
kishino 8:50d2509479cd 269 }
kishino 8:50d2509479cd 270 buf_len += BSSID_MAC_LENTH;
kishino 8:50d2509479cd 271 // Set channel list(0)
kishino 8:50d2509479cd 272 req.chan_list = 0;
kishino 8:50d2509479cd 273 buf_len++;
kishino 8:50d2509479cd 274 //Set SSID
kishino 8:50d2509479cd 275 if( ssid_p != NULL )
kishino 8:50d2509479cd 276 {
kishino 8:50d2509479cd 277 strcpy( (char *)req.ssid, ssid_p );
kishino 8:50d2509479cd 278 buf_len += strlen(ssid_p);
kishino 8:50d2509479cd 279 }
kishino 8:50d2509479cd 280 buf_len++;
kishino 8:50d2509479cd 281
kishino 10:49ffd373066b 282 unsigned char command_array[UART_REQUEST_PAYLOAD_MAX];
kishino 10:49ffd373066b 283 unsigned int command_len;
kishino 10:49ffd373066b 284 // Preparation of command
kishino 11:c49007d49e52 285 command_len = mSNICWifi_p->preparationSendCommand( UART_CMD_ID_WIFI, req.cmd_sid, (unsigned char *)&req
kishino 10:49ffd373066b 286 , buf_len, payload_buf->buf, command_array );
kishino 8:50d2509479cd 287
kishino 8:50d2509479cd 288 // Set scan result callback
kishino 11:c49007d49e52 289 mSNICWifi_p->mUartCommand.setScanResultHandler( result_handler_p );
kishino 8:50d2509479cd 290
kishino 8:50d2509479cd 291 // Send uart command request
kishino 11:c49007d49e52 292 mSNICWifi_p->sendUart( command_len, command_array );
kishino 8:50d2509479cd 293
kishino 10:49ffd373066b 294 int ret;
kishino 8:50d2509479cd 295 // Wait UART response
kishino 11:c49007d49e52 296 ret = mSNICWifi_p->mUartCommand.wait();
kishino 8:50d2509479cd 297 printf( "scan wait:%d\r\n", ret );
kishino 8:50d2509479cd 298 if( ret != 0 )
kishino 8:50d2509479cd 299 {
kishino 8:50d2509479cd 300 printf( "scan failed\r\n" );
kishino 11:c49007d49e52 301 mSNICWifi_p->freeCmdBuf( payload_buf );
kishino 8:50d2509479cd 302 return -1;
kishino 8:50d2509479cd 303 }
kishino 8:50d2509479cd 304
kishino 11:c49007d49e52 305 if( mSNICWifi_p->mUartCommand.getCommandStatus() != 0 )
kishino 8:50d2509479cd 306 {
kishino 11:c49007d49e52 307 printf("scan status:%02x\r\n", mSNICWifi_p->mUartCommand.getCommandStatus());
kishino 8:50d2509479cd 308 ret = -1;
kishino 8:50d2509479cd 309 }
kishino 8:50d2509479cd 310
kishino 11:c49007d49e52 311 mSNICWifi_p->freeCmdBuf( payload_buf );
kishino 8:50d2509479cd 312
kishino 8:50d2509479cd 313 return ret;
kishino 8:50d2509479cd 314 }
kishino 8:50d2509479cd 315
kishino 11:c49007d49e52 316 int C_SNICInterface::wifi_on( const char *country_p )
kishino 8:50d2509479cd 317 {
kishino 8:50d2509479cd 318 // Parameter check
kishino 8:50d2509479cd 319 if( country_p == NULL )
kishino 8:50d2509479cd 320 {
kishino 8:50d2509479cd 321 printf("wifi_on parameter error\r\n");
kishino 8:50d2509479cd 322 return -1;
kishino 8:50d2509479cd 323 }
kishino 8:50d2509479cd 324
kishino 9:a98b45e766c8 325 // Get buffer for response payload from MemoryPool
kishino 11:c49007d49e52 326 tagMEMPOOL_BLOCK_T *payload_buf = mSNICWifi_p->getAlocCmdBuf();
kishino 8:50d2509479cd 327 if( payload_buf == NULL )
kishino 8:50d2509479cd 328 {
kishino 8:50d2509479cd 329 printf("wifi_on payload_buf NULL\r\n");
kishino 8:50d2509479cd 330 return -1;
kishino 8:50d2509479cd 331 }
kishino 8:50d2509479cd 332
kishino 8:50d2509479cd 333 tagWIFI_ON_REQ_T req;
kishino 8:50d2509479cd 334 // Make request
kishino 8:50d2509479cd 335 req.cmd_sid = UART_CMD_SID_WIFI_ON_REQ;
kishino 8:50d2509479cd 336 req.seq = mUartRequestSeq++;
kishino 8:50d2509479cd 337 memcpy( req.country, country_p, COUNTRYC_CODE_LENTH );
kishino 8:50d2509479cd 338
kishino 10:49ffd373066b 339 unsigned char command_array[UART_REQUEST_PAYLOAD_MAX];
kishino 10:49ffd373066b 340 unsigned int command_len;
kishino 10:49ffd373066b 341 // Preparation of command
kishino 11:c49007d49e52 342 command_len = mSNICWifi_p->preparationSendCommand( UART_CMD_ID_WIFI, req.cmd_sid, (unsigned char *)&req
kishino 10:49ffd373066b 343 , sizeof(tagWIFI_ON_REQ_T), payload_buf->buf, command_array );
kishino 8:50d2509479cd 344
kishino 8:50d2509479cd 345 // Send uart command request
kishino 11:c49007d49e52 346 mSNICWifi_p->sendUart( command_len, command_array );
kishino 8:50d2509479cd 347
kishino 10:49ffd373066b 348 int ret;
kishino 8:50d2509479cd 349 // Wait UART response
kishino 11:c49007d49e52 350 ret = mSNICWifi_p->mUartCommand.wait();
kishino 8:50d2509479cd 351 if( ret != 0 )
kishino 8:50d2509479cd 352 {
kishino 8:50d2509479cd 353 printf( "wifi_on failed\r\n" );
kishino 11:c49007d49e52 354 mSNICWifi_p->freeCmdBuf( payload_buf );
kishino 8:50d2509479cd 355 return -1;
kishino 8:50d2509479cd 356 }
kishino 8:50d2509479cd 357
kishino 11:c49007d49e52 358 if( mSNICWifi_p->mUartCommand.getCommandStatus() != 0 )
kishino 8:50d2509479cd 359 {
kishino 11:c49007d49e52 360 printf("wifi_on status:%02x\r\n", mSNICWifi_p->mUartCommand.getCommandStatus());
kishino 8:50d2509479cd 361 ret = -1;
kishino 8:50d2509479cd 362 }
kishino 11:c49007d49e52 363 mSNICWifi_p->freeCmdBuf( payload_buf );
kishino 8:50d2509479cd 364
kishino 8:50d2509479cd 365 return ret;
kishino 8:50d2509479cd 366 }
kishino 8:50d2509479cd 367
kishino 11:c49007d49e52 368 int C_SNICInterface::wifi_off()
kishino 8:50d2509479cd 369 {
kishino 9:a98b45e766c8 370 // Get buffer for response payload from MemoryPool
kishino 11:c49007d49e52 371 tagMEMPOOL_BLOCK_T *payload_buf = mSNICWifi_p->getAlocCmdBuf();
kishino 8:50d2509479cd 372 if( payload_buf == NULL )
kishino 8:50d2509479cd 373 {
kishino 8:50d2509479cd 374 printf("wifi_off payload_buf NULL\r\n");
kishino 8:50d2509479cd 375 return -1;
kishino 8:50d2509479cd 376 }
kishino 8:50d2509479cd 377
kishino 8:50d2509479cd 378 tagWIFI_OFF_REQ_T req;
kishino 8:50d2509479cd 379 // Make request
kishino 8:50d2509479cd 380 req.cmd_sid = UART_CMD_SID_WIFI_OFF_REQ;
kishino 8:50d2509479cd 381 req.seq = mUartRequestSeq++;
kishino 8:50d2509479cd 382
kishino 10:49ffd373066b 383 unsigned char command_array[UART_REQUEST_PAYLOAD_MAX];
kishino 10:49ffd373066b 384 unsigned int command_len;
kishino 10:49ffd373066b 385 // Preparation of command
kishino 11:c49007d49e52 386 command_len = mSNICWifi_p->preparationSendCommand( UART_CMD_ID_WIFI, req.cmd_sid, (unsigned char *)&req
kishino 10:49ffd373066b 387 , sizeof(tagWIFI_OFF_REQ_T), payload_buf->buf, command_array );
kishino 8:50d2509479cd 388
kishino 8:50d2509479cd 389 // Send uart command request
kishino 11:c49007d49e52 390 mSNICWifi_p->sendUart( command_len, command_array );
kishino 8:50d2509479cd 391
kishino 10:49ffd373066b 392 int ret;
kishino 8:50d2509479cd 393 // Wait UART response
kishino 11:c49007d49e52 394 ret = mSNICWifi_p->mUartCommand.wait();
kishino 8:50d2509479cd 395 if( ret != 0 )
kishino 8:50d2509479cd 396 {
kishino 8:50d2509479cd 397 printf( "wifi_off failed\r\n" );
kishino 11:c49007d49e52 398 mSNICWifi_p->freeCmdBuf( payload_buf );
kishino 8:50d2509479cd 399 return -1;
kishino 8:50d2509479cd 400 }
kishino 8:50d2509479cd 401
kishino 11:c49007d49e52 402 if( mSNICWifi_p->mUartCommand.getCommandStatus() != 0 )
kishino 8:50d2509479cd 403 {
kishino 11:c49007d49e52 404 printf("wifi_off status:%02x\r\n", mSNICWifi_p->mUartCommand.getCommandStatus());
kishino 8:50d2509479cd 405 ret = -1;
kishino 8:50d2509479cd 406 }
kishino 11:c49007d49e52 407 mSNICWifi_p->freeCmdBuf( payload_buf );
kishino 8:50d2509479cd 408
kishino 8:50d2509479cd 409 return ret;
kishino 8:50d2509479cd 410 }
kishino 8:50d2509479cd 411
kishino 11:c49007d49e52 412 int C_SNICInterface::getRssi( signed char *rssi_p )
kishino 8:50d2509479cd 413 {
kishino 8:50d2509479cd 414 if( rssi_p == NULL )
kishino 8:50d2509479cd 415 {
kishino 8:50d2509479cd 416 printf("getRssi parameter error\r\n");
kishino 8:50d2509479cd 417 return -1;
kishino 8:50d2509479cd 418 }
kishino 8:50d2509479cd 419
kishino 8:50d2509479cd 420 // Get buffer for response payload from MemoryPool
kishino 11:c49007d49e52 421 tagMEMPOOL_BLOCK_T *payload_buf = mSNICWifi_p->getAlocCmdBuf();
kishino 8:50d2509479cd 422 if( payload_buf == NULL )
kishino 8:50d2509479cd 423 {
kishino 8:50d2509479cd 424 printf("getRssi payload_buf NULL\r\n");
kishino 8:50d2509479cd 425 return -1;
kishino 8:50d2509479cd 426 }
kishino 8:50d2509479cd 427
kishino 8:50d2509479cd 428 tagWIFI_GET_STA_RSSI_REQ_T req;
kishino 8:50d2509479cd 429
kishino 8:50d2509479cd 430 // Make request
kishino 8:50d2509479cd 431 req.cmd_sid = UART_CMD_SID_WIFI_GET_STA_RSSI_REQ;
kishino 8:50d2509479cd 432 req.seq = mUartRequestSeq++;
kishino 8:50d2509479cd 433
kishino 10:49ffd373066b 434 unsigned char command_array[UART_REQUEST_PAYLOAD_MAX];
kishino 10:49ffd373066b 435 unsigned int command_len;
kishino 11:c49007d49e52 436 command_len = mSNICWifi_p->preparationSendCommand( UART_CMD_ID_WIFI, req.cmd_sid, (unsigned char *)&req
kishino 10:49ffd373066b 437 , sizeof(tagWIFI_GET_STA_RSSI_REQ_T), payload_buf->buf, command_array );
kishino 8:50d2509479cd 438
kishino 10:49ffd373066b 439 int ret;
kishino 8:50d2509479cd 440 // Send uart command request
kishino 11:c49007d49e52 441 mSNICWifi_p->sendUart( command_len, command_array );
kishino 8:50d2509479cd 442
kishino 8:50d2509479cd 443 // Wait UART response
kishino 11:c49007d49e52 444 ret = mSNICWifi_p->mUartCommand.wait();
kishino 8:50d2509479cd 445 if( ret != 0 )
kishino 8:50d2509479cd 446 {
kishino 8:50d2509479cd 447 printf( "getRssi failed\r\n" );
kishino 11:c49007d49e52 448 mSNICWifi_p->freeCmdBuf( payload_buf );
kishino 8:50d2509479cd 449 return -1;
kishino 8:50d2509479cd 450 }
kishino 8:50d2509479cd 451
kishino 8:50d2509479cd 452 *rssi_p = (signed char)payload_buf->buf[2];
kishino 8:50d2509479cd 453
kishino 11:c49007d49e52 454 mSNICWifi_p->freeCmdBuf( payload_buf );
kishino 8:50d2509479cd 455 return 0;
kishino 8:50d2509479cd 456 }
kishino 8:50d2509479cd 457
kishino 11:c49007d49e52 458 int C_SNICInterface::getWifiStatus( tagWIFI_STATUS_T *status_p)
kishino 8:50d2509479cd 459 {
kishino 8:50d2509479cd 460 if( status_p == NULL )
kishino 8:50d2509479cd 461 {
kishino 8:50d2509479cd 462 printf("getWifiStatus parameter error\r\n");
kishino 8:50d2509479cd 463 return -1;
kishino 8:50d2509479cd 464 }
kishino 8:50d2509479cd 465
kishino 8:50d2509479cd 466 // Get buffer for response payload from MemoryPool
kishino 11:c49007d49e52 467 tagMEMPOOL_BLOCK_T *payload_buf = mSNICWifi_p->getAlocCmdBuf();
kishino 8:50d2509479cd 468 if( payload_buf == NULL )
kishino 8:50d2509479cd 469 {
kishino 8:50d2509479cd 470 printf("getWifiStatus payload_buf NULL\r\n");
kishino 8:50d2509479cd 471 return -1;
kishino 8:50d2509479cd 472 }
kishino 8:50d2509479cd 473
kishino 8:50d2509479cd 474 tagWIFI_GET_STATUS_REQ_T req;
kishino 8:50d2509479cd 475 // Make request
kishino 8:50d2509479cd 476 req.cmd_sid = UART_CMD_SID_WIFI_GET_STATUS_REQ;
kishino 8:50d2509479cd 477 req.seq = mUartRequestSeq++;
kishino 8:50d2509479cd 478 req.interface = 0;
kishino 8:50d2509479cd 479
kishino 10:49ffd373066b 480 unsigned char command_array[UART_REQUEST_PAYLOAD_MAX];
kishino 10:49ffd373066b 481 unsigned int command_len;
kishino 11:c49007d49e52 482 command_len = mSNICWifi_p->preparationSendCommand( UART_CMD_ID_WIFI, req.cmd_sid, (unsigned char *)&req
kishino 10:49ffd373066b 483 , sizeof(tagWIFI_GET_STATUS_REQ_T), payload_buf->buf, command_array );
kishino 8:50d2509479cd 484
kishino 8:50d2509479cd 485 // Send uart command request
kishino 11:c49007d49e52 486 mSNICWifi_p->sendUart( command_len, command_array );
kishino 8:50d2509479cd 487
kishino 10:49ffd373066b 488 int ret;
kishino 8:50d2509479cd 489 // Wait UART response
kishino 11:c49007d49e52 490 ret = mSNICWifi_p->mUartCommand.wait();
kishino 8:50d2509479cd 491 if( ret != 0 )
kishino 8:50d2509479cd 492 {
kishino 8:50d2509479cd 493 printf( "getWifiStatus failed\r\n" );
kishino 11:c49007d49e52 494 mSNICWifi_p->freeCmdBuf( payload_buf );
kishino 8:50d2509479cd 495 return -1;
kishino 8:50d2509479cd 496 }
kishino 8:50d2509479cd 497
kishino 8:50d2509479cd 498 // set status
kishino 8:50d2509479cd 499 status_p->status = (E_WIFI_STATUS)payload_buf->buf[2];
kishino 8:50d2509479cd 500
kishino 8:50d2509479cd 501 // set Mac address
kishino 8:50d2509479cd 502 if( status_p->status != e_STATUS_OFF )
kishino 8:50d2509479cd 503 {
kishino 8:50d2509479cd 504 memcpy( status_p->mac_address, &payload_buf->buf[3], BSSID_MAC_LENTH );
kishino 8:50d2509479cd 505 }
kishino 8:50d2509479cd 506
kishino 8:50d2509479cd 507 // set SSID
kishino 8:50d2509479cd 508 if( ( status_p->status == e_STA_JOINED ) == ( status_p->status == e_AP_STARTED ) )
kishino 8:50d2509479cd 509 {
kishino 8:50d2509479cd 510 memcpy( status_p->ssid, &payload_buf->buf[9], strlen( (char *)&payload_buf->buf[9]) );
kishino 8:50d2509479cd 511 }
kishino 8:50d2509479cd 512
kishino 11:c49007d49e52 513 mSNICWifi_p->freeCmdBuf( payload_buf );
kishino 8:50d2509479cd 514 return 0;
kishino 8:50d2509479cd 515 }