mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-03-15 22:20:59 +00:00
avrcp_target: refactor set track changed function
This commit is contained in:
parent
d3db1226d6
commit
7d1b72e5d0
@ -173,7 +173,7 @@ static const char * avrcp_ctype_name[] = {
|
||||
"RESERVED",
|
||||
"INTERIM"
|
||||
};
|
||||
static const avrcp_ctype_name_num = 16;
|
||||
static const uint16_t avrcp_ctype_name_num = 16;
|
||||
|
||||
const char * avrcp_ctype2str(uint8_t index){
|
||||
if (index < avrcp_ctype_name_num){
|
||||
@ -810,6 +810,7 @@ static void avrcp_handle_open_connection(avrcp_connection_t * connection, hci_co
|
||||
connection->target_song_position_ms = 0xFFFFFFFF;
|
||||
memset(connection->target_track_id, 0xFF, 8);
|
||||
connection->target_track_selected = false;
|
||||
connection->target_track_changed = false;
|
||||
connection->target_playback_status = AVRCP_PLAYBACK_STATUS_STOPPED;
|
||||
connection->state = AVCTP_CONNECTION_OPENED;
|
||||
|
||||
|
@ -749,6 +749,30 @@ uint8_t avrcp_target_set_playback_status(uint16_t avrcp_cid, avrcp_playback_stat
|
||||
return ERROR_CODE_SUCCESS;
|
||||
}
|
||||
|
||||
static void avrcp_target_register_track_changed(avrcp_connection_t * connection, uint8_t * track_id){
|
||||
if (track_id == NULL){
|
||||
memset(connection->target_track_id, 0xFF, 8);
|
||||
connection->target_track_selected = false;
|
||||
} else {
|
||||
(void)memcpy(connection->target_track_id, track_id, 8);
|
||||
connection->target_track_selected = true;
|
||||
}
|
||||
|
||||
if (connection->notifications_enabled & (1 << AVRCP_NOTIFICATION_EVENT_TRACK_CHANGED)) {
|
||||
connection->target_track_changed = true;
|
||||
avrcp_request_can_send_now(connection, connection->l2cap_signaling_cid);
|
||||
}
|
||||
}
|
||||
|
||||
uint8_t avrcp_target_track_changed(uint16_t avrcp_cid, uint8_t * track_id){
|
||||
avrcp_connection_t * connection = avrcp_get_connection_for_avrcp_cid_for_role(AVRCP_TARGET, avrcp_cid);
|
||||
if (!connection){
|
||||
return ERROR_CODE_UNKNOWN_CONNECTION_IDENTIFIER;
|
||||
}
|
||||
avrcp_target_register_track_changed(connection, track_id);
|
||||
return ERROR_CODE_SUCCESS;
|
||||
}
|
||||
|
||||
uint8_t avrcp_target_set_now_playing_info(uint16_t avrcp_cid, const avrcp_track_t * current_track, uint16_t total_tracks){
|
||||
avrcp_connection_t * connection = avrcp_get_connection_for_avrcp_cid_for_role(AVRCP_TARGET, avrcp_cid);
|
||||
if (!connection){
|
||||
@ -767,35 +791,10 @@ uint8_t avrcp_target_set_now_playing_info(uint16_t avrcp_cid, const avrcp_track_
|
||||
avrcp_target_store_media_attr(connection, AVRCP_MEDIA_ATTR_ALBUM, current_track->album);
|
||||
avrcp_target_store_media_attr(connection, AVRCP_MEDIA_ATTR_GENRE, current_track->genre);
|
||||
|
||||
connection->target_track_selected = true;
|
||||
|
||||
if (connection->notifications_enabled & (1 << AVRCP_NOTIFICATION_EVENT_TRACK_CHANGED)) {
|
||||
connection->target_track_changed = true;
|
||||
avrcp_request_can_send_now(connection, connection->l2cap_signaling_cid);
|
||||
}
|
||||
avrcp_target_register_track_changed(connection, current_track->track_id);
|
||||
return ERROR_CODE_SUCCESS;
|
||||
}
|
||||
|
||||
uint8_t avrcp_target_track_changed(uint16_t avrcp_cid, uint8_t * track_id){
|
||||
avrcp_connection_t * connection = avrcp_get_connection_for_avrcp_cid_for_role(AVRCP_TARGET, avrcp_cid);
|
||||
if (!connection){
|
||||
return ERROR_CODE_UNKNOWN_CONNECTION_IDENTIFIER;
|
||||
}
|
||||
|
||||
if (track_id == NULL){
|
||||
memset(connection->target_track_id, 0xFF, 8);
|
||||
connection->target_track_selected = false;
|
||||
} else {
|
||||
(void)memcpy(connection->target_track_id, track_id, 8);
|
||||
connection->target_track_selected = true;
|
||||
}
|
||||
|
||||
if (connection->notifications_enabled & (1 << AVRCP_NOTIFICATION_EVENT_TRACK_CHANGED)) {
|
||||
connection->target_track_changed = true;
|
||||
avrcp_request_can_send_now(connection, connection->l2cap_signaling_cid);
|
||||
}
|
||||
return ERROR_CODE_SUCCESS;
|
||||
}
|
||||
|
||||
uint8_t avrcp_target_playing_content_changed(uint16_t avrcp_cid){
|
||||
avrcp_connection_t * connection = avrcp_get_connection_for_avrcp_cid_for_role(AVRCP_TARGET, avrcp_cid);
|
||||
|
Loading…
x
Reference in New Issue
Block a user