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