From 88c02d70ff72830ba019beb774e923da9bf3a879 Mon Sep 17 00:00:00 2001 From: Luiz Augusto von Dentz Date: Fri, 14 Mar 2014 15:24:51 +0200 Subject: [PATCH] android/avrcp-lib: Add support for parsing RegisterNotification PDU --- android/avrcp-lib.c | 25 +++++++++++++++++++++++++ android/avrcp-lib.h | 3 +++ 2 files changed, 28 insertions(+) diff --git a/android/avrcp-lib.c b/android/avrcp-lib.c index ea2b8da9a..123d6fb3c 100644 --- a/android/avrcp-lib.c +++ b/android/avrcp-lib.c @@ -510,6 +510,28 @@ static ssize_t get_element_attributes(struct avrcp *session, player->user_data); } +static ssize_t register_notification(struct avrcp *session, uint8_t transaction, + uint16_t params_len, uint8_t *params, + void *user_data) +{ + struct avrcp_player *player = user_data; + uint32_t interval; + + DBG(""); + + if (!params || params_len != 5) + return -EINVAL; + + if (!player->ind || !player->ind->register_notification) + return -ENOSYS; + + interval = bt_get_be32(¶ms[1]); + + return player->ind->register_notification(session, transaction, + params[0], interval, + player->user_data); +} + static const struct avrcp_control_handler player_handlers[] = { { AVRCP_GET_CAPABILITIES, AVC_CTYPE_STATUS, AVC_CTYPE_STABLE, @@ -538,6 +560,9 @@ static const struct avrcp_control_handler player_handlers[] = { { AVRCP_GET_ELEMENT_ATTRIBUTES, AVC_CTYPE_STATUS, AVC_CTYPE_STABLE, get_element_attributes }, + { AVRCP_REGISTER_NOTIFICATION, + AVC_CTYPE_NOTIFY, AVC_CTYPE_INTERIM, + register_notification }, { }, }; diff --git a/android/avrcp-lib.h b/android/avrcp-lib.h index 9257de74b..256576d17 100644 --- a/android/avrcp-lib.h +++ b/android/avrcp-lib.h @@ -156,6 +156,9 @@ struct avrcp_control_ind { uint8_t transaction, uint64_t uid, uint8_t number, uint32_t *attrs, void *user_data); + int (*register_notification) (struct avrcp *session, + uint8_t transaction, uint8_t event, + uint32_t interval, void *user_data); }; struct avrcp_control_cfm { -- 2.47.3