From 55ae590bcb05a1dfaf500f2b939cf6fa2db166e2 Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Sun, 6 Jul 2014 23:55:07 +0200 Subject: [PATCH] Update CC host driver * Update to v1.15 --- src/cc3k/include/cc3000_common.h | 91 ++-- src/cc3k/include/cc3k.h | 1 + src/cc3k/include/data_types.h | 107 +++++ src/cc3k/include/evnt_handler.h | 40 +- src/cc3k/include/hci.h | 28 +- src/cc3k/include/host_driver_version.h | 2 +- src/cc3k/include/netapp.h | 63 +-- src/cc3k/include/nvmem.h | 16 +- src/cc3k/include/security.h | 12 +- src/cc3k/include/socket.h | 85 ++-- src/cc3k/include/wlan.h | 75 ++-- src/cc3k/src/cc3000_common.c | 45 +- src/cc3k/src/evnt_handler.c | 458 +++++++++---------- src/cc3k/src/hci.c | 80 ++-- src/cc3k/src/netapp.c | 169 ++++--- src/cc3k/src/nvmem.c | 110 +++-- src/cc3k/src/security.c | 39 +- src/cc3k/src/socket.c | 429 +++++++++--------- src/cc3k/src/spi.c | 9 +- src/cc3k/src/wlan.c | 590 ++++++++++++------------- 20 files changed, 1292 insertions(+), 1157 deletions(-) create mode 100644 src/cc3k/include/data_types.h diff --git a/src/cc3k/include/cc3000_common.h b/src/cc3k/include/cc3000_common.h index 3a748af14..b0419a4e7 100644 --- a/src/cc3k/include/cc3000_common.h +++ b/src/cc3k/include/cc3000_common.h @@ -35,9 +35,12 @@ #ifndef __COMMON_H__ #define __COMMON_H__ +#include "data_types.h" + //****************************************************************************** // Include files //****************************************************************************** +#include #include //***************************************************************************** @@ -49,6 +52,7 @@ #ifdef __cplusplus extern "C" { #endif + extern int errno; //***************************************************************************** @@ -63,16 +67,13 @@ extern int errno; //***************************************************************************** #define ERROR_SOCKET_INACTIVE -57 -#define HCI_CC_PAYLOAD_LEN 5 - #define WLAN_ENABLE (1) #define WLAN_DISABLE (0) - #define MAC_ADDR_LEN (6) - - +#define SP_PORTION_SIZE (32) + /*Defines for minimal and maximal RX buffer size. This size includes the spi header and hci header. The maximal buffer size derives from: @@ -95,9 +96,16 @@ extern int errno; Using gethostbyname() with minimal buffer size will limit the host name returned to 99 bytes only. The 1 is used for the overrun detection + + Buffer size increased to 130 following the add_profile() with WEP security + which requires TX buffer size of 130 bytes: + HEADERS_SIZE_EVNT + WLAN_ADD_PROFILE_WEP_PARAM_LEN + MAX SSID LEN + 4 * MAX KEY LEN = 130 + MAX SSID LEN = 32 + MAX SSID LEN = 13 (with add_profile only ascii key setting is supported, + therfore maximum key size is 13) */ -#define CC3000_MINIMAL_RX_SIZE (118+1) +#define CC3000_MINIMAL_RX_SIZE (130 + 1) #define CC3000_MAXIMAL_RX_SIZE (1519 + 1) /*Defines for minimal and maximal TX buffer size. @@ -119,10 +127,10 @@ extern int errno; The 1 is used for the overrun detection */ -#define CC3000_MINIMAL_TX_SIZE (118 + 1) -#define CC3000_MAXIMAL_TX_SIZE (1519 + 1) +#define CC3000_MINIMAL_TX_SIZE (130 + 1) +#define CC3000_MAXIMAL_TX_SIZE (1519 + 1) -//TX and RX buffer sizes - allow to receive and transmit maximum data at lengh 8. +//TX and RX buffer sizes, allow to receive and transmit maximum data at length 8. #ifdef CC3000_TINY_DRIVER #define TINY_CC3000_MAXIMAL_RX_SIZE 44 #define TINY_CC3000_MAXIMAL_TX_SIZE 59 @@ -141,21 +149,20 @@ extern int errno; #define CC3000_RX_BUFFER_SIZE (CC3000_MAXIMAL_RX_SIZE) #define CC3000_TX_BUFFER_SIZE (CC3000_MAXIMAL_TX_SIZE) - #define SP_PORTION_SIZE 512 -//if defined TINY DRIVER we use smaller rx and tx buffer in order to minimize RAM consumption +//if defined TINY DRIVER we use smaller RX and TX buffer in order to minimize RAM consumption #else #define CC3000_RX_BUFFER_SIZE (TINY_CC3000_MAXIMAL_RX_SIZE) #define CC3000_TX_BUFFER_SIZE (TINY_CC3000_MAXIMAL_TX_SIZE) - #define SP_PORTION_SIZE 32 #endif + //***************************************************************************** // Compound Types //***************************************************************************** -typedef long time_t; -typedef unsigned long clock_t; -typedef long suseconds_t; +typedef INT32 time_t; +typedef UINT32 clock_t; +typedef INT32 suseconds_t; typedef struct timeval timeval; @@ -165,28 +172,28 @@ struct timeval suseconds_t tv_usec; /* microseconds */ }; -typedef char *(*tFWPatches)(unsigned long *usLength); +typedef CHAR *(*tFWPatches)(UINT32 *usLength); -typedef char *(*tDriverPatches)(unsigned long *usLength); +typedef CHAR *(*tDriverPatches)(UINT32 *usLength); -typedef char *(*tBootLoaderPatches)(unsigned long *usLength); +typedef CHAR *(*tBootLoaderPatches)(UINT32 *usLength); -typedef void (*tWlanCB)(long event_type, char * data, unsigned char length ); +typedef void (*tWlanCB)(INT32 event_type, CHAR * data, UINT8 length ); -typedef long (*tWlanReadInteruptPin)(void); +typedef INT32 (*tWlanReadInteruptPin)(void); typedef void (*tWlanInterruptEnable)(void); typedef void (*tWlanInterruptDisable)(void); -typedef void (*tWriteWlanPin)(unsigned char val); +typedef void (*tWriteWlanPin)(UINT8 val); typedef struct { - unsigned short usRxEventOpcode; - unsigned short usEventOrDataReceived; - unsigned char *pucReceivedData; - unsigned char *pucTxCommandBuffer; + UINT16 usRxEventOpcode; + UINT16 usEventOrDataReceived; + UINT8 *pucReceivedData; + UINT8 *pucTxCommandBuffer; tFWPatches sFWPatches; tDriverPatches sDriverPatches; @@ -197,16 +204,16 @@ typedef struct tWlanInterruptDisable WlanInterruptDisable; tWriteWlanPin WriteWlanPin; - signed long slTransmitDataError; - unsigned short usNumberOfFreeBuffers; - unsigned short usSlBufferLength; - unsigned short usBufferSize; - unsigned short usRxDataPending; + INT32 slTransmitDataError; + UINT16 usNumberOfFreeBuffers; + UINT16 usSlBufferLength; + UINT16 usBufferSize; + UINT16 usRxDataPending; - unsigned long NumberOfSentPackets; - unsigned long NumberOfReleasedPackets; + UINT32 NumberOfSentPackets; + UINT32 NumberOfReleasedPackets; - unsigned char InformHostOnTxComplete; + UINT8 InformHostOnTxComplete; }sSimplLinkInformation; extern volatile sSimplLinkInformation tSLInformation; @@ -232,7 +239,7 @@ extern volatile sSimplLinkInformation tSLInformation; // //***************************************************************************** -extern void SimpleLinkWaitEvent(unsigned short usOpcode, void *pRetParams); +extern void SimpleLinkWaitEvent(UINT16 usOpcode, void *pRetParams); //***************************************************************************** // @@ -250,7 +257,7 @@ extern void SimpleLinkWaitEvent(unsigned short usOpcode, void *pRetParams); // //***************************************************************************** -extern void SimpleLinkWaitData(unsigned char *pBuf, unsigned char *from, unsigned char *fromlen); +extern void SimpleLinkWaitData(UINT8 *pBuf, UINT8 *from, UINT8 *fromlen); //***************************************************************************** // @@ -266,7 +273,7 @@ extern void SimpleLinkWaitData(unsigned char *pBuf, unsigned char *from, unsigne // //***************************************************************************** -extern unsigned char* UINT32_TO_STREAM_f (unsigned char *p, unsigned long u32); +extern UINT8* UINT32_TO_STREAM_f (UINT8 *p, UINT32 u32); //***************************************************************************** // @@ -282,7 +289,7 @@ extern unsigned char* UINT32_TO_STREAM_f (unsigned char *p, unsigned long u32); // //***************************************************************************** -extern unsigned char* UINT16_TO_STREAM_f (unsigned char *p, unsigned short u16); +extern UINT8* UINT16_TO_STREAM_f (UINT8 *p, UINT16 u16); //***************************************************************************** // @@ -298,7 +305,7 @@ extern unsigned char* UINT16_TO_STREAM_f (unsigned char *p, unsigned short u16); // //***************************************************************************** -extern unsigned short STREAM_TO_UINT16_f(char* p, unsigned short offset); +extern UINT16 STREAM_TO_UINT16_f(CHAR* p, UINT16 offset); //***************************************************************************** // @@ -314,7 +321,7 @@ extern unsigned short STREAM_TO_UINT16_f(char* p, unsigned short offset); // //***************************************************************************** -extern unsigned long STREAM_TO_UINT32_f(char* p, unsigned short offset); +extern UINT32 STREAM_TO_UINT32_f(CHAR* p, UINT16 offset); //***************************************************************************** @@ -329,14 +336,14 @@ extern unsigned long STREAM_TO_UINT32_f(char* p, unsigned short offset); //This macro is used for copying 32 bit to stream while converting to little endian format. #define UINT32_TO_STREAM(_p, _u32) (UINT32_TO_STREAM_f(_p, _u32)) //This macro is used for copying a specified value length bits (l) to stream while converting to little endian format. -#define ARRAY_TO_STREAM(p, a, l) {register short _i; for (_i = 0; _i < l; _i++) *(p)++ = ((unsigned char *) a)[_i];} +#define ARRAY_TO_STREAM(p, a, l) {register INT16 _i; for (_i = 0; _i < l; _i++) *(p)++ = ((UINT8 *) a)[_i];} //This macro is used for copying received stream to 8 bit in little endian format. -#define STREAM_TO_UINT8(_p, _offset, _u8) {_u8 = (unsigned char)(*(_p + _offset));} +#define STREAM_TO_UINT8(_p, _offset, _u8) {_u8 = (UINT8)(*(_p + _offset));} //This macro is used for copying received stream to 16 bit in little endian format. #define STREAM_TO_UINT16(_p, _offset, _u16) {_u16 = STREAM_TO_UINT16_f(_p, _offset);} //This macro is used for copying received stream to 32 bit in little endian format. #define STREAM_TO_UINT32(_p, _offset, _u32) {_u32 = STREAM_TO_UINT32_f(_p, _offset);} -#define STREAM_TO_STREAM(p, a, l) {register short _i; for (_i = 0; _i < l; _i++) *(a)++= ((unsigned char *) p)[_i];} +#define STREAM_TO_STREAM(p, a, l) {register INT16 _i; for (_i = 0; _i < l; _i++) *(a)++= ((UINT8 *) p)[_i];} diff --git a/src/cc3k/include/cc3k.h b/src/cc3k/include/cc3k.h index bd4c13d01..4ca253a32 100644 --- a/src/cc3k/include/cc3k.h +++ b/src/cc3k/include/cc3k.h @@ -6,6 +6,7 @@ #include "socket.h" #include "nvmem.h" #include "netapp.h" +#include "patch_prog.h" #endif //__CC3K_H__ diff --git a/src/cc3k/include/data_types.h b/src/cc3k/include/data_types.h new file mode 100644 index 000000000..71d65d00b --- /dev/null +++ b/src/cc3k/include/data_types.h @@ -0,0 +1,107 @@ +/***************************************************************************** +* +* data_types.h - CC3000 Host Driver Implementation. +* Copyright (C) 2011 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. +* +*****************************************************************************/ +#ifndef __DATA_TYPES__ +#define __DATA_TYPES__ + +//***************************************************************************** +// +// If building with a C++ compiler, make all of the definitions in this header +// have a C binding. +// +//***************************************************************************** +#ifdef __cplusplus +extern "C" { +#endif + + +#ifndef NULL +#define NULL (0) +#endif + +#ifndef FALSE +#define FALSE (0) +#endif + +#ifndef TRUE +#define TRUE (!FALSE) +#endif + +#ifndef OK +#define OK (0) +#endif + +#ifndef _INT8 +#define _INT8 +typedef signed char INT8; +#endif + +#ifndef _UINT8 +#define _UINT8 +typedef unsigned char UINT8; +#endif + +#ifndef _INT16 +#define _INT16 +typedef signed short INT16; +#endif + +#ifndef _UINT16 +#define _UINT16 +typedef unsigned short UINT16; +#endif + +#ifndef _BOOLEAN +#define _BOOLEAN +typedef unsigned char BOOLEAN; +#endif + +#ifndef _INT32 +#define _INT32 +typedef signed long INT32; +#endif + +#ifndef _UINT32 +#define _UINT32 +typedef unsigned long UINT32; +#endif + +typedef int INT; +typedef char CHAR; + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* __DATA_TYPE__ */ diff --git a/src/cc3k/include/evnt_handler.h b/src/cc3k/include/evnt_handler.h index b79d5adda..45ac7ed82 100644 --- a/src/cc3k/include/evnt_handler.h +++ b/src/cc3k/include/evnt_handler.h @@ -67,7 +67,7 @@ extern "C" { //! event handler from global array of handlers pointers // //***************************************************************************** -extern unsigned char *hci_event_handler(void *pRetParams, unsigned char *from, unsigned char *fromlen); +extern UINT8 *hci_event_handler(void *pRetParams, UINT8 *from, UINT8 *fromlen); //***************************************************************************** // @@ -81,7 +81,7 @@ extern unsigned char *hci_event_handler(void *pRetParams, unsigned char *from, u //! @brief Handle unsolicited events // //***************************************************************************** -extern long hci_unsol_event_handler(char *event_hdr); +extern INT32 hci_unsol_event_handler(CHAR *event_hdr); //***************************************************************************** // @@ -95,9 +95,9 @@ extern long hci_unsol_event_handler(char *event_hdr); //! corresponding event handler. // //***************************************************************************** -extern long hci_unsolicited_event_handler(void); +extern INT32 hci_unsolicited_event_handler(void); -#define M_BSD_RESP_PARAMS_OFFSET(hci_event_hdr)((char *)(hci_event_hdr) + HCI_EVENT_HEADER_SIZE) +#define M_BSD_RESP_PARAMS_OFFSET(hci_event_hdr)((CHAR *)(hci_event_hdr) + HCI_EVENT_HEADER_SIZE) #define SOCKET_STATUS_ACTIVE 0 #define SOCKET_STATUS_INACTIVE 1 @@ -107,15 +107,15 @@ extern long hci_unsolicited_event_handler(void); #define M_IS_VALID_SD(sd) ((0 <= (sd)) && ((sd) <= 7)) #define M_IS_VALID_STATUS(status) (((status) == SOCKET_STATUS_ACTIVE)||((status) == SOCKET_STATUS_INACTIVE)) -extern unsigned long socket_active_status; +extern UINT32 socket_active_status; -extern void set_socket_active_status(long Sd, long Status); -extern long get_socket_active_status(long Sd); +extern void set_socket_active_status(INT32 Sd, INT32 Status); +extern INT32 get_socket_active_status(INT32 Sd); typedef struct _bsd_accept_return_t { - long iSocketDescriptor; - long iStatus; + INT32 iSocketDescriptor; + INT32 iStatus; sockaddr tSocketAddress; } tBsdReturnParams; @@ -123,9 +123,9 @@ typedef struct _bsd_accept_return_t typedef struct _bsd_read_return_t { - long iSocketDescriptor; - long iNumberOfBytes; - unsigned long uiFlags; + INT32 iSocketDescriptor; + INT32 iNumberOfBytes; + UINT32 uiFlags; } tBsdReadReturnParams; #define BSD_RECV_FROM_FROMLEN_OFFSET (4) @@ -134,23 +134,23 @@ typedef struct _bsd_read_return_t typedef struct _bsd_select_return_t { - long iStatus; - unsigned long uiRdfd; - unsigned long uiWrfd; - unsigned long uiExfd; + INT32 iStatus; + UINT32 uiRdfd; + UINT32 uiWrfd; + UINT32 uiExfd; } tBsdSelectRecvParams; typedef struct _bsd_getsockopt_return_t { - unsigned char ucOptValue[4]; - char iStatus; + UINT8 ucOptValue[4]; + CHAR iStatus; } tBsdGetSockOptReturnParams; typedef struct _bsd_gethostbyname_return_t { - long retVal; - long outputAddress; + INT32 retVal; + INT32 outputAddress; } tBsdGethostbynameParams; //***************************************************************************** diff --git a/src/cc3k/include/hci.h b/src/cc3k/include/hci.h index b714ee95b..f6207e562 100644 --- a/src/cc3k/include/hci.h +++ b/src/cc3k/include/hci.h @@ -102,6 +102,7 @@ extern "C" { #define HCI_CMND_RECVFROM 0x100D #define HCI_CMND_GETHOSTNAME 0x1010 #define HCI_CMND_MDNS_ADVERTISE 0x1011 +#define HCI_CMND_GETMSSVALUE 0x1012 #define HCI_DATA_BASE 0x80 @@ -167,7 +168,8 @@ extern "C" { #define HCI_EVNT_GETSOCKOPT HCI_CMND_GETSOCKOPT #define HCI_EVNT_BSD_GETHOSTBYNAME HCI_CMND_GETHOSTNAME #define HCI_EVNT_MDNS_ADVERTISE HCI_CMND_MDNS_ADVERTISE - +#define HCI_EVNT_GETMSSVALUE HCI_CMND_GETMSSVALUE + #define HCI_EVNT_SEND 0x1003 #define HCI_EVNT_WRITE 0x100E #define HCI_EVNT_SENDTO 0x100F @@ -253,9 +255,9 @@ extern "C" { //! @brief Initiate an HCI command. // //***************************************************************************** -extern unsigned short hci_command_send(unsigned short usOpcode, - unsigned char *ucArgs, - unsigned char ucArgsLength); +extern UINT16 hci_command_send(UINT16 usOpcode, + UINT8 *ucArgs, + UINT8 ucArgsLength); //***************************************************************************** @@ -273,12 +275,12 @@ extern unsigned short hci_command_send(unsigned short usOpcode, //! @brief Initiate an HCI data write operation // //***************************************************************************** -extern long hci_data_send(unsigned char ucOpcode, - unsigned char *ucArgs, - unsigned short usArgsLength, - unsigned short usDataLength, - const unsigned char *ucTail, - unsigned short usTailLength); +extern INT32 hci_data_send(UINT8 ucOpcode, + UINT8 *ucArgs, + UINT16 usArgsLength, + UINT16 usDataLength, + const UINT8 *ucTail, + UINT16 usTailLength); //***************************************************************************** @@ -295,8 +297,8 @@ extern long hci_data_send(unsigned char ucOpcode, //! @brief Prepare HCI header and initiate an HCI data write operation // //***************************************************************************** -extern void hci_data_command_send(unsigned short usOpcode, unsigned char *pucBuff, - unsigned char ucArgsLength, unsigned short ucDataLength); +extern void hci_data_command_send(UINT16 usOpcode, UINT8 *pucBuff, + UINT8 ucArgsLength, UINT16 ucDataLength); //***************************************************************************** // @@ -312,7 +314,7 @@ extern void hci_data_command_send(unsigned short usOpcode, unsigned char *pucBuf //! @brief Prepare HCI header and initiate an HCI patch write operation // //***************************************************************************** -extern void hci_patch_send(unsigned char ucOpcode, unsigned char *pucBuff, char *patch, unsigned short usDataLength); +extern void hci_patch_send(UINT8 ucOpcode, UINT8 *pucBuff, CHAR *patch, UINT16 usDataLength); diff --git a/src/cc3k/include/host_driver_version.h b/src/cc3k/include/host_driver_version.h index c218704a2..9f2132e89 100644 --- a/src/cc3k/include/host_driver_version.h +++ b/src/cc3k/include/host_driver_version.h @@ -35,7 +35,7 @@ #ifndef __HOST_DRIVER_VERSION_H__ #define __HOST_DRIVER_VERSION_H__ -#define DRIVER_VERSION_NUMBER 13 +#define DRIVER_VERSION_NUMBER 15 diff --git a/src/cc3k/include/netapp.h b/src/cc3k/include/netapp.h index 8c9e7e83d..d5aa09a4a 100644 --- a/src/cc3k/include/netapp.h +++ b/src/cc3k/include/netapp.h @@ -35,6 +35,7 @@ #ifndef __NETAPP_H__ #define __NETAPP_H__ +#include "data_types.h" //***************************************************************************** // @@ -55,33 +56,33 @@ extern "C" { typedef struct _netapp_dhcp_ret_args_t { - unsigned char aucIP[4]; - unsigned char aucSubnetMask[4]; - unsigned char aucDefaultGateway[4]; - unsigned char aucDHCPServer[4]; - unsigned char aucDNSServer[4]; + UINT8 aucIP[4]; + UINT8 aucSubnetMask[4]; + UINT8 aucDefaultGateway[4]; + UINT8 aucDHCPServer[4]; + UINT8 aucDNSServer[4]; }tNetappDhcpParams; typedef struct _netapp_ipconfig_ret_args_t { - unsigned char aucIP[4]; - unsigned char aucSubnetMask[4]; - unsigned char aucDefaultGateway[4]; - unsigned char aucDHCPServer[4]; - unsigned char aucDNSServer[4]; - unsigned char uaMacAddr[6]; - unsigned char uaSSID[32]; + UINT8 aucIP[4]; + UINT8 aucSubnetMask[4]; + UINT8 aucDefaultGateway[4]; + UINT8 aucDHCPServer[4]; + UINT8 aucDNSServer[4]; + UINT8 uaMacAddr[6]; + UINT8 uaSSID[32]; }tNetappIpconfigRetArgs; /*Ping send report parameters*/ typedef struct _netapp_pingreport_args { - unsigned long packets_sent; - unsigned long packets_received; - unsigned long min_round_time; - unsigned long max_round_time; - unsigned long avg_round_time; + UINT32 packets_sent; + UINT32 packets_received; + UINT32 min_round_time; + UINT32 max_round_time; + UINT32 avg_round_time; } netapp_pingreport_args_t; @@ -99,7 +100,7 @@ typedef struct _netapp_pingreport_args //! over resets. // //***************************************************************************** -extern long netapp_config_mac_adrress( unsigned char *mac ); +extern INT32 netapp_config_mac_adrress( UINT8 *mac ); //***************************************************************************** // @@ -127,7 +128,7 @@ extern long netapp_config_mac_adrress( unsigned char *mac ); //! AP was established. //! //***************************************************************************** -extern long netapp_dhcp(unsigned long *aucIP, unsigned long *aucSubnetMask,unsigned long *aucDefaultGateway, unsigned long *aucDNSServer); +extern INT32 netapp_dhcp(UINT32 *aucIP, UINT32 *aucSubnetMask,UINT32 *aucDefaultGateway, UINT32 *aucDNSServer); @@ -140,7 +141,7 @@ extern long netapp_dhcp(unsigned long *aucIP, unsigned long *aucSubnetMask,unsi //! 0 or 0xffffffff == infinity lease timeout. //! Resolution:10 seconds. Influence: only after //! reconnecting to the AP. -//! Minimal bound value: MIN_TIMER_VAL_SECONDS - 20 seconds. +//! Minimal bound value: MIN_TIMER_VAL_SECONDS - 10 seconds. //! The parameter is saved into the CC3000 NVMEM. //! The default value on CC3000 is 14400 seconds. //! @@ -149,7 +150,7 @@ extern long netapp_dhcp(unsigned long *aucIP, unsigned long *aucSubnetMask,unsi //! the end of the timeout. //! Range: [0-0xffffffff] seconds, 0 == infinity ARP timeout //! Resolution: 10 seconds. Influence: on runtime. -//! Minimal bound value: MIN_TIMER_VAL_SECONDS - 20 seconds +//! Minimal bound value: MIN_TIMER_VAL_SECONDS - 10 seconds //! The parameter is saved into the CC3000 NVMEM. //! The default value on CC3000 is 3600 seconds. //! @@ -157,7 +158,7 @@ extern long netapp_dhcp(unsigned long *aucIP, unsigned long *aucSubnetMask,unsi //! Range: [0-0xffffffff] seconds, 0 == infinity timeout //! Resolution: 10 seconds. //! Influence: on runtime. -//! Minimal bound value: MIN_TIMER_VAL_SECONDS - 20 sec +//! Minimal bound value: MIN_TIMER_VAL_SECONDS - 10 sec //! The parameter is saved into the CC3000 NVMEM. //! The default value on CC3000 is 10 seconds. //! @@ -166,7 +167,7 @@ extern long netapp_dhcp(unsigned long *aucIP, unsigned long *aucSubnetMask,unsi //! end of the socket timeout the socket will be closed //! Range: [0-0xffffffff] sec, 0 == infinity timeout. //! Resolution: 10 seconds. Influence: on runtime. -//! Minimal bound value: MIN_TIMER_VAL_SECONDS - 20 sec +//! Minimal bound value: MIN_TIMER_VAL_SECONDS - 10 sec //! The parameter is saved into the CC3000 NVMEM. //! The default value on CC3000 is 60 seconds. //! @@ -176,12 +177,12 @@ extern long netapp_dhcp(unsigned long *aucIP, unsigned long *aucSubnetMask,unsi //! DHCP lease timeout, ARP refresh timeout, keepalive event //! timeout and socket inactivity timeout //! -//! @note If a parameter set to non zero value which is less than 20s, -//! it will be set automatically to 20s. +//! @note If a parameter set to non zero value which is less than 10s, +//! it will be set automatically to 10s. //! //***************************************************************************** - #ifndef CC3000_TINY_DRIVER -extern long netapp_timeout_values(unsigned long *aucDHCP, unsigned long *aucARP,unsigned long *aucKeepalive, unsigned long *aucInactivity); +#ifndef CC3000_TINY_DRIVER +extern INT32 netapp_timeout_values(UINT32 *aucDHCP, UINT32 *aucARP, UINT32 *aucKeepalive, UINT32 *aucInactivity); #endif //***************************************************************************** @@ -206,7 +207,7 @@ extern long netapp_timeout_values(unsigned long *aucDHCP, unsigned long *aucARP, //***************************************************************************** #ifndef CC3000_TINY_DRIVER -extern long netapp_ping_send(unsigned long *ip, unsigned long ulPingAttempts, unsigned long ulPingSize, unsigned long ulPingTimeout); +extern INT32 netapp_ping_send(UINT32 *ip, UINT32 ulPingAttempts, UINT32 ulPingSize, UINT32 ulPingTimeout); #endif //***************************************************************************** @@ -223,7 +224,7 @@ extern long netapp_ping_send(unsigned long *ip, unsigned long ulPingAttempts, un //***************************************************************************** #ifndef CC3000_TINY_DRIVER -extern long netapp_ping_stop(); +extern INT32 netapp_ping_stop(); #endif //***************************************************************************** // @@ -294,7 +295,7 @@ extern void netapp_ipconfig( tNetappIpconfigRetArgs * ipconfig ); //***************************************************************************** #ifndef CC3000_TINY_DRIVER -extern long netapp_arp_flush(); +extern INT32 netapp_arp_flush(); #endif @@ -318,7 +319,7 @@ extern long netapp_arp_flush(); #ifndef CC3000_TINY_DRIVER -long netapp_set_debug_level(unsigned long ulLevel); +INT32 netapp_set_debug_level(UINT32 ulLevel); #endif //***************************************************************************** // diff --git a/src/cc3k/include/nvmem.h b/src/cc3k/include/nvmem.h index fa33faf38..1bd1b610b 100644 --- a/src/cc3k/include/nvmem.h +++ b/src/cc3k/include/nvmem.h @@ -99,7 +99,7 @@ extern "C" { //! @param ulOffset ulOffset in file from where to read //! @param buff output buffer pointer //! -//! @return number of bytes read, otherwise error. +//! @return on success 0, error otherwise. //! //! @brief Reads data from the file referred by the ulFileId parameter. //! Reads data from file ulOffset till length. Err if the file can't @@ -107,7 +107,7 @@ extern "C" { //! //***************************************************************************** -extern signed long nvmem_read(unsigned long file_id, unsigned long length, unsigned long offset, unsigned char *buff); +extern INT32 nvmem_read(UINT32 file_id, UINT32 length, UINT32 offset, UINT8 *buff); //***************************************************************************** // @@ -131,7 +131,7 @@ extern signed long nvmem_read(unsigned long file_id, unsigned long length, unsig //! //***************************************************************************** -extern signed long nvmem_write(unsigned long ulFileId, unsigned long ulLength, unsigned long ulEntryOffset, unsigned char *buff); +extern INT32 nvmem_write(UINT32 ulFileId, UINT32 ulLength, UINT32 ulEntryOffset, UINT8 *buff); //***************************************************************************** @@ -146,7 +146,7 @@ extern signed long nvmem_write(unsigned long ulFileId, unsigned long ulLength, u //! mac address as appears over the air (OUI first) //! //***************************************************************************** -extern unsigned char nvmem_set_mac_address(unsigned char *mac); +extern UINT8 nvmem_set_mac_address(UINT8 *mac); //***************************************************************************** @@ -161,7 +161,7 @@ extern unsigned char nvmem_set_mac_address(unsigned char *mac); //! mac address as appears over the air (OUI first) //! //***************************************************************************** -extern unsigned char nvmem_get_mac_address(unsigned char *mac); +extern UINT8 nvmem_get_mac_address(UINT8 *mac); //***************************************************************************** @@ -181,7 +181,7 @@ extern unsigned char nvmem_get_mac_address(unsigned char *mac); //! applied in SP_PORTION_SIZE bytes portions. //! //***************************************************************************** -extern unsigned char nvmem_write_patch(unsigned long ulFileId, unsigned long spLength, const unsigned char *spData); +extern UINT8 nvmem_write_patch(UINT32 ulFileId, UINT32 spLength, const UINT8 *spData); //***************************************************************************** @@ -198,7 +198,7 @@ extern unsigned char nvmem_write_patch(unsigned long ulFileId, unsigned long spL //! //***************************************************************************** #ifndef CC3000_TINY_DRIVER -extern unsigned char nvmem_read_sp_version(unsigned char* patchVer); +extern UINT8 nvmem_read_sp_version(UINT8* patchVer); #endif //***************************************************************************** @@ -223,7 +223,7 @@ extern unsigned char nvmem_read_sp_version(unsigned char* patchVer); //! set ulNewLen=0. //! //***************************************************************************** -extern signed long nvmem_create_entry(unsigned long file_id, unsigned long newlen); +extern INT32 nvmem_create_entry(UINT32 file_id, UINT32 newlen); //***************************************************************************** diff --git a/src/cc3k/include/security.h b/src/cc3k/include/security.h index 5c70c2926..9a52b4373 100644 --- a/src/cc3k/include/security.h +++ b/src/cc3k/include/security.h @@ -69,7 +69,7 @@ extern "C" { //! //! //***************************************************************************** -extern void aes_encrypt(unsigned char *state, unsigned char *key); +extern void aes_encrypt(UINT8 *state, UINT8 *key); //***************************************************************************** // @@ -87,7 +87,7 @@ extern void aes_encrypt(unsigned char *state, unsigned char *key); //! //! //***************************************************************************** -extern void aes_decrypt(unsigned char *state, unsigned char *key); +extern void aes_decrypt(UINT8 *state, UINT8 *key); //***************************************************************************** @@ -104,7 +104,7 @@ extern void aes_decrypt(unsigned char *state, unsigned char *key); //! //! //***************************************************************************** -extern signed long aes_read_key(unsigned char *key); +extern INT32 aes_read_key(UINT8 *key); //***************************************************************************** // @@ -119,8 +119,12 @@ extern signed long aes_read_key(unsigned char *key); //! //! //***************************************************************************** -extern signed long aes_write_key(unsigned char *key); +extern INT32 aes_write_key(UINT8 *key); #endif //CC3000_UNENCRYPTED_SMART_CONFIG +#ifdef __cplusplus +} +#endif // __cplusplus + #endif diff --git a/src/cc3k/include/socket.h b/src/cc3k/include/socket.h index 8e6ce0dcf..209ce5d53 100644 --- a/src/cc3k/include/socket.h +++ b/src/cc3k/include/socket.h @@ -94,9 +94,6 @@ extern "C" { #define SOCK_ON 0 // socket non-blocking mode is enabled #define SOCK_OFF 1 // socket blocking mode is enabled -#define TCP_NODELAY 0x0001 -#define TCP_BSDURGENT 0x7000 - #define MAX_PACKET_SIZE 1500 #define MAX_LISTEN_QUEUE 4 @@ -113,27 +110,27 @@ extern "C" { typedef struct _in_addr_t { - unsigned long s_addr; // load with inet_aton() + UINT32 s_addr; // load with inet_aton() } in_addr; typedef struct _sockaddr_t { - unsigned short int sa_family; - unsigned char sa_data[14]; + UINT16 sa_family; + UINT8 sa_data[14]; } sockaddr; typedef struct _sockaddr_in_t { - short sin_family; // e.g. AF_INET - unsigned short sin_port; // e.g. htons(3490) + INT16 sin_family; // e.g. AF_INET + UINT16 sin_port; // e.g. htons(3490) in_addr sin_addr; // see struct in_addr, below - char sin_zero[8]; // zero this if you want to + CHAR sin_zero[8]; // zero this if you want to } sockaddr_in; -typedef unsigned long socklen_t; +typedef UINT32 socklen_t; -// The fd_set member is required to be an array of longs. -typedef long int __fd_mask; +// The fd_set member is required to be an array of INT32s. +typedef INT32 __fd_mask; // It's easier to assume 8-bit bytes than to get CHAR_BIT. #define __NFDBITS (8 * sizeof (__fd_mask)) @@ -151,7 +148,7 @@ typedef struct // the array isn't too big. #define __FD_ZERO(set) \ do { \ - unsigned int __i; \ + UINT16 __i; \ fd_set *__arr = (set); \ for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) \ __FDS_BITS (__arr)[__i] = 0; \ @@ -168,16 +165,16 @@ typedef struct //Use in case of Big Endian only -#define htonl(A) ((((unsigned long)(A) & 0xff000000) >> 24) | \ - (((unsigned long)(A) & 0x00ff0000) >> 8) | \ - (((unsigned long)(A) & 0x0000ff00) << 8) | \ - (((unsigned long)(A) & 0x000000ff) << 24)) +#define htonl(A) ((((UINT32)(A) & 0xff000000) >> 24) | \ + (((UINT32)(A) & 0x00ff0000) >> 8) | \ + (((UINT32)(A) & 0x0000ff00) << 8) | \ + (((UINT32)(A) & 0x000000ff) << 24)) #define ntohl htonl //Use in case of Big Endian only -#define htons(A) ((((unsigned long)(A) & 0xff00) >> 8) | \ - (((unsigned long)(A) & 0x00ff) << 8)) +#define htons(A) ((((UINT32)(A) & 0xff00) >> 8) | \ + (((UINT32)(A) & 0x00ff) << 8)) #define ntohs htons @@ -218,7 +215,7 @@ typedef struct //! application layer to obtain a socket handle. // //***************************************************************************** -extern int socket(long domain, long type, long protocol); +extern INT16 socket(INT32 domain, INT32 type, INT32 protocol); //***************************************************************************** // @@ -231,7 +228,7 @@ extern int socket(long domain, long type, long protocol); //! @brief The socket function closes a created socket. // //***************************************************************************** -extern long closesocket(long sd); +extern INT32 closesocket(INT32 sd); //***************************************************************************** // @@ -277,7 +274,7 @@ extern long closesocket(long sd); //! @sa socket ; bind ; listen // //***************************************************************************** -extern long accept(long sd, sockaddr *addr, socklen_t *addrlen); +extern INT32 accept(INT32 sd, sockaddr *addr, socklen_t *addrlen); //***************************************************************************** // @@ -301,7 +298,7 @@ extern long accept(long sd, sockaddr *addr, socklen_t *addrlen); //! @sa socket ; accept ; listen // //***************************************************************************** -extern long bind(long sd, const sockaddr *addr, long addrlen); +extern INT32 bind(INT32 sd, const sockaddr *addr, INT32 addrlen); //***************************************************************************** // @@ -325,7 +322,7 @@ extern long bind(long sd, const sockaddr *addr, long addrlen); //! @note On this version, backlog is not supported // //***************************************************************************** -extern long listen(long sd, long backlog); +extern INT32 listen(INT32 sd, INT32 backlog); //***************************************************************************** // @@ -346,7 +343,7 @@ extern long listen(long sd, long backlog); // //***************************************************************************** #ifndef CC3000_TINY_DRIVER -extern int gethostbyname(char * hostname, unsigned short usNameLen, unsigned long* out_ip_addr); +extern INT16 gethostbyname(CHAR * hostname, UINT16 usNameLen, UINT32* out_ip_addr); #endif @@ -378,7 +375,7 @@ extern int gethostbyname(char * hostname, unsigned short usNameLen, unsigned lon //! @sa socket // //***************************************************************************** -extern long connect(long sd, const sockaddr *addr, long addrlen); +extern INT32 connect(INT32 sd, const sockaddr *addr, INT32 addrlen); //***************************************************************************** // @@ -417,7 +414,7 @@ extern long connect(long sd, const sockaddr *addr, long addrlen); //! @sa socket // //***************************************************************************** -extern int select(long nfds, fd_set *readsds, fd_set *writesds, +extern INT16 select(INT32 nfds, fd_set *readsds, fd_set *writesds, fd_set *exceptsds, struct timeval *timeout); //***************************************************************************** @@ -458,7 +455,7 @@ extern int select(long nfds, fd_set *readsds, fd_set *writesds, //! 1. SOCKOPT_RECV_TIMEOUT (optname) //! SOCKOPT_RECV_TIMEOUT configures recv and recvfrom timeout //! in milliseconds. -//! In that case optval should be pointer to unsigned long. +//! In that case optval should be pointer to UINT32. //! 2. SOCKOPT_NONBLOCK (optname). sets the socket non-blocking mode on //! or off. //! In that case optval should be SOCK_ON or SOCK_OFF (optval). @@ -467,7 +464,7 @@ extern int select(long nfds, fd_set *readsds, fd_set *writesds, // //***************************************************************************** #ifndef CC3000_TINY_DRIVER -extern int setsockopt(long sd, long level, long optname, const void *optval, +extern INT16 setsockopt(INT32 sd, INT32 level, INT32 optname, const void *optval, socklen_t optlen); #endif //***************************************************************************** @@ -508,7 +505,7 @@ extern int setsockopt(long sd, long level, long optname, const void *optval, //! 1. SOCKOPT_RECV_TIMEOUT (optname) //! SOCKOPT_RECV_TIMEOUT configures recv and recvfrom timeout //! in milliseconds. -//! In that case optval should be pointer to unsigned long. +//! In that case optval should be pointer to UINT32. //! 2. SOCKOPT_NONBLOCK (optname). sets the socket non-blocking mode on //! or off. //! In that case optval should be SOCK_ON or SOCK_OFF (optval). @@ -516,7 +513,7 @@ extern int setsockopt(long sd, long level, long optname, const void *optval, //! @sa setsockopt // //***************************************************************************** -extern int getsockopt(long sd, long level, long optname, void *optval, +extern INT16 getsockopt(INT32 sd, INT32 level, INT32 optname, void *optval, socklen_t *optlen); //***************************************************************************** @@ -540,7 +537,7 @@ extern int getsockopt(long sd, long level, long optname, void *optval, //! @Note On this version, only blocking mode is supported. // //***************************************************************************** -extern int recv(long sd, void *buf, long len, long flags); +extern INT16 recv(INT32 sd, void *buf, INT32 len, INT32 flags); //***************************************************************************** // @@ -570,7 +567,7 @@ extern int recv(long sd, void *buf, long len, long flags); //! @Note On this version, only blocking mode is supported. // //***************************************************************************** -extern int recvfrom(long sd, void *buf, long len, long flags, sockaddr *from, +extern INT16 recvfrom(INT32 sd, void *buf, INT32 len, INT32 flags, sockaddr *from, socklen_t *fromlen); //***************************************************************************** @@ -595,7 +592,7 @@ extern int recvfrom(long sd, void *buf, long len, long flags, sockaddr *from, // //***************************************************************************** -extern int send(long sd, const void *buf, long len, long flags); +extern INT16 send(INT32 sd, const void *buf, INT32 len, INT32 flags); //***************************************************************************** // @@ -623,7 +620,7 @@ extern int send(long sd, const void *buf, long len, long flags); // //***************************************************************************** -extern int sendto(long sd, const void *buf, long len, long flags, +extern INT16 sendto(INT32 sd, const void *buf, INT32 len, INT32 flags, const sockaddr *to, socklen_t tolen); //***************************************************************************** @@ -633,7 +630,7 @@ extern int sendto(long sd, const void *buf, long len, long flags, //! @param[in] mdnsEnabled flag to enable/disable the mDNS feature //! @param[in] deviceServiceName Service name as part of the published //! canonical domain name -//! @param[in] deviceServiceNameLength Length of the service name +//! @param[in] deviceServiceNameLength Length of the service name - up to 32 chars //! //! //! @return On success, zero is returned, return SOC_ERROR if socket was not @@ -642,7 +639,21 @@ extern int sendto(long sd, const void *buf, long len, long flags, //! @brief Set CC3000 in mDNS advertiser mode in order to advertise itself. // //***************************************************************************** -extern int mdnsAdvertiser(unsigned short mdnsEnabled, char * deviceServiceName, unsigned short deviceServiceNameLength); +extern INT16 mdnsAdvertiser(UINT16 mdnsEnabled, CHAR * deviceServiceName, UINT16 deviceServiceNameLength); + + +//***************************************************************************** +// +//! getmssvalue +//! +//! @param[in] sd socket descriptor +//! +//! @return On success, returns the MSS value of a TCP connection +//! +//! @brief Returns the MSS value of a TCP connection according to the socket descriptor +// +//***************************************************************************** +extern UINT16 getmssvalue (INT32 sd); //***************************************************************************** // diff --git a/src/cc3k/include/wlan.h b/src/cc3k/include/wlan.h index 87fb059af..3821612b2 100644 --- a/src/cc3k/include/wlan.h +++ b/src/cc3k/include/wlan.h @@ -141,7 +141,7 @@ extern void wlan_init( tWlanCB sWlanCB, //! // //***************************************************************************** -extern int wlan_start(unsigned short usPatchesAvailableAtHost); +extern int wlan_start(UINT16 usPatchesAvailableAtHost); //***************************************************************************** // @@ -169,7 +169,7 @@ extern void wlan_stop(void); //! @param ssid up to 32 bytes and is ASCII SSID of the AP //! @param ssid_len length of the SSID //! @param bssid 6 bytes specified the AP bssid -//! @param key up to 16 bytes specified the AP security key +//! @param key up to 32 bytes specified the AP security key //! @param key_len key length //! //! @return On success, zero is returned. On error, negative is returned. @@ -189,10 +189,10 @@ extern void wlan_stop(void); // //***************************************************************************** #ifndef CC3000_TINY_DRIVER -extern long wlan_connect(unsigned long ulSecType, char *ssid, long ssid_len, - unsigned char *bssid, unsigned char *key, long key_len); +extern INT32 wlan_connect(UINT32 ulSecType, CHAR *ssid, INT32 ssid_len, + UINT8 *bssid, UINT8 *key, INT32 key_len); #else -extern long wlan_connect(char *ssid, long ssid_len); +extern INT32 wlan_connect(CHAR *ssid, INT32 ssid_len); #endif @@ -208,7 +208,7 @@ extern long wlan_connect(char *ssid, long ssid_len); // //***************************************************************************** -extern long wlan_disconnect(void); +extern INT32 wlan_disconnect(void); //***************************************************************************** // @@ -225,7 +225,8 @@ extern long wlan_disconnect(void); //! @param ucPf_OrKey security key //! @param ulPassPhraseLen security key length for WPA\WPA2 //! -//! @return On success, zero is returned. On error, -1 is returned +//! @return On success, index (1-7) of the stored profile is returned. +//! On error, -1 is returned. //! //! @brief When auto start is enabled, the device connects to //! station from the profiles table. Up to 7 profiles are supported. @@ -238,15 +239,15 @@ extern long wlan_disconnect(void); // //***************************************************************************** -extern long wlan_add_profile(unsigned long ulSecType, unsigned char* ucSsid, - unsigned long ulSsidLen, - unsigned char *ucBssid, - unsigned long ulPriority, - unsigned long ulPairwiseCipher_Or_Key, - unsigned long ulGroupCipher_TxKeyLen, - unsigned long ulKeyMgmt, - unsigned char* ucPf_OrKey, - unsigned long ulPassPhraseLen); +extern INT32 wlan_add_profile(UINT32 ulSecType, UINT8* ucSsid, + UINT32 ulSsidLen, + UINT8 *ucBssid, + UINT32 ulPriority, + UINT32 ulPairwiseCipher_Or_Key, + UINT32 ulGroupCipher_TxKeyLen, + UINT32 ulKeyMgmt, + UINT8* ucPf_OrKey, + UINT32 ulPassPhraseLen); @@ -265,7 +266,7 @@ extern long wlan_add_profile(unsigned long ulSecType, unsigned char* ucSsid, //! @sa wlan_add_profile // //***************************************************************************** -extern long wlan_ioctl_del_profile(unsigned long ulIndex); +extern INT32 wlan_ioctl_del_profile(UINT32 ulIndex); //***************************************************************************** // @@ -288,7 +289,7 @@ extern long wlan_ioctl_del_profile(unsigned long ulIndex); //! masked (1), the device will not send the masked event to host. // //***************************************************************************** -extern long wlan_set_event_mask(unsigned long ulMask); +extern INT32 wlan_set_event_mask(UINT32 ulMask); //***************************************************************************** // @@ -302,7 +303,7 @@ extern long wlan_set_event_mask(unsigned long ulMask); //! @brief get wlan status: disconnected, scanning, connecting or connected // //***************************************************************************** -extern long wlan_ioctl_statusget(void); +extern INT32 wlan_ioctl_statusget(void); //***************************************************************************** @@ -336,10 +337,10 @@ extern long wlan_ioctl_statusget(void); //! @sa wlan_add_profile , wlan_ioctl_del_profile // //***************************************************************************** -extern long wlan_ioctl_set_connection_policy( - unsigned long should_connect_to_open_ap, - unsigned long should_use_fast_connect, - unsigned long ulUseProfiles); +extern INT32 wlan_ioctl_set_connection_policy( + UINT32 should_connect_to_open_ap, + UINT32 should_use_fast_connect, + UINT32 ulUseProfiles); //***************************************************************************** // @@ -376,8 +377,8 @@ extern long wlan_ioctl_set_connection_policy( //***************************************************************************** -extern long wlan_ioctl_get_scan_results(unsigned long ulScanTimeout, - unsigned char *ucResults); +extern INT32 wlan_ioctl_get_scan_results(UINT32 ulScanTimeout, + UINT8 *ucResults); //***************************************************************************** // @@ -403,7 +404,7 @@ extern long wlan_ioctl_get_scan_results(unsigned long ulScanTimeout, //! @param uiSNRThreshold NSR threshold. Saved: yes (Default: 0) //! @param uiDefaultTxPower probe Tx power. Saved: yes (Default: 205) //! @param aiIntervalList pointer to array with 16 entries (16 channels) -//! each entry (unsigned long) holds timeout between periodic scan +//! each entry (UINT32) holds timeout between periodic scan //! (connection scan) - in milliseconds. Saved: yes. Default 2000ms. //! //! @return On success, zero is returned. On error, -1 is returned @@ -415,13 +416,13 @@ extern long wlan_ioctl_get_scan_results(unsigned long ulScanTimeout, //! @sa wlan_ioctl_get_scan_results // //***************************************************************************** -extern long wlan_ioctl_set_scan_params(unsigned long uiEnable, unsigned long - uiMinDwellTime,unsigned long uiMaxDwellTime, - unsigned long uiNumOfProbeRequests, - unsigned long uiChannelMask, - long iRSSIThreshold,unsigned long uiSNRThreshold, - unsigned long uiDefaultTxPower, - unsigned long *aiIntervalList); +extern INT32 wlan_ioctl_set_scan_params(UINT32 uiEnable, UINT32 + uiMinDwellTime,UINT32 uiMaxDwellTime, + UINT32 uiNumOfProbeRequests, + UINT32 uiChannelMask, + INT32 iRSSIThreshold,UINT32 uiSNRThreshold, + UINT32 uiDefaultTxPower, + UINT32 *aiIntervalList); //***************************************************************************** @@ -444,7 +445,7 @@ extern long wlan_ioctl_set_scan_params(unsigned long uiEnable, unsigned long //! @sa wlan_smart_config_set_prefix , wlan_smart_config_stop // //***************************************************************************** -extern long wlan_smart_config_start(unsigned long algoEncryptedFlag); +extern INT32 wlan_smart_config_start(UINT32 algoEncryptedFlag); //***************************************************************************** @@ -460,7 +461,7 @@ extern long wlan_smart_config_start(unsigned long algoEncryptedFlag); //! @sa wlan_smart_config_start , wlan_smart_config_set_prefix // //***************************************************************************** -extern long wlan_smart_config_stop(void); +extern INT32 wlan_smart_config_stop(void); //***************************************************************************** // @@ -478,7 +479,7 @@ extern long wlan_smart_config_stop(void); //! @sa wlan_smart_config_start , wlan_smart_config_stop // //***************************************************************************** -extern long wlan_smart_config_set_prefix(char* cNewPrefix); +extern INT32 wlan_smart_config_set_prefix(CHAR* cNewPrefix); //***************************************************************************** // @@ -494,7 +495,7 @@ extern long wlan_smart_config_set_prefix(char* cNewPrefix); //! behavior is as defined by connection policy. // //***************************************************************************** -extern long wlan_smart_config_process(void); +extern INT32 wlan_smart_config_process(void); //***************************************************************************** // diff --git a/src/cc3k/src/cc3000_common.c b/src/cc3k/src/cc3000_common.c index d28199919..b724d317a 100644 --- a/src/cc3k/src/cc3000_common.c +++ b/src/cc3k/src/cc3000_common.c @@ -39,10 +39,10 @@ // //***************************************************************************** /****************************************************************************** - * - * Include files - * - *****************************************************************************/ +* +* Include files +* +*****************************************************************************/ #include "cc3000_common.h" #include "socket.h" #include "wlan.h" @@ -60,10 +60,9 @@ //! @brief stub function for ASSERT macro // //***************************************************************************** -void -__error__(char *pcFilename, unsigned long ulLine) +void __error__(CHAR *pcFilename, UINT32 ulLine) { - //TODO full up function + //TODO full up function } @@ -82,12 +81,12 @@ __error__(char *pcFilename, unsigned long ulLine) // //***************************************************************************** -unsigned char* UINT32_TO_STREAM_f (unsigned char *p, unsigned long u32) +UINT8* UINT32_TO_STREAM_f (UINT8 *p, UINT32 u32) { - *(p)++ = (unsigned char)(u32); - *(p)++ = (unsigned char)((u32) >> 8); - *(p)++ = (unsigned char)((u32) >> 16); - *(p)++ = (unsigned char)((u32) >> 24); + *(p)++ = (UINT8)(u32); + *(p)++ = (UINT8)((u32) >> 8); + *(p)++ = (UINT8)((u32) >> 16); + *(p)++ = (UINT8)((u32) >> 24); return p; } @@ -105,10 +104,10 @@ unsigned char* UINT32_TO_STREAM_f (unsigned char *p, unsigned long u32) // //***************************************************************************** -unsigned char* UINT16_TO_STREAM_f (unsigned char *p, unsigned short u16) +UINT8* UINT16_TO_STREAM_f (UINT8 *p, UINT16 u16) { - *(p)++ = (unsigned char)(u16); - *(p)++ = (unsigned char)((u16) >> 8); + *(p)++ = (UINT8)(u16); + *(p)++ = (UINT8)((u16) >> 8); return p; } @@ -126,10 +125,10 @@ unsigned char* UINT16_TO_STREAM_f (unsigned char *p, unsigned short u16) // //***************************************************************************** -unsigned short STREAM_TO_UINT16_f(char* p, unsigned short offset) +UINT16 STREAM_TO_UINT16_f(CHAR* p, UINT16 offset) { - return (unsigned short)((unsigned short)((unsigned short) - (*(p + offset + 1)) << 8) + (unsigned short)(*(p + offset))); + return (UINT16)((UINT16)((UINT16) + (*(p + offset + 1)) << 8) + (UINT16)(*(p + offset))); } //***************************************************************************** @@ -146,12 +145,12 @@ unsigned short STREAM_TO_UINT16_f(char* p, unsigned short offset) // //***************************************************************************** -unsigned long STREAM_TO_UINT32_f(char* p, unsigned short offset) +UINT32 STREAM_TO_UINT32_f(CHAR* p, UINT16 offset) { - return (unsigned long)((unsigned long)((unsigned long) - (*(p + offset + 3)) << 24) + (unsigned long)((unsigned long) - (*(p + offset + 2)) << 16) + (unsigned long)((unsigned long) - (*(p + offset + 1)) << 8) + (unsigned long)(*(p + offset))); + return (UINT32)((UINT32)((UINT32) + (*(p + offset + 3)) << 24) + (UINT32)((UINT32) + (*(p + offset + 2)) << 16) + (UINT32)((UINT32) + (*(p + offset + 1)) << 8) + (UINT32)(*(p + offset))); } diff --git a/src/cc3k/src/evnt_handler.c b/src/cc3k/src/evnt_handler.c index c06ec7da7..4ebedd901 100644 --- a/src/cc3k/src/evnt_handler.c +++ b/src/cc3k/src/evnt_handler.c @@ -52,7 +52,7 @@ #include "netapp.h" #include "spi.h" - + //***************************************************************************** // COMMON DEFINES @@ -109,22 +109,22 @@ #define GET_SCAN_RESULTS_FRAME_TIME_OFFSET (10) #define GET_SCAN_RESULTS_SSID_MAC_LENGTH (38) - +#define GET_MSS_VAL_RETVAL_OFFSET (0) //***************************************************************************** // GLOBAL VARAIABLES //***************************************************************************** -unsigned long socket_active_status = SOCKET_STATUS_INIT_VAL; +UINT32 socket_active_status = SOCKET_STATUS_INIT_VAL; //***************************************************************************** // Prototypes for the static functions //***************************************************************************** -static long hci_event_unsol_flowcontrol_handler(char *pEvent); +static INT32 hci_event_unsol_flowcontrol_handler(CHAR *pEvent); -static void update_socket_active_status(char *resp_params); +static void update_socket_active_status(CHAR *resp_params); //***************************************************************************** @@ -138,70 +138,70 @@ static void update_socket_active_status(char *resp_params); //! @brief Handle unsolicited event from type patch request // //***************************************************************************** -void hci_unsol_handle_patch_request(char *event_hdr) +void hci_unsol_handle_patch_request(CHAR *event_hdr) { - char *params = (char *)(event_hdr) + HCI_EVENT_HEADER_SIZE; - unsigned long ucLength = 0; - char *patch; - + CHAR *params = (CHAR *)(event_hdr) + HCI_EVENT_HEADER_SIZE; + UINT32 ucLength = 0; + CHAR *patch; + switch (*params) { case HCI_EVENT_PATCHES_DRV_REQ: - + if (tSLInformation.sDriverPatches) { patch = tSLInformation.sDriverPatches(&ucLength); - + if (patch) { hci_patch_send(HCI_EVENT_PATCHES_DRV_REQ, - tSLInformation.pucTxCommandBuffer, patch, ucLength); + tSLInformation.pucTxCommandBuffer, patch, ucLength); return; } } - + // Send 0 length Patches response event hci_patch_send(HCI_EVENT_PATCHES_DRV_REQ, - tSLInformation.pucTxCommandBuffer, 0, 0); + tSLInformation.pucTxCommandBuffer, 0, 0); break; - + case HCI_EVENT_PATCHES_FW_REQ: - + if (tSLInformation.sFWPatches) { patch = tSLInformation.sFWPatches(&ucLength); - + // Build and send a patch if (patch) { hci_patch_send(HCI_EVENT_PATCHES_FW_REQ, - tSLInformation.pucTxCommandBuffer, patch, ucLength); + tSLInformation.pucTxCommandBuffer, patch, ucLength); return; } } - + // Send 0 length Patches response event hci_patch_send(HCI_EVENT_PATCHES_FW_REQ, - tSLInformation.pucTxCommandBuffer, 0, 0); + tSLInformation.pucTxCommandBuffer, 0, 0); break; - + case HCI_EVENT_PATCHES_BOOTLOAD_REQ: - + if (tSLInformation.sBootLoaderPatches) { patch = tSLInformation.sBootLoaderPatches(&ucLength); - + if (patch) { hci_patch_send(HCI_EVENT_PATCHES_BOOTLOAD_REQ, - tSLInformation.pucTxCommandBuffer, patch, ucLength); + tSLInformation.pucTxCommandBuffer, patch, ucLength); return; } } - + // Send 0 length Patches response event hci_patch_send(HCI_EVENT_PATCHES_BOOTLOAD_REQ, - tSLInformation.pucTxCommandBuffer, 0, 0); + tSLInformation.pucTxCommandBuffer, 0, 0); break; } } @@ -223,19 +223,18 @@ void hci_unsol_handle_patch_request(char *event_hdr) // //***************************************************************************** - -unsigned char * -hci_event_handler(void *pRetParams, unsigned char *from, unsigned char *fromlen) + +UINT8 * hci_event_handler(void *pRetParams, UINT8 *from, UINT8 *fromlen) { - unsigned char *pucReceivedData, ucArgsize; - unsigned short usLength; - unsigned char *pucReceivedParams; - unsigned short usReceivedEventOpcode = 0; - unsigned long retValue32; - unsigned char * RecvParams; - unsigned char *RetParams; - - + UINT8 *pucReceivedData, ucArgsize; + UINT16 usLength; + UINT8 *pucReceivedParams; + UINT16 usReceivedEventOpcode = 0; + UINT32 retValue32; + UINT8 * RecvParams; + UINT8 *RetParams; + + while (1) { if (tSLInformation.usEventOrDataReceived != 0) @@ -245,28 +244,28 @@ hci_event_handler(void *pRetParams, unsigned char *from, unsigned char *fromlen) if (*pucReceivedData == HCI_TYPE_EVNT) { // Event Received - STREAM_TO_UINT16((char *)pucReceivedData, HCI_EVENT_OPCODE_OFFSET, - usReceivedEventOpcode); + STREAM_TO_UINT16((CHAR *)pucReceivedData, HCI_EVENT_OPCODE_OFFSET, + usReceivedEventOpcode); pucReceivedParams = pucReceivedData + HCI_EVENT_HEADER_SIZE; RecvParams = pucReceivedParams; RetParams = pRetParams; - + // In case unsolicited event received - here the handling finished - if (hci_unsol_event_handler((char *)pucReceivedData) == 0) + if (hci_unsol_event_handler((CHAR *)pucReceivedData) == 0) { STREAM_TO_UINT8(pucReceivedData, HCI_DATA_LENGTH_OFFSET, usLength); - + switch(usReceivedEventOpcode) { case HCI_CMND_READ_BUFFER_SIZE: { - STREAM_TO_UINT8((char *)pucReceivedParams, 0, - tSLInformation.usNumberOfFreeBuffers); - STREAM_TO_UINT16((char *)pucReceivedParams, 1, - tSLInformation.usSlBufferLength); + STREAM_TO_UINT8((CHAR *)pucReceivedParams, 0, + tSLInformation.usNumberOfFreeBuffers); + STREAM_TO_UINT16((CHAR *)pucReceivedParams, 1, + tSLInformation.usSlBufferLength); } break; - + case HCI_CMND_WLAN_CONFIGURE_PATCH: case HCI_NETAPP_DHCP: case HCI_NETAPP_PING_SEND: @@ -279,11 +278,11 @@ hci_event_handler(void *pRetParams, unsigned char *from, unsigned char *fromlen) case HCI_CMND_NVMEM_WRITE_PATCH: case HCI_NETAPP_PING_REPORT: case HCI_EVNT_MDNS_ADVERTISE: - + STREAM_TO_UINT8(pucReceivedData, HCI_EVENT_STATUS_OFFSET - ,*(unsigned char *)pRetParams); + ,*(UINT8 *)pRetParams); break; - + case HCI_CMND_SETSOCKOPT: case HCI_CMND_WLAN_CONNECT: case HCI_CMND_WLAN_IOCTL_STATUSGET: @@ -302,138 +301,145 @@ hci_event_handler(void *pRetParams, unsigned char *from, unsigned char *fromlen) case HCI_EVNT_CLOSE_SOCKET: case HCI_EVNT_CONNECT: case HCI_EVNT_NVMEM_WRITE: - - STREAM_TO_UINT32((char *)pucReceivedParams,0 - ,*(unsigned long *)pRetParams); + + STREAM_TO_UINT32((CHAR *)pucReceivedParams,0 + ,*(UINT32 *)pRetParams); break; - + case HCI_EVNT_READ_SP_VERSION: - + STREAM_TO_UINT8(pucReceivedData, HCI_EVENT_STATUS_OFFSET - ,*(unsigned char *)pRetParams); - pRetParams = ((char *)pRetParams) + 1; - STREAM_TO_UINT32((char *)pucReceivedParams, 0, retValue32); - UINT32_TO_STREAM((unsigned char *)pRetParams, retValue32); + ,*(UINT8 *)pRetParams); + pRetParams = ((CHAR *)pRetParams) + 1; + STREAM_TO_UINT32((CHAR *)pucReceivedParams, 0, retValue32); + UINT32_TO_STREAM((UINT8 *)pRetParams, retValue32); break; - + case HCI_EVNT_BSD_GETHOSTBYNAME: - - STREAM_TO_UINT32((char *)pucReceivedParams - ,GET_HOST_BY_NAME_RETVAL_OFFSET,*(unsigned long *)pRetParams); - pRetParams = ((char *)pRetParams) + 4; - STREAM_TO_UINT32((char *)pucReceivedParams - ,GET_HOST_BY_NAME_ADDR_OFFSET,*(unsigned long *)pRetParams); + + STREAM_TO_UINT32((CHAR *)pucReceivedParams + ,GET_HOST_BY_NAME_RETVAL_OFFSET,*(UINT32 *)pRetParams); + pRetParams = ((CHAR *)pRetParams) + 4; + STREAM_TO_UINT32((CHAR *)pucReceivedParams + ,GET_HOST_BY_NAME_ADDR_OFFSET,*(UINT32 *)pRetParams); break; - + + case HCI_EVNT_GETMSSVALUE: + + STREAM_TO_UINT16((CHAR *)pucReceivedParams + ,GET_MSS_VAL_RETVAL_OFFSET,*(UINT16 *)pRetParams); + + break; + case HCI_EVNT_ACCEPT: { - STREAM_TO_UINT32((char *)pucReceivedParams,ACCEPT_SD_OFFSET - ,*(unsigned long *)pRetParams); - pRetParams = ((char *)pRetParams) + 4; - STREAM_TO_UINT32((char *)pucReceivedParams - ,ACCEPT_RETURN_STATUS_OFFSET,*(unsigned long *)pRetParams); - pRetParams = ((char *)pRetParams) + 4; - + STREAM_TO_UINT32((CHAR *)pucReceivedParams,ACCEPT_SD_OFFSET + ,*(UINT32 *)pRetParams); + pRetParams = ((CHAR *)pRetParams) + 4; + STREAM_TO_UINT32((CHAR *)pucReceivedParams + ,ACCEPT_RETURN_STATUS_OFFSET,*(UINT32 *)pRetParams); + pRetParams = ((CHAR *)pRetParams) + 4; + //This argument returns in network order - memcpy((unsigned char *)pRetParams, - pucReceivedParams + ACCEPT_ADDRESS__OFFSET, sizeof(sockaddr)); + memcpy((UINT8 *)pRetParams, + pucReceivedParams + ACCEPT_ADDRESS__OFFSET, sizeof(sockaddr)); break; } - + case HCI_EVNT_RECV: case HCI_EVNT_RECVFROM: { - STREAM_TO_UINT32((char *)pucReceivedParams,SL_RECEIVE_SD_OFFSET ,*(unsigned long *)pRetParams); - pRetParams = ((char *)pRetParams) + 4; - STREAM_TO_UINT32((char *)pucReceivedParams,SL_RECEIVE_NUM_BYTES_OFFSET,*(unsigned long *)pRetParams); - pRetParams = ((char *)pRetParams) + 4; - STREAM_TO_UINT32((char *)pucReceivedParams,SL_RECEIVE__FLAGS__OFFSET,*(unsigned long *)pRetParams); - + STREAM_TO_UINT32((CHAR *)pucReceivedParams,SL_RECEIVE_SD_OFFSET ,*(UINT32 *)pRetParams); + pRetParams = ((CHAR *)pRetParams) + 4; + STREAM_TO_UINT32((CHAR *)pucReceivedParams,SL_RECEIVE_NUM_BYTES_OFFSET,*(UINT32 *)pRetParams); + pRetParams = ((CHAR *)pRetParams) + 4; + STREAM_TO_UINT32((CHAR *)pucReceivedParams,SL_RECEIVE__FLAGS__OFFSET,*(UINT32 *)pRetParams); + if(((tBsdReadReturnParams *)pRetParams)->iNumberOfBytes == ERROR_SOCKET_INACTIVE) { set_socket_active_status(((tBsdReadReturnParams *)pRetParams)->iSocketDescriptor,SOCKET_STATUS_INACTIVE); } break; } - - case HCI_EVNT_SEND: + + case HCI_EVNT_SEND: case HCI_EVNT_SENDTO: { - STREAM_TO_UINT32((char *)pucReceivedParams,SL_RECEIVE_SD_OFFSET ,*(unsigned long *)pRetParams); - pRetParams = ((char *)pRetParams) + 4; - STREAM_TO_UINT32((char *)pucReceivedParams,SL_RECEIVE_NUM_BYTES_OFFSET,*(unsigned long *)pRetParams); - pRetParams = ((char *)pRetParams) + 4; - + STREAM_TO_UINT32((CHAR *)pucReceivedParams,SL_RECEIVE_SD_OFFSET ,*(UINT32 *)pRetParams); + pRetParams = ((CHAR *)pRetParams) + 4; + STREAM_TO_UINT32((CHAR *)pucReceivedParams,SL_RECEIVE_NUM_BYTES_OFFSET,*(UINT32 *)pRetParams); + pRetParams = ((CHAR *)pRetParams) + 4; + break; } - + case HCI_EVNT_SELECT: { - STREAM_TO_UINT32((char *)pucReceivedParams,SELECT_STATUS_OFFSET,*(unsigned long *)pRetParams); - pRetParams = ((char *)pRetParams) + 4; - STREAM_TO_UINT32((char *)pucReceivedParams,SELECT_READFD_OFFSET,*(unsigned long *)pRetParams); - pRetParams = ((char *)pRetParams) + 4; - STREAM_TO_UINT32((char *)pucReceivedParams,SELECT_WRITEFD_OFFSET,*(unsigned long *)pRetParams); - pRetParams = ((char *)pRetParams) + 4; - STREAM_TO_UINT32((char *)pucReceivedParams,SELECT_EXFD_OFFSET,*(unsigned long *)pRetParams); + STREAM_TO_UINT32((CHAR *)pucReceivedParams,SELECT_STATUS_OFFSET,*(UINT32 *)pRetParams); + pRetParams = ((CHAR *)pRetParams) + 4; + STREAM_TO_UINT32((CHAR *)pucReceivedParams,SELECT_READFD_OFFSET,*(UINT32 *)pRetParams); + pRetParams = ((CHAR *)pRetParams) + 4; + STREAM_TO_UINT32((CHAR *)pucReceivedParams,SELECT_WRITEFD_OFFSET,*(UINT32 *)pRetParams); + pRetParams = ((CHAR *)pRetParams) + 4; + STREAM_TO_UINT32((CHAR *)pucReceivedParams,SELECT_EXFD_OFFSET,*(UINT32 *)pRetParams); break; } - + case HCI_CMND_GETSOCKOPT: - + STREAM_TO_UINT8(pucReceivedData, HCI_EVENT_STATUS_OFFSET,((tBsdGetSockOptReturnParams *)pRetParams)->iStatus); //This argument returns in network order - memcpy((unsigned char *)pRetParams, pucReceivedParams, 4); + memcpy((UINT8 *)pRetParams, pucReceivedParams, 4); break; - + case HCI_CMND_WLAN_IOCTL_GET_SCAN_RESULTS: - - STREAM_TO_UINT32((char *)pucReceivedParams,GET_SCAN_RESULTS_TABlE_COUNT_OFFSET,*(unsigned long *)pRetParams); - pRetParams = ((char *)pRetParams) + 4; - STREAM_TO_UINT32((char *)pucReceivedParams,GET_SCAN_RESULTS_SCANRESULT_STATUS_OFFSET,*(unsigned long *)pRetParams); - pRetParams = ((char *)pRetParams) + 4; - STREAM_TO_UINT16((char *)pucReceivedParams,GET_SCAN_RESULTS_ISVALID_TO_SSIDLEN_OFFSET,*(unsigned long *)pRetParams); - pRetParams = ((char *)pRetParams) + 2; - STREAM_TO_UINT16((char *)pucReceivedParams,GET_SCAN_RESULTS_FRAME_TIME_OFFSET,*(unsigned long *)pRetParams); - pRetParams = ((char *)pRetParams) + 2; - memcpy((unsigned char *)pRetParams, (char *)(pucReceivedParams + GET_SCAN_RESULTS_FRAME_TIME_OFFSET + 2), GET_SCAN_RESULTS_SSID_MAC_LENGTH); + + STREAM_TO_UINT32((CHAR *)pucReceivedParams,GET_SCAN_RESULTS_TABlE_COUNT_OFFSET,*(UINT32 *)pRetParams); + pRetParams = ((CHAR *)pRetParams) + 4; + STREAM_TO_UINT32((CHAR *)pucReceivedParams,GET_SCAN_RESULTS_SCANRESULT_STATUS_OFFSET,*(UINT32 *)pRetParams); + pRetParams = ((CHAR *)pRetParams) + 4; + STREAM_TO_UINT16((CHAR *)pucReceivedParams,GET_SCAN_RESULTS_ISVALID_TO_SSIDLEN_OFFSET,*(UINT32 *)pRetParams); + pRetParams = ((CHAR *)pRetParams) + 2; + STREAM_TO_UINT16((CHAR *)pucReceivedParams,GET_SCAN_RESULTS_FRAME_TIME_OFFSET,*(UINT32 *)pRetParams); + pRetParams = ((CHAR *)pRetParams) + 2; + memcpy((UINT8 *)pRetParams, (CHAR *)(pucReceivedParams + GET_SCAN_RESULTS_FRAME_TIME_OFFSET + 2), GET_SCAN_RESULTS_SSID_MAC_LENGTH); break; - + case HCI_CMND_SIMPLE_LINK_START: break; - + case HCI_NETAPP_IPCONFIG: - + //Read IP address STREAM_TO_STREAM(RecvParams,RetParams,NETAPP_IPCONFIG_IP_LENGTH); RecvParams += 4; - + //Read subnet STREAM_TO_STREAM(RecvParams,RetParams,NETAPP_IPCONFIG_IP_LENGTH); RecvParams += 4; - + //Read default GW STREAM_TO_STREAM(RecvParams,RetParams,NETAPP_IPCONFIG_IP_LENGTH); RecvParams += 4; - + //Read DHCP server STREAM_TO_STREAM(RecvParams,RetParams,NETAPP_IPCONFIG_IP_LENGTH); RecvParams += 4; - + //Read DNS server STREAM_TO_STREAM(RecvParams,RetParams,NETAPP_IPCONFIG_IP_LENGTH); RecvParams += 4; - + //Read Mac address STREAM_TO_STREAM(RecvParams,RetParams,NETAPP_IPCONFIG_MAC_LENGTH); RecvParams += 6; - + //Read SSID STREAM_TO_STREAM(RecvParams,RetParams,NETAPP_IPCONFIG_SSID_LENGTH); - + } } - + if (usReceivedEventOpcode == tSLInformation.usRxEventOpcode) { tSLInformation.usRxEventOpcode = 0; @@ -442,36 +448,36 @@ hci_event_handler(void *pRetParams, unsigned char *from, unsigned char *fromlen) else { pucReceivedParams = pucReceivedData; - STREAM_TO_UINT8((char *)pucReceivedData, HCI_PACKET_ARGSIZE_OFFSET, ucArgsize); - - STREAM_TO_UINT16((char *)pucReceivedData, HCI_PACKET_LENGTH_OFFSET, usLength); + STREAM_TO_UINT8((CHAR *)pucReceivedData, HCI_PACKET_ARGSIZE_OFFSET, ucArgsize); + + STREAM_TO_UINT16((CHAR *)pucReceivedData, HCI_PACKET_LENGTH_OFFSET, usLength); // Data received: note that the only case where from and from length // are not null is in recv from, so fill the args accordingly if (from) { - STREAM_TO_UINT32((char *)(pucReceivedData + HCI_DATA_HEADER_SIZE), BSD_RECV_FROM_FROMLEN_OFFSET, *(unsigned long *)fromlen); + STREAM_TO_UINT32((CHAR *)(pucReceivedData + HCI_DATA_HEADER_SIZE), BSD_RECV_FROM_FROMLEN_OFFSET, *(UINT32 *)fromlen); memcpy(from, (pucReceivedData + HCI_DATA_HEADER_SIZE + BSD_RECV_FROM_FROM_OFFSET) ,*fromlen); } - + memcpy(pRetParams, pucReceivedParams + HCI_DATA_HEADER_SIZE + ucArgsize, - usLength - ucArgsize); - + usLength - ucArgsize); + tSLInformation.usRxDataPending = 0; } - + tSLInformation.usEventOrDataReceived = 0; - + SpiResumeSpi(); - + // Since we are going to TX - we need to handle this event after the // ResumeSPi since we need interrupts if ((*pucReceivedData == HCI_TYPE_EVNT) && - (usReceivedEventOpcode == HCI_EVNT_PATCHES_REQ)) + (usReceivedEventOpcode == HCI_EVNT_PATCHES_REQ)) { - hci_unsol_handle_patch_request((char *)pucReceivedData); + hci_unsol_handle_patch_request((CHAR *)pucReceivedData); } - + if ((tSLInformation.usRxEventOpcode == 0) && (tSLInformation.usRxDataPending == 0)) { return NULL; @@ -493,28 +499,27 @@ hci_event_handler(void *pRetParams, unsigned char *from, unsigned char *fromlen) //! @brief Handle unsolicited events // //***************************************************************************** -long -hci_unsol_event_handler(char *event_hdr) +INT32 hci_unsol_event_handler(CHAR *event_hdr) { - char * data = NULL; - long event_type; - unsigned long NumberOfReleasedPackets; - unsigned long NumberOfSentPackets; - + CHAR * data = NULL; + INT32 event_type; + UINT32 NumberOfReleasedPackets; + UINT32 NumberOfSentPackets; + STREAM_TO_UINT16(event_hdr, HCI_EVENT_OPCODE_OFFSET,event_type); - + if (event_type & HCI_EVNT_UNSOL_BASE) { switch(event_type) { - + case HCI_EVNT_DATA_UNSOL_FREE_BUFF: { hci_event_unsol_flowcontrol_handler(event_hdr); - + NumberOfReleasedPackets = tSLInformation.NumberOfReleasedPackets; NumberOfSentPackets = tSLInformation.NumberOfSentPackets; - + if (NumberOfReleasedPackets == NumberOfSentPackets) { if (tSLInformation.InformHostOnTxComplete) @@ -523,11 +528,11 @@ hci_unsol_event_handler(char *event_hdr) } } return 1; - + } } } - + if(event_type & HCI_EVNT_WLAN_UNSOL_BASE) { switch(event_type) @@ -537,20 +542,20 @@ hci_unsol_event_handler(char *event_hdr) case HCI_EVNT_WLAN_UNSOL_DISCONNECT: case HCI_EVNT_WLAN_UNSOL_INIT: case HCI_EVNT_WLAN_ASYNC_SIMPLE_CONFIG_DONE: - + if( tSLInformation.sWlanCB ) { tSLInformation.sWlanCB(event_type, 0, 0); } break; - + case HCI_EVNT_WLAN_UNSOL_DHCP: { - unsigned char params[NETAPP_IPCONFIG_MAC_OFFSET + 1]; // extra byte is for the status - unsigned char *recParams = params; - - data = (char*)(event_hdr) + HCI_EVENT_HEADER_SIZE; - + UINT8 params[NETAPP_IPCONFIG_MAC_OFFSET + 1]; // extra byte is for the status + UINT8 *recParams = params; + + data = (CHAR*)(event_hdr) + HCI_EVENT_HEADER_SIZE; + //Read IP address STREAM_TO_STREAM(data,recParams,NETAPP_IPCONFIG_IP_LENGTH); data += 4; @@ -571,66 +576,76 @@ hci_unsol_event_handler(char *event_hdr) if( tSLInformation.sWlanCB ) { - tSLInformation.sWlanCB(event_type, (char *)params, sizeof(params)); + tSLInformation.sWlanCB(event_type, (CHAR *)params, sizeof(params)); } } break; - + case HCI_EVNT_WLAN_ASYNC_PING_REPORT: { netapp_pingreport_args_t params; - data = (char*)(event_hdr) + HCI_EVENT_HEADER_SIZE; + data = (CHAR*)(event_hdr) + HCI_EVENT_HEADER_SIZE; STREAM_TO_UINT32(data, NETAPP_PING_PACKETS_SENT_OFFSET, params.packets_sent); STREAM_TO_UINT32(data, NETAPP_PING_PACKETS_RCVD_OFFSET, params.packets_received); STREAM_TO_UINT32(data, NETAPP_PING_MIN_RTT_OFFSET, params.min_round_time); STREAM_TO_UINT32(data, NETAPP_PING_MAX_RTT_OFFSET, params.max_round_time); STREAM_TO_UINT32(data, NETAPP_PING_AVG_RTT_OFFSET, params.avg_round_time); - + if( tSLInformation.sWlanCB ) { - tSLInformation.sWlanCB(event_type, (char *)¶ms, sizeof(params)); + tSLInformation.sWlanCB(event_type, (CHAR *)¶ms, sizeof(params)); } } break; case HCI_EVNT_BSD_TCP_CLOSE_WAIT: { + data = (CHAR *)(event_hdr) + HCI_EVENT_HEADER_SIZE; if( tSLInformation.sWlanCB ) { - tSLInformation.sWlanCB(event_type, NULL, 0); + //data[0] represents the socket id, for which FIN was received by remote. + //Upon receiving this event, the user can close the socket, or else the + //socket will be closded after inacvitity timeout (by default 60 seconds) + tSLInformation.sWlanCB(event_type, data, 1); } } break; - - //'default' case which means "event not supported" + + //'default' case which means "event not supported" default: return (0); } return(1); } - + if ((event_type == HCI_EVNT_SEND) || (event_type == HCI_EVNT_SENDTO) - || (event_type == HCI_EVNT_WRITE)) + || (event_type == HCI_EVNT_WRITE)) { - char *pArg; - long status; - - pArg = M_BSD_RESP_PARAMS_OFFSET(event_hdr); - STREAM_TO_UINT32(pArg, BSD_RSP_PARAMS_STATUS_OFFSET,status); - - if (ERROR_SOCKET_INACTIVE == status) - { - // The only synchronous event that can come from SL device in form of - // command complete is "Command Complete" on data sent, in case SL device - // was unable to transmit - STREAM_TO_UINT8(event_hdr, HCI_EVENT_STATUS_OFFSET, tSLInformation.slTransmitDataError); - update_socket_active_status(M_BSD_RESP_PARAMS_OFFSET(event_hdr)); - - return (1); - } - else - return (0); + CHAR *pArg; + INT32 status; + + pArg = M_BSD_RESP_PARAMS_OFFSET(event_hdr); + STREAM_TO_UINT32(pArg, BSD_RSP_PARAMS_STATUS_OFFSET,status); + + if (ERROR_SOCKET_INACTIVE == status) + { + // The only synchronous event that can come from SL device in form of + // command complete is "Command Complete" on data sent, in case SL device + // was unable to transmit + STREAM_TO_UINT8(event_hdr, HCI_EVENT_STATUS_OFFSET, tSLInformation.slTransmitDataError); + update_socket_active_status(M_BSD_RESP_PARAMS_OFFSET(event_hdr)); + + return (1); + } + else + return (0); } - + + //handle a case where unsolicited event arrived, but was not handled by any of the cases above + if ((event_type != tSLInformation.usRxEventOpcode) && (event_type != HCI_EVNT_PATCHES_REQ)) + { + return(1); + } + return(0); } @@ -646,33 +661,32 @@ hci_unsol_event_handler(char *event_hdr) //! corresponding event handler. // //***************************************************************************** -long -hci_unsolicited_event_handler(void) +INT32 hci_unsolicited_event_handler(void) { - unsigned long res = 0; - unsigned char *pucReceivedData; - + UINT32 res = 0; + UINT8 *pucReceivedData; + if (tSLInformation.usEventOrDataReceived != 0) { pucReceivedData = (tSLInformation.pucReceivedData); - + if (*pucReceivedData == HCI_TYPE_EVNT) { - + // In case unsolicited event received - here the handling finished - if (hci_unsol_event_handler((char *)pucReceivedData) == 1) + if (hci_unsol_event_handler((CHAR *)pucReceivedData) == 1) { - + // There was an unsolicited event received - we can release the buffer // and clean the event received tSLInformation.usEventOrDataReceived = 0; - + res = 1; SpiResumeSpi(); } } } - + return res; } @@ -688,7 +702,7 @@ hci_unsolicited_event_handler(void) //! accordingly the global socket status // //***************************************************************************** -void set_socket_active_status(long Sd, long Status) +void set_socket_active_status(INT32 Sd, INT32 Status) { if(M_IS_VALID_SD(Sd) && M_IS_VALID_STATUS(Status)) { @@ -711,30 +725,29 @@ void set_socket_active_status(long Sd, long Status) //! number of free buffer in the SL device. // //***************************************************************************** -long -hci_event_unsol_flowcontrol_handler(char *pEvent) +INT32 hci_event_unsol_flowcontrol_handler(CHAR *pEvent) { - - long temp, value; - unsigned short i; - unsigned short pusNumberOfHandles=0; - char *pReadPayload; - - STREAM_TO_UINT16((char *)pEvent,HCI_EVENT_HEADER_SIZE,pusNumberOfHandles); - pReadPayload = ((char *)pEvent + - HCI_EVENT_HEADER_SIZE + sizeof(pusNumberOfHandles)); + + INT32 temp, value; + UINT16 i; + UINT16 pusNumberOfHandles=0; + CHAR *pReadPayload; + + STREAM_TO_UINT16((CHAR *)pEvent,HCI_EVENT_HEADER_SIZE,pusNumberOfHandles); + pReadPayload = ((CHAR *)pEvent + + HCI_EVENT_HEADER_SIZE + sizeof(pusNumberOfHandles)); temp = 0; - + for(i = 0; i < pusNumberOfHandles ; i++) { STREAM_TO_UINT16(pReadPayload, FLOW_CONTROL_EVENT_FREE_BUFFS_OFFSET, value); temp += value; pReadPayload += FLOW_CONTROL_EVENT_SIZE; } - + tSLInformation.usNumberOfFreeBuffers += temp; tSLInformation.NumberOfReleasedPackets += temp; - + return(ESUCCESS); } @@ -749,8 +762,7 @@ hci_event_unsol_flowcontrol_handler(char *pEvent) // //***************************************************************************** -long -get_socket_active_status(long Sd) +INT32 get_socket_active_status(INT32 Sd) { if(M_IS_VALID_SD(Sd)) { @@ -769,14 +781,13 @@ get_socket_active_status(long Sd) //! @brief Retrieve socket status // //***************************************************************************** -void -update_socket_active_status(char *resp_params) +void update_socket_active_status(CHAR *resp_params) { - long status, sd; - + INT32 status, sd; + STREAM_TO_UINT32(resp_params, BSD_RSP_PARAMS_SOCKET_OFFSET,sd); STREAM_TO_UINT32(resp_params, BSD_RSP_PARAMS_STATUS_OFFSET,status); - + if(ERROR_SOCKET_INACTIVE == status) { set_socket_active_status(sd, SOCKET_STATUS_INACTIVE); @@ -798,8 +809,7 @@ update_socket_active_status(char *resp_params) // //***************************************************************************** -void -SimpleLinkWaitEvent(unsigned short usOpcode, void *pRetParams) +void SimpleLinkWaitEvent(UINT16 usOpcode, void *pRetParams) { // In the blocking implementation the control to caller will be returned only // after the end of current transaction @@ -823,9 +833,7 @@ SimpleLinkWaitEvent(unsigned short usOpcode, void *pRetParams) // //***************************************************************************** -void -SimpleLinkWaitData(unsigned char *pBuf, unsigned char *from, - unsigned char *fromlen) +void SimpleLinkWaitData(UINT8 *pBuf, UINT8 *from, UINT8 *fromlen) { // In the blocking implementation the control to caller will be returned only // after the end of current transaction, i.e. only after data will be received diff --git a/src/cc3k/src/hci.c b/src/cc3k/src/hci.c index bd75f00fb..e83c929f6 100644 --- a/src/cc3k/src/hci.c +++ b/src/cc3k/src/hci.c @@ -40,6 +40,7 @@ // //***************************************************************************** +#include #include "cc3000_common.h" #include "hci.h" #include "spi.h" @@ -62,21 +63,19 @@ //! @brief Initiate an HCI command. // //***************************************************************************** -unsigned short -hci_command_send(unsigned short usOpcode, unsigned char *pucBuff, - unsigned char ucArgsLength) +UINT16 hci_command_send(UINT16 usOpcode, UINT8 *pucBuff, UINT8 ucArgsLength) { - unsigned char *stream; - + UINT8 *stream; + stream = (pucBuff + SPI_HEADER_SIZE); - + UINT8_TO_STREAM(stream, HCI_TYPE_CMND); stream = UINT16_TO_STREAM(stream, usOpcode); UINT8_TO_STREAM(stream, ucArgsLength); - + //Update the opcode of the event we will be waiting for SpiWrite(pucBuff, ucArgsLength + SIMPLE_LINK_HCI_CMND_HEADER_SIZE); - + return(0); } @@ -95,26 +94,25 @@ hci_command_send(unsigned short usOpcode, unsigned char *pucBuff, //! @brief Initiate an HCI data write operation // //***************************************************************************** -long -hci_data_send(unsigned char ucOpcode, - unsigned char *ucArgs, - unsigned short usArgsLength, - unsigned short usDataLength, - const unsigned char *ucTail, - unsigned short usTailLength) +INT32 hci_data_send(UINT8 ucOpcode, + UINT8 *ucArgs, + UINT16 usArgsLength, + UINT16 usDataLength, + const UINT8 *ucTail, + UINT16 usTailLength) { - unsigned char *stream; - + UINT8 *stream; + stream = ((ucArgs) + SPI_HEADER_SIZE); - + UINT8_TO_STREAM(stream, HCI_TYPE_DATA); UINT8_TO_STREAM(stream, ucOpcode); UINT8_TO_STREAM(stream, usArgsLength); stream = UINT16_TO_STREAM(stream, usArgsLength + usDataLength + usTailLength); - + // Send the packet over the SPI SpiWrite(ucArgs, SIMPLE_LINK_HCI_DATA_HEADER_SIZE + usArgsLength + usDataLength + usTailLength); - + return(ESUCCESS); } @@ -133,19 +131,18 @@ hci_data_send(unsigned char ucOpcode, //! @brief Prepeare HCI header and initiate an HCI data write operation // //***************************************************************************** -void hci_data_command_send(unsigned short usOpcode, unsigned char *pucBuff, - unsigned char ucArgsLength,unsigned short ucDataLength) +void hci_data_command_send(UINT16 usOpcode, UINT8 *pucBuff, UINT8 ucArgsLength,UINT16 ucDataLength) { - unsigned char *stream = (pucBuff + SPI_HEADER_SIZE); - + UINT8 *stream = (pucBuff + SPI_HEADER_SIZE); + UINT8_TO_STREAM(stream, HCI_TYPE_DATA); UINT8_TO_STREAM(stream, usOpcode); UINT8_TO_STREAM(stream, ucArgsLength); stream = UINT16_TO_STREAM(stream, ucArgsLength + ucDataLength); - + // Send the command over SPI on data channel SpiWrite(pucBuff, ucArgsLength + ucDataLength + SIMPLE_LINK_HCI_DATA_CMND_HEADER_SIZE); - + return; } @@ -163,59 +160,58 @@ void hci_data_command_send(unsigned short usOpcode, unsigned char *pucBuff, //! @brief Prepeare HCI header and initiate an HCI patch write operation // //***************************************************************************** -void -hci_patch_send(unsigned char ucOpcode, unsigned char *pucBuff, char *patch, unsigned short usDataLength) +void hci_patch_send(UINT8 ucOpcode, UINT8 *pucBuff, CHAR *patch, UINT16 usDataLength) { - unsigned char *data_ptr = (pucBuff + SPI_HEADER_SIZE); - unsigned short usTransLength; - unsigned char *stream = (pucBuff + SPI_HEADER_SIZE); - + UINT8 *data_ptr = (pucBuff + SPI_HEADER_SIZE); + UINT16 usTransLength; + UINT8 *stream = (pucBuff + SPI_HEADER_SIZE); + UINT8_TO_STREAM(stream, HCI_TYPE_PATCH); UINT8_TO_STREAM(stream, ucOpcode); stream = UINT16_TO_STREAM(stream, usDataLength + SIMPLE_LINK_HCI_PATCH_HEADER_SIZE); - + if (usDataLength <= SL_PATCH_PORTION_SIZE) { UINT16_TO_STREAM(stream, usDataLength); stream = UINT16_TO_STREAM(stream, usDataLength); memcpy((pucBuff + SPI_HEADER_SIZE) + HCI_PATCH_HEADER_SIZE, patch, usDataLength); - + // Update the opcode of the event we will be waiting for SpiWrite(pucBuff, usDataLength + HCI_PATCH_HEADER_SIZE); } else { - + usTransLength = (usDataLength/SL_PATCH_PORTION_SIZE); UINT16_TO_STREAM(stream, usDataLength + SIMPLE_LINK_HCI_PATCH_HEADER_SIZE + usTransLength*SIMPLE_LINK_HCI_PATCH_HEADER_SIZE); stream = UINT16_TO_STREAM(stream, SL_PATCH_PORTION_SIZE); memcpy(pucBuff + SPI_HEADER_SIZE + HCI_PATCH_HEADER_SIZE, patch, SL_PATCH_PORTION_SIZE); usDataLength -= SL_PATCH_PORTION_SIZE; patch += SL_PATCH_PORTION_SIZE; - + // Update the opcode of the event we will be waiting for SpiWrite(pucBuff, SL_PATCH_PORTION_SIZE + HCI_PATCH_HEADER_SIZE); - + while (usDataLength) { if (usDataLength <= SL_PATCH_PORTION_SIZE) { usTransLength = usDataLength; usDataLength = 0; - + } else { usTransLength = SL_PATCH_PORTION_SIZE; usDataLength -= usTransLength; } - - *(unsigned short *)data_ptr = usTransLength; + + *(UINT16 *)data_ptr = usTransLength; memcpy(data_ptr + SIMPLE_LINK_HCI_PATCH_HEADER_SIZE, patch, usTransLength); patch += usTransLength; - + // Update the opcode of the event we will be waiting for - SpiWrite((unsigned char *)data_ptr, usTransLength + sizeof(usTransLength)); + SpiWrite((UINT8 *)data_ptr, usTransLength + sizeof(usTransLength)); } } } diff --git a/src/cc3k/src/netapp.c b/src/cc3k/src/netapp.c index 6e25a1214..85840f629 100644 --- a/src/cc3k/src/netapp.c +++ b/src/cc3k/src/netapp.c @@ -39,11 +39,11 @@ #include "evnt_handler.h" #include "nvmem.h" -#define MIN_TIMER_VAL_SECONDS 20 +#define MIN_TIMER_VAL_SECONDS 10 #define MIN_TIMER_SET(t) if ((0 != t) && (t < MIN_TIMER_VAL_SECONDS)) \ - { \ - t = MIN_TIMER_VAL_SECONDS; \ - } + { \ + t = MIN_TIMER_VAL_SECONDS; \ + } #define NETAPP_DHCP_PARAMS_LEN (20) @@ -66,7 +66,7 @@ //! over resets. // //***************************************************************************** -long netapp_config_mac_adrress(unsigned char * mac) +INT32 netapp_config_mac_adrress(UINT8 * mac) { return nvmem_set_mac_address(mac); } @@ -97,29 +97,29 @@ long netapp_config_mac_adrress(unsigned char * mac) //! AP was established. //! //***************************************************************************** -long netapp_dhcp(unsigned long *aucIP, unsigned long *aucSubnetMask,unsigned long *aucDefaultGateway, unsigned long *aucDNSServer) +INT32 netapp_dhcp(UINT32 *aucIP, UINT32 *aucSubnetMask,UINT32 *aucDefaultGateway, UINT32 *aucDNSServer) { - signed char scRet; - unsigned char *ptr; - unsigned char *args; - + INT8 scRet; + UINT8 *ptr; + UINT8 *args; + scRet = EFAIL; ptr = tSLInformation.pucTxCommandBuffer; args = (ptr + HEADERS_SIZE_CMD); - + // Fill in temporary command buffer ARRAY_TO_STREAM(args,aucIP,4); ARRAY_TO_STREAM(args,aucSubnetMask,4); ARRAY_TO_STREAM(args,aucDefaultGateway,4); args = UINT32_TO_STREAM(args, 0); ARRAY_TO_STREAM(args,aucDNSServer,4); - + // Initiate a HCI command hci_command_send(HCI_NETAPP_DHCP, ptr, NETAPP_DHCP_PARAMS_LEN); - + // Wait for command complete event SimpleLinkWaitEvent(HCI_NETAPP_DHCP, &scRet); - + return(scRet); } @@ -133,7 +133,7 @@ long netapp_dhcp(unsigned long *aucIP, unsigned long *aucSubnetMask,unsigned lon //! 0 or 0xffffffff == infinity lease timeout. //! Resolution:10 seconds. Influence: only after //! reconnecting to the AP. -//! Minimal bound value: MIN_TIMER_VAL_SECONDS - 20 seconds. +//! Minimal bound value: MIN_TIMER_VAL_SECONDS - 10 seconds. //! The parameter is saved into the CC3000 NVMEM. //! The default value on CC3000 is 14400 seconds. //! @@ -142,7 +142,7 @@ long netapp_dhcp(unsigned long *aucIP, unsigned long *aucSubnetMask,unsigned lon //! the end of the timeout. //! Range: [0-0xffffffff] seconds, 0 == infinity ARP timeout //! Resolution: 10 seconds. Influence: on runtime. -//! Minimal bound value: MIN_TIMER_VAL_SECONDS - 20 seconds +//! Minimal bound value: MIN_TIMER_VAL_SECONDS - 10 seconds //! The parameter is saved into the CC3000 NVMEM. //! The default value on CC3000 is 3600 seconds. //! @@ -150,7 +150,7 @@ long netapp_dhcp(unsigned long *aucIP, unsigned long *aucSubnetMask,unsigned lon //! Range: [0-0xffffffff] seconds, 0 == infinity timeout //! Resolution: 10 seconds. //! Influence: on runtime. -//! Minimal bound value: MIN_TIMER_VAL_SECONDS - 20 sec +//! Minimal bound value: MIN_TIMER_VAL_SECONDS - 10 sec //! The parameter is saved into the CC3000 NVMEM. //! The default value on CC3000 is 10 seconds. //! @@ -159,7 +159,7 @@ long netapp_dhcp(unsigned long *aucIP, unsigned long *aucSubnetMask,unsigned lon //! end of the socket timeout the socket will be closed //! Range: [0-0xffffffff] sec, 0 == infinity timeout. //! Resolution: 10 seconds. Influence: on runtime. -//! Minimal bound value: MIN_TIMER_VAL_SECONDS - 20 sec +//! Minimal bound value: MIN_TIMER_VAL_SECONDS - 10 sec //! The parameter is saved into the CC3000 NVMEM. //! The default value on CC3000 is 60 seconds. //! @@ -169,41 +169,40 @@ long netapp_dhcp(unsigned long *aucIP, unsigned long *aucSubnetMask,unsigned lon //! DHCP lease timeout, ARP refresh timeout, keepalive event //! timeout and socket inactivity timeout //! -//! @note If a parameter set to non zero value which is less than 20s, -//! it will be set automatically to 20s. +//! @note If a parameter set to non zero value which is less than 10s, +//! it will be set automatically to 10s. //! //***************************************************************************** #ifndef CC3000_TINY_DRIVER -long -netapp_timeout_values(unsigned long *aucDHCP, unsigned long *aucARP,unsigned long *aucKeepalive, unsigned long *aucInactivity) +INT32 netapp_timeout_values(UINT32 *aucDHCP, UINT32 *aucARP,UINT32 *aucKeepalive, UINT32 *aucInactivity) { - signed char scRet; - unsigned char *ptr; - unsigned char *args; - + INT8 scRet; + UINT8 *ptr; + UINT8 *args; + scRet = EFAIL; ptr = tSLInformation.pucTxCommandBuffer; args = (ptr + HEADERS_SIZE_CMD); - + // Set minimal values of timers MIN_TIMER_SET(*aucDHCP) - MIN_TIMER_SET(*aucARP) - MIN_TIMER_SET(*aucKeepalive) - MIN_TIMER_SET(*aucInactivity) - - // Fill in temporary command buffer - args = UINT32_TO_STREAM(args, *aucDHCP); + MIN_TIMER_SET(*aucARP) + MIN_TIMER_SET(*aucKeepalive) + MIN_TIMER_SET(*aucInactivity) + + // Fill in temporary command buffer + args = UINT32_TO_STREAM(args, *aucDHCP); args = UINT32_TO_STREAM(args, *aucARP); args = UINT32_TO_STREAM(args, *aucKeepalive); args = UINT32_TO_STREAM(args, *aucInactivity); - + // Initiate a HCI command hci_command_send(HCI_NETAPP_SET_TIMERS, ptr, NETAPP_SET_TIMER_PARAMS_LEN); - + // Wait for command complete event SimpleLinkWaitEvent(HCI_NETAPP_SET_TIMERS, &scRet); - + return(scRet); } #endif @@ -231,28 +230,28 @@ netapp_timeout_values(unsigned long *aucDHCP, unsigned long *aucARP,unsigned lon //***************************************************************************** #ifndef CC3000_TINY_DRIVER -long -netapp_ping_send(unsigned long *ip, unsigned long ulPingAttempts, unsigned long ulPingSize, unsigned long ulPingTimeout) +INT32 + netapp_ping_send(UINT32 *ip, UINT32 ulPingAttempts, UINT32 ulPingSize, UINT32 ulPingTimeout) { - signed char scRet; - unsigned char *ptr, *args; - + INT8 scRet; + UINT8 *ptr, *args; + scRet = EFAIL; ptr = tSLInformation.pucTxCommandBuffer; args = (ptr + HEADERS_SIZE_CMD); - + // Fill in temporary command buffer args = UINT32_TO_STREAM(args, *ip); args = UINT32_TO_STREAM(args, ulPingAttempts); args = UINT32_TO_STREAM(args, ulPingSize); args = UINT32_TO_STREAM(args, ulPingTimeout); - + // Initiate a HCI command hci_command_send(HCI_NETAPP_PING_SEND, ptr, NETAPP_PING_SEND_PARAMS_LEN); - + // Wait for command complete event SimpleLinkWaitEvent(HCI_NETAPP_PING_SEND, &scRet); - + return(scRet); } #endif @@ -284,15 +283,15 @@ netapp_ping_send(unsigned long *ip, unsigned long ulPingAttempts, unsigned long #ifndef CC3000_TINY_DRIVER void netapp_ping_report() { - unsigned char *ptr; + UINT8 *ptr; ptr = tSLInformation.pucTxCommandBuffer; - signed char scRet; - + INT8 scRet; + scRet = EFAIL; - + // Initiate a HCI command hci_command_send(HCI_NETAPP_PING_REPORT, ptr, 0); - + // Wait for command complete event SimpleLinkWaitEvent(HCI_NETAPP_PING_REPORT, &scRet); } @@ -312,20 +311,20 @@ void netapp_ping_report() //***************************************************************************** #ifndef CC3000_TINY_DRIVER -long netapp_ping_stop() +INT32 netapp_ping_stop() { - signed char scRet; - unsigned char *ptr; - + INT8 scRet; + UINT8 *ptr; + scRet = EFAIL; ptr = tSLInformation.pucTxCommandBuffer; - + // Initiate a HCI command hci_command_send(HCI_NETAPP_PING_STOP, ptr, 0); - + // Wait for command complete event SimpleLinkWaitEvent(HCI_NETAPP_PING_STOP, &scRet); - + return(scRet); } #endif @@ -359,16 +358,16 @@ long netapp_ping_stop() #ifndef CC3000_TINY_DRIVER void netapp_ipconfig( tNetappIpconfigRetArgs * ipconfig ) { - unsigned char *ptr; - + UINT8 *ptr; + ptr = tSLInformation.pucTxCommandBuffer; - + // Initiate a HCI command hci_command_send(HCI_NETAPP_IPCONFIG, ptr, 0); - + // Wait for command complete event SimpleLinkWaitEvent(HCI_NETAPP_IPCONFIG, ipconfig ); - + } #else void netapp_ipconfig( tNetappIpconfigRetArgs * ipconfig ) @@ -390,20 +389,20 @@ void netapp_ipconfig( tNetappIpconfigRetArgs * ipconfig ) //***************************************************************************** #ifndef CC3000_TINY_DRIVER -long netapp_arp_flush(void) +INT32 netapp_arp_flush(void) { - signed char scRet; - unsigned char *ptr; - + INT8 scRet; + UINT8 *ptr; + scRet = EFAIL; ptr = tSLInformation.pucTxCommandBuffer; - + // Initiate a HCI command hci_command_send(HCI_NETAPP_ARP_FLUSH, ptr, 0); - + // Wait for command complete event SimpleLinkWaitEvent(HCI_NETAPP_ARP_FLUSH, &scRet); - + return(scRet); } #endif @@ -428,32 +427,32 @@ long netapp_arp_flush(void) #ifndef CC3000_TINY_DRIVER -long netapp_set_debug_level(unsigned long ulLevel) +INT32 netapp_set_debug_level(UINT32 ulLevel) { - signed char scRet; - unsigned char *ptr, *args; + INT8 scRet; + UINT8 *ptr, *args; - scRet = EFAIL; - ptr = tSLInformation.pucTxCommandBuffer; - args = (ptr + HEADERS_SIZE_CMD); + scRet = EFAIL; + ptr = tSLInformation.pucTxCommandBuffer; + args = (ptr + HEADERS_SIZE_CMD); - // - // Fill in temporary command buffer - // - args = UINT32_TO_STREAM(args, ulLevel); + // + // Fill in temporary command buffer + // + args = UINT32_TO_STREAM(args, ulLevel); - // - // Initiate a HCI command - // - hci_command_send(HCI_NETAPP_SET_DEBUG_LEVEL, ptr, NETAPP_SET_DEBUG_LEVEL_PARAMS_LEN); + // + // Initiate a HCI command + // + hci_command_send(HCI_NETAPP_SET_DEBUG_LEVEL, ptr, NETAPP_SET_DEBUG_LEVEL_PARAMS_LEN); - // + // // Wait for command complete event // SimpleLinkWaitEvent(HCI_NETAPP_SET_DEBUG_LEVEL, &scRet); - return(scRet); + return(scRet); } #endif diff --git a/src/cc3k/src/nvmem.c b/src/cc3k/src/nvmem.c index 1bbc51d01..7977709c7 100644 --- a/src/cc3k/src/nvmem.c +++ b/src/cc3k/src/nvmem.c @@ -72,7 +72,7 @@ //! @param ulOffset ulOffset in file from where to read //! @param buff output buffer pointer //! -//! @return number of bytes read, otherwise error. +//! @return on success 0, error otherwise. //! //! @brief Reads data from the file referred by the ulFileId parameter. //! Reads data from file ulOffset till length. Err if the file can't @@ -80,33 +80,32 @@ //! //***************************************************************************** -signed long -nvmem_read(unsigned long ulFileId, unsigned long ulLength, unsigned long ulOffset, unsigned char *buff) +INT32 nvmem_read(UINT32 ulFileId, UINT32 ulLength, UINT32 ulOffset, UINT8 *buff) { - unsigned char ucStatus = 0xFF; - unsigned char *ptr; - unsigned char *args; - + UINT8 ucStatus = 0xFF; + UINT8 *ptr; + UINT8 *args; + ptr = tSLInformation.pucTxCommandBuffer; args = (ptr + HEADERS_SIZE_CMD); - + // Fill in HCI packet structure args = UINT32_TO_STREAM(args, ulFileId); args = UINT32_TO_STREAM(args, ulLength); args = UINT32_TO_STREAM(args, ulOffset); - + // Initiate a HCI command hci_command_send(HCI_CMND_NVMEM_READ, ptr, NVMEM_READ_PARAMS_LEN); SimpleLinkWaitEvent(HCI_CMND_NVMEM_READ, &ucStatus); - + // In case there is data - read it - even if an error code is returned - // Note: It is the user responsibility to ignore the data in case of an error code - + // Note: It is the user responsibility to ignore the data in case of an error code + // Wait for the data in a synchronous way. Here we assume that the buffer is // big enough to store also parameters of nvmem - + SimpleLinkWaitData(buff, 0, 0); - + return(ucStatus); } @@ -132,34 +131,32 @@ nvmem_read(unsigned long ulFileId, unsigned long ulLength, unsigned long ulOffse //! //***************************************************************************** -signed long -nvmem_write(unsigned long ulFileId, unsigned long ulLength, unsigned long - ulEntryOffset, unsigned char *buff) +INT32 nvmem_write(UINT32 ulFileId, UINT32 ulLength, UINT32 ulEntryOffset, UINT8 *buff) { - long iRes; - unsigned char *ptr; - unsigned char *args; - + INT32 iRes; + UINT8 *ptr; + UINT8 *args; + iRes = EFAIL; - + ptr = tSLInformation.pucTxCommandBuffer; args = (ptr + SPI_HEADER_SIZE + HCI_DATA_CMD_HEADER_SIZE); - + // Fill in HCI packet structure args = UINT32_TO_STREAM(args, ulFileId); args = UINT32_TO_STREAM(args, 12); args = UINT32_TO_STREAM(args, ulLength); args = UINT32_TO_STREAM(args, ulEntryOffset); - + memcpy((ptr + SPI_HEADER_SIZE + HCI_DATA_CMD_HEADER_SIZE + - NVMEM_WRITE_PARAMS_LEN),buff,ulLength); - + NVMEM_WRITE_PARAMS_LEN),buff,ulLength); + // Initiate a HCI command but it will come on data channel hci_data_command_send(HCI_CMND_NVMEM_WRITE, ptr, NVMEM_WRITE_PARAMS_LEN, - ulLength); - + ulLength); + SimpleLinkWaitEvent(HCI_EVNT_NVMEM_WRITE, &iRes); - + return(iRes); } @@ -177,7 +174,7 @@ nvmem_write(unsigned long ulFileId, unsigned long ulLength, unsigned long //! //***************************************************************************** -unsigned char nvmem_set_mac_address(unsigned char *mac) +UINT8 nvmem_set_mac_address(UINT8 *mac) { return nvmem_write(NVMEM_MAC_FILEID, MAC_ADDR_LEN, 0, mac); } @@ -195,7 +192,7 @@ unsigned char nvmem_set_mac_address(unsigned char *mac) //! //***************************************************************************** -unsigned char nvmem_get_mac_address(unsigned char *mac) +UINT8 nvmem_get_mac_address(UINT8 *mac) { return nvmem_read(NVMEM_MAC_FILEID, MAC_ADDR_LEN, 0, mac); } @@ -218,12 +215,12 @@ unsigned char nvmem_get_mac_address(unsigned char *mac) //! //***************************************************************************** -unsigned char nvmem_write_patch(unsigned long ulFileId, unsigned long spLength, const unsigned char *spData) +UINT8 nvmem_write_patch(UINT32 ulFileId, UINT32 spLength, const UINT8 *spData) { - unsigned char status = 0; - unsigned short offset = 0; - unsigned char* spDataPtr = (unsigned char*)spData; - + UINT8 status = 0; + UINT16 offset = 0; + UINT8* spDataPtr = (UINT8*)spData; + while ((status == 0) && (spLength >= SP_PORTION_SIZE)) { status = nvmem_write(ulFileId, SP_PORTION_SIZE, offset, spDataPtr); @@ -231,19 +228,19 @@ unsigned char nvmem_write_patch(unsigned long ulFileId, unsigned long spLength, spLength -= SP_PORTION_SIZE; spDataPtr += SP_PORTION_SIZE; } - + if (status !=0) { // NVMEM error occurred return status; } - + if (spLength != 0) { // if reached here, a reminder is left status = nvmem_write(ulFileId, spLength, offset, spDataPtr); } - + return status; } @@ -262,23 +259,23 @@ unsigned char nvmem_write_patch(unsigned long ulFileId, unsigned long spLength, //***************************************************************************** #ifndef CC3000_TINY_DRIVER -unsigned char nvmem_read_sp_version(unsigned char* patchVer) +UINT8 nvmem_read_sp_version(UINT8* patchVer) { - unsigned char *ptr; + UINT8 *ptr; // 1st byte is the status and the rest is the SP version - unsigned char retBuf[5]; - + UINT8 retBuf[5]; + ptr = tSLInformation.pucTxCommandBuffer; - - // Initiate a HCI command, no args are required + + // Initiate a HCI command, no args are required hci_command_send(HCI_CMND_READ_SP_VERSION, ptr, 0); SimpleLinkWaitEvent(HCI_CMND_READ_SP_VERSION, retBuf); - + // package ID *patchVer = retBuf[3]; // package build number *(patchVer+1) = retBuf[4]; - + return(retBuf[0]); } #endif @@ -306,25 +303,24 @@ unsigned char nvmem_read_sp_version(unsigned char* patchVer) //! //***************************************************************************** -signed long -nvmem_create_entry(unsigned long ulFileId, unsigned long ulNewLen) +INT32 nvmem_create_entry(UINT32 ulFileId, UINT32 ulNewLen) { - unsigned char *ptr; - unsigned char *args; - unsigned short retval; - + UINT8 *ptr; + UINT8 *args; + UINT8 retval; + ptr = tSLInformation.pucTxCommandBuffer; args = (ptr + HEADERS_SIZE_CMD); - + // Fill in HCI packet structure args = UINT32_TO_STREAM(args, ulFileId); args = UINT32_TO_STREAM(args, ulNewLen); - + // Initiate a HCI command hci_command_send(HCI_CMND_NVMEM_CREATE_ENTRY,ptr, NVMEM_CREATE_PARAMS_LEN); - + SimpleLinkWaitEvent(HCI_CMND_NVMEM_CREATE_ENTRY, &retval); - + return(retval); } diff --git a/src/cc3k/src/security.c b/src/cc3k/src/security.c index 77aa945cc..62b4f8813 100644 --- a/src/cc3k/src/security.c +++ b/src/cc3k/src/security.c @@ -44,7 +44,7 @@ #ifndef CC3000_UNENCRYPTED_SMART_CONFIG // foreward sbox -const unsigned char sbox[256] = { +const UINT8 sbox[256] = { //0 1 2 3 4 5 6 7 8 9 A B C D E F 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, //0 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, //1 @@ -63,7 +63,7 @@ const unsigned char sbox[256] = { 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, //E 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16 }; //F // inverse sbox -const unsigned char rsbox[256] = +const UINT8 rsbox[256] = { 0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb , 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb , 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e @@ -81,11 +81,11 @@ const unsigned char rsbox[256] = , 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61 , 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d }; // round constant -const unsigned char Rcon[11] = { +const UINT8 Rcon[11] = { 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36}; -unsigned char expandedKey[176]; +UINT8 expandedKey[176]; //***************************************************************************** // @@ -100,10 +100,9 @@ unsigned char expandedKey[176]; //! //***************************************************************************** -void expandKey(unsigned char *expandedKey, - unsigned char *key) +void expandKey(UINT8 *expandedKey, UINT8 *key) { - unsigned short ii, buf1; + UINT16 ii, buf1; for (ii=0;ii<16;ii++) expandedKey[ii] = key[ii]; for (ii=1;ii<11;ii++){ @@ -140,7 +139,7 @@ void expandKey(unsigned char *expandedKey, //! //***************************************************************************** -unsigned char galois_mul2(unsigned char value) +UINT8 galois_mul2(UINT8 value) { if (value>>7) { @@ -174,9 +173,9 @@ unsigned char galois_mul2(unsigned char value) //! //***************************************************************************** -void aes_encr(unsigned char *state, unsigned char *expandedKey) +void aes_encr(UINT8 *state, UINT8 *expandedKey) { - unsigned char buf1, buf2, buf3, round; + UINT8 buf1, buf2, buf3, round; for (round = 0; round < 9; round ++){ // addroundkey, sbox and shiftrows @@ -301,10 +300,10 @@ void aes_encr(unsigned char *state, unsigned char *expandedKey) //! //***************************************************************************** -void aes_decr(unsigned char *state, unsigned char *expandedKey) +void aes_decr(UINT8 *state, UINT8 *expandedKey) { - unsigned char buf1, buf2, buf3; - signed char round; + UINT8 buf1, buf2, buf3; + INT8 round; round = 9; // initial addroundkey @@ -444,8 +443,7 @@ void aes_decr(unsigned char *state, unsigned char *expandedKey) //! //***************************************************************************** -void aes_encrypt(unsigned char *state, - unsigned char *key) +void aes_encrypt(UINT8 *state, UINT8 *key) { // expand the key into 176 bytes expandKey(expandedKey, key); @@ -469,8 +467,7 @@ void aes_encrypt(unsigned char *state, //! //***************************************************************************** -void aes_decrypt(unsigned char *state, - unsigned char *key) +void aes_decrypt(UINT8 *state, UINT8 *key) { expandKey(expandedKey, key); // expand the key into 176 bytes aes_decr(state, expandedKey); @@ -491,9 +488,9 @@ void aes_decrypt(unsigned char *state, //! //***************************************************************************** -signed long aes_read_key(unsigned char *key) +INT32 aes_read_key(UINT8 *key) { - signed long returnValue; + INT32 returnValue; returnValue = nvmem_read(NVMEM_AES128_KEY_FILEID, AES128_KEY_SIZE, 0, key); @@ -514,9 +511,9 @@ signed long aes_read_key(unsigned char *key) //! //***************************************************************************** -signed long aes_write_key(unsigned char *key) +INT32 aes_write_key(UINT8 *key) { - signed long returnValue; + INT32 returnValue; returnValue = nvmem_write(NVMEM_AES128_KEY_FILEID, AES128_KEY_SIZE, 0, key); diff --git a/src/cc3k/src/socket.c b/src/cc3k/src/socket.c index bf941c9b1..732289f56 100644 --- a/src/cc3k/src/socket.c +++ b/src/cc3k/src/socket.c @@ -52,14 +52,14 @@ //Enable this flag if and only if you must comply with BSD socket //close() function #ifdef _API_USE_BSD_CLOSE - #define close(sd) closesocket(sd) +#define close(sd) closesocket(sd) #endif //Enable this flag if and only if you must comply with BSD socket read() and //write() functions #ifdef _API_USE_BSD_READ_WRITE - #define read(sd, buf, len, flags) recv(sd, buf, len, flags) - #define write(sd, buf, len, flags) send(sd, buf, len, flags) +#define read(sd, buf, len, flags) recv(sd, buf, len, flags) +#define write(sd, buf, len, flags) send(sd, buf, len, flags) #endif #define SOCKET_OPEN_PARAMS_LEN (12) @@ -75,7 +75,7 @@ #define SOCKET_RECV_FROM_PARAMS_LEN (12) #define SOCKET_SENDTO_PARAMS_LEN (24) #define SOCKET_MDNS_ADVERTISE_PARAMS_LEN (12) - +#define SOCKET_GET_MSS_VALUE_PARAMS_LEN (4) // The legnth of arguments for the SEND command: sd + buff_offset + len + flags, // while size of each parameter is 32 bit - so the total length is 16 bytes; @@ -108,8 +108,7 @@ //! regarding the buffers available. // //***************************************************************************** -int -HostFlowControlConsumeBuff(int sd) +INT16 HostFlowControlConsumeBuff(INT16 sd) { #ifndef SEND_NON_BLOCKING /* wait in busy loop */ @@ -124,16 +123,16 @@ HostFlowControlConsumeBuff(int sd) tSLInformation.slTransmitDataError = 0; return errno; } - + if(SOCKET_STATUS_ACTIVE != get_socket_active_status(sd)) return -1; } while(0 == tSLInformation.usNumberOfFreeBuffers); - + tSLInformation.usNumberOfFreeBuffers--; - + return 0; #else - + // In case last transmission failed then we will return the last failure // reason here. // Note that the buffer will not be allocated in this case @@ -145,7 +144,7 @@ HostFlowControlConsumeBuff(int sd) } if(SOCKET_STATUS_ACTIVE != get_socket_active_status(sd)) return -1; - + //If there are no available buffers, return -2. It is recommended to use // select or receive to see if there is any buffer occupied with received data // If so, call receive() to release the buffer. @@ -183,32 +182,31 @@ HostFlowControlConsumeBuff(int sd) // //***************************************************************************** -int -socket(long domain, long type, long protocol) +INT16 socket(INT32 domain, INT32 type, INT32 protocol) { - long ret; - unsigned char *ptr, *args; - + INT32 ret; + UINT8 *ptr, *args; + ret = EFAIL; ptr = tSLInformation.pucTxCommandBuffer; args = (ptr + HEADERS_SIZE_CMD); - + // Fill in HCI packet structure args = UINT32_TO_STREAM(args, domain); args = UINT32_TO_STREAM(args, type); args = UINT32_TO_STREAM(args, protocol); - + // Initiate a HCI command hci_command_send(HCI_CMND_SOCKET, ptr, SOCKET_OPEN_PARAMS_LEN); - + // Since we are in blocking state - wait for event complete SimpleLinkWaitEvent(HCI_CMND_SOCKET, &ret); - + // Process the event errno = ret; - + set_socket_active_status(ret, SOCKET_STATUS_ACTIVE); - + return(ret); } @@ -224,31 +222,30 @@ socket(long domain, long type, long protocol) // //***************************************************************************** -long -closesocket(long sd) +INT32 closesocket(INT32 sd) { - long ret; - unsigned char *ptr, *args; - + INT32 ret; + UINT8 *ptr, *args; + ret = EFAIL; ptr = tSLInformation.pucTxCommandBuffer; args = (ptr + HEADERS_SIZE_CMD); - + // Fill in HCI packet structure args = UINT32_TO_STREAM(args, sd); - + // Initiate a HCI command hci_command_send(HCI_CMND_CLOSE_SOCKET, - ptr, SOCKET_CLOSE_PARAMS_LEN); - + ptr, SOCKET_CLOSE_PARAMS_LEN); + // Since we are in blocking state - wait for event complete SimpleLinkWaitEvent(HCI_CMND_CLOSE_SOCKET, &ret); errno = ret; - + // since 'close' call may result in either OK (and then it closed) or error // mark this socket as invalid set_socket_active_status(sd, SOCKET_STATUS_INACTIVE); - + return(ret); } @@ -297,34 +294,33 @@ closesocket(long sd) // //***************************************************************************** -long -accept(long sd, sockaddr *addr, socklen_t *addrlen) +INT32 accept(INT32 sd, sockaddr *addr, socklen_t *addrlen) { - long ret; - unsigned char *ptr, *args; + INT32 ret; + UINT8 *ptr, *args; tBsdReturnParams tAcceptReturnArguments; - + ret = EFAIL; ptr = tSLInformation.pucTxCommandBuffer; args = (ptr + HEADERS_SIZE_CMD); - + // Fill in temporary command buffer args = UINT32_TO_STREAM(args, sd); - + // Initiate a HCI command hci_command_send(HCI_CMND_ACCEPT, - ptr, SOCKET_ACCEPT_PARAMS_LEN); - + ptr, SOCKET_ACCEPT_PARAMS_LEN); + // Since we are in blocking state - wait for event complete SimpleLinkWaitEvent(HCI_CMND_ACCEPT, &tAcceptReturnArguments); - - + + // need specify return parameters!!! memcpy(addr, &tAcceptReturnArguments.tSocketAddress, ASIC_ADDR_LEN); *addrlen = ASIC_ADDR_LEN; errno = tAcceptReturnArguments.iStatus; ret = errno; - + // if succeeded, iStatus = new socket descriptor. otherwise - error number if(M_IS_VALID_SD(ret)) { @@ -334,7 +330,7 @@ accept(long sd, sockaddr *addr, socklen_t *addrlen) { set_socket_active_status(sd, SOCKET_STATUS_INACTIVE); } - + return(ret); } @@ -361,33 +357,32 @@ accept(long sd, sockaddr *addr, socklen_t *addrlen) // //***************************************************************************** -long -bind(long sd, const sockaddr *addr, long addrlen) +INT32 bind(INT32 sd, const sockaddr *addr, INT32 addrlen) { - long ret; - unsigned char *ptr, *args; - + INT32 ret; + UINT8 *ptr, *args; + ret = EFAIL; ptr = tSLInformation.pucTxCommandBuffer; args = (ptr + HEADERS_SIZE_CMD); - + addrlen = ASIC_ADDR_LEN; - + // Fill in temporary command buffer args = UINT32_TO_STREAM(args, sd); args = UINT32_TO_STREAM(args, 0x00000008); args = UINT32_TO_STREAM(args, addrlen); - ARRAY_TO_STREAM(args, ((unsigned char *)addr), addrlen); - + ARRAY_TO_STREAM(args, ((UINT8 *)addr), addrlen); + // Initiate a HCI command hci_command_send(HCI_CMND_BIND, - ptr, SOCKET_BIND_PARAMS_LEN); - + ptr, SOCKET_BIND_PARAMS_LEN); + // Since we are in blocking state - wait for event complete SimpleLinkWaitEvent(HCI_CMND_BIND, &ret); - + errno = ret; - + return(ret); } @@ -414,28 +409,27 @@ bind(long sd, const sockaddr *addr, long addrlen) // //***************************************************************************** -long -listen(long sd, long backlog) +INT32 listen(INT32 sd, INT32 backlog) { - long ret; - unsigned char *ptr, *args; - + INT32 ret; + UINT8 *ptr, *args; + ret = EFAIL; ptr = tSLInformation.pucTxCommandBuffer; args = (ptr + HEADERS_SIZE_CMD); - + // Fill in temporary command buffer args = UINT32_TO_STREAM(args, sd); args = UINT32_TO_STREAM(args, backlog); - + // Initiate a HCI command hci_command_send(HCI_CMND_LISTEN, - ptr, SOCKET_LISTEN_PARAMS_LEN); - + ptr, SOCKET_LISTEN_PARAMS_LEN); + // Since we are in blocking state - wait for event complete SimpleLinkWaitEvent(HCI_CMND_LISTEN, &ret); errno = ret; - + return(ret); } @@ -459,41 +453,40 @@ listen(long sd, long backlog) //***************************************************************************** #ifndef CC3000_TINY_DRIVER -int -gethostbyname(char * hostname, unsigned short usNameLen, - unsigned long* out_ip_addr) +INT16 gethostbyname(CHAR * hostname, UINT16 usNameLen, + UINT32* out_ip_addr) { tBsdGethostbynameParams ret; - unsigned char *ptr, *args; - + UINT8 *ptr, *args; + errno = EFAIL; - + if (usNameLen > HOSTNAME_MAX_LENGTH) { return errno; } - + ptr = tSLInformation.pucTxCommandBuffer; args = (ptr + SIMPLE_LINK_HCI_CMND_TRANSPORT_HEADER_SIZE); - + // Fill in HCI packet structure args = UINT32_TO_STREAM(args, 8); args = UINT32_TO_STREAM(args, usNameLen); ARRAY_TO_STREAM(args, hostname, usNameLen); - + // Initiate a HCI command hci_command_send(HCI_CMND_GETHOSTNAME, ptr, SOCKET_GET_HOST_BY_NAME_PARAMS_LEN - + usNameLen - 1); - + + usNameLen - 1); + // Since we are in blocking state - wait for event complete SimpleLinkWaitEvent(HCI_EVNT_BSD_GETHOSTBYNAME, &ret); - + errno = ret.retVal; - - (*((long*)out_ip_addr)) = ret.outputAddress; - + + (*((INT32*)out_ip_addr)) = ret.outputAddress; + return (errno); - + } #endif @@ -526,33 +519,32 @@ gethostbyname(char * hostname, unsigned short usNameLen, // //***************************************************************************** -long -connect(long sd, const sockaddr *addr, long addrlen) +INT32 connect(INT32 sd, const sockaddr *addr, INT32 addrlen) { - long int ret; - unsigned char *ptr, *args; - + INT32 ret; + UINT8 *ptr, *args; + ret = EFAIL; ptr = tSLInformation.pucTxCommandBuffer; args = (ptr + SIMPLE_LINK_HCI_CMND_TRANSPORT_HEADER_SIZE); addrlen = 8; - + // Fill in temporary command buffer args = UINT32_TO_STREAM(args, sd); args = UINT32_TO_STREAM(args, 0x00000008); args = UINT32_TO_STREAM(args, addrlen); - ARRAY_TO_STREAM(args, ((unsigned char *)addr), addrlen); - + ARRAY_TO_STREAM(args, ((UINT8 *)addr), addrlen); + // Initiate a HCI command hci_command_send(HCI_CMND_CONNECT, - ptr, SOCKET_CONNECT_PARAMS_LEN); - + ptr, SOCKET_CONNECT_PARAMS_LEN); + // Since we are in blocking state - wait for event complete SimpleLinkWaitEvent(HCI_CMND_CONNECT, &ret); - + errno = ret; - - return((long)ret); + + return((INT32)ret); } @@ -594,14 +586,13 @@ connect(long sd, const sockaddr *addr, long addrlen) // //***************************************************************************** -int -select(long nfds, fd_set *readsds, fd_set *writesds, fd_set *exceptsds, - struct timeval *timeout) +INT16 select(INT32 nfds, fd_set *readsds, fd_set *writesds, fd_set *exceptsds, +struct timeval *timeout) { - unsigned char *ptr, *args; + UINT8 *ptr, *args; tBsdSelectRecvParams tParams; - unsigned long is_blocking; - + UINT32 is_blocking; + if( timeout == NULL) { is_blocking = 1; /* blocking , infinity timeout */ @@ -610,11 +601,11 @@ select(long nfds, fd_set *readsds, fd_set *writesds, fd_set *exceptsds, { is_blocking = 0; /* no blocking, timeout */ } - + // Fill in HCI packet structure ptr = tSLInformation.pucTxCommandBuffer; args = (ptr + HEADERS_SIZE_CMD); - + // Fill in temporary command buffer args = UINT32_TO_STREAM(args, nfds); args = UINT32_TO_STREAM(args, 0x00000014); @@ -622,27 +613,27 @@ select(long nfds, fd_set *readsds, fd_set *writesds, fd_set *exceptsds, args = UINT32_TO_STREAM(args, 0x00000014); args = UINT32_TO_STREAM(args, 0x00000014); args = UINT32_TO_STREAM(args, is_blocking); - args = UINT32_TO_STREAM(args, ((readsds) ? *(unsigned long*)readsds : 0)); - args = UINT32_TO_STREAM(args, ((writesds) ? *(unsigned long*)writesds : 0)); - args = UINT32_TO_STREAM(args, ((exceptsds) ? *(unsigned long*)exceptsds : 0)); - + args = UINT32_TO_STREAM(args, ((readsds) ? *(UINT32*)readsds : 0)); + args = UINT32_TO_STREAM(args, ((writesds) ? *(UINT32*)writesds : 0)); + args = UINT32_TO_STREAM(args, ((exceptsds) ? *(UINT32*)exceptsds : 0)); + if (timeout) { if ( 0 == timeout->tv_sec && timeout->tv_usec < - SELECT_TIMEOUT_MIN_MICRO_SECONDS) + SELECT_TIMEOUT_MIN_MICRO_SECONDS) { timeout->tv_usec = SELECT_TIMEOUT_MIN_MICRO_SECONDS; } args = UINT32_TO_STREAM(args, timeout->tv_sec); args = UINT32_TO_STREAM(args, timeout->tv_usec); } - + // Initiate a HCI command hci_command_send(HCI_CMND_BSD_SELECT, ptr, SOCKET_SELECT_PARAMS_LEN); - + // Since we are in blocking state - wait for event complete SimpleLinkWaitEvent(HCI_EVNT_SELECT, &tParams); - + // Update actually read FD if (tParams.iStatus >= 0) { @@ -650,19 +641,19 @@ select(long nfds, fd_set *readsds, fd_set *writesds, fd_set *exceptsds, { memcpy(readsds, &tParams.uiRdfd, sizeof(tParams.uiRdfd)); } - + if (writesds) { memcpy(writesds, &tParams.uiWrfd, sizeof(tParams.uiWrfd)); } - + if (exceptsds) { memcpy(exceptsds, &tParams.uiExfd, sizeof(tParams.uiExfd)); } - + return(tParams.iStatus); - + } else { @@ -709,7 +700,7 @@ select(long nfds, fd_set *readsds, fd_set *writesds, fd_set *exceptsds, //! 1. SOCKOPT_RECV_TIMEOUT (optname) //! SOCKOPT_RECV_TIMEOUT configures recv and recvfrom timeout //! in milliseconds. -//! In that case optval should be pointer to unsigned long. +//! In that case optval should be pointer to UINT32. //! 2. SOCKOPT_NONBLOCK (optname). sets the socket non-blocking mode on //! or off. //! In that case optval should be SOCK_ON or SOCK_OFF (optval). @@ -719,31 +710,30 @@ select(long nfds, fd_set *readsds, fd_set *writesds, fd_set *exceptsds, //***************************************************************************** #ifndef CC3000_TINY_DRIVER -int -setsockopt(long sd, long level, long optname, const void *optval, - socklen_t optlen) +INT16 setsockopt(INT32 sd, INT32 level, INT32 optname, const void *optval, + socklen_t optlen) { - int ret; - unsigned char *ptr, *args; - + INT32 ret; + UINT8 *ptr, *args; + ptr = tSLInformation.pucTxCommandBuffer; args = (ptr + HEADERS_SIZE_CMD); - + // Fill in temporary command buffer args = UINT32_TO_STREAM(args, sd); args = UINT32_TO_STREAM(args, level); args = UINT32_TO_STREAM(args, optname); args = UINT32_TO_STREAM(args, 0x00000008); args = UINT32_TO_STREAM(args, optlen); - ARRAY_TO_STREAM(args, ((unsigned char *)optval), optlen); - + ARRAY_TO_STREAM(args, ((UINT8 *)optval), optlen); + // Initiate a HCI command hci_command_send(HCI_CMND_SETSOCKOPT, - ptr, SOCKET_SET_SOCK_OPT_PARAMS_LEN + optlen); - + ptr, SOCKET_SET_SOCK_OPT_PARAMS_LEN + optlen); + // Since we are in blocking state - wait for event complete SimpleLinkWaitEvent(HCI_CMND_SETSOCKOPT, &ret); - + if (ret >= 0) { return (0); @@ -751,7 +741,7 @@ setsockopt(long sd, long level, long optname, const void *optval, else { errno = ret; - return (-1); + return ret; } } #endif @@ -794,7 +784,7 @@ setsockopt(long sd, long level, long optname, const void *optval, //! 1. SOCKOPT_RECV_TIMEOUT (optname) //! SOCKOPT_RECV_TIMEOUT configures recv and recvfrom timeout //! in milliseconds. -//! In that case optval should be pointer to unsigned long. +//! In that case optval should be pointer to UINT32. //! 2. SOCKOPT_NONBLOCK (optname). sets the socket non-blocking mode on //! or off. //! In that case optval should be SOCK_ON or SOCK_OFF (optval). @@ -803,28 +793,27 @@ setsockopt(long sd, long level, long optname, const void *optval, // //***************************************************************************** -int -getsockopt (long sd, long level, long optname, void *optval, socklen_t *optlen) +INT16 getsockopt (INT32 sd, INT32 level, INT32 optname, void *optval, socklen_t *optlen) { - unsigned char *ptr, *args; + UINT8 *ptr, *args; tBsdGetSockOptReturnParams tRetParams; - + ptr = tSLInformation.pucTxCommandBuffer; args = (ptr + HEADERS_SIZE_CMD); - + // Fill in temporary command buffer args = UINT32_TO_STREAM(args, sd); args = UINT32_TO_STREAM(args, level); args = UINT32_TO_STREAM(args, optname); - + // Initiate a HCI command hci_command_send(HCI_CMND_GETSOCKOPT, - ptr, SOCKET_GET_SOCK_OPT_PARAMS_LEN); - + ptr, SOCKET_GET_SOCK_OPT_PARAMS_LEN); + // Since we are in blocking state - wait for event complete SimpleLinkWaitEvent(HCI_CMND_GETSOCKOPT, &tRetParams); - - if (((signed char)tRetParams.iStatus) >= 0) + + if (((INT8)tRetParams.iStatus) >= 0) { *optlen = 4; memcpy(optval, tRetParams.ucOptValue, 4); @@ -833,7 +822,7 @@ getsockopt (long sd, long level, long optname, void *optval, socklen_t *optlen) else { errno = tRetParams.iStatus; - return (-1); + return errno; } } @@ -858,37 +847,36 @@ getsockopt (long sd, long level, long optname, void *optval, socklen_t *optlen) //! socket the message is received from // //***************************************************************************** -int -simple_link_recv(long sd, void *buf, long len, long flags, sockaddr *from, - socklen_t *fromlen, long opcode) +INT16 simple_link_recv(INT32 sd, void *buf, INT32 len, INT32 flags, sockaddr *from, + socklen_t *fromlen, INT32 opcode) { - unsigned char *ptr, *args; + UINT8 *ptr, *args; tBsdReadReturnParams tSocketReadEvent; - + ptr = tSLInformation.pucTxCommandBuffer; args = (ptr + HEADERS_SIZE_CMD); - + // Fill in HCI packet structure args = UINT32_TO_STREAM(args, sd); args = UINT32_TO_STREAM(args, len); args = UINT32_TO_STREAM(args, flags); - + // Generate the read command, and wait for the hci_command_send(opcode, ptr, SOCKET_RECV_FROM_PARAMS_LEN); - + // Since we are in blocking state - wait for event complete SimpleLinkWaitEvent(opcode, &tSocketReadEvent); - + // In case the number of bytes is more then zero - read data if (tSocketReadEvent.iNumberOfBytes > 0) { // Wait for the data in a synchronous way. Here we assume that the bug is // big enough to store also parameters of receive from too.... - SimpleLinkWaitData(buf, (unsigned char *)from, (unsigned char *)fromlen); + SimpleLinkWaitData(buf, (UINT8 *)from, (UINT8 *)fromlen); } - + errno = tSocketReadEvent.iNumberOfBytes; - + return(tSocketReadEvent.iNumberOfBytes); } @@ -914,8 +902,7 @@ simple_link_recv(long sd, void *buf, long len, long flags, sockaddr *from, // //***************************************************************************** -int -recv(long sd, void *buf, long len, long flags) +INT16 recv(INT32 sd, void *buf, INT32 len, INT32 flags) { return(simple_link_recv(sd, buf, len, flags, NULL, NULL, HCI_CMND_RECV)); } @@ -948,12 +935,11 @@ recv(long sd, void *buf, long len, long flags) //! @Note On this version, only blocking mode is supported. // //***************************************************************************** -int -recvfrom(long sd, void *buf, long len, long flags, sockaddr *from, - socklen_t *fromlen) +INT16 recvfrom(INT32 sd, void *buf, INT32 len, INT32 flags, sockaddr *from, + socklen_t *fromlen) { return(simple_link_recv(sd, buf, len, flags, from, fromlen, - HCI_CMND_RECVFROM)); + HCI_CMND_RECVFROM)); } //***************************************************************************** @@ -976,29 +962,28 @@ recvfrom(long sd, void *buf, long len, long flags, sockaddr *from, //! socket // //***************************************************************************** -int -simple_link_send(long sd, const void *buf, long len, long flags, - const sockaddr *to, long tolen, long opcode) +INT16 simple_link_send(INT32 sd, const void *buf, INT32 len, INT32 flags, + const sockaddr *to, INT32 tolen, INT32 opcode) { - unsigned char uArgSize, addrlen; - unsigned char *ptr, *pDataPtr, *args; - unsigned long addr_offset; - int res; - tBsdReadReturnParams tSocketSendEvent; - + UINT8 uArgSize=0, addrlen; + UINT8 *ptr, *pDataPtr=0, *args; + UINT32 addr_offset=0; + INT16 res; + tBsdReadReturnParams tSocketSendEvent; + // Check the bsd_arguments if (0 != (res = HostFlowControlConsumeBuff(sd))) { return res; } - + //Update the number of sent packets tSLInformation.NumberOfSentPackets++; - + // Allocate a buffer and construct a packet and send it over spi ptr = tSLInformation.pucTxCommandBuffer; args = (ptr + HEADERS_SIZE_DATA); - + // Update the offset of data and parameters according to the command switch(opcode) { @@ -1010,7 +995,7 @@ simple_link_send(long sd, const void *buf, long len, long flags, pDataPtr = ptr + HEADERS_SIZE_DATA + SOCKET_SENDTO_PARAMS_LEN; break; } - + case HCI_CMND_SEND: { tolen = 0; @@ -1019,42 +1004,42 @@ simple_link_send(long sd, const void *buf, long len, long flags, pDataPtr = ptr + HEADERS_SIZE_DATA + HCI_CMND_SEND_ARG_LENGTH; break; } - + default: { break; } } - + // Fill in temporary command buffer args = UINT32_TO_STREAM(args, sd); args = UINT32_TO_STREAM(args, uArgSize - sizeof(sd)); args = UINT32_TO_STREAM(args, len); args = UINT32_TO_STREAM(args, flags); - + if (opcode == HCI_CMND_SENDTO) { args = UINT32_TO_STREAM(args, addr_offset); args = UINT32_TO_STREAM(args, addrlen); } - + // Copy the data received from user into the TX Buffer - ARRAY_TO_STREAM(pDataPtr, ((unsigned char *)buf), len); - + ARRAY_TO_STREAM(pDataPtr, ((UINT8 *)buf), len); + // In case we are using SendTo, copy the to parameters if (opcode == HCI_CMND_SENDTO) { - ARRAY_TO_STREAM(pDataPtr, ((unsigned char *)to), tolen); + ARRAY_TO_STREAM(pDataPtr, ((UINT8 *)to), tolen); } - + // Initiate a HCI command - hci_data_send(opcode, ptr, uArgSize, len,(unsigned char*)to, tolen); - - if (opcode == HCI_CMND_SENDTO) - SimpleLinkWaitEvent(HCI_EVNT_SENDTO, &tSocketSendEvent); - else - SimpleLinkWaitEvent(HCI_EVNT_SEND, &tSocketSendEvent); - + hci_data_send(opcode, ptr, uArgSize, len,(UINT8*)to, tolen); + + if (opcode == HCI_CMND_SENDTO) + SimpleLinkWaitEvent(HCI_EVNT_SENDTO, &tSocketSendEvent); + else + SimpleLinkWaitEvent(HCI_EVNT_SEND, &tSocketSendEvent); + return (len); } @@ -1081,8 +1066,7 @@ simple_link_send(long sd, const void *buf, long len, long flags, // //***************************************************************************** -int -send(long sd, const void *buf, long len, long flags) +INT16 send(INT32 sd, const void *buf, INT32 len, INT32 flags) { return(simple_link_send(sd, buf, len, flags, NULL, 0, HCI_CMND_SEND)); } @@ -1113,9 +1097,8 @@ send(long sd, const void *buf, long len, long flags) // //***************************************************************************** -int -sendto(long sd, const void *buf, long len, long flags, const sockaddr *to, - socklen_t tolen) +INT16 sendto(INT32 sd, const void *buf, INT32 len, INT32 flags, const sockaddr *to, + socklen_t tolen) { return(simple_link_send(sd, buf, len, flags, to, tolen, HCI_CMND_SENDTO)); } @@ -1127,7 +1110,7 @@ sendto(long sd, const void *buf, long len, long flags, const sockaddr *to, //! @param[in] mdnsEnabled flag to enable/disable the mDNS feature //! @param[in] deviceServiceName Service name as part of the published //! canonical domain name -//! @param[in] deviceServiceNameLength Length of the service name +//! @param[in] deviceServiceNameLength Length of the service name - up to 32 chars //! //! //! @return On success, zero is returned, return SOC_ERROR if socket was not @@ -1137,32 +1120,64 @@ sendto(long sd, const void *buf, long len, long flags, const sockaddr *to, // //***************************************************************************** -int -mdnsAdvertiser(unsigned short mdnsEnabled, char * deviceServiceName, unsigned short deviceServiceNameLength) +INT16 mdnsAdvertiser(UINT16 mdnsEnabled, CHAR * deviceServiceName, UINT16 deviceServiceNameLength) { - int ret; - unsigned char *pTxBuffer, *pArgs; - + INT8 ret; + UINT8 *pTxBuffer, *pArgs; + if (deviceServiceNameLength > MDNS_DEVICE_SERVICE_MAX_LENGTH) { return EFAIL; } - + pTxBuffer = tSLInformation.pucTxCommandBuffer; pArgs = (pTxBuffer + SIMPLE_LINK_HCI_CMND_TRANSPORT_HEADER_SIZE); - + // Fill in HCI packet structure pArgs = UINT32_TO_STREAM(pArgs, mdnsEnabled); pArgs = UINT32_TO_STREAM(pArgs, 8); pArgs = UINT32_TO_STREAM(pArgs, deviceServiceNameLength); ARRAY_TO_STREAM(pArgs, deviceServiceName, deviceServiceNameLength); - + // Initiate a HCI command hci_command_send(HCI_CMND_MDNS_ADVERTISE, pTxBuffer, SOCKET_MDNS_ADVERTISE_PARAMS_LEN + deviceServiceNameLength); - + // Since we are in blocking state - wait for event complete SimpleLinkWaitEvent(HCI_EVNT_MDNS_ADVERTISE, &ret); - + return ret; - + } + + +//***************************************************************************** +// +//! getmssvalue +//! +//! @param[in] sd socket descriptor +//! +//! @return On success, returns the MSS value of a TCP connection +//! +//! @brief Returns the MSS value of a TCP connection according to the socket descriptor +// +//***************************************************************************** +UINT16 getmssvalue (INT32 sd) +{ + UINT8 *ptr, *args; + UINT16 ret; + + ptr = tSLInformation.pucTxCommandBuffer; + args = (ptr + HEADERS_SIZE_CMD); + + // Fill in temporary command buffer + args = UINT32_TO_STREAM(args, sd); + + // Initiate a HCI command + hci_command_send(HCI_CMND_GETMSSVALUE, ptr, SOCKET_GET_MSS_VALUE_PARAMS_LEN); + + // Since we are in blocking state - wait for event complete + SimpleLinkWaitEvent(HCI_EVNT_GETMSSVALUE, &ret); + + return ret; +} + diff --git a/src/cc3k/src/spi.c b/src/cc3k/src/spi.c index f708a41d5..4fdee9882 100644 --- a/src/cc3k/src/spi.c +++ b/src/cc3k/src/spi.c @@ -40,10 +40,12 @@ #define READ 3 #define WRITE 1 + #define HI(value) (((value) & 0xFF00) >> 8) #define LO(value) ((value) & 0x00FF) -#define HEADERS_SIZE_EVNT (SPI_HEADER_SIZE + 5) + #define SPI_TIMEOUT (1000) +#define HEADERS_SIZE_EVNT (SPI_HEADER_SIZE + 5) /* SPI bus states */ #define eSPI_STATE_POWERUP (0) @@ -63,7 +65,7 @@ typedef struct { unsigned long ulSpiState; unsigned char *pTxPacket; unsigned char *pRxPacket; -}tSpiInformation; +} tSpiInformation; tSpiInformation sSpiInformation; // The magic number that resides at the end of the TX/RX buffer (1 byte after the allocated size) @@ -130,6 +132,8 @@ void SpiOpen(gcSpiHandleRx pfRxHandler) HAL_NVIC_SetPriority(WLAN_IRQn, 5, 0); HAL_NVIC_EnableIRQ(WLAN_IRQn); HAL_Delay(500); + + tSLInformation.WlanInterruptEnable(); } @@ -251,7 +255,6 @@ long SpiWrite(unsigned char *pUserBuffer, unsigned short usLength) void SpiWriteDataSynchronous(unsigned char *data, unsigned short size) { -// HAL_SPI_Transmit(&SPIHandle, data, size, SPI_TIMEOUT); for (int i = 0; i 16) - aes_decrypt((unsigned char *)(decKeyPtr + 16), key); - - if (*(unsigned char *)(decKeyPtr +31) != 0) + aes_decrypt((UINT8 *)(decKeyPtr + 16), key); + + if (*(UINT8 *)(decKeyPtr +31) != 0) { if (*decKeyPtr == 31) { @@ -1201,56 +1189,56 @@ wlan_smart_config_process() keyLen = *decKeyPtr; decKeyPtr++; } - + // add a profile switch (profileArray[profileArray[0] + 2]) { case WLAN_SEC_UNSEC://None - { + { returnValue = wlan_add_profile(profileArray[profileArray[0] + 2], // security type - ssidPtr, // SSID - ssidLen, // SSID length - NULL, // BSSID - 1, // Priority - 0, 0, 0, 0, 0); - + ssidPtr, // SSID + ssidLen, // SSID length + NULL, // BSSID + 1, // Priority + 0, 0, 0, 0, 0); + break; - } - + } + case WLAN_SEC_WEP://WEP { returnValue = wlan_add_profile(profileArray[profileArray[0] + 2], // security type - ssidPtr, // SSID - ssidLen, // SSID length - NULL, // BSSID - 1, // Priority - keyLen, // KEY length - 0, // KEY index - 0, - decKeyPtr, // KEY - 0); - + ssidPtr, // SSID + ssidLen, // SSID length + NULL, // BSSID + 1, // Priority + keyLen, // KEY length + 0, // KEY index + 0, + decKeyPtr, // KEY + 0); + break; } - + case WLAN_SEC_WPA://WPA case WLAN_SEC_WPA2://WPA2 { returnValue = wlan_add_profile(WLAN_SEC_WPA2, // security type - ssidPtr, - ssidLen, - NULL, // BSSID - 1, // Priority - 0x18, // PairwiseCipher - 0x1e, // GroupCipher - 2, // KEY management - decKeyPtr, // KEY - keyLen); // KEY length - + ssidPtr, + ssidLen, + NULL, // BSSID + 1, // Priority + 0x18, // PairwiseCipher + 0x1e, // GroupCipher + 2, // KEY management + decKeyPtr, // KEY + keyLen); // KEY length + break; } } - + return returnValue; } #endif //CC3000_UNENCRYPTED_SMART_CONFIG