diff --git a/android/avrcp-lib.c b/android/avrcp-lib.c
index 18a5c92..3967925 100644
--- a/android/avrcp-lib.c
+++ b/android/avrcp-lib.c
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;
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;
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[] = {
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,
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);