Customized SNICInterface

Fork of NySNICInterface by Ryo Iizuka

Revision:
12:0254eaccfda2
Child:
13:53e6471d5753
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SNIC/SNIC_Core.h	Tue Mar 25 01:42:25 2014 +0000
@@ -0,0 +1,242 @@
+#ifndef _SNIC_CORE_H_
+#define _SNIC_CORE_H_
+
+#include "mbed.h"
+#include "rtos.h"
+#include "RawSerial.h"
+#include "CBuffer.h"
+
+#include "SNIC_UartCommandManager.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;
+
+#define MAX_SOCKET_ID   5
+
+/** Connection information
+*/
+typedef struct {
+    CircBuffer<unsigned char>    *recvbuf_p;
+    bool                is_connected;
+    bool                is_received;
+}tagCONNECT_INFO_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;
+
+/** SNIC_TCP_CREATE_SOCKET_REQ */
+typedef struct
+{
+    unsigned char  cmd_sid;
+    unsigned char  seq;
+    unsigned char  bind;
+    unsigned int   local_addr;
+    unsigned short local_port;
+}tagSNIC_TCP_CREATE_SOCKET_REQ_T;
+
+/** SNIC_TCP_CONNECT_TO_SERVER_REQ */
+typedef struct
+{
+    unsigned char cmd_sid;
+    unsigned char seq;
+    unsigned char socket_id;
+    unsigned char remote_addr[4];
+    unsigned char remote_port[2];
+    unsigned char recv_bufsize[2];
+/*
+    unsigned int   remote_addr;
+    unsigned short remote_port;
+    unsigned short recv_bufsize;
+*/
+    unsigned char  timeout;
+}tagSNIC_TCP_CONNECT_TO_SERVER_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_SNIC_Core class
+ */
+class C_SNIC_Core
+{
+
+public:
+    C_SNIC_UartCommandManager 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 pointer of connection information.
+        @param socket_id    Socket ID
+        @return The pointer of connection information
+    */
+    tagCONNECT_INFO_T   *getConnectInfo( int socket_id );
+
+    /** Get an instance of the C_SNIC_Core class.
+        @return Instance of the C_SNIC_Core 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_SNIC_Core *getInstance();
+
+protected:
+    static C_SNIC_Core     *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;
+  
+    /** Socket buffer */
+    tagCONNECT_INFO_T   mConnectInfo[MAX_SOCKET_ID+1];
+  
+    /** Constructor
+     */
+    C_SNIC_Core();
+
+    /** Receiving thread of UART
+    */
+    static void uartRecvThread( void const *args_p );
+};
+}
+
+#endif
\ No newline at end of file