CC3000HostDriver for device TI CC3000 some changes were made due to mbed compiler and the use of void*

Dependents:   CC3000Test

Committer:
dflet
Date:
Fri Aug 02 15:06:15 2013 +0000
Revision:
0:9cb694f00b7b
First commit TI CC3000HostDriver library

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dflet 0:9cb694f00b7b 1 /*****************************************************************************
dflet 0:9cb694f00b7b 2 *
dflet 0:9cb694f00b7b 3 * evnt_handler.h - CC3000 Host Driver Implementation.
dflet 0:9cb694f00b7b 4 * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
dflet 0:9cb694f00b7b 5 *
dflet 0:9cb694f00b7b 6 * Redistribution and use in source and binary forms, with or without
dflet 0:9cb694f00b7b 7 * modification, are permitted provided that the following conditions
dflet 0:9cb694f00b7b 8 * are met:
dflet 0:9cb694f00b7b 9 *
dflet 0:9cb694f00b7b 10 * Redistributions of source code must retain the above copyright
dflet 0:9cb694f00b7b 11 * notice, this list of conditions and the following disclaimer.
dflet 0:9cb694f00b7b 12 *
dflet 0:9cb694f00b7b 13 * Redistributions in binary form must reproduce the above copyright
dflet 0:9cb694f00b7b 14 * notice, this list of conditions and the following disclaimer in the
dflet 0:9cb694f00b7b 15 * documentation and/or other materials provided with the
dflet 0:9cb694f00b7b 16 * distribution.
dflet 0:9cb694f00b7b 17 *
dflet 0:9cb694f00b7b 18 * Neither the name of Texas Instruments Incorporated nor the names of
dflet 0:9cb694f00b7b 19 * its contributors may be used to endorse or promote products derived
dflet 0:9cb694f00b7b 20 * from this software without specific prior written permission.
dflet 0:9cb694f00b7b 21 *
dflet 0:9cb694f00b7b 22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
dflet 0:9cb694f00b7b 23 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
dflet 0:9cb694f00b7b 24 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
dflet 0:9cb694f00b7b 25 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
dflet 0:9cb694f00b7b 26 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
dflet 0:9cb694f00b7b 27 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
dflet 0:9cb694f00b7b 28 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
dflet 0:9cb694f00b7b 29 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
dflet 0:9cb694f00b7b 30 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
dflet 0:9cb694f00b7b 31 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
dflet 0:9cb694f00b7b 32 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
dflet 0:9cb694f00b7b 33 *
dflet 0:9cb694f00b7b 34 *****************************************************************************/
dflet 0:9cb694f00b7b 35 #ifndef __EVENT_HANDLER_H__
dflet 0:9cb694f00b7b 36 #define __EVENT_HANDLER_H__
dflet 0:9cb694f00b7b 37 #include "hci.h"
dflet 0:9cb694f00b7b 38 #include "socket.h"
dflet 0:9cb694f00b7b 39
dflet 0:9cb694f00b7b 40 //*****************************************************************************
dflet 0:9cb694f00b7b 41 //
dflet 0:9cb694f00b7b 42 // If building with a C++ compiler, make all of the definitions in this header
dflet 0:9cb694f00b7b 43 // have a C binding.
dflet 0:9cb694f00b7b 44 //
dflet 0:9cb694f00b7b 45 //*****************************************************************************
dflet 0:9cb694f00b7b 46 #ifdef __cplusplus
dflet 0:9cb694f00b7b 47 extern "C" {
dflet 0:9cb694f00b7b 48 #endif
dflet 0:9cb694f00b7b 49
dflet 0:9cb694f00b7b 50 //*****************************************************************************
dflet 0:9cb694f00b7b 51 //
dflet 0:9cb694f00b7b 52 // Prototypes for the APIs.
dflet 0:9cb694f00b7b 53 //
dflet 0:9cb694f00b7b 54 //*****************************************************************************
dflet 0:9cb694f00b7b 55
dflet 0:9cb694f00b7b 56 //*****************************************************************************
dflet 0:9cb694f00b7b 57 //
dflet 0:9cb694f00b7b 58 //! hci_event_handler
dflet 0:9cb694f00b7b 59 //!
dflet 0:9cb694f00b7b 60 //! @param pRetParams incoming data buffer
dflet 0:9cb694f00b7b 61 //! @param from from information (in case of data received)
dflet 0:9cb694f00b7b 62 //! @param fromlen from information length (in case of data received)
dflet 0:9cb694f00b7b 63 //!
dflet 0:9cb694f00b7b 64 //! @return none
dflet 0:9cb694f00b7b 65 //!
dflet 0:9cb694f00b7b 66 //! @brief Parse the incoming events packets and issues corresponding
dflet 0:9cb694f00b7b 67 //! event handler from global array of handlers pointers
dflet 0:9cb694f00b7b 68 //
dflet 0:9cb694f00b7b 69 //*****************************************************************************
dflet 0:9cb694f00b7b 70 extern unsigned char *hci_event_handler(char *pRetParams, unsigned char *from, unsigned char *fromlen);
dflet 0:9cb694f00b7b 71
dflet 0:9cb694f00b7b 72 //*****************************************************************************
dflet 0:9cb694f00b7b 73 //
dflet 0:9cb694f00b7b 74 //! hci_unsol_event_handler
dflet 0:9cb694f00b7b 75 //!
dflet 0:9cb694f00b7b 76 //! @param event_hdr event header
dflet 0:9cb694f00b7b 77 //!
dflet 0:9cb694f00b7b 78 //! @return 1 if event supported and handled
dflet 0:9cb694f00b7b 79 //! 0 if event is not supported
dflet 0:9cb694f00b7b 80 //!
dflet 0:9cb694f00b7b 81 //! @brief Handle unsolicited events
dflet 0:9cb694f00b7b 82 //
dflet 0:9cb694f00b7b 83 //*****************************************************************************
dflet 0:9cb694f00b7b 84 extern long hci_unsol_event_handler(char *event_hdr);
dflet 0:9cb694f00b7b 85
dflet 0:9cb694f00b7b 86 //*****************************************************************************
dflet 0:9cb694f00b7b 87 //
dflet 0:9cb694f00b7b 88 //! hci_unsolicited_event_handler
dflet 0:9cb694f00b7b 89 //!
dflet 0:9cb694f00b7b 90 //! @param None
dflet 0:9cb694f00b7b 91 //!
dflet 0:9cb694f00b7b 92 //! @return ESUCCESS if successful, EFAIL if an error occurred
dflet 0:9cb694f00b7b 93 //!
dflet 0:9cb694f00b7b 94 //! @brief Parse the incoming unsolicited event packets and issues
dflet 0:9cb694f00b7b 95 //! corresponding event handler.
dflet 0:9cb694f00b7b 96 //
dflet 0:9cb694f00b7b 97 //*****************************************************************************
dflet 0:9cb694f00b7b 98 extern long hci_unsolicited_event_handler(void);
dflet 0:9cb694f00b7b 99
dflet 0:9cb694f00b7b 100 #define M_BSD_RESP_PARAMS_OFFSET(hci_event_hdr)((char *)(hci_event_hdr) + HCI_EVENT_HEADER_SIZE)
dflet 0:9cb694f00b7b 101
dflet 0:9cb694f00b7b 102 #define SOCKET_STATUS_ACTIVE 0
dflet 0:9cb694f00b7b 103 #define SOCKET_STATUS_INACTIVE 1
dflet 0:9cb694f00b7b 104 /* Init socket_active_status = 'all ones': init all sockets with SOCKET_STATUS_INACTIVE.
dflet 0:9cb694f00b7b 105 Will be changed by 'set_socket_active_status' upon 'connect' and 'accept' calls */
dflet 0:9cb694f00b7b 106 #define SOCKET_STATUS_INIT_VAL 0xFFFF
dflet 0:9cb694f00b7b 107 #define M_IS_VALID_SD(sd) ((0 <= (sd)) && ((sd) <= 7))
dflet 0:9cb694f00b7b 108 #define M_IS_VALID_STATUS(status) (((status) == SOCKET_STATUS_ACTIVE)||((status) == SOCKET_STATUS_INACTIVE))
dflet 0:9cb694f00b7b 109
dflet 0:9cb694f00b7b 110 extern unsigned long socket_active_status;
dflet 0:9cb694f00b7b 111
dflet 0:9cb694f00b7b 112 extern void set_socket_active_status(long Sd, long Status);
dflet 0:9cb694f00b7b 113 extern long get_socket_active_status(long Sd);
dflet 0:9cb694f00b7b 114
dflet 0:9cb694f00b7b 115 typedef struct _bsd_accept_return_t
dflet 0:9cb694f00b7b 116 {
dflet 0:9cb694f00b7b 117 long iSocketDescriptor;
dflet 0:9cb694f00b7b 118 long iStatus;
dflet 0:9cb694f00b7b 119 sockaddr tSocketAddress;
dflet 0:9cb694f00b7b 120
dflet 0:9cb694f00b7b 121 } tBsdReturnParams;
dflet 0:9cb694f00b7b 122
dflet 0:9cb694f00b7b 123
dflet 0:9cb694f00b7b 124 typedef struct _bsd_read_return_t
dflet 0:9cb694f00b7b 125 {
dflet 0:9cb694f00b7b 126 long iSocketDescriptor;
dflet 0:9cb694f00b7b 127 long iNumberOfBytes;
dflet 0:9cb694f00b7b 128 unsigned long uiFlags;
dflet 0:9cb694f00b7b 129 } tBsdReadReturnParams;
dflet 0:9cb694f00b7b 130
dflet 0:9cb694f00b7b 131 #define BSD_RECV_FROM_FROMLEN_OFFSET (4)
dflet 0:9cb694f00b7b 132 #define BSD_RECV_FROM_FROM_OFFSET (16)
dflet 0:9cb694f00b7b 133
dflet 0:9cb694f00b7b 134
dflet 0:9cb694f00b7b 135 typedef struct _bsd_select_return_t
dflet 0:9cb694f00b7b 136 {
dflet 0:9cb694f00b7b 137 long iStatus;
dflet 0:9cb694f00b7b 138 unsigned long uiRdfd;
dflet 0:9cb694f00b7b 139 unsigned long uiWrfd;
dflet 0:9cb694f00b7b 140 unsigned long uiExfd;
dflet 0:9cb694f00b7b 141 } tBsdSelectRecvParams;
dflet 0:9cb694f00b7b 142
dflet 0:9cb694f00b7b 143
dflet 0:9cb694f00b7b 144 typedef struct _bsd_getsockopt_return_t
dflet 0:9cb694f00b7b 145 {
dflet 0:9cb694f00b7b 146 unsigned char ucOptValue[4];
dflet 0:9cb694f00b7b 147 char iStatus;
dflet 0:9cb694f00b7b 148 } tBsdGetSockOptReturnParams;
dflet 0:9cb694f00b7b 149
dflet 0:9cb694f00b7b 150 typedef struct _bsd_gethostbyname_return_t
dflet 0:9cb694f00b7b 151 {
dflet 0:9cb694f00b7b 152 long retVal;
dflet 0:9cb694f00b7b 153 long outputAddress;
dflet 0:9cb694f00b7b 154 } tBsdGethostbynameParams;
dflet 0:9cb694f00b7b 155
dflet 0:9cb694f00b7b 156 //*****************************************************************************
dflet 0:9cb694f00b7b 157 //
dflet 0:9cb694f00b7b 158 // Mark the end of the C bindings section for C++ compilers.
dflet 0:9cb694f00b7b 159 //
dflet 0:9cb694f00b7b 160 //*****************************************************************************
dflet 0:9cb694f00b7b 161 #ifdef __cplusplus
dflet 0:9cb694f00b7b 162 }
dflet 0:9cb694f00b7b 163 #endif // __cplusplus
dflet 0:9cb694f00b7b 164
dflet 0:9cb694f00b7b 165 #endif // __EVENT_HANDLER_H__
dflet 0:9cb694f00b7b 166
dflet 0:9cb694f00b7b 167