BT_INFO("GATT Client Read Callback from [%s] svc inst [%d] char val len [%d] char inst [%d]",
address, svc_inst, char_prop.val_len, char_prop.prop.instance_id);
- /* Copy Data */
- memcpy(&char_prop.value, g_variant_get_data(data_var), char_prop.val_len);
+ if (char_prop.val_len > 0) {
+ BT_INFO("Get the read data");
+ /* Copy Data */
+ memcpy(&char_prop.value, g_variant_get_data(data_var), char_prop.val_len);
+ }
+
memcpy(&char_prop.prop.uuid, g_variant_get_data(char_uuid_var), 16);
/* Copy Svc Data */
for (i = 0; i < char_prop.val_len; i++)
BT_INFO("Data[%d] = [0x%x]", i, char_prop.value[i]);
-
_bt_gatt_client_event_cb(BLUETOOTH_EVENT_GATT_READ_CHAR,
result, &char_prop,
event_info->cb, event_info->user_data);
if (event_data->uuid_status.conn_status.status != OAL_STATUS_SUCCESS)
result = BLUETOOTH_ERROR_INTERNAL;
else {
+ BT_ERR("read data len is [%d]", event_data->data_len);
if (event_data->data_len > 0) {
/* DEBUG */
for (i = 0; i < event_data->data_len; i++)
read_val,
event_data->data_len,
TRUE, NULL, NULL);
- /* SVC uuid */
- svc_uuid = g_memdup(&event_data->uuid_status.srvc_id.id.uuid.uuid[0], uuid_len);
-
- data_svc_uuid = g_variant_new_from_data(
- G_VARIANT_TYPE_BYTESTRING,
- svc_uuid,
- 16,
- TRUE, NULL, NULL);
-
- /* Char uuid */
- char_uuid = g_memdup(&event_data->uuid_status.char_id.uuid.uuid[0], uuid_len);
-
- data_char_uuid = g_variant_new_from_data(
- G_VARIANT_TYPE_BYTESTRING,
- char_uuid,
- 16,
- TRUE, NULL, NULL);
- param = g_variant_new("(isn@ayin@ayin@ay)", result,
- conn_info->addr,
- 16,
- data_svc_uuid,
- event_data->uuid_status.srvc_id.id.inst_id,
- 16,
- data_char_uuid,
- event_data->uuid_status.char_id.inst_id,
- event_data->data_len,
- data);
-
- /* Send Event */
- _bt_send_event(BT_GATT_CLIENT_EVENT,
- BLUETOOTH_EVENT_GATT_READ_CHAR,
- param);
} else {
BT_ERR("Characteristic Read success, but no data!!!");
- result = BLUETOOTH_ERROR_INTERNAL;
+
+ data = g_variant_new_from_data(
+ G_VARIANT_TYPE_BYTESTRING,
+ NULL,
+ 0,
+ FALSE, NULL, NULL);
}
+
+ /* SVC uuid */
+ svc_uuid = g_memdup(&event_data->uuid_status.srvc_id.id.uuid.uuid[0], uuid_len);
+
+ data_svc_uuid = g_variant_new_from_data(
+ G_VARIANT_TYPE_BYTESTRING,
+ svc_uuid,
+ 16,
+ TRUE, NULL, NULL);
+
+ /* Char uuid */
+ char_uuid = g_memdup(&event_data->uuid_status.char_id.uuid.uuid[0], uuid_len);
+
+ data_char_uuid = g_variant_new_from_data(
+ G_VARIANT_TYPE_BYTESTRING,
+ char_uuid,
+ 16,
+ TRUE, NULL, NULL);
+
+ param = g_variant_new("(isn@ayin@ayin@ay)", result,
+ conn_info->addr,
+ 16,
+ data_svc_uuid,
+ event_data->uuid_status.srvc_id.id.inst_id,
+ 16,
+ data_char_uuid,
+ event_data->uuid_status.char_id.inst_id,
+ event_data->data_len,
+ data);
+
+ /* Send Event */
+ _bt_send_event(BT_GATT_CLIENT_EVENT,
+ BLUETOOTH_EVENT_GATT_READ_CHAR,
+ param);
}
/* Send DBUS return */
__bt_gatt_handle_pending_request_info(result,