Murata Type YD Wi-Fi driver
Dependents: easy-connect-type-yd
SNICInterface/SNIC/SNIC_Core.h@0:35a2186cf186, 2017-07-12 (annotated)
- Committer:
- MACRUM
- Date:
- Wed Jul 12 10:49:10 2017 +0000
- Revision:
- 0:35a2186cf186
Initial commit
Who changed what in which revision?
User | Revision | Line number | New 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 |