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