NSMBW-Decomp
A decompilation of New Super Mario Bros. Wii
Loading...
Searching...
No Matches
bt_hci_lib.h
1/******************************************************************************
2 *
3 * Copyright (C) 2009-2012 Broadcom Corporation
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at:
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 ******************************************************************************/
18
19#ifndef BT_HCI_LIB_H
20#define BT_HCI_LIB_H
21
22#include <stdint.h>
23#include <sys/cdefs.h>
24#include <sys/types.h>
25
26/** Struct types */
27
28
29/** Typedefs and defines */
30
31/* Generic purpose transac returned upon request complete */
32typedef void* TRANSAC;
33
34/** Bluetooth Power Control States */
35typedef enum {
36 BT_HC_CHIP_PWR_OFF,
37 BT_HC_CHIP_PWR_ON,
38} bt_hc_chip_power_state_t;
39
40/** Bluetooth Low Power Mode */
41typedef enum {
42 BT_HC_LPM_DISABLE,
43 BT_HC_LPM_ENABLE,
44 BT_HC_LPM_WAKE_ASSERT,
45 BT_HC_LPM_WAKE_DEASSERT,
46} bt_hc_low_power_event_t;
47
48/** Receive flow control */
49typedef enum {
50 BT_RXFLOW_OFF, /* add transport device fd to select set */
51 BT_RXFLOW_ON, /* remove transport device to from select set */
52} bt_rx_flow_state_t;
53
54/** HCI logging control */
55typedef enum {
56 BT_HC_LOGGING_OFF,
57 BT_HC_LOGGING_ON,
58} bt_hc_logging_state_t;
59
60/** Result of write request */
61typedef enum {
62 BT_HC_TX_SUCCESS, /* a buffer is fully processed and can be released */
63 BT_HC_TX_FAIL, /* transmit fail */
64 BT_HC_TX_FRAGMENT, /* send split ACL pkt back to stack to reprocess */
65} bt_hc_transmit_result_t;
66
67/** Result of preload initialization */
68typedef enum {
69 BT_HC_PRELOAD_SUCCESS,
70 BT_HC_PRELOAD_FAIL,
71} bt_hc_preload_result_t;
72
73/** Result of postload initialization */
74typedef enum {
75 BT_HC_POSTLOAD_SUCCESS,
76 BT_HC_POSTLOAD_FAIL,
77} bt_hc_postload_result_t;
78
79/** Result of low power enable/disable request */
80typedef enum {
81 BT_HC_LPM_DISABLED,
82 BT_HC_LPM_ENABLED,
83} bt_hc_lpm_request_result_t;
84
85/** Host/Controller Library Return Status */
86typedef enum {
87 BT_HC_STATUS_SUCCESS,
88 BT_HC_STATUS_FAIL,
89 BT_HC_STATUS_NOT_READY,
90 BT_HC_STATUS_NOMEM,
91 BT_HC_STATUS_BUSY,
92 BT_HC_STATUS_CORRUPTED_BUFFER
93} bt_hc_status_t;
94
95
96/* Section comment */
97
98/*
99 * Bluetooth Host/Controller callback structure.
100 */
101
102/* called upon bt host wake signal */
103typedef void (*hostwake_ind_cb)(bt_hc_low_power_event_t event);
104
105/* preload initialization callback */
106typedef void (*preload_result_cb)(TRANSAC transac, bt_hc_preload_result_t result);
107
108/* postload initialization callback */
109typedef void (*postload_result_cb)(TRANSAC transac, bt_hc_postload_result_t result);
110
111/* lpm enable/disable callback */
112typedef void (*lpm_result_cb)(bt_hc_lpm_request_result_t result);
113
114/* datapath buffer allocation callback (callout) */
115typedef char* (*alloc_mem_cb)(int size);
116
117/* datapath buffer deallocation callback (callout) */
118typedef int (*dealloc_mem_cb)(TRANSAC transac, char *p_buf);
119
120/* transmit result callback */
121typedef int (*tx_result_cb)(TRANSAC transac, char *p_buf, bt_hc_transmit_result_t result);
122
123/* a previously setup buffer is read and available for processing
124 buffer is deallocated in stack when processed */
125typedef int (*data_ind_cb)(TRANSAC transac, char *p_buf, int len);
126
127typedef struct {
128 /** set to sizeof(bt_hc_callbacks_t) */
129 size_t size;
130
131 /* notifies caller result of preload request */
132 preload_result_cb preload_cb;
133
134 /* notifies caller result of postload request */
135 postload_result_cb postload_cb;
136
137 /* notifies caller result of lpm enable/disable */
138 lpm_result_cb lpm_cb;
139
140 /* notifies hardware on host wake state */
141 hostwake_ind_cb hostwake_ind;
142
143 /* buffer allocation request */
144 alloc_mem_cb alloc;
145
146 /* buffer deallocation request */
147 dealloc_mem_cb dealloc;
148
149 /* notifies stack data is available */
150 data_ind_cb data_ind;
151
152 /* notifies caller when a buffer is transmitted (or failed) */
153 tx_result_cb tx_result;
155
156/*
157 * Bluetooth Host/Controller Interface
158 */
159typedef struct {
160 /** Set to sizeof(bt_hc_interface_t) */
161 size_t size;
162
163 /**
164 * Opens the interface and provides the callback routines
165 * to the implemenation of this interface.
166 */
167 int (*init)(const bt_hc_callbacks_t* p_cb, unsigned char *local_bdaddr);
168
169 /** Chip power control */
170 void (*set_power)(bt_hc_chip_power_state_t state);
171
172 /** Set low power mode wake */
173 int (*lpm)(bt_hc_low_power_event_t event);
174
175 /** Called prior to stack initialization */
176 void (*preload)(TRANSAC transac);
177
178 /** Called post stack initialization */
179 void (*postload)(TRANSAC transac);
180
181 /** Transmit buffer */
182 int (*transmit_buf)(TRANSAC transac, char *p_buf, int len);
183
184 /** Controls receive flow */
185 int (*set_rxflow)(bt_rx_flow_state_t state);
186
187 /** Controls HCI logging on/off */
188 int (*logging)(bt_hc_logging_state_t state, char *p_path);
189
190 /** Closes the interface */
191 void (*cleanup)( void );
193
194
195/*
196 * External shared lib functions
197 */
198
199extern const bt_hc_interface_t* bt_hc_get_interface(void);
200
201#endif /* BT_HCI_LIB_H */
202
void(* set_power)(bt_hc_chip_power_state_t state)
Definition bt_hci_lib.h:170
int(* lpm)(bt_hc_low_power_event_t event)
Definition bt_hci_lib.h:173
void(* preload)(TRANSAC transac)
Definition bt_hci_lib.h:176
void(* cleanup)(void)
Definition bt_hci_lib.h:191
int(* init)(const bt_hc_callbacks_t *p_cb, unsigned char *local_bdaddr)
Definition bt_hci_lib.h:167
int(* transmit_buf)(TRANSAC transac, char *p_buf, int len)
Definition bt_hci_lib.h:182
int(* set_rxflow)(bt_rx_flow_state_t state)
Definition bt_hci_lib.h:185
void(* postload)(TRANSAC transac)
Definition bt_hci_lib.h:179
int(* logging)(bt_hc_logging_state_t state, char *p_path)
Definition bt_hci_lib.h:188