SNIC UART Interface library: Serial to Wi-Fi library for Murata TypeYD Wi-Fi module. For more information about TypeYD: http://www.murata.co.jp/products/microwave/module/lbwb1zzydz/index.html
Dependents: SNIC-xively-jumpstart-demo SNIC-FluentLogger-example TCPEchoServer murataDemo ... more
Fork of YDwifiInterface by
Revision 10:49ffd373066b, committed 2014-03-18
- Comitter:
- kishino
- Date:
- Tue Mar 18 02:57:24 2014 +0000
- Parent:
- 9:a98b45e766c8
- Child:
- 11:c49007d49e52
- Commit message:
- [Refactoring]Created the common function for the preparation of request command of UART.
Changed in this revision
--- a/SNICwifi/SNICwifi.cpp Tue Mar 18 01:13:52 2014 +0000 +++ b/SNICwifi/SNICwifi.cpp Tue Mar 18 02:57:24 2014 +0000 @@ -45,6 +45,27 @@ return 0; } +unsigned int C_SNICwifi::preparationSendCommand( unsigned char cmd_id, unsigned char cmd_sid + , unsigned char *req_buf_p, unsigned int req_buf_len + , unsigned char *response_buf_p, unsigned char *command_p ) +{ + unsigned char payload_array[UART_REQUEST_PAYLOAD_MAX]; + unsigned short payload_len; + unsigned int command_len = 0; + + // Make command payload + payload_len = C_SNIC_UartMsg::makePayload( req_buf_len, req_buf_p, payload_array ); + // Make all command request + command_len = C_SNIC_UartMsg::makeRequest( cmd_id, payload_array, payload_len, command_p ); + + // Set data for response + mUartCommand.setCommandID( cmd_id ); + mUartCommand.setCommandSID( cmd_sid ); + mUartCommand.setResponseBuf( response_buf_p ); + + return command_len; +} + int C_SNICwifi::sendUart( unsigned int len, unsigned char *data ) { int ret = 0;
--- a/SNICwifi/SNICwifi.h Tue Mar 18 01:13:52 2014 +0000 +++ b/SNICwifi/SNICwifi.h Tue Mar 18 02:57:24 2014 +0000 @@ -10,6 +10,7 @@ namespace murata_wifi { +#define UART_REQUEST_PAYLOAD_MAX 256 #define MEMPOOL_BLOCK_SIZE 2048 #define MEMPOOL_PAYLOAD_NUM 1 @@ -73,6 +74,19 @@ */ void freeCmdBuf( tagMEMPOOL_BLOCK_T *buf_p ); + /** Preparation of the UART command + @param cmd_id UART Command ID + @param cmd_sid UART Command SubID + @param req_buf_p Pointer of UART request buffer + @param req_buf_len Length of UART request buffer + @param response_buf_p Pointer of UART response buffer + @param command_p Pointer of UART command[output] + @return Length of UART command. + */ + unsigned int preparationSendCommand( unsigned char cmd_id, unsigned char cmd_sid + , unsigned char *req_buf_p, unsigned int req_buf_len + , unsigned char *response_buf_p, unsigned char *command_p ); + protected: /** GEN_FW_VER_GET_REQ Command */ typedef struct @@ -139,11 +153,11 @@ }tagWIFI_SCAN_REQ_T; static C_SNICwifi *mInstance_p; - Thread *mUartRecvThread_p; - Mutex mUartMutex; + Thread *mUartRecvThread_p; + Mutex mUartMutex; // DigitalInOut mModuleReset; C_SNICwifiUartCommand mUartCommand; - RawSerial mUart; + RawSerial mUart; /** Constructor * \param tx mbed pin to use for tx line of Serial interface
--- a/SNICwifiInterface.cpp Tue Mar 18 01:13:52 2014 +0000 +++ b/SNICwifiInterface.cpp Tue Mar 18 02:57:24 2014 +0000 @@ -3,8 +3,6 @@ using namespace murata_wifi; -#define UART_REQUEST_PAYLOAD_MAX 256 - C_SNICwifiInterface::C_SNICwifiInterface( PinName tx, PinName rx, PinName cts, PinName rts, PinName reset, PinName alarm, int baud): C_SNICwifi(tx, rx, cts, rts, reset, alarm, baud) { @@ -30,26 +28,16 @@ req.seq = mUartRequestSeq++; req.buf_size = 0x800; - 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 command payload - payload_len = C_SNIC_UartMsg::makePayload( sizeof(tagSNIC_INIT_REQ_T), (unsigned char *)&req, payload_array ); - // Make all command request - command_len = C_SNIC_UartMsg::makeRequest( UART_CMD_ID_SNIC, payload_array, payload_len, command_array ); + unsigned int command_len; + // Preparation of command + command_len = preparationSendCommand( UART_CMD_ID_SNIC, req.cmd_sid, (unsigned char *)&req + , sizeof(tagSNIC_INIT_REQ_T), payload_buf->buf, command_array ); - // Set data for response - mUartCommand.setCommandID( UART_CMD_ID_SNIC ); - mUartCommand.setCommandSID( req.cmd_sid ); - mUartCommand.setResponseBuf( payload_buf->buf ); - // Send uart command request sendUart( command_len, command_array ); - + + int ret; // Wait UART response ret = mUartCommand.wait(); if( ret != 0 ) @@ -84,22 +72,14 @@ req.cmd_sid = UART_CMD_SID_GEN_FW_VER_GET_REQ; req.seq = mUartRequestSeq++; - unsigned char payload_array[UART_REQUEST_PAYLOAD_MAX]; - unsigned char command_array[UART_REQUEST_PAYLOAD_MAX]; - unsigned short payload_len; - unsigned int command_len; + unsigned char command_array[UART_REQUEST_PAYLOAD_MAX]; + unsigned int command_len; + // Preparation of command + command_len = preparationSendCommand( UART_CMD_ID_GEN, req.cmd_sid, (unsigned char *)&req + , sizeof(tagGEN_FW_VER_GET_REQ_T), payload_buf->buf, command_array ); + int ret; - // Make command payload - payload_len = C_SNIC_UartMsg::makePayload( sizeof(tagGEN_FW_VER_GET_REQ_T), (unsigned char *)&req, payload_array ); - // Make all command request - command_len = C_SNIC_UartMsg::makeRequest( UART_CMD_ID_GEN, payload_array, payload_len, command_array ); - - // Set data for response - mUartCommand.setCommandID( UART_CMD_ID_GEN ); - mUartCommand.setCommandSID( req.cmd_sid ); - mUartCommand.setResponseBuf( payload_buf->buf ); - // Send uart command request sendUart( command_len, command_array ); @@ -146,13 +126,10 @@ return -1; } - unsigned char buf[UART_REQUEST_PAYLOAD_MAX]; - unsigned char payload_array[UART_REQUEST_PAYLOAD_MAX]; - unsigned char command_array[UART_REQUEST_PAYLOAD_MAX]; - unsigned int buf_len = 0; - unsigned short payload_len; - unsigned int command_len; - int ret; + unsigned char buf[UART_REQUEST_PAYLOAD_MAX]; + unsigned int buf_len = 0; + unsigned char command_array[UART_REQUEST_PAYLOAD_MAX]; + unsigned int command_len; memset( buf, 0, UART_REQUEST_PAYLOAD_MAX ); // Make request @@ -180,18 +157,15 @@ buf_len += sec_key_len; } } - // Make command payload - payload_len = C_SNIC_UartMsg::makePayload( buf_len, (unsigned char *)buf, payload_array ); - // Make all command request - command_len = C_SNIC_UartMsg::makeRequest( UART_CMD_ID_WIFI, payload_array, payload_len, command_array ); - // Set data for response - mUartCommand.setCommandID( UART_CMD_ID_WIFI ); - mUartCommand.setCommandSID( UART_CMD_SID_WIFI_JOIN_REQ ); - mUartCommand.setResponseBuf( payload_buf->buf ); - + + // Preparation of command + command_len = preparationSendCommand( UART_CMD_ID_WIFI, UART_CMD_SID_WIFI_JOIN_REQ, buf + , buf_len, payload_buf->buf, command_array ); + // Send uart command request sendUart( command_len, command_array ); + int ret; // Wait UART response ret = mUartCommand.wait(); if( ret != 0 ) @@ -222,29 +196,20 @@ } tagWIFI_DISCONNECT_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_DISCONNECT_REQ; req.seq = mUartRequestSeq++; - // Make command payload - payload_len = C_SNIC_UartMsg::makePayload( sizeof(tagWIFI_DISCONNECT_REQ_T), (unsigned char *)&req, payload_array ); - // Make all command request - command_len = C_SNIC_UartMsg::makeRequest( UART_CMD_ID_WIFI, payload_array, payload_len, command_array ); + unsigned char command_array[UART_REQUEST_PAYLOAD_MAX]; + unsigned int command_len; + // Preparation of command + command_len = preparationSendCommand( UART_CMD_ID_WIFI, req.cmd_sid, (unsigned char *)&req + , sizeof(tagWIFI_DISCONNECT_REQ_T), payload_buf->buf, 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 ); + int ret; // Wait UART response ret = mUartCommand.wait(); if( ret != 0 ) @@ -275,12 +240,7 @@ } tagWIFI_SCAN_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; - unsigned int buf_len = 0; - int ret; + unsigned int buf_len = 0; memset( &req, 0, sizeof(tagWIFI_SCAN_REQ_T) ); // Make request @@ -312,22 +272,19 @@ } buf_len++; - // Make command payload - payload_len = C_SNIC_UartMsg::makePayload( buf_len, (unsigned char *)&req, payload_array ); + unsigned char command_array[UART_REQUEST_PAYLOAD_MAX]; + unsigned int command_len; + // Preparation of command + command_len = preparationSendCommand( UART_CMD_ID_WIFI, req.cmd_sid, (unsigned char *)&req + , buf_len, payload_buf->buf, command_array ); - // Make all command request - command_len = C_SNIC_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 ); // Set scan result callback mUartCommand.setScanResultHandler( result_handler_p ); // Send uart command request sendUart( command_len, command_array ); + int ret; // Wait UART response ret = mUartCommand.wait(); printf( "scan wait:%d\r\n", ret ); @@ -367,30 +324,21 @@ } 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_SNIC_UartMsg::makePayload( sizeof(tagWIFI_ON_REQ_T), (unsigned char *)&req, payload_array ); - // Make all command request - command_len = C_SNIC_UartMsg::makeRequest( UART_CMD_ID_WIFI, payload_array, payload_len, command_array ); + unsigned char command_array[UART_REQUEST_PAYLOAD_MAX]; + unsigned int command_len; + // Preparation of command + command_len = preparationSendCommand( UART_CMD_ID_WIFI, req.cmd_sid, (unsigned char *)&req + , sizeof(tagWIFI_ON_REQ_T), payload_buf->buf, 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 ); + int ret; // Wait UART response ret = mUartCommand.wait(); if( ret != 0 ) @@ -421,29 +369,20 @@ } 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_SNIC_UartMsg::makePayload( sizeof(tagWIFI_OFF_REQ_T), (unsigned char *)&req, payload_array ); - // Make all command request - command_len = C_SNIC_UartMsg::makeRequest( UART_CMD_ID_WIFI, payload_array, payload_len, command_array ); + unsigned char command_array[UART_REQUEST_PAYLOAD_MAX]; + unsigned int command_len; + // Preparation of command + command_len = preparationSendCommand( UART_CMD_ID_WIFI, req.cmd_sid, (unsigned char *)&req + , sizeof(tagWIFI_OFF_REQ_T), payload_buf->buf, 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 ); + int ret; // Wait UART response ret = mUartCommand.wait(); if( ret != 0 ) @@ -480,26 +419,17 @@ } 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_SNIC_UartMsg::makePayload( sizeof(tagWIFI_GET_STA_RSSI_REQ_T), (unsigned char *)&req, payload_array ); - // Make all command request - command_len = C_SNIC_UartMsg::makeRequest( UART_CMD_ID_WIFI, payload_array, payload_len, command_array ); + unsigned char command_array[UART_REQUEST_PAYLOAD_MAX]; + unsigned int command_len; + command_len = preparationSendCommand( UART_CMD_ID_WIFI, req.cmd_sid, (unsigned char *)&req + , sizeof(tagWIFI_GET_STA_RSSI_REQ_T), payload_buf->buf, command_array ); - // Set data for response - mUartCommand.setCommandID( UART_CMD_ID_WIFI ); - mUartCommand.setCommandSID( req.cmd_sid ); - mUartCommand.setResponseBuf( payload_buf->buf ); - + int ret; // Send uart command request sendUart( command_len, command_array ); @@ -535,30 +465,20 @@ } tagWIFI_GET_STATUS_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_STATUS_REQ; req.seq = mUartRequestSeq++; req.interface = 0; - // Make command payload - payload_len = C_SNIC_UartMsg::makePayload( sizeof(tagWIFI_GET_STATUS_REQ_T), (unsigned char *)&req, payload_array ); - // Make all command request - command_len = C_SNIC_UartMsg::makeRequest( UART_CMD_ID_WIFI, payload_array, payload_len, command_array ); + unsigned char command_array[UART_REQUEST_PAYLOAD_MAX]; + unsigned int command_len; + command_len = preparationSendCommand( UART_CMD_ID_WIFI, req.cmd_sid, (unsigned char *)&req + , sizeof(tagWIFI_GET_STATUS_REQ_T), payload_buf->buf, 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 ); + int ret; // Wait UART response ret = mUartCommand.wait(); if( ret != 0 )