mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-03-10 01:14:38 +00:00
avrcp: introduce enum for suported features
This commit is contained in:
parent
7f3f442d49
commit
1101489150
@ -235,7 +235,12 @@ static int a2dp_and_avrcp_setup(void){
|
||||
|
||||
// setup AVRCP
|
||||
memset(sdp_avrcp_controller_service_buffer, 0, sizeof(sdp_avrcp_controller_service_buffer));
|
||||
avrcp_controller_create_sdp_record(sdp_avrcp_controller_service_buffer, 0x10001, AVRCP_BROWSING_ENABLED, 1, NULL, NULL);
|
||||
|
||||
uint16_t supported_features = (1 << AVRCP_CONTROLLER_SUPPORTED_FEATURE_CATEGORY_PLAYER_OR_RECORDER);
|
||||
if (AVRCP_BROWSING_ENABLED) {
|
||||
supported_features |= (1 << AVRCP_CONTROLLER_SUPPORTED_FEATURE_BROWSING);
|
||||
}
|
||||
avrcp_controller_create_sdp_record(sdp_avrcp_controller_service_buffer, 0x10001, AVRCP_BROWSING_ENABLED, supported_features, NULL, NULL);
|
||||
sdp_register_service(sdp_avrcp_controller_service_buffer);
|
||||
|
||||
gap_set_local_name("A2DP Sink Demo 00:00:00:00:00:00");
|
||||
|
@ -166,7 +166,7 @@ static void avrcp_browsing_controller_packet_handler(uint8_t packet_type, uint16
|
||||
static void stdin_process(char cmd);
|
||||
#endif
|
||||
|
||||
#define BROWSING_ENABLED 1
|
||||
#define AVRCP_BROWSING_ENABLED 1
|
||||
|
||||
int btstack_main(int argc, const char * argv[]);
|
||||
int btstack_main(int argc, const char * argv[]){
|
||||
@ -189,7 +189,12 @@ int btstack_main(int argc, const char * argv[]){
|
||||
|
||||
// Create AVRCP service record and register it with SDP.
|
||||
memset(sdp_avrcp_browsing_controller_service_buffer, 0, sizeof(sdp_avrcp_browsing_controller_service_buffer));
|
||||
avrcp_controller_create_sdp_record(sdp_avrcp_browsing_controller_service_buffer, 0x10001, BROWSING_ENABLED, 1, NULL, NULL);
|
||||
|
||||
uint16_t supported_features = (1 << AVRCP_CONTROLLER_SUPPORTED_FEATURE_CATEGORY_PLAYER_OR_RECORDER);
|
||||
if (AVRCP_BROWSING_ENABLED) {
|
||||
supported_features |= (1 << AVRCP_CONTROLLER_SUPPORTED_FEATURE_BROWSING);
|
||||
}
|
||||
avrcp_controller_create_sdp_record(sdp_avrcp_browsing_controller_service_buffer, 0x10001, AVRCP_BROWSING_ENABLED, supported_features, NULL, NULL);
|
||||
sdp_register_service(sdp_avrcp_browsing_controller_service_buffer);
|
||||
|
||||
// Set local name with a template Bluetooth address, that will be automatically
|
||||
|
@ -50,8 +50,15 @@
|
||||
// made public in avrcp_controller.h
|
||||
avrcp_context_t avrcp_controller_context;
|
||||
|
||||
static int avrcp_controller_supports_browsing(uint16_t controller_supported_features){
|
||||
return controller_supported_features & (1 << AVRCP_CONTROLLER_SUPPORTED_FEATURE_BROWSING);
|
||||
}
|
||||
|
||||
void avrcp_controller_create_sdp_record(uint8_t * service, uint32_t service_record_handle, uint8_t browsing, uint16_t supported_features, const char * service_name, const char * service_provider_name){
|
||||
avrcp_create_sdp_record(1, service, service_record_handle, browsing, supported_features, service_name, service_provider_name);
|
||||
if (browsing){
|
||||
supported_features |= (1 << AVRCP_CONTROLLER_SUPPORTED_FEATURE_BROWSING);
|
||||
}
|
||||
avrcp_create_sdp_record(1, service, service_record_handle, avrcp_controller_supports_browsing(supported_features), supported_features, service_name, service_provider_name);
|
||||
}
|
||||
|
||||
static void avrcp_emit_repeat_and_shuffle_mode(btstack_packet_handler_t callback, uint16_t avrcp_cid, uint8_t ctype, avrcp_repeat_mode_t repeat_mode, avrcp_shuffle_mode_t shuffle_mode){
|
||||
|
@ -55,6 +55,17 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
/* API_START */
|
||||
|
||||
typedef enum {
|
||||
AVRCP_CONTROLLER_SUPPORTED_FEATURE_CATEGORY_PLAYER_OR_RECORDER = 0,
|
||||
AVRCP_CONTROLLER_SUPPORTED_FEATURE_CATEGORY_MONITOR_OR_AMPLIFIER,
|
||||
AVRCP_CONTROLLER_SUPPORTED_FEATURE_CATEGORY_TUNER,
|
||||
AVRCP_CONTROLLER_SUPPORTED_FEATURE_CATEGORY_MENU,
|
||||
AVRCP_CONTROLLER_SUPPORTED_FEATURE_RESERVED_4,
|
||||
AVRCP_CONTROLLER_SUPPORTED_FEATURE_RESERVED_5,
|
||||
AVRCP_CONTROLLER_SUPPORTED_FEATURE_BROWSING
|
||||
} avrcp_controller_supported_feature_t;
|
||||
|
||||
/**
|
||||
* @brief AVRCP Controller service record.
|
||||
* @param service
|
||||
|
@ -53,8 +53,15 @@ static const uint8_t AVRCP_NOTIFICATION_TRACK_NOT_SELECTED[] = {0xFF,0xFF,0xFF,0
|
||||
|
||||
avrcp_context_t avrcp_target_context;
|
||||
|
||||
static int avrcp_target_supports_browsing(uint16_t target_supported_features){
|
||||
return target_supported_features & (1 << AVRCP_TARGET_SUPPORTED_FEATURE_BROWSING);
|
||||
}
|
||||
|
||||
void avrcp_target_create_sdp_record(uint8_t * service, uint32_t service_record_handle, uint8_t browsing, uint16_t supported_features, const char * service_name, const char * service_provider_name){
|
||||
avrcp_create_sdp_record(0, service, service_record_handle, browsing, supported_features, service_name, service_provider_name);
|
||||
if (browsing){
|
||||
supported_features |= (1 << AVRCP_TARGET_SUPPORTED_FEATURE_BROWSING);
|
||||
}
|
||||
avrcp_create_sdp_record(0, service, service_record_handle, avrcp_target_supports_browsing(supported_features), supported_features, service_name, service_provider_name);
|
||||
}
|
||||
|
||||
static void avrcp_target_emit_operation(btstack_packet_handler_t callback, uint16_t avrcp_cid, avrcp_operation_id_t operation_id, uint8_t operands_length, uint8_t operand){
|
||||
|
@ -54,6 +54,16 @@ extern "C" {
|
||||
|
||||
/* API_START */
|
||||
|
||||
typedef enum {
|
||||
AVRCP_TARGET_SUPPORTED_FEATURE_CATEGORY_PLAYER_OR_RECORDER = 0,
|
||||
AVRCP_TARGET_SUPPORTED_FEATURE_CATEGORY_MONITOR_OR_AMPLIFIER,
|
||||
AVRCP_TARGET_SUPPORTED_FEATURE_CATEGORY_TUNER,
|
||||
AVRCP_TARGET_SUPPORTED_FEATURE_CATEGORY_MENU,
|
||||
AVRCP_TARGET_SUPPORTED_FEATURE_PLAYER_APPLICATION_SETTINGS, // AVRCP_TARGET_SUPPORTED_FEATURE_CATEGORY_PLAYER_OR_RECORDER must be 1 for this feature to be set
|
||||
AVRCP_TARGET_SUPPORTED_FEATURE_RESERVED_GROUP_NAVIGATION, // AVRCP_TARGET_SUPPORTED_FEATURE_CATEGORY_PLAYER_OR_RECORDER must be 1 for this feature to be set
|
||||
AVRCP_TARGET_SUPPORTED_FEATURE_BROWSING,
|
||||
AVRCP_TARGET_SUPPORTED_FEATURE_MULTIPLE_MEDIA_PLAYE_APPLICATIONS
|
||||
} avrcp_target_supported_feature_t;
|
||||
|
||||
/**
|
||||
* @brief AVRCP Target service record.
|
||||
|
@ -352,7 +352,12 @@ int btstack_main(int argc, const char * argv[]){
|
||||
// Initialize SDP
|
||||
sdp_init();
|
||||
memset(sdp_avrcp_controller_service_buffer, 0, sizeof(sdp_avrcp_controller_service_buffer));
|
||||
avrcp_controller_create_sdp_record(sdp_avrcp_controller_service_buffer, 0x10001, AVRCP_BROWSING_ENABLED, 1, NULL, NULL);
|
||||
|
||||
uint16_t supported_features = (1 << AVRCP_CONTROLLER_SUPPORTED_FEATURE_CATEGORY_PLAYER_OR_RECORDER);
|
||||
if (AVRCP_BROWSING_ENABLED) {
|
||||
supported_features |= (1 << AVRCP_CONTROLLER_SUPPORTED_FEATURE_BROWSING);
|
||||
}
|
||||
avrcp_controller_create_sdp_record(sdp_avrcp_controller_service_buffer, 0x10001, AVRCP_BROWSING_ENABLED, supported_features, NULL, NULL);
|
||||
sdp_register_service(sdp_avrcp_controller_service_buffer);
|
||||
|
||||
gap_set_local_name("BTstack AVRCP Test");
|
||||
|
@ -1148,7 +1148,12 @@ int btstack_main(int argc, const char * argv[]){
|
||||
|
||||
// setup AVRCP
|
||||
memset(sdp_avrcp_controller_service_buffer, 0, sizeof(sdp_avrcp_controller_service_buffer));
|
||||
avrcp_controller_create_sdp_record(sdp_avrcp_controller_service_buffer, 0x10001, AVRCP_BROWSING_ENABLED, 1, NULL, NULL);
|
||||
|
||||
uint16_t supported_features = (1 << AVRCP_CONTROLLER_SUPPORTED_FEATURE_CATEGORY_PLAYER_OR_RECORDER);
|
||||
if (AVRCP_BROWSING_ENABLED) {
|
||||
supported_features |= (1 << AVRCP_CONTROLLER_SUPPORTED_FEATURE_BROWSING);
|
||||
}
|
||||
avrcp_controller_create_sdp_record(sdp_avrcp_controller_service_buffer, 0x10001, AVRCP_BROWSING_ENABLED, supported_features, NULL, NULL);
|
||||
sdp_register_service(sdp_avrcp_controller_service_buffer);
|
||||
|
||||
gap_set_local_name("BTstack AVRCP Controller PTS 00:00:00:00:00:00");
|
||||
|
@ -859,7 +859,12 @@ int btstack_main(int argc, const char * argv[]){
|
||||
|
||||
// Create AVRCP target service record and register it with SDP.
|
||||
memset(sdp_avrcp_target_service_buffer, 0, sizeof(sdp_avrcp_target_service_buffer));
|
||||
avrcp_target_create_sdp_record(sdp_avrcp_target_service_buffer, 0x10001, AVRCP_BROWSING_ENABLED, 1, NULL, NULL);
|
||||
|
||||
uint16_t supported_features = (1 << AVRCP_TARGET_SUPPORTED_FEATURE_CATEGORY_PLAYER_OR_RECORDER);
|
||||
if (AVRCP_BROWSING_ENABLED) {
|
||||
supported_features |= (1 << AVRCP_TARGET_SUPPORTED_FEATURE_BROWSING);
|
||||
}
|
||||
avrcp_target_create_sdp_record(sdp_avrcp_target_service_buffer, 0x10001, AVRCP_BROWSING_ENABLED, supported_features, NULL, NULL);
|
||||
sdp_register_service(sdp_avrcp_target_service_buffer);
|
||||
|
||||
// Set local name with a template Bluetooth address, that will be automatically
|
||||
|
@ -130,13 +130,21 @@ int btstack_main(int argc, const char * argv[]){
|
||||
a2dp_sink_create_sdp_record(a2dp_sink_service_buffer, 0x10007, 1, NULL, NULL);
|
||||
sdp_register_service(a2dp_sink_service_buffer);
|
||||
|
||||
avrcp_controller_create_sdp_record(avrcp_controller_service_buffer, 0x10008, AVRCP_BROWSING_ENABLED, 1, NULL, NULL);
|
||||
uint16_t controller_supported_features = (1 << AVRCP_CONTROLLER_SUPPORTED_FEATURE_CATEGORY_PLAYER_OR_RECORDER);
|
||||
if (AVRCP_BROWSING_ENABLED) {
|
||||
controller_supported_features |= (1 << AVRCP_CONTROLLER_SUPPORTED_FEATURE_BROWSING);
|
||||
}
|
||||
avrcp_controller_create_sdp_record(avrcp_controller_service_buffer, 0x10008, AVRCP_BROWSING_ENABLED, controller_supported_features, NULL, NULL);
|
||||
sdp_register_service(avrcp_controller_service_buffer);
|
||||
|
||||
a2dp_source_create_sdp_record(a2dp_source_service_buffer, 0x10009, 1, NULL, NULL);
|
||||
sdp_register_service(a2dp_source_service_buffer);
|
||||
|
||||
avrcp_target_create_sdp_record(avrcp_target_service_buffer, 0x1000a, AVRCP_BROWSING_ENABLED, 1, NULL, NULL);
|
||||
|
||||
uint16_t target_supported_features = (1 << AVRCP_TARGET_SUPPORTED_FEATURE_CATEGORY_PLAYER_OR_RECORDER);
|
||||
if (AVRCP_BROWSING_ENABLED) {
|
||||
target_supported_features |= (1 << AVRCP_TARGET_SUPPORTED_FEATURE_BROWSING);
|
||||
}
|
||||
avrcp_target_create_sdp_record(avrcp_target_service_buffer, 0x1000a, AVRCP_BROWSING_ENABLED, target_supported_features, NULL, NULL);
|
||||
sdp_register_service(avrcp_target_service_buffer);
|
||||
|
||||
// set CoD for all this
|
||||
|
Loading…
x
Reference in New Issue
Block a user