summaryrefslogtreecommitdiff
path: root/android/avrcp-lib.c
diff options
context:
space:
mode:
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2014-10-02 17:57:19 +0300
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2014-10-06 16:01:51 +0300
commit6f4ddca55f298094623c83a7136ce6e17ea321bb (patch)
treef4fa48a688ce18253e1992482106f24892d342e2 /android/avrcp-lib.c
parent43c80c63a154901717e0d304efffd497c4064b03 (diff)
downloadbluez-6f4ddca55f298094623c83a7136ce6e17ea321bb.tar.gz
android/avrcp-lib: Add AddToNowPlaying structs
Diffstat (limited to 'android/avrcp-lib.c')
-rw-r--r--android/avrcp-lib.c48
1 files changed, 30 insertions, 18 deletions
diff --git a/android/avrcp-lib.c b/android/avrcp-lib.c
index 18a5c9281..396792550 100644
--- a/android/avrcp-lib.c
+++ b/android/avrcp-lib.c
@@ -280,6 +280,16 @@ struct search_rsp {
uint32_t items;
} __attribute__ ((packed));
+struct add_to_now_playing_req {
+ uint8_t scope;
+ uint64_t uid;
+ uint16_t counter;
+} __attribute__ ((packed));
+
+struct add_to_now_playing_rsp {
+ uint8_t status;
+} __attribute__ ((packed));
+
struct avrcp_control_handler {
uint8_t id;
uint8_t code;
@@ -1410,7 +1420,7 @@ static ssize_t add_to_now_playing(struct avrcp *session, uint8_t transaction,
void *user_data)
{
struct avrcp_player *player = user_data;
- uint8_t scope;
+ struct add_to_now_playing_req *req;
uint64_t uid;
uint16_t counter;
@@ -1419,18 +1429,20 @@ static ssize_t add_to_now_playing(struct avrcp *session, uint8_t transaction,
if (!player->ind || !player->ind->add_to_now_playing)
return -ENOSYS;
- if (!params || params_len < 11)
+ if (!params || params_len < sizeof(*req))
return -EINVAL;
- scope = params[0];
- if (scope > AVRCP_MEDIA_NOW_PLAYING)
+ req = (void *) params;
+
+ if (req->scope > AVRCP_MEDIA_NOW_PLAYING)
return -EBADRQC;
- uid = get_be64(&params[1]);
- counter = get_be16(&params[9]);
+ uid = get_be64(&req->uid);
+ counter = get_be16(&req->counter);
- return player->ind->add_to_now_playing(session, transaction, scope, uid,
- counter, player->user_data);
+ return player->ind->add_to_now_playing(session, transaction, req->scope,
+ uid, counter,
+ player->user_data);
}
static const struct avrcp_browsing_handler browsing_handlers[] = {
@@ -2971,17 +2983,17 @@ int avrcp_add_to_now_playing(struct avrcp *session, uint8_t scope, uint64_t uid,
uint16_t counter)
{
struct iovec iov;
- uint8_t pdu[11];
+ struct add_to_now_playing_req req;
if (scope > AVRCP_MEDIA_NOW_PLAYING)
return -EINVAL;
- pdu[0] = scope;
- put_be64(uid, &pdu[1]);
- put_be16(counter, &pdu[9]);
+ req.scope = scope;
+ put_be64(uid, &req.uid);
+ put_be16(counter, &req.counter);
- iov.iov_base = pdu;
- iov.iov_len = sizeof(pdu);
+ iov.iov_base = &req;
+ iov.iov_len = sizeof(req);
return avrcp_send_browsing_req(session, AVRCP_ADD_TO_NOW_PLAYING,
&iov, 1, add_to_now_playing_rsp,
@@ -3416,12 +3428,12 @@ int avrcp_search_rsp(struct avrcp *session, uint8_t transaction,
int avrcp_add_to_now_playing_rsp(struct avrcp *session, uint8_t transaction)
{
struct iovec iov;
- uint8_t pdu;
+ struct add_to_now_playing_rsp rsp;
- pdu = AVRCP_STATUS_SUCCESS;
+ rsp.status = AVRCP_STATUS_SUCCESS;
- iov.iov_base = &pdu;
- iov.iov_len = sizeof(pdu);
+ iov.iov_base = &rsp;
+ iov.iov_len = sizeof(rsp);
return avrcp_send_browsing(session, transaction,
AVRCP_ADD_TO_NOW_PLAYING, &iov, 1);