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 Takao Kishino

Files at this revision

API Documentation at this revision

Comitter:
kishino
Date:
Thu Mar 13 08:44:33 2014 +0000
Parent:
4:99cc93fe7d88
Child:
6:70f522934032
Commit message:
Create Wi-Fi turn on command; Create Wi-Fi turn off command; Create get RSSI command

Changed in this revision

YDwifi/YDwifi.cpp Show annotated file Show diff for this revision Revisions of this file
YDwifi/YDwifi.h Show annotated file Show diff for this revision Revisions of this file
YDwifi/YDwifiUartCommand.h Show annotated file Show diff for this revision Revisions of this file
YDwifiInterface.cpp Show annotated file Show diff for this revision Revisions of this file
YDwifiInterface.h Show annotated file Show diff for this revision Revisions of this file
--- a/YDwifi/YDwifi.cpp	Thu Mar 13 03:38:25 2014 +0000
+++ b/YDwifi/YDwifi.cpp	Thu Mar 13 08:44:33 2014 +0000
@@ -100,7 +100,7 @@
                         printf("%02x ", gUART_RCVBUF.buf[i]);
                     }
                     printf("\r\n");
-*/                  
+*/
                     unsigned char command_id;
                     // Get payload from received data from UART.
                     int payload_len = C_YD_UartMsg::getResponsePayload( gUART_RCVBUF.size, gUART_RCVBUF.buf
@@ -112,7 +112,7 @@
                         printf("%02x ", gUART_TEMP_BUF[i]);
                     }
                     printf("\r\n");
-*/                    
+*/
                     // Check scan results indication 
                     if( (command_id == UART_CMD_ID_WIFI) || (gUART_TEMP_BUF[0] == UART_CMD_SID_WIFI_SCAN_RESULT_IND) )
                     {
--- a/YDwifi/YDwifi.h	Thu Mar 13 03:38:25 2014 +0000
+++ b/YDwifi/YDwifi.h	Thu Mar 13 08:44:33 2014 +0000
@@ -51,6 +51,21 @@
         unsigned char seq;
     }tagGEN_FW_VER_GET_REQ_T;
 
+    /** WIFI_ON_REQ Command */
+    typedef struct 
+    {
+        unsigned char cmd_sid;
+        unsigned char seq;
+        char country[COUNTRYC_CODE_LENTH];
+    }tagWIFI_ON_REQ_T;
+
+    /** WIFI_OFF_REQ Command */
+    typedef struct 
+    {
+        unsigned char cmd_sid;
+        unsigned char seq;
+    }tagWIFI_OFF_REQ_T;
+
     /** WIFI_DISCONNECT_REQ Command */
     typedef struct 
     {
@@ -58,6 +73,13 @@
         unsigned char seq;
     }tagWIFI_DISCONNECT_REQ_T;
 
+    /** WIFI_GET_STA_RSSI_REQ Command */
+    typedef struct 
+    {
+        unsigned char cmd_sid;
+        unsigned char seq;
+    }tagWIFI_GET_STA_RSSI_REQ_T;
+
     /** WIFI_SCAN_REQ Command */
     typedef struct 
     {
--- a/YDwifi/YDwifiUartCommand.h	Thu Mar 13 03:38:25 2014 +0000
+++ b/YDwifi/YDwifiUartCommand.h	Thu Mar 13 08:44:33 2014 +0000
@@ -9,6 +9,8 @@
 #define SSID_MAX_LENGTH 32
 /** Max length of BSSID */
 #define BSSID_MAC_LENTH 6
+/** Length of Country code */
+#define COUNTRYC_CODE_LENTH 2
     
 /** Wait signal ID of UART command */
 #define UART_COMMAND_SIGNAL        0x00000001
--- 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
+}
--- a/YDwifiInterface.h	Thu Mar 13 03:38:25 2014 +0000
+++ b/YDwifiInterface.h	Thu Mar 13 08:44:33 2014 +0000
@@ -67,6 +67,29 @@
     int scan( const char *ssid_p, unsigned char *bssid_p
             ,void (*result_handler_p)(tagSCAN_RESULT_T *scan_result) );
 
+    /** Wi-Fi Turn on
+        @param country_p Pointer of country code.
+        @return 0 on success, a negative number on failure
+        @note   This function is blocked until a returns.
+                When you use it by UI thread, be careful. 
+    */
+    int wifi_on( const char *country_p );
+
+    /** Wi-Fi Turn off
+        @return 0 on success, a negative number on failure
+        @note   This function is blocked until a returns.
+                When you use it by UI thread, be careful. 
+    */
+    int wifi_off();
+
+    /** Get Wi-Fi RSSI
+        @param rssi_p Pointer of RSSI.[output]
+        @return 0 on success, a negative number on failure
+        @note   This function is blocked until a returns.
+                When you use it by UI thread, be careful. 
+    */
+    int getRssi( signed char *rssi_p );
+
 #if 0  
   /** Get the MAC address of your Ethernet interface
    * \return a pointer to a string containing the MAC address