kindlebt
Bluetooth functionality for Kindle 11th gen and up
Loading...
Searching...
No Matches
compat_ace_internals.h
1#ifndef COMPAT_ACE_INTERNALS_H
2#define COMPAT_ACE_INTERNALS_H
3
4#include "kindlebt_defines.h"
5
6#ifdef __cplusplus
7extern "C" {
8#endif
9
10typedef struct {
11 uint16_t callback_server_id;
12 uint16_t server_id;
14typedef aceBT_aipcHandles_t aipcHandles_t;
15
16typedef struct {
17 uint32_t size;
18 uint32_t session_handle;
19 status_t out_status;
20} __attribute__((packed)) acebt_request_unreg_t;
21typedef acebt_request_unreg_t request_unreg_t;
22
23// Reversed. Don't ask me why the repeated aipcHandles_t
24// Used for GATT Client/Server deregister requests
25typedef struct {
26 uint32_t size;
27 aipcHandles_t h1;
28 aipcHandles_t h2;
30
31status_t getSessionInfo(sessionHandle sessionHandle, aipcHandles_t* handles);
32
33typedef struct {
34 uint16_t size;
35 uint32_t session_handle;
36 uint16_t callback_mask;
37 uint8_t is_unregister;
38 bleAppId_t app_id;
39 status_t out_status;
41typedef aceBtMgr_registerCbackGattcData_t registerCbackGattcData_t;
42
43void aceBt_serializeGattcRegisterData(
44 registerCbackGattcData_t* data, uint32_t session_handle, uint16_t mask, bleAppId_t app_id
45);
46
47// Used for dataIndex
48#define CALLBACK_INDEX_CLASSIC_DEV_MGR 0x00
49#define CALLBACK_INDEX_COMMON_SECURITY 0x01
50#define CALLBACK_INDEX_BLE_BEACON_MGR 0x02
51#define CALLBACK_INDEX_BLE_GATT_SERVER 0x03
52#define CALLBACK_INDEX_BLE_ADAPTER 0x04
53#define CALLBACK_INDEX_SOCKET_SERVER 0x05
54#define CALLBACK_INDEX_SOCKET_CLIENT 0x06
55#define CALLBACK_INDEX_BLE_GATT_CLIENT 0x07
56#define CALLBACK_INDEX_HFP 0x08
57
71status_t registerBTClientData(sessionHandle sessionHandle, uint8_t dataIndex, void* p_client_data);
72
73typedef enum {
75 ACE_BT_API_SESSION_OPEN = 0,
76 ACE_BT_API_SESSION_CLOSE,
77 ACE_BT_API_REGISTER,
78 ACE_BT_API_UNREGISTER,
79 ACE_BT_API_ENABLE,
80 ACE_BT_API_DISABLE,
81 ACE_BT_API_ENABLE_HCI,
82 ACE_BT_API_DISABLE_HCI,
83 ACE_BT_API_GET_ADAPTER_NAME,
84 ACE_BT_API_SET_ADAPTER_NAME,
85 ACE_BT_API_GET_ADAPTER_PROPERTIES,
86 ACE_BT_API_GET_RADIO_STATE,
87 ACE_BT_API_PAIR_DEVICE,
88 ACE_BT_API_UNPAIR_DEVICE,
89 ACE_BT_API_CANCEL_PAIR,
90 ACE_BT_API_SET_PIN_REPLY,
91 ACE_BT_API_SET_SSP_REPLY,
92 ACE_BT_API_GET_NAME,
93 ACE_BT_API_GET_DEVICE_TYPE,
94 ACE_BT_API_GET_BONDED_DEVICES_COUNT,
95 ACE_BT_API_GET_BONDED_DEVICES,
96 ACE_BT_API_GET_CONNECTED_DEVICES_COUNT,
97 ACE_BT_API_GET_CONNECTED_DEVICES,
98 ACE_BT_API_GET_BOND_STATE,
99 ACE_BT_API_GET_CONNECTION_STATE,
100 ACE_BT_API_READ_RSSI,
101 ACE_BT_API_COMMON_MAX = 100,
103 ACE_BT_API_START_SCAN = 101,
104 ACE_BT_API_STOP_SCAN = 102,
105 ACE_BT_API_GET_SCAN_MODE = 103,
106 ACE_BT_API_SET_SCAN_MODE = 104,
107 ACE_BT_API_GET_SCAN_TYPE = 105,
108 ACE_BT_API_SET_SCAN_TYPE = 106,
109 ACE_BT_API_GET_DEVICE_UUIDS = 107,
110 ACE_BT_API_GET_DEVICE_UUIDS_COUNT = 108,
111 ACE_BT_API_GET_EIR = 109,
112 ACE_BT_API_SET_RESTRICTED_PROFILES = 110,
113 ACE_BT_API_GET_REMOTE_CLASSIC_PROPERTY = 111,
114 ACE_BT_API_CLASSIC_DM_MAX = 200,
116 ACE_BT_A2DP_SRC_API_INIT,
117 ACE_BT_A2DP_SRC_API_CONNECT,
118 ACE_BT_A2DP_SRC_API_DISCONNECT,
119 ACE_BT_A2DP_SRC_API_GET_CONN_STATE,
120 ACE_BT_A2DP_SRC_API_GET_AUDIO_STATE,
121 ACE_BT_A2DP_SRC_MAX = 300,
122 ACE_BT_A2DP_SNK_API_INIT,
123 ACE_BT_A2DP_SNK_API_CONNECT,
124 ACE_BT_A2DP_SNK_API_DISCONNECT,
125 ACE_BT_A2DP_SNK_API_GET_CONN_STATE,
126 ACE_BT_A2DP_SNK_API_GET_AUDIO_STATE,
127 ACE_BT_AVRC_CTRL_INIT,
128 ACE_BT_AVRC_CTRL_REGISTER,
129 ACE_BT_AVRC_CTRL_UNREGISTER,
130 ACE_BT_AVRC_CTRL_SEND_KEY,
131 ACE_BT_A2DP_SNK_MAX = 400,
132 ACE_BT_HID_HOST_API_INIT,
133 ACE_BT_HID_HOST_API_CONNECT,
134 ACE_BT_HID_HOST_API_DISCONNECT,
135 ACE_BT_HID_HOST_API_GET_PROFILE_STATE,
136 ACE_BT_HID_HOST_API_VIRTUAL_UNPLUG,
137 ACE_BT_HID_HOST_API_SEND_DATA,
138 ACE_BT_HID_HOST_API_GET_BATTERY_LEVEL,
139 ACE_BT_HID_HOST_API_GET_PROTOCOL,
140 ACE_BT_HID_HOST_API_SET_PROTOCOL,
141 ACE_BT_HID_HOST_API_GET_REPORT,
142 ACE_BT_HID_HOST_API_SET_REPORT,
143 ACE_BT_HID_HOST_MAX = 500,
144 ACE_BT_HFP_API_INIT,
145 ACE_BT_HFP_API_CONNECT,
146 ACE_BT_HFP_API_DISCONNECT,
147 ACE_BT_HFP_API_REGISTER,
148 ACE_BT_HFP_API_GET_PROFILE_STATE,
149 ACE_BT_HFP_API_GET_AUDIO_STATE,
150 ACE_BT_HFP_API_CONNECT_AUDIO,
151 ACE_BT_HFP_API_DISCONNECT_AUDIO,
152 ACE_BT_HFP_API_CHANGE_CALL_STATE,
153 ACE_BT_HFP_MAX = 600,
155 ACE_BT_BLE_REGISTER_BEACON_CLI_API,
156 ACE_BT_BLE_UNREGISTER_BEACON_CLI_API,
157 ACE_BT_BLE_GET_MAX_ADV_DATA_LEN_API,
158 ACE_BT_BLE_START_BEACON_API,
159 ACE_BT_BLE_START_BEACON_WITH_SCAN_RSP_API,
160 ACE_BT_BLE_SET_PERIODIC_BEACON_PARAM_API,
161 ACE_BT_BLE_STOP_BEACON_API,
162 ACE_BT_BLE_START_BEACON_SCAN_API,
163 ACE_BT_BLE_STOP_BEACON_SCAN_API,
164 ACE_BT_BLE_API_MAX = 700,
165 /*GATT SERVER */
166 ACE_BT_BLE_REGISTER_GATT_SERVER_API,
167 ACE_BT_BLE_UNREGISTER_GATT_SERVER_API,
168 ACE_BT_BLE_GATT_ADD_SERVICE_API,
169 ACE_BT_BLE_GATT_SEND_RESPONSE_API,
170 ACE_BT_BLE_GATT_SET_MTU_API,
171 ACE_BT_BLE_GATT_NOTIFY_CHARACTERISTICS_API,
172 ACE_BT_BLE_GATT_REMOVE_SERVICE_API,
173 ACE_BT_BLE_GATT_GET_BDADDR_API,
174 ACE_BT_BLE_GATT_SERVER_API_MAX = 800,
175 /* BLE API */
176 ACE_BT_BLE_REGISTER_BLE_API = 801,
177 ACE_BT_BLE_UNREGISTER_BLE_API = 802,
178 ACE_BT_BLE_GET_MTU_API = 803,
179 ACE_BT_BLE_SET_MTU_API = 804,
180 ACE_BT_BLE_CONN_PARAM = 805,
181 ACE_BT_BLE_CONN_REQ = 806,
182 ACE_BT_BLE_CANCEL_CONN_REQ = 807,
183 ACE_BT_BLE_DISC_REQ = 808,
184 ACE_BT_BLE_READ_RSSI = 809,
185 ACE_BT_BLE_CONN_PRIORITY = 810,
186
187 ACE_BT_BLE_API_ADAPTER_MAX = 900,
190 ACE_BT_SOCKET_REGISTER_SERVER_CALLBACKS,
191 ACE_BT_SOCKET_CREATE_SERVER_SOCKET,
192 ACE_BT_SOCKET_ACCEPT_CLIENT_CONNECTION,
193 ACE_BT_SOCKET_REGISTER_CLIENT_CALLBACKS,
194 ACE_BT_SOCKET_CONNECT,
195 ACE_BT_SOCKET_WRITE,
196 ACE_BT_SOCKET_READ,
197 ACE_BT_SOCKET_CLOSE,
198 ACE_BT_SOCKET_ACL,
199 ACE_BT_SOCKET_UP,
200 ACE_BT_SOCKET_GET_LIST,
201 ACE_BT_SOCKET_API_MAX = 1000,
202 /*GATT Client */
203 ACE_BT_BLE_REGISTER_GATT_CLIENT_API,
204 ACE_BT_BLE_UNREGISTER_GATT_CLIENT_API,
205 ACE_BT_BLE_GATT_CLIENT_DISC_ALL_SVC_API,
206 ACE_BT_BLE_GATT_CLIENT_DISC_PRIMARY_SVC_API,
207 ACE_BT_BLE_GATT_CLIENT_GET_SERVICE_API,
208 ACE_BT_BLE_GATT_CLIENT_GET_SERVICE_BYUUID_API,
209 ACE_BT_BLE_GATT_CLIENT_READ_CHARS_API,
210 ACE_BT_BLE_GATT_CLIENT_WRITE_CHARS_API,
211 ACE_BT_BLE_GATT_CLIENT_READ_DESC_API,
212 ACE_BT_BLE_GATT_CLIENT_WRITE_DESC_API,
213 ACE_BT_BLE_GATT_CLIENT_SET_NOTIFY_API,
214 ACE_BT_BLE_GATT_CLIENT_BEGIN_RELIABLE_WRITE_API,
215 ACE_BT_BLE_GATT_CLIENT_EXEC_RELIABLE_WRITE_API,
216 ACE_BT_BLE_GATT_CLIENT_ATT_API,
217 ACE_BT_BLE_GATT_CLIENT_REFRESH_DB_API,
218 ACE_BT_BLE_GATT_CLIENT_API_MAX = 1100,
219 /*BTPM testing*/
220 ACE_BT_PM_GET_ACL_CONN_LIST_API = 1101,
221 ACE_BT_PM_GET_CONN_LST_API = 1102,
222 ACE_BT_PM_GET_AVAIL_CONN_CNT_API = 1103,
223 ACE_BT_PM_API_REGISTER = 1104,
224 ACE_BT_PM_SET_MAX_LINK_COUNT = 1105,
225 ACE_BT_PM_API_MAX = 1200,
226 /* AVRCP TG */
227 ACE_BT_AVRCP_TG_INIT = 1201,
228 ACE_BT_AVRCP_TG_REGISTER = 1202,
229 ACE_BT_AVRCP_TG_SEND_METADATA = 1203,
230 ACE_BT_AVRCP_TG_SEND_PLAY_STATUS = 1204,
231 ACE_BT_AVRCP_TG_SEND_NOTIF = 1205,
232 ACE_BT_AVRCP_TG_MAX = 1300,
233 /* AVRCP CT */
234 ACE_BT_AVRCP_CT_REGISTER = 1301,
235 ACE_BT_AVRCP_CT_SEND_APP_SETTING = 1302,
236 ACE_BT_AVRCP_CT_MAX = 1400,
237
238 MAX_API = 0xFFFF, /* END of all API's */
239} acebt_ipc_api_enum_t;
240
241#define ACEBT_BT_CBACK_IDX_COMMON 0x0
242#define ACEBT_BT_CBACK_IDX_CLASSIC 0x1
243#define ACEBT_BT_CBACK_IDX_HFP 0x2
244#define ACEBT_BT_CBACK_IDX_SOCKET_CLIENT 0x3
245#define ACEBT_BT_CBACK_IDX_SOCKET_SERVER 0x4
246#define ACEBT_BT_CBACK_IDX_BLE 0x5
247#define ACEBT_BT_CBACK_IDX_BEACON 0x6
248#define ACEBT_BT_CBACK_IDX_GATT_SERVER 0x7
249#define ACEBT_BT_CBACK_IDX_GATT_CLIENT 0x8
250#define ACEBT_BT_CBACK_IDX_PM 0x9
251#define ACEBT_BT_CBACK_IDX_AVRCP_TG 0xA
252#define ACEBT_BT_CBACK_IDX_AVRCP_CT 0xB
253#define ACEBT_BT_CBACK_IDX_MAX MAX_BT_EVT_HANDLERS
254
255/* BLE Gatt Client call back mask */
256#define ACEBT_IPC_CBACK_MASK_GATTC_SERVICE_REGISTERED 0x01
257#define ACEBT_IPC_CBACK_MASK_GATTC_SERVICE_DISCOVERED 0x02
258#define ACEBT_IPC_CBACK_MASK_GATTC_SERVICE_READ_CHARS 0x04
259#define ACEBT_IPC_CBACK_MASK_GATTC_SERVICE_WRITE_CHARS 0x08
260#define ACEBT_IPC_CBACK_MASK_GATTC_SERVICE_NOTIFY_CHARS 0x10
261#define ACEBT_IPC_CBACK_MASK_GATTC_SERVICE_DESC_WRITE 0x20
262#define ACEBT_IPC_CBACK_MASK_GATTC_SERVICE_DESC_READ 0x40
263#define ACEBT_IPC_CBACK_MASK_GATTC_GET_DB 0x80
264#define ACEBT_IPC_CBACK_MASK_GATTC_EXECUTE_WRITE 0x100
265
266typedef enum {
267 /* Common Callback Interfaces under ACEBT_BT_CBACK_IDX_COMMON */
268 ACE_BT_CALLBACK_COMMON_INIT = 1,
269 ACE_BT_CALLBACK_SERVER_RESTARTED = 2,
270 ACE_BT_CALLBACK_ADAPTER_STATE_CHANGED = 3,
271 ACE_BT_CALLBACK_BOND_STATE_CHANGED = 4,
272 ACE_BT_CALLBACK_PIN_REQ_CALLBACK = 5,
273 ACE_BT_CALLBACK_SSP_REQ_CALLBACK = 6,
274 ACE_BT_CALLBACK_ACL_CALLBACK = 7,
275 ACE_BT_CALLBACK_COMMON_MAX = 10,
276 /* Classic Callback Interfaces under ACEBT_BT_CBACK_IDX_CLASSIC */
277 ACE_BT_CALLBACK_CLASSIC_INIT = 11,
278 ACE_BT_CALLBACK_CONN_STATE_CHANGED = 12,
279 ACE_BT_CALLBACK_PROFILE_STATE_CHANGED = 13,
280 ACE_BT_CALLBACK_AUDIO_STATE_CHANGED = 14,
281 ACE_BT_CALLBACK_DISCOVERY_STATE_CHANGED = 15,
282 ACE_BT_CALLBACK_DEVICE_FOUND = 16,
283 ACE_BT_CALLBACK_SCAN_MODE_CHANGED = 17,
284 ACE_BT_CALLBACK_SCAN_TYPE_CHANGED = 18,
285 ACE_BT_CALLBACK_ACL_PRIORITY_CHANGED = 19,
286 ACE_BT_CALLBACK_CLASSIC_MAX = 20,
287 /* BT HFP Callback Interfaces under ACEBT_BT_CBACK_IDX_HFP */
288 ACE_BT_CALLBACK_HFP_INIT = 21,
289 ACE_BT_CALLBACK_HFP_CONN_STATE = 22,
290 ACE_BT_CALLBACK_HFP_AUDIO_STATE = 23,
291 ACE_BT_CALLBACK_HFP_ANSWER = 24,
292 ACE_BT_CALLBACK_HFP_HANGUP = 25,
293 ACE_BT_CALLBACK_HFP_DIAL = 26,
294 ACE_BT_CALLBACK_HFP_CHLD = 27,
295 ACE_BT_CALLBACK_HFP_CLCC = 28,
296 ACE_BT_CALLBACK_HFP_BIND = 29,
297 ACE_BT_CALLBACK_HFP_MAX = 30,
298 /* BT Socket Client Callback Interfaces under
299 ACEBT_BT_CBACK_IDX_SOCKET_SERVER */
300 ACE_BT_CALLBACK_SOCKET_CLIENT_INIT,
301 ACE_BT_CALLBACK_SOCKET_CLIENT_CONN,
302 ACE_BT_CALLBACK_SOCKET_CLIENT_DATA_READY,
303 ACEBT_BT_CALLBACK_SOCKET_CLIENT_SDP_UUID_FOUND,
304 ACE_BT_CALLBACK_SOCKET_CLIENT_MAX = 40,
305 /* BT Socket Server Callback Interfaces under
306 ACEBT_BT_CBACK_IDX_SOCKET_CLIENT */
307 ACE_BT_CALLBACK_SOCKET_SERVER_INIT,
308 ACE_BT_CALLBACK_SOCKET_SERVER_CONN_REQ,
309 ACE_BT_CALLBACK_SOCKET_SERVER_CONN_CFM,
310 ACE_BT_CALLBACK_SOCKET_SERVER_MAX = 50,
311 /* BLE Callback Interfaces under ACEBT_BT_CBACK_IDX_BLE*/
312 ACE_BT_CALLBACK_BLE_INIT,
313 ACE_BT_CALLBACK_BLE_REGISTERED,
314 ACE_BT_CALLBACK_BLE_CONN_STATE_CHANGED,
315 ACE_BT_CALLBACK_BLE_MTU_CHANGED,
316 ACE_BT_CALLBACK_BLE_READ_RSSI,
317 ACE_BT_CALLBACK_BLE_MAX = 60,
318 /* BLE Beacon Manager Callback Interfaces under ACEBT_BT_CBACK_IDX_BEACON */
319 ACE_BT_CALLBACK_BEACON_INIT,
320 ACE_BT_CALLBACK_ADV_STATE_CHANGED,
321 ACE_BT_CALLBACK_SCAN_STATE_CHANGED,
322 ACE_BT_CALLBACK_SCAN_RESULT,
323 ACE_BT_CALLBACK_BEACON_REGISTERED,
324 ACE_BT_CALLBACK_BEACON_MAX = 70,
325 /* BLE GATT Server Callback Interfaces under
326 ACEBT_BT_CBACK_IDX_GATT_SERVER */
327 ACE_BT_CALLBACK_GATTS_INIT,
328 ACE_BT_CALLBACK_GATTS_SERVICE_STARTED,
329 ACE_BT_CALLBACK_GATTS_CHARS_WRITE_REQ,
330 ACE_BT_CALLBACK_GATTS_CHARS_READ_REQ,
331 ACE_BT_CALLBACK_GATTS_DESC_WRITE_REQ,
332 ACE_BT_CALLBACK_GATTS_DESC_READ_REQ,
333 ACE_BT_CALLBACK_GATTS_EXEC_WRITE_REQ,
334 ACE_BT_CALLBACK_GATTS_MTU_CHANGED_REQ,
335 ACE_BT_CALLBACK_GATTS_NOTIFY_SENT,
336 ACE_BT_CALLBACK_GATTS_CONN_INDICATION,
337 ACE_BT_CALLBACK_GATTS_MAX = 80,
338
339 /* BT Policy Manager Callback Interfaces under ACEBT_BT_CBACK_IDX_PM */
340 ACE_BT_CALLBACK_PM_CONN_LIST = 81,
341 ACE_BT_CALLBACK_PM_ACL_LIST = 82,
342 ACE_BT_CALLBACK_PM_MAX = 90,
343
344 /* BLE GATT Client Callback Interfaces under ACEBT_BT_CBACK_IDX_GATT_CLIENT
345 */
346 ACE_BT_CALLBACK_GATTC_INIT,
347 ACE_BT_CALLBACK_GATTC_SERVICE_REGISTERED,
348 ACE_BT_CALLBACK_GATTC_SERVICE_DISCOVERED,
349 ACE_BT_CALLBACK_GATTC_CHARS_READ_RSP,
350 ACE_BT_CALLBACK_GATTC_CHARS_WRITE_RSP,
351 ACE_BT_CALLBACK_GATTC_EXEC_WRITE_RSP,
352 ACE_BT_CALLBACK_GATTC_NOTIFY_CHARS_CHANGED,
353 ACE_BT_CALLBACK_GATTC_DESC_WRITE_RSP,
354 ACE_BT_CALLBACK_GATTC_DESC_READ_RSP,
355 ACE_BT_CALLBACK_GATTC_GET_DB_RSP,
356 ACE_BT_CALLBACK_GATTC_MAX = 100,
357
358 /* BT AVRCP Target Callback Interfaces under ACEBT_BT_CBACK_IDX_AVRCP_TG
359 */
360 ACE_BT_CALLBACK_AVRCP_TG_INIT = 101,
361 ACE_BT_CALLBACK_AVRCP_TG_GET_METADATA = 102,
362 ACE_BT_CALLBACK_AVRCP_TG_GET_PLAY_STATUS = 103,
363 ACE_BT_CALLBACK_AVRCP_TG_REG_NOTIFICATION = 104,
364 ACE_BT_CALLBACK_AVRCP_TG_PASSTHROUGH_CMD = 105,
365 ACE_BT_CALLBACK_AVRCP_TG_REMOTE_FEATURES = 106,
366 ACE_BT_CALLBACK_AVRCP_TG_MAX = 110,
367
368 /* BT AVRCP Controller Callback Interfaces under ACEBT_BT_CBACK_IDX_AVRCP_CT
369 */
370 ACE_BT_CALLBACK_AVRCP_CT_INIT = 111,
371 ACE_BT_CALLBACK_AVRCP_CT_CONN_STATE = 112,
372 ACE_BT_CALLBACK_AVRCP_CT_REMOTE_FEATURES = 113,
373 ACE_BT_CALLBACK_AVRCP_CT_SET_APP_SETTING_RSP = 114,
374 ACE_BT_CALLBACK_AVRCP_CT_APP_SETTING_CHANGED = 115,
375 ACE_BT_CALLBACK_AVRCP_CT_NOTIF = 116,
376 ACE_BT_CALLBACK_AVRCP_CT_MAX = 120,
377} acebt_ipc_evt_enum_t;
378typedef acebt_ipc_evt_enum_t ipc_evt_enum_t;
379
380typedef struct {
381 uint32_t size;
382 uint32_t conn_handle;
383 uuid_t uuid;
384} __attribute__((packed)) acebt_gattc_get_db_data_t;
385typedef acebt_gattc_get_db_data_t gattc_get_db_data_t;
386
387void serialize_ble_get_db_req(gattc_get_db_data_t* data, uint32_t conn_handle, uuid_t* uuid);
388
389// Reversed struct. Here be dragons
390typedef struct {
391 uint16_t reserved0; // 0x00: always 0x0000?
392
393 uint16_t size; // 0x02: 30 00 → 0x30 (48)
394 uint32_t msg_type; // 0x04: 02 00 00 00 → 0x02 (2)
395
396 uint32_t function_id; // 0x08: 3e 00 00 00 -> 0x3E (62)
397
398 void* cb1; // 0x0C: 70 44 50 b5
399 void* cb2; // 0x10: 74 44 50 b5
400 void* buffer; // 0x14: 48 45 50 b5
401
402 uint32_t reserved1; // 0x18: 00 00 00 00
403 uint32_t reserved2; // 0x1C: 00 00 00 00
404 uint32_t reserved3; // 0x20: 00 00 00 00
405
406 uint32_t flags; // 0x24: 01 00 00 00
407 uint32_t reserved4; // 0x28: 00 00 00 00
408
409 /* Matches aceBT_aipcHandles_t dump at 0x2C–0x2F */
410 uint16_t callback_id; // 0x2C: 4c 19 → 0x194C (6476)
411 uint16_t server_id; // 0x2E: f0 b6 → 0xB6F0 (46832)
413
419// /** Returns ACE BT Session associated with a callback ID
420// *
421// * @param callback_client_id Callback ID
422// * @return session handle if valid session found else error code
423// */
424// sessionHandle getSessionForCallback(uint16_t callback_client_id);
425// sessionHandle getSessionForTask(aceAipc_parameter_t* task);
426
427typedef void (*bt_event_handler)(aceAipc_parameter_t* task);
428
435status_t registerBTEvtHandler(
436 sessionHandle sessionHandle, bt_event_handler cb, acebt_ipc_evt_enum_t min,
437 acebt_ipc_evt_enum_t max
438);
439
440status_t aipc_invoke_sync_call(uint16_t func_id, void* payload, uint32_t len);
441
453void* getBTClientData(sessionHandle sessionHandle, uint8_t dataIndex);
454
458typedef struct {
459 uint32_t size;
460 uint32_t session_handle;
461 uint32_t conn_handle;
462 status_t out_status;
463} __attribute__((packed)) acebt_request_disc_all_svc_t;
464typedef acebt_request_disc_all_svc_t request_disc_all_svc_t;
465
466void serialize_gattc_disc_all_svc(request_disc_all_svc_t* data, uint32_t conn_handle);
467
471typedef struct {
472 uint32_t size;
473 uint32_t conn_handle;
474 status_t out_status;
475} __attribute__((packed)) acebt_dis_req_t;
476typedef acebt_dis_req_t dis_req_t;
477
481typedef struct {
482 bleGattServiceType_t serviceType;
483 uuid_t uuid;
484} __attribute__((packed)) acebt_included_svc_t;
485typedef acebt_included_svc_t included_svc_t;
486
487typedef enum {
488 ACEBT_BLE_GATT_CHARACTERISTICS,
489 ACEBT_BLE_GATT_DESCRIPTOR,
490 ACEBT_BLE_GATT_INC_SVC,
491} aceBT_bleSerealizedGattDataType_t;
492typedef aceBT_bleSerealizedGattDataType_t bleSerealizedGattDataType_t;
493
494typedef struct {
495 bleSerealizedGattDataType_t dataType;
496 union {
498 bleGattDescriptor_t descValue;
499 included_svc_t svc;
500 };
502typedef acebt_service_data_t service_data_t;
503
504typedef struct {
505 uint8_t is_unregister;
506 uint16_t size;
507 uint16_t callback_mask;
508 uint32_t session_handle;
509 uint32_t conn_handle;
510 status_t out_status;
511 bleGattServiceType_t serviceType;
512 uuid_t uuid;
513 uint16_t no_svc_data;
514 service_data_t svc_data[];
516typedef acebt_register_cback_gatts_t register_cback_gatts_t;
517
518typedef struct {
519 uint16_t no_svc;
520 uint32_t conn_handle;
521 register_cback_gatts_t svc_list[];
523typedef acebt_register_cback_gatts_list_t register_cback_gatts_list_t;
524
525void deserealize_all_gatts_register_data(
526 register_cback_gatts_list_t* data, bleGattsService_t** gattService, uint32_t* no_svc
527);
528
529void cleanup_all_service(bleGattsService_t* service, int no_svc);
530
534typedef struct {
535 uint32_t size;
536 uint32_t conn_handle;
538 status_t status;
539} __attribute__((packed)) acebt_gattc_read_chars_req_data_t;
540typedef acebt_gattc_read_chars_req_data_t gattc_read_chars_req_data_t;
541
542void serialize_gattc_read_chars_req(
543 gattc_read_chars_req_data_t* data, uint32_t conn_handle,
545);
546
550typedef struct {
551 uint32_t size;
552 uint32_t conn_handle;
554 status_t status;
555 uint32_t data_len;
556 uint8_t data[];
557} __attribute__((packed)) acebt_gattc_read_chars_data_t;
558typedef acebt_gattc_read_chars_data_t gattc_read_chars_data_t;
559
563void serialize_gattc_write_char_req(
564 uint32_t conn_handle, bleGattCharacteristicsValue_t* val, uint8_t** out_data, uint32_t* out_len,
565 responseType_t request_type
566);
567
571typedef struct {
572 uint32_t size;
573 uint32_t conn_handle;
575 responseType_t write_type;
576 status_t status;
577 uint32_t data_len;
578 uint8_t data[];
579} __attribute__((packed)) acebt_gattc_write_chars_data_t;
580typedef acebt_gattc_write_chars_data_t gattc_write_chars_data_t;
581
585void serialize_gattc_write_desc_req(
586 uint32_t conn_handle, bleGattDescriptor_t* p_desc, uint8_t** out_data, uint32_t* out_len,
587 responseType_t requestType
588);
589
593typedef struct {
594 uint32_t size;
595 uint32_t conn_handle;
597 responseType_t write_type;
598 status_t status;
599 uint32_t data_len;
600 uint8_t data[];
601} __attribute__((packed)) acebt_gattc_write_desc_data_t;
602typedef acebt_gattc_write_desc_data_t gattc_write_desc_data_t;
603
607typedef struct {
608 bool enable;
609 uint32_t size;
610 uint32_t conn_handle;
611 uint32_t session_handle;
613} __attribute__((packed)) acebt_gattc_set_notify_data_t;
614typedef acebt_gattc_set_notify_data_t gattc_set_notify_data_t;
615
616void serialize_ble_set_notify(
617 gattc_set_notify_data_t* data, uint32_t conn_handle, bleGattCharacteristicsValue_t charsValue,
618 bool enable
619);
620
624// The schema for this struct has changed. It used to have a `uint8_t confirm` field
625// after `session_handle`, and `data_len` used to be `uint16_t`.
626typedef struct {
627 uint32_t size;
628 uint32_t conn_handle;
629 uint32_t session_handle;
631 uint32_t data_len;
632 uint8_t data[];
633} __attribute__((packed)) acebt_notify_data_t;
634typedef acebt_notify_data_t notify_data_t;
635
636#ifdef __cplusplus
637}
638#endif
639
640#endif // COMPAT_ACE_INTERNALS_H
aceBt_bleAppId_t bleAppId_t
BLE application type.
aceBT_responseType_t responseType_t
Type of write operation for a BLE characteristic.
ace_status_t status_t
Bluetooth API status codes.
aceBT_bleGattsService_t bleGattsService_t
Structure for a GATT Server service.
aceBT_bleGattDescriptor_t bleGattDescriptor_t
BLE GATT Descriptor.
aceBT_uuid_t uuid_t
Bluetooth UUID struct.
aceBT_bleGattServiceType_t bleGattServiceType_t
BLE GATT service type.
aceBT_sessionHandle sessionHandle
Session handle for the lifetime of the Bluetooth application.
aceBT_bleGattCharacteristicsValue_t bleGattCharacteristicsValue_t
BLE GATT Characteristic.
Internal definitions.