DeepCover Embedded Security in IoT: Public-key Secured Data Paths
Dependencies: MaximInterface
The MAXREFDES155# is an internet-of-things (IoT) embedded-security reference design, built to authenticate and control a sensing node using elliptic-curve-based public-key cryptography with control and notification from a web server.
The hardware includes an ARM® mbed™ shield and attached sensor endpoint. The shield contains a DS2476 DeepCover® ECDSA/SHA-2 coprocessor, Wifi communication, LCD push-button controls, and status LEDs. The sensor endpoint is attached to the shield using a 300mm cable and contains a DS28C36 DeepCover ECDSA/SHA-2 authenticator, IR-thermal sensor, and aiming laser for the IR sensor. The MAXREFDES155# is equipped with a standard Arduino® form-factor shield connector for immediate testing using an mbed board such as the MAX32600MBED#. The combination of these two devices represent an IoT device. Communication to the web server is accomplished with the shield Wifi circuitry. Communication from the shield to the attached sensor module is accomplished over I2C . The sensor module represents an IoT endpoint that generates small data with a requirement for message authenticity/integrity and secure on/off operational control.
The design is hierarchical with each mbed platform and shield communicating data from the sensor node to a web server that maintains a centralized log and dispatches notifications as necessary. The simplicity of this design enables rapid integration into any star-topology IoT network to provide security with the low overhead and cost provided by the ECDSA-P256 asymmetric-key and SHA-256 symmetric-key algorithms.
More information about the MAXREFDES155# is available on the Maxim Integrated website.
xternal/simplelink/source/protocol.h
- Committer:
- IanBenzMaxim
- Date:
- 2019-12-03
- Revision:
- 18:c2631e985780
- Parent:
- 16:a004191a79ab
File content as of revision 18:c2631e985780:
/* * protocol.h - CC31xx/CC32xx Host Driver Implementation * * Copyright (C) 2015 Texas Instruments Incorporated - http://www.ti.com/ * * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the * distribution. * * Neither the name of Texas Instruments Incorporated nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ /*******************************************************************************\ * * FILE NAME: protocol.h * * DESCRIPTION: Constant and data structure definitions and function * prototypes for the SL protocol module, which implements * processing of SimpleLink Commands. * * AUTHOR: * \*******************************************************************************/ #ifndef _SL_PROTOCOL_TYPES_H_ #define _SL_PROTOCOL_TYPES_H_ /**************************************************************************** ** ** User I/F pools definitions ** ****************************************************************************/ /**************************************************************************** ** ** Definitions for SimpleLink Commands ** ****************************************************************************/ /* pattern for LE 8/16/32 or BE*/ #define H2N_SYNC_PATTERN {0xBBDDEEFF,0x4321,0x34,0x12} #define H2N_CNYS_PATTERN {0xBBDDEEFF,0x8765,0x78,0x56} #define H2N_DUMMY_PATTERN (_u32)0xFFFFFFFF #define N2H_SYNC_PATTERN (_u32)0xABCDDCBA #define SYNC_PATTERN_LEN (_u32)sizeof(_u32) #define UART_SET_MODE_MAGIC_CODE (_u32)0xAA55AA55 #define SPI_16BITS_BUG(pattern) (_u32)((_u32)pattern & (_u32)0xFFFF7FFF) #define SPI_8BITS_BUG(pattern) (_u32)((_u32)pattern & (_u32)0xFFFFFF7F) typedef struct { _u16 Opcode; _u16 Len; }_SlGenericHeader_t; typedef struct { _u32 Long; _u16 Short; _u8 Byte1; _u8 Byte2; }_SlSyncPattern_t; typedef _SlGenericHeader_t _SlCommandHeader_t; typedef struct { _SlGenericHeader_t GenHeader; _u8 TxPoolCnt; _u8 DevStatus; _u8 SocketTXFailure; _u8 SocketNonBlocking; }_SlResponseHeader_t; #define _SL_RESP_SPEC_HDR_SIZE (sizeof(_SlResponseHeader_t) - sizeof(_SlGenericHeader_t)) #define _SL_RESP_HDR_SIZE sizeof(_SlResponseHeader_t) #define _SL_CMD_HDR_SIZE sizeof(_SlCommandHeader_t) #define _SL_RESP_ARGS_START(_pMsg) (((_SlResponseHeader_t *)(_pMsg)) + 1) /* Used only in NWP! */ typedef struct { _SlCommandHeader_t sl_hdr; _u8 func_args_start; } T_SCMD; #define WLAN_CONN_STATUS_BIT 0x01 #define EVENTS_Q_STATUS_BIT 0x02 #define PENDING_RCV_CMD_BIT 0x04 #define FW_BUSY_PACKETS_BIT 0x08 #define INIT_STA_OK 0x11111111 #define INIT_STA_ERR 0x22222222 #define INIT_AP_OK 0x33333333 #define INIT_AP_ERR 0x44444444 #define INIT_P2P_OK 0x55555555 #define INIT_P2P_ERR 0x66666666 /**************************************************************************** ** OPCODES ****************************************************************************/ #define SL_IPV4_IPV6_OFFSET ( 9 ) #define SL_OPCODE_IPV4 ( 0x0 << SL_IPV4_IPV6_OFFSET ) #define SL_OPCODE_IPV6 ( 0x1 << SL_IPV4_IPV6_OFFSET ) #define SL_SYNC_ASYNC_OFFSET ( 10 ) #define SL_OPCODE_SYNC (0x1 << SL_SYNC_ASYNC_OFFSET ) #define SL_OPCODE_SILO_OFFSET ( 11 ) #define SL_OPCODE_SILO_MASK ( 0xF << SL_OPCODE_SILO_OFFSET ) #define SL_OPCODE_SILO_DEVICE ( 0x0 << SL_OPCODE_SILO_OFFSET ) #define SL_OPCODE_SILO_WLAN ( 0x1 << SL_OPCODE_SILO_OFFSET ) #define SL_OPCODE_SILO_SOCKET ( 0x2 << SL_OPCODE_SILO_OFFSET ) #define SL_OPCODE_SILO_NETAPP ( 0x3 << SL_OPCODE_SILO_OFFSET ) #define SL_OPCODE_SILO_NVMEM ( 0x4 << SL_OPCODE_SILO_OFFSET ) #define SL_OPCODE_SILO_NETCFG ( 0x5 << SL_OPCODE_SILO_OFFSET ) #define SL_FAMILY_SHIFT (0x4) #define SL_FLAGS_MASK (0xF) #define SL_OPCODE_DEVICE_INITCOMPLETE 0x0008 #define SL_OPCODE_DEVICE_ABORT 0x000C #define SL_OPCODE_DEVICE_STOP_COMMAND 0x8473 #define SL_OPCODE_DEVICE_STOP_RESPONSE 0x0473 #define SL_OPCODE_DEVICE_STOP_ASYNC_RESPONSE 0x0073 #define SL_OPCODE_DEVICE_DEVICEASYNCDUMMY 0x0063 #define SL_OPCODE_DEVICE_VERSIONREADCOMMAND 0x8470 #define SL_OPCODE_DEVICE_VERSIONREADRESPONSE 0x0470 #define SL_OPCODE_DEVICE_ASYNC_GENERAL_ERROR 0x0078 #define SL_OPCODE_WLAN_WLANCONNECTCOMMAND 0x8C80 #define SL_OPCODE_WLAN_WLANCONNECTRESPONSE 0x0C80 #define SL_OPCODE_WLAN_WLANASYNCCONNECTEDRESPONSE 0x0880 #define SL_OPCODE_WLAN_P2P_DEV_FOUND 0x0830 #define SL_OPCODE_WLAN_CONNECTION_FAILED 0x0831 #define SL_OPCODE_WLAN_P2P_NEG_REQ_RECEIVED 0x0832 #define SL_OPCODE_WLAN_WLANDISCONNECTCOMMAND 0x8C81 #define SL_OPCODE_WLAN_WLANDISCONNECTRESPONSE 0x0C81 #define SL_OPCODE_WLAN_WLANASYNCDISCONNECTEDRESPONSE 0x0881 #define SL_OPCODE_WLAN_WLANCONNECTEAPCOMMAND 0x8C82 #define SL_OPCODE_WLAN_WLANCONNECTEAPCRESPONSE 0x0C82 #define SL_OPCODE_WLAN_PROFILEADDCOMMAND 0x8C83 #define SL_OPCODE_WLAN_PROFILEADDRESPONSE 0x0C83 #define SL_OPCODE_WLAN_PROFILEGETCOMMAND 0x8C84 #define SL_OPCODE_WLAN_PROFILEGETRESPONSE 0x0C84 #define SL_OPCODE_WLAN_PROFILEDELCOMMAND 0x8C85 #define SL_OPCODE_WLAN_PROFILEDELRESPONSE 0x0C85 #define SL_OPCODE_WLAN_POLICYSETCOMMAND 0x8C86 #define SL_OPCODE_WLAN_POLICYSETRESPONSE 0x0C86 #define SL_OPCODE_WLAN_POLICYGETCOMMAND 0x8C87 #define SL_OPCODE_WLAN_POLICYGETRESPONSE 0x0C87 #define SL_OPCODE_WLAN_FILTERADD 0x8C88 #define SL_OPCODE_WLAN_FILTERADDRESPONSE 0x0C88 #define SL_OPCODE_WLAN_FILTERGET 0x8C89 #define SL_OPCODE_WLAN_FILTERGETRESPONSE 0x0C89 #define SL_OPCODE_WLAN_FILTERDELETE 0x8C8A #define SL_OPCODE_WLAN_FILTERDELETERESPOSNE 0x0C8A #define SL_OPCODE_WLAN_WLANGETSTATUSCOMMAND 0x8C8F #define SL_OPCODE_WLAN_WLANGETSTATUSRESPONSE 0x0C8F #define SL_OPCODE_WLAN_STARTTXCONTINUESCOMMAND 0x8CAA #define SL_OPCODE_WLAN_STARTTXCONTINUESRESPONSE 0x0CAA #define SL_OPCODE_WLAN_STOPTXCONTINUESCOMMAND 0x8CAB #define SL_OPCODE_WLAN_STOPTXCONTINUESRESPONSE 0x0CAB #define SL_OPCODE_WLAN_STARTRXSTATCOMMAND 0x8CAC #define SL_OPCODE_WLAN_STARTRXSTATRESPONSE 0x0CAC #define SL_OPCODE_WLAN_STOPRXSTATCOMMAND 0x8CAD #define SL_OPCODE_WLAN_STOPRXSTATRESPONSE 0x0CAD #define SL_OPCODE_WLAN_GETRXSTATCOMMAND 0x8CAF #define SL_OPCODE_WLAN_GETRXSTATRESPONSE 0x0CAF #define SL_OPCODE_WLAN_POLICYSETCOMMANDNEW 0x8CB0 #define SL_OPCODE_WLAN_POLICYSETRESPONSENEW 0x0CB0 #define SL_OPCODE_WLAN_POLICYGETCOMMANDNEW 0x8CB1 #define SL_OPCODE_WLAN_POLICYGETRESPONSENEW 0x0CB1 #define SL_OPCODE_WLAN_SMART_CONFIG_START_COMMAND 0x8CB2 #define SL_OPCODE_WLAN_SMART_CONFIG_START_RESPONSE 0x0CB2 #define SL_OPCODE_WLAN_SMART_CONFIG_START_ASYNC_RESPONSE 0x08B2 #define SL_OPCODE_WLAN_SMART_CONFIG_STOP_COMMAND 0x8CB3 #define SL_OPCODE_WLAN_SMART_CONFIG_STOP_RESPONSE 0x0CB3 #define SL_OPCODE_WLAN_SMART_CONFIG_STOP_ASYNC_RESPONSE 0x08B3 #define SL_OPCODE_WLAN_SET_MODE 0x8CB4 #define SL_OPCODE_WLAN_SET_MODE_RESPONSE 0x0CB4 #define SL_OPCODE_WLAN_CFG_SET 0x8CB5 #define SL_OPCODE_WLAN_CFG_SET_RESPONSE 0x0CB5 #define SL_OPCODE_WLAN_CFG_GET 0x8CB6 #define SL_OPCODE_WLAN_CFG_GET_RESPONSE 0x0CB6 #define SL_OPCODE_WLAN_STA_CONNECTED 0x082E #define SL_OPCODE_WLAN_STA_DISCONNECTED 0x082F #define SL_OPCODE_WLAN_EAP_PROFILEADDCOMMAND 0x8C67 #define SL_OPCODE_WLAN_EAP_PROFILEADDCOMMAND_RESPONSE 0x0C67 #define SL_OPCODE_SOCKET_SOCKET 0x9401 #define SL_OPCODE_SOCKET_SOCKETRESPONSE 0x1401 #define SL_OPCODE_SOCKET_CLOSE 0x9402 #define SL_OPCODE_SOCKET_CLOSERESPONSE 0x1402 #define SL_OPCODE_SOCKET_ACCEPT 0x9403 #define SL_OPCODE_SOCKET_ACCEPTRESPONSE 0x1403 #define SL_OPCODE_SOCKET_ACCEPTASYNCRESPONSE 0x1003 #define SL_OPCODE_SOCKET_ACCEPTASYNCRESPONSE_V6 0x1203 #define SL_OPCODE_SOCKET_BIND 0x9404 #define SL_OPCODE_SOCKET_BIND_V6 0x9604 #define SL_OPCODE_SOCKET_BINDRESPONSE 0x1404 #define SL_OPCODE_SOCKET_LISTEN 0x9405 #define SL_OPCODE_SOCKET_LISTENRESPONSE 0x1405 #define SL_OPCODE_SOCKET_CONNECT 0x9406 #define SL_OPCODE_SOCKET_CONNECT_V6 0x9606 #define SL_OPCODE_SOCKET_CONNECTRESPONSE 0x1406 #define SL_OPCODE_SOCKET_CONNECTASYNCRESPONSE 0x1006 #define SL_OPCODE_SOCKET_SELECT 0x9407 #define SL_OPCODE_SOCKET_SELECTRESPONSE 0x1407 #define SL_OPCODE_SOCKET_SELECTASYNCRESPONSE 0x1007 #define SL_OPCODE_SOCKET_SETSOCKOPT 0x9408 #define SL_OPCODE_SOCKET_SETSOCKOPTRESPONSE 0x1408 #define SL_OPCODE_SOCKET_GETSOCKOPT 0x9409 #define SL_OPCODE_SOCKET_GETSOCKOPTRESPONSE 0x1409 #define SL_OPCODE_SOCKET_RECV 0x940A #define SL_OPCODE_SOCKET_RECVASYNCRESPONSE 0x100A #define SL_OPCODE_SOCKET_RECVFROM 0x940B #define SL_OPCODE_SOCKET_RECVFROMASYNCRESPONSE 0x100B #define SL_OPCODE_SOCKET_RECVFROMASYNCRESPONSE_V6 0x120B #define SL_OPCODE_SOCKET_SEND 0x940C #define SL_OPCODE_SOCKET_SENDTO 0x940D #define SL_OPCODE_SOCKET_SENDTO_V6 0x960D #define SL_OPCODE_SOCKET_TXFAILEDASYNCRESPONSE 0x100E #define SL_OPCODE_SOCKET_SOCKETASYNCEVENT 0x100F #define SL_OPCODE_NETAPP_START_COMMAND 0x9C0A #define SL_OPCODE_NETAPP_START_RESPONSE 0x1C0A #define SL_OPCODE_NETAPP_NETAPPSTARTRESPONSE 0x1C0A #define SL_OPCODE_NETAPP_STOP_COMMAND 0x9C61 #define SL_OPCODE_NETAPP_STOP_RESPONSE 0x1C61 #define SL_OPCODE_NETAPP_NETAPPSET 0x9C0B #define SL_OPCODE_NETAPP_NETAPPSETRESPONSE 0x1C0B #define SL_OPCODE_NETAPP_NETAPPGET 0x9C27 #define SL_OPCODE_NETAPP_NETAPPGETRESPONSE 0x1C27 #define SL_OPCODE_NETAPP_DNSGETHOSTBYNAME 0x9C20 #define SL_OPCODE_NETAPP_DNSGETHOSTBYNAMERESPONSE 0x1C20 #define SL_OPCODE_NETAPP_DNSGETHOSTBYNAMEASYNCRESPONSE 0x1820 #define SL_OPCODE_NETAPP_DNSGETHOSTBYNAMEASYNCRESPONSE_V6 0x1A20 #define SL_OPCODE_NETAPP_NETAPP_MDNS_LOOKUP_SERVICE 0x9C71 #define SL_OPCODE_NETAPP_NETAPP_MDNS_LOOKUP_SERVICE_RESPONSE 0x1C72 #define SL_OPCODE_NETAPP_MDNSREGISTERSERVICE 0x9C34 #define SL_OPCODE_NETAPP_MDNSREGISTERSERVICERESPONSE 0x1C34 #define SL_OPCODE_NETAPP_MDNSGETHOSTBYSERVICE 0x9C35 #define SL_OPCODE_NETAPP_MDNSGETHOSTBYSERVICERESPONSE 0x1C35 #define SL_OPCODE_NETAPP_MDNSGETHOSTBYSERVICEASYNCRESPONSE 0x1835 #define SL_OPCODE_NETAPP_MDNSGETHOSTBYSERVICEASYNCRESPONSE_V6 0x1A35 #define SL_OPCODE_NETAPP_DNSGETHOSTBYADDR 0x9C26 #define SL_OPCODE_NETAPP_DNSGETHOSTBYADDR_V6 0x9E26 #define SL_OPCODE_NETAPP_DNSGETHOSTBYADDRRESPONSE 0x1C26 #define SL_OPCODE_NETAPP_DNSGETHOSTBYADDRASYNCRESPONSE 0x1826 #define SL_OPCODE_NETAPP_PINGSTART 0x9C21 #define SL_OPCODE_NETAPP_PINGSTART_V6 0x9E21 #define SL_OPCODE_NETAPP_PINGSTARTRESPONSE 0x1C21 #define SL_OPCODE_NETAPP_PINGREPORTREQUEST 0x9C22 #define SL_OPCODE_NETAPP_PINGREPORTREQUESTRESPONSE 0x1822 #define SL_OPCODE_NETAPP_PINGSTOP 0x9C23 #define SL_OPCODE_NETAPP_PINGSTOPRESPONSE 0x1C23 #define SL_OPCODE_NETAPP_ARPFLUSH 0x9C24 #define SL_OPCODE_NETAPP_ARPFLUSHRESPONSE 0x1C24 #define SL_OPCODE_NETAPP_IPACQUIRED 0x1825 #define SL_OPCODE_NETAPP_IPV4_LOST 0x1832 #define SL_OPCODE_NETAPP_DHCP_IPV4_ACQUIRE_TIMEOUT 0x1833 #define SL_OPCODE_NETAPP_IPACQUIRED_V6 0x1A25 #define SL_OPCODE_NETAPP_IPERFSTARTCOMMAND 0x9C28 #define SL_OPCODE_NETAPP_IPERFSTARTRESPONSE 0x1C28 #define SL_OPCODE_NETAPP_IPERFSTOPCOMMAND 0x9C29 #define SL_OPCODE_NETAPP_IPERFSTOPRESPONSE 0x1C29 #define SL_OPCODE_NETAPP_CTESTSTARTCOMMAND 0x9C2A #define SL_OPCODE_NETAPP_CTESTSTARTRESPONSE 0x1C2A #define SL_OPCODE_NETAPP_CTESTASYNCRESPONSE 0x182A #define SL_OPCODE_NETAPP_CTESTSTOPCOMMAND 0x9C2B #define SL_OPCODE_NETAPP_CTESTSTOPRESPONSE 0x1C2B #define SL_OPCODE_NETAPP_IP_LEASED 0x182C #define SL_OPCODE_NETAPP_IP_RELEASED 0x182D #define SL_OPCODE_NETAPP_HTTPGETTOKENVALUE 0x182E #define SL_OPCODE_NETAPP_HTTPSENDTOKENVALUE 0x9C2F #define SL_OPCODE_NETAPP_HTTPPOSTTOKENVALUE 0x1830 #define SL_OPCODE_NVMEM_FILEOPEN 0xA43C #define SL_OPCODE_NVMEM_FILEOPENRESPONSE 0x243C #define SL_OPCODE_NVMEM_FILECLOSE 0xA43D #define SL_OPCODE_NVMEM_FILECLOSERESPONSE 0x243D #define SL_OPCODE_NVMEM_FILEREADCOMMAND 0xA440 #define SL_OPCODE_NVMEM_FILEREADRESPONSE 0x2440 #define SL_OPCODE_NVMEM_FILEWRITECOMMAND 0xA441 #define SL_OPCODE_NVMEM_FILEWRITERESPONSE 0x2441 #define SL_OPCODE_NVMEM_FILEGETINFOCOMMAND 0xA442 #define SL_OPCODE_NVMEM_FILEGETINFORESPONSE 0x2442 #define SL_OPCODE_NVMEM_FILEDELCOMMAND 0xA443 #define SL_OPCODE_NVMEM_FILEDELRESPONSE 0x2443 #define SL_OPCODE_NVMEM_NVMEMFORMATCOMMAND 0xA444 #define SL_OPCODE_NVMEM_NVMEMFORMATRESPONSE 0x2444 #define SL_OPCODE_DEVICE_SETDEBUGLEVELCOMMAND 0x846A #define SL_OPCODE_DEVICE_SETDEBUGLEVELRESPONSE 0x046A #define SL_OPCODE_DEVICE_NETCFG_SET_COMMAND 0x8432 #define SL_OPCODE_DEVICE_NETCFG_SET_RESPONSE 0x0432 #define SL_OPCODE_DEVICE_NETCFG_GET_COMMAND 0x8433 #define SL_OPCODE_DEVICE_NETCFG_GET_RESPONSE 0x0433 /* */ #define SL_OPCODE_DEVICE_SETUARTMODECOMMAND 0x846B #define SL_OPCODE_DEVICE_SETUARTMODERESPONSE 0x046B #define SL_OPCODE_DEVICE_SSISIZESETCOMMAND 0x846B #define SL_OPCODE_DEVICE_SSISIZESETRESPONSE 0x046B /* */ #define SL_OPCODE_DEVICE_EVENTMASKSET 0x8464 #define SL_OPCODE_DEVICE_EVENTMASKSETRESPONSE 0x0464 #define SL_OPCODE_DEVICE_EVENTMASKGET 0x8465 #define SL_OPCODE_DEVICE_EVENTMASKGETRESPONSE 0x0465 #define SL_OPCODE_DEVICE_DEVICEGET 0x8466 #define SL_OPCODE_DEVICE_DEVICEGETRESPONSE 0x0466 #define SL_OPCODE_DEVICE_DEVICESET 0x84B7 #define SL_OPCODE_DEVICE_DEVICESETRESPONSE 0x04B7 #define SL_OPCODE_WLAN_SCANRESULTSGETCOMMAND 0x8C8C #define SL_OPCODE_WLAN_SCANRESULTSGETRESPONSE 0x0C8C #define SL_OPCODE_WLAN_SMARTCONFIGOPTSET 0x8C8D #define SL_OPCODE_WLAN_SMARTCONFIGOPTSETRESPONSE 0x0C8D #define SL_OPCODE_WLAN_SMARTCONFIGOPTGET 0x8C8E #define SL_OPCODE_WLAN_SMARTCONFIGOPTGETRESPONSE 0x0C8E /* Rx Filters opcodes */ #define SL_OPCODE_WLAN_WLANRXFILTERADDCOMMAND 0x8C6C #define SL_OPCODE_WLAN_WLANRXFILTERADDRESPONSE 0x0C6C #define SL_OPCODE_WLAN_WLANRXFILTERSETCOMMAND 0x8C6D #define SL_OPCODE_WLAN_WLANRXFILTERSETRESPONSE 0x0C6D #define SL_OPCODE_WLAN_WLANRXFILTERGETSTATISTICSINFOCOMMAND 0x8C6E #define SL_OPCODE_WLAN_WLANRXFILTERGETSTATISTICSINFORESPONSE 0x0C6E #define SL_OPCODE_WLAN_WLANRXFILTERGETCOMMAND 0x8C6F #define SL_OPCODE_WLAN_WLANRXFILTERGETRESPONSE 0x0C6F #define SL_OPCODE_WLAN_WLANRXFILTERGETINFO 0x8C70 #define SL_OPCODE_WLAN_WLANRXFILTERGETINFORESPONSE 0x0C70 /******************************************************************************************/ /* Device structs */ /******************************************************************************************/ typedef _u32 InitStatus_t; typedef struct { _i32 Status; }InitComplete_t; typedef struct { _i16 status; _u16 padding; }_BasicResponse_t; typedef struct { _u16 Timeout; _u16 padding; }_DevStopCommand_t; typedef struct { _u32 group; _u32 mask; }_DevMaskEventSetCommand_t; typedef _BasicResponse_t _DevMaskEventSetResponse_t; typedef struct { _u32 group; }_DevMaskEventGetCommand_t; typedef struct { _u32 group; _u32 mask; }_DevMaskEventGetResponse_t; typedef struct { _u32 group; }_DevStatusGetCommand_t; typedef struct { _u32 group; _u32 status; }_DevStatusGetResponse_t; typedef struct { _u32 ChipId; _u32 FwVersion[4]; _u8 PhyVersion[4]; }_Device_VersionReadResponsePart_t; typedef struct { _Device_VersionReadResponsePart_t part; _u32 NwpVersion[4]; _u16 RomVersion; _u16 Padding; }_Device_VersionReadResponseFull_t; typedef struct { _u32 BaudRate; _u8 FlowControlEnable; }_DevUartSetModeCommand_t; typedef _BasicResponse_t _DevUartSetModeResponse_t; /******************************************************/ typedef struct { _u8 SsiSizeInBytes; _u8 Padding[3]; }_StellarisSsiSizeSet_t; /*****************************************************************************************/ /* WLAN structs */ /*****************************************************************************************/ #define MAXIMAL_PASSWORD_LENGTH (64) typedef struct{ _u8 SecType; _u8 SsidLen; _u8 Bssid[6]; _u8 PasswordLen; }_WlanConnectCommon_t; #define SSID_STRING(pCmd) (_i8 *)((_WlanConnectCommon_t *)(pCmd) + 1) #define PASSWORD_STRING(pCmd) (SSID_STRING(pCmd) + ((_WlanConnectCommon_t *)(pCmd))->SsidLen) typedef struct{ _WlanConnectCommon_t Common; _u8 UserLen; _u8 AnonUserLen; _u8 CertIndex; _u32 EapBitmask; }_WlanConnectEapCommand_t; #define EAP_SSID_STRING(pCmd) (_i8 *)((_WlanConnectEapCommand_t *)(pCmd) + 1) #define EAP_PASSWORD_STRING(pCmd) (EAP_SSID_STRING(pCmd) + ((_WlanConnectEapCommand_t *)(pCmd))->Common.SsidLen) #define EAP_USER_STRING(pCmd) (EAP_PASSWORD_STRING(pCmd) + ((_WlanConnectEapCommand_t *)(pCmd))->Common.PasswordLen) #define EAP_ANON_USER_STRING(pCmd) (EAP_USER_STRING(pCmd) + ((_WlanConnectEapCommand_t *)(pCmd))->UserLen) typedef struct { _u8 PolicyType; _u8 Padding; _u8 PolicyOption; _u8 PolicyOptionLen; }_WlanPoliciySetGet_t; typedef struct{ _u32 minDwellTime; _u32 maxDwellTime; _u32 numProbeResponse; _u32 G_Channels_mask; _i32 rssiThershold; _i32 snrThershold; _i32 defaultTXPower; _u16 intervalList[16]; }_WlanScanParamSetCommand_t; typedef struct{ _i8 SecType; _u8 SsidLen; _u8 Priority; _u8 Bssid[6]; _u8 PasswordLen; _u8 WepKeyId; }_WlanAddGetProfile_t; typedef struct{ _WlanAddGetProfile_t Common; _u8 UserLen; _u8 AnonUserLen; _u8 CertIndex; _u16 padding; _u32 EapBitmask; }_WlanAddGetEapProfile_t; #define PROFILE_SSID_STRING(pCmd) ((_i8 *)((_WlanAddGetProfile_t *)(pCmd) + 1)) #define PROFILE_PASSWORD_STRING(pCmd) (PROFILE_SSID_STRING(pCmd) + ((_WlanAddGetProfile_t *)(pCmd))->SsidLen) #define EAP_PROFILE_SSID_STRING(pCmd) (_i8 *)((_WlanAddGetEapProfile_t *)(pCmd) + 1) #define EAP_PROFILE_PASSWORD_STRING(pCmd) (EAP_PROFILE_SSID_STRING(pCmd) + ((_WlanAddGetEapProfile_t *)(pCmd))->Common.SsidLen) #define EAP_PROFILE_USER_STRING(pCmd) (EAP_PROFILE_PASSWORD_STRING(pCmd) + ((_WlanAddGetEapProfile_t *)(pCmd))->Common.PasswordLen) #define EAP_PROFILE_ANON_USER_STRING(pCmd) (EAP_PROFILE_USER_STRING(pCmd) + ((_WlanAddGetEapProfile_t *)(pCmd))->UserLen) typedef struct { _u8 index; _u8 padding[3]; }_WlanProfileDelGetCommand_t; typedef _BasicResponse_t _WlanGetNetworkListResponse_t; typedef struct { _u8 index; _u8 count; _i8 padding[2]; }_WlanGetNetworkListCommand_t; typedef struct { _u32 groupIdBitmask; _u8 cipher; _u8 publicKeyLen; _u8 group1KeyLen; _u8 group2KeyLen; }_WlanSmartConfigStartCommand_t; #define SMART_CONFIG_START_PUBLIC_KEY_STRING(pCmd) ((_i8 *)((_WlanSmartConfigStartCommand_t *)(pCmd) + 1)) #define SMART_CONFIG_START_GROUP1_KEY_STRING(pCmd) ((_i8 *) (SMART_CONFIG_START_PUBLIC_KEY_STRING(pCmd) + ((_WlanSmartConfigStartCommand_t *)(pCmd))->publicKeyLen)) #define SMART_CONFIG_START_GROUP2_KEY_STRING(pCmd) ((_i8 *) (SMART_CONFIG_START_GROUP1_KEY_STRING(pCmd) + ((_WlanSmartConfigStartCommand_t *)(pCmd))->group1KeyLen)) typedef struct { _u8 mode; _u8 padding[3]; }_WlanSetMode_t; typedef struct { _u16 Status; _u16 ConfigId; _u16 ConfigOpt; _u16 ConfigLen; }_WlanCfgSetGet_t; /* ******************************************************************************/ /* RX filters - Start */ /* ******************************************************************************/ /* -- 80 bytes */ typedef struct _WlanRxFilterAddCommand_t { /* -- 1 byte */ SlrxFilterRuleType_t RuleType; /* -- 1 byte */ SlrxFilterFlags_t FilterFlags; /* -- 1 byte */ SlrxFilterID_t FilterId; /* -- 1 byte */ _u8 Padding; /* -- 56 byte */ SlrxFilterRule_t Rule; /* -- 12 byte ( 3 padding ) */ SlrxFilterTrigger_t Trigger; /* -- 8 byte */ SlrxFilterAction_t Action; }_WlanRxFilterAddCommand_t; /* -- 4 bytes */ typedef struct l_WlanRxFilterAddCommandReponse_t { /* -- 1 byte */ SlrxFilterID_t FilterId; /* -- 1 Byte */ _u8 Status; /* -- 2 byte */ _u8 Padding[2]; }_WlanRxFilterAddCommandReponse_t; /* * \struct _WlanRxFilterSetCommand_t */ typedef struct _WlanRxFilterSetCommand_t { _u16 InputBufferLength; /* 1 byte */ SLrxFilterOperation_t RxFilterOperation; _u8 Padding[1]; }_WlanRxFilterSetCommand_t; /** * \struct _WlanRxFilterSetCommandReponse_t */ typedef struct _WlanRxFilterSetCommandReponse_t { /* 1 byte */ _u8 Status; /* 3 bytes */ _u8 Padding[3]; }_WlanRxFilterSetCommandReponse_t; /** * \struct _WlanRxFilterGetCommand_t */ typedef struct _WlanRxFilterGetCommand_t { _u16 OutputBufferLength; /* 1 byte */ SLrxFilterOperation_t RxFilterOperation; _u8 Padding[1]; }_WlanRxFilterGetCommand_t; /** * \struct _WlanRxFilterGetCommandReponse_t */ typedef struct _WlanRxFilterGetCommandReponse_t { /* 1 byte */ _u8 Status; /* 1 bytes */ _u8 Padding; /* 2 byte */ _u16 OutputBufferLength; }_WlanRxFilterGetCommandReponse_t; /* ******************************************************************************/ /* RX filters -- End */ /* ******************************************************************************/ typedef struct { _u16 status; _u8 WlanRole; /* 0 = station, 2 = AP */ _u8 Ipv6Enabled; _u8 Ipv6DhcpEnabled; _u32 ipV6Global[4]; _u32 ipV6Local[4]; _u32 ipV6DnsServer[4]; _u8 Ipv6DhcpState; }_NetappIpV6configRetArgs_t; typedef struct { _u8 ipV4[4]; _u8 ipV4Mask[4]; _u8 ipV4Gateway[4]; _u8 ipV4DnsServer[4]; _u8 ipV4Start[4]; _u8 ipV4End[4]; }_NetCfgIpV4AP_Args_t; typedef struct { _u16 status; _u8 MacAddr[6]; } _MAC_Address_SetGet_t; typedef struct { _u16 Status; _u16 ConfigId; _u16 ConfigOpt; _u16 ConfigLen; }_NetCfgSetGet_t; typedef struct { _u16 Status; _u16 DeviceSetId; _u16 Option; _u16 ConfigLen; }_DeviceSetGet_t; /******************************************************************************************/ /* Socket structs */ /******************************************************************************************/ typedef struct { _u8 Domain; _u8 Type; _u8 Protocol; _u8 Padding; }_SocketCommand_t; typedef struct { _i16 statusOrLen; _u8 sd; _u8 padding; }_SocketResponse_t; typedef struct { _u8 sd; _u8 family; _u8 padding1; _u8 padding2; }_AcceptCommand_t; typedef struct { _i16 statusOrLen; _u8 sd; _u8 family; _u16 port; _u16 paddingOrAddr; _u32 address; }_SocketAddrAsyncIPv4Response_t; typedef struct { _i16 statusOrLen; _u8 sd; _u8 family; _u16 port; _u8 address[6]; }_SocketAddrAsyncIPv6EUI48Response_t; typedef struct { _i16 statusOrLen; _u8 sd; _u8 family; _u16 port; _u16 paddingOrAddr; _u32 address[4]; }_SocketAddrAsyncIPv6Response_t; typedef struct { _i16 lenOrPadding; _u8 sd; _u8 FamilyAndFlags; _u16 port; _u16 paddingOrAddr; _u32 address; }_SocketAddrIPv4Command_t; typedef struct { _i16 lenOrPadding; _u8 sd; _u8 FamilyAndFlags; _u16 port; _u8 address[6]; }_SocketAddrIPv6EUI48Command_t; typedef struct { _i16 lenOrPadding; _u8 sd; _u8 FamilyAndFlags; _u16 port; _u16 paddingOrAddr; _u32 address[4]; }_SocketAddrIPv6Command_t; typedef union { _SocketAddrIPv4Command_t IpV4; _SocketAddrIPv6EUI48Command_t IpV6EUI48; #ifdef SL_SUPPORT_IPV6 _SocketAddrIPv6Command_t IpV6; #endif } _SocketAddrCommand_u; typedef union { _SocketAddrAsyncIPv4Response_t IpV4; _SocketAddrAsyncIPv6EUI48Response_t IpV6EUI48; #ifdef SL_SUPPORT_IPV6 _SocketAddrAsyncIPv6Response_t IpV6; #endif } _SocketAddrResponse_u; typedef struct { _u8 sd; _u8 backlog; _u8 padding1; _u8 padding2; }_ListenCommand_t; typedef struct { _u8 sd; _u8 padding0; _u8 padding1; _u8 padding2; }_CloseCommand_t; typedef struct { _u8 nfds; _u8 readFdsCount; _u8 writeFdsCount; _u8 padding; _u16 readFds; _u16 writeFds; _u16 tv_usec; _u16 tv_sec; }_SelectCommand_t; typedef struct { _u16 status; _u8 readFdsCount; _u8 writeFdsCount; _u16 readFds; _u16 writeFds; }_SelectAsyncResponse_t; typedef struct { _u8 sd; _u8 level; _u8 optionName; _u8 optionLen; }_setSockOptCommand_t; typedef struct { _u8 sd; _u8 level; _u8 optionName; _u8 optionLen; }_getSockOptCommand_t; typedef struct { _i16 status; _u8 sd; _u8 optionLen; }_getSockOptResponse_t; typedef struct { _u16 StatusOrLen; _u8 sd; _u8 FamilyAndFlags; }_sendRecvCommand_t; /***************************************************************************************** * NETAPP structs ******************************************************************************************/ typedef _BasicResponse_t _NetAppStartStopResponse_t; typedef struct { _u32 appId; }_NetAppStartStopCommand_t; typedef struct { _u16 Status; _u16 AppId; _u16 ConfigOpt; _u16 ConfigLen; }_NetAppSetGet_t; typedef struct { _u16 port_number; } _NetAppHttpServerGetSet_port_num_t; typedef struct { _u8 auth_enable; }_NetAppHttpServerGetSet_auth_enable_t; typedef struct _sl_NetAppHttpServerGetToken_t { _u8 token_name_len; _u8 padd1; _u16 padd2; }sl_NetAppHttpServerGetToken_t; typedef struct _sl_NetAppHttpServerSendToken_t { _u8 token_value_len; _u8 token_name_len; _u8 token_name[MAX_TOKEN_NAME_LEN]; _u16 padd; }sl_NetAppHttpServerSendToken_t; typedef struct _sl_NetAppHttpServerPostToken_t { _u8 post_action_len; _u8 token_name_len; _u8 token_value_len; _u8 padding; }sl_NetAppHttpServerPostToken_t; typedef struct { _u16 Len; _u8 family; _u8 padding; }_GetHostByNameCommand_t; typedef struct { _u16 status; _u16 padding; _u32 ip0; _u32 ip1; _u32 ip2; _u32 ip3; }_GetHostByNameIPv6AsyncResponse_t; typedef struct { _u16 status; _u8 padding1; _u8 padding2; _u32 ip0; }_GetHostByNameIPv4AsyncResponse_t; typedef enum { CTST_BSD_UDP_TX, CTST_BSD_UDP_RX, CTST_BSD_TCP_TX, CTST_BSD_TCP_RX, CTST_BSD_TCP_SERVER_BI_DIR, CTST_BSD_TCP_CLIENT_BI_DIR, CTST_BSD_UDP_BI_DIR, CTST_BSD_RAW_TX, CTST_BSD_RAW_RX, CTST_BSD_RAW_BI_DIR, CTST_BSD_SECURED_TCP_TX, CTST_BSD_SECURED_TCP_RX, CTST_BSD_SECURED_TCP_SERVER_BI_DIR, CTST_BSD_SECURED_TCP_CLIENT_BI_DIR }CommTest_e; typedef struct _sl_protocol_CtestStartCommand_t { _u32 Test; _u16 DestPort; _u16 SrcPort; _u32 DestAddr[4]; _u32 PayloadSize; _u32 timeout; _u32 csEnabled; _u32 secure; _u32 rawProtocol; _u8 reserved1[4]; }_CtestStartCommand_t; typedef struct { _u8 test; _u8 socket; _i16 status; _u32 startTime; _u32 endTime; _u16 txKbitsSec; _u16 rxKbitsSec; _u32 outOfOrderPackets; _u32 missedPackets; _i16 token; }_CtestAsyncResponse_t; typedef struct { _u32 pingIntervalTime; _u16 PingSize; _u16 pingRequestTimeout; _u32 totalNumberOfAttempts; _u32 flags; _u32 ip0; _u32 ip1OrPaadding; _u32 ip2OrPaadding; _u32 ip3OrPaadding; }_PingStartCommand_t; typedef struct { _u16 status; _u16 rttMin; _u16 rttMax; _u16 rttAvg; _u32 numSuccsessPings; _u32 numSendsPings; _u32 testTime; }_PingReportResponse_t; typedef struct { _u32 ip; _u32 gateway; _u32 dns; }_IpV4AcquiredAsync_t; typedef enum { ACQUIRED_IPV6_LOCAL = 1, ACQUIRED_IPV6_GLOBAL }IpV6AcquiredType_e; typedef struct { _u32 type; _u32 ip[4]; _u32 gateway[4]; _u32 dns[4]; }_IpV6AcquiredAsync_t; typedef union { _SocketCommand_t EventMask; _sendRecvCommand_t DeviceInit; }_device_commands_t; /***************************************************************************************** * FS structs ******************************************************************************************/ typedef struct { _u32 FileHandle; _u32 Offset; _u16 Len; _u16 Padding; }_FsReadCommand_t; typedef struct { _u32 Mode; _u32 Token; }_FsOpenCommand_t; typedef struct { _u32 FileHandle; _u32 Token; }_FsOpenResponse_t; typedef struct { _u32 FileHandle; _u32 CertificFileNameLength; _u32 SignatureLen; }_FsCloseCommand_t; typedef _BasicResponse_t _FsReadResponse_t; typedef _BasicResponse_t _FsDeleteResponse_t; typedef _BasicResponse_t _FsCloseResponse_t; typedef struct { _u16 Status; _u16 flags; _u32 FileLen; _u32 AllocatedLen; _u32 Token[4]; }_FsGetInfoResponse_t; typedef struct { _u8 DeviceID; _u8 Padding[3]; }_FsFormatCommand_t; typedef _BasicResponse_t _FsFormatResponse_t; typedef struct { _u32 Token; }_FsDeleteCommand_t; typedef _FsDeleteCommand_t _FsGetInfoCommand_t; typedef struct { _u32 FileHandle; _u32 Offset; _u16 Len; _u16 Padding; }_FsWriteCommand_t; typedef _BasicResponse_t _FsWriteResponse_t; /* TODO: Set MAx Async Payload length depending on flavor (Tiny, Small, etc.) */ #ifdef SL_TINY_EXT #define SL_ASYNC_MAX_PAYLOAD_LEN 120 /* size must be aligned to 4 */ #else #define SL_ASYNC_MAX_PAYLOAD_LEN 160 /* size must be aligned to 4 */ #endif #define SL_ASYNC_MAX_MSG_LEN (_SL_RESP_HDR_SIZE + SL_ASYNC_MAX_PAYLOAD_LEN) #define RECV_ARGS_SIZE (sizeof(_SocketResponse_t)) #define RECVFROM_IPV4_ARGS_SIZE (sizeof(_SocketAddrAsyncIPv4Response_t)) #define RECVFROM_IPV6_ARGS_SIZE (sizeof(_SocketAddrAsyncIPv6Response_t)) #define SL_IPV4_ADDRESS_SIZE (sizeof(_u32)) #define SL_IPV6_ADDRESS_SIZE (4 * sizeof(_u32)) #endif /* _SL_PROTOCOL_TYPES_H_ */