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