From 7a9e2b31e4435ff21a86d723b474c6b99bc19ae1 Mon Sep 17 00:00:00 2001 From: XiaoYao Date: Tue, 14 Sep 2021 17:12:08 +0800 Subject: [PATCH 19/19] bluez: debug for avctp/avrcp/eirdata --- profiles/audio/avctp.c | 6 ++++++ profiles/audio/avrcp.c | 12 +++++++----- src/device.c | 6 +++--- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/profiles/audio/avctp.c b/profiles/audio/avctp.c index 3d31d24..612a4c9 100644 --- a/profiles/audio/avctp.c +++ b/profiles/audio/avctp.c @@ -1394,6 +1394,12 @@ static void avctp_connect_cb(GIOChannel *chan, GError *err, gpointer data) if (session->control == NULL) session->control = avctp_channel_create(session, chan, 2, NULL); + if (session->control->io == NULL) { + error("avctp_connect_cb: closing unexpected connect"); + g_io_channel_shutdown(chan, TRUE, NULL); + return; + } + session->control->imtu = imtu; session->control->omtu = omtu; session->control->buffer = g_malloc0(MAX(imtu, omtu)); diff --git a/profiles/audio/avrcp.c b/profiles/audio/avrcp.c index 1242c47..6a52377 100644 --- a/profiles/audio/avrcp.c +++ b/profiles/audio/avrcp.c @@ -1514,15 +1514,17 @@ static bool handle_passthrough(struct avctp *conn, uint8_t op, bool pressed, static bool handle_keycode(struct avctp *conn, uint8_t op, void *user_data) { struct avrcp *session = user_data; - struct avrcp_player *player = session->controller->player; - struct media_player *mp = player->user_data; + struct avrcp_player *player; + struct media_player *mp; - if(!session || !player || !mp) { - DBG("session or player or mp is null"); + if (!session || !session->controller || !session->controller->player) { + DBG("session or controller or player is null"); return; } - media_player_set_key_code(mp, (uint32_t)op); + mp = player->user_data; + if (mp) + media_player_set_key_code(mp, (uint32_t)op); } static uint8_t avrcp_handle_register_notification(struct avrcp *session, diff --git a/src/device.c b/src/device.c index 61f3c41..4e4f68f 100644 --- a/src/device.c +++ b/src/device.c @@ -5628,12 +5628,12 @@ void device_set_eri_data(struct btd_device *device, const uint8_t *data, uint8_t if(!data || data_len <= 0) return; - if(!strcmp(device->eir_data, data)) - return; - len = data_len > GATT_EIR_DATA_LEN ? GATT_EIR_DATA_LEN : data_len; memset(device->eir_data, 0, GATT_EIR_DATA_LEN); memcpy(device->eir_data, data, len); + + g_dbus_emit_property_changed(dbus_conn, device->path, + DEVICE_INTERFACE, "EirData"); } bool device_is_connectable(struct btd_device *device) -- 2.20.1