mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-03-01 01:13:23 +00:00
avrcp: move target and controller contexts to avrcp.c file
This commit is contained in:
parent
b273af9018
commit
5dd5e7e34e
@ -60,6 +60,10 @@ static const char * default_avrcp_target_service_provider_name = "BTstack AVRCP
|
|||||||
static uint16_t avrcp_cid_counter = 0;
|
static uint16_t avrcp_cid_counter = 0;
|
||||||
|
|
||||||
static avrcp_context_t * sdp_query_context;
|
static avrcp_context_t * sdp_query_context;
|
||||||
|
|
||||||
|
avrcp_context_t avrcp_controller_context;
|
||||||
|
avrcp_context_t avrcp_target_context;
|
||||||
|
|
||||||
static uint8_t attribute_value[45];
|
static uint8_t attribute_value[45];
|
||||||
static const unsigned int attribute_value_buffer_size = sizeof(attribute_value);
|
static const unsigned int attribute_value_buffer_size = sizeof(attribute_value);
|
||||||
|
|
||||||
@ -562,6 +566,7 @@ static void avrcp_handle_sdp_client_query_attribute_value(avrcp_connection_t * c
|
|||||||
|
|
||||||
void avrcp_handle_sdp_client_query_result(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size){
|
void avrcp_handle_sdp_client_query_result(uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size){
|
||||||
avrcp_connection_t * connection = get_avrcp_connection_for_avrcp_cid_for_role(sdp_query_context->role, sdp_query_context->avrcp_cid);
|
avrcp_connection_t * connection = get_avrcp_connection_for_avrcp_cid_for_role(sdp_query_context->role, sdp_query_context->avrcp_cid);
|
||||||
|
|
||||||
if (!connection) return;
|
if (!connection) return;
|
||||||
if (connection->state != AVCTP_CONNECTION_W4_SDP_QUERY_COMPLETE) return;
|
if (connection->state != AVCTP_CONNECTION_W4_SDP_QUERY_COMPLETE) return;
|
||||||
|
|
||||||
@ -794,27 +799,38 @@ static void avrcp_packet_handler(uint8_t packet_type, uint16_t channel, uint8_t
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t avrcp_connect(bd_addr_t bd_addr, avrcp_context_t * context, uint16_t * avrcp_cid){
|
uint8_t avrcp_connect(avrcp_role_t role, bd_addr_t bd_addr, uint16_t * avrcp_cid){
|
||||||
avrcp_connection_t * connection = get_avrcp_connection_for_bd_addr_for_role(context->role, bd_addr);
|
avrcp_connection_t * connection = get_avrcp_connection_for_bd_addr_for_role(role, bd_addr);
|
||||||
if (connection) return ERROR_CODE_COMMAND_DISALLOWED;
|
if (connection) return ERROR_CODE_COMMAND_DISALLOWED;
|
||||||
|
|
||||||
if (!sdp_client_ready()) return ERROR_CODE_COMMAND_DISALLOWED;
|
if (!sdp_client_ready()) return ERROR_CODE_COMMAND_DISALLOWED;
|
||||||
|
|
||||||
btstack_packet_handler_t packet_handler = avrcp_packet_handler_for_role(context->role);
|
btstack_packet_handler_t packet_handler = avrcp_packet_handler_for_role(role);
|
||||||
if (!packet_handler) return 0;
|
if (!packet_handler) return 0;
|
||||||
|
|
||||||
connection = avrcp_create_connection(context->role, bd_addr);
|
connection = avrcp_create_connection(role, bd_addr);
|
||||||
if (!connection) return BTSTACK_MEMORY_ALLOC_FAILED;
|
if (!connection) return BTSTACK_MEMORY_ALLOC_FAILED;
|
||||||
|
|
||||||
if (avrcp_cid){
|
if (avrcp_cid){
|
||||||
*avrcp_cid = connection->avrcp_cid;
|
*avrcp_cid = connection->avrcp_cid;
|
||||||
}
|
}
|
||||||
context->avrcp_l2cap_psm = 0;
|
|
||||||
context->avrcp_version = 0;
|
switch (role){
|
||||||
context->avrcp_cid = connection->avrcp_cid;
|
case AVRCP_CONTROLLER:
|
||||||
|
sdp_query_context = &avrcp_controller_context;
|
||||||
|
break;
|
||||||
|
case AVRCP_TARGET:
|
||||||
|
sdp_query_context = &avrcp_target_context;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
connection->browsing_l2cap_psm = 0;
|
connection->browsing_l2cap_psm = 0;
|
||||||
connection->state = AVCTP_CONNECTION_W4_SDP_QUERY_COMPLETE;
|
connection->state = AVCTP_CONNECTION_W4_SDP_QUERY_COMPLETE;
|
||||||
sdp_query_context = context;
|
|
||||||
|
sdp_query_context->avrcp_l2cap_psm = 0;
|
||||||
|
sdp_query_context->avrcp_version = 0;
|
||||||
|
sdp_query_context->avrcp_cid = connection->avrcp_cid;
|
||||||
|
|
||||||
sdp_client_query_uuid16(&avrcp_handle_sdp_client_query_result, connection->remote_addr, BLUETOOTH_PROTOCOL_AVCTP);
|
sdp_client_query_uuid16(&avrcp_handle_sdp_client_query_result, connection->remote_addr, BLUETOOTH_PROTOCOL_AVCTP);
|
||||||
return ERROR_CODE_SUCCESS;
|
return ERROR_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -547,7 +547,7 @@ void avrcp_register_controller_packet_handler(btstack_packet_handler_t avrcp_con
|
|||||||
void avrcp_register_target_packet_handler(btstack_packet_handler_t avrcp_target_packet_handler);
|
void avrcp_register_target_packet_handler(btstack_packet_handler_t avrcp_target_packet_handler);
|
||||||
|
|
||||||
void avrcp_create_sdp_record(uint8_t controller, uint8_t * service, uint32_t service_record_handle, uint8_t browsing, uint16_t supported_features, const char * service_name, const char * service_provider_name);
|
void avrcp_create_sdp_record(uint8_t controller, uint8_t * service, uint32_t service_record_handle, uint8_t browsing, uint16_t supported_features, const char * service_name, const char * service_provider_name);
|
||||||
uint8_t avrcp_connect(bd_addr_t bd_addr, avrcp_context_t * context, uint16_t * avrcp_cid);
|
uint8_t avrcp_connect(avrcp_role_t role, bd_addr_t bd_addr, uint16_t * avrcp_cid);
|
||||||
void avrcp_emit_connection_established(btstack_packet_handler_t callback, uint16_t avrcp_cid, bd_addr_t addr, uint8_t status);
|
void avrcp_emit_connection_established(btstack_packet_handler_t callback, uint16_t avrcp_cid, bd_addr_t addr, uint8_t status);
|
||||||
void avrcp_emit_connection_closed(btstack_packet_handler_t callback, uint16_t avrcp_cid);
|
void avrcp_emit_connection_closed(btstack_packet_handler_t callback, uint16_t avrcp_cid);
|
||||||
|
|
||||||
|
@ -48,7 +48,6 @@
|
|||||||
#include "classic/avrcp_controller.h"
|
#include "classic/avrcp_controller.h"
|
||||||
|
|
||||||
// made public in avrcp_controller.h
|
// made public in avrcp_controller.h
|
||||||
avrcp_context_t avrcp_controller_context;
|
|
||||||
|
|
||||||
static int avrcp_controller_supports_browsing(uint16_t controller_supported_features){
|
static int avrcp_controller_supports_browsing(uint16_t controller_supported_features){
|
||||||
return controller_supported_features & (1 << AVRCP_CONTROLLER_SUPPORTED_FEATURE_BROWSING);
|
return controller_supported_features & (1 << AVRCP_CONTROLLER_SUPPORTED_FEATURE_BROWSING);
|
||||||
@ -953,7 +952,7 @@ void avrcp_controller_register_packet_handler(btstack_packet_handler_t callback)
|
|||||||
}
|
}
|
||||||
|
|
||||||
uint8_t avrcp_controller_connect(bd_addr_t bd_addr, uint16_t * avrcp_cid){
|
uint8_t avrcp_controller_connect(bd_addr_t bd_addr, uint16_t * avrcp_cid){
|
||||||
return avrcp_connect(bd_addr, &avrcp_controller_context, avrcp_cid);
|
return avrcp_connect(AVRCP_CONTROLLER, bd_addr, avrcp_cid);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t avrcp_controller_unit_info(uint16_t avrcp_cid){
|
uint8_t avrcp_controller_unit_info(uint16_t avrcp_cid){
|
||||||
|
@ -51,7 +51,6 @@
|
|||||||
static const uint8_t AVRCP_NOTIFICATION_TRACK_SELECTED[] = {0,0,0,0,0,0,0,0};
|
static const uint8_t AVRCP_NOTIFICATION_TRACK_SELECTED[] = {0,0,0,0,0,0,0,0};
|
||||||
static const uint8_t AVRCP_NOTIFICATION_TRACK_NOT_SELECTED[] = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};
|
static const uint8_t AVRCP_NOTIFICATION_TRACK_NOT_SELECTED[] = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};
|
||||||
|
|
||||||
avrcp_context_t avrcp_target_context;
|
|
||||||
|
|
||||||
static int avrcp_target_supports_browsing(uint16_t target_supported_features){
|
static int avrcp_target_supports_browsing(uint16_t target_supported_features){
|
||||||
return target_supported_features & (1 << AVRCP_TARGET_SUPPORTED_FEATURE_BROWSING);
|
return target_supported_features & (1 << AVRCP_TARGET_SUPPORTED_FEATURE_BROWSING);
|
||||||
@ -1292,7 +1291,7 @@ void avrcp_target_register_packet_handler(btstack_packet_handler_t callback){
|
|||||||
}
|
}
|
||||||
|
|
||||||
uint8_t avrcp_target_connect(bd_addr_t bd_addr, uint16_t * avrcp_cid){
|
uint8_t avrcp_target_connect(bd_addr_t bd_addr, uint16_t * avrcp_cid){
|
||||||
return avrcp_connect(bd_addr, &avrcp_target_context, avrcp_cid);
|
return avrcp_connect(AVRCP_TARGET, bd_addr, avrcp_cid);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t avrcp_target_disconnect(uint16_t avrcp_cid){
|
uint8_t avrcp_target_disconnect(uint16_t avrcp_cid){
|
||||||
|
Loading…
x
Reference in New Issue
Block a user