AVRCP: respond with UINT32_MAX if duration is not available

Section 5.4.1 of AVRCP 1.3 spec says:

	If TG does not support SongLength And SongPosition on TG, then TG shall
	return 0xFFFFFFFF.

SongPosition is always available, but song length depends on user to
provied it.
This commit is contained in:
Lucas De Marchi 2011-10-17 18:34:29 -02:00 committed by Johan Hedberg
parent 2c920f6d68
commit 464c36f7d8

View File

@ -796,6 +796,7 @@ static uint8_t avrcp_handle_get_play_status(struct avrcp_player *player,
uint16_t len = ntohs(pdu->params_len);
uint32_t position;
uint32_t duration;
void *pduration;
if (len != 0) {
pdu->params_len = htons(1);
@ -804,11 +805,13 @@ static uint8_t avrcp_handle_get_play_status(struct avrcp_player *player,
}
position = player->cb->get_position(player->user_data);
duration = GPOINTER_TO_UINT(player->cb->get_metadata(
AVRCP_MEDIA_ATTRIBUTE_DURATION,
player->user_data));
pduration = player->cb->get_metadata(AVRCP_MEDIA_ATTRIBUTE_DURATION,
player->user_data);
if (pduration != NULL)
duration = htonl(GPOINTER_TO_UINT(pduration));
else
duration = htonl(UINT32_MAX);
duration = htonl(duration);
position = htonl(position);
memcpy(&pdu->params[0], &duration, 4);