Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of NySNICInterface by
SNIC/SNIC_Core.h@28:b796031f6519, 2014-04-01 (annotated)
- Committer:
- kishino
- Date:
- Tue Apr 01 07:19:19 2014 +0000
- Revision:
- 28:b796031f6519
- Parent:
- 27:dcc4f34448f0
- Child:
- 29:6a0ba999597d
Modified SNIC_INIT command.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kishino | 20:dd736d328de6 | 1 | /******************* Murata Manufacturing Co.,Ltd. 2014 ***************** |
kishino | 20:dd736d328de6 | 2 | * |
kishino | 20:dd736d328de6 | 3 | * Filename: SNIC_Core.h |
kishino | 20:dd736d328de6 | 4 | * |
kishino | 20:dd736d328de6 | 5 | * Purpose: This module has define of internal common function for API. |
kishino | 20:dd736d328de6 | 6 | * |
kishino | 20:dd736d328de6 | 7 | * $Author: kishino $ |
kishino | 20:dd736d328de6 | 8 | * |
kishino | 20:dd736d328de6 | 9 | * $Date: 2014/03/26 $ |
kishino | 20:dd736d328de6 | 10 | * |
kishino | 20:dd736d328de6 | 11 | * $Revision: 0.0.0.1 $ |
kishino | 20:dd736d328de6 | 12 | * ***********************************************************************/ |
kishino | 20:dd736d328de6 | 13 | #ifndef _SNIC_CORE_H_ |
kishino | 20:dd736d328de6 | 14 | #define _SNIC_CORE_H_ |
kishino | 20:dd736d328de6 | 15 | |
kishino | 25:67183ed15708 | 16 | #include "MurataObject.h" |
kishino | 20:dd736d328de6 | 17 | #include "mbed.h" |
kishino | 20:dd736d328de6 | 18 | #include "rtos.h" |
kishino | 20:dd736d328de6 | 19 | #include "RawSerial.h" |
kishino | 20:dd736d328de6 | 20 | #include "CBuffer.h" |
kishino | 20:dd736d328de6 | 21 | |
kishino | 20:dd736d328de6 | 22 | #include "SNIC_UartCommandManager.h" |
kishino | 20:dd736d328de6 | 23 | |
kishino | 20:dd736d328de6 | 24 | namespace murata_wifi |
kishino | 20:dd736d328de6 | 25 | { |
kishino | 20:dd736d328de6 | 26 | #define UART_REQUEST_PAYLOAD_MAX 256 |
kishino | 20:dd736d328de6 | 27 | |
kishino | 20:dd736d328de6 | 28 | #define MEMPOOL_BLOCK_SIZE 2048 |
kishino | 20:dd736d328de6 | 29 | #define MEMPOOL_PAYLOAD_NUM 1 |
kishino | 20:dd736d328de6 | 30 | #define MAX_SOCKET_ID 5 |
kishino | 20:dd736d328de6 | 31 | |
kishino | 20:dd736d328de6 | 32 | /** Wi-Fi security |
kishino | 20:dd736d328de6 | 33 | */ |
kishino | 20:dd736d328de6 | 34 | typedef enum SECURITY { |
kishino | 20:dd736d328de6 | 35 | /** Securiry Open */ |
kishino | 20:dd736d328de6 | 36 | e_SEC_OPEN = 0x00, |
kishino | 20:dd736d328de6 | 37 | /** Securiry WEP */ |
kishino | 20:dd736d328de6 | 38 | e_SEC_WEP = 0x01, |
kishino | 20:dd736d328de6 | 39 | /** Securiry WPA-PSK(TKIP) */ |
kishino | 20:dd736d328de6 | 40 | e_SEC_WPA_TKIP = 0x02, |
kishino | 20:dd736d328de6 | 41 | /** Securiry WPA2-PSK(AES) */ |
kishino | 20:dd736d328de6 | 42 | e_SEC_WPA2_AES = 0x04, |
kishino | 20:dd736d328de6 | 43 | /** Securiry WPA2-PSK(TKIP/AES) */ |
kishino | 20:dd736d328de6 | 44 | e_SEC_WPA2_MIXED = 0x06, |
kishino | 20:dd736d328de6 | 45 | /** Securiry WPA-PSK(AES) */ |
kishino | 20:dd736d328de6 | 46 | e_SEC_WPA_AES = 0x07 |
kishino | 20:dd736d328de6 | 47 | }E_SECURITY; |
kishino | 20:dd736d328de6 | 48 | |
kishino | 20:dd736d328de6 | 49 | /** Wi-Fi status |
kishino | 20:dd736d328de6 | 50 | */ |
kishino | 20:dd736d328de6 | 51 | typedef enum WIFI_STATUS { |
kishino | 20:dd736d328de6 | 52 | /** Wi-Fi OFF */ |
kishino | 20:dd736d328de6 | 53 | e_STATUS_OFF = 0, |
kishino | 20:dd736d328de6 | 54 | /** No network */ |
kishino | 20:dd736d328de6 | 55 | e_NO_NETWORK, |
kishino | 20:dd736d328de6 | 56 | /** Connected to AP (STA mode) */ |
kishino | 20:dd736d328de6 | 57 | e_STA_JOINED, |
kishino | 20:dd736d328de6 | 58 | /** Started on AP mode */ |
kishino | 20:dd736d328de6 | 59 | e_AP_STARTED |
kishino | 20:dd736d328de6 | 60 | }E_WIFI_STATUS; |
kishino | 20:dd736d328de6 | 61 | |
kishino | 23:4ff2231ff9ba | 62 | /** Internal class used by any other classes. This class is singleton. |
kishino | 20:dd736d328de6 | 63 | */ |
kishino | 25:67183ed15708 | 64 | class C_SNIC_Core: public C_MurataObject |
kishino | 20:dd736d328de6 | 65 | { |
kishino | 21:dda155fe5048 | 66 | friend class C_SNIC_UartCommandManager; |
kishino | 21:dda155fe5048 | 67 | friend class C_SNIC_WifiInterface; |
kishino | 21:dda155fe5048 | 68 | friend class TCPSocketConnection; |
kishino | 21:dda155fe5048 | 69 | friend class Socket; |
kishino | 21:dda155fe5048 | 70 | |
kishino | 21:dda155fe5048 | 71 | private: |
kishino | 22:a9ec0cad4f84 | 72 | /** Memorypool for SNIC UART Response |
kishino | 22:a9ec0cad4f84 | 73 | */ |
kishino | 22:a9ec0cad4f84 | 74 | typedef struct |
kishino | 22:a9ec0cad4f84 | 75 | { |
kishino | 22:a9ec0cad4f84 | 76 | unsigned char buf[MEMPOOL_BLOCK_SIZE]; |
kishino | 22:a9ec0cad4f84 | 77 | }tagMEMPOOL_BLOCK_T; |
kishino | 22:a9ec0cad4f84 | 78 | |
kishino | 22:a9ec0cad4f84 | 79 | /** Wi-Fi Network type |
kishino | 22:a9ec0cad4f84 | 80 | */ |
kishino | 22:a9ec0cad4f84 | 81 | typedef enum NETWORK_TYPE { |
kishino | 22:a9ec0cad4f84 | 82 | /** Infrastructure */ |
kishino | 22:a9ec0cad4f84 | 83 | e_INFRA = 0, |
kishino | 22:a9ec0cad4f84 | 84 | /** Adhoc */ |
kishino | 22:a9ec0cad4f84 | 85 | e_ADHOC = 1 |
kishino | 22:a9ec0cad4f84 | 86 | }E_NETWORK_TYPE; |
kishino | 22:a9ec0cad4f84 | 87 | |
kishino | 22:a9ec0cad4f84 | 88 | /** Connection information |
kishino | 22:a9ec0cad4f84 | 89 | */ |
kishino | 22:a9ec0cad4f84 | 90 | typedef struct { |
kishino | 22:a9ec0cad4f84 | 91 | CircBuffer<unsigned char> *recvbuf_p; |
kishino | 22:a9ec0cad4f84 | 92 | bool is_connected; |
kishino | 22:a9ec0cad4f84 | 93 | bool is_received; |
kishino | 22:a9ec0cad4f84 | 94 | }tagCONNECT_INFO_T; |
kishino | 22:a9ec0cad4f84 | 95 | |
kishino | 22:a9ec0cad4f84 | 96 | /** GEN_FW_VER_GET_REQ Command */ |
kishino | 22:a9ec0cad4f84 | 97 | typedef struct |
kishino | 22:a9ec0cad4f84 | 98 | { |
kishino | 22:a9ec0cad4f84 | 99 | unsigned char cmd_sid; |
kishino | 22:a9ec0cad4f84 | 100 | unsigned char seq; |
kishino | 22:a9ec0cad4f84 | 101 | }tagGEN_FW_VER_GET_REQ_T; |
kishino | 22:a9ec0cad4f84 | 102 | |
kishino | 22:a9ec0cad4f84 | 103 | /** SNIC_INIT_REQ */ |
kishino | 22:a9ec0cad4f84 | 104 | typedef struct |
kishino | 22:a9ec0cad4f84 | 105 | { |
kishino | 28:b796031f6519 | 106 | unsigned char cmd_sid; |
kishino | 28:b796031f6519 | 107 | unsigned char seq; |
kishino | 28:b796031f6519 | 108 | unsigned char buf_size[2]; |
kishino | 22:a9ec0cad4f84 | 109 | }tagSNIC_INIT_REQ_T; |
kishino | 22:a9ec0cad4f84 | 110 | |
kishino | 22:a9ec0cad4f84 | 111 | /** SNIC_TCP_CREATE_SOCKET_REQ */ |
kishino | 22:a9ec0cad4f84 | 112 | typedef struct |
kishino | 22:a9ec0cad4f84 | 113 | { |
kishino | 22:a9ec0cad4f84 | 114 | unsigned char cmd_sid; |
kishino | 22:a9ec0cad4f84 | 115 | unsigned char seq; |
kishino | 22:a9ec0cad4f84 | 116 | unsigned char bind; |
kishino | 22:a9ec0cad4f84 | 117 | unsigned char local_addr[4]; |
kishino | 22:a9ec0cad4f84 | 118 | unsigned char local_port[2]; |
kishino | 22:a9ec0cad4f84 | 119 | }tagSNIC_TCP_CREATE_SOCKET_REQ_T; |
kishino | 27:dcc4f34448f0 | 120 | |
kishino | 27:dcc4f34448f0 | 121 | /** SNIC_CLOSE_SOCKET_REQ */ |
kishino | 27:dcc4f34448f0 | 122 | typedef struct |
kishino | 27:dcc4f34448f0 | 123 | { |
kishino | 27:dcc4f34448f0 | 124 | unsigned char cmd_sid; |
kishino | 27:dcc4f34448f0 | 125 | unsigned char seq; |
kishino | 27:dcc4f34448f0 | 126 | unsigned char socket_id; |
kishino | 27:dcc4f34448f0 | 127 | }tagSNIC_CLOSE_SOCKET_REQ_T; |
kishino | 22:a9ec0cad4f84 | 128 | |
kishino | 22:a9ec0cad4f84 | 129 | /** SNIC_TCP_SEND_FROM_SOCKET_REQ */ |
kishino | 22:a9ec0cad4f84 | 130 | typedef struct |
kishino | 22:a9ec0cad4f84 | 131 | { |
kishino | 22:a9ec0cad4f84 | 132 | unsigned char cmd_sid; |
kishino | 22:a9ec0cad4f84 | 133 | unsigned char seq; |
kishino | 22:a9ec0cad4f84 | 134 | unsigned char socket_id; |
kishino | 22:a9ec0cad4f84 | 135 | unsigned char option; |
kishino | 22:a9ec0cad4f84 | 136 | unsigned char payload_len[2]; |
kishino | 22:a9ec0cad4f84 | 137 | }tagSNIC_TCP_SEND_FROM_SOCKET_REQ_T; |
kishino | 22:a9ec0cad4f84 | 138 | |
kishino | 22:a9ec0cad4f84 | 139 | /** SNIC_TCP_CONNECT_TO_SERVER_REQ */ |
kishino | 22:a9ec0cad4f84 | 140 | typedef struct |
kishino | 22:a9ec0cad4f84 | 141 | { |
kishino | 22:a9ec0cad4f84 | 142 | unsigned char cmd_sid; |
kishino | 22:a9ec0cad4f84 | 143 | unsigned char seq; |
kishino | 22:a9ec0cad4f84 | 144 | unsigned char socket_id; |
kishino | 22:a9ec0cad4f84 | 145 | unsigned char remote_addr[4]; |
kishino | 22:a9ec0cad4f84 | 146 | unsigned char remote_port[2]; |
kishino | 22:a9ec0cad4f84 | 147 | unsigned char recv_bufsize[2]; |
kishino | 22:a9ec0cad4f84 | 148 | unsigned char timeout; |
kishino | 22:a9ec0cad4f84 | 149 | }tagSNIC_TCP_CONNECT_TO_SERVER_REQ_T; |
kishino | 22:a9ec0cad4f84 | 150 | |
kishino | 22:a9ec0cad4f84 | 151 | /** WIFI_ON_REQ Command */ |
kishino | 22:a9ec0cad4f84 | 152 | typedef struct |
kishino | 22:a9ec0cad4f84 | 153 | { |
kishino | 22:a9ec0cad4f84 | 154 | unsigned char cmd_sid; |
kishino | 22:a9ec0cad4f84 | 155 | unsigned char seq; |
kishino | 22:a9ec0cad4f84 | 156 | char country[COUNTRYC_CODE_LENTH]; |
kishino | 22:a9ec0cad4f84 | 157 | }tagWIFI_ON_REQ_T; |
kishino | 22:a9ec0cad4f84 | 158 | |
kishino | 22:a9ec0cad4f84 | 159 | /** WIFI_OFF_REQ Command */ |
kishino | 22:a9ec0cad4f84 | 160 | typedef struct |
kishino | 22:a9ec0cad4f84 | 161 | { |
kishino | 22:a9ec0cad4f84 | 162 | unsigned char cmd_sid; |
kishino | 22:a9ec0cad4f84 | 163 | unsigned char seq; |
kishino | 22:a9ec0cad4f84 | 164 | }tagWIFI_OFF_REQ_T; |
kishino | 22:a9ec0cad4f84 | 165 | |
kishino | 22:a9ec0cad4f84 | 166 | /** WIFI_DISCONNECT_REQ Command */ |
kishino | 22:a9ec0cad4f84 | 167 | typedef struct |
kishino | 22:a9ec0cad4f84 | 168 | { |
kishino | 22:a9ec0cad4f84 | 169 | unsigned char cmd_sid; |
kishino | 22:a9ec0cad4f84 | 170 | unsigned char seq; |
kishino | 22:a9ec0cad4f84 | 171 | }tagWIFI_DISCONNECT_REQ_T; |
kishino | 22:a9ec0cad4f84 | 172 | |
kishino | 22:a9ec0cad4f84 | 173 | /** WIFI_GET_STA_RSSI_REQ Command */ |
kishino | 22:a9ec0cad4f84 | 174 | typedef struct |
kishino | 22:a9ec0cad4f84 | 175 | { |
kishino | 22:a9ec0cad4f84 | 176 | unsigned char cmd_sid; |
kishino | 22:a9ec0cad4f84 | 177 | unsigned char seq; |
kishino | 22:a9ec0cad4f84 | 178 | }tagWIFI_GET_STA_RSSI_REQ_T; |
kishino | 22:a9ec0cad4f84 | 179 | |
kishino | 22:a9ec0cad4f84 | 180 | /** WIFI_GET_STATUS_REQ Command */ |
kishino | 22:a9ec0cad4f84 | 181 | typedef struct |
kishino | 22:a9ec0cad4f84 | 182 | { |
kishino | 22:a9ec0cad4f84 | 183 | unsigned char cmd_sid; |
kishino | 22:a9ec0cad4f84 | 184 | unsigned char seq; |
kishino | 22:a9ec0cad4f84 | 185 | unsigned char interface; |
kishino | 22:a9ec0cad4f84 | 186 | }tagWIFI_GET_STATUS_REQ_T; |
kishino | 22:a9ec0cad4f84 | 187 | |
kishino | 22:a9ec0cad4f84 | 188 | /** WIFI_SCAN_REQ Command */ |
kishino | 22:a9ec0cad4f84 | 189 | typedef struct |
kishino | 22:a9ec0cad4f84 | 190 | { |
kishino | 22:a9ec0cad4f84 | 191 | unsigned char cmd_sid; |
kishino | 22:a9ec0cad4f84 | 192 | unsigned char seq; |
kishino | 22:a9ec0cad4f84 | 193 | unsigned char scan_type; |
kishino | 22:a9ec0cad4f84 | 194 | unsigned char bss_type; |
kishino | 22:a9ec0cad4f84 | 195 | unsigned char bssid[BSSID_MAC_LENTH]; |
kishino | 22:a9ec0cad4f84 | 196 | unsigned char chan_list; |
kishino | 22:a9ec0cad4f84 | 197 | unsigned char ssid[SSID_MAX_LENGTH+1]; |
kishino | 22:a9ec0cad4f84 | 198 | }tagWIFI_SCAN_REQ_T; |
kishino | 22:a9ec0cad4f84 | 199 | |
kishino | 20:dd736d328de6 | 200 | |
kishino | 20:dd736d328de6 | 201 | /** Get buffer for command from memory pool. |
kishino | 20:dd736d328de6 | 202 | @return Pointer of buffer |
kishino | 20:dd736d328de6 | 203 | */ |
kishino | 22:a9ec0cad4f84 | 204 | C_SNIC_Core::tagMEMPOOL_BLOCK_T *allocCmdBuf(); |
kishino | 20:dd736d328de6 | 205 | |
kishino | 20:dd736d328de6 | 206 | /** Release buffer to memory pool. |
kishino | 20:dd736d328de6 | 207 | @param buf_p Pointer of buffer |
kishino | 20:dd736d328de6 | 208 | */ |
kishino | 20:dd736d328de6 | 209 | void freeCmdBuf( tagMEMPOOL_BLOCK_T *buf_p ); |
kishino | 20:dd736d328de6 | 210 | |
kishino | 20:dd736d328de6 | 211 | /** Initialize UART |
kishino | 20:dd736d328de6 | 212 | */ |
kishino | 20:dd736d328de6 | 213 | int initUart( PinName tx, PinName rx, int baud ); |
kishino | 20:dd736d328de6 | 214 | |
kishino | 20:dd736d328de6 | 215 | /** Send data to UART |
kishino | 20:dd736d328de6 | 216 | @param len Length of send data |
kishino | 20:dd736d328de6 | 217 | @param data Pointer of send data |
kishino | 20:dd736d328de6 | 218 | @return 0:success/other:fail |
kishino | 20:dd736d328de6 | 219 | */ |
kishino | 20:dd736d328de6 | 220 | int sendUart( unsigned int len, unsigned char *data ); |
kishino | 20:dd736d328de6 | 221 | |
kishino | 20:dd736d328de6 | 222 | /** Preparation of the UART command |
kishino | 20:dd736d328de6 | 223 | @param cmd_id UART Command ID |
kishino | 20:dd736d328de6 | 224 | @param cmd_sid UART Command SubID |
kishino | 20:dd736d328de6 | 225 | @param req_buf_p Pointer of UART request buffer |
kishino | 20:dd736d328de6 | 226 | @param req_buf_len Length of UART request buffer |
kishino | 20:dd736d328de6 | 227 | @param response_buf_p Pointer of UART response buffer |
kishino | 20:dd736d328de6 | 228 | @param command_p Pointer of UART command[output] |
kishino | 20:dd736d328de6 | 229 | @return Length of UART command. |
kishino | 20:dd736d328de6 | 230 | */ |
kishino | 20:dd736d328de6 | 231 | unsigned int preparationSendCommand( unsigned char cmd_id, unsigned char cmd_sid |
kishino | 20:dd736d328de6 | 232 | , unsigned char *req_buf_p, unsigned int req_buf_len |
kishino | 20:dd736d328de6 | 233 | , unsigned char *response_buf_p, unsigned char *command_p ); |
kishino | 20:dd736d328de6 | 234 | |
kishino | 20:dd736d328de6 | 235 | /** |
kishino | 20:dd736d328de6 | 236 | Get pointer of connection information. |
kishino | 20:dd736d328de6 | 237 | @param socket_id Socket ID |
kishino | 20:dd736d328de6 | 238 | @return The pointer of connection information |
kishino | 20:dd736d328de6 | 239 | */ |
kishino | 22:a9ec0cad4f84 | 240 | C_SNIC_Core::tagCONNECT_INFO_T *getConnectInfo( int socket_id ); |
kishino | 20:dd736d328de6 | 241 | |
kishino | 20:dd736d328de6 | 242 | /** |
kishino | 20:dd736d328de6 | 243 | Get pointer of the instance of C_SNIC_UartCommandManager. |
kishino | 20:dd736d328de6 | 244 | @return The pointer of the instance of C_SNIC_UartCommandManager. |
kishino | 20:dd736d328de6 | 245 | */ |
kishino | 20:dd736d328de6 | 246 | C_SNIC_UartCommandManager *getUartCommand(); |
kishino | 20:dd736d328de6 | 247 | |
kishino | 20:dd736d328de6 | 248 | /** Get an instance of the C_SNIC_Core class. |
kishino | 20:dd736d328de6 | 249 | @return Instance of the C_SNIC_Core class |
kishino | 20:dd736d328de6 | 250 | @note Please do not create an instance in the default constructor this class. |
kishino | 20:dd736d328de6 | 251 | Please use this method when you want to get an instance. |
kishino | 20:dd736d328de6 | 252 | */ |
kishino | 20:dd736d328de6 | 253 | static C_SNIC_Core *getInstance(); |
kishino | 20:dd736d328de6 | 254 | |
kishino | 20:dd736d328de6 | 255 | private: |
kishino | 20:dd736d328de6 | 256 | static C_SNIC_Core *mInstance_p; |
kishino | 20:dd736d328de6 | 257 | Thread *mUartRecvThread_p; |
kishino | 20:dd736d328de6 | 258 | RawSerial *mUart_p; |
kishino | 20:dd736d328de6 | 259 | Mutex mUartMutex; |
kishino | 20:dd736d328de6 | 260 | // DigitalInOut mModuleReset; |
kishino | 20:dd736d328de6 | 261 | C_SNIC_UartCommandManager *mUartCommand_p; |
kishino | 20:dd736d328de6 | 262 | |
kishino | 20:dd736d328de6 | 263 | /** MemoryPool for payload of UART response */ |
kishino | 20:dd736d328de6 | 264 | MemoryPool<tagMEMPOOL_BLOCK_T, MEMPOOL_PAYLOAD_NUM> mMemPoolPayload; |
kishino | 20:dd736d328de6 | 265 | |
kishino | 20:dd736d328de6 | 266 | /** Socket buffer */ |
kishino | 20:dd736d328de6 | 267 | tagCONNECT_INFO_T mConnectInfo[MAX_SOCKET_ID+1]; |
kishino | 20:dd736d328de6 | 268 | |
kishino | 20:dd736d328de6 | 269 | /** Constructor |
kishino | 20:dd736d328de6 | 270 | */ |
kishino | 20:dd736d328de6 | 271 | C_SNIC_Core(); |
kishino | 20:dd736d328de6 | 272 | |
kishino | 26:f2e1030964e4 | 273 | virtual ~C_SNIC_Core(); |
kishino | 20:dd736d328de6 | 274 | /** Receiving thread of UART |
kishino | 20:dd736d328de6 | 275 | */ |
kishino | 20:dd736d328de6 | 276 | static void uartRecvThread( void const *args_p ); |
kishino | 20:dd736d328de6 | 277 | }; |
kishino | 20:dd736d328de6 | 278 | } |
kishino | 20:dd736d328de6 | 279 | |
kishino | 20:dd736d328de6 | 280 | #endif |