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:13:22 +0300
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2014-10-06 16:01:51 +0300
commitb8b3afadf81b0078f0c4c5a15ac128596c8b8577 (patch)
treecb6337a7b845fbc85a48f48029bf718bcb556bc6 /android/avrcp-lib.c
parentae563d98c3204e0b095dd80b69e07dc2f9f787a3 (diff)
downloadbluez-b8b3afadf81b0078f0c4c5a15ac128596c8b8577.tar.gz
android/avrcp-lib: Add PlayItem structs
Diffstat (limited to 'android/avrcp-lib.c')
-rw-r--r--android/avrcp-lib.c41
1 files changed, 26 insertions, 15 deletions
diff --git a/android/avrcp-lib.c b/android/avrcp-lib.c
index 73266f6df..3aad9abf5 100644
--- a/android/avrcp-lib.c
+++ b/android/avrcp-lib.c
@@ -258,6 +258,16 @@ struct get_item_attributes_rsp {
struct media_item items[0];
} __attribute__ ((packed));
+struct play_item_req {
+ uint8_t scope;
+ uint64_t uid;
+ uint16_t counter;
+} __attribute__ ((packed));
+
+struct play_item_rsp {
+ uint8_t status;
+} __attribute__ ((packed));
+
struct avrcp_control_handler {
uint8_t id;
uint8_t code;
@@ -1325,7 +1335,7 @@ static ssize_t play_item(struct avrcp *session, uint8_t transaction,
void *user_data)
{
struct avrcp_player *player = user_data;
- uint8_t scope;
+ struct play_item_req *req;
uint64_t uid;
uint16_t counter;
@@ -1334,17 +1344,18 @@ static ssize_t play_item(struct avrcp *session, uint8_t transaction,
if (!player->ind || !player->ind->play_item)
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]);
- return player->ind->play_item(session, transaction, scope, uid,
+ return player->ind->play_item(session, transaction, req->scope, uid,
counter, player->user_data);
}
@@ -2830,17 +2841,17 @@ int avrcp_play_item(struct avrcp *session, uint8_t scope, uint64_t uid,
uint16_t counter)
{
struct iovec iov;
- uint8_t pdu[11];
+ struct play_item_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_PLAY_ITEM, &iov, 1,
play_item_rsp, session);
@@ -3356,12 +3367,12 @@ int avrcp_get_item_attributes_rsp(struct avrcp *session, uint8_t transaction,
int avrcp_play_item_rsp(struct avrcp *session, uint8_t transaction)
{
struct iovec iov;
- uint8_t pdu;
+ struct play_item_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_PLAY_ITEM,
&iov, 1);