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