BT_ADAPTER_LE_ADVERTISING_DATA_128_BIT_SERVICE_SOLICITATION_UUIDS = 0x15, /**< List of 128-bit Service Solicitation UUIDs*/
BT_ADAPTER_LE_ADVERTISING_DATA_SERVICE_DATA = 0x16, /**< Service data */
BT_ADAPTER_LE_ADVERTISING_DATA_APPEARANCE = 0x19, /**< Appearance*/
+ BT_ADAPTER_LE_ADVERTISING_DATA_128_BIT_SERVICE_DATA = 0x21, /**< 128-bit Service UUID's data */
BT_ADAPTER_LE_ADVERTISING_DATA_TRANSPORT_DISCOVERY = 0x26, /**< Transport Discovery*/
BT_ADAPTER_LE_ADVERTISING_DATA_MANUFACTURER_SPECIFIC_DATA = 0xff, /**< Manufacturer data */
} bt_adapter_le_advertising_data_type_e;
field_len = 0;
while (remain_len > 0) {
field_len = remain_data[0];
- if (remain_data[1] == BT_ADAPTER_LE_ADVERTISING_DATA_SERVICE_DATA)
+ if (remain_data[1] == BT_ADAPTER_LE_ADVERTISING_DATA_SERVICE_DATA ||
+ remain_data[1] == BT_ADAPTER_LE_ADVERTISING_DATA_128_BIT_SERVICE_DATA)
data_count++;
remain_len = remain_len - field_len - 1;
field_len = 0;
while (remain_len > 0) {
field_len = remain_data[0];
+
if (remain_data[1] == BT_ADAPTER_LE_ADVERTISING_DATA_SERVICE_DATA) {
- (*data_list)[data_index].service_uuid = g_malloc0(sizeof(char) *4 + 1);
+ (*data_list)[data_index].service_uuid = g_malloc0(sizeof(char) * 4 + 1);
snprintf((*data_list)[data_index].service_uuid, 5,
"%2.2X%2.2X", remain_data[3], remain_data[2]);
&remain_data[4], field_len - 3);
(*data_list)[data_index].service_data_len = field_len - 3;
+ data_index++;
+ } else if (remain_data[1] == BT_ADAPTER_LE_ADVERTISING_DATA_128_BIT_SERVICE_DATA) {
+ (*data_list)[data_index].service_uuid = g_malloc0(sizeof(char) * 36 + 1);
+ snprintf((*data_list)[data_index].service_uuid, 37,
+ "%2.2X%2.2X%2.2X%2.2X-%2.2X%2.2X-%2.2X%2.2X-%2.2X%2.2X-%2.2X%2.2X%2.2X%2.2X%2.2X%2.2X",
+ remain_data[17], remain_data[16],
+ remain_data[15], remain_data[14],
+ remain_data[13], remain_data[12],
+ remain_data[11], remain_data[10],
+ remain_data[9], remain_data[8],
+ remain_data[7], remain_data[6],
+ remain_data[5], remain_data[4],
+ remain_data[3], remain_data[2]);
+
+ (*data_list)[data_index].service_data = g_memdup(
+ &remain_data[18], field_len - 17);
+ (*data_list)[data_index].service_data_len = field_len - 17;
+
data_index++;
}