Murata Type YD Wi-Fi driver

Dependents:   easy-connect-type-yd

Committer:
MACRUM
Date:
Wed Jul 12 10:49:10 2017 +0000
Revision:
0:35a2186cf186
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MACRUM 0:35a2186cf186 1 /* Copyright (C) 2014 Murata Manufacturing Co.,Ltd., MIT License
MACRUM 0:35a2186cf186 2 * muRata, SWITCH SCIENCE Wi-FI module TypeYD SNIC-UART.
MACRUM 0:35a2186cf186 3 *
MACRUM 0:35a2186cf186 4 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
MACRUM 0:35a2186cf186 5 * and associated documentation files (the "Software"), to deal in the Software without restriction,
MACRUM 0:35a2186cf186 6 * including without limitation the rights to use, copy, modify, merge, publish, distribute,
MACRUM 0:35a2186cf186 7 * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
MACRUM 0:35a2186cf186 8 * furnished to do so, subject to the following conditions:
MACRUM 0:35a2186cf186 9 *
MACRUM 0:35a2186cf186 10 * The above copyright notice and this permission notice shall be included in all copies or
MACRUM 0:35a2186cf186 11 * substantial portions of the Software.
MACRUM 0:35a2186cf186 12 *
MACRUM 0:35a2186cf186 13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
MACRUM 0:35a2186cf186 14 * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
MACRUM 0:35a2186cf186 15 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
MACRUM 0:35a2186cf186 16 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
MACRUM 0:35a2186cf186 17 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
MACRUM 0:35a2186cf186 18 */
MACRUM 0:35a2186cf186 19 #ifndef _SNIC_CORE_H_
MACRUM 0:35a2186cf186 20 #define _SNIC_CORE_H_
MACRUM 0:35a2186cf186 21
MACRUM 0:35a2186cf186 22 #include "SNICInterface/SNIC/MurataObject.h"
MACRUM 0:35a2186cf186 23 #include "mbed.h"
MACRUM 0:35a2186cf186 24 #include "rtos.h"
MACRUM 0:35a2186cf186 25 #include "RawSerial.h"
MACRUM 0:35a2186cf186 26 #include "SNICInterface/SNIC/CBuffer.h"
MACRUM 0:35a2186cf186 27
MACRUM 0:35a2186cf186 28 #include "SNICInterface/SNIC/SNIC_UartCommandManager.h"
MACRUM 0:35a2186cf186 29
MACRUM 0:35a2186cf186 30 #define UART_REQUEST_PAYLOAD_MAX 2048
MACRUM 0:35a2186cf186 31
MACRUM 0:35a2186cf186 32 #define MEMPOOL_BLOCK_SIZE 2048
MACRUM 0:35a2186cf186 33 #define MEMPOOL_PAYLOAD_NUM 1
MACRUM 0:35a2186cf186 34 #define MAX_SOCKET_ID 5
MACRUM 0:35a2186cf186 35
MACRUM 0:35a2186cf186 36 #define MEMPOOL_UART_RECV_NUM 6
MACRUM 0:35a2186cf186 37 #define SNIC_UART_RECVBUF_SIZE 2048
MACRUM 0:35a2186cf186 38
MACRUM 0:35a2186cf186 39 class SnicSocket;
MACRUM 0:35a2186cf186 40 /** Wi-Fi security
MACRUM 0:35a2186cf186 41 */
MACRUM 0:35a2186cf186 42 typedef enum SECURITY {
MACRUM 0:35a2186cf186 43 /** Securiry Open */
MACRUM 0:35a2186cf186 44 e_SEC_OPEN = 0x00,
MACRUM 0:35a2186cf186 45 /** Securiry WEP */
MACRUM 0:35a2186cf186 46 e_SEC_WEP = 0x01,
MACRUM 0:35a2186cf186 47 /** Securiry WPA-PSK(TKIP) */
MACRUM 0:35a2186cf186 48 e_SEC_WPA_TKIP = 0x02,
MACRUM 0:35a2186cf186 49 /** Securiry WPA2-PSK(AES) */
MACRUM 0:35a2186cf186 50 e_SEC_WPA2_AES = 0x04,
MACRUM 0:35a2186cf186 51 /** Securiry WPA2-PSK(TKIP/AES) */
MACRUM 0:35a2186cf186 52 e_SEC_WPA2_MIXED = 0x06,
MACRUM 0:35a2186cf186 53 /** Securiry WPA-PSK(AES) */
MACRUM 0:35a2186cf186 54 e_SEC_WPA_AES = 0x07
MACRUM 0:35a2186cf186 55 }E_SECURITY;
MACRUM 0:35a2186cf186 56
MACRUM 0:35a2186cf186 57 /** Wi-Fi status
MACRUM 0:35a2186cf186 58 */
MACRUM 0:35a2186cf186 59 typedef enum WIFI_STATUS {
MACRUM 0:35a2186cf186 60 /** Wi-Fi OFF */
MACRUM 0:35a2186cf186 61 e_STATUS_OFF = 0,
MACRUM 0:35a2186cf186 62 /** No network */
MACRUM 0:35a2186cf186 63 e_NO_NETWORK,
MACRUM 0:35a2186cf186 64 /** Connected to AP (STA mode) */
MACRUM 0:35a2186cf186 65 e_STA_JOINED,
MACRUM 0:35a2186cf186 66 /** Started on AP mode */
MACRUM 0:35a2186cf186 67 e_AP_STARTED
MACRUM 0:35a2186cf186 68 }E_WIFI_STATUS;
MACRUM 0:35a2186cf186 69
MACRUM 0:35a2186cf186 70 /** Memorypool
MACRUM 0:35a2186cf186 71 */
MACRUM 0:35a2186cf186 72 typedef struct
MACRUM 0:35a2186cf186 73 {
MACRUM 0:35a2186cf186 74 unsigned int size;
MACRUM 0:35a2186cf186 75 unsigned int demand_size;
MACRUM 0:35a2186cf186 76 unsigned char buf[MEMPOOL_BLOCK_SIZE];
MACRUM 0:35a2186cf186 77 }tagMEMPOOL_BLOCK_T;
MACRUM 0:35a2186cf186 78
MACRUM 0:35a2186cf186 79 /** Internal class used by any other classes. This class is singleton.
MACRUM 0:35a2186cf186 80 */
MACRUM 0:35a2186cf186 81 class C_SNIC_Core: public C_MurataObject
MACRUM 0:35a2186cf186 82 {
MACRUM 0:35a2186cf186 83 friend class C_SNIC_UartCommandManager;
MACRUM 0:35a2186cf186 84 friend class C_SNIC_WifiInterface;
MACRUM 0:35a2186cf186 85 friend class TCPSocketConnection;
MACRUM 0:35a2186cf186 86 friend class TCPSocketServer;
MACRUM 0:35a2186cf186 87 friend class SnicUDPSocket;
MACRUM 0:35a2186cf186 88 friend class SnicSocket;
MACRUM 0:35a2186cf186 89
MACRUM 0:35a2186cf186 90 private:
MACRUM 0:35a2186cf186 91 /** Wi-Fi Network type
MACRUM 0:35a2186cf186 92 */
MACRUM 0:35a2186cf186 93 typedef enum NETWORK_TYPE {
MACRUM 0:35a2186cf186 94 /** Infrastructure */
MACRUM 0:35a2186cf186 95 e_INFRA = 0,
MACRUM 0:35a2186cf186 96 /** Adhoc */
MACRUM 0:35a2186cf186 97 e_ADHOC = 1
MACRUM 0:35a2186cf186 98 }E_NETWORK_TYPE;
MACRUM 0:35a2186cf186 99
MACRUM 0:35a2186cf186 100 /** Connection information
MACRUM 0:35a2186cf186 101 */
MACRUM 0:35a2186cf186 102 typedef struct {
MACRUM 0:35a2186cf186 103 CircBuffer<char> *recvbuf_p;
MACRUM 0:35a2186cf186 104 bool is_connected;
MACRUM 0:35a2186cf186 105 volatile bool is_received;
MACRUM 0:35a2186cf186 106 volatile bool is_receive_complete;
MACRUM 0:35a2186cf186 107 int parent_socket;
MACRUM 0:35a2186cf186 108 int from_ip;
MACRUM 0:35a2186cf186 109 short from_port;
MACRUM 0:35a2186cf186 110 volatile bool is_accept;
MACRUM 0:35a2186cf186 111 Mutex mutex;
MACRUM 0:35a2186cf186 112 SnicSocket *snic_socket;
MACRUM 0:35a2186cf186 113 SnicSocket *client_socket;
MACRUM 0:35a2186cf186 114 }tagCONNECT_INFO_T;
MACRUM 0:35a2186cf186 115
MACRUM 0:35a2186cf186 116 /** UDP Recv information
MACRUM 0:35a2186cf186 117 */
MACRUM 0:35a2186cf186 118 typedef struct {
MACRUM 0:35a2186cf186 119 CircBuffer<char> *recvbuf_p;
MACRUM 0:35a2186cf186 120 int from_ip;
MACRUM 0:35a2186cf186 121 short from_port;
MACRUM 0:35a2186cf186 122 int parent_socket;
MACRUM 0:35a2186cf186 123 bool is_received;
MACRUM 0:35a2186cf186 124 Mutex mutex;
MACRUM 0:35a2186cf186 125 }tagUDP_RECVINFO_T;
MACRUM 0:35a2186cf186 126
MACRUM 0:35a2186cf186 127 /** GEN_FW_VER_GET_REQ Command */
MACRUM 0:35a2186cf186 128 typedef struct
MACRUM 0:35a2186cf186 129 {
MACRUM 0:35a2186cf186 130 unsigned char cmd_sid;
MACRUM 0:35a2186cf186 131 unsigned char seq;
MACRUM 0:35a2186cf186 132 }tagGEN_FW_VER_GET_REQ_T;
MACRUM 0:35a2186cf186 133
MACRUM 0:35a2186cf186 134 /** SNIC_INIT_REQ */
MACRUM 0:35a2186cf186 135 typedef struct
MACRUM 0:35a2186cf186 136 {
MACRUM 0:35a2186cf186 137 unsigned char cmd_sid;
MACRUM 0:35a2186cf186 138 unsigned char seq;
MACRUM 0:35a2186cf186 139 unsigned char buf_size[2];
MACRUM 0:35a2186cf186 140 }tagSNIC_INIT_REQ_T;
MACRUM 0:35a2186cf186 141
MACRUM 0:35a2186cf186 142 /** SNIC_RESOLVE_NAME_REQ */
MACRUM 0:35a2186cf186 143 typedef struct
MACRUM 0:35a2186cf186 144 {
MACRUM 0:35a2186cf186 145 unsigned char cmd_sid;
MACRUM 0:35a2186cf186 146 unsigned char seq;
MACRUM 0:35a2186cf186 147 unsigned char interface;
MACRUM 0:35a2186cf186 148 unsigned char name_length;
MACRUM 0:35a2186cf186 149 unsigned char name[100];
MACRUM 0:35a2186cf186 150 }tagSNIC_RESOLVE_NAME_REQ_T;
MACRUM 0:35a2186cf186 151
MACRUM 0:35a2186cf186 152 /** SNIC_IP_CONFIG_REQ */
MACRUM 0:35a2186cf186 153 typedef struct
MACRUM 0:35a2186cf186 154 {
MACRUM 0:35a2186cf186 155 unsigned char cmd_sid;
MACRUM 0:35a2186cf186 156 unsigned char seq;
MACRUM 0:35a2186cf186 157 unsigned char interface;
MACRUM 0:35a2186cf186 158 unsigned char dhcp;
MACRUM 0:35a2186cf186 159 }tagSNIC_IP_CONFIG_REQ_DHCP_T;
MACRUM 0:35a2186cf186 160
MACRUM 0:35a2186cf186 161 /** SNIC_IP_CONFIG_REQ */
MACRUM 0:35a2186cf186 162 typedef struct
MACRUM 0:35a2186cf186 163 {
MACRUM 0:35a2186cf186 164 unsigned char cmd_sid;
MACRUM 0:35a2186cf186 165 unsigned char seq;
MACRUM 0:35a2186cf186 166 unsigned char interface;
MACRUM 0:35a2186cf186 167 unsigned char dhcp;
MACRUM 0:35a2186cf186 168 unsigned char ip_addr[4];
MACRUM 0:35a2186cf186 169 unsigned char netmask[4];
MACRUM 0:35a2186cf186 170 unsigned char gateway[4];
MACRUM 0:35a2186cf186 171 }tagSNIC_IP_CONFIG_REQ_STATIC_T;
MACRUM 0:35a2186cf186 172
MACRUM 0:35a2186cf186 173 /** SNIC_TCP_CREATE_SOCKET_REQ */
MACRUM 0:35a2186cf186 174 typedef struct
MACRUM 0:35a2186cf186 175 {
MACRUM 0:35a2186cf186 176 unsigned char cmd_sid;
MACRUM 0:35a2186cf186 177 unsigned char seq;
MACRUM 0:35a2186cf186 178 unsigned char bind;
MACRUM 0:35a2186cf186 179 unsigned char local_addr[4];
MACRUM 0:35a2186cf186 180 unsigned char local_port[2];
MACRUM 0:35a2186cf186 181 }tagSNIC_TCP_CREATE_SOCKET_REQ_T;
MACRUM 0:35a2186cf186 182
MACRUM 0:35a2186cf186 183 /** SNIC_CLOSE_SOCKET_REQ */
MACRUM 0:35a2186cf186 184 typedef struct
MACRUM 0:35a2186cf186 185 {
MACRUM 0:35a2186cf186 186 unsigned char cmd_sid;
MACRUM 0:35a2186cf186 187 unsigned char seq;
MACRUM 0:35a2186cf186 188 unsigned char socket_id;
MACRUM 0:35a2186cf186 189 }tagSNIC_CLOSE_SOCKET_REQ_T;
MACRUM 0:35a2186cf186 190
MACRUM 0:35a2186cf186 191 /** SNIC_TCP_SEND_FROM_SOCKET_REQ */
MACRUM 0:35a2186cf186 192 typedef struct
MACRUM 0:35a2186cf186 193 {
MACRUM 0:35a2186cf186 194 unsigned char cmd_sid;
MACRUM 0:35a2186cf186 195 unsigned char seq;
MACRUM 0:35a2186cf186 196 unsigned char socket_id;
MACRUM 0:35a2186cf186 197 unsigned char option;
MACRUM 0:35a2186cf186 198 unsigned char payload_len[2];
MACRUM 0:35a2186cf186 199 }tagSNIC_TCP_SEND_FROM_SOCKET_REQ_T;
MACRUM 0:35a2186cf186 200
MACRUM 0:35a2186cf186 201 /** SNIC_TCP_CREATE_CONNECTION_REQ */
MACRUM 0:35a2186cf186 202 typedef struct
MACRUM 0:35a2186cf186 203 {
MACRUM 0:35a2186cf186 204 unsigned char cmd_sid;
MACRUM 0:35a2186cf186 205 unsigned char seq;
MACRUM 0:35a2186cf186 206 unsigned char socket_id;
MACRUM 0:35a2186cf186 207 unsigned char recv_bufsize[2];
MACRUM 0:35a2186cf186 208 unsigned char max_client;
MACRUM 0:35a2186cf186 209 }tagSNIC_TCP_CREATE_CONNECTION_REQ_T;
MACRUM 0:35a2186cf186 210
MACRUM 0:35a2186cf186 211 /** SNIC_TCP_CONNECT_TO_SERVER_REQ */
MACRUM 0:35a2186cf186 212 typedef struct
MACRUM 0:35a2186cf186 213 {
MACRUM 0:35a2186cf186 214 unsigned char cmd_sid;
MACRUM 0:35a2186cf186 215 unsigned char seq;
MACRUM 0:35a2186cf186 216 unsigned char socket_id;
MACRUM 0:35a2186cf186 217 unsigned char remote_addr[4];
MACRUM 0:35a2186cf186 218 unsigned char remote_port[2];
MACRUM 0:35a2186cf186 219 unsigned char recv_bufsize[2];
MACRUM 0:35a2186cf186 220 unsigned char timeout;
MACRUM 0:35a2186cf186 221 }tagSNIC_TCP_CONNECT_TO_SERVER_REQ_T;
MACRUM 0:35a2186cf186 222
MACRUM 0:35a2186cf186 223 /** SNIC_UDP_SIMPLE_SEND_REQ */
MACRUM 0:35a2186cf186 224 typedef struct
MACRUM 0:35a2186cf186 225 {
MACRUM 0:35a2186cf186 226 unsigned char cmd_sid;
MACRUM 0:35a2186cf186 227 unsigned char seq;
MACRUM 0:35a2186cf186 228 unsigned char remote_ip[4];
MACRUM 0:35a2186cf186 229 unsigned char remote_port[2];
MACRUM 0:35a2186cf186 230 unsigned char payload_len[2];
MACRUM 0:35a2186cf186 231 }tagSNIC_UDP_SIMPLE_SEND_REQ_T;
MACRUM 0:35a2186cf186 232
MACRUM 0:35a2186cf186 233 /** SNIC_UDP_CREATE_SOCKET_REQ */
MACRUM 0:35a2186cf186 234 typedef struct
MACRUM 0:35a2186cf186 235 {
MACRUM 0:35a2186cf186 236 unsigned char cmd_sid;
MACRUM 0:35a2186cf186 237 unsigned char seq;
MACRUM 0:35a2186cf186 238 unsigned char bind;
MACRUM 0:35a2186cf186 239 unsigned char local_addr[4];
MACRUM 0:35a2186cf186 240 unsigned char local_port[2];
MACRUM 0:35a2186cf186 241 }tagSNIC_UDP_CREATE_SOCKET_REQ_T;
MACRUM 0:35a2186cf186 242
MACRUM 0:35a2186cf186 243 /** SNIC_UDP_CREATE_SOCKET_REQ */
MACRUM 0:35a2186cf186 244 typedef struct
MACRUM 0:35a2186cf186 245 {
MACRUM 0:35a2186cf186 246 unsigned char cmd_sid;
MACRUM 0:35a2186cf186 247 unsigned char seq;
MACRUM 0:35a2186cf186 248 unsigned char bind;
MACRUM 0:35a2186cf186 249 }tagSNIC_UDP_CREATE_SOCKET_REQ_CLIENT_T;
MACRUM 0:35a2186cf186 250
MACRUM 0:35a2186cf186 251 /** SNIC_UDP_SEND_FROM_SOCKET_REQ */
MACRUM 0:35a2186cf186 252 typedef struct
MACRUM 0:35a2186cf186 253 {
MACRUM 0:35a2186cf186 254 unsigned char cmd_sid;
MACRUM 0:35a2186cf186 255 unsigned char seq;
MACRUM 0:35a2186cf186 256 unsigned char remote_ip[4];
MACRUM 0:35a2186cf186 257 unsigned char remote_port[2];
MACRUM 0:35a2186cf186 258 unsigned char socket_id;
MACRUM 0:35a2186cf186 259 unsigned char connection_mode;
MACRUM 0:35a2186cf186 260 unsigned char payload_len[2];
MACRUM 0:35a2186cf186 261 }tagSNIC_UDP_SEND_FROM_SOCKET_REQ_T;
MACRUM 0:35a2186cf186 262
MACRUM 0:35a2186cf186 263 /** SNIC_UDP_START_RECV_REQ */
MACRUM 0:35a2186cf186 264 typedef struct
MACRUM 0:35a2186cf186 265 {
MACRUM 0:35a2186cf186 266 unsigned char cmd_sid;
MACRUM 0:35a2186cf186 267 unsigned char seq;
MACRUM 0:35a2186cf186 268 unsigned char socket_id;
MACRUM 0:35a2186cf186 269 unsigned char recv_bufsize[2];
MACRUM 0:35a2186cf186 270 }tagSNIC_UDP_START_RECV_REQ_T;
MACRUM 0:35a2186cf186 271
MACRUM 0:35a2186cf186 272 /** SNIC_GET_DHCP_INFO_REQ */
MACRUM 0:35a2186cf186 273 typedef struct
MACRUM 0:35a2186cf186 274 {
MACRUM 0:35a2186cf186 275 unsigned char cmd_sid;
MACRUM 0:35a2186cf186 276 unsigned char seq;
MACRUM 0:35a2186cf186 277 unsigned char interface;
MACRUM 0:35a2186cf186 278 }tagSNIC_GET_DHCP_INFO_REQ_T;
MACRUM 0:35a2186cf186 279
MACRUM 0:35a2186cf186 280 /** WIFI_ON_REQ Command */
MACRUM 0:35a2186cf186 281 typedef struct
MACRUM 0:35a2186cf186 282 {
MACRUM 0:35a2186cf186 283 unsigned char cmd_sid;
MACRUM 0:35a2186cf186 284 unsigned char seq;
MACRUM 0:35a2186cf186 285 char country[COUNTRYC_CODE_LENTH];
MACRUM 0:35a2186cf186 286 }tagWIFI_ON_REQ_T;
MACRUM 0:35a2186cf186 287
MACRUM 0:35a2186cf186 288 /** WIFI_OFF_REQ Command */
MACRUM 0:35a2186cf186 289 typedef struct
MACRUM 0:35a2186cf186 290 {
MACRUM 0:35a2186cf186 291 unsigned char cmd_sid;
MACRUM 0:35a2186cf186 292 unsigned char seq;
MACRUM 0:35a2186cf186 293 }tagWIFI_OFF_REQ_T;
MACRUM 0:35a2186cf186 294
MACRUM 0:35a2186cf186 295 /** WIFI_AP_CTRL_REQ Command */
MACRUM 0:35a2186cf186 296 typedef struct
MACRUM 0:35a2186cf186 297 {
MACRUM 0:35a2186cf186 298 unsigned char cmd_sid;
MACRUM 0:35a2186cf186 299 unsigned char seq;
MACRUM 0:35a2186cf186 300 unsigned char on_off;
MACRUM 0:35a2186cf186 301 unsigned char persistency;
MACRUM 0:35a2186cf186 302 unsigned char ssid[33];
MACRUM 0:35a2186cf186 303 unsigned char channel;
MACRUM 0:35a2186cf186 304 unsigned char security_mode;
MACRUM 0:35a2186cf186 305 unsigned char security_keylen;
MACRUM 0:35a2186cf186 306 unsigned char security_key[64];
MACRUM 0:35a2186cf186 307 }tagWIFI_AP_CTRL_REQ_T;
MACRUM 0:35a2186cf186 308
MACRUM 0:35a2186cf186 309 /** WIFI_DISCONNECT_REQ Command */
MACRUM 0:35a2186cf186 310 typedef struct
MACRUM 0:35a2186cf186 311 {
MACRUM 0:35a2186cf186 312 unsigned char cmd_sid;
MACRUM 0:35a2186cf186 313 unsigned char seq;
MACRUM 0:35a2186cf186 314 }tagWIFI_DISCONNECT_REQ_T;
MACRUM 0:35a2186cf186 315
MACRUM 0:35a2186cf186 316 /** WIFI_GET_STA_RSSI_REQ Command */
MACRUM 0:35a2186cf186 317 typedef struct
MACRUM 0:35a2186cf186 318 {
MACRUM 0:35a2186cf186 319 unsigned char cmd_sid;
MACRUM 0:35a2186cf186 320 unsigned char seq;
MACRUM 0:35a2186cf186 321 }tagWIFI_GET_STA_RSSI_REQ_T;
MACRUM 0:35a2186cf186 322
MACRUM 0:35a2186cf186 323 /** WIFI_SCAN_REQ Command */
MACRUM 0:35a2186cf186 324 typedef struct
MACRUM 0:35a2186cf186 325 {
MACRUM 0:35a2186cf186 326 unsigned char cmd_sid;
MACRUM 0:35a2186cf186 327 unsigned char seq;
MACRUM 0:35a2186cf186 328 unsigned char scan_type;
MACRUM 0:35a2186cf186 329 unsigned char bss_type;
MACRUM 0:35a2186cf186 330 unsigned char bssid[BSSID_MAC_LENTH];
MACRUM 0:35a2186cf186 331 unsigned char chan_list;
MACRUM 0:35a2186cf186 332 unsigned char ssid[SSID_MAX_LENGTH+1];
MACRUM 0:35a2186cf186 333 }tagWIFI_SCAN_REQ_T;
MACRUM 0:35a2186cf186 334
MACRUM 0:35a2186cf186 335 /** WIFI_GET_STATUS_REQ Command */
MACRUM 0:35a2186cf186 336 typedef struct
MACRUM 0:35a2186cf186 337 {
MACRUM 0:35a2186cf186 338 unsigned char cmd_sid;
MACRUM 0:35a2186cf186 339 unsigned char seq;
MACRUM 0:35a2186cf186 340 unsigned char interface;
MACRUM 0:35a2186cf186 341 }tagWIFI_GET_STATUS_REQ_T;
MACRUM 0:35a2186cf186 342
MACRUM 0:35a2186cf186 343 /** Get buffer for command from memory pool.
MACRUM 0:35a2186cf186 344 @return Pointer of buffer
MACRUM 0:35a2186cf186 345 */
MACRUM 0:35a2186cf186 346 tagMEMPOOL_BLOCK_T *allocCmdBuf();
MACRUM 0:35a2186cf186 347
MACRUM 0:35a2186cf186 348 /** Release buffer to memory pool.
MACRUM 0:35a2186cf186 349 @param buf_p Pointer of buffer
MACRUM 0:35a2186cf186 350 */
MACRUM 0:35a2186cf186 351 void freeCmdBuf( tagMEMPOOL_BLOCK_T *buf_p );
MACRUM 0:35a2186cf186 352
MACRUM 0:35a2186cf186 353 /** Get buffer for command from memory pool.
MACRUM 0:35a2186cf186 354 @return Pointer of buffer
MACRUM 0:35a2186cf186 355 */
MACRUM 0:35a2186cf186 356 tagMEMPOOL_BLOCK_T *allocUartRcvBuf();
MACRUM 0:35a2186cf186 357
MACRUM 0:35a2186cf186 358 /** Release buffer to memory pool.
MACRUM 0:35a2186cf186 359 @param buf_p Pointer of buffer
MACRUM 0:35a2186cf186 360 */
MACRUM 0:35a2186cf186 361 void freeUartRecvBuf( tagMEMPOOL_BLOCK_T *buf_p );
MACRUM 0:35a2186cf186 362
MACRUM 0:35a2186cf186 363 /** Module Reset
MACRUM 0:35a2186cf186 364 */
MACRUM 0:35a2186cf186 365 int resetModule( PinName reset );
MACRUM 0:35a2186cf186 366
MACRUM 0:35a2186cf186 367 /** Initialize UART
MACRUM 0:35a2186cf186 368 */
MACRUM 0:35a2186cf186 369 int initUart( PinName tx, PinName rx, int baud );
MACRUM 0:35a2186cf186 370
MACRUM 0:35a2186cf186 371 /** Send data to UART
MACRUM 0:35a2186cf186 372 @param len Length of send data
MACRUM 0:35a2186cf186 373 @param data Pointer of send data
MACRUM 0:35a2186cf186 374 @return 0:success/other:fail
MACRUM 0:35a2186cf186 375 */
MACRUM 0:35a2186cf186 376 int sendUart( unsigned int len, unsigned char *data );
MACRUM 0:35a2186cf186 377
MACRUM 0:35a2186cf186 378 /** Preparation of the UART command
MACRUM 0:35a2186cf186 379 @param cmd_id UART Command ID
MACRUM 0:35a2186cf186 380 @param cmd_sid UART Command SubID
MACRUM 0:35a2186cf186 381 @param req_buf_p Pointer of UART request buffer
MACRUM 0:35a2186cf186 382 @param req_buf_len Length of UART request buffer
MACRUM 0:35a2186cf186 383 @param response_buf_p Pointer of UART response buffer
MACRUM 0:35a2186cf186 384 @param command_p Pointer of UART command[output]
MACRUM 0:35a2186cf186 385 @return Length of UART command.
MACRUM 0:35a2186cf186 386 */
MACRUM 0:35a2186cf186 387 unsigned int preparationSendCommand( unsigned char cmd_id, unsigned char cmd_sid
MACRUM 0:35a2186cf186 388 , unsigned char *req_buf_p, unsigned int req_buf_len
MACRUM 0:35a2186cf186 389 , unsigned char *response_buf_p, unsigned char *command_p );
MACRUM 0:35a2186cf186 390
MACRUM 0:35a2186cf186 391 /**
MACRUM 0:35a2186cf186 392 Get pointer of connection information.
MACRUM 0:35a2186cf186 393 @param socket_id Socket ID
MACRUM 0:35a2186cf186 394 @return The pointer of connection information
MACRUM 0:35a2186cf186 395 */
MACRUM 0:35a2186cf186 396 C_SNIC_Core::tagCONNECT_INFO_T *getConnectInfo( int socket_id );
MACRUM 0:35a2186cf186 397
MACRUM 0:35a2186cf186 398 /**
MACRUM 0:35a2186cf186 399 Get pointer of UDP Recv information.
MACRUM 0:35a2186cf186 400 @param socket_id Socket ID
MACRUM 0:35a2186cf186 401 @return The pointer of UDP Recv information
MACRUM 0:35a2186cf186 402 */
MACRUM 0:35a2186cf186 403 C_SNIC_Core::tagUDP_RECVINFO_T *getUdpRecvInfo( int socket_id );
MACRUM 0:35a2186cf186 404
MACRUM 0:35a2186cf186 405 /**
MACRUM 0:35a2186cf186 406 Get pointer of the instance of C_SNIC_UartCommandManager.
MACRUM 0:35a2186cf186 407 @return The pointer of the instance of C_SNIC_UartCommandManager.
MACRUM 0:35a2186cf186 408 */
MACRUM 0:35a2186cf186 409 C_SNIC_UartCommandManager *getUartCommand();
MACRUM 0:35a2186cf186 410
MACRUM 0:35a2186cf186 411 unsigned char *getCommandBuf();
MACRUM 0:35a2186cf186 412
MACRUM 0:35a2186cf186 413 /** Get an instance of the C_SNIC_Core class.
MACRUM 0:35a2186cf186 414 @return Instance of the C_SNIC_Core class
MACRUM 0:35a2186cf186 415 @note Please do not create an instance in the default constructor this class.
MACRUM 0:35a2186cf186 416 Please use this method when you want to get an instance.
MACRUM 0:35a2186cf186 417 */
MACRUM 0:35a2186cf186 418 static C_SNIC_Core *getInstance();
MACRUM 0:35a2186cf186 419
MACRUM 0:35a2186cf186 420 /** Mutex lock of API calls
MACRUM 0:35a2186cf186 421 */
MACRUM 0:35a2186cf186 422 void lockAPI( void );
MACRUM 0:35a2186cf186 423
MACRUM 0:35a2186cf186 424 /** Mutex unlock of API calls
MACRUM 0:35a2186cf186 425 */
MACRUM 0:35a2186cf186 426 void unlockAPI( void );
MACRUM 0:35a2186cf186 427
MACRUM 0:35a2186cf186 428 private:
MACRUM 0:35a2186cf186 429 static C_SNIC_Core *mInstance_p;
MACRUM 0:35a2186cf186 430 Thread *mUartRecvThread_p;
MACRUM 0:35a2186cf186 431 Thread *mUartRecvDispatchThread_p;
MACRUM 0:35a2186cf186 432 RawSerial *mUart_p;
MACRUM 0:35a2186cf186 433 Mutex mUartMutex;
MACRUM 0:35a2186cf186 434 Mutex mAPIMutex;
MACRUM 0:35a2186cf186 435
MACRUM 0:35a2186cf186 436 // DigitalInOut mModuleReset;
MACRUM 0:35a2186cf186 437 C_SNIC_UartCommandManager *mUartCommand_p;
MACRUM 0:35a2186cf186 438
MACRUM 0:35a2186cf186 439 CircBuffer<char> *mUartRecvBuf_p; // UART RecvBuffer
MACRUM 0:35a2186cf186 440
MACRUM 0:35a2186cf186 441 /** Socket buffer */
MACRUM 0:35a2186cf186 442 tagCONNECT_INFO_T mConnectInfo[MAX_SOCKET_ID+1];
MACRUM 0:35a2186cf186 443
MACRUM 0:35a2186cf186 444 /** UDP Information */
MACRUM 0:35a2186cf186 445 tagUDP_RECVINFO_T mUdpRecvInfo[MAX_SOCKET_ID+1];
MACRUM 0:35a2186cf186 446
MACRUM 0:35a2186cf186 447 /** Constructor
MACRUM 0:35a2186cf186 448 */
MACRUM 0:35a2186cf186 449 C_SNIC_Core();
MACRUM 0:35a2186cf186 450
MACRUM 0:35a2186cf186 451 virtual ~C_SNIC_Core();
MACRUM 0:35a2186cf186 452
MACRUM 0:35a2186cf186 453 static void uartRecvCallback( void );
MACRUM 0:35a2186cf186 454 /** Receiving thread of UART
MACRUM 0:35a2186cf186 455 */
MACRUM 0:35a2186cf186 456 static void uartRecvDispatchThread( void const *args_p );
MACRUM 0:35a2186cf186 457 };
MACRUM 0:35a2186cf186 458
MACRUM 0:35a2186cf186 459 #endif
MACRUM 0:35a2186cf186 460