• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022 Winner Microelectronics Co., Ltd. All rights reserved.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 
17 #ifndef TLS_CMDP_HOSTIF_H
18 #define TLS_CMDP_HOSTIF_H
19 
20 #include "tls_wireless.h"
21 #include "wm_socket.h"
22 #include "wm_netif.h"
23 #include "wm_efuse.h"
24 #include "wm_cmdp.h"
25 #include "wm_uart.h"
26 #if TLS_CONFIG_HTTP_CLIENT_TASK
27 #include "wm_http_client.h"
28 #endif
29 #if TLS_CONFIG_RMMS
30 #include "wm_config.h"
31 #endif
32 
33 #define TOKEN_LEN 151
34 
35 /* host interface hardware mode, indicate which port used */
36 #define HOSTIF_MODE_HSPI       (0)
37 #define HOSTIF_MODE_UART0      (1)
38 #define HOSTIF_MODE_UART1_LS   (2)
39 #define HOSTIF_MODE_UART1_HS   (3)
40 #if TLS_CONFIG_RMMS
41 #define HOSTIF_MODE_RMMS_AT    (5)
42 #endif
43 
44 #define HOSTIF_HSPI_RI_CMD    0
45 #define HOSTIF_HSPI_AT_CMD    1
46 #define HOSTIF_UART0_RI_CMD   2
47 #define HOSTIF_UART1_AT_CMD   3
48 #define HOSTIF_UART0_AT_CMD   4
49 #define HOSTIF_UART1_RI_CMD   5
50 #if TLS_CONFIG_RMMS
51 #define HOSTIF_RMMS_AT_CMD    6
52 #endif
53 
54 /* ri data format type definition */
55 #define PACKET_TYPE_DATA      0
56 #define PACKET_TYPE_RI_CMD    1
57 #define PACKET_TYPE_AT_CMD    2
58 
59 #define HOSTCMD_SYN      0xAA
60 
61 #define HOSTIF_MSG_TYPE_EVENT  0
62 #define HOSTIF_MSG_TYPE_CMD    1
63 #define HOSTIF_MSG_TYPE_RSP    2
64 
65 /***************************************************************
66  * High speed/HSPI DATA/CMD/EVENT/RSP Format definition
67  ***************************************************************/
68 
69 #define HOSTIF_CMD_NOP                 0
70 #define HOSTIF_CMD_RESET               1
71 #define HOSTIF_CMD_PS                  2
72 #define HOSTIF_CMD_RESET_FLASH         3
73 #define HOSTIF_CMD_PMTF                4
74 #define HOSTIF_CMD_GPIO                5
75 #define HOSTIF_CMD_MAC                 6
76 #define HOSTIF_CMD_VER                 7
77 #define HOSTIF_CMD_AP_MAC              8
78 #define HOSTIF_CMD_TEM                 9
79 #define HOSTIF_CMD_WJOIN               0x20
80 #define HOSTIF_CMD_WLEAVE              0x21
81 #define HOSTIF_CMD_WSCAN               0x22
82 #define HOSTIF_CMD_LINK_STATUS         0x23
83 #define HOSTIF_CMD_AP_LINK_STATUS      0x25
84 #define HOSTIF_CMD_SKCT                0x28
85 #define HOSTIF_CMD_SKSTT               0x29
86 #define HOSTIF_CMD_SKCLOSE             0x2A
87 #define HOSTIF_CMD_SKSDF               0x2B
88 #define HOSTIF_CMD_ONESHOT             0x2C
89 #define HOSTIF_CMD_HTTPC               0x2D
90 #define HOSTIF_CMD_FWUP                0x2E
91 #define HOSTIF_CMD_WPRT                0x40
92 #define HOSTIF_CMD_SSID                0x41
93 #define HOSTIF_CMD_KEY                 0x42
94 #define HOSTIF_CMD_ENCRYPT             0x43
95 #define HOSTIF_CMD_BSSID               0x44
96 #define HOSTIF_CMD_BRD_SSID            0x45
97 #define HOSTIF_CMD_CHNL                0x46
98 #define HOSTIF_CMD_WREG                0x47
99 #define HOSTIF_CMD_WBGR                0x48
100 #define HOSTIF_CMD_WATC                0x49
101 #define HOSTIF_CMD_WPSM                0x4A
102 #define HOSTIF_CMD_WARM                0x4B
103 #define HOSTIF_CMD_WPS                 0x4C
104 #define HOSTIF_CMD_AP_SSID             0x4D
105 #define HOSTIF_CMD_SKSRCIP             0x50
106 #define HOSTIF_CMD_SKGHBN              0x51
107 #define HOSTIF_CMD_CHLL                0x52
108 #define HOSTIF_CMD_WARC                0x53
109 #define HOSTIF_CMD_WEBS                0x54
110 #define HOSTIF_CMD_IOM                 0x55
111 #define HOSTIF_CMD_CMDM                0x56
112 #define HOSTIF_CMD_PASS                0x57
113 #define HOSTIF_CMD_CUSTDATA            0x59
114 #define HOSTIF_CMD_ATPT                0x5A
115 #define HOSTIF_CMD_CNTPARAM            0x5B
116 #define HOSTIF_CMD_NIP                 0x60
117 #define HOSTIF_CMD_ATM                 0x61
118 #define HOSTIF_CMD_ATRM                0x62
119 #define HOSTIF_CMD_AOLM                0x63
120 #define HOSTIF_CMD_PORTM               0x64
121 #define HOSTIF_CMD_UART                0x65
122 #define HOSTIF_CMD_ATLT                0x66
123 #define HOSTIF_CMD_DNS                 0x67
124 #define HOSTIF_CMD_DDNS                0x68
125 #define HOSTIF_CMD_UPNP                0x69
126 #define HOSTIF_CMD_DNAME               0x6A
127 
128 #define HOSTIF_CMD_AP_ENCRYPT          0x6B
129 #define HOSTIF_CMD_AP_KEY              0x6C
130 #define HOSTIF_CMD_AP_CHL              0x6D
131 #define HOSTIF_CMD_AP_NIP              0x6E
132 #define HOSTIF_CMD_AP_WBGR             0x6F
133 #define HOSTIF_CMD_STA_LIST            0x70
134 
135 #define HOSTIF_CMD_DBG                 0xF0
136 #define HOSTIF_CMD_REGR                0xF1
137 #define HOSTIF_CMD_REGW                0xF2
138 #define HOSTIF_CMD_RFR                 0xF3
139 #define HOSTIF_CMD_RFW                 0xF4
140 #define HOSTIF_CMD_FLSR                0xF5
141 #define HOSTIF_CMD_FLSW                0xF6
142 #define HOSTIF_CMD_UPDM                0xF7
143 #define HOSTIF_CMD_UPDD                0xF8
144 #define HOSTIF_CMD_UPDP                0xF9
145 #define HOSTIF_CMD_SIN_TX              0xFA
146 
147 #define HOSTIF_EVENT_INIT_END          0xE0
148 #define HOSTIF_EVENT_CRC_ERR           0xE1
149 #define HOSTIF_EVENT_SCAN_RES          0xE2
150 #define HOSTIF_EVENT_JOIN_RES          0xE3
151 #define HOSTIF_EVENT_STA_JOIN          0xE4
152 #define HOSTIF_EVENT_STA_LEAVE         0xE5
153 #define HOSTIF_EVENT_LINKUP            0xE6
154 #define HOSTIF_EVENT_LINKDOWN          0xE7
155 #define HOSTIF_EVENT_TCP_CONN          0xE8
156 #define HOSTIF_EVENT_TCP_JOIN          0xE9
157 #define HOSTIF_EVENT_TCP_DIS           0xEA
158 #define HOSTIF_EVENT_TX_ERR            0xEB
159 
160 #define ATCMD_OP_NULL       1
161 #define ATCMD_OP_EQ         2
162 #define ATCMD_OP_EP         4
163 #define ATCMD_OP_QU         8
164 #define RICMD_OP_GET        16
165 #define RICMD_OP_SET        32
166 #define RICMD_OP_UF         64
167 
168 #define ATCMD_PARAM_TYPE_ASSIC  1
169 #define ATCMD_PARAM_TYPE_HEX    2
170 #define ATCMD_PARAM_TYPE_DEC    4
171 #define ATCMD_PARAM_TYPE_OCT    8
172 #define ATCMD_PARAM_TYPE_BIN    16
173 
174 struct tls_hostif_hdr {
175     u8      sync;
176     u8      type;
177     u16     length;
178     u8      seq_num;
179     u8      flag;
180     u8      dest_addr;
181     u8      chk;
182 };
183 
184 struct tls_hostif_cmd_hdr {
185     u8      msg_type;
186     u8      code;
187     u8      err;
188     u8      ext;
189 };
190 
191 struct tls_hostif_ricmd_ext_hdr {
192     u32    remote_ip;
193     u16    remote_port;
194     u16    local_port;
195 };
196 
197 struct tls_hostif_socket_info {
198     u32    remote_ip;
199     u16    remote_port;
200     u16    local_port;
201     u16    socket;
202     u16    proto;
203 };
204 
205 typedef struct _HOSTIF_CMD_PARAMS_PS {
206     u8      ps_type;
207     u8      wake_type;
208     u16     delay_time;
209     u16     wake_time;
210 } HOSTIF_CMD_PARAMS_PS;
211 
212 typedef struct _HOSTIF_CMD_PARAMS_GPIO {
213     u8      num;
214     u8      direct;
215     u8      status;
216 }__attribute__((packed))HOSTIF_CMD_PARAMS_GPIO;
217 
218 typedef struct _HOSTIF_CMD_PARAMS_SKCT {
219     u32     timeout;
220     u8      ip_addr[4];
221     u8      proto;
222     u8      client;
223     u16     port;
224     char    host_name[32];
225     u8      host_len;
226     u16     localport;
227     enum tls_cmd_mode mode;
228 }__attribute__((packed))HOSTIF_CMD_PARAMS_SKCT;
229 
230 typedef struct _HOSTIF_CMD_PARAMS_SKSTT {
231     u8      socket;
232 }__attribute__((packed))HOSTIF_CMD_PARAMS_SKSTT;
233 
234 typedef struct _HOSTIF_CMD_PARAMS_SKCLOSE {
235     u8      socket;
236 }__attribute__((packed))HOSTIF_CMD_PARAMS_SKCLOSE;
237 
238 typedef struct _HOSTIF_CMD_PARAMS_SKSDF {
239     u8      socket;
240 }__attribute__((packed))HOSTIF_CMD_PARAMS_SKSDF;
241 
242 typedef struct _HOSTIF_CMD_PARAMS_WPRT {
243     u8      type;
244 }__attribute__((packed))HOSTIF_CMD_PARAMS_WPRT;
245 
246 typedef struct _HOSTIF_CMD_PARAMS_SSID {
247     u8      ssid_len;
248     u8      ssid[1];
249 }__attribute__((packed))HOSTIF_CMD_PARAMS_SSID;
250 
251 typedef struct _HOSTIF_CMD_PARAMS_KEY {
252     u8      format;
253     u8      index;
254     u8      key_len;
255     u8      key[64];
256 }__attribute__((packed))HOSTIF_CMD_PARAMS_KEY;
257 
258 typedef struct _HOSTIF_CMD_PARAMS_ENCRYPT {
259     u8      mode;
260 }__attribute__((packed))HOSTIF_CMD_PARAMS_ENCRYPT;
261 
262 typedef struct _HOSTIF_CMD_PARAMS_BSSID {
263     u8      enable;
264     u8      bssid[6];
265 }__attribute__((packed))HOSTIF_CMD_PARAMS_BSSID;
266 
267 typedef struct _HOSTIF_CMD_PARAMS_BRD_SSID {
268     u8      enable;
269 }__attribute__((packed))HOSTIF_CMD_PARAMS_BRD_SSID;
270 
271 typedef struct _HOSTIF_CMD_PARAMS_CHNL {
272     u8      enable;
273     u8      channel;
274 }__attribute__((packed))HOSTIF_CMD_PARAMS_CHNL;
275 
276 typedef struct _HOSTIF_CMD_PARAMS_WREG {
277     u16     region;
278 }__attribute__((packed))HOSTIF_CMD_PARAMS_WREG;
279 
280 typedef struct _HOSTIF_CMD_PARAMS_WBGR {
281     u8      mode;
282     u8      rate;
283 }__attribute__((packed))HOSTIF_CMD_PARAMS_WBGR;
284 
285 typedef struct _HOSTIF_CMD_PARAMS_WATC {
286     u8      enable;
287 }__attribute__((packed))HOSTIF_CMD_PARAMS_WATC;
288 
289 typedef struct _HOSTIF_CMD_PARAMS_WPSM {
290     u8      enable;
291 }__attribute__((packed))HOSTIF_CMD_PARAMS_WPSM;
292 
293 typedef struct _HOSTIF_CMD_PARAMS_WARM {
294     u8      enable;
295 }__attribute__((packed))HOSTIF_CMD_PARAMS_WARM;
296 
297 typedef  struct _HOSTIF_CMD_PARAMS_WPS {
298     u8      mode;
299     u8      pin_len;
300     u8      pin[1];
301 }__attribute__((packed))HOSTIF_CMD_PARAMS_WPS;
302 
303 typedef  struct _HOSTIF_CMD_PARAMS_BT {
304     u8      cmd;
305     enum    tls_cmd_mode cmd_mode;
306 }__attribute__((packed))HOSTIF_CMD_PARAMS_BT;
307 
308 typedef  struct _HOSTIF_CMD_PARAMS_BTCTRL {
309     u8      type;
310     u8      level;
311     enum    tls_cmd_mode cmd_mode;
312 }__attribute__((packed))HOSTIF_CMD_PARAMS_BTCTRL;
313 
314 typedef  struct _HOSTIF_CMD_PARAMS_BTNAME {
315     char    name[16];
316     u8      len;
317     enum    tls_cmd_mode cmd_mode;
318 }__attribute__((packed))HOSTIF_CMD_PARAMS_BTNAME;
319 
320 typedef  struct _HOSTIF_CMD_PARAMS_BLEADV {
321     u8      len;
322     u8      data[21];
323     u8      include_name;
324     enum    tls_cmd_mode cmd_mode;
325 }__attribute__((packed))HOSTIF_CMD_PARAMS_BLEADV;
326 
327 typedef  struct _HOSTIF_CMD_PARAMS_BLEPRM {
328     u32     adv_int_min;
329     u32     adv_int_max;
330     u8      adv_type;
331     u8      own_addr_type;
332     u8      channel_map;
333     u8      adv_filter_policy;
334     u8      peer_addr_type;
335     u8      peer_addr[6];
336 }__attribute__((packed))HOSTIF_CMD_PARAMS_BLEPRM;
337 
338 typedef  struct _HOSTIF_CMD_PARAMS_BLESCAN {
339     u8      cmd;
340     enum    tls_cmd_mode cmd_mode;
341 }__attribute__((packed))HOSTIF_CMD_PARAMS_BLESCAN;
342 
343 typedef  struct _HOSTIF_CMD_PARAMS_BLESV {
344     u16     uuid;
345     enum    tls_cmd_mode cmd_mode;
346 }__attribute__((packed))HOSTIF_CMD_PARAMS_BLESV;
347 
348 typedef  struct _HOSTIF_CMD_PARAMS_BLEROLE {
349     u8      role;
350     u16     uuid;
351 }__attribute__((packed))HOSTIF_CMD_PARAMS_BLEROLE;
352 
353 typedef  struct _HOSTIF_CMD_PARAMS_BLESC {
354     u8      server_if;
355     u16     inst_id;
356     u16     uuid;
357     u16     handles;
358     enum    tls_cmd_mode cmd_mode;
359 }__attribute__((packed))HOSTIF_CMD_PARAMS_BLESC;
360 
361 typedef  struct _HOSTIF_CMD_PARAMS_BLECH {
362     u8      server_if;
363     u16     service_handle;
364     u16     uuid;
365     u32     prop;
366     u32     perm;
367     enum    tls_cmd_mode cmd_mode;
368 }__attribute__((packed))HOSTIF_CMD_PARAMS_BLECH;
369 
370 typedef  struct _HOSTIF_CMD_PARAMS_BLESTT {
371     u8      server_if;
372     u16     service_handle;
373     u8      tran_type;
374     enum    tls_cmd_mode cmd_mode;
375 }__attribute__((packed))HOSTIF_CMD_PARAMS_BLESTT;
376 
377 typedef  struct _HOSTIF_CMD_PARAMS_BLESNDIND {
378     u8      server_if;
379     u16     attr_handle;
380     u16     conn_id;
381     u8      value[21];
382     enum    tls_cmd_mode cmd_mode;
383 }__attribute__((packed))HOSTIF_CMD_PARAMS_BLESNDIND;
384 
385 typedef  struct _HOSTIF_CMD_PARAMS_BLESNDRSP {
386     u16     conn_id;
387     u16     trans_id;
388     u16     attr_handle;
389     u8      auth_req;
390     u8      value[21];
391     enum    tls_cmd_mode cmd_mode;
392 }__attribute__((packed))HOSTIF_CMD_PARAMS_BLESNDRSP;
393 
394 typedef  struct _HOSTIF_CMD_PARAMS_BTPARAM_BLESND {
395     u8    param[128];
396     uint16_t param_len;
397     enum    tls_cmd_mode cmd_mode;
398 }__attribute__((packed))HOSTIF_CMD_PARAMS_BTPARAM_BLESND;
399 
400 typedef struct _HOSTIF_CMD_PARAMS_BLECONN {
401     u8      server_if;
402     u8      addr[6];
403     u16     conn_id;
404     enum    tls_cmd_mode cmd_mode;
405 }__attribute__((packed))HOSTIF_CMD_PARAMS_BLECONN;
406 
407 typedef struct _HOSTIF_CMD_PARAMS_BLECMTU {
408     u16     conn_id;
409     u16     mtu;
410     enum    tls_cmd_mode cmd_mode;
411 }__attribute__((packed))HOSTIF_CMD_PARAMS_BLECMTU;
412 
413 
414 typedef struct _HOSTIF_CMD_PARAMS_BLENTY {
415     u8      client_if;
416     u8      addr[6];
417     u16     attr_handle;
418     u16     conn_id;
419     enum    tls_cmd_mode cmd_mode;
420 }__attribute__((packed))HOSTIF_CMD_PARAMS_BLENTY;
421 
422 typedef struct _HOSTIF_CMD_PARAMS_BLEACC {
423     u8      mode;
424     u16     conn_id;
425     u16     handle;
426     u8      auth_req;
427     u8      data_len;
428     u8      data[21];
429     enum    tls_cmd_mode cmd_mode;
430 }__attribute__((packed))HOSTIF_CMD_PARAMS_BLEACC;
431 
432 typedef struct _HOSTIF_CMD_PARAMS_NIP {
433     u8      type;
434     u8      ip[4];
435     u8      nm[4];
436     u8      gw[4];
437     u8      dns[4];
438 }__attribute__((packed))HOSTIF_CMD_PARAMS_NIP;
439 
440 typedef struct _HOSTIF_CMD_PARAMS_ATM {
441     u8      mode;
442 }__attribute__((packed))HOSTIF_CMD_PARAMS_ATM;
443 
444  typedef struct _HOSTIF_CMDRSP_PARAMS_TEM {
445      u8      offsetLen;
446      u8      offset[8];
447  }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_TEM;
448 
449 typedef struct _HOSTIF_CMD_PARAMS_ATRM {
450     u32 timeout;
451     u8  ip_addr[4];
452     u8 proto;
453     u8 client;
454     u16 port;
455     char host_name[32];
456     u8  host_len;
457     u16 localport;
458 }__attribute__((packed))HOSTIF_CMD_PARAMS_ATRM;
459 
460 typedef struct _HOSTIF_CMD_PARAMS_AOLM {
461     u8      enable;
462     u8      ssid_len;
463     u8      ssid[1];
464 }__attribute__((packed))HOSTIF_CMD_PARAMS_AOLM;
465 
466 typedef struct _HOSTIF_CMD_PARAMS_PORTM {
467     u8      mode;
468 }__attribute__((packed))HOSTIF_CMD_PARAMS_PORTM;
469 
470 typedef struct _HOSTIF_CMD_PARAMS_UART {
471     u8      baud_rate[3];
472     u8      char_len;
473     u8      stopbit;
474     u8      parity;
475     u8      flow_ctrl;
476 }__attribute__((packed))HOSTIF_CMD_PARAMS_UART;
477 
478 typedef struct _HOSTIF_CMD_PARAMS_ATLT {
479     u16      length;
480 }__attribute__((packed))HOSTIF_CMD_PARAMS_ATLT;
481 
482 typedef struct _HOSTIF_CMD_PARAMS_DNS {
483     u8      length;
484     u8      name[1];
485 }__attribute__((packed))HOSTIF_CMD_PARAMS_DNS;
486 
487 typedef struct _HOSTIF_CMD_PARAMS_DDNS {
488     u8      enable;
489     u8      user_len;
490     u8      user[1];
491 }__attribute__((packed))HOSTIF_CMD_PARAMS_DDNS;
492 
493 typedef struct _HOSTIF_CMD_PARAMS_UPNP {
494     u8      enable;
495 }__attribute__((packed))HOSTIF_CMD_PARAMS_UPNP;
496 
497 typedef struct _HOSTIF_CMD_PARAMS_DNAME {
498     u8      length;
499     u8      name[1];
500 }__attribute__((packed))HOSTIF_CMD_PARAMS_DNAME;
501 
502 typedef struct _HOSTIF_CMD_PARAMS_DBG {
503     u32      dbg_level;
504 }__attribute__((packed))HOSTIF_CMD_PARAMS_DBG;
505 
506 typedef struct _HOSTIF_CMD_PARAMS_REGR {
507     u32      reg_base_addr;
508     u8      length;
509 }__attribute__((packed))HOSTIF_CMD_PARAMS_REGR;
510 
511 typedef struct _HOSTIF_CMD_PARAMS_REGW {
512     u32      reg_base_addr;
513     u8      length;
514     u32     v[1];
515 }__attribute__((packed))HOSTIF_CMD_PARAMS_REGW;
516 
517 typedef struct _HOSTIF_CMD_PARAMS_RFR {
518     u16      reg_base_addr;
519     u8      length;
520 }__attribute__((packed))HOSTIF_CMD_PARAMS_RFR;
521 
522 typedef struct _HOSTIF_CMD_PARAMS_RFW {
523     u16      reg_base_addr;
524     u8      length;
525     u16     v[1];
526 }__attribute__((packed))HOSTIF_CMD_PARAMS_RFW;
527 
528 typedef struct _HOSTIF_CMD_PARAMS_FLSR {
529     u32      reg_base_addr;
530     u8      length;
531 }__attribute__((packed))HOSTIF_CMD_PARAMS_FLSR;
532 
533 typedef struct _HOSTIF_CMD_PARAMS_FLSW {
534     u32      reg_base_addr;
535     u8      length;
536     u32     v[1];
537 }__attribute__((packed))HOSTIF_CMD_PARAMS_FLSW;
538 
539 typedef struct _HOSTIF_CMD_PARAMS_UPDM {
540     u8      mode;
541     u8      src;    /* 标识来自at 0, 还是ri 1 */
542 }__attribute__((packed))HOSTIF_CMD_PARAMS_UPDM;
543 
544 typedef struct _HOSTIF_CMD_PARAMS_UPDD {
545     u16     size;
546     u8      data[1];
547 }__attribute__((packed))HOSTIF_CMD_PARAMS_UPDD;
548 
549 typedef struct _HOSTIF_CMD_PARAMS_ONESHOT {
550     u8      status;
551 }__attribute__((packed))HOSTIF_CMD_PARAMS_ONESHOT;
552 
553 typedef struct HOSTIF_CMD_PARAMS_HTTPC {
554     u8        verb;
555     u8      url_len;
556     u16        data_len;
557     u8      *url;
558     u8      *data;
559 }__attribute__((packed))HOSTIF_CMD_PARAMS_HTTPC;
560 
561 typedef struct HOSTIF_CMD_PARAMS_WJOIN {
562     enum tls_cmd_mode mode;
563 }__attribute__((packed))HOSTIF_CMD_PARAMS_WJOIN;
564 
565 typedef struct HOSTIF_CMD_PARAMS_WSCAN {
566     enum tls_cmd_mode mode;
567 }__attribute__((packed))HOSTIF_CMD_PARAMS_WSCAN;
568 
569 typedef struct HOSTIF_CMD_PARAMS_SKSND {
570     u8      socket;
571     u16     size;
572 }__attribute__((packed))HOSTIF_CMD_PARAMS_SKSND;
573 
574 typedef struct HOSTIF_CMD_PARAMS_SKRCV {
575     u8      socket;
576     u16     size;
577 }__attribute__((packed))HOSTIF_CMD_PARAMS_SKRCV;
578 
579 typedef struct HOSTIF_CMD_PARAMS_SKRPTM {
580     u8      mode;
581 }__attribute__((packed))HOSTIF_CMD_PARAMS_SKRPTM;
582 
583 typedef struct HOSTIF_CMD_PARAMS_SKGHBN {
584     u8      ipstr[1];
585 }__attribute__((packed))HOSTIF_CMD_PARAMS_SKGHBN;
586 
587 typedef struct HOSTIF_CMD_PARAMS_CHANNEL_LIST {
588     u16      channellist;
589 }__attribute__((packed))HOSTIF_CMD_PARAMS_CHANNEL_LIST;
590 
591 typedef struct HOSTIF_CMD_PARAMS_WARC {
592     u8      autoretrycnt;
593 }__attribute__((packed))HOSTIF_CMD_PARAMS_WARC;
594 
595 typedef struct HOSTIF_CMD_PARAMS_ATPT {
596     u16      period;
597 }__attribute__((packed))HOSTIF_CMD_PARAMS_ATPT;
598 
599 typedef struct HOSTIF_CMD_PARAMS_ESPC {
600     u8      escapechar;
601 }__attribute__((packed))HOSTIF_CMD_PARAMS_ESPC;
602 
603 typedef struct HOSTIF_CMD_PARAMS_ESPT {
604     u16      escapeperiod;
605 }__attribute__((packed))HOSTIF_CMD_PARAMS_ESPT;
606 
607 typedef struct HOSTIF_CMD_PARAMS_WEBS {
608     u8      autorun;
609     u16     portnum;
610 }__attribute__((packed))HOSTIF_CMD_PARAMS_WEBS;
611 
612 typedef struct HOSTIF_CMD_PARAMS_IOM {
613     u8      mode;
614 }__attribute__((packed))HOSTIF_CMD_PARAMS_IOM;
615 
616 typedef struct HOSTIF_CMD_PARAMS_CMDM {
617     u8      mode;
618 }__attribute__((packed))HOSTIF_CMD_PARAMS_CMDM;
619 
620 typedef struct HOSTIF_CMD_PARAMS_PASS {
621     u8      length;
622     u8      password[1];
623 }__attribute__((packed))HOSTIF_CMD_PARAMS_PASS;
624 
625 typedef struct HOSTIF_CMD_PARAMS_UPDP {
626     u8      mode;
627 }__attribute__((packed))HOSTIF_CMD_PARAMS_UPDP;
628 
629 typedef struct HOSTIF_CMD_PARAMS_TXG {
630     u8      tx_gain[TX_GAIN_LEN];
631 }__attribute__((packed))HOSTIF_CMD_PARAMS_TXG;
632 
633 typedef struct HOSTIF_CMD_PARAMS_TXGR {
634     u8 tx_rate;
635     u8 txr_gain[3];
636 }__attribute__((packed))HOSTIF_CMD_PARAMS_TXGR;
637 
638 typedef struct HOSTIF_CMD_PARAMS_MAC {
639     u8      length;
640     u8      macaddr[6];
641 }__attribute__((packed))HOSTIF_CMD_PARAMS_MAC;
642 
643 typedef struct HOSTIF_CMD_PARAMS_SPIF {
644     u8      mode;
645     u8      len;
646     u8      data[1];
647 }__attribute__((packed))HOSTIF_CMD_PARAMS_SPIF;
648 
649 typedef struct HOSTIF_CMD_PARAMS_LPCHL {
650     u8      channel;
651     u8      bandwidth;
652 }__attribute__((packed))HOSTIF_CMD_PARAMS_LPCHL;
653 
654 typedef struct HOSTIF_CMD_PARAMS_LPTSTR {
655     u32      tempcomp;
656     u32      packetcount;
657     u32      psdulen;
658     u32      txgain;
659     u32      datarate;
660     u32      rifs;
661     u32      greenfield;
662     u32      gimode;
663 }__attribute__((packed))HOSTIF_CMD_PARAMS_LPTSTR;
664 
665 typedef struct HOSTIF_CMD_PARAMS_LPPSTR {
666     u32      param;
667     u32      start;
668 }__attribute__((packed))HOSTIF_CMD_PARAMS_LPPSTR;
669 
670 typedef struct HOSTIF_CMD_PARAMS_LPPSTP {
671     u32      mismatch;
672 }__attribute__((packed))HOSTIF_CMD_PARAMS_LPPSTP;
673 
674  typedef struct HOSTIF_CMD_PARAMS_WIDTH {
675     u32      freq;
676     u32      dividend;
677 }__attribute__((packed))HOSTIF_CMD_PARAMS_WIDTH;
678 
679 typedef struct HOSTIF_CMD_PARAMS_RXSIN {
680     u32      rxlen;
681     u32         isprint;
682 }__attribute__((packed))HOSTIF_CMD_PARAMS_RXSIN;
683 
684 typedef struct HOSTIF_CMD_PARAMS_PING {
685     u8      *ip;
686     u32     timeLimt;
687     u32     cnt;
688     u32     start;
689     u32     ext;
690     u32     src;
691 }__attribute__((packed))HOSTIF_CMD_PARAMS_PING;
692 
693 typedef  struct HOSTIF_CMD_PARAMS_THT {
694     u32        *tok;
695 }__attribute__((packed))HOSTIF_CMD_PARAMS_THT;
696 
697 typedef  struct _HOSTIF_CMD_PARAMS_TXLO {
698     u32 txlo;
699 }__attribute__((packed))HOSTIF_CMD_PARAMS_TXLO;
700 
701 typedef  struct _HOSTIF_CMD_PARAMS_TXIQ {
702     u32 txiqgain;
703     u32 txiqphase;
704 }__attribute__((packed))HOSTIF_CMD_PARAMS_TXIQ;
705 
706 typedef struct _HOSTIF_CMD_PARAMS_FREQERR {
707     int freqerr;
708 }__attribute__((packed))HOSTIF_CMD_PARAMS_FREQERR;
709 
710 typedef struct _HOSTIF_CMD_PARAMS_VCGCTRL {
711     int vcg;
712 }__attribute__((packed))HOSTIF_CMD_PARAMS_VCGCTRL;
713 
714 typedef  struct _HOSTIF_CMD_PARAMS_SCANPARAM {
715     enum tls_cmd_mode mode;
716     u32 scantimes;
717     u16 chlist;
718     u16 switchinterval;
719 }__attribute__((packed))HOSTIF_CMD_PARAMS_SCANPARAM;
720 
721 typedef struct _HOSTIF_CMD_PARAMS_TOKEN {
722     uint8_t len;
723     uint8_t token[TOKEN_LEN];
724 }__attribute__((packed))HOSTIF_CMD_PARAMS_TOKEN;
725 
726 union HOSTIF_CMD_PARAMS_UNION {
727     HOSTIF_CMD_PARAMS_PS ps;
728     HOSTIF_CMD_PARAMS_GPIO gpio;
729     HOSTIF_CMD_PARAMS_SKCT skct;
730     HOSTIF_CMD_PARAMS_SKSTT skstt;
731     HOSTIF_CMD_PARAMS_SKCLOSE skclose;
732     HOSTIF_CMD_PARAMS_SKSDF sksdf;
733     HOSTIF_CMD_PARAMS_WPRT wprt;
734     HOSTIF_CMD_PARAMS_SSID ssid;
735     HOSTIF_CMD_PARAMS_KEY key;
736     HOSTIF_CMD_PARAMS_ENCRYPT encrypt;
737     HOSTIF_CMD_PARAMS_BSSID bssid;
738     HOSTIF_CMD_PARAMS_BRD_SSID brd_ssid;
739     HOSTIF_CMD_PARAMS_CHNL channel;
740     HOSTIF_CMD_PARAMS_WREG wreg;
741     HOSTIF_CMD_PARAMS_WBGR wbgr;
742     HOSTIF_CMD_PARAMS_WATC watc;
743     HOSTIF_CMD_PARAMS_WPSM wpsm;
744     HOSTIF_CMD_PARAMS_WARM warm;
745     HOSTIF_CMD_PARAMS_WPS wps;
746     HOSTIF_CMD_PARAMS_BT bt;
747     HOSTIF_CMD_PARAMS_BTCTRL btctrl;
748     HOSTIF_CMD_PARAMS_BTNAME btname;
749     HOSTIF_CMD_PARAMS_BLEADV bleadv;
750     HOSTIF_CMD_PARAMS_BLEPRM bleprm;
751     HOSTIF_CMD_PARAMS_BLESCAN blescan;
752     HOSTIF_CMD_PARAMS_BLESV blesv;
753     HOSTIF_CMD_PARAMS_BLEROLE blerole;
754     HOSTIF_CMD_PARAMS_BLESC blesc;
755     HOSTIF_CMD_PARAMS_BLECH blech;
756     HOSTIF_CMD_PARAMS_BLESTT blestt;
757     HOSTIF_CMD_PARAMS_BLESNDIND blesndind;
758     HOSTIF_CMD_PARAMS_BLESNDRSP blesndrsp;
759     HOSTIF_CMD_PARAMS_BTPARAM_BLESND blesnd;
760     HOSTIF_CMD_PARAMS_BLECONN bleconn;
761     HOSTIF_CMD_PARAMS_BLECMTU blecmtu;
762     HOSTIF_CMD_PARAMS_BLENTY blenty;
763     HOSTIF_CMD_PARAMS_BLEACC bleacc;
764     HOSTIF_CMD_PARAMS_NIP nip;
765     HOSTIF_CMD_PARAMS_ATM atm;
766     HOSTIF_CMD_PARAMS_ATRM atrm;
767     HOSTIF_CMD_PARAMS_AOLM aolm;
768     HOSTIF_CMD_PARAMS_PORTM portm;
769     HOSTIF_CMD_PARAMS_UART uart;
770     HOSTIF_CMD_PARAMS_ATLT atlt;
771     HOSTIF_CMD_PARAMS_DNS dns;
772     HOSTIF_CMD_PARAMS_DDNS ddns;
773     HOSTIF_CMD_PARAMS_UPNP upnp;
774     HOSTIF_CMD_PARAMS_DNAME dname;
775     HOSTIF_CMD_PARAMS_DBG dbg;
776     HOSTIF_CMD_PARAMS_REGR regr;
777     HOSTIF_CMD_PARAMS_REGW regw;
778     HOSTIF_CMD_PARAMS_RFR rfr;
779     HOSTIF_CMD_PARAMS_RFW rfw;
780     HOSTIF_CMD_PARAMS_FLSR flsr;
781     HOSTIF_CMD_PARAMS_FLSW flsw;
782     HOSTIF_CMD_PARAMS_UPDM updm;
783     HOSTIF_CMD_PARAMS_UPDD updd;
784     HOSTIF_CMD_PARAMS_ONESHOT oneshot;
785     HOSTIF_CMD_PARAMS_HTTPC httpc;
786     HOSTIF_CMDRSP_PARAMS_TEM tem;
787     HOSTIF_CMD_PARAMS_WJOIN wjoin;
788     HOSTIF_CMD_PARAMS_WSCAN wscan;
789     HOSTIF_CMD_PARAMS_SKSND sksnd;
790     HOSTIF_CMD_PARAMS_SKRCV skrcv;
791     HOSTIF_CMD_PARAMS_SKRPTM skrptm;
792     HOSTIF_CMD_PARAMS_SKGHBN skghbn;
793     HOSTIF_CMD_PARAMS_CHANNEL_LIST channel_list;
794     HOSTIF_CMD_PARAMS_WARC warc;
795     HOSTIF_CMD_PARAMS_ATPT atpt;
796     HOSTIF_CMD_PARAMS_ESPC espc;
797     HOSTIF_CMD_PARAMS_ESPT espt;
798     HOSTIF_CMD_PARAMS_WEBS webs;
799     HOSTIF_CMD_PARAMS_IOM iom;
800     HOSTIF_CMD_PARAMS_CMDM cmdm;
801     HOSTIF_CMD_PARAMS_PASS pass;
802     HOSTIF_CMD_PARAMS_UPDP updp;
803     HOSTIF_CMD_PARAMS_TXG txg;
804     HOSTIF_CMD_PARAMS_TXGR txgr;
805     HOSTIF_CMD_PARAMS_MAC mac;
806     HOSTIF_CMD_PARAMS_SPIF spif;
807     HOSTIF_CMD_PARAMS_LPCHL lpchl;
808     HOSTIF_CMD_PARAMS_LPTSTR lptstr;
809     HOSTIF_CMD_PARAMS_LPPSTR lppstr;
810     HOSTIF_CMD_PARAMS_LPPSTP lppstp;
811     HOSTIF_CMD_PARAMS_WIDTH  width;
812     HOSTIF_CMD_PARAMS_RXSIN  rxsin;
813     HOSTIF_CMD_PARAMS_TXLO   txLO;
814     HOSTIF_CMD_PARAMS_TXIQ    txIQ;
815     HOSTIF_CMD_PARAMS_FREQERR  FreqErr;
816     HOSTIF_CMD_PARAMS_VCGCTRL vcgCtrl;
817     HOSTIF_CMD_PARAMS_PING  ping;
818     HOSTIF_CMD_PARAMS_THT    tht;
819     HOSTIF_CMD_PARAMS_SCANPARAM scanparam;
820     HOSTIF_CMD_PARAMS_TOKEN token;
821 };
822 
823 struct tls_hostif_cmd {
824     struct tls_hostif_cmd_hdr cmd_hdr;
825     /* command body */
826     union HOSTIF_CMD_PARAMS_UNION params;
827 };
828 
829 
830 typedef struct _HOSTIF_CMDRSP_PARAMS_MAC {
831     u8      addr[6];
832 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_MAC;
833 
834 typedef struct _HOSTIF_CMDRSP_PARAMS_VER {
835     u8      hw_ver[6];
836     u8      fw_ver[4];
837 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_VER;
838 
839 typedef struct _HOSTIF_CMDRSP_PARAMS_JOIN {
840     u8      bssid[6];
841     u8      type;
842     u8      channel;
843     u8      encrypt;
844     u8      ssid_len;
845     u8      ssid[32];
846     u8      rssi;
847     u8      result;
848 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_JOIN;
849 
850 typedef struct _HOSTIF_CMDRSP_PARAMS_LKSTT {
851     u8      status;
852     u8      ip[4];
853     u8      nm[4];
854     u8      gw[4];
855     u8      dns1[4];
856     u8      dns2[4];
857 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_LKSTT;
858 
859 typedef struct _HOSTIF_CMDRSP_PARAMS_SKCT {
860     u8      socket;
861 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_SKCT;
862 
863 struct hostif_cmdrsp_skstt_ext {
864     u8      socket;
865     u8      status;
866     u8      host_ipaddr[4];
867     u16      remote_port;
868     u16      local_port;
869 }__attribute__((packed));
870 
871 typedef struct _HOSTIF_CMDRSP_PARAMS_SKSTT {
872     u8      number;
873     struct hostif_cmdrsp_skstt_ext ext[1];
874 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_SKSTT;
875 
876 typedef struct _HOSTIF_CMDRSP_PARAMS_WPRT {
877     u8      type;
878 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_WPRT;
879 
880 typedef struct _HOSTIF_CMDRSP_PARAMS_SSID {
881     u8      ssid_len;
882     u8      ssid[1];
883 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_SSID;
884 
885 typedef struct _HOSTIF_CMDRSP_PARAMS_KEY {
886     u8      format;
887     u8      index;
888     u8      key_len;
889     u8      key[64];
890 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_KEY;
891 
892 typedef struct _HOSTIF_CMDRSP_PARAMS_ENCRYPT {
893     u8      mode;
894 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_ENCRYPT;
895 
896 typedef struct _HOSTIF_CMDRSP_PARAMS_BSSID {
897     u8      enable;
898     u8      bssid[6];
899 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_BSSID;
900 
901 typedef struct _HOSTIF_CMDRSP_PARAMS_BRD_SSID {
902     u8      enable;
903 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_BRD_SSID;
904 
905 typedef struct _HOSTIF_CMDRSP_PARAMS_CHNL {
906     u8      enable;
907     u8      channel;
908 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_CHNL;
909 
910 typedef struct _HOSTIF_CMDRSP_PARAMS_WREG {
911     u16     region;
912 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_WREG;
913 
914 typedef struct _HOSTIF_CMDRSP_PARAMS_WBGR {
915     u8      mode;
916     u8      rate;
917 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_WBGR;
918 
919 typedef struct _HOSTIF_CMDRSP_PARAMS_WATC {
920     u8      enable;
921 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_WATC;
922 
923 typedef struct _HOSTIF_CMDRSP_PARAMS_WPSM {
924     u8      enable;
925 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_WPSM;
926 
927 typedef struct _HOSTIF_CMDRSP_PARAMS_WARM {
928     u8      enable;
929 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_WARM;
930 
931 typedef struct _HOSTIF_CMDRSP_PARAMS_WPS {
932     u8      result;
933     u8      pin_len;
934     u8      pin[1];
935 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_WPS;
936 
937 typedef struct _HOSTIF_CMDRSP_PARAMS_BT {
938     u8      status;
939 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_BT;
940 
941 typedef struct _HOSTIF_CMDRSP_PARAMS_BLEPOW {
942     u8      min;
943     u8      max;
944 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_BLEPOW;
945 
946 typedef  struct HOSTIF_CMDRSP_PARAMS_BLEPRM {
947     u32     adv_int_min;
948     u32     adv_int_max;
949     u8      adv_type;
950     u8      own_addr_type;
951     u8      channel_map;
952     u8      adv_filter_policy;
953     u8      peer_addr_type;
954     u8      peer_addr[6];
955 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_BLEPRM;
956 
957 typedef struct _HOSTIF_CMDRSP_PARAMS_BLECONN {
958     u16      conn_id;
959 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_BLECONN;
960 
961 typedef struct _HOSTIF_CMDRSP_PARAMS_BLEGATT {
962     u32      type;
963     u32      attribute_handle;
964     u32      properties;
965     u32      start_handle;
966     u32      end_handle;
967 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_BLEGATT;
968 
969 typedef struct _HOSTIF_CMDRSP_PARAMS_NIP {
970     u8      type;
971     u8      ip[4];
972     u8      nm[4];
973     u8      gw[4];
974     u8      dns[4];
975 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_NIP;
976 
977 typedef struct _HOSTIF_CMDRSP_PARAMS_ATM {
978     u8      mode;
979 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_ATM;
980 
981 
982 typedef struct _HOSTIF_CMDRSP_PARAMS_ATRM {
983     u32 timeout;
984     u8  ip_addr[4];
985     u8 proto;
986     u8 client;
987     u16 port;
988     char host_name[32];
989     u8  host_len;
990     u16 localport;
991 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_ATRM;
992 
993 typedef struct _HOSTIF_CMDRSP_PARAMS_AOLM {
994     u8      enable;
995     u8      ssid_len;
996     u8      ssid[1];
997 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_AOLM;
998 
999 typedef struct _HOSTIF_CMDRSP_PARAMS_PORTM {
1000     u8      mode;
1001 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_PORTM;
1002 
1003 typedef struct _HOSTIF_CMDRSP_PARAMS_UART {
1004     u8      baud_rate[3];
1005     u8      char_len;
1006     u8      stopbit;
1007     u8      parity;
1008     u8      flow_ctrl;
1009 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_UART;
1010 
1011 typedef struct _HOSTIF_CMDRSP_PARAMS_ATLT {
1012     u16     length;
1013 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_ATLT;
1014 
1015 typedef struct _HOSTIF_CMDRSP_PARAMS_DNS {
1016     u8      length;
1017     u8      name[1];
1018 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_DNS;
1019 
1020 typedef struct _HOSTIF_CMDRSP_PARAMS_DDNS {
1021     u8      enable;
1022     u8      user_len;
1023     u8      user[1];
1024 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_DDNS;
1025 
1026 typedef struct _HOSTIF_CMDRSP_PARAMS_UPNP {
1027     u8      enable;
1028 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_UPNP;
1029 
1030 typedef struct _HOSTIF_CMDRSP_PARAMS_DNAME {
1031     u8      length;
1032     u8      name[1];
1033 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_DNAME;
1034 
1035 typedef struct _HOSTIF_CMDRSP_PARAMS_DBG {
1036     u32      dbg_level;
1037 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_DBG;
1038 
1039 typedef struct _HOSTIF_CMDRSP_PARAMS_REGR {
1040     u8       length;
1041     u32      value[1];
1042 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_REGR;
1043 
1044 typedef struct _HOSTIF_CMDRSP_PARAMS_RFR {
1045     u8       length;
1046     u16      value[1];
1047 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_RFR;
1048 
1049 typedef struct _HOSTIF_CMDRSP_PARAMS_FLSR {
1050     u8       length;
1051     u32      value[1];
1052 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_FLSR;
1053 
1054 typedef struct _HOSTIF_CMDRSP_PARAMS_UPDM {
1055     u8      mode;
1056 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_UPDM;
1057 
1058 typedef struct _HOSTIF_CMDRSP_PARAMS_SKSND {
1059     u16      size;
1060 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_SKSND;
1061 
1062 typedef struct _HOSTIF_CMDRSP_PARAMS_SKRCV {
1063     u8      socket;
1064     u16      size;
1065 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_SKRCV;
1066 
1067 typedef struct _HOSTIF_CMDRSP_PARAMS_SKRPTM {
1068     u8      mode;
1069 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_SKRPTM;
1070 
1071 typedef struct _HOSTIF_CMDRSP_PARAMS_SKSRCIP {
1072     u8      ipvalue[4];
1073 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_SKSRCIP;
1074 
1075 typedef struct _HOSTIF_CMDRSP_PARAMS_SKGHBN {
1076     u8  h_addr_list[4];
1077 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_SKGHBN;
1078 
1079 typedef struct _HOSTIF_CMDRSP_PARAMS_CHANNEL_LIST {
1080     u16  channellist;
1081 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_CHANNEL_LIST;
1082 
1083 typedef struct _HOSTIF_CMDRSP_PARAMS_WARC {
1084     u8  autoretrycnt;
1085 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_WARC;
1086 
1087 typedef struct _HOSTIF_CMDRSP_PARAMS_CNTPARAM_BSSID_DIS {
1088     u8      bssid_enable;
1089     u8      ssid_len;
1090     u8      key_len;
1091     u8      ssid_key[1];
1092 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_CNTPARAM_BSSID_DIS;
1093 
1094 typedef struct _HOSTIF_CMDRSP_PARAMS_CNTPARAM_BSSID_EN {
1095     u8      bssid_enable;
1096     u8      bssid[6];
1097     u8      key_len;
1098     u8      key[64];
1099 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_CNTPARAM_BSSID_EN;
1100 
1101 typedef struct _HOSTIF_CMDRSP_PARAMS_ATPT {
1102     u16  period;
1103 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_ATPT;
1104 
1105 typedef struct _HOSTIF_CMDRSP_PARAMS_ESPC {
1106     u8  escapechar;
1107 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_ESPC;
1108 
1109 typedef struct _HOSTIF_CMDRSP_PARAMS_ESPT {
1110     u16  escapeperiod;
1111 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_ESPT;
1112 
1113 typedef struct _HOSTIF_CMDRSP_PARAMS_WEBS {
1114     u8  autorun;
1115     u16 portnum;
1116 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_WEBS;
1117 
1118 typedef struct _HOSTIF_CMDRSP_PARAMS_IOM {
1119     u8  mode;
1120 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_IOM;
1121 
1122 typedef struct _HOSTIF_CMDRSP_PARAMS_CMDM {
1123     u8  mode;
1124 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_CMDM;
1125 
1126 typedef struct _HOSTIF_CMDRSP_PARAMS_PASS {
1127     u8  length;
1128     u8  password[1];
1129 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_PASS;
1130 
1131 typedef struct _HOSTIF_CMDRSP_PARAMS_ONESHOT {
1132     u8  status;
1133 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_ONESHOT;
1134 
1135 typedef struct _HOSTIF_CMDRSP_PARAMS_HTTPC {
1136     u32  psession;
1137 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_HTTPC;
1138 
1139 typedef struct _HOSTIF_CMDRSP_PARAMS_TXG {
1140     u8      tx_gain[TX_GAIN_LEN];
1141 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_TXG;
1142  typedef struct _HOSTIF_CMDRSP_PARAMS_TXGR {
1143     u8      tx_rate;
1144     u8      txr_gain[3];
1145 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_TXGR;
1146 
1147 typedef struct _HOSTIF_CMDRSP_PARAMS_SPIF {
1148     u8      mode;
1149     u8      len;
1150     u8      data[1];
1151 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_SPIF;
1152 
1153 typedef struct _HOSTIF_CMDRSP_PARAMS_LPCHL {
1154     u8      channel;
1155 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_LPCHL;
1156 
1157 typedef struct _HOSTIF_CMDRSP_PARAMS_CUSTDATA {
1158     u8      length;
1159     u8      data[65];
1160 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_CUSTDATA;
1161 
1162 #if TLS_CONFIG_AP
1163 typedef struct _HOSTIF_CMDRSP_PARAMS_STALIST {
1164     u8      sta_num;
1165     u8      data[320];
1166 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_STALIST;
1167 #endif
1168 
1169 typedef  struct _HOSTIF_CMDRSP_PARAMS_TXLO {
1170     u32 txlo;
1171 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_TXLO;
1172 
1173 typedef struct _HOSTIF_CMDRSP_PARAMS_TXIQ {
1174     u32 txiqgain;
1175     u32 txiqphase;
1176 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_TXIQ;
1177 
1178 typedef  struct _HOSTIF_CMDRSP_PARAMS_FREQERR {
1179     int freqerr;
1180 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_FREQERR;
1181 
1182 typedef  struct _HOSTIF_CMDRSP_PARAMS_VCGCTRL {
1183     int vcg;
1184 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_VCGCTRL;
1185 
1186 typedef struct _HOSTIF_CMDRSP_PARAMS_PING {
1187     u32      ext;
1188     u32      ttl;
1189 }__attribute__((packed))HOSTIF_CMDRSP_PARAMS_PING;
1190 
1191 union HOSTIF_CMDRSP_PARAMS_UNION {
1192     HOSTIF_CMDRSP_PARAMS_MAC mac;
1193     HOSTIF_CMDRSP_PARAMS_VER ver;
1194     HOSTIF_CMDRSP_PARAMS_JOIN join;
1195     HOSTIF_CMDRSP_PARAMS_LKSTT lkstt;
1196     HOSTIF_CMDRSP_PARAMS_SKCT skct;
1197     HOSTIF_CMDRSP_PARAMS_SKSTT skstt;
1198     HOSTIF_CMDRSP_PARAMS_WPRT wprt;
1199     HOSTIF_CMDRSP_PARAMS_SSID ssid;
1200     HOSTIF_CMDRSP_PARAMS_KEY key;
1201     HOSTIF_CMDRSP_PARAMS_ENCRYPT encrypt;
1202     HOSTIF_CMDRSP_PARAMS_BSSID bssid;
1203     HOSTIF_CMDRSP_PARAMS_BRD_SSID brd_ssid;
1204     HOSTIF_CMDRSP_PARAMS_CHNL channel;
1205     HOSTIF_CMDRSP_PARAMS_WREG wreg;
1206     HOSTIF_CMDRSP_PARAMS_WBGR wbgr;
1207     HOSTIF_CMDRSP_PARAMS_WATC watc;
1208     HOSTIF_CMDRSP_PARAMS_WPSM wpsm;
1209     HOSTIF_CMDRSP_PARAMS_WARM warm;
1210     HOSTIF_CMDRSP_PARAMS_WPS wps;
1211     HOSTIF_CMDRSP_PARAMS_BT bt;
1212     HOSTIF_CMDRSP_PARAMS_BLEPOW blepow;
1213     HOSTIF_CMDRSP_PARAMS_BLEPRM bleprm;
1214     HOSTIF_CMDRSP_PARAMS_BLECONN bleconn;
1215     HOSTIF_CMDRSP_PARAMS_BLEGATT blegatt;
1216     HOSTIF_CMD_PARAMS_BTNAME btname;
1217     HOSTIF_CMDRSP_PARAMS_NIP nip;
1218     HOSTIF_CMDRSP_PARAMS_ATM atm;
1219     HOSTIF_CMDRSP_PARAMS_ATRM atrm;
1220     HOSTIF_CMDRSP_PARAMS_AOLM aolm;
1221     HOSTIF_CMDRSP_PARAMS_PORTM portm;
1222     HOSTIF_CMDRSP_PARAMS_UART uart;
1223     HOSTIF_CMDRSP_PARAMS_ATLT atlt;
1224     HOSTIF_CMDRSP_PARAMS_DNS dns;
1225     HOSTIF_CMDRSP_PARAMS_DDNS ddns;
1226     HOSTIF_CMDRSP_PARAMS_UPNP upnp;
1227     HOSTIF_CMDRSP_PARAMS_DNAME dname;
1228     HOSTIF_CMDRSP_PARAMS_DBG dbg;
1229     HOSTIF_CMDRSP_PARAMS_REGR regr;
1230     HOSTIF_CMDRSP_PARAMS_RFR rfr;
1231     HOSTIF_CMDRSP_PARAMS_FLSR flsr;
1232     HOSTIF_CMDRSP_PARAMS_UPDM updm;
1233     HOSTIF_CMDRSP_PARAMS_SKSND sksnd;
1234     HOSTIF_CMDRSP_PARAMS_SKRCV skrcv;
1235     HOSTIF_CMDRSP_PARAMS_SKRPTM skrptm;
1236     HOSTIF_CMDRSP_PARAMS_SKSRCIP sksrcip;
1237     HOSTIF_CMDRSP_PARAMS_SKGHBN skghbn;
1238     HOSTIF_CMDRSP_PARAMS_CHANNEL_LIST channel_list;
1239     HOSTIF_CMDRSP_PARAMS_WARC warc;
1240     HOSTIF_CMDRSP_PARAMS_CNTPARAM_BSSID_DIS cntparam_bssid_dis;
1241     HOSTIF_CMDRSP_PARAMS_CNTPARAM_BSSID_EN cntparam_bssid_en;
1242     HOSTIF_CMDRSP_PARAMS_ATPT atpt;
1243     HOSTIF_CMDRSP_PARAMS_ESPC espc;
1244     HOSTIF_CMDRSP_PARAMS_ESPT espt;
1245     HOSTIF_CMDRSP_PARAMS_WEBS webs;
1246     HOSTIF_CMDRSP_PARAMS_IOM iom;
1247     HOSTIF_CMDRSP_PARAMS_CMDM cmdm;
1248     HOSTIF_CMDRSP_PARAMS_PASS pass;
1249     HOSTIF_CMDRSP_PARAMS_ONESHOT oneshot;
1250     HOSTIF_CMDRSP_PARAMS_HTTPC httpc;
1251     HOSTIF_CMDRSP_PARAMS_TEM tem;
1252     HOSTIF_CMDRSP_PARAMS_TXG txg;
1253     HOSTIF_CMDRSP_PARAMS_TXGR txgr;
1254     HOSTIF_CMDRSP_PARAMS_SPIF spif;
1255     HOSTIF_CMDRSP_PARAMS_LPCHL lpchl;
1256     HOSTIF_CMDRSP_PARAMS_CUSTDATA custdata;
1257 
1258 #if TLS_CONFIG_AP
1259     HOSTIF_CMDRSP_PARAMS_STALIST stalist;
1260 #endif
1261     HOSTIF_CMDRSP_PARAMS_TXLO  txLO;
1262     HOSTIF_CMDRSP_PARAMS_TXIQ  txIQ;
1263     HOSTIF_CMDRSP_PARAMS_FREQERR FreqErr;
1264     HOSTIF_CMDRSP_PARAMS_VCGCTRL vcgCtrl;
1265     HOSTIF_CMDRSP_PARAMS_PING ping;
1266 };
1267 
1268 struct tls_hostif_cmdrsp {
1269     struct tls_hostif_hdr hdr;
1270     struct tls_hostif_cmd_hdr cmd_hdr;
1271     /* command body */
1272     union HOSTIF_CMDRSP_PARAMS_UNION params;
1273 };
1274 
1275 typedef struct _HOSTIF_EVENT_PARAMS_SCAN_RES {
1276     u8 num;
1277     u8 data[1];
1278 }__attribute__((packed))HOSTIF_EVENT_PARAMS_SCAN_RES;
1279 
1280 typedef struct _HOSTIF_EVENT_PARAMS_JOIN_RES {
1281     u8 res;
1282     u8 bssid[6];
1283     u8 type;
1284     u8 channel;
1285     u8 energy;
1286     u8 ssid_len;
1287     u8 ssid[1];
1288 }__attribute__((packed))HOSTIF_EVENT_PARAMS_JOIN_RES;
1289 
1290 typedef struct _HOSTIF_EVENT_PARAMS_TCP_CONN {
1291     u8 socket;
1292     u8 res;
1293 }__attribute__((packed))HOSTIF_EVENT_PARAMS_TCP_CONN;
1294 
1295 typedef struct _HOSTIF_EVENT_PARAMS_TCP_JOIN {
1296     u8 socket;
1297 }__attribute__((packed))HOSTIF_EVENT_PARAMS_TCP_JOIN;
1298 
1299 typedef struct _HOSTIF_EVENT_PARAMS_TCP_DIS {
1300     u8 socket;
1301 }__attribute__((packed))HOSTIF_EVENT_PARAMS_TCP_DIS;
1302 
1303 struct tls_hostif_event {
1304     struct tls_hostif_hdr hdr;
1305     struct tls_hostif_cmd_hdr cmd_hdr;
1306     /* event body */
1307     union {
1308         HOSTIF_EVENT_PARAMS_SCAN_RES scan_res;
1309         HOSTIF_EVENT_PARAMS_JOIN_RES join_res;
1310         HOSTIF_EVENT_PARAMS_TCP_CONN tcp_conn;
1311         HOSTIF_EVENT_PARAMS_TCP_JOIN tcp_join;
1312         HOSTIF_EVENT_PARAMS_TCP_DIS tcp_dis;
1313     } params;
1314 };
1315 
1316 struct tls_hostif_data {
1317     struct tls_hostif_hdr hdr;
1318     struct tls_hostif_cmd_hdr cmd_hdr;
1319     u8 data[0];
1320 };
1321 
1322 struct tls_hostif_extaddr {
1323     u32    ip_addr;
1324     u16    remote_port;
1325     u16    local_port;
1326 };
1327 
1328 struct tls_hostif_tx_msg {
1329     struct dl_list list;
1330     /* message type: HOSTIF_TX_MSG_XXX */
1331     u8 type;
1332     u32 time;
1333     u16 offset;
1334     union {
1335         struct msg_event_info {
1336             char  *buf;
1337             u16 buflen;
1338         } msg_event;
1339         struct msg_cmdrsp_info {
1340             char *buf;
1341             u16 buflen;
1342         } msg_cmdrsp;
1343         struct msg_tcp_info {
1344             void *p;
1345             u8 sock;
1346         } msg_tcp;
1347         struct msg_udp_info {
1348             void *p;
1349             u8 sock;
1350             u16 port;
1351             u16 localport;
1352             ip_addr_t ip_addr;
1353         } msg_udp;
1354     } u;
1355 };
1356 
1357 #define HOSTIF_TX_MSG_TYPE_EVENT       0
1358 #define HOSTIF_TX_MSG_TYPE_CMDRSP      1
1359 #define HOSTIF_TX_MSG_TYPE_UDP         2
1360 #define HOSTIF_TX_MSG_TYPE_TCP         3
1361 
1362 #define TLS_SOCKET_RECV_BUF_SIZE   512
1363 
1364 #define ATCMD_MAX_ARG      10
1365 #define ATCMD_NAME_MAX_LEN 10
1366 
1367 struct tls_atcmd_token_t {
1368     char   name[ATCMD_NAME_MAX_LEN];
1369     u32   op;
1370     char  *arg[ATCMD_MAX_ARG];
1371     u32   arg_found;
1372     enum  tls_cmd_mode cmd_mode;
1373 };
1374 
1375 struct tls_cmd_t {
1376     char   *at_name;
1377     s16 ri_cmd_id;
1378     u8  op_flag;
1379     u8  at_arg_len;
1380     u16 ri_set_len;
1381     int (*proc_func)(u8 set_opt, u8 update_flash,
1382                      union HOSTIF_CMD_PARAMS_UNION *cmd, union HOSTIF_CMDRSP_PARAMS_UNION *cmdrsp);
1383 };
1384 
1385 typedef void  (*hostif_send_tx_msg_callback)(u8 hostif_mode, struct tls_hostif_tx_msg *tx_msg, bool is_event);
1386 
1387 #define UART_ATCMD_BIT_WSCAN     (0)
1388 #define UART_ATCMD_BIT_WJOIN     (1)
1389 #define UART_ATCMD_BIT_SKCT      (2)
1390 #define UART_ATCMD_BIT_BT        (3)
1391 #define UART_ATCMD_BIT_ACTIVE_BT (4)
1392 #define UART_ATCMD_BIT_ACTIVE_BT_DM (5)
1393 #define UART_ATCMD_BIT_ACTIVE_BT_DM_EXT (6)
1394 
1395 struct tls_hostif {
1396     tls_os_timer_t      *tx_timer;
1397     hostif_send_tx_msg_callback hspi_send_tx_msg_callback;
1398     hostif_send_tx_msg_callback uart_send_tx_msg_callback;
1399     tls_os_sem_t        *uart_atcmd_sem;
1400     u16                 uart_atcmd_bits;
1401     u8 last_scan;
1402     enum tls_cmd_mode last_scan_cmd_mode;
1403     u8 last_join;
1404     enum tls_cmd_mode last_join_cmd_mode;
1405     enum tls_cmd_mode last_bt_cmd_mode;
1406     /*  indicate use which port: SYS_HOSTIF_XXX */
1407     u8 hostif_mode;
1408     u32 uart_atlt;
1409     u32 uart_atpt;
1410     /* uart at cmd loopback control */
1411     u8 uart_insdisp;
1412     u8 reserved[3];
1413     /* uart escape */
1414     u8  escape_char;
1415     u8  escape_reserved;
1416     u16 escape_pt;
1417     u8 hspi_tx_seq;
1418     u8 rptmode; /* 0:host inquire, 1:auto report */
1419     u8 reserved1[2];
1420 #if TLS_CONFIG_RMMS
1421     u8 rmms_status;
1422     u8 rmms_addr[6];
1423     u8 reserved2;
1424 #endif
1425 };
1426 
1427 struct rmms_msg {
1428     u8   SrcAddr[6];
1429     u8   CmdStr[512];
1430 };
1431 
1432 struct tls_hostif *tls_get_hostif(void);
1433 struct tls_hostif_tx_msg *tls_hostif_get_tx_msg(void);
1434 int tls_hostif_process_cmdrsp(u8 hostif_type, char *cmdrsp, u32 cmdrsp_size);
1435 void tls_hostif_fill_hdr(struct tls_hostif *hif,
1436     struct tls_hostif_hdr *hdr, u8 type, u16 length, u8 flag, u8 dest_addr, u8 chk);
1437 
1438 void tls_hostif_fill_cmdrsp_hdr(struct tls_hostif_cmdrsp *cmdrsp,
1439     u8 code, u8 err, u8 ext);
1440 int tls_hostif_hdr_check(u8 *buf, u32 length);
1441 int tls_hostif_cmd_handler(u8 cmd_type, char *buf, u32 length);
1442 int tls_hostif_send_event_init_cmplt(void);
1443 int tls_hostif_send_event_scan_cmplt(struct tls_scan_bss_t *scan_res,
1444     enum tls_cmd_mode cmd_mode);
1445 
1446 int tls_hostif_send_event_linkdown(void);
1447 int tls_hostif_send_event_sta_join(void);
1448 int tls_hostif_send_event_sta_leave(void);
1449 int tls_hostif_send_event_crc_err(void);
1450 int tls_hostif_send_event_tcp_conn(u8 socket, u8 res);
1451 int tls_hostif_send_event_tcp_join(u8 socket);
1452 int tls_hostif_send_event_tcp_dis(u8 socket);
1453 int tls_hostif_send_event_wjoin_success(void);
1454 int tls_hostif_send_event_wjoin_failed(void);
1455 
1456 int tls_hostif_init(void);
1457 int tls_hostif_recv_data(struct tls_hostif_tx_msg *tx_msg);
1458 int tls_hostif_set_net_status_callback(void);
1459 int tls_hostif_send_data(struct tls_hostif_socket_info *skt_info, char *buf, u32 buflen);
1460 int tls_hostif_create_default_socket(void);
1461 int tls_hostif_close_default_socket(void);
1462 struct tls_uart_circ_buf *tls_hostif_get_recvmit(int socket_num);
1463 int tls_cmd_create_socket(struct tls_cmd_socket_t *skt,
1464     enum tls_cmd_mode cmd_mode);
1465 int tls_cmd_close_socket(u8 skt_num);
1466 int tls_cmd_get_socket_status(u8 socket, u8 *buf, u32 bufsize);
1467 int tls_cmd_get_socket_state(u8 socket, u8 *state, struct tls_skt_status_ext_t *skt_ext);
1468 int tls_cmd_set_default_socket(u8 socket);
1469 u8 tls_cmd_get_default_socket(void);
1470 #if TLS_CONFIG_HTTP_CLIENT_TASK
1471 void tls_hostif_http_client_recv_callback(HTTP_SESSION_HANDLE session, CHAR *data, u32 total_len, u32 data_len);
1472 void tls_hostif_http_client_err_callback(HTTP_SESSION_HANDLE session, int err);
1473 #endif
1474 int atcmd_err_resp(char *buf, int err_code);
1475 int atcmd_ok_resp(char *buf);
1476 int atcmd_nop_proc(struct tls_atcmd_token_t *tok, char *res_resp, u32 *res_len);
1477 
1478 int tls_atcmd_parse(struct tls_atcmd_token_t *tok, char *buf, u32 len);
1479 int tls_hostif_atcmd_exec(struct tls_atcmd_token_t *tok,
1480     char *res_rsp, u32 *res_len);
1481 int atcmd_filter_quotation(u8 **keyInfo, u8 *inbuf);
1482 int tls_hostif_ricmd_exec(char *buf, u32 length, char *cmdrsp_buf, u32 *cmdrsp_size);
1483 void free_tx_msg_buffer(struct tls_hostif_tx_msg *tx_msg);
1484 
1485 #if TLS_CONFIG_RMMS
1486 /***************************************************************************
1487 * Function: tls_rmms_start
1488 * Description: Start remote manager server.
1489 *
1490 * Input:  None
1491 *
1492 * Output: None
1493 *
1494 * Return: The rmms error code:
1495 *             RMMS_ERR_SUCCESS - No error
1496 *             RMMS_ERR_MEM - Out of memory
1497 *             RMMS_ERR_LINKDOWN - The NIF is inactive
1498 *
1499 * Date : 2015-7-20
1500 ****************************************************************************/
1501 s8 tls_rmms_start(void);
1502 
1503 /***************************************************************************
1504 * Function: tls_rmms_stop
1505 * Description: Disable remote manager server.
1506 *
1507 * Input:  None
1508 *
1509 * Output: None
1510 *
1511 * Return: None
1512 *
1513 * Date : 2015-7-20
1514 ****************************************************************************/
1515 void tls_rmms_stop(void);
1516 #endif
1517 
1518 void hostif_wscan_cmplt(void);
1519 #endif    /* end of TLS_CMDP_HOSTIF_H */
1520 
1521