evnt_handler.h 5.71 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/*****************************************************************************
*
*  evnt_handler.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
15
*    documentation and/or other materials provided with the   
16
17
18
19
20
21
*    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.
*
22
23
*  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
*  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
24
*  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
25
26
27
*  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 
28
29
*  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
*  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
30
31
*  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
*  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
*  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*****************************************************************************/
#ifndef __EVENT_HANDLER_H__
#define __EVENT_HANDLER_H__
#include "hci.h"
#include "socket.h"

//*****************************************************************************
//
// If building with a C++ compiler, make all of the definitions in this header
// have a C binding.
//
//*****************************************************************************
#ifdef  __cplusplus
extern "C" {
#endif

//*****************************************************************************
//
// Prototypes for the APIs.
//
//*****************************************************************************

//*****************************************************************************
//
//!  hci_event_handler
//!
//!  @param  pRetParams     incoming data buffer
//!  @param  from           from information (in case of data received)
//!  @param  fromlen        from information length (in case of data received)
//!
//!  @return         none
//!
//!  @brief          Parse the incoming events packets and issues corresponding
//!                  event handler from global array of handlers pointers
//
//*****************************************************************************
70
extern UINT8 *hci_event_handler(void *pRetParams, UINT8 *from, UINT8 *fromlen);
71
72
73
74
75
76
77
78
79
80
81
82
83

//*****************************************************************************
//
//!  hci_unsol_event_handler
//!
//!  @param  event_hdr   event header
//!
//!  @return             1 if event supported and handled
//!                      0 if event is not supported
//!
//!  @brief              Handle unsolicited events
//
//*****************************************************************************
84
extern INT32 hci_unsol_event_handler(CHAR *event_hdr);
85
86
87
88
89
90
91
92
93

//*****************************************************************************
//
//!  hci_unsolicited_event_handler
//!
//!  @param None
//!
//!  @return         ESUCCESS if successful, EFAIL if an error occurred
//!
94
//!  @brief          Parse the incoming unsolicited event packets and issues 
95
96
97
//!                  corresponding event handler.
//
//*****************************************************************************
98
extern INT32 hci_unsolicited_event_handler(void);
99

100
#define M_BSD_RESP_PARAMS_OFFSET(hci_event_hdr)((CHAR *)(hci_event_hdr) + HCI_EVENT_HEADER_SIZE)
101
102
103
104
105
106
107
108
109

#define SOCKET_STATUS_ACTIVE       0
#define SOCKET_STATUS_INACTIVE     1
/* Init socket_active_status = 'all ones': init all sockets with SOCKET_STATUS_INACTIVE.
   Will be changed by 'set_socket_active_status' upon 'connect' and 'accept' calls */
#define SOCKET_STATUS_INIT_VAL  0xFFFF
#define M_IS_VALID_SD(sd) ((0 <= (sd)) && ((sd) <= 7))
#define M_IS_VALID_STATUS(status) (((status) == SOCKET_STATUS_ACTIVE)||((status) == SOCKET_STATUS_INACTIVE))

110
extern UINT32 socket_active_status;
111

112
113
extern void set_socket_active_status(INT32 Sd, INT32 Status);
extern INT32 get_socket_active_status(INT32 Sd);
114
115
116

typedef struct _bsd_accept_return_t
{
117
118
    INT32             iSocketDescriptor;
    INT32             iStatus;
119
    sockaddr   		tSocketAddress;
120
    
121
122
123
124
125
} tBsdReturnParams;


typedef struct _bsd_read_return_t
{
126
127
128
    INT32             iSocketDescriptor;
    INT32             iNumberOfBytes;
    UINT32	 uiFlags;
129
130
131
132
133
134
135
136
} tBsdReadReturnParams;

#define BSD_RECV_FROM_FROMLEN_OFFSET	(4)
#define BSD_RECV_FROM_FROM_OFFSET		(16)


typedef struct _bsd_select_return_t
{
137
138
139
140
    INT32					iStatus;
	UINT32 			uiRdfd;
	UINT32 			uiWrfd;
	UINT32 			uiExfd;
141
142
143
144
145
} tBsdSelectRecvParams;


typedef struct _bsd_getsockopt_return_t
{
146
147
	UINT8			ucOptValue[4];
	CHAR						iStatus;
148
149
150
151
} tBsdGetSockOptReturnParams;

typedef struct _bsd_gethostbyname_return_t
{
152
153
    INT32             retVal;
    INT32             outputAddress;
154
155
156
157
158
159
160
161
162
163
164
165
166
} tBsdGethostbynameParams;

//*****************************************************************************
//
// Mark the end of the C bindings section for C++ compilers.
//
//*****************************************************************************
#ifdef  __cplusplus
}
#endif // __cplusplus

#endif // __EVENT_HANDLER_H__