1#include <kindlebt/compat_ace_utils.h>
8#include <kindlebt/compat_ace_internals.h>
10void dump_hex(
const void* ptr,
size_t size) {
11 const unsigned char* data = (
const unsigned char*)ptr;
14 size_t lines = (size + 15) / 16;
15 size_t buf_len = (size * 3) + lines + 1;
16 char* buf = malloc(buf_len);
20 for (
size_t i = 0; i < size; ++i) {
21 p += snprintf(p, buf + buf_len - p,
"%02x ", data[i]);
24 if ((i + 1) % 16 == 0) *p++ =
'\n';
27 log_debug(
"Dumping hex:\n%s", buf);
31void dump_registerCbackGattcData(
const registerCbackGattcData_t* data) {
33 log_warn(
"Dumping registerCbackGattcData_t: NULL");
38 "Dumping registerCbackGattcData_t {\n"
40 " session_handle: %p\n"
41 " callback_mask: %u\n"
42 " is_unregister: %u\n"
46 data->size, data->session_handle, data->callback_mask, data->is_unregister, data->app_id,
51void dump_gattc_get_db_data_t(
const gattc_get_db_data_t* data) {
53 log_warn(
"Dumping gattc_get_db_data_t: NULL");
58 "Dumping gattc_get_db_data_t {\n"
63 data->size, data->conn_handle, data->uuid
69 log_warn(
"Dumping aceAipc_parameter_t: NULL");
74 "Dumping aceAipc_parameter_t {\n"
75 " reserved0 %u (%p)\n"
78 " function_id %u (%p)\n"
82 " reserved1 %u (%p)\n"
83 " reserved2 %u (%p)\n"
84 " reserved3 %u (%p)\n"
86 " reserved4 %u (%p)\n"
87 " callback_id %u (%p)\n"
88 " server_id %u (%p)\n"
90 task->reserved0, task->reserved0, task->size, task->size, task->msg_type, task->msg_type,
91 task->function_id, task->function_id, task->cb1, task->cb2, task->buffer, task->reserved1,
92 task->reserved1, task->reserved2, task->reserved2, task->reserved3, task->reserved3,
93 task->flags, task->flags, task->reserved4, task->reserved4, task->callback_id,
94 task->callback_id, task->server_id, task->server_id
98void dump_mask_bits(uint16_t mask) {
100 char* buf = malloc(len);
104 for (
int i = 15; i >= 0; --i) {
105 *p++ = (mask & (1u << i)) ?
'1' :
'0';
107 if (i % 4 == 0 && i != 0) *p++ =
' ';
111 log_debug(
"Dumping mask: 0x%04x (binary: %s)", mask, buf);
115void dump_aipc_handle(aipcHandles_t aipc_handle) {
117 "aipc_handle {\n callback_server_id: %u (0x%04x),\n server_id: %u (0x%04x)\n}",
118 aipc_handle.callback_server_id, aipc_handle.callback_server_id, aipc_handle.server_id,
119 aipc_handle.server_id
123void dump_uuid2(
const uuid_t* uuid) {
125 "[%s()]: %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x",
126 __func__, uuid->uu[0], uuid->uu[1], uuid->uu[2], uuid->uu[3], uuid->uu[4], uuid->uu[5],
127 uuid->uu[6], uuid->uu[7], uuid->uu[8], uuid->uu[9], uuid->uu[10], uuid->uu[11],
128 uuid->uu[12], uuid->uu[13], uuid->uu[14], uuid->uu[15]
133 log_debug(
"Dumping bleGattBlobValue_t");
135 "bleGattBlobValue {\n"
140 value->size, value->offset
142 printf(
"bleGattBlobValue.data = ");
143 for (uint16_t i = 0; i < value->size; ++i) {
144 printf(
"0x%02X ", value->data[i]);
150 log_debug(
"Dumping bleGattRecord_t");
151 dump_uuid2(&record->uuid);
153 "bleGattRecord_t {\n"
159 record->attProp, record->attPerm, record->handle, record->handle
164 if (descriptor == NULL) {
165 log_debug(
"Dumping bleGattDescriptor_t: NULL");
169 log_debug(
"Dumping bleGattDescriptor_t");
171 "bleGattDescriptor_t {\n"
176 " desc_auth_retry %d\n"
179 descriptor->is_set, descriptor->is_notify, descriptor->desc_auth_retry,
180 descriptor->write_type
183 dump_bleGattRecord_t(&descriptor->gattRecord);
184 dump_bleGattBlobValue_t(&descriptor->blobValue);
188 log_debug(
"Dumping bleGattCharacteristicsValue_t");
190 "bleGattCharacteristicsValue_t {\n"
193 " gattDescriptor NEXT\n"
195 " read_auth_retry %d\n"
198 " multiDescCount %d\n"
200 chars_value.format, chars_value.auth_retry, chars_value.read_auth_retry,
201 chars_value.write_type, chars_value.multiDescCount
204 if (chars_value.format == 255) {
205 dump_bleGattBlobValue_t(&chars_value.blobValue);
208 dump_bleGattRecord_t(&chars_value.gattRecord);
209 log_debug(
"Main descriptor:");
210 dump_bleGattDescriptor_t(&chars_value.gattDescriptor);
212 log_debug(
"Linked list descriptors:");
213 if (chars_value.multiDescCount) {
214 struct aceBT_gattDescRec_t* desc_rec = NULL;
215 STAILQ_FOREACH(desc_rec, &chars_value.descList, link) {
216 dump_bleGattDescriptor_t(&desc_rec->value);
219 log_debug(
"Done linked list descriptors");
222void dump_notify_data_t(
const notify_data_t* data) {
223 log_debug(
"Dumping notify_data_t");
227 " conn_handle %d (%p)\n"
228 " session_handle %d (%p)\n"
234 data->size, data->conn_handle, data->conn_handle, data->session_handle,
235 data->session_handle,
237 data->data_len, data->data
240 dump_bleGattCharacteristicsValue_t(data->value);
aceBT_bleGattRecord_t bleGattRecord_t
BLE GATT Record (ATT attributes)
aceBT_bleGattBlobValue_t bleGattBlobValue_t
BLE blob value.
aceBT_bleGattDescriptor_t bleGattDescriptor_t
BLE GATT Descriptor.
aceBT_uuid_t uuid_t
Bluetooth UUID struct.
aceBT_bleGattCharacteristicsValue_t bleGattCharacteristicsValue_t
BLE GATT Characteristic.