GVariant *tmp_value;
GVariant *value;
gchar *name;
- gchar *manufacturer_data = NULL;
DBG("+");
if (result != NULL) {
g_variant_unref(tmp_value);
/* LegacyManufacturerDataLen */
- tmp_value = g_variant_lookup_value(value, "LegacyManufacturerDataLen", G_VARIANT_TYPE_UINT32);
- unsigned int manufacturer_data_len = tmp_value ? g_variant_get_uint32(tmp_value) : 0;
+ tmp_value = g_variant_lookup_value(value, "LegacyManufacturerDataLen", G_VARIANT_TYPE_UINT16);
+ unsigned int manufacturer_data_len = tmp_value ? g_variant_get_uint16(tmp_value) : 0;
if (manufacturer_data_len > BT_HAL_MANUFACTURER_DATA_LENGTH_MAX) {
ERR("manufacturer_data_len is too long(len = %d)", manufacturer_data_len);
manufacturer_data_len = BT_HAL_MANUFACTURER_DATA_LENGTH_MAX;
}
if (tmp_value)
g_variant_unref(tmp_value);
+
/*size += __bt_insert_hal_properties(buf + size, HAL_PROP_DEVICE_MANUFACTURER_DATA_LEN,
sizeof(unsigned int), &manufacturer_data_len);
ev->num_props++;*/
DBG("Device Legacy Manufacturer data length [%u]", manufacturer_data_len);
/* ManufacturerData */
+ GVariantIter *char_value_iter;
+ GByteArray *manufacturer_data = NULL;
+ guint8 char_value;
+
tmp_value = g_variant_lookup_value(value, "LegacyManufacturerData", G_VARIANT_TYPE_BYTESTRING);
- manufacturer_data = value ? (gchar *)g_variant_get_bytestring(tmp_value) : NULL;
+ g_variant_get(tmp_value, "ay", &char_value_iter);
+ manufacturer_data = g_byte_array_new();
+ while (g_variant_iter_loop(char_value_iter, "y", &char_value))
+ g_byte_array_append(manufacturer_data, &char_value, 1);
+ g_variant_iter_free(char_value_iter);
+
if (manufacturer_data) {
if (manufacturer_data_len > 0) {
- //size += __bt_insert_hal_properties(buf + size, HAL_PROP_DEVICE_MANUFACTURER_DATA,
- size += __bt_insert_hal_properties(buf + size, HAL_PROP_DEVICE_BLE_ADV_DATA,
- manufacturer_data_len, manufacturer_data);
+ size += __bt_insert_hal_properties(buf + size, HAL_PROP_DEVICE_MANUFACTURER_DATA,
+ manufacturer_data->len, manufacturer_data->data);
ev->num_props++;
}
}
+ g_byte_array_free(manufacturer_data, FALSE);
if (tmp_value)
g_variant_unref(tmp_value);