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:
Wed Mar 19 01:48:37 2014 +0000
Parent:
10:49ffd373066b
Child:
12:0254eaccfda2
Commit message:
C_SNICwifi was modified to singleton class.

Changed in this revision

SNIC/SNICwifi.cpp Show annotated file Show diff for this revision Revisions of this file
SNIC/SNICwifi.h Show annotated file Show diff for this revision Revisions of this file
SNIC/SNICwifiUartCommand.cpp Show annotated file Show diff for this revision Revisions of this file
SNIC/SNICwifiUartCommand.h Show annotated file Show diff for this revision Revisions of this file
SNIC/SNICwifi_uartmsg.cpp Show annotated file Show diff for this revision Revisions of this file
SNIC/SNICwifi_uartmsg.h Show annotated file Show diff for this revision Revisions of this file
SNICInterface.cpp Show annotated file Show diff for this revision Revisions of this file
SNICInterface.h Show annotated file Show diff for this revision Revisions of this file
SNICwifi/SNICwifi.cpp Show diff for this revision Revisions of this file
SNICwifi/SNICwifi.h Show diff for this revision Revisions of this file
SNICwifi/SNICwifiUartCommand.cpp Show diff for this revision Revisions of this file
SNICwifi/SNICwifiUartCommand.h Show diff for this revision Revisions of this file
SNICwifi/SNICwifi_uartmsg.cpp Show diff for this revision Revisions of this file
SNICwifi/SNICwifi_uartmsg.h Show diff for this revision Revisions of this file
SNICwifiInterface.cpp Show diff for this revision Revisions of this file
SNICwifiInterface.h Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SNIC/SNICwifi.cpp	Wed Mar 19 01:48:37 2014 +0000
@@ -0,0 +1,205 @@
+#include "mbed.h"
+#include "SNICwifi.h"
+#include "SNICwifi_uartmsg.h"
+#include <string>
+//#include <algorithm>
+
+using namespace murata_wifi;
+
+#define UART_RECVBUF_SIZE   2048
+typedef struct
+{
+    unsigned char buf[UART_RECVBUF_SIZE];
+    unsigned int  size;
+    bool          is_receive;
+}tagUART_RECVBUF_T;
+tagUART_RECVBUF_T   gUART_RCVBUF;
+unsigned char   gUART_TEMP_BUF[UART_RECVBUF_SIZE];
+
+C_SNICwifi *C_SNICwifi::mInstance_p = NULL;
+
+C_SNICwifi *C_SNICwifi::getInstance()
+{
+    if( mInstance_p == NULL )
+    {
+        mInstance_p = new C_SNICwifi();
+    }
+    return mInstance_p;
+}
+
+C_SNICwifi::C_SNICwifi()
+{
+    mUartRecvThread_p = NULL;
+}
+
+int C_SNICwifi::initUart(PinName tx, PinName rx, int baud)
+{
+    printf("[C_SNICwifi::initUart]1\r\n");
+    
+    mUartRequestSeq   = 0;
+
+    mUart_p = new RawSerial( tx, rx );
+    mUart_p->baud( baud );
+    mUart_p->format(8, SerialBase::None, 1);
+
+    printf("[C_SNICwifi::initUart]2\r\n");
+    // Initialize uart
+    gUART_RCVBUF.is_receive = false;
+    gUART_RCVBUF.size       = 0;
+
+    // Create UART recv thread
+    mUartRecvThread_p = new Thread( C_SNICwifi::uartRecvThread );
+    printf("[C_SNICwifi::initUart]3\r\n");
+    if( mUartRecvThread_p == NULL )
+    {
+        printf("[C_SNICwifi::initUart] thread cread failed\r\n");
+        return -1;
+    }
+
+    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;
+    
+    mUartMutex.lock();
+    for( int i = 0; i < len; i++ )
+    {
+        // Write to UART
+        ret = mUart_p->putc( data[i] );
+        if( ret == -1 )
+        {
+            ret = -1;
+            break;
+        }
+    }
+    mUartMutex.unlock();
+    return ret;
+}
+
+tagMEMPOOL_BLOCK_T *C_SNICwifi::getAlocCmdBuf()
+{
+    // Get buffer from MemoryPool
+    return mMemPoolPayload.alloc();
+}
+
+void C_SNICwifi::freeCmdBuf( tagMEMPOOL_BLOCK_T *buf_p )
+{
+    mMemPoolPayload.free( buf_p );
+}
+
+void C_SNICwifi::uartRecvThread (void const *args_p) {
+
+    C_SNICwifi *instance_p = C_SNICwifi::getInstance();
+    if ( instance_p == NULL )
+    {
+        printf("Socket constructor error: no wifly instance available!\r\n");
+    }
+
+    int recvdata = 0;
+    int i;
+    
+    /* UART recv thread main loop */
+    for (;;) 
+    {
+        while( instance_p->mUart_p->readable() )
+        {
+            // Receive data from UART.
+            instance_p->mUartMutex.lock();
+            recvdata = instance_p->mUart_p->getc();
+            instance_p->mUartMutex.unlock();
+
+            // Check UART receiving flg
+            if( gUART_RCVBUF.is_receive )
+            {
+                gUART_RCVBUF.buf[ gUART_RCVBUF.size ] = (unsigned char)recvdata;
+                gUART_RCVBUF.size++;
+                // Check  received data is EOM.
+                if( recvdata == UART_CMD_EOM )
+                {
+/*
+                    printf("[recv]\r\n");
+                    for( i = 0; i < gUART_RCVBUF.size; i++ )
+                    {
+                        printf("%02x ", gUART_RCVBUF.buf[i]);
+                    }
+                    printf("\r\n");
+*/
+                    unsigned char command_id;
+                    // Get payload from received data from UART.
+                    int payload_len = C_SNIC_UartMsg::getResponsePayload( gUART_RCVBUF.size, gUART_RCVBUF.buf
+                                                            , &command_id, gUART_TEMP_BUF );
+/*
+                    printf("[payload]\r\n");
+                    for( i = 0; i < payload_len; i++ )
+                    {
+                        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) )
+                    {
+                        // Scan result indicate
+                        instance_p->mUartCommand.scanResultIndicate( gUART_TEMP_BUF, payload_len );
+                    }
+                    
+                    // Checks in the command which is waiting.
+                    if( instance_p->mUartCommand.isWaitingCommand(command_id, gUART_TEMP_BUF) )
+                    {
+                        // Get buffer for payload data
+                        unsigned char *payload_buf_p = instance_p->mUartCommand.getResponseBuf();
+                        if( payload_buf_p != NULL )
+                        {
+                            memcpy( payload_buf_p, gUART_TEMP_BUF, payload_len );
+                            instance_p->mUartCommand.setResponseBuf( NULL );
+                        }
+                        // Set status
+                        instance_p->mUartCommand.setCommandStatus( gUART_TEMP_BUF[2] );
+                        // Set signal for command response wait.
+                        instance_p->mUartCommand.signal();
+                    }
+
+                    gUART_RCVBUF.size = 0;
+                    gUART_RCVBUF.is_receive = false;
+                }
+            }
+            else
+            {
+                // Check  received data is SOM.
+                if( recvdata == UART_CMD_SOM )
+                {
+                    gUART_RCVBUF.size = 0;
+                    gUART_RCVBUF.buf[ gUART_RCVBUF.size ] = (unsigned char)recvdata;
+                    gUART_RCVBUF.size++;
+                    gUART_RCVBUF.is_receive = true;
+                }
+            }
+//            Thread::yield();
+        }
+        Thread::yield();
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SNIC/SNICwifi.h	Wed Mar 19 01:48:37 2014 +0000
@@ -0,0 +1,195 @@
+#ifndef _SNIC_WIFI_H_
+#define _SNIC_WIFI_H_
+
+#include "mbed.h"
+#include "rtos.h"
+#include "RawSerial.h"
+
+#include "SNICwifiUartCommand.h"
+//#include "CBuffer.h"
+
+namespace murata_wifi
+{
+#define UART_REQUEST_PAYLOAD_MAX 256
+
+#define MEMPOOL_BLOCK_SIZE  2048
+#define MEMPOOL_PAYLOAD_NUM 1
+typedef struct
+{
+    unsigned char buf[MEMPOOL_BLOCK_SIZE];
+}tagMEMPOOL_BLOCK_T;
+
+/** Wi-Fi security
+ */
+typedef enum SECURITY {
+    /** Securiry Open */
+    e_SEC_OPEN       = 0x00,
+    /** Securiry WEP */
+    e_SEC_WEP        = 0x01,
+    /** Securiry WPA-PSK(TKIP) */
+    e_SEC_WPA_TKIP   = 0x02,
+    /** Securiry WPA2-PSK(AES) */
+    e_SEC_WPA2_AES   = 0x04,
+    /** Securiry WPA2-PSK(TKIP/AES) */
+    e_SEC_WPA2_MIXED = 0x06,
+    /** Securiry WPA-PSK(AES) */
+    e_SEC_WPA_AES    = 0x07
+}E_SECURITY;
+
+/** Wi-Fi Network type
+ */
+typedef enum NETWORK_TYPE {
+    /** Infrastructure */
+    e_INFRA = 0,
+    /** Adhoc */
+    e_ADHOC = 1
+}E_NETWORK_TYPE;
+
+/** Wi-Fi status
+ */
+typedef enum WIFI_STATUS {
+    /** Wi-Fi OFF */
+    e_STATUS_OFF = 0,
+    /** No network */
+    e_NO_NETWORK,
+    /** Connected to AP (STA mode) */
+    e_STA_JOINED,
+    /** Started  on AP mode */
+    e_AP_STARTED
+}E_WIFI_STATUS;
+
+/** GEN_FW_VER_GET_REQ Command */
+typedef struct 
+{
+    unsigned char cmd_sid;
+    unsigned char seq;
+}tagGEN_FW_VER_GET_REQ_T;
+
+/** SNIC_INIT_REQ */
+typedef struct
+{
+    unsigned char  cmd_sid;
+    unsigned char  seq;
+    unsigned short buf_size;
+}tagSNIC_INIT_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 
+{
+    unsigned char cmd_sid;
+    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_GET_STATUS_REQ Command */
+typedef struct 
+{
+    unsigned char cmd_sid;
+    unsigned char seq;
+    unsigned char interface;
+}tagWIFI_GET_STATUS_REQ_T;
+
+/** WIFI_SCAN_REQ Command */
+typedef struct 
+{
+    unsigned char cmd_sid;
+    unsigned char seq;
+    unsigned char scan_type;
+    unsigned char bss_type;
+    unsigned char bssid[BSSID_MAC_LENTH];
+    unsigned char chan_list;
+    unsigned char ssid[SSID_MAX_LENGTH+1];
+}tagWIFI_SCAN_REQ_T;
+
+/** C_SNICwifi class
+ */
+class C_SNICwifi
+{
+
+public:
+    C_SNICwifiUartCommand mUartCommand;
+
+    /** Get buffer for command from memory pool.
+        @return Pointer of buffer
+     */
+    tagMEMPOOL_BLOCK_T *getAlocCmdBuf();
+    
+    /** Release buffer to memory pool.
+        @param buf_p Pointer of buffer
+     */
+    void freeCmdBuf( tagMEMPOOL_BLOCK_T *buf_p );
+
+    /** Initialize UART
+    */
+    int initUart( PinName tx, PinName rx, int baud );
+
+    /** Send data to UART
+        @param len  Length of send data
+        @param data Pointer of send data
+        @return 0:success/other:fail
+    */
+    int sendUart( unsigned int len, unsigned char *data );
+
+    /** 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 );
+
+    /** Get an instance of the C_SNICwifi class.
+        @return Instance of the C_SNICwifi class
+        @note   Please do not create an instance in the default constructor this class.
+                Please use this method when you want to get an instance.
+    */
+    static C_SNICwifi *getInstance();
+
+protected:
+    static C_SNICwifi     *mInstance_p;
+    Thread                *mUartRecvThread_p;
+    RawSerial             *mUart_p;
+    Mutex                 mUartMutex;
+//    DigitalInOut        mModuleReset;
+ 
+private:
+    /** MemoryPool for payload of UART response */
+    MemoryPool<tagMEMPOOL_BLOCK_T, MEMPOOL_PAYLOAD_NUM>     mMemPoolPayload;
+  
+    /** Constructor
+     */
+    C_SNICwifi();
+
+    /** Receiving thread of UART
+    */
+    static void uartRecvThread( void const *args_p );
+};
+}
+
+#endif
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SNIC/SNICwifiUartCommand.cpp	Wed Mar 19 01:48:37 2014 +0000
@@ -0,0 +1,126 @@
+#include "SNICwifiUartCommand.h"
+
+using namespace murata_wifi;
+
+void C_SNICwifiUartCommand::setCommandID( unsigned char cmd_id )
+{
+    mCommandID = cmd_id;
+}
+
+unsigned char C_SNICwifiUartCommand::getCommandID()
+{
+    return mCommandID;
+}
+
+void C_SNICwifiUartCommand::setCommandSID( unsigned char cmd_sid )
+{
+    mCommandSID = cmd_sid;
+}
+
+unsigned char C_SNICwifiUartCommand::getCommandSID()
+{
+    return mCommandSID;
+}
+
+void C_SNICwifiUartCommand::setCommandStatus( unsigned char status )
+{
+    mCommandStatus = status;
+}
+
+unsigned char C_SNICwifiUartCommand::getCommandStatus()
+{
+    return mCommandStatus;
+}
+
+void C_SNICwifiUartCommand::setResponseBuf( unsigned char *buf_p )
+{
+    mResponseBuf_p = buf_p;
+}
+
+unsigned char *C_SNICwifiUartCommand::getResponseBuf()
+{
+    return mResponseBuf_p;
+}
+
+void C_SNICwifiUartCommand::setScanResultHandler( void (*handler_p)(tagSCAN_RESULT_T *scan_result) )
+{
+    mScanResultHandler_p = handler_p;
+}
+
+
+int C_SNICwifiUartCommand::wait()
+{
+    int ret = 0;
+
+    // Get thread ID
+    mCommandThreadID = osThreadGetId();
+    
+    // Signal flags that are reported as event are automatically cleared.
+    osEvent event_ret = osSignalWait( UART_COMMAND_SIGNAL, UART_COMMAND_WAIT_TIMEOUT);
+    if( event_ret.status != osEventSignal )
+    {
+        ret = -1;
+    }
+
+    return ret;
+}
+
+int C_SNICwifiUartCommand::signal()
+{
+    // set signal
+    return osSignalSet(mCommandThreadID, UART_COMMAND_SIGNAL);
+}
+
+bool C_SNICwifiUartCommand::isWaitingCommand( unsigned int command_id, unsigned char *payload_p )
+{
+    bool ret = false;
+
+    if( (command_id == getCommandID())
+        && (payload_p[0] == (getCommandSID() | 0x80) ) )
+    {
+        ret = true;
+    }
+    return ret;
+}
+
+void C_SNICwifiUartCommand::scanResultIndicate( unsigned char *payload_p, int payload_len )
+{
+    if( (payload_p == NULL) || (mScanResultHandler_p == NULL) )
+    {
+        return;
+    }
+    
+    tagSCAN_RESULT_T scan_result;
+    int ap_count  = payload_p[2];
+    
+    if( ap_count == 0 )
+    {
+        mScanResultHandler_p( NULL );
+    }
+    
+    unsigned char *ap_info_p = &payload_p[3];
+    int ap_info_idx = 0;
+
+    for( int i = 0; i < ap_count; i++ )
+    {
+        scan_result.channel = ap_info_p[ap_info_idx];
+        ap_info_idx++;
+        scan_result.rssi    = (signed)ap_info_p[ap_info_idx];
+        ap_info_idx++;
+        scan_result.security= ap_info_p[ap_info_idx];
+        ap_info_idx++;
+        memcpy( scan_result.bssid, &ap_info_p[ap_info_idx], BSSID_MAC_LENTH );
+        ap_info_idx += BSSID_MAC_LENTH;
+        scan_result.network_type= ap_info_p[ap_info_idx];
+        ap_info_idx++;
+        scan_result.max_rate= ap_info_p[ap_info_idx];
+        ap_info_idx++;
+        ap_info_idx++;  // reserved
+        strcpy( scan_result.ssid, (char *)&ap_info_p[ap_info_idx] );
+        ap_info_idx += strlen( (char *)&ap_info_p[ap_info_idx] );
+        ap_info_idx++;
+        
+        // Scanresult callback
+        mScanResultHandler_p( &scan_result );
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SNIC/SNICwifiUartCommand.h	Wed Mar 19 01:48:37 2014 +0000
@@ -0,0 +1,119 @@
+#ifndef _SNIC_WIFI_UART_COMMAND_H_
+#define _SNIC_WIFI_UART_COMMAND_H_
+#include "mbed.h"
+#include "rtos.h"
+
+namespace murata_wifi
+{
+/** Max length of SSID */
+#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
+/** Timeout of UART command wait(ms)*/
+#define UART_COMMAND_WAIT_TIMEOUT  10000
+
+/** Scan result 
+*/
+typedef struct {
+    bool          is_complete;
+    /** Channel */
+    unsigned char channel;
+    /** RSSI */
+    signed   char rssi;
+    /** Security type */
+    unsigned char security;
+    /** BSSID */
+    unsigned char bssid[BSSID_MAC_LENTH];
+    /** Network type */
+    unsigned char network_type;
+    /** Max data rate */
+    unsigned char max_rate;
+    /** SSID */
+    char          ssid[SSID_MAX_LENGTH+1];
+}tagSCAN_RESULT_T;
+
+/** C_SNICwifiUartCommand class
+ */
+class C_SNICwifiUartCommand
+{
+public:
+    /** Set Command ID
+        @param cmd_id Command ID
+    */
+    void setCommandID( unsigned char cmd_id );
+
+    /** Get Command ID
+        @return Command ID
+    */
+    unsigned char getCommandID();
+
+    /** Set Command SubID
+        @param cmd_sid Command Sub ID
+    */
+    void setCommandSID( unsigned char cmd_sid );
+
+    /** Get Command SubID
+        @return Command Sub ID
+    */
+    unsigned char getCommandSID();
+    
+    /** Set Command status
+        @param status Command status
+    */
+    void setCommandStatus( unsigned char status );
+
+    /** Get Command status
+        @return Command status
+    */
+    unsigned char getCommandStatus();
+
+    /** Set Response buffer
+        @param buf_p Pointer of response buffer
+    */
+    void setResponseBuf( unsigned char *buf_p );
+
+    /** Get Response buffer
+        @return Pointer of response buffer
+    */
+    unsigned char *getResponseBuf();
+
+    /** Set scan result callback hander
+        @param handler_p Pointer of callback function
+    */
+    void setScanResultHandler( void (*handler_p)(tagSCAN_RESULT_T *scan_result) );
+    
+    void scanResultIndicate( unsigned char *payload_p, int payload_len );
+    
+    /** Checks in the command which is waiting from Command ID and Sub ID.
+        @param  command_id  Command ID
+        @param  payload_p   Command payload
+        @return true: Waiting command / false: Not waiting command
+    */
+    bool isWaitingCommand( unsigned int command_id, unsigned char *payload_p );
+
+    int wait();
+    
+    int signal();
+
+private:
+    /** Command request thread ID */
+    osThreadId    mCommandThreadID;
+    /** Command ID */
+    unsigned char mCommandID;
+    /** Command SubID */
+    unsigned char mCommandSID;
+    /** Status of command response */
+    unsigned char mCommandStatus;
+    /** ResponseData of command response */
+    unsigned char *mResponseBuf_p;
+    /** Scan result handler */
+    void (*mScanResultHandler_p)(tagSCAN_RESULT_T *scan_result);
+};
+    
+}
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SNIC/SNICwifi_uartmsg.cpp	Wed Mar 19 01:48:37 2014 +0000
@@ -0,0 +1,129 @@
+#include "SNICwifi_uartmsg.h"
+
+using namespace murata_wifi;
+
+C_SNIC_UartMsg::C_SNIC_UartMsg()
+{
+}
+
+unsigned short C_SNIC_UartMsg::makePayload( unsigned int cmd_len, unsigned char *cmd_p, unsigned char *payload_p )
+{
+    unsigned short payload_len = 0;
+    int i;
+    
+    for( i = 0; i < cmd_len; i++, payload_p++, payload_len++ )
+    {
+        /* check Escape code */
+        if( ( cmd_p[i] == UART_CMD_SOM ) || ( cmd_p[i] == UART_CMD_EOM ) || ( cmd_p[i] == UART_CMD_ESC ) )
+        {
+            /* Add ESC */
+            *payload_p = UART_CMD_ESC;
+            payload_len++;
+            
+            payload_p++;
+            *payload_p = (0x80 | cmd_p[i]);
+        }
+        else
+        {
+            *payload_p = cmd_p[i];
+        }
+    }
+    
+    return payload_len;
+}
+
+unsigned int C_SNIC_UartMsg::makeRequest( unsigned char cmd_id,unsigned char *payload_p
+                                , unsigned short payload_len, unsigned char *uart_command_p )
+{
+    unsigned char check_sum = 0;    // Check Sum
+    unsigned int  uart_cmd_len = 0;
+    int i;
+    
+    // set SOM
+    *uart_command_p = UART_CMD_SOM;
+    uart_command_p++;
+    uart_cmd_len++;
+    
+    // set payload length L0
+    *uart_command_p = (0x80 | (payload_len & 0x007f));
+    check_sum += *uart_command_p;
+    uart_command_p++;
+    uart_cmd_len++;
+
+    // set payload length L1
+    *uart_command_p = (0x80 | ( (payload_len >> 7) & 0x003f));
+    check_sum += *uart_command_p;
+    uart_command_p++;
+    uart_cmd_len++;
+    
+    // set Command ID
+    *uart_command_p = (0x80 | cmd_id);
+    check_sum += *uart_command_p;
+    uart_command_p++;
+    uart_cmd_len++;
+
+    // set Payload
+    for( i = 0; i < payload_len; i++, uart_command_p++, uart_cmd_len++ )
+    {
+        *uart_command_p = payload_p[i];
+        check_sum += *uart_command_p;
+    }
+
+    // set Check sum
+    *uart_command_p = (0x80 | check_sum);
+    uart_command_p++;
+    uart_cmd_len++;
+    
+    // set EOM
+    *uart_command_p = UART_CMD_EOM;
+    uart_cmd_len++;
+    
+    return uart_cmd_len;
+}
+
+unsigned int C_SNIC_UartMsg::getResponsePayload( unsigned int recvdata_len, unsigned char *recvdata_p
+                                            , unsigned char *command_id_p,  unsigned char *payload_p )
+{
+    unsigned short payload_len  = 0;
+    unsigned int   response_len = 0;
+    unsigned char *buf = NULL;
+    bool isESC = false;
+    int i;
+    
+    // get payload length
+    payload_len = ( ( (recvdata_p[1] & ~0x80) & 0xff) | ( ( (recvdata_p[2] & ~0xC0) << 7) & 0xff80) );
+
+    // get Command ID
+    *command_id_p = (recvdata_p[3] & ~0x80);
+
+    buf = &recvdata_p[4];
+
+    // get payload data
+    for( i = 0; i < payload_len; i++, buf++ )
+    {
+        if( isESC )
+        {
+            *payload_p = (*buf & ~0x80);
+            payload_p++;
+            response_len++;
+            isESC = false;
+        }
+        else
+        {
+            // Check Escape code
+            if( *buf == UART_CMD_ESC )
+            {
+                isESC = true;
+                continue;
+            }
+            else
+            {
+                *payload_p = *buf;
+                payload_p++;
+                response_len++;
+            }
+        }
+    }
+
+    return response_len;
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SNIC/SNICwifi_uartmsg.h	Wed Mar 19 01:48:37 2014 +0000
@@ -0,0 +1,159 @@
+#ifndef _SNIC_WIFI_UART_MSG_H_
+#define _SNIC_WIFI_UART_MSG_H_
+
+#include "mbed.h"
+#include "rtos.h"
+#include "RawSerial.h"
+
+namespace murata_wifi
+{
+
+#define UART_CMD_SOM        0x02
+#define UART_CMD_EOM        0x04
+#define UART_CMD_ESC        0x10
+
+/* SNIC UART Command ID */
+#define UART_CMD_ID_GEN     0x01    //General command
+#define UART_CMD_ID_SNIC    0x70    //SNIC command
+#define UART_CMD_ID_WIFI    0x50    //Wi-Fi command
+
+/* SNIC UART Subcommand ID */
+#define UART_CMD_SID_GEN_PWR_UP_IND          0x00   //Power up indication
+#define UART_CMD_SID_GEN_FW_VER_GET_REQ      0x08   //Get firmware version string
+
+#define UART_CMD_SID_SNIC_INIT_REQ                      0x00    // SNIC API initialization
+#define UART_CMD_SID_SNIC_CLEANUP_REQ                   0x01    // SNIC API cleanup
+#define UART_CMD_SID_SNIC_SEND_FROM_SOCKET_REQ          0x02    // Send from socket
+#define UART_CMD_SID_SNIC_CLOSE_SOCKET_REQ              0x03    // Close socket
+#define UART_CMD_SID_SNIC_ SOCKET _PARTIAL_CLOSE_ REQ   0x04    // Socket partial close
+#define UART_CMD_SID_SNIC_GETSOCKOPT_REQ                0x05    // Get socket option
+#define UART_CMD_SID_SNIC_SETSOCKOPT_REQ                0x06    // Set socket option
+#define UART_CMD_SID_SNIC_SOCKET_GETNAME_REQ            0x07    // Get name or peer name
+#define UART_CMD_SID_SNIC_SEND_ARP_REQ                  0x08    // Send ARP request
+#define UART_CMD_SID_SNIC_GET_DHCP_INFO_REQ             0x09    // Get DHCP info
+#define UART_CMD_SID_SNIC_RESOLVE_NAME_REQ              0x0A    // Resolve a host name to IP address
+#define UART_CMD_SID_SNIC_IP_CONFIG_REQ                 0x0B    // Configure DHCP or static IP
+#define UART_CMD_SID_SNIC_DATA_IND_ACK_CONFIG_REQ       0x0C    // ACK configuration for data indications
+#define UART_CMD_SID_SNIC_TCP_CREATE_SOCKET_REQ         0x10    // Create TCP socket
+#define UART_CMD_SID_SNIC_TCP_CREATE_CONNECTION_REQ     0x11    // Create TCP connection server
+#define UART_CMD_SID_SNIC_TCP_CONNECT_TO_SERVER_REQ     0x12    // Connect to TCP server
+#define UART_CMD_SID_SNIC_UDP_CREATE_SOCKET_REQ         0x13    // Create UDP socket
+#define UART_CMD_SID_SNIC_UDP_START_RECV_REQ            0x14    // Start UDP receive on socket
+#define UART_CMD_SID_SNIC_UDP_SIMPLE_SEND_REQ           0x15    // Send UDP packet
+#define UART_CMD_SID_SNIC_UDP_SEND_ FROM_SOCKET_REQ     0x16    // Send UDP packet from socket
+#define UART_CMD_SID_SNIC_HTTP_REQ                      0x17    // Send HTTP request
+#define UART_CMD_SID_SNIC_HTTP_MORE_REQ                 0x18    // Send HTTP more data request
+#define UART_CMD_SID_SNIC_HTTPS_REQ                     0x19    // Send HTTPS request
+#define UART_CMD_SID_SNIC_TCP_CREATE_ADV_TLS_SOCKET_REQ 0x1A    // Create advanced TLS TCP socket
+#define UART_CMD_SID_SNIC_TCP_CREAET_SIMPLE_TLS_SOCKET_REQ  0x1B    // Create simple TLS TCP socket
+#define UART_CMD_SID_SNIC_TCP_CONNECTION_STATUS_IND     0x20    // Connection status indication
+#define UART_CMD_SID_SNIC_TCP_CLIENT_SOCKET_IND         0x21    // TCP client socket indication
+#define UART_CMD_SID_SNIC_CONNECTION_RECV_IND           0x22    // TCP or connected UDP packet received indication
+#define UART_CMD_SID_SNIC_UDP_RECV_IND                  0x23    // UCP packet received indication
+#define UART_CMD_SID_SNIC_ARP_REPLY_IND                 0x24    // ARP reply indication
+#define UART_CMD_SID_SNIC_HTTP_RSP_IND                  0x25    // HTTP response indication
+
+#define UART_CMD_SID_WIFI_ON_REQ             0x00   // Turn on Wifi
+#define UART_CMD_SID_WIFI_OFF_REQ            0x01   // Turn off Wifi
+#define UART_CMD_SID_WIFI_JOIN_REQ           0x02   // Associate to a network
+#define UART_CMD_SID_WIFI_DISCONNECT_REQ     0x03   // Disconnect from a network
+#define UART_CMD_SID_WIFI_GET_STATUS_REQ     0x04   // Get WiFi status
+#define UART_CMD_SID_WIFI_SCAN_REQ           0x05   // Scan WiFi networks
+#define UART_CMD_SID_WIFI_GET_STA_RSSI_REQ   0x06   // Get STA signal strength (RSSI)
+#define UART_CMD_SID_WIFI_AP_CTRL_REQ        0x07   // Soft AP on-off control
+#define UART_CMD_SID_WIFI_WPS_REQ            0x08   // Start WPS process
+#define UART_CMD_SID_WIFI_AP_GET_CLIENT_REQ  0x0A   // Get clients that are associated to the soft AP.
+#define UART_CMD_SID_WIFI_NETWORK_STATUS_IND 0x10   // Network status indication
+#define UART_CMD_SID_WIFI_SCAN_RESULT_IND    0x11   // Scan result indication
+
+/* SNIC UART Command response status code */
+#define UART_CMD_RES_SNIC_SUCCESS                   0x00
+#define UART_CMD_RES_SNIC_FAIL                      0x01
+#define UART_CMD_RES_SNIC_INIT_FAIL                 0x02
+#define UART_CMD_RES_SNIC_CLEANUP_FAIL              0x03
+#define UART_CMD_RES_SNIC_GETADDRINFO_FAIL          0x04
+#define UART_CMD_RES_SNIC_CREATE_SOCKET_FAIL        0x05
+#define UART_CMD_RES_SNIC_BIND_SOCKET_FAIL          0x06
+#define UART_CMD_RES_SNIC_LISTEN_SOCKET_FAIL        0x07
+#define UART_CMD_RES_SNIC_ACCEPT_SOCKET_FAIL        0x08
+#define UART_CMD_RES_SNIC_PARTIAL_CLOSE_FAIL        0x09
+#define UART_CMD_RES_SNIC_SOCKET_PARTIALLY_CLOSED   0x0A
+#define UART_CMD_RES_SNIC_SOCKET_CLOSED             0x0B
+#define UART_CMD_RES_SNIC_CLOSE_SOCKET_FAIL         0x0C
+#define UART_CMD_RES_SNIC_PACKET_TOO_LARGE          0x0D
+#define UART_CMD_RES_SNIC_SEND_FAIL                 0x0E
+#define UART_CMD_RES_SNIC_CONNECT_TO_SERVER_FAIL    0x0F
+#define UART_CMD_RES_SNIC_NOT_ENOUGH_MEMORY         0x10
+#define UART_CMD_RES_SNIC_TIMEOUT                   0x11
+#define UART_CMD_RES_SNIC_CONNECTION_UP             0x12
+#define UART_CMD_RES_SNIC_GETSOCKOPT_FAIL           0x13
+#define UART_CMD_RES_SNIC_SETSOCKOPT_FAIL           0x14
+#define UART_CMD_RES_SNIC_INVALID_ARGUMENT          0x15
+#define UART_CMD_RES_SNIC_SEND_ARP_FAIL             0x16
+#define UART_CMD_RES_SNIC_INVALID_SOCKET            0x17
+#define UART_CMD_RES_SNIC_COMMAND_PENDING           0x18
+#define UART_CMD_RES_SNIC_SOCKET_NOT_BOUND          0x19
+#define UART_CMD_RES_SNIC_SOCKET_NOT_CONNECTED      0x1A
+#define UART_CMD_RES_SNIC_NO_NETWORK                0x20
+#define UART_CMD_RES_SNIC_INIT_NOT_DONE             0x21
+#define UART_CMD_RES_SNIC_NET_IF_FAIL               0x22
+#define UART_CMD_RES_SNIC_NET_IF_NOT_UP             0x23
+#define UART_CMD_RES_SNIC_DHCP_START_FAIL           0x24
+
+#define UART_CMD_RES_WIFI_SUCCESS               0x00
+#define UART_CMD_RES_WIFI_ERR_UNKNOWN_COUNTRY   0x01
+#define UART_CMD_RES_WIFI_ERR_INIT_FAIL         0x02
+#define UART_CMD_RES_WIFI_ERR_ALREADY_JOINED    0x03
+#define UART_CMD_RES_WIFI_ERR_AUTH_TYPE         0x04
+#define UART_CMD_RES_WIFI_ERR_JOIN_FAIL         0x05
+#define UART_CMD_RES_WIFI_ERR_NOT_JOINED        0x06
+#define UART_CMD_RES_WIFI_ERR_LEAVE_FAILED      0x07
+#define UART_CMD_RES_WIFI_COMMAND_PENDING       0x08
+#define UART_CMD_RES_WIFI_WPS_NO_CONFIG         0x09
+#define UART_CMD_RES_WIFI_NETWORK_UP            0x10
+#define UART_CMD_RES_WIFI_NETWORK_DOWN          0x11
+#define UART_CMD_RES_WIFI_FAIL                  0xFF
+
+/** UART Command sequence number
+*/
+static unsigned char mUartRequestSeq;  
+
+/** C_SNIC_UartMsg class
+ */
+class C_SNIC_UartMsg
+{
+
+public:
+    C_SNIC_UartMsg();
+    
+    /** Make SNIC UART command payload.
+            @param cmd_len      Command length
+            @param cmd_p        Command pointer
+            @param payload_p    Payload pointer[output]
+            @return payload length    
+    */
+    static unsigned short makePayload( unsigned int cmd_len, unsigned char *cmd_p, unsigned char *payload_p );
+    
+    /** Make SNIC UART command.
+            @param cmd_id         Command ID
+            @param payload_p      Payload pointer
+            @param uart_command_p UART Command pointer [output]
+            @return UART Command length    
+    */
+    static unsigned int makeRequest( unsigned char cmd_id, unsigned char *payload_p, unsigned short payload_len, unsigned char *uart_command_p );
+
+
+    /** Get uart command from receive data.
+            @param recvdata_len   Receive data length
+            @param recvdata_p     Pointer of received data from UART
+            @param command_id_p   Pointer of command ID[output]
+            @param payload_p      Pointer of payload[output]
+            @return Payload length    
+    */
+    static unsigned int getResponsePayload( unsigned int recvdata_len, unsigned char *recvdata_p
+                                    , unsigned char *command_id_p,  unsigned char *payload_p );
+protected:
+
+};
+}
+#endif /* _YD_WIFI_UART_MSG_H_ */
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SNICInterface.cpp	Wed Mar 19 01:48:37 2014 +0000
@@ -0,0 +1,515 @@
+#include "SNICInterface.h"
+#include "SNICwifi_uartmsg.h"
+
+using namespace murata_wifi;
+
+C_SNICInterface::C_SNICInterface( PinName tx, PinName rx, PinName cts, PinName rts, PinName reset, PinName alarm, int baud)
+{
+    mSNICWifi_p = C_SNICwifi::getInstance();
+
+    mUART_tx     = tx;
+    mUART_rx     = rx;
+    mUART_cts    = cts;
+    mUART_rts    = rts;;
+    mUART_baud   = baud;
+    mModuleReset = reset;
+}
+
+int C_SNICInterface::init()
+{    
+    /* Initialize UART */
+    mSNICWifi_p->initUart( mUART_tx, mUART_rx, mUART_baud );
+
+    /* Initialize SNIC API */
+    // Get buffer for response payload from MemoryPool
+    tagMEMPOOL_BLOCK_T *payload_buf = mSNICWifi_p->getAlocCmdBuf();
+    if( payload_buf == NULL )
+    {
+        printf("snic_init payload_buf NULL\r\n");
+        return -1;
+    }
+
+    tagSNIC_INIT_REQ_T req;
+    // Make request
+    req.cmd_sid = UART_CMD_SID_SNIC_INIT_REQ;
+    req.seq = mUartRequestSeq++;
+    req.buf_size = 0x800;
+
+    unsigned char command_array[UART_REQUEST_PAYLOAD_MAX];
+    unsigned int  command_len;
+    // Preparation of command
+    command_len = mSNICWifi_p->preparationSendCommand( UART_CMD_ID_SNIC, req.cmd_sid, (unsigned char *)&req
+                            , sizeof(tagSNIC_INIT_REQ_T), payload_buf->buf, command_array );
+
+    // Send uart command request
+    mSNICWifi_p->sendUart( command_len, command_array );
+
+    int ret;
+    // Wait UART response
+    ret = mSNICWifi_p->mUartCommand.wait();
+    if( ret != 0 )
+    {
+        printf( "snic_init failed\r\n" );
+        mSNICWifi_p->freeCmdBuf( payload_buf );
+        return -1;
+    }
+    
+    if( mSNICWifi_p->mUartCommand.getCommandStatus() != 0 )
+    {
+        printf("snic_init status:%02x\r\n", mSNICWifi_p->mUartCommand.getCommandStatus());
+        ret = -1;
+    }
+    mSNICWifi_p->freeCmdBuf( payload_buf );
+    
+    return ret;
+}
+
+int C_SNICInterface::getFWVersion( unsigned char *version_p )
+{
+    // Get buffer for response payload from MemoryPool
+    tagMEMPOOL_BLOCK_T *payload_buf = mSNICWifi_p->getAlocCmdBuf();
+    if( payload_buf == NULL )
+    {
+        printf("getFWVersion payload_buf NULL\r\n");
+        return -1;
+    }
+
+    tagGEN_FW_VER_GET_REQ_T req;
+    // Make request
+    req.cmd_sid = UART_CMD_SID_GEN_FW_VER_GET_REQ;
+    req.seq     = mUartRequestSeq++;
+    
+    unsigned char command_array[UART_REQUEST_PAYLOAD_MAX];
+    unsigned int  command_len;
+    // Preparation of command
+    command_len = mSNICWifi_p->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;
+    
+    // Send uart command request
+    mSNICWifi_p->sendUart( command_len, command_array );
+    
+    // Wait UART response
+    ret = mSNICWifi_p->mUartCommand.wait();
+    if( ret != 0 )
+    {
+        printf( "getFWversion failed\r\n" );
+        mSNICWifi_p->freeCmdBuf( payload_buf );
+        return -1;
+    }
+    
+    if( mSNICWifi_p->mUartCommand.getCommandStatus() == 0 )
+    {
+        unsigned char version_len = payload_buf->buf[3];
+        memcpy( version_p, &payload_buf->buf[4], version_len );
+    }
+    mSNICWifi_p->freeCmdBuf( payload_buf );
+    return 0;
+}
+
+int C_SNICInterface::connect(const char *ssid_p, unsigned char ssid_len, E_SECURITY sec_type
+                            , const char *sec_key_p, unsigned char sec_key_len)
+{
+    // Parameter check(SSID)
+    if( (ssid_p == NULL) || (ssid_len == 0) )
+    {
+        printf( "connect failed [ parameter NG:SSID ]\r\n" );
+        return -1;
+    }
+    
+    // Parameter check(Security key)
+    if( (sec_type != e_SEC_OPEN) && ( (sec_key_len == 0) || (sec_key_p == NULL) ) )
+    {
+        printf( "connect failed [ parameter NG:Security key ]\r\n" );
+        return -1;
+    }
+    
+    // Get buffer for response payload from MemoryPool
+    tagMEMPOOL_BLOCK_T *payload_buf = mSNICWifi_p->getAlocCmdBuf();
+    if( payload_buf == NULL )
+    {
+        printf("connect payload_buf NULL\r\n");
+        return -1;
+    }
+
+    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
+    buf[0] = UART_CMD_SID_WIFI_JOIN_REQ;
+    buf_len++;
+    buf[1] = mUartRequestSeq++;
+    buf_len++;
+    // SSID
+    memcpy( &buf[2], ssid_p, ssid_len );
+    buf_len += ssid_len;
+    buf_len++;
+    
+    // Security mode
+    buf[ buf_len ] = (unsigned char)sec_type;
+    buf_len++;
+
+    // Security key
+    if( sec_type != e_SEC_OPEN )
+    {
+        buf[ buf_len ] = sec_key_len;
+        buf_len++;
+        if( sec_key_len > 0 )
+        {
+            memcpy( &buf[buf_len], sec_key_p, sec_key_len );
+            buf_len += sec_key_len;
+        }
+    }
+
+    // Preparation of command
+    command_len = mSNICWifi_p->preparationSendCommand( UART_CMD_ID_WIFI, UART_CMD_SID_WIFI_JOIN_REQ, buf
+                        , buf_len, payload_buf->buf, command_array );
+
+    // Send uart command request
+    mSNICWifi_p->sendUart( command_len, command_array );
+    
+    int ret;
+    // Wait UART response
+    ret = mSNICWifi_p->mUartCommand.wait();
+    if( ret != 0 )
+    {
+        printf( "join failed\r\n" );
+        mSNICWifi_p->freeCmdBuf( payload_buf );
+        return -1;
+    }
+    
+    if( mSNICWifi_p->mUartCommand.getCommandStatus() != 0 )
+    {
+        printf("join status:%02x\r\n", mSNICWifi_p->mUartCommand.getCommandStatus());
+        ret = -1;
+    }
+    mSNICWifi_p->freeCmdBuf( payload_buf );
+
+    return ret;
+}
+
+int C_SNICInterface::disconnect()
+{
+    // Get buffer for response payload from MemoryPool
+    tagMEMPOOL_BLOCK_T *payload_buf = mSNICWifi_p->getAlocCmdBuf();
+    if( payload_buf == NULL )
+    {
+        printf("disconnect payload_buf NULL\r\n");
+        return -1;
+    }
+
+    tagWIFI_DISCONNECT_REQ_T req;
+    // Make request
+    req.cmd_sid = UART_CMD_SID_WIFI_DISCONNECT_REQ;
+    req.seq = mUartRequestSeq++;
+    
+    unsigned char command_array[UART_REQUEST_PAYLOAD_MAX];
+    unsigned int  command_len;
+    // Preparation of command
+    command_len = mSNICWifi_p->preparationSendCommand( UART_CMD_ID_WIFI, req.cmd_sid, (unsigned char *)&req
+                        , sizeof(tagWIFI_DISCONNECT_REQ_T), payload_buf->buf, command_array );
+
+    // Send uart command request
+    mSNICWifi_p->sendUart( command_len, command_array );
+    
+    int ret;
+    // Wait UART response
+    ret = mSNICWifi_p->mUartCommand.wait();
+    if( ret != 0 )
+    {
+        printf( "disconnect failed\r\n" );
+        mSNICWifi_p->freeCmdBuf( payload_buf );
+        return -1;
+    }
+    
+    if( mSNICWifi_p->mUartCommand.getCommandStatus() != 0 )
+    {
+        printf("disconnect status:%02x\r\n", mSNICWifi_p->mUartCommand.getCommandStatus());
+        ret = -1;
+    }
+    mSNICWifi_p->freeCmdBuf( payload_buf );
+    return ret;
+}
+
+int C_SNICInterface::scan( const char *ssid_p, unsigned char *bssid_p
+                        , void (*result_handler_p)(tagSCAN_RESULT_T *scan_result) )
+{
+    // Get buffer for response payload from MemoryPool
+    tagMEMPOOL_BLOCK_T *payload_buf = mSNICWifi_p->getAlocCmdBuf();
+    if( payload_buf == NULL )
+    {
+        printf("scan payload_buf NULL\r\n");
+        return -1;
+    }
+    
+    tagWIFI_SCAN_REQ_T req;
+    unsigned int  buf_len = 0;
+    
+    memset( &req, 0, sizeof(tagWIFI_SCAN_REQ_T) );
+    // Make request
+    req.cmd_sid = UART_CMD_SID_WIFI_SCAN_REQ;
+    buf_len++;
+    req.seq = mUartRequestSeq++;
+    buf_len++;
+    
+    // Set scan type(Active scan)
+    req.scan_type = 0;
+    buf_len++;
+    // Set bss type(any)
+    req.bss_type = 2;
+    buf_len++;
+    // Set BSSID
+    if( bssid_p != NULL )
+    {
+        memcpy( req.bssid, bssid_p, BSSID_MAC_LENTH );
+    }
+    buf_len += BSSID_MAC_LENTH;
+    // Set channel list(0)
+    req.chan_list = 0;
+    buf_len++;
+    //Set SSID
+    if( ssid_p != NULL )
+    {
+        strcpy( (char *)req.ssid, ssid_p );
+        buf_len += strlen(ssid_p);
+    }
+    buf_len++;
+
+    unsigned char command_array[UART_REQUEST_PAYLOAD_MAX];
+    unsigned int  command_len;
+    // Preparation of command
+    command_len = mSNICWifi_p->preparationSendCommand( UART_CMD_ID_WIFI, req.cmd_sid, (unsigned char *)&req
+                        , buf_len, payload_buf->buf, command_array );
+
+    // Set scan result callback 
+    mSNICWifi_p->mUartCommand.setScanResultHandler( result_handler_p );
+    
+    // Send uart command request
+    mSNICWifi_p->sendUart( command_len, command_array );
+
+    int ret;
+    // Wait UART response
+    ret = mSNICWifi_p->mUartCommand.wait();
+    printf( "scan wait:%d\r\n", ret );
+    if( ret != 0 )
+    {
+        printf( "scan failed\r\n" );
+        mSNICWifi_p->freeCmdBuf( payload_buf );
+        return -1;
+    }
+    
+    if( mSNICWifi_p->mUartCommand.getCommandStatus() != 0 )
+    {
+        printf("scan status:%02x\r\n", mSNICWifi_p->mUartCommand.getCommandStatus());
+        ret = -1;
+    }
+
+    mSNICWifi_p->freeCmdBuf( payload_buf );
+
+    return ret;
+}
+
+int C_SNICInterface::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 payload from MemoryPool
+    tagMEMPOOL_BLOCK_T *payload_buf = mSNICWifi_p->getAlocCmdBuf();
+    if( payload_buf == NULL )
+    {
+        printf("wifi_on payload_buf NULL\r\n");
+        return -1;
+    }
+
+    tagWIFI_ON_REQ_T req;
+    // Make request
+    req.cmd_sid = UART_CMD_SID_WIFI_ON_REQ;
+    req.seq = mUartRequestSeq++;
+    memcpy( req.country, country_p, COUNTRYC_CODE_LENTH );
+    
+    unsigned char command_array[UART_REQUEST_PAYLOAD_MAX];
+    unsigned int  command_len;
+    // Preparation of command
+    command_len = mSNICWifi_p->preparationSendCommand( UART_CMD_ID_WIFI, req.cmd_sid, (unsigned char *)&req
+                        , sizeof(tagWIFI_ON_REQ_T), payload_buf->buf, command_array );
+
+    // Send uart command request
+    mSNICWifi_p->sendUart( command_len, command_array );
+    
+    int ret;
+    // Wait UART response
+    ret = mSNICWifi_p->mUartCommand.wait();
+    if( ret != 0 )
+    {
+        printf( "wifi_on failed\r\n" );
+        mSNICWifi_p->freeCmdBuf( payload_buf );
+        return -1;
+    }
+    
+    if( mSNICWifi_p->mUartCommand.getCommandStatus() != 0 )
+    {
+        printf("wifi_on status:%02x\r\n", mSNICWifi_p->mUartCommand.getCommandStatus());
+        ret = -1;
+    }
+    mSNICWifi_p->freeCmdBuf( payload_buf );
+
+    return ret;
+}
+
+int C_SNICInterface::wifi_off()
+{
+    // Get buffer for response payload from MemoryPool
+    tagMEMPOOL_BLOCK_T *payload_buf = mSNICWifi_p->getAlocCmdBuf();
+    if( payload_buf == NULL )
+    {
+        printf("wifi_off payload_buf NULL\r\n");
+        return -1;
+    }
+
+    tagWIFI_OFF_REQ_T req;
+    // Make request
+    req.cmd_sid = UART_CMD_SID_WIFI_OFF_REQ;
+    req.seq = mUartRequestSeq++;
+    
+    unsigned char command_array[UART_REQUEST_PAYLOAD_MAX];
+    unsigned int  command_len;
+    // Preparation of command
+    command_len = mSNICWifi_p->preparationSendCommand( UART_CMD_ID_WIFI, req.cmd_sid, (unsigned char *)&req
+                        , sizeof(tagWIFI_OFF_REQ_T), payload_buf->buf, command_array );
+
+    // Send uart command request
+    mSNICWifi_p->sendUart( command_len, command_array );
+    
+    int ret;
+    // Wait UART response
+    ret = mSNICWifi_p->mUartCommand.wait();
+    if( ret != 0 )
+    {
+        printf( "wifi_off failed\r\n" );
+        mSNICWifi_p->freeCmdBuf( payload_buf );
+        return -1;
+    }
+    
+    if( mSNICWifi_p->mUartCommand.getCommandStatus() != 0 )
+    {
+        printf("wifi_off status:%02x\r\n", mSNICWifi_p->mUartCommand.getCommandStatus());
+        ret = -1;
+    }
+    mSNICWifi_p->freeCmdBuf( payload_buf );
+
+    return ret;
+}
+
+int C_SNICInterface::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 = mSNICWifi_p->getAlocCmdBuf();
+    if( payload_buf == NULL )
+    {
+        printf("getRssi payload_buf NULL\r\n");
+        return -1;
+    }
+
+    tagWIFI_GET_STA_RSSI_REQ_T req;
+    
+    // Make request
+    req.cmd_sid = UART_CMD_SID_WIFI_GET_STA_RSSI_REQ;
+    req.seq     = mUartRequestSeq++;
+    
+    unsigned char  command_array[UART_REQUEST_PAYLOAD_MAX];
+    unsigned int   command_len;
+    command_len = mSNICWifi_p->preparationSendCommand( UART_CMD_ID_WIFI, req.cmd_sid, (unsigned char *)&req
+                        , sizeof(tagWIFI_GET_STA_RSSI_REQ_T), payload_buf->buf, command_array );
+
+    int ret;
+    // Send uart command request
+    mSNICWifi_p->sendUart( command_len, command_array );
+    
+    // Wait UART response
+    ret = mSNICWifi_p->mUartCommand.wait();
+    if( ret != 0 )
+    {
+        printf( "getRssi failed\r\n" );
+        mSNICWifi_p->freeCmdBuf( payload_buf );
+        return -1;
+    }
+    
+    *rssi_p = (signed char)payload_buf->buf[2];
+
+    mSNICWifi_p->freeCmdBuf( payload_buf );
+    return 0;
+}
+
+int C_SNICInterface::getWifiStatus( tagWIFI_STATUS_T *status_p)
+{
+    if( status_p == NULL )
+    {
+        printf("getWifiStatus parameter error\r\n");
+        return -1;
+    }
+    
+    // Get buffer for response payload from MemoryPool
+    tagMEMPOOL_BLOCK_T *payload_buf = mSNICWifi_p->getAlocCmdBuf();
+    if( payload_buf == NULL )
+    {
+        printf("getWifiStatus payload_buf NULL\r\n");
+        return -1;
+    }
+
+    tagWIFI_GET_STATUS_REQ_T req;
+    // Make request
+    req.cmd_sid = UART_CMD_SID_WIFI_GET_STATUS_REQ;
+    req.seq     = mUartRequestSeq++;
+    req.interface = 0;
+    
+    unsigned char  command_array[UART_REQUEST_PAYLOAD_MAX];
+    unsigned int   command_len;
+    command_len = mSNICWifi_p->preparationSendCommand( UART_CMD_ID_WIFI, req.cmd_sid, (unsigned char *)&req
+                        , sizeof(tagWIFI_GET_STATUS_REQ_T), payload_buf->buf, command_array );
+
+    // Send uart command request
+    mSNICWifi_p->sendUart( command_len, command_array );
+    
+    int ret;
+    // Wait UART response
+    ret = mSNICWifi_p->mUartCommand.wait();
+    if( ret != 0 )
+    {
+        printf( "getWifiStatus failed\r\n" );
+        mSNICWifi_p->freeCmdBuf( payload_buf );
+        return -1;
+    }
+    
+    // set status
+    status_p->status = (E_WIFI_STATUS)payload_buf->buf[2];
+    
+    // set Mac address
+    if( status_p->status != e_STATUS_OFF )
+    {
+        memcpy( status_p->mac_address, &payload_buf->buf[3], BSSID_MAC_LENTH );
+    } 
+
+    // set SSID
+    if( ( status_p->status == e_STA_JOINED ) == ( status_p->status == e_AP_STARTED ) )
+    {
+        memcpy( status_p->ssid, &payload_buf->buf[9], strlen( (char *)&payload_buf->buf[9]) );
+    } 
+
+    mSNICWifi_p->freeCmdBuf( payload_buf );
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SNICInterface.h	Wed Mar 19 01:48:37 2014 +0000
@@ -0,0 +1,146 @@
+#ifndef _SNIC_WIFIINTERFACE_H_
+#define _SNIC_WIFIINTERFACE_H_
+
+#include "SNICwifi.h"
+
+namespace murata_wifi
+{
+
+/** C_SNICInterface class
+ */
+class C_SNICInterface {
+public:
+    /** Wi-Fi status */
+    typedef struct
+    {
+        /** status */
+        E_WIFI_STATUS status;
+        /** Mac address */
+        char mac_address[BSSID_MAC_LENTH];
+        /** SSID */
+        char ssid[SSID_MAX_LENGTH+1];
+    }tagWIFI_STATUS_T;
+
+    /** Constructor
+        @param tx mbed pin to use for tx line of Serial interface
+        @param rx mbed pin to use for rx line of Serial interface
+        @param cts mbed pin to use for cts line of Serial interface
+        @param rts mbed pin to use for rts line of Serial interface
+        @param reset reset pin of the wifi module
+        @param alarm alarm pin of the wifi module (default: NC)
+        @param baud baud rate of Serial interface (default: 9600)
+    */
+    C_SNICInterface(PinName tx, PinName rx, PinName cts, PinName rts, PinName reset, PinName alarm = NC, int baud = 115200);
+
+    /** Initialize the interface.
+        @return 0 on success, a negative number on failure
+    */
+    int init();
+
+    /** Get Firmware version string.
+        @param  version_p Pointer of FW version string.(null terminated)[output]
+        @return 0:success/other:fail
+        @note   This function is blocked until a returns.
+                When you use it by UI thread, be careful. 
+    */
+    int getFWVersion( unsigned char *version_p );
+
+    /** Connect to AP
+        @param ssid_p       Wi-Fi SSID(null terminated)
+        @param ssid_len     Wi-Fi SSID length
+        @param sec_type     Wi-Fi security type.
+        @param sec_key_len  Wi-Fi passphrase or security key length
+        @param sec_key_p    Wi-Fi passphrase or security key
+        @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 connect(const char *ssid_p, unsigned char ssid_len, E_SECURITY sec_type, const char *sec_key_p, unsigned char sec_key_len);
+  
+    /** Disconnect from AP
+        @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 disconnect();
+
+    /** Scan AP
+        @param  ssid_p  Wi-Fi SSID(null terminated)
+                        If do not specify SSID, set to NULL.
+        @param  bssid_p Wi-Fi BSSID(null terminated)
+                        If do not specify SSID, set to NULL.
+        @param  result_handler_p Pointer of scan result callback function.
+        @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. 
+                Scan results will be notified by asynchronous callback function.
+                If there is no continuity data, result_handler_p will be set NULL..
+    */
+    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 );
+
+    /** Get Wi-Fi status
+        @param status_p Pointer of status structure.[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 getWifiStatus( tagWIFI_STATUS_T *status_p);
+
+#if 0  
+  /** Get the MAC address of your Ethernet interface
+   * \return a pointer to a string containing the MAC address
+   */
+  char* getMACAddress();
+  
+  /** Get the IP address of your Ethernet interface
+   * \return a pointer to a string containing the IP address
+   */
+  char* getIPAddress();
+
+  /** Get the Gateway address of your Ethernet interface
+   * \return a pointer to a string containing the Gateway address
+   */
+  char* getGateway();
+ 
+  /** Get the Network mask of your Ethernet interface
+   * \return a pointer to a string containing the Network mask
+   */
+  char* getNetworkMask();
+#endif
+
+private:
+    C_SNICwifi *mSNICWifi_p;
+    
+    PinName mUART_tx;
+    PinName mUART_rx;
+    PinName mUART_cts;
+    PinName mUART_rts;
+    int     mUART_baud;
+    PinName mModuleReset;
+};
+}
+#endif  /* _YD_WIFIINTERFACE_H_ */
\ No newline at end of file
--- a/SNICwifi/SNICwifi.cpp	Tue Mar 18 02:57:24 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,191 +0,0 @@
-#include "mbed.h"
-#include "SNICwifi.h"
-#include "SNICwifi_uartmsg.h"
-#include <string>
-//#include <algorithm>
-
-using namespace murata_wifi;
-
-#define UART_RECVBUF_SIZE   2048
-typedef struct
-{
-    unsigned char buf[UART_RECVBUF_SIZE];
-    unsigned int  size;
-    bool          is_receive;
-}tagUART_RECVBUF_T;
-tagUART_RECVBUF_T   gUART_RCVBUF;
-unsigned char   gUART_TEMP_BUF[UART_RECVBUF_SIZE];
-
-C_SNICwifi *C_SNICwifi::mInstance_p;
-
-C_SNICwifi::C_SNICwifi(PinName tx, PinName rx, PinName cts, PinName rts, PinName reset, PinName alarm, int baud):
-    mUart(tx, rx)
-{
-    mUartRecvThread_p = NULL;
-    mInstance_p       = this;
-    mUartRequestSeq   = 0;
-
-    // Initialize uart
-    gUART_RCVBUF.is_receive = false;
-    gUART_RCVBUF.size       = 0;
-    mUart.baud( 115200 );
-    mUart.format(8, SerialBase::None, 1);
-}
-
-int C_SNICwifi::initUart()
-{
-    // Create UART recv thread
-    mUartRecvThread_p = new Thread( C_SNICwifi::uartRecvThread );
-    if( mUartRecvThread_p == NULL )
-    {
-        printf("[C_SNICwifi::initUart] thread cread failed\r\n");
-        return -1;
-    }
-
-    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;
-    
-    mUartMutex.lock();
-    for( int i = 0; i < len; i++ )
-    {
-        // Write to UART
-        ret = mUart.putc( data[i] );
-        if( ret == -1 )
-        {
-            ret = -1;
-            break;
-        }
-    }
-    mUartMutex.unlock();
-    return ret;
-}
-
-tagMEMPOOL_BLOCK_T *C_SNICwifi::getAlocCmdBuf()
-{
-    // Get buffer from MemoryPool
-    return mMemPoolPayload.alloc();
-}
-
-void C_SNICwifi::freeCmdBuf( tagMEMPOOL_BLOCK_T *buf_p )
-{
-    mMemPoolPayload.free( buf_p );
-}
-
-void C_SNICwifi::uartRecvThread (void const *args_p) {
-
-    C_SNICwifi *instance_p = C_SNICwifi::getInstance();
-    if ( instance_p == NULL )
-    {
-        printf("Socket constructor error: no wifly instance available!\r\n");
-    }
-
-    int recvdata = 0;
-    int i;
-    
-    /* UART recv thread main loop */
-    for (;;) 
-    {
-        while( instance_p->mUart.readable() )
-        {
-            // Receive data from UART.
-            instance_p->mUartMutex.lock();
-            recvdata = instance_p->mUart.getc();
-            instance_p->mUartMutex.unlock();
-
-            // Check UART receiving flg
-            if( gUART_RCVBUF.is_receive )
-            {
-                gUART_RCVBUF.buf[ gUART_RCVBUF.size ] = (unsigned char)recvdata;
-                gUART_RCVBUF.size++;
-                // Check  received data is EOM.
-                if( recvdata == UART_CMD_EOM )
-                {
-/*
-                    printf("[recv]\r\n");
-                    for( i = 0; i < gUART_RCVBUF.size; i++ )
-                    {
-                        printf("%02x ", gUART_RCVBUF.buf[i]);
-                    }
-                    printf("\r\n");
-*/
-                    unsigned char command_id;
-                    // Get payload from received data from UART.
-                    int payload_len = C_SNIC_UartMsg::getResponsePayload( gUART_RCVBUF.size, gUART_RCVBUF.buf
-                                                            , &command_id, gUART_TEMP_BUF );
-/*
-                    printf("[payload]\r\n");
-                    for( i = 0; i < payload_len; i++ )
-                    {
-                        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) )
-                    {
-                        // Scan result indicate
-                        instance_p->mUartCommand.scanResultIndicate( gUART_TEMP_BUF, payload_len );
-                    }
-                    
-                    // Checks in the command which is waiting.
-                    if( instance_p->mUartCommand.isWaitingCommand(command_id, gUART_TEMP_BUF) )
-                    {
-                        // Get buffer for payload data
-                        unsigned char *payload_buf_p = instance_p->mUartCommand.getResponseBuf();
-                        if( payload_buf_p != NULL )
-                        {
-                            memcpy( payload_buf_p, gUART_TEMP_BUF, payload_len );
-                            instance_p->mUartCommand.setResponseBuf( NULL );
-                        }
-                        // Set status
-                        instance_p->mUartCommand.setCommandStatus( gUART_TEMP_BUF[2] );
-                        // Set signal for command response wait.
-                        instance_p->mUartCommand.signal();
-                    }
-
-                    gUART_RCVBUF.size = 0;
-                    gUART_RCVBUF.is_receive = false;
-                }
-            }
-            else
-            {
-                // Check  received data is SOM.
-                if( recvdata == UART_CMD_SOM )
-                {
-                    gUART_RCVBUF.size = 0;
-                    gUART_RCVBUF.buf[ gUART_RCVBUF.size ] = (unsigned char)recvdata;
-                    gUART_RCVBUF.size++;
-                    gUART_RCVBUF.is_receive = true;
-                }
-            }
-//            Thread::yield();
-        }
-        Thread::yield();
-    }
-}
-
--- a/SNICwifi/SNICwifi.h	Tue Mar 18 02:57:24 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,199 +0,0 @@
-#ifndef _SNIC_WIFI_H_
-#define _SNIC_WIFI_H_
-
-#include "mbed.h"
-#include "rtos.h"
-#include "RawSerial.h"
-
-#include "SNICwifiUartCommand.h"
-//#include "CBuffer.h"
-
-namespace murata_wifi
-{
-#define UART_REQUEST_PAYLOAD_MAX 256
-
-#define MEMPOOL_BLOCK_SIZE  2048
-#define MEMPOOL_PAYLOAD_NUM 1
-typedef struct
-{
-    unsigned char buf[MEMPOOL_BLOCK_SIZE];
-}tagMEMPOOL_BLOCK_T;
-
-/** C_SNICwifi class
- */
-class C_SNICwifi
-{
-
-public:
-    /** Wi-Fi security
-     */
-    typedef enum SECURITY {
-        /** Securiry Open */
-        e_SEC_OPEN       = 0x00,
-        /** Securiry WEP */
-        e_SEC_WEP        = 0x01,
-        /** Securiry WPA-PSK(TKIP) */
-        e_SEC_WPA_TKIP   = 0x02,
-        /** Securiry WPA2-PSK(AES) */
-        e_SEC_WPA2_AES   = 0x04,
-        /** Securiry WPA2-PSK(TKIP/AES) */
-        e_SEC_WPA2_MIXED = 0x06,
-        /** Securiry WPA-PSK(AES) */
-        e_SEC_WPA_AES    = 0x07
-    }E_SECURITY;
-
-    /** Wi-Fi Network type
-     */
-    typedef enum NETWORK_TYPE {
-        /** Infrastructure */
-        e_INFRA = 0,
-        /** Adhoc */
-        e_ADHOC = 1
-    }E_NETWORK_TYPE;
-
-    /** Wi-Fi status
-     */
-    typedef enum WIFI_STATUS {
-        /** Wi-Fi OFF */
-        e_STATUS_OFF = 0,
-        /** No network */
-        e_NO_NETWORK,
-        /** Connected to AP (STA mode) */
-        e_STA_JOINED,
-        /** Started  on AP mode */
-        e_AP_STARTED
-    }E_WIFI_STATUS;
-
-    /** Get buffer for command from memory pool.
-        @return Pointer of buffer
-     */
-    tagMEMPOOL_BLOCK_T *getAlocCmdBuf();
-    
-    /** Release buffer to memory pool.
-        @param buf_p Pointer of buffer
-     */
-    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 
-    {
-        unsigned char cmd_sid;
-        unsigned char seq;
-    }tagGEN_FW_VER_GET_REQ_T;
-    
-    /** SNIC_INIT_REQ */
-    typedef struct
-    {
-        unsigned char  cmd_sid;
-        unsigned char  seq;
-        unsigned short buf_size;
-    }tagSNIC_INIT_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 
-    {
-        unsigned char cmd_sid;
-        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_GET_STATUS_REQ Command */
-    typedef struct 
-    {
-        unsigned char cmd_sid;
-        unsigned char seq;
-        unsigned char interface;
-    }tagWIFI_GET_STATUS_REQ_T;
-
-    /** WIFI_SCAN_REQ Command */
-    typedef struct 
-    {
-        unsigned char cmd_sid;
-        unsigned char seq;
-        unsigned char scan_type;
-        unsigned char bss_type;
-        unsigned char bssid[BSSID_MAC_LENTH];
-        unsigned char chan_list;
-        unsigned char ssid[SSID_MAX_LENGTH+1];
-    }tagWIFI_SCAN_REQ_T;
-
-    static C_SNICwifi     *mInstance_p;
-    Thread                *mUartRecvThread_p;
-    Mutex                 mUartMutex;
-//    DigitalInOut        mModuleReset;
-    C_SNICwifiUartCommand mUartCommand;
-    RawSerial             mUart;
-    
-    /** Constructor
-     * \param tx mbed pin to use for tx line of Serial interface
-     * \param rx mbed pin to use for rx line of Serial interface
-     * \param cts mbed pin to use for cts line of Serial interface
-     * \param rts mbed pin to use for rts line of Serial interface
-     * \param reset reset pin of the wifi module
-     * \param alarm alarm pin of the wifi module
-     * \param baud baud rate of Serial interface
-     */
-    C_SNICwifi (PinName tx, PinName rx, PinName cts, PinName rts, PinName reset, PinName alarm, int baud);
-
-    /** Initialize UART
-    */
-    int initUart();
-
-    static C_SNICwifi * getInstance() {
-        return mInstance_p;
-    };
-
-    /** Send data to UART
-        @param len  Length of send data
-        @param data Pointer of send data
-        @return 0:success/other:fail
-    */
-    int sendUart( unsigned int len, unsigned char *data );
-
-    /** Receiving thread of UART
-    */
-    static void uartRecvThread( void const *args_p );
-  
-private:
-    /** MemoryPool for payload of UART response */
-    MemoryPool<tagMEMPOOL_BLOCK_T, MEMPOOL_PAYLOAD_NUM>     mMemPoolPayload;
-  
-};
-}
-
-#endif
\ No newline at end of file
--- a/SNICwifi/SNICwifiUartCommand.cpp	Tue Mar 18 02:57:24 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,126 +0,0 @@
-#include "SNICwifiUartCommand.h"
-
-using namespace murata_wifi;
-
-void C_SNICwifiUartCommand::setCommandID( unsigned char cmd_id )
-{
-    mCommandID = cmd_id;
-}
-
-unsigned char C_SNICwifiUartCommand::getCommandID()
-{
-    return mCommandID;
-}
-
-void C_SNICwifiUartCommand::setCommandSID( unsigned char cmd_sid )
-{
-    mCommandSID = cmd_sid;
-}
-
-unsigned char C_SNICwifiUartCommand::getCommandSID()
-{
-    return mCommandSID;
-}
-
-void C_SNICwifiUartCommand::setCommandStatus( unsigned char status )
-{
-    mCommandStatus = status;
-}
-
-unsigned char C_SNICwifiUartCommand::getCommandStatus()
-{
-    return mCommandStatus;
-}
-
-void C_SNICwifiUartCommand::setResponseBuf( unsigned char *buf_p )
-{
-    mResponseBuf_p = buf_p;
-}
-
-unsigned char *C_SNICwifiUartCommand::getResponseBuf()
-{
-    return mResponseBuf_p;
-}
-
-void C_SNICwifiUartCommand::setScanResultHandler( void (*handler_p)(tagSCAN_RESULT_T *scan_result) )
-{
-    mScanResultHandler_p = handler_p;
-}
-
-
-int C_SNICwifiUartCommand::wait()
-{
-    int ret = 0;
-
-    // Get thread ID
-    mCommandThreadID = osThreadGetId();
-    
-    // Signal flags that are reported as event are automatically cleared.
-    osEvent event_ret = osSignalWait( UART_COMMAND_SIGNAL, UART_COMMAND_WAIT_TIMEOUT);
-    if( event_ret.status != osEventSignal )
-    {
-        ret = -1;
-    }
-
-    return ret;
-}
-
-int C_SNICwifiUartCommand::signal()
-{
-    // set signal
-    return osSignalSet(mCommandThreadID, UART_COMMAND_SIGNAL);
-}
-
-bool C_SNICwifiUartCommand::isWaitingCommand( unsigned int command_id, unsigned char *payload_p )
-{
-    bool ret = false;
-
-    if( (command_id == getCommandID())
-        && (payload_p[0] == (getCommandSID() | 0x80) ) )
-    {
-        ret = true;
-    }
-    return ret;
-}
-
-void C_SNICwifiUartCommand::scanResultIndicate( unsigned char *payload_p, int payload_len )
-{
-    if( (payload_p == NULL) || (mScanResultHandler_p == NULL) )
-    {
-        return;
-    }
-    
-    tagSCAN_RESULT_T scan_result;
-    int ap_count  = payload_p[2];
-    
-    if( ap_count == 0 )
-    {
-        mScanResultHandler_p( NULL );
-    }
-    
-    unsigned char *ap_info_p = &payload_p[3];
-    int ap_info_idx = 0;
-
-    for( int i = 0; i < ap_count; i++ )
-    {
-        scan_result.channel = ap_info_p[ap_info_idx];
-        ap_info_idx++;
-        scan_result.rssi    = (signed)ap_info_p[ap_info_idx];
-        ap_info_idx++;
-        scan_result.security= ap_info_p[ap_info_idx];
-        ap_info_idx++;
-        memcpy( scan_result.bssid, &ap_info_p[ap_info_idx], BSSID_MAC_LENTH );
-        ap_info_idx += BSSID_MAC_LENTH;
-        scan_result.network_type= ap_info_p[ap_info_idx];
-        ap_info_idx++;
-        scan_result.max_rate= ap_info_p[ap_info_idx];
-        ap_info_idx++;
-        ap_info_idx++;  // reserved
-        strcpy( scan_result.ssid, (char *)&ap_info_p[ap_info_idx] );
-        ap_info_idx += strlen( (char *)&ap_info_p[ap_info_idx] );
-        ap_info_idx++;
-        
-        // Scanresult callback
-        mScanResultHandler_p( &scan_result );
-    }
-}
--- a/SNICwifi/SNICwifiUartCommand.h	Tue Mar 18 02:57:24 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,119 +0,0 @@
-#ifndef _SNIC_WIFI_UART_COMMAND_H_
-#define _SNIC_WIFI_UART_COMMAND_H_
-#include "mbed.h"
-#include "rtos.h"
-
-namespace murata_wifi
-{
-/** Max length of SSID */
-#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
-/** Timeout of UART command wait(ms)*/
-#define UART_COMMAND_WAIT_TIMEOUT  10000
-
-/** Scan result 
-*/
-typedef struct {
-    bool          is_complete;
-    /** Channel */
-    unsigned char channel;
-    /** RSSI */
-    signed   char rssi;
-    /** Security type */
-    unsigned char security;
-    /** BSSID */
-    unsigned char bssid[BSSID_MAC_LENTH];
-    /** Network type */
-    unsigned char network_type;
-    /** Max data rate */
-    unsigned char max_rate;
-    /** SSID */
-    char          ssid[SSID_MAX_LENGTH+1];
-}tagSCAN_RESULT_T;
-
-/** C_SNICwifiUartCommand class
- */
-class C_SNICwifiUartCommand
-{
-public:
-    /** Set Command ID
-        @param cmd_id Command ID
-    */
-    void setCommandID( unsigned char cmd_id );
-
-    /** Get Command ID
-        @return Command ID
-    */
-    unsigned char getCommandID();
-
-    /** Set Command SubID
-        @param cmd_sid Command Sub ID
-    */
-    void setCommandSID( unsigned char cmd_sid );
-
-    /** Get Command SubID
-        @return Command Sub ID
-    */
-    unsigned char getCommandSID();
-    
-    /** Set Command status
-        @param status Command status
-    */
-    void setCommandStatus( unsigned char status );
-
-    /** Get Command status
-        @return Command status
-    */
-    unsigned char getCommandStatus();
-
-    /** Set Response buffer
-        @param buf_p Pointer of response buffer
-    */
-    void setResponseBuf( unsigned char *buf_p );
-
-    /** Get Response buffer
-        @return Pointer of response buffer
-    */
-    unsigned char *getResponseBuf();
-
-    /** Set scan result callback hander
-        @param handler_p Pointer of callback function
-    */
-    void setScanResultHandler( void (*handler_p)(tagSCAN_RESULT_T *scan_result) );
-    
-    void scanResultIndicate( unsigned char *payload_p, int payload_len );
-    
-    /** Checks in the command which is waiting from Command ID and Sub ID.
-        @param  command_id  Command ID
-        @param  payload_p   Command payload
-        @return true: Waiting command / false: Not waiting command
-    */
-    bool isWaitingCommand( unsigned int command_id, unsigned char *payload_p );
-
-    int wait();
-    
-    int signal();
-
-protected:
-    /** Command request thread ID */
-    osThreadId    mCommandThreadID;
-    /** Command ID */
-    unsigned char mCommandID;
-    /** Command SubID */
-    unsigned char mCommandSID;
-    /** Status of command response */
-    unsigned char mCommandStatus;
-    /** ResponseData of command response */
-    unsigned char *mResponseBuf_p;
-    /** Scan result handler */
-    void (*mScanResultHandler_p)(tagSCAN_RESULT_T *scan_result);
-};
-    
-}
-#endif
--- a/SNICwifi/SNICwifi_uartmsg.cpp	Tue Mar 18 02:57:24 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,129 +0,0 @@
-#include "SNICwifi_uartmsg.h"
-
-using namespace murata_wifi;
-
-C_SNIC_UartMsg::C_SNIC_UartMsg()
-{
-}
-
-unsigned short C_SNIC_UartMsg::makePayload( unsigned int cmd_len, unsigned char *cmd_p, unsigned char *payload_p )
-{
-    unsigned short payload_len = 0;
-    int i;
-    
-    for( i = 0; i < cmd_len; i++, payload_p++, payload_len++ )
-    {
-        /* check Escape code */
-        if( ( cmd_p[i] == UART_CMD_SOM ) || ( cmd_p[i] == UART_CMD_EOM ) || ( cmd_p[i] == UART_CMD_ESC ) )
-        {
-            /* Add ESC */
-            *payload_p = UART_CMD_ESC;
-            payload_len++;
-            
-            payload_p++;
-            *payload_p = (0x80 | cmd_p[i]);
-        }
-        else
-        {
-            *payload_p = cmd_p[i];
-        }
-    }
-    
-    return payload_len;
-}
-
-unsigned int C_SNIC_UartMsg::makeRequest( unsigned char cmd_id,unsigned char *payload_p
-                                , unsigned short payload_len, unsigned char *uart_command_p )
-{
-    unsigned char check_sum = 0;    // Check Sum
-    unsigned int  uart_cmd_len = 0;
-    int i;
-    
-    // set SOM
-    *uart_command_p = UART_CMD_SOM;
-    uart_command_p++;
-    uart_cmd_len++;
-    
-    // set payload length L0
-    *uart_command_p = (0x80 | (payload_len & 0x007f));
-    check_sum += *uart_command_p;
-    uart_command_p++;
-    uart_cmd_len++;
-
-    // set payload length L1
-    *uart_command_p = (0x80 | ( (payload_len >> 7) & 0x003f));
-    check_sum += *uart_command_p;
-    uart_command_p++;
-    uart_cmd_len++;
-    
-    // set Command ID
-    *uart_command_p = (0x80 | cmd_id);
-    check_sum += *uart_command_p;
-    uart_command_p++;
-    uart_cmd_len++;
-
-    // set Payload
-    for( i = 0; i < payload_len; i++, uart_command_p++, uart_cmd_len++ )
-    {
-        *uart_command_p = payload_p[i];
-        check_sum += *uart_command_p;
-    }
-
-    // set Check sum
-    *uart_command_p = (0x80 | check_sum);
-    uart_command_p++;
-    uart_cmd_len++;
-    
-    // set EOM
-    *uart_command_p = UART_CMD_EOM;
-    uart_cmd_len++;
-    
-    return uart_cmd_len;
-}
-
-unsigned int C_SNIC_UartMsg::getResponsePayload( unsigned int recvdata_len, unsigned char *recvdata_p
-                                            , unsigned char *command_id_p,  unsigned char *payload_p )
-{
-    unsigned short payload_len  = 0;
-    unsigned int   response_len = 0;
-    unsigned char *buf = NULL;
-    bool isESC = false;
-    int i;
-    
-    // get payload length
-    payload_len = ( ( (recvdata_p[1] & ~0x80) & 0xff) | ( ( (recvdata_p[2] & ~0xC0) << 7) & 0xff80) );
-
-    // get Command ID
-    *command_id_p = (recvdata_p[3] & ~0x80);
-
-    buf = &recvdata_p[4];
-
-    // get payload data
-    for( i = 0; i < payload_len; i++, buf++ )
-    {
-        if( isESC )
-        {
-            *payload_p = (*buf & ~0x80);
-            payload_p++;
-            response_len++;
-            isESC = false;
-        }
-        else
-        {
-            // Check Escape code
-            if( *buf == UART_CMD_ESC )
-            {
-                isESC = true;
-                continue;
-            }
-            else
-            {
-                *payload_p = *buf;
-                payload_p++;
-                response_len++;
-            }
-        }
-    }
-
-    return response_len;
-}
\ No newline at end of file
--- a/SNICwifi/SNICwifi_uartmsg.h	Tue Mar 18 02:57:24 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,159 +0,0 @@
-#ifndef _SNIC_WIFI_UART_MSG_H_
-#define _SNIC_WIFI_UART_MSG_H_
-
-#include "mbed.h"
-#include "rtos.h"
-#include "RawSerial.h"
-
-namespace murata_wifi
-{
-
-#define UART_CMD_SOM        0x02
-#define UART_CMD_EOM        0x04
-#define UART_CMD_ESC        0x10
-
-/* SNIC UART Command ID */
-#define UART_CMD_ID_GEN     0x01    //General command
-#define UART_CMD_ID_SNIC    0x70    //SNIC command
-#define UART_CMD_ID_WIFI    0x50    //Wi-Fi command
-
-/* SNIC UART Subcommand ID */
-#define UART_CMD_SID_GEN_PWR_UP_IND          0x00   //Power up indication
-#define UART_CMD_SID_GEN_FW_VER_GET_REQ      0x08   //Get firmware version string
-
-#define UART_CMD_SID_SNIC_INIT_REQ                      0x00    // SNIC API initialization
-#define UART_CMD_SID_SNIC_CLEANUP_REQ                   0x01    // SNIC API cleanup
-#define UART_CMD_SID_SNIC_SEND_FROM_SOCKET_REQ          0x02    // Send from socket
-#define UART_CMD_SID_SNIC_CLOSE_SOCKET_REQ              0x03    // Close socket
-#define UART_CMD_SID_SNIC_ SOCKET _PARTIAL_CLOSE_ REQ   0x04    // Socket partial close
-#define UART_CMD_SID_SNIC_GETSOCKOPT_REQ                0x05    // Get socket option
-#define UART_CMD_SID_SNIC_SETSOCKOPT_REQ                0x06    // Set socket option
-#define UART_CMD_SID_SNIC_SOCKET_GETNAME_REQ            0x07    // Get name or peer name
-#define UART_CMD_SID_SNIC_SEND_ARP_REQ                  0x08    // Send ARP request
-#define UART_CMD_SID_SNIC_GET_DHCP_INFO_REQ             0x09    // Get DHCP info
-#define UART_CMD_SID_SNIC_RESOLVE_NAME_REQ              0x0A    // Resolve a host name to IP address
-#define UART_CMD_SID_SNIC_IP_CONFIG_REQ                 0x0B    // Configure DHCP or static IP
-#define UART_CMD_SID_SNIC_DATA_IND_ACK_CONFIG_REQ       0x0C    // ACK configuration for data indications
-#define UART_CMD_SID_SNIC_TCP_CREATE_SOCKET_REQ         0x10    // Create TCP socket
-#define UART_CMD_SID_SNIC_TCP_CREATE_CONNECTION_REQ     0x11    // Create TCP connection server
-#define UART_CMD_SID_SNIC_TCP_CONNECT_TO_SERVER_REQ     0x12    // Connect to TCP server
-#define UART_CMD_SID_SNIC_UDP_CREATE_SOCKET_REQ         0x13    // Create UDP socket
-#define UART_CMD_SID_SNIC_UDP_START_RECV_REQ            0x14    // Start UDP receive on socket
-#define UART_CMD_SID_SNIC_UDP_SIMPLE_SEND_REQ           0x15    // Send UDP packet
-#define UART_CMD_SID_SNIC_UDP_SEND_ FROM_SOCKET_REQ     0x16    // Send UDP packet from socket
-#define UART_CMD_SID_SNIC_HTTP_REQ                      0x17    // Send HTTP request
-#define UART_CMD_SID_SNIC_HTTP_MORE_REQ                 0x18    // Send HTTP more data request
-#define UART_CMD_SID_SNIC_HTTPS_REQ                     0x19    // Send HTTPS request
-#define UART_CMD_SID_SNIC_TCP_CREATE_ADV_TLS_SOCKET_REQ 0x1A    // Create advanced TLS TCP socket
-#define UART_CMD_SID_SNIC_TCP_CREAET_SIMPLE_TLS_SOCKET_REQ  0x1B    // Create simple TLS TCP socket
-#define UART_CMD_SID_SNIC_TCP_CONNECTION_STATUS_IND     0x20    // Connection status indication
-#define UART_CMD_SID_SNIC_TCP_CLIENT_SOCKET_IND         0x21    // TCP client socket indication
-#define UART_CMD_SID_SNIC_CONNECTION_RECV_IND           0x22    // TCP or connected UDP packet received indication
-#define UART_CMD_SID_SNIC_UDP_RECV_IND                  0x23    // UCP packet received indication
-#define UART_CMD_SID_SNIC_ARP_REPLY_IND                 0x24    // ARP reply indication
-#define UART_CMD_SID_SNIC_HTTP_RSP_IND                  0x25    // HTTP response indication
-
-#define UART_CMD_SID_WIFI_ON_REQ             0x00   // Turn on Wifi
-#define UART_CMD_SID_WIFI_OFF_REQ            0x01   // Turn off Wifi
-#define UART_CMD_SID_WIFI_JOIN_REQ           0x02   // Associate to a network
-#define UART_CMD_SID_WIFI_DISCONNECT_REQ     0x03   // Disconnect from a network
-#define UART_CMD_SID_WIFI_GET_STATUS_REQ     0x04   // Get WiFi status
-#define UART_CMD_SID_WIFI_SCAN_REQ           0x05   // Scan WiFi networks
-#define UART_CMD_SID_WIFI_GET_STA_RSSI_REQ   0x06   // Get STA signal strength (RSSI)
-#define UART_CMD_SID_WIFI_AP_CTRL_REQ        0x07   // Soft AP on-off control
-#define UART_CMD_SID_WIFI_WPS_REQ            0x08   // Start WPS process
-#define UART_CMD_SID_WIFI_AP_GET_CLIENT_REQ  0x0A   // Get clients that are associated to the soft AP.
-#define UART_CMD_SID_WIFI_NETWORK_STATUS_IND 0x10   // Network status indication
-#define UART_CMD_SID_WIFI_SCAN_RESULT_IND    0x11   // Scan result indication
-
-/* SNIC UART Command response status code */
-#define UART_CMD_RES_SNIC_SUCCESS                   0x00
-#define UART_CMD_RES_SNIC_FAIL                      0x01
-#define UART_CMD_RES_SNIC_INIT_FAIL                 0x02
-#define UART_CMD_RES_SNIC_CLEANUP_FAIL              0x03
-#define UART_CMD_RES_SNIC_GETADDRINFO_FAIL          0x04
-#define UART_CMD_RES_SNIC_CREATE_SOCKET_FAIL        0x05
-#define UART_CMD_RES_SNIC_BIND_SOCKET_FAIL          0x06
-#define UART_CMD_RES_SNIC_LISTEN_SOCKET_FAIL        0x07
-#define UART_CMD_RES_SNIC_ACCEPT_SOCKET_FAIL        0x08
-#define UART_CMD_RES_SNIC_PARTIAL_CLOSE_FAIL        0x09
-#define UART_CMD_RES_SNIC_SOCKET_PARTIALLY_CLOSED   0x0A
-#define UART_CMD_RES_SNIC_SOCKET_CLOSED             0x0B
-#define UART_CMD_RES_SNIC_CLOSE_SOCKET_FAIL         0x0C
-#define UART_CMD_RES_SNIC_PACKET_TOO_LARGE          0x0D
-#define UART_CMD_RES_SNIC_SEND_FAIL                 0x0E
-#define UART_CMD_RES_SNIC_CONNECT_TO_SERVER_FAIL    0x0F
-#define UART_CMD_RES_SNIC_NOT_ENOUGH_MEMORY         0x10
-#define UART_CMD_RES_SNIC_TIMEOUT                   0x11
-#define UART_CMD_RES_SNIC_CONNECTION_UP             0x12
-#define UART_CMD_RES_SNIC_GETSOCKOPT_FAIL           0x13
-#define UART_CMD_RES_SNIC_SETSOCKOPT_FAIL           0x14
-#define UART_CMD_RES_SNIC_INVALID_ARGUMENT          0x15
-#define UART_CMD_RES_SNIC_SEND_ARP_FAIL             0x16
-#define UART_CMD_RES_SNIC_INVALID_SOCKET            0x17
-#define UART_CMD_RES_SNIC_COMMAND_PENDING           0x18
-#define UART_CMD_RES_SNIC_SOCKET_NOT_BOUND          0x19
-#define UART_CMD_RES_SNIC_SOCKET_NOT_CONNECTED      0x1A
-#define UART_CMD_RES_SNIC_NO_NETWORK                0x20
-#define UART_CMD_RES_SNIC_INIT_NOT_DONE             0x21
-#define UART_CMD_RES_SNIC_NET_IF_FAIL               0x22
-#define UART_CMD_RES_SNIC_NET_IF_NOT_UP             0x23
-#define UART_CMD_RES_SNIC_DHCP_START_FAIL           0x24
-
-#define UART_CMD_RES_WIFI_SUCCESS               0x00
-#define UART_CMD_RES_WIFI_ERR_UNKNOWN_COUNTRY   0x01
-#define UART_CMD_RES_WIFI_ERR_INIT_FAIL         0x02
-#define UART_CMD_RES_WIFI_ERR_ALREADY_JOINED    0x03
-#define UART_CMD_RES_WIFI_ERR_AUTH_TYPE         0x04
-#define UART_CMD_RES_WIFI_ERR_JOIN_FAIL         0x05
-#define UART_CMD_RES_WIFI_ERR_NOT_JOINED        0x06
-#define UART_CMD_RES_WIFI_ERR_LEAVE_FAILED      0x07
-#define UART_CMD_RES_WIFI_COMMAND_PENDING       0x08
-#define UART_CMD_RES_WIFI_WPS_NO_CONFIG         0x09
-#define UART_CMD_RES_WIFI_NETWORK_UP            0x10
-#define UART_CMD_RES_WIFI_NETWORK_DOWN          0x11
-#define UART_CMD_RES_WIFI_FAIL                  0xFF
-
-/** UART Command sequence number
-*/
-static unsigned char mUartRequestSeq;  
-
-/** C_SNIC_UartMsg class
- */
-class C_SNIC_UartMsg
-{
-
-public:
-    C_SNIC_UartMsg();
-    
-    /** Make SNIC UART command payload.
-            @param cmd_len      Command length
-            @param cmd_p        Command pointer
-            @param payload_p    Payload pointer[output]
-            @return payload length    
-    */
-    static unsigned short makePayload( unsigned int cmd_len, unsigned char *cmd_p, unsigned char *payload_p );
-    
-    /** Make SNIC UART command.
-            @param cmd_id         Command ID
-            @param payload_p      Payload pointer
-            @param uart_command_p UART Command pointer [output]
-            @return UART Command length    
-    */
-    static unsigned int makeRequest( unsigned char cmd_id, unsigned char *payload_p, unsigned short payload_len, unsigned char *uart_command_p );
-
-
-    /** Get uart command from receive data.
-            @param recvdata_len   Receive data length
-            @param recvdata_p     Pointer of received data from UART
-            @param command_id_p   Pointer of command ID[output]
-            @param payload_p      Pointer of payload[output]
-            @return Payload length    
-    */
-    static unsigned int getResponsePayload( unsigned int recvdata_len, unsigned char *recvdata_p
-                                    , unsigned char *command_id_p,  unsigned char *payload_p );
-protected:
-
-};
-}
-#endif /* _YD_WIFI_UART_MSG_H_ */
\ No newline at end of file
--- a/SNICwifiInterface.cpp	Tue Mar 18 02:57:24 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,508 +0,0 @@
-#include "SNICwifiInterface.h"
-#include "SNICwifi_uartmsg.h"
-
-using namespace murata_wifi;
-
-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)
-{
-}
-
-int C_SNICwifiInterface::init()
-{
-    /* Initialize UART */
-    initUart();
-    
-    /* Initialize SNIC API */
-    // Get buffer for response payload from MemoryPool
-    tagMEMPOOL_BLOCK_T *payload_buf = getAlocCmdBuf();
-    if( payload_buf == NULL )
-    {
-        printf("snic_init payload_buf NULL\r\n");
-        return -1;
-    }
-
-    tagSNIC_INIT_REQ_T req;
-    // Make request
-    req.cmd_sid = UART_CMD_SID_SNIC_INIT_REQ;
-    req.seq = mUartRequestSeq++;
-    req.buf_size = 0x800;
-
-    unsigned char command_array[UART_REQUEST_PAYLOAD_MAX];
-    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 );
-
-    // Send uart command request
-    sendUart( command_len, command_array );
-
-    int ret;
-    // Wait UART response
-    ret = mUartCommand.wait();
-    if( ret != 0 )
-    {
-        printf( "snic_init failed\r\n" );
-        freeCmdBuf( payload_buf );
-        return -1;
-    }
-    
-    if( mUartCommand.getCommandStatus() != 0 )
-    {
-        printf("snic_init status:%02x\r\n", mUartCommand.getCommandStatus());
-        ret = -1;
-    }
-    freeCmdBuf( payload_buf );
-    
-    return ret;
-}
-
-int C_SNICwifiInterface::getFWVersion( unsigned char *version_p )
-{
-    // Get buffer for response payload from MemoryPool
-    tagMEMPOOL_BLOCK_T *payload_buf = getAlocCmdBuf();
-    if( payload_buf == NULL )
-    {
-        printf("getFWVersion payload_buf NULL\r\n");
-        return -1;
-    }
-
-    tagGEN_FW_VER_GET_REQ_T req;
-    // Make request
-    req.cmd_sid = UART_CMD_SID_GEN_FW_VER_GET_REQ;
-    req.seq     = mUartRequestSeq++;
-    
-    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;
-    
-    // Send uart command request
-    sendUart( command_len, command_array );
-    
-    // Wait UART response
-    ret = mUartCommand.wait();
-    if( ret != 0 )
-    {
-        printf( "getFWversion failed\r\n" );
-        freeCmdBuf( payload_buf );
-        return -1;
-    }
-    
-    if( mUartCommand.getCommandStatus() == 0 )
-    {
-        unsigned char version_len = payload_buf->buf[3];
-        memcpy( version_p, &payload_buf->buf[4], version_len );
-    }
-    freeCmdBuf( payload_buf );
-    return 0;
-}
-
-int C_SNICwifiInterface::connect(const char *ssid_p, unsigned char ssid_len, E_SECURITY sec_type
-                            , const char *sec_key_p, unsigned char sec_key_len)
-{
-    // Parameter check(SSID)
-    if( (ssid_p == NULL) || (ssid_len == 0) )
-    {
-        printf( "connect failed [ parameter NG:SSID ]\r\n" );
-        return -1;
-    }
-    
-    // Parameter check(Security key)
-    if( (sec_type != e_SEC_OPEN) && ( (sec_key_len == 0) || (sec_key_p == NULL) ) )
-    {
-        printf( "connect failed [ parameter NG:Security key ]\r\n" );
-        return -1;
-    }
-    
-    // Get buffer for response payload from MemoryPool
-    tagMEMPOOL_BLOCK_T *payload_buf = getAlocCmdBuf();
-    if( payload_buf == NULL )
-    {
-        printf("connect payload_buf NULL\r\n");
-        return -1;
-    }
-
-    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
-    buf[0] = UART_CMD_SID_WIFI_JOIN_REQ;
-    buf_len++;
-    buf[1] = mUartRequestSeq++;
-    buf_len++;
-    // SSID
-    memcpy( &buf[2], ssid_p, ssid_len );
-    buf_len += ssid_len;
-    buf_len++;
-    
-    // Security mode
-    buf[ buf_len ] = (unsigned char)sec_type;
-    buf_len++;
-
-    // Security key
-    if( sec_type != e_SEC_OPEN )
-    {
-        buf[ buf_len ] = sec_key_len;
-        buf_len++;
-        if( sec_key_len > 0 )
-        {
-            memcpy( &buf[buf_len], sec_key_p, sec_key_len );
-            buf_len += sec_key_len;
-        }
-    }
-
-    // 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 )
-    {
-        printf( "join failed\r\n" );
-        freeCmdBuf( payload_buf );
-        return -1;
-    }
-    
-    if( mUartCommand.getCommandStatus() != 0 )
-    {
-        printf("join status:%02x\r\n", mUartCommand.getCommandStatus());
-        ret = -1;
-    }
-    freeCmdBuf( payload_buf );
-
-    return ret;
-}
-
-int C_SNICwifiInterface::disconnect()
-{
-    // Get buffer for response payload from MemoryPool
-    tagMEMPOOL_BLOCK_T *payload_buf = getAlocCmdBuf();
-    if( payload_buf == NULL )
-    {
-        printf("disconnect payload_buf NULL\r\n");
-        return -1;
-    }
-
-    tagWIFI_DISCONNECT_REQ_T req;
-    // Make request
-    req.cmd_sid = UART_CMD_SID_WIFI_DISCONNECT_REQ;
-    req.seq = mUartRequestSeq++;
-    
-    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 );
-
-    // Send uart command request
-    sendUart( command_len, command_array );
-    
-    int ret;
-    // Wait UART response
-    ret = mUartCommand.wait();
-    if( ret != 0 )
-    {
-        printf( "disconnect failed\r\n" );
-        freeCmdBuf( payload_buf );
-        return -1;
-    }
-    
-    if( mUartCommand.getCommandStatus() != 0 )
-    {
-        printf("disconnect status:%02x\r\n", mUartCommand.getCommandStatus());
-        ret = -1;
-    }
-    freeCmdBuf( payload_buf );
-    return ret;
-}
-
-int C_SNICwifiInterface::scan( const char *ssid_p, unsigned char *bssid_p
-                        , void (*result_handler_p)(tagSCAN_RESULT_T *scan_result) )
-{
-    // Get buffer for response payload from MemoryPool
-    tagMEMPOOL_BLOCK_T *payload_buf = getAlocCmdBuf();
-    if( payload_buf == NULL )
-    {
-        printf("scan payload_buf NULL\r\n");
-        return -1;
-    }
-    
-    tagWIFI_SCAN_REQ_T req;
-    unsigned int  buf_len = 0;
-    
-    memset( &req, 0, sizeof(tagWIFI_SCAN_REQ_T) );
-    // Make request
-    req.cmd_sid = UART_CMD_SID_WIFI_SCAN_REQ;
-    buf_len++;
-    req.seq = mUartRequestSeq++;
-    buf_len++;
-    
-    // Set scan type(Active scan)
-    req.scan_type = 0;
-    buf_len++;
-    // Set bss type(any)
-    req.bss_type = 2;
-    buf_len++;
-    // Set BSSID
-    if( bssid_p != NULL )
-    {
-        memcpy( req.bssid, bssid_p, BSSID_MAC_LENTH );
-    }
-    buf_len += BSSID_MAC_LENTH;
-    // Set channel list(0)
-    req.chan_list = 0;
-    buf_len++;
-    //Set SSID
-    if( ssid_p != NULL )
-    {
-        strcpy( (char *)req.ssid, ssid_p );
-        buf_len += strlen(ssid_p);
-    }
-    buf_len++;
-
-    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 );
-
-    // 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 );
-    if( ret != 0 )
-    {
-        printf( "scan failed\r\n" );
-        freeCmdBuf( payload_buf );
-        return -1;
-    }
-    
-    if( mUartCommand.getCommandStatus() != 0 )
-    {
-        printf("scan status:%02x\r\n", mUartCommand.getCommandStatus());
-        ret = -1;
-    }
-
-    freeCmdBuf( payload_buf );
-
-    return ret;
-}
-
-int C_SNICwifiInterface::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 payload from MemoryPool
-    tagMEMPOOL_BLOCK_T *payload_buf = getAlocCmdBuf();
-    if( payload_buf == NULL )
-    {
-        printf("wifi_on payload_buf NULL\r\n");
-        return -1;
-    }
-
-    tagWIFI_ON_REQ_T req;
-    // Make request
-    req.cmd_sid = UART_CMD_SID_WIFI_ON_REQ;
-    req.seq = mUartRequestSeq++;
-    memcpy( req.country, country_p, COUNTRYC_CODE_LENTH );
-    
-    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 );
-
-    // Send uart command request
-    sendUart( command_len, command_array );
-    
-    int ret;
-    // Wait UART response
-    ret = mUartCommand.wait();
-    if( ret != 0 )
-    {
-        printf( "wifi_on failed\r\n" );
-        freeCmdBuf( payload_buf );
-        return -1;
-    }
-    
-    if( mUartCommand.getCommandStatus() != 0 )
-    {
-        printf("wifi_on status:%02x\r\n", mUartCommand.getCommandStatus());
-        ret = -1;
-    }
-    freeCmdBuf( payload_buf );
-
-    return ret;
-}
-
-int C_SNICwifiInterface::wifi_off()
-{
-    // Get buffer for response payload from MemoryPool
-    tagMEMPOOL_BLOCK_T *payload_buf = getAlocCmdBuf();
-    if( payload_buf == NULL )
-    {
-        printf("wifi_off payload_buf NULL\r\n");
-        return -1;
-    }
-
-    tagWIFI_OFF_REQ_T req;
-    // Make request
-    req.cmd_sid = UART_CMD_SID_WIFI_OFF_REQ;
-    req.seq = mUartRequestSeq++;
-    
-    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 );
-
-    // Send uart command request
-    sendUart( command_len, command_array );
-    
-    int ret;
-    // Wait UART response
-    ret = mUartCommand.wait();
-    if( ret != 0 )
-    {
-        printf( "wifi_off failed\r\n" );
-        freeCmdBuf( payload_buf );
-        return -1;
-    }
-    
-    if( mUartCommand.getCommandStatus() != 0 )
-    {
-        printf("wifi_off status:%02x\r\n", mUartCommand.getCommandStatus());
-        ret = -1;
-    }
-    freeCmdBuf( payload_buf );
-
-    return ret;
-}
-
-int C_SNICwifiInterface::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 = getAlocCmdBuf();
-    if( payload_buf == NULL )
-    {
-        printf("getRssi payload_buf NULL\r\n");
-        return -1;
-    }
-
-    tagWIFI_GET_STA_RSSI_REQ_T req;
-    
-    // Make request
-    req.cmd_sid = UART_CMD_SID_WIFI_GET_STA_RSSI_REQ;
-    req.seq     = mUartRequestSeq++;
-    
-    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 );
-
-    int ret;
-    // Send uart command request
-    sendUart( command_len, command_array );
-    
-    // Wait UART response
-    ret = mUartCommand.wait();
-    if( ret != 0 )
-    {
-        printf( "getRssi failed\r\n" );
-        freeCmdBuf( payload_buf );
-        return -1;
-    }
-    
-    *rssi_p = (signed char)payload_buf->buf[2];
-
-    freeCmdBuf( payload_buf );
-    return 0;
-}
-
-int C_SNICwifiInterface::getWifiStatus( tagWIFI_STATUS_T *status_p)
-{
-    if( status_p == NULL )
-    {
-        printf("getWifiStatus parameter error\r\n");
-        return -1;
-    }
-    
-    // Get buffer for response payload from MemoryPool
-    tagMEMPOOL_BLOCK_T *payload_buf = getAlocCmdBuf();
-    if( payload_buf == NULL )
-    {
-        printf("getWifiStatus payload_buf NULL\r\n");
-        return -1;
-    }
-
-    tagWIFI_GET_STATUS_REQ_T req;
-    // Make request
-    req.cmd_sid = UART_CMD_SID_WIFI_GET_STATUS_REQ;
-    req.seq     = mUartRequestSeq++;
-    req.interface = 0;
-    
-    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 );
-
-    // Send uart command request
-    sendUart( command_len, command_array );
-    
-    int ret;
-    // Wait UART response
-    ret = mUartCommand.wait();
-    if( ret != 0 )
-    {
-        printf( "getWifiStatus failed\r\n" );
-        freeCmdBuf( payload_buf );
-        return -1;
-    }
-    
-    // set status
-    status_p->status = (E_WIFI_STATUS)payload_buf->buf[2];
-    
-    // set Mac address
-    if( status_p->status != e_STATUS_OFF )
-    {
-        memcpy( status_p->mac_address, &payload_buf->buf[3], BSSID_MAC_LENTH );
-    } 
-
-    // set SSID
-    if( ( status_p->status == e_STA_JOINED ) == ( status_p->status == e_AP_STARTED ) )
-    {
-        memcpy( status_p->ssid, &payload_buf->buf[9], strlen( (char *)&payload_buf->buf[9]) );
-    } 
-
-    freeCmdBuf( payload_buf );
-    return 0;
-}
--- a/SNICwifiInterface.h	Tue Mar 18 02:57:24 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,136 +0,0 @@
-#ifndef _SNIC_WIFIINTERFACE_H_
-#define _SNIC_WIFIINTERFACE_H_
-
-#include "SNICwifi.h"
-
-namespace murata_wifi
-{
-
-/** C_SNICwifiInterface class
- */
-class C_SNICwifiInterface: public C_SNICwifi {
-public:
-    /** Wi-Fi status */
-    typedef struct
-    {
-        /** status */
-        E_WIFI_STATUS status;
-        /** Mac address */
-        char mac_address[BSSID_MAC_LENTH];
-        /** SSID */
-        char ssid[SSID_MAX_LENGTH+1];
-    }tagWIFI_STATUS_T;
-
-    /** Constructor
-        @param tx mbed pin to use for tx line of Serial interface
-        @param rx mbed pin to use for rx line of Serial interface
-        @param cts mbed pin to use for cts line of Serial interface
-        @param rts mbed pin to use for rts line of Serial interface
-        @param reset reset pin of the wifi module
-        @param alarm alarm pin of the wifi module (default: NC)
-        @param baud baud rate of Serial interface (default: 9600)
-    */
-    C_SNICwifiInterface(PinName tx, PinName rx, PinName cts, PinName rts, PinName reset, PinName alarm = NC, int baud = 9600);
-
-    /** Initialize the interface.
-        @return 0 on success, a negative number on failure
-    */
-    int init();
-
-    /** Get Firmware version string.
-        @param  version_p Pointer of FW version string.(null terminated)[output]
-        @return 0:success/other:fail
-        @note   This function is blocked until a returns.
-                When you use it by UI thread, be careful. 
-    */
-    int getFWVersion( unsigned char *version_p );
-
-    /** Connect to AP
-        @param ssid_p       Wi-Fi SSID(null terminated)
-        @param ssid_len     Wi-Fi SSID length
-        @param sec_type     Wi-Fi security type.
-        @param sec_key_len  Wi-Fi passphrase or security key length
-        @param sec_key_p    Wi-Fi passphrase or security key
-        @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 connect(const char *ssid_p, unsigned char ssid_len, E_SECURITY sec_type, const char *sec_key_p, unsigned char sec_key_len);
-  
-    /** Disconnect from AP
-        @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 disconnect();
-
-    /** Scan AP
-        @param  ssid_p  Wi-Fi SSID(null terminated)
-                        If do not specify SSID, set to NULL.
-        @param  bssid_p Wi-Fi BSSID(null terminated)
-                        If do not specify SSID, set to NULL.
-        @param  result_handler_p Pointer of scan result callback function.
-        @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. 
-                Scan results will be notified by asynchronous callback function.
-                If there is no continuity data, result_handler_p will be set NULL..
-    */
-    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 );
-
-    /** Get Wi-Fi status
-        @param status_p Pointer of status structure.[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 getWifiStatus( tagWIFI_STATUS_T *status_p);
-
-#if 0  
-  /** Get the MAC address of your Ethernet interface
-   * \return a pointer to a string containing the MAC address
-   */
-  char* getMACAddress();
-  
-  /** Get the IP address of your Ethernet interface
-   * \return a pointer to a string containing the IP address
-   */
-  char* getIPAddress();
-
-  /** Get the Gateway address of your Ethernet interface
-   * \return a pointer to a string containing the Gateway address
-   */
-  char* getGateway();
- 
-  /** Get the Network mask of your Ethernet interface
-   * \return a pointer to a string containing the Network mask
-   */
-  char* getNetworkMask();
-#endif
-};
-}
-#endif  /* _YD_WIFIINTERFACE_H_ */
\ No newline at end of file