Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of SNICInterface by
Diff: YDwifiInterface.cpp
- Revision:
- 5:ef3befe3edad
- Parent:
- 3:9f90024d7fb2
- Child:
- 6:70f522934032
diff -r 99cc93fe7d88 -r ef3befe3edad YDwifiInterface.cpp --- a/YDwifiInterface.cpp Thu Mar 13 03:38:25 2014 +0000 +++ b/YDwifiInterface.cpp Thu Mar 13 08:44:33 2014 +0000 @@ -62,7 +62,6 @@ // Wait UART response ret = mUartCommand.wait(); - printf( "getFWversion wait:%d\r\n", ret ); if( ret != 0 ) { printf( "getFWversion failed\r\n" ); @@ -218,7 +217,7 @@ ret = -1; } gMEMPOOL_PAYLOAD.free( payload_buf ); - return 0; + return ret; } int C_YDwifiInterface::scan( const char *ssid_p, unsigned char *bssid_p @@ -305,5 +304,174 @@ } gMEMPOOL_PAYLOAD.free( payload_buf ); + return ret; +} + +int C_YDwifiInterface::wifi_on( const char *country_p ) +{ + // Parameter check + if( country_p == NULL ) + { + printf("wifi_on parameter error\r\n"); + return -1; + } + + // Get buffer for response payloadfrom MemoryPool + tagMEMPOOL_BLOCK_T *payload_buf = gMEMPOOL_PAYLOAD.alloc(); + if( payload_buf == NULL ) + { + printf("wifi_on payload_buf NULL\r\n"); + return -1; + } + + tagWIFI_ON_REQ_T req; + unsigned char payload_array[UART_REQUEST_PAYLOAD_MAX]; + unsigned char command_array[UART_REQUEST_PAYLOAD_MAX]; + unsigned short payload_len; + unsigned int command_len; + int ret; + + // Make request + req.cmd_sid = UART_CMD_SID_WIFI_ON_REQ; + req.seq = mUartRequestSeq++; + memcpy( req.country, country_p, COUNTRYC_CODE_LENTH ); + + // Make command payload + payload_len = C_YD_UartMsg::makePayload( sizeof(tagWIFI_ON_REQ_T), (unsigned char *)&req, payload_array ); + // Make all command request + command_len = C_YD_UartMsg::makeRequest( UART_CMD_ID_WIFI, payload_array, payload_len, command_array ); + + // Set data for response + mUartCommand.setCommandID( UART_CMD_ID_WIFI ); + mUartCommand.setCommandSID( req.cmd_sid ); + mUartCommand.setResponseBuf( payload_buf->buf ); + + // Send uart command request + sendUart( command_len, command_array ); + + // Wait UART response + ret = mUartCommand.wait(); + if( ret != 0 ) + { + printf( "wifi_on failed\r\n" ); + gMEMPOOL_PAYLOAD.free( payload_buf ); + return -1; + } + + if( mUartCommand.getCommandStatus() != 0 ) + { + printf("wifi_on status:%02x\r\n", mUartCommand.getCommandStatus()); + ret = -1; + } + gMEMPOOL_PAYLOAD.free( payload_buf ); + + return ret; +} + +int C_YDwifiInterface::wifi_off() +{ + // Get buffer for response payloadfrom MemoryPool + tagMEMPOOL_BLOCK_T *payload_buf = gMEMPOOL_PAYLOAD.alloc(); + if( payload_buf == NULL ) + { + printf("wifi_off payload_buf NULL\r\n"); + return -1; + } + + tagWIFI_OFF_REQ_T req; + unsigned char payload_array[UART_REQUEST_PAYLOAD_MAX]; + unsigned char command_array[UART_REQUEST_PAYLOAD_MAX]; + unsigned short payload_len; + unsigned int command_len; + int ret; + + // Make request + req.cmd_sid = UART_CMD_SID_WIFI_OFF_REQ; + req.seq = mUartRequestSeq++; + + // Make command payload + payload_len = C_YD_UartMsg::makePayload( sizeof(tagWIFI_OFF_REQ_T), (unsigned char *)&req, payload_array ); + // Make all command request + command_len = C_YD_UartMsg::makeRequest( UART_CMD_ID_WIFI, payload_array, payload_len, command_array ); + + // Set data for response + mUartCommand.setCommandID( UART_CMD_ID_WIFI ); + mUartCommand.setCommandSID( req.cmd_sid ); + mUartCommand.setResponseBuf( payload_buf->buf ); + + // Send uart command request + sendUart( command_len, command_array ); + + // Wait UART response + ret = mUartCommand.wait(); + if( ret != 0 ) + { + printf( "wifi_off failed\r\n" ); + gMEMPOOL_PAYLOAD.free( payload_buf ); + return -1; + } + + if( mUartCommand.getCommandStatus() != 0 ) + { + printf("wifi_off status:%02x\r\n", mUartCommand.getCommandStatus()); + ret = -1; + } + gMEMPOOL_PAYLOAD.free( payload_buf ); + + return ret; +} + +int C_YDwifiInterface::getRssi( signed char *rssi_p ) +{ + if( rssi_p == NULL ) + { + printf("getRssi parameter error\r\n"); + return -1; + } + + // Get buffer for response payload from MemoryPool + tagMEMPOOL_BLOCK_T *payload_buf = gMEMPOOL_PAYLOAD.alloc(); + if( payload_buf == NULL ) + { + printf("getRssi payload_buf NULL\r\n"); + return -1; + } + + tagWIFI_GET_STA_RSSI_REQ_T req; + unsigned char payload_array[UART_REQUEST_PAYLOAD_MAX]; + unsigned char command_array[UART_REQUEST_PAYLOAD_MAX]; + unsigned short payload_len; + unsigned int command_len; + int ret; + + // Make request + req.cmd_sid = UART_CMD_SID_WIFI_GET_STA_RSSI_REQ; + req.seq = mUartRequestSeq++; + + // Make command payload + payload_len = C_YD_UartMsg::makePayload( sizeof(tagWIFI_GET_STA_RSSI_REQ_T), (unsigned char *)&req, payload_array ); + // Make all command request + command_len = C_YD_UartMsg::makeRequest( UART_CMD_ID_WIFI, payload_array, payload_len, command_array ); + + // Set data for response + mUartCommand.setCommandID( UART_CMD_ID_WIFI ); + mUartCommand.setCommandSID( req.cmd_sid ); + mUartCommand.setResponseBuf( payload_buf->buf ); + + // Send uart command request + sendUart( command_len, command_array ); + + // Wait UART response + ret = mUartCommand.wait(); + if( ret != 0 ) + { + printf( "getRssi failed\r\n" ); + gMEMPOOL_PAYLOAD.free( payload_buf ); + return -1; + } + + *rssi_p = (signed char)payload_buf->buf[2]; + + gMEMPOOL_PAYLOAD.free( payload_buf ); return 0; -} \ No newline at end of file +}