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