SNIC UART Interface library for Murata Type-YD module
Dependents: WebSocketServerTest
Fork of SNICInterface_mod by
SNIC/SNIC_Core.h
- Committer:
- kishino
- Date:
- 2014-03-27
- Revision:
- 21:dda155fe5048
- Parent:
- 20:dd736d328de6
- Child:
- 22:a9ec0cad4f84
File content as of revision 21:dda155fe5048:
/******************* Murata Manufacturing Co.,Ltd. 2014 ***************** * * Filename: SNIC_Core.h * * Purpose: This module has define of internal common function for API. * * $Author: kishino $ * * $Date: 2014/03/26 $ * * $Revision: 0.0.0.1 $ * ***********************************************************************/ #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 char local_addr[4]; unsigned char local_port[2]; }tagSNIC_TCP_CREATE_SOCKET_REQ_T; /** SNIC_TCP_SEND_FROM_SOCKET_REQ */ typedef struct { unsigned char cmd_sid; unsigned char seq; unsigned char socket_id; unsigned char option; unsigned char payload_len[2]; }tagSNIC_TCP_SEND_FROM_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 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 { friend class C_SNIC_UartCommandManager; friend class C_SNIC_WifiInterface; friend class TCPSocketConnection; friend class Socket; private: /** Get buffer for command from memory pool. @return Pointer of buffer */ tagMEMPOOL_BLOCK_T *allocCmdBuf(); /** 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 pointer of the instance of C_SNIC_UartCommandManager. @return The pointer of the instance of C_SNIC_UartCommandManager. */ C_SNIC_UartCommandManager *getUartCommand(); /** 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(); private: static C_SNIC_Core *mInstance_p; Thread *mUartRecvThread_p; RawSerial *mUart_p; Mutex mUartMutex; // DigitalInOut mModuleReset; C_SNIC_UartCommandManager *mUartCommand_p; /** 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