diff options
author | Luiz Augusto von Dentz <luiz.von.dentz@intel.com> | 2014-10-02 17:13:22 +0300 |
---|---|---|
committer | Luiz Augusto von Dentz <luiz.von.dentz@intel.com> | 2014-10-06 16:01:51 +0300 |
commit | b8b3afadf81b0078f0c4c5a15ac128596c8b8577 (patch) | |
tree | cb6337a7b845fbc85a48f48029bf718bcb556bc6 /android/avrcp-lib.c | |
parent | ae563d98c3204e0b095dd80b69e07dc2f9f787a3 (diff) | |
download | bluez-b8b3afadf81b0078f0c4c5a15ac128596c8b8577.tar.gz |
android/avrcp-lib: Add PlayItem structs
Diffstat (limited to 'android/avrcp-lib.c')
-rw-r--r-- | android/avrcp-lib.c | 41 |
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(¶ms[1]); counter = get_be16(¶ms[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); |