mirror of
https://github.com/openmv/openmv.git
synced 2025-11-04 14:49:50 +08:00
Update CC host driver
* Update to v1.15
This commit is contained in:
parent
dcb4f34520
commit
55ae590bcb
@ -35,9 +35,12 @@
|
||||
#ifndef __COMMON_H__
|
||||
#define __COMMON_H__
|
||||
|
||||
#include "data_types.h"
|
||||
|
||||
//******************************************************************************
|
||||
// Include files
|
||||
//******************************************************************************
|
||||
#include <stdlib.h>
|
||||
#include <stdint.h>
|
||||
|
||||
//*****************************************************************************
|
||||
@ -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];}
|
||||
|
||||
|
||||
|
||||
|
||||
@ -6,6 +6,7 @@
|
||||
#include "socket.h"
|
||||
#include "nvmem.h"
|
||||
#include "netapp.h"
|
||||
#include "patch_prog.h"
|
||||
#endif //__CC3K_H__
|
||||
|
||||
|
||||
|
||||
107
src/cc3k/include/data_types.h
Normal file
107
src/cc3k/include/data_types.h
Normal file
@ -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__ */
|
||||
@ -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;
|
||||
|
||||
//*****************************************************************************
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
|
||||
|
||||
@ -35,7 +35,7 @@
|
||||
#ifndef __HOST_DRIVER_VERSION_H__
|
||||
#define __HOST_DRIVER_VERSION_H__
|
||||
|
||||
#define DRIVER_VERSION_NUMBER 13
|
||||
#define DRIVER_VERSION_NUMBER 15
|
||||
|
||||
|
||||
|
||||
|
||||
@ -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
|
||||
//*****************************************************************************
|
||||
//
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
//*****************************************************************************
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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);
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
|
||||
@ -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);
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
|
||||
@ -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)));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -40,6 +40,7 @@
|
||||
//
|
||||
//*****************************************************************************
|
||||
|
||||
#include <string.h>
|
||||
#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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -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<size; i++) {
|
||||
if (HAL_SPI_TransmitReceive(&SPIHandle, data, data, 1, SPI_TIMEOUT) != HAL_OK) {
|
||||
BREAK();
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user