TI's CC3100. A test demo with very little testing done!
Fork of cc3100_Test_Demo2 by
Diff: simplelink/cc3100_protocol.h
- Revision:
- 0:e89ba455dbcf
diff -r 000000000000 -r e89ba455dbcf simplelink/cc3100_protocol.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/simplelink/cc3100_protocol.h Tue Feb 10 12:09:29 2015 +0000 @@ -0,0 +1,852 @@ +/* + * protocol.h - CC31xx/CC32xx Host Driver Implementation + * + * Copyright (C) 2014 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_ + +namespace mbed_cc3100 { + +/**************************************************************************** +** +** 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} + +const uint32_t H2N_DUMMY_PATTERN = (uint32_t)0xFFFFFFFF; +const uint32_t N2H_SYNC_PATTERN = (uint32_t)0xABCDDCBA; +const uint32_t SYNC_PATTERN_LEN = (uint32_t)sizeof(uint32_t); +const uint32_t UART_SET_MODE_MAGIC_CODE = (uint32_t)0xAA55AA55; +#define SPI_16BITS_BUG(pattern) (uint32_t)((uint32_t)pattern & (uint32_t)0xFFFF7FFF) +#define SPI_8BITS_BUG(pattern) (uint32_t)((uint32_t)pattern & (uint32_t)0xFFFFFF7F) + + + +typedef struct { + uint16_t Opcode; + uint16_t Len; +} _SlGenericHeader_t; + + +typedef struct { + uint32_t Long; + uint16_t Short; + uint8_t Byte1; + uint8_t Byte2; +} _SlSyncPattern_t; + +typedef _SlGenericHeader_t _SlCommandHeader_t; + +typedef struct { + _SlGenericHeader_t GenHeader; + uint8_t TxPoolCnt; + uint8_t DevStatus; + uint8_t SocketTXFailure; + uint8_t 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; + uint8_t func_args_start; +} T_SCMD; + + +const uint8_t WLAN_CONN_STATUS_BIT = 0x01; +const uint8_t EVENTS_Q_STATUS_BIT = 0x02; +const uint8_t PENDING_RCV_CMD_BIT = 0x04; +const uint8_t FW_BUSY_PACKETS_BIT = 0x08; + +const uint32_t INIT_STA_OK = 0x11111111; +const uint32_t INIT_STA_ERR = 0x22222222; +const uint32_t INIT_AP_OK = 0x33333333; +const uint32_t INIT_AP_ERR = 0x44444444; +const uint32_t INIT_P2P_OK = 0x55555555; +const uint32_t INIT_P2P_ERR = 0x66666666; + +/**************************************************************************** +** OPCODES +****************************************************************************/ +const uint16_t SL_IPV4_IPV6_OFFSET = ( 9 ); +const uint16_t SL_OPCODE_IPV4 = ( 0x0 << SL_IPV4_IPV6_OFFSET ); +const uint16_t SL_OPCODE_IPV6 = ( 0x1 << SL_IPV4_IPV6_OFFSET ); + +const uint16_t SL_SYNC_ASYNC_OFFSET = ( 10 ); +const uint16_t SL_OPCODE_SYNC = (0x1 << SL_SYNC_ASYNC_OFFSET ); +const uint16_t SL_OPCODE_SILO_OFFSET = ( 11 ); +const uint16_t SL_OPCODE_SILO_MASK = ( 0xF << SL_OPCODE_SILO_OFFSET ); +const uint16_t SL_OPCODE_SILO_DEVICE = ( 0x0 << SL_OPCODE_SILO_OFFSET ); +const uint16_t SL_OPCODE_SILO_WLAN = ( 0x1 << SL_OPCODE_SILO_OFFSET ); +const uint16_t SL_OPCODE_SILO_SOCKET = ( 0x2 << SL_OPCODE_SILO_OFFSET ); +const uint16_t SL_OPCODE_SILO_NETAPP = ( 0x3 << SL_OPCODE_SILO_OFFSET ); +const uint16_t SL_OPCODE_SILO_NVMEM = ( 0x4 << SL_OPCODE_SILO_OFFSET ); +const uint16_t SL_OPCODE_SILO_NETCFG = ( 0x5 << SL_OPCODE_SILO_OFFSET ); + +const uint16_t SL_FAMILY_SHIFT = (0x4); +const uint16_t SL_FLAGS_MASK = (0xF); + +const uint16_t SL_OPCODE_DEVICE_INITCOMPLETE = 0x0008; +const uint16_t SL_OPCODE_DEVICE_STOP_COMMAND = 0x8473; +const uint16_t SL_OPCODE_DEVICE_STOP_RESPONSE = 0x0473; +const uint16_t SL_OPCODE_DEVICE_STOP_ASYNC_RESPONSE = 0x0073; +const uint16_t SL_OPCODE_DEVICE_DEVICEASYNCDUMMY = 0x0063; + +const uint16_t SL_OPCODE_DEVICE_VERSIONREADCOMMAND = 0x8470; +const uint16_t SL_OPCODE_DEVICE_VERSIONREADRESPONSE = 0x0470; +const uint16_t SL_OPCODE_DEVICE_DEVICEASYNCFATALERROR = 0x0078; +const uint16_t SL_OPCODE_WLAN_WLANCONNECTCOMMAND = 0x8C80; +const uint16_t SL_OPCODE_WLAN_WLANCONNECTRESPONSE = 0x0C80; +const uint16_t SL_OPCODE_WLAN_WLANASYNCCONNECTEDRESPONSE = 0x0880; +const uint16_t SL_OPCODE_WLAN_P2P_DEV_FOUND = 0x0830; +const uint16_t SL_OPCODE_WLAN_CONNECTION_FAILED = 0x0831; +const uint16_t SL_OPCODE_WLAN_P2P_NEG_REQ_RECEIVED = 0x0832; + +const uint16_t SL_OPCODE_WLAN_WLANDISCONNECTCOMMAND = 0x8C81; +const uint16_t SL_OPCODE_WLAN_WLANDISCONNECTRESPONSE = 0x0C81; +const uint16_t SL_OPCODE_WLAN_WLANASYNCDISCONNECTEDRESPONSE = 0x0881; +const uint16_t SL_OPCODE_WLAN_WLANCONNECTEAPCOMMAND = 0x8C82; +const uint16_t SL_OPCODE_WLAN_WLANCONNECTEAPCRESPONSE = 0x0C82; +const uint16_t SL_OPCODE_WLAN_PROFILEADDCOMMAND = 0x8C83; +const uint16_t SL_OPCODE_WLAN_PROFILEADDRESPONSE = 0x0C83; +const uint16_t SL_OPCODE_WLAN_PROFILEGETCOMMAND = 0x8C84; +const uint16_t SL_OPCODE_WLAN_PROFILEGETRESPONSE = 0x0C84; +const uint16_t SL_OPCODE_WLAN_PROFILEDELCOMMAND = 0x8C85; +const uint16_t SL_OPCODE_WLAN_PROFILEDELRESPONSE = 0x0C85; +const uint16_t SL_OPCODE_WLAN_POLICYSETCOMMAND = 0x8C86; +const uint16_t SL_OPCODE_WLAN_POLICYSETRESPONSE = 0x0C86; +const uint16_t SL_OPCODE_WLAN_POLICYGETCOMMAND = 0x8C87; +const uint16_t SL_OPCODE_WLAN_POLICYGETRESPONSE = 0x0C87; +const uint16_t SL_OPCODE_WLAN_FILTERADD = 0x8C88; +const uint16_t SL_OPCODE_WLAN_FILTERADDRESPONSE = 0x0C88; +const uint16_t SL_OPCODE_WLAN_FILTERGET = 0x8C89; +const uint16_t SL_OPCODE_WLAN_FILTERGETRESPONSE = 0x0C89; +const uint16_t SL_OPCODE_WLAN_FILTERDELETE = 0x8C8A; +const uint16_t SL_OPCODE_WLAN_FILTERDELETERESPOSNE = 0x0C8A; +const uint16_t SL_OPCODE_WLAN_WLANGETSTATUSCOMMAND = 0x8C8F; +const uint16_t SL_OPCODE_WLAN_WLANGETSTATUSRESPONSE = 0x0C8F; +const uint16_t SL_OPCODE_WLAN_STARTTXCONTINUESCOMMAND = 0x8CAA; +const uint16_t SL_OPCODE_WLAN_STARTTXCONTINUESRESPONSE = 0x0CAA; +const uint16_t SL_OPCODE_WLAN_STOPTXCONTINUESCOMMAND = 0x8CAB; +const uint16_t SL_OPCODE_WLAN_STOPTXCONTINUESRESPONSE = 0x0CAB; +const uint16_t SL_OPCODE_WLAN_STARTRXSTATCOMMAND = 0x8CAC; +const uint16_t SL_OPCODE_WLAN_STARTRXSTATRESPONSE = 0x0CAC; +const uint16_t SL_OPCODE_WLAN_STOPRXSTATCOMMAND = 0x8CAD; +const uint16_t SL_OPCODE_WLAN_STOPRXSTATRESPONSE = 0x0CAD; +const uint16_t SL_OPCODE_WLAN_GETRXSTATCOMMAND = 0x8CAF; +const uint16_t SL_OPCODE_WLAN_GETRXSTATRESPONSE = 0x0CAF; +const uint16_t SL_OPCODE_WLAN_POLICYSETCOMMANDNEW = 0x8CB0; +const uint16_t SL_OPCODE_WLAN_POLICYSETRESPONSENEW = 0x0CB0; +const uint16_t SL_OPCODE_WLAN_POLICYGETCOMMANDNEW = 0x8CB1; +const uint16_t SL_OPCODE_WLAN_POLICYGETRESPONSENEW = 0x0CB1; + +const uint16_t SL_OPCODE_WLAN_SMART_CONFIG_START_COMMAND = 0x8CB2; +const uint16_t SL_OPCODE_WLAN_SMART_CONFIG_START_RESPONSE = 0x0CB2; +const uint16_t SL_OPCODE_WLAN_SMART_CONFIG_START_ASYNC_RESPONSE = 0x08B2; +const uint16_t SL_OPCODE_WLAN_SMART_CONFIG_STOP_COMMAND = 0x8CB3; +const uint16_t SL_OPCODE_WLAN_SMART_CONFIG_STOP_RESPONSE = 0x0CB3; +const uint16_t SL_OPCODE_WLAN_SMART_CONFIG_STOP_ASYNC_RESPONSE = 0x08B3; +const uint16_t SL_OPCODE_WLAN_SET_MODE = 0x8CB4; +const uint16_t SL_OPCODE_WLAN_SET_MODE_RESPONSE = 0x0CB4; +const uint16_t SL_OPCODE_WLAN_CFG_SET = 0x8CB5; +const uint16_t SL_OPCODE_WLAN_CFG_SET_RESPONSE = 0x0CB5; +const uint16_t SL_OPCODE_WLAN_CFG_GET = 0x8CB6; +const uint16_t SL_OPCODE_WLAN_CFG_GET_RESPONSE = 0x0CB6; +const uint16_t SL_OPCODE_WLAN_STA_CONNECTED = 0x082E; +const uint16_t SL_OPCODE_WLAN_STA_DISCONNECTED = 0x082F; +const uint16_t SL_OPCODE_WLAN_EAP_PROFILEADDCOMMAND = 0x8C67; +const uint16_t SL_OPCODE_WLAN_EAP_PROFILEADDCOMMAND_RESPONSE = 0x0C67; + +const uint16_t SL_OPCODE_SOCKET_SOCKET = 0x9401; +const uint16_t SL_OPCODE_SOCKET_SOCKETRESPONSE = 0x1401; +const uint16_t SL_OPCODE_SOCKET_CLOSE = 0x9402; +const uint16_t SL_OPCODE_SOCKET_CLOSERESPONSE = 0x1402; +const uint16_t SL_OPCODE_SOCKET_ACCEPT = 0x9403; +const uint16_t SL_OPCODE_SOCKET_ACCEPTRESPONSE = 0x1403; +const uint16_t SL_OPCODE_SOCKET_ACCEPTASYNCRESPONSE = 0x1003; +const uint16_t SL_OPCODE_SOCKET_ACCEPTASYNCRESPONSE_V6 = 0x1203; +const uint16_t SL_OPCODE_SOCKET_BIND = 0x9404; +const uint16_t SL_OPCODE_SOCKET_BIND_V6 = 0x9604; +const uint16_t SL_OPCODE_SOCKET_BINDRESPONSE = 0x1404; +const uint16_t SL_OPCODE_SOCKET_LISTEN = 0x9405; +const uint16_t SL_OPCODE_SOCKET_LISTENRESPONSE = 0x1405; +const uint16_t SL_OPCODE_SOCKET_CONNECT = 0x9406; +const uint16_t SL_OPCODE_SOCKET_CONNECT_V6 = 0x9606; +const uint16_t SL_OPCODE_SOCKET_CONNECTRESPONSE = 0x1406; +const uint16_t SL_OPCODE_SOCKET_CONNECTASYNCRESPONSE = 0x1006; +const uint16_t SL_OPCODE_SOCKET_SELECT = 0x9407; +const uint16_t SL_OPCODE_SOCKET_SELECTRESPONSE = 0x1407; +const uint16_t SL_OPCODE_SOCKET_SELECTASYNCRESPONSE = 0x1007; +const uint16_t SL_OPCODE_SOCKET_SETSOCKOPT = 0x9408; +const uint16_t SL_OPCODE_SOCKET_SETSOCKOPTRESPONSE = 0x1408; +const uint16_t SL_OPCODE_SOCKET_GETSOCKOPT = 0x9409; +const uint16_t SL_OPCODE_SOCKET_GETSOCKOPTRESPONSE = 0x1409; +const uint16_t SL_OPCODE_SOCKET_RECV = 0x940A; +const uint16_t SL_OPCODE_SOCKET_RECVASYNCRESPONSE = 0x100A; +const uint16_t SL_OPCODE_SOCKET_RECVFROM = 0x940B; +const uint16_t SL_OPCODE_SOCKET_RECVFROMASYNCRESPONSE = 0x100B; +const uint16_t SL_OPCODE_SOCKET_RECVFROMASYNCRESPONSE_V6 = 0x120B; +const uint16_t SL_OPCODE_SOCKET_SEND = 0x940C; +const uint16_t SL_OPCODE_SOCKET_SENDTO = 0x940D; +const uint16_t SL_OPCODE_SOCKET_SENDTO_V6 = 0x960D; +const uint16_t SL_OPCODE_SOCKET_TXFAILEDASYNCRESPONSE = 0x100E; +const uint16_t SL_OPCODE_SOCKET_SOCKETASYNCEVENT = 0x100F; +const uint16_t SL_OPCODE_NETAPP_START_COMMAND = 0x9C0A; +const uint16_t SL_OPCODE_NETAPP_START_RESPONSE = 0x1C0A; +const uint16_t SL_OPCODE_NETAPP_NETAPPSTARTRESPONSE = 0x1C0A; +const uint16_t SL_OPCODE_NETAPP_STOP_COMMAND = 0x9C61; +const uint16_t SL_OPCODE_NETAPP_STOP_RESPONSE = 0x1C61; +const uint16_t SL_OPCODE_NETAPP_NETAPPSET = 0x9C0B; +const uint16_t SL_OPCODE_NETAPP_NETAPPSETRESPONSE = 0x1C0B; +const uint16_t SL_OPCODE_NETAPP_NETAPPGET = 0x9C27; +const uint16_t SL_OPCODE_NETAPP_NETAPPGETRESPONSE = 0x1C27; +const uint16_t SL_OPCODE_NETAPP_DNSGETHOSTBYNAME = 0x9C20; +const uint16_t SL_OPCODE_NETAPP_DNSGETHOSTBYNAMERESPONSE = 0x1C20; +const uint16_t SL_OPCODE_NETAPP_DNSGETHOSTBYNAMEASYNCRESPONSE = 0x1820; +const uint16_t SL_OPCODE_NETAPP_DNSGETHOSTBYNAMEASYNCRESPONSE_V6 = 0x1A20; +const uint16_t SL_OPCODE_NETAPP_NETAPP_MDNS_LOOKUP_SERVICE = 0x9C71; +const uint16_t SL_OPCODE_NETAPP_NETAPP_MDNS_LOOKUP_SERVICE_RESPONSE = 0x1C72; +const uint16_t SL_OPCODE_NETAPP_MDNSREGISTERSERVICE = 0x9C34; +const uint16_t SL_OPCODE_NETAPP_MDNSREGISTERSERVICERESPONSE = 0x1C34; +const uint16_t SL_OPCODE_NETAPP_MDNSGETHOSTBYSERVICE = 0x9C35; +const uint16_t SL_OPCODE_NETAPP_MDNSGETHOSTBYSERVICERESPONSE = 0x1C35; +const uint16_t SL_OPCODE_NETAPP_MDNSGETHOSTBYSERVICEASYNCRESPONSE = 0x1835; +const uint16_t SL_OPCODE_NETAPP_MDNSGETHOSTBYSERVICEASYNCRESPONSE_V6 = 0x1A35; +const uint16_t SL_OPCODE_NETAPP_DNSGETHOSTBYADDR = 0x9C26; +const uint16_t SL_OPCODE_NETAPP_DNSGETHOSTBYADDR_V6 = 0x9E26; +const uint16_t SL_OPCODE_NETAPP_DNSGETHOSTBYADDRRESPONSE = 0x1C26; +const uint16_t SL_OPCODE_NETAPP_DNSGETHOSTBYADDRASYNCRESPONSE = 0x1826; +const uint16_t SL_OPCODE_NETAPP_PINGSTART = 0x9C21; +const uint16_t SL_OPCODE_NETAPP_PINGSTART_V6 = 0x9E21; +const uint16_t SL_OPCODE_NETAPP_PINGSTARTRESPONSE = 0x1C21; +const uint16_t SL_OPCODE_NETAPP_PINGREPORTREQUEST = 0x9C22; +const uint16_t SL_OPCODE_NETAPP_PINGREPORTREQUESTRESPONSE = 0x1822; +const uint16_t SL_OPCODE_NETAPP_PINGSTOP = 0x9C23; +const uint16_t SL_OPCODE_NETAPP_PINGSTOPRESPONSE = 0x1C23; +const uint16_t SL_OPCODE_NETAPP_ARPFLUSH = 0x9C24; +const uint16_t SL_OPCODE_NETAPP_ARPFLUSHRESPONSE = 0x1C24; +const uint16_t SL_OPCODE_NETAPP_IPACQUIRED = 0x1825; +const uint16_t SL_OPCODE_NETAPP_IPV4_LOST = 0x1832; +const uint16_t SL_OPCODE_NETAPP_DHCP_IPV4_ACQUIRE_TIMEOUT = 0x1833; +const uint16_t SL_OPCODE_NETAPP_IPACQUIRED_V6 = 0x1A25; +const uint16_t SL_OPCODE_NETAPP_IPERFSTARTCOMMAND = 0x9C28; +const uint16_t SL_OPCODE_NETAPP_IPERFSTARTRESPONSE = 0x1C28; +const uint16_t SL_OPCODE_NETAPP_IPERFSTOPCOMMAND = 0x9C29; +const uint16_t SL_OPCODE_NETAPP_IPERFSTOPRESPONSE = 0x1C29; +const uint16_t SL_OPCODE_NETAPP_CTESTSTARTCOMMAND = 0x9C2A; +const uint16_t SL_OPCODE_NETAPP_CTESTSTARTRESPONSE = 0x1C2A; +const uint16_t SL_OPCODE_NETAPP_CTESTASYNCRESPONSE = 0x182A; +const uint16_t SL_OPCODE_NETAPP_CTESTSTOPCOMMAND = 0x9C2B; +const uint16_t SL_OPCODE_NETAPP_CTESTSTOPRESPONSE = 0x1C2B; +const uint16_t SL_OPCODE_NETAPP_IP_LEASED = 0x182C; +const uint16_t SL_OPCODE_NETAPP_IP_RELEASED = 0x182D; +const uint16_t SL_OPCODE_NETAPP_HTTPGETTOKENVALUE = 0x182E; +const uint16_t SL_OPCODE_NETAPP_HTTPSENDTOKENVALUE = 0x9C2F; +const uint16_t SL_OPCODE_NETAPP_HTTPPOSTTOKENVALUE = 0x1830; +const uint16_t SL_OPCODE_NVMEM_FILEOPEN = 0xA43C; +const uint16_t SL_OPCODE_NVMEM_FILEOPENRESPONSE = 0x243C; +const uint16_t SL_OPCODE_NVMEM_FILECLOSE = 0xA43D; +const uint16_t SL_OPCODE_NVMEM_FILECLOSERESPONSE = 0x243D; +const uint16_t SL_OPCODE_NVMEM_FILEREADCOMMAND = 0xA440; +const uint16_t SL_OPCODE_NVMEM_FILEREADRESPONSE = 0x2440; +const uint16_t SL_OPCODE_NVMEM_FILEWRITECOMMAND = 0xA441; +const uint16_t SL_OPCODE_NVMEM_FILEWRITERESPONSE = 0x2441; +const uint16_t SL_OPCODE_NVMEM_FILEGETINFOCOMMAND = 0xA442; +const uint16_t SL_OPCODE_NVMEM_FILEGETINFORESPONSE = 0x2442; +const uint16_t SL_OPCODE_NVMEM_FILEDELCOMMAND = 0xA443; +const uint16_t SL_OPCODE_NVMEM_FILEDELRESPONSE = 0x2443; +const uint16_t SL_OPCODE_NVMEM_NVMEMFORMATCOMMAND = 0xA444; +const uint16_t SL_OPCODE_NVMEM_NVMEMFORMATRESPONSE = 0x2444; + +const uint16_t SL_OPCODE_DEVICE_SETDEBUGLEVELCOMMAND = 0x846A; +const uint16_t SL_OPCODE_DEVICE_SETDEBUGLEVELRESPONSE = 0x046A; + +const uint16_t SL_OPCODE_DEVICE_NETCFG_SET_COMMAND = 0x8432; +const uint16_t SL_OPCODE_DEVICE_NETCFG_SET_RESPONSE = 0x0432; +const uint16_t SL_OPCODE_DEVICE_NETCFG_GET_COMMAND = 0x8433; +const uint16_t SL_OPCODE_DEVICE_NETCFG_GET_RESPONSE = 0x0433; +/* */ +const uint16_t SL_OPCODE_DEVICE_SETUARTMODECOMMAND = 0x846B; +const uint16_t SL_OPCODE_DEVICE_SETUARTMODERESPONSE = 0x046B; +const uint16_t SL_OPCODE_DEVICE_SSISIZESETCOMMAND = 0x846B; +const uint16_t SL_OPCODE_DEVICE_SSISIZESETRESPONSE = 0x046B; + +/* */ +const uint16_t SL_OPCODE_DEVICE_EVENTMASKSET = 0x8464; +const uint16_t SL_OPCODE_DEVICE_EVENTMASKSETRESPONSE = 0x0464; +const uint16_t SL_OPCODE_DEVICE_EVENTMASKGET = 0x8465; +const uint16_t SL_OPCODE_DEVICE_EVENTMASKGETRESPONSE = 0x0465; + +const uint16_t SL_OPCODE_DEVICE_DEVICEGET = 0x8466; +const uint16_t SL_OPCODE_DEVICE_DEVICEGETRESPONSE = 0x0466; +const uint16_t SL_OPCODE_DEVICE_DEVICESET = 0x84B7; +const uint16_t SL_OPCODE_DEVICE_DEVICESETRESPONSE = 0x04B7; + +const uint16_t SL_OPCODE_WLAN_SCANRESULTSGETCOMMAND = 0x8C8C; +const uint16_t SL_OPCODE_WLAN_SCANRESULTSGETRESPONSE = 0x0C8C; +const uint16_t SL_OPCODE_WLAN_SMARTCONFIGOPTSET = 0x8C8D; +const uint16_t SL_OPCODE_WLAN_SMARTCONFIGOPTSETRESPONSE = 0x0C8D; +const uint16_t SL_OPCODE_WLAN_SMARTCONFIGOPTGET = 0x8C8E; +const uint16_t SL_OPCODE_WLAN_SMARTCONFIGOPTGETRESPONSE = 0x0C8E; + +const uint16_t SL_OPCODE_FREE_BSD_RECV_BUFFER = 0xCCCB; +const uint16_t SL_OPCODE_FREE_NON_BSD_READ_BUFFER = 0xCCCD; + + +/* Rx Filters opcodes */ +const uint16_t SL_OPCODE_WLAN_WLANRXFILTERADDCOMMAND = 0x8C6C; +const uint16_t SL_OPCODE_WLAN_WLANRXFILTERADDRESPONSE = 0x0C6C; +const uint16_t SL_OPCODE_WLAN_WLANRXFILTERSETCOMMAND = 0x8C6D; +const uint16_t SL_OPCODE_WLAN_WLANRXFILTERSETRESPONSE = 0x0C6D; +const uint16_t SL_OPCODE_WLAN_WLANRXFILTERGETSTATISTICSINFOCOMMAND = 0x8C6E; +const uint16_t SL_OPCODE_WLAN_WLANRXFILTERGETSTATISTICSINFORESPONSE = 0x0C6E; +const uint16_t SL_OPCODE_WLAN_WLANRXFILTERGETCOMMAND = 0x8C6F; +const uint16_t SL_OPCODE_WLAN_WLANRXFILTERGETRESPONSE = 0x0C6F; +const uint16_t SL_OPCODE_WLAN_WLANRXFILTERGETINFO = 0x8C70; +const uint16_t SL_OPCODE_WLAN_WLANRXFILTERGETINFORESPONSE = 0x0C70; + + +/******************************************************************************************/ +/* Device structs */ +/******************************************************************************************/ +typedef uint32_t InitStatus_t; + + +typedef struct { + int32_t Status; +} InitComplete_t; + +typedef struct { + int16_t status; + uint16_t padding; + +} _BasicResponse_t; + +typedef struct { + uint16_t Timeout; + uint16_t padding; +} _DevStopCommand_t; + +typedef struct { + uint32_t group; + uint32_t mask; +} _DevMaskEventSetCommand_t; + +typedef _BasicResponse_t _DevMaskEventSetResponse_t; + + +typedef struct { + uint32_t group; +} _DevMaskEventGetCommand_t; + + +typedef struct { + uint32_t group; + uint32_t mask; +} _DevMaskEventGetResponse_t; + + +typedef struct { + uint32_t group; +} _DevStatusGetCommand_t; + + +typedef struct { + uint32_t group; + uint32_t status; +} _DevStatusGetResponse_t; + +typedef struct { + uint32_t ChipId; + uint32_t FwVersion[4]; + uint8_t PhyVersion[4]; +} _Device_VersionReadResponsePart_t; + +typedef struct { + _Device_VersionReadResponsePart_t part; + uint32_t NwpVersion[4]; + uint16_t RomVersion; + uint16_t Padding; +} _Device_VersionReadResponseFull_t; + + +typedef struct { + uint32_t BaudRate; + uint8_t FlowControlEnable; +} _DevUartSetModeCommand_t; + +typedef _BasicResponse_t _DevUartSetModeResponse_t; + +/******************************************************/ + +typedef struct { + uint8_t SsiSizeInBytes; + uint8_t Padding[3]; +} _StellarisSsiSizeSet_t; + +/*****************************************************************************************/ +/* WLAN structs */ +/*****************************************************************************************/ +#define MAXIMAL_PASSWORD_LENGTH (64) + +typedef struct { + uint8_t SecType; + uint8_t SsidLen; + uint8_t Bssid[6]; + uint8_t PasswordLen; +} _WlanConnectCommon_t; + +#define SSID_STRING(pCmd) (int8_t *)((_WlanConnectCommon_t *)(pCmd) + 1) +#define PASSWORD_STRING(pCmd) (SSID_STRING(pCmd) + ((_WlanConnectCommon_t *)(pCmd))->SsidLen) + +typedef struct { + _WlanConnectCommon_t Common; + uint8_t UserLen; + uint8_t AnonUserLen; + uint8_t CertIndex; + uint32_t EapBitmask; +} _WlanConnectEapCommand_t; + +#define EAP_SSID_STRING(pCmd) (int8_t *)((_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 { + uint8_t PolicyType; + uint8_t Padding; + uint8_t PolicyOption; + uint8_t PolicyOptionLen; +} _WlanPoliciySetGet_t; + + +typedef struct { + uint32_t minDwellTime; + uint32_t maxDwellTime; + uint32_t numProbeResponse; + uint32_t G_Channels_mask; + int32_t rssiThershold; + int32_t snrThershold; + int32_t defaultTXPower; + uint16_t intervalList[16]; +} _WlanScanParamSetCommand_t; + + +typedef struct { + int8_t SecType; + uint8_t SsidLen; + uint8_t Priority; + uint8_t Bssid[6]; + uint8_t PasswordLen; + uint8_t WepKeyId; +} _WlanAddGetProfile_t; + + +typedef struct { + _WlanAddGetProfile_t Common; + uint8_t UserLen; + uint8_t AnonUserLen; + uint8_t CertIndex; + uint16_t padding; + uint32_t EapBitmask; +} _WlanAddGetEapProfile_t; + +#define PROFILE_SSID_STRING(pCmd) ((int8_t *)((_WlanAddGetProfile_t *)(pCmd) + 1)) +#define PROFILE_PASSWORD_STRING(pCmd) (PROFILE_SSID_STRING(pCmd) + ((_WlanAddGetProfile_t *)(pCmd))->SsidLen) + +#define EAP_PROFILE_SSID_STRING(pCmd) (int8_t *)((_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 { + uint8_t index; + uint8_t padding[3]; +} _WlanProfileDelGetCommand_t; + +typedef _BasicResponse_t _WlanGetNetworkListResponse_t; + +typedef struct { + uint8_t index; + uint8_t count; + int8_t padding[2]; +} _WlanGetNetworkListCommand_t; + + + + +typedef struct { + uint32_t groupIdBitmask; + uint8_t cipher; + uint8_t publicKeyLen; + uint8_t group1KeyLen; + uint8_t group2KeyLen; +} _WlanSmartConfigStartCommand_t; + +#define SMART_CONFIG_START_PUBLIC_KEY_STRING(pCmd) ((int8_t *)((_WlanSmartConfigStartCommand_t *)(pCmd) + 1)) +#define SMART_CONFIG_START_GROUP1_KEY_STRING(pCmd) ((int8_t *) (SMART_CONFIG_START_PUBLIC_KEY_STRING(pCmd) + ((_WlanSmartConfigStartCommand_t *)(pCmd))->publicKeyLen)) +#define SMART_CONFIG_START_GROUP2_KEY_STRING(pCmd) ((int8_t *) (SMART_CONFIG_START_GROUP1_KEY_STRING(pCmd) + ((_WlanSmartConfigStartCommand_t *)(pCmd))->group1KeyLen)) + +typedef struct { + uint8_t mode; + uint8_t padding[3]; +} _WlanSetMode_t; + + + + +typedef struct { + uint16_t Status; + uint16_t ConfigId; + uint16_t ConfigOpt; + uint16_t ConfigLen; +} _WlanCfgSetGet_t; + + +//wlan_rx_filters moved + +typedef struct { + uint16_t status; + uint8_t WlanRole; /* 0 = station, 2 = AP */ + uint8_t Ipv6Enabled; + uint8_t Ipv6DhcpEnabled; + + uint32_t ipV6Global[4]; + uint32_t ipV6Local[4]; + uint32_t ipV6DnsServer[4]; + uint8_t Ipv6DhcpState; + +} _NetappIpV6configRetArgs_t; + + +typedef struct { + uint8_t ipV4[4]; + uint8_t ipV4Mask[4]; + uint8_t ipV4Gateway[4]; + uint8_t ipV4DnsServer[4]; + uint8_t ipV4Start[4]; + uint8_t ipV4End[4]; +} _NetCfgIpV4AP_Args_t; + + + +typedef struct { + uint16_t status; + uint8_t MacAddr[6]; +} _MAC_Address_SetGet_t; + + +typedef struct { + uint16_t Status; + uint16_t ConfigId; + uint16_t ConfigOpt; + uint16_t ConfigLen; +} _NetCfgSetGet_t; + +typedef struct { + uint16_t Status; + uint16_t DeviceSetId; + uint16_t Option; + uint16_t ConfigLen; +} _DeviceSetGet_t; + + + + +/******************************************************************************************/ +/* Socket structs */ +/******************************************************************************************/ + +typedef struct { + uint8_t Domain; + uint8_t Type; + uint8_t Protocol; + uint8_t Padding; +} _SocketCommand_t; + + +typedef struct { + int16_t statusOrLen; + uint8_t sd; + uint8_t padding; +} _SocketResponse_t; + +typedef struct { + uint8_t sd; + uint8_t family; + uint8_t padding1; + uint8_t padding2; +} _AcceptCommand_t; + + +typedef struct { + int16_t statusOrLen; + uint8_t sd; + uint8_t family; + uint16_t port; + uint16_t paddingOrAddr; + uint32_t address; +} _SocketAddrAsyncIPv4Response_t; + +typedef struct { + int16_t statusOrLen; + uint8_t sd; + uint8_t family; + uint16_t port; + uint8_t address[6]; +} _SocketAddrAsyncIPv6EUI48Response_t; +typedef struct { + int16_t statusOrLen; + uint8_t sd; + uint8_t family; + uint16_t port; + uint16_t paddingOrAddr; + uint32_t address[4]; +} _SocketAddrAsyncIPv6Response_t; + + +typedef struct { + int16_t lenOrPadding; + uint8_t sd; + uint8_t FamilyAndFlags; + uint16_t port; + uint16_t paddingOrAddr; + uint32_t address; +} _SocketAddrIPv4Command_t; + +typedef struct { + int16_t lenOrPadding; + uint8_t sd; + uint8_t FamilyAndFlags; + uint16_t port; + uint8_t address[6]; +} _SocketAddrIPv6EUI48Command_t; +typedef struct { + int16_t lenOrPadding; + uint8_t sd; + uint8_t FamilyAndFlags; + uint16_t port; + uint16_t paddingOrAddr; + uint32_t 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 { + uint8_t sd; + uint8_t backlog; + uint8_t padding1; + uint8_t padding2; +} _ListenCommand_t; + +typedef struct { + uint8_t sd; + uint8_t padding0; + uint8_t padding1; + uint8_t padding2; +} _CloseCommand_t; + + +typedef struct { + uint8_t nfds; + uint8_t readFdsCount; + uint8_t writeFdsCount; + uint8_t padding; + uint16_t readFds; + uint16_t writeFds; + uint16_t tv_usec; + uint16_t tv_sec; +} _SelectCommand_t; + + +typedef struct { + uint16_t status; + uint8_t readFdsCount; + uint8_t writeFdsCount; + uint16_t readFds; + uint16_t writeFds; +} _SelectAsyncResponse_t; + +typedef struct { + uint8_t sd; + uint8_t level; + uint8_t optionName; + uint8_t optionLen; +} _setSockOptCommand_t; + +typedef struct { + uint8_t sd; + uint8_t level; + uint8_t optionName; + uint8_t optionLen; +} _getSockOptCommand_t; + +typedef struct { + int16_t status; + uint8_t sd; + uint8_t optionLen; +} _getSockOptResponse_t; + + +typedef struct { + uint16_t StatusOrLen; + uint8_t sd; + uint8_t FamilyAndFlags; +} _sendRecvCommand_t; + +//netapp structs moved + +/***************************************************************************************** +* FS structs +******************************************************************************************/ + +typedef struct { + uint32_t FileHandle; + uint32_t Offset; + uint16_t Len; + uint16_t Padding; +} _FsReadCommand_t; + +typedef struct { + uint32_t Mode; + uint32_t Token; +} _FsOpenCommand_t; + +typedef struct { + uint32_t FileHandle; + uint32_t Token; +} _FsOpenResponse_t; + + +typedef struct { + uint32_t FileHandle; + uint32_t CertificFileNameLength; + uint32_t SignatureLen; +} _FsCloseCommand_t; + + +typedef _BasicResponse_t _FsReadResponse_t; +typedef _BasicResponse_t _FsDeleteResponse_t; +typedef _BasicResponse_t _FsCloseResponse_t; + +typedef struct { + uint16_t Status; + uint16_t flags; + uint32_t FileLen; + uint32_t AllocatedLen; + uint32_t Token[4]; +} _FsGetInfoResponse_t; + +typedef struct { + uint8_t DeviceID; + uint8_t Padding[3]; +} _FsFormatCommand_t; + +typedef _BasicResponse_t _FsFormatResponse_t; + +typedef struct { + uint32_t Token; +} _FsDeleteCommand_t; + +typedef _FsDeleteCommand_t _FsGetInfoCommand_t; + +typedef struct { + uint32_t FileHandle; + uint32_t Offset; + uint16_t Len; + uint16_t Padding; +} _FsWriteCommand_t; + +typedef _BasicResponse_t _FsWriteResponse_t; + + +/* Set Max Async Payload length depending on flavor (Tiny, Small, etc.) */ +#define SL_ASYNC_MAX_PAYLOAD_LEN 160 /* size must be aligned to 4 */ +#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(uint32_t)) +#define SL_IPV6_ADDRESS_SIZE (4 * sizeof(uint32_t)) + +}//namespace mbed_cc3100 + +#endif /* _SL_PROTOCOL_TYPES_H_ */ +