avrcp: use defines instead of enum for features

This commit is contained in:
Milanka Ringwald 2020-07-23 00:16:07 +02:00
parent 722c03bd82
commit e2f2541787
13 changed files with 40 additions and 30 deletions

View File

@ -17,6 +17,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
- GAP: Detect Secure Connection -> Legacy Connection Downgrade Attack by remote features and actual encryption type (BIAS)
- GAP: Mutual authentication: request authentication after Classic connection got encrypted (BIAS)
- Windows port for Dialog DA14585 connected via serial port
- AVRCP: introduced AVRCP_FEATURE_MASK_* as alternative to avrcp_controller_supported_feature_t and avrcp_target_supported_feature_t enums
### Changed
- CVSD PLC: treat zero frames as good and allow to mark data as bad, e.g. if reported by controller as erroneous

View File

@ -265,16 +265,16 @@ static int a2dp_and_avrcp_setup(void){
// setup AVRCP Controller
memset(sdp_avrcp_controller_service_buffer, 0, sizeof(sdp_avrcp_controller_service_buffer));
uint16_t controller_supported_features = (1 << AVRCP_CONTROLLER_SUPPORTED_FEATURE_CATEGORY_PLAYER_OR_RECORDER);
uint16_t controller_supported_features = AVRCP_FEATURE_MASK_CATEGORY_PLAYER_OR_RECORDER;
#ifdef AVRCP_BROWSING_ENABLED
controller_supported_features |= (1 << AVRCP_CONTROLLER_SUPPORTED_FEATURE_BROWSING);
controller_supported_features |= AVRCP_FEATURE_MASK_BROWSING;
#endif
avrcp_controller_create_sdp_record(sdp_avrcp_controller_service_buffer, 0x10002, controller_supported_features, NULL, NULL);
sdp_register_service(sdp_avrcp_controller_service_buffer);
// setup AVRCP Target
memset(sdp_avrcp_target_service_buffer, 0, sizeof(sdp_avrcp_target_service_buffer));
uint16_t target_supported_features = (1 << AVRCP_TARGET_SUPPORTED_FEATURE_CATEGORY_MONITOR_OR_AMPLIFIER);
uint16_t target_supported_features = AVRCP_FEATURE_MASK_CATEGORY_MONITOR_OR_AMPLIFIER;
avrcp_target_create_sdp_record(sdp_avrcp_target_service_buffer, 0x10003, target_supported_features, NULL, NULL);
sdp_register_service(sdp_avrcp_target_service_buffer);

View File

@ -309,16 +309,16 @@ static int a2dp_source_and_avrcp_services_init(void){
// Create AVRCP target service record and register it with SDP.
memset(sdp_avrcp_target_service_buffer, 0, sizeof(sdp_avrcp_target_service_buffer));
uint16_t supported_features = (1 << AVRCP_TARGET_SUPPORTED_FEATURE_CATEGORY_PLAYER_OR_RECORDER);
uint16_t supported_features = AVRCP_FEATURE_MASK_CATEGORY_PLAYER_OR_RECORDER;
#ifdef AVRCP_BROWSING_ENABLED
supported_features |= (1 << AVRCP_TARGET_SUPPORTED_FEATURE_BROWSING);
supported_features |= AVRCP_FEATURE_MASK_BROWSING;
#endif
avrcp_target_create_sdp_record(sdp_avrcp_target_service_buffer, 0x10002, supported_features, NULL, NULL);
sdp_register_service(sdp_avrcp_target_service_buffer);
// setup AVRCP Controller
memset(sdp_avrcp_controller_service_buffer, 0, sizeof(sdp_avrcp_controller_service_buffer));
uint16_t controller_supported_features = (1 << AVRCP_CONTROLLER_SUPPORTED_FEATURE_CATEGORY_PLAYER_OR_RECORDER);
uint16_t controller_supported_features = AVRCP_FEATURE_MASK_CATEGORY_PLAYER_OR_RECORDER;
avrcp_controller_create_sdp_record(sdp_avrcp_controller_service_buffer, 0x10003, controller_supported_features, NULL, NULL);
sdp_register_service(sdp_avrcp_controller_service_buffer);

View File

@ -206,9 +206,9 @@ 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));
uint16_t supported_features = (1 << AVRCP_CONTROLLER_SUPPORTED_FEATURE_CATEGORY_PLAYER_OR_RECORDER);
uint16_t supported_features = AVRCP_FEATURE_MASK_CATEGORY_PLAYER_OR_RECORDER;
#ifdef AVRCP_BROWSING_ENABLED
supported_features |= (1 << AVRCP_CONTROLLER_SUPPORTED_FEATURE_BROWSING);
supported_features |= AVRCP_FEATURE_MASK_BROWSING;
#endif
avrcp_controller_create_sdp_record(sdp_avrcp_browsing_controller_service_buffer, 0x10001, supported_features, NULL, NULL);
sdp_register_service(sdp_avrcp_browsing_controller_service_buffer);

View File

@ -63,15 +63,15 @@ extern "C" {
#define AVDTP_MAX_CONTENT_PROTECTION_TYPE_VALUE_LEN 10
// Supported Features
#define AVDTP_SOURCE_SF_PLAYER 0x0001
#define AVDTP_SOURCE_SF_MICROPHONE 0x0002
#define AVDTP_SOURCE_SF_TUNER 0x0004
#define AVDTP_SOURCE_SF_MIXER 0x0008
#define AVDTP_SOURCE_SF_PLAYER 0x0001u
#define AVDTP_SOURCE_SF_MICROPHONE 0x0002u
#define AVDTP_SOURCE_SF_TUNER 0x0004u
#define AVDTP_SOURCE_SF_MIXER 0x0008u
#define AVDTP_SINK_SF_HEADPHONE 0x0001
#define AVDTP_SINK_SF_SPEAKER 0x0002
#define AVDTP_SINK_SF_RECORDER 0x0004
#define AVDTP_SINK_SF_AMPLIFIER 0x0008
#define AVDTP_SINK_SF_HEADPHONE 0x0001u
#define AVDTP_SINK_SF_SPEAKER 0x0002u
#define AVDTP_SINK_SF_RECORDER 0x0004u
#define AVDTP_SINK_SF_AMPLIFIER 0x0008u
// ACP to INT, Signal Response Header Error Codes
#define BAD_HEADER_FORMAT 0x01

View File

@ -68,6 +68,15 @@ extern "C" {
#define AVRCP_NO_TRACK_SELECTED_PLAYBACK_POSITION_CHANGED 0xFFFFFFFF
#define AVRCP_FEATURE_MASK_CATEGORY_PLAYER_OR_RECORDER 0x0001u
#define AVRCP_FEATURE_MASK_CATEGORY_MONITOR_OR_AMPLIFIER 0x0002u
#define AVRCP_FEATURE_MASK_CATEGORY_TUNER 0x0004u
#define AVRCP_FEATURE_MASK_CATEGORY_MENU 0x0008u
#define AVRCP_FEATURE_MASK_PLAYER_APPLICATION_SETTINGS 0x0010u // AVRCP_FEATURE_MASK_CATEGORY_PLAYER_OR_RECORDER must be 1 for this feature to be set
#define AVRCP_FEATURE_MASK_GROUP_NAVIGATION 0x0020u // AVRCP_FEATURE_MASK_CATEGORY_PLAYER_OR_RECORDER must be 1 for this feature to be set
#define AVRCP_FEATURE_MASK_BROWSING 0x0040u
#define AVRCP_FEATURE_MASK_MULTIPLE_MEDIA_PLAYE_APPLICATIONS 0x0080u
typedef enum {
AVRCP_STATUS_INVALID_COMMAND = 0, // sent if TG received a PDU that it did not understand.
AVRCP_STATUS_INVALID_PARAMETER, // Sent if the TG received a PDU with a parameter ID that it did not understand, or, if there is only one parameter ID in the PDU.

View File

@ -49,7 +49,7 @@
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);
return controller_supported_features & AVRCP_FEATURE_MASK_BROWSING;
}
void avrcp_controller_create_sdp_record(uint8_t * service, uint32_t service_record_handle, uint16_t supported_features, const char * service_name, const char * service_provider_name){

View File

@ -70,7 +70,7 @@ typedef enum {
* @brief AVRCP Controller service record.
* @param service
* @param service_record_handle
* @param supported_features 16-bit bitmap, see avrcp_controller_supported_feature_t
* @param supported_features 16-bit bitmap, see AVRCP_FEATURE_MASK_* in avrcp.h
* @param service_name
* @param service_provider_name
*/

View File

@ -52,7 +52,7 @@ 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);
return target_supported_features & AVRCP_FEATURE_MASK_BROWSING;
}
void avrcp_target_create_sdp_record(uint8_t * service, uint32_t service_record_handle, uint16_t supported_features, const char * service_name, const char * service_provider_name){

View File

@ -69,7 +69,7 @@ typedef enum {
* @brief AVRCP Target service record.
* @param service
* @param service_record_handle
* @param supported_features 16-bit bitmap, see avrcp_target_supported_feature_t
* @param supported_features 16-bit bitmap, see AVRCP_FEATURE_MASK_* in avrcp.h
* @param service_name
* @param service_provider_name
*/

View File

@ -357,9 +357,9 @@ int btstack_main(int argc, const char * argv[]){
sdp_init();
memset(sdp_avrcp_controller_service_buffer, 0, sizeof(sdp_avrcp_controller_service_buffer));
uint16_t supported_features = (1 << AVRCP_CONTROLLER_SUPPORTED_FEATURE_CATEGORY_PLAYER_OR_RECORDER);
uint16_t supported_features = AVRCP_FEATURE_MASK_CATEGORY_PLAYER_OR_RECORDER;
#ifdef AVRCP_BROWSING_ENABLED
supported_features |= (1 << AVRCP_CONTROLLER_SUPPORTED_FEATURE_BROWSING);
supported_features |= AVRCP_FEATURE_MASK_BROWSING;
#endif
avrcp_controller_create_sdp_record(sdp_avrcp_controller_service_buffer, 0x10001, supported_features, NULL, NULL);
sdp_register_service(sdp_avrcp_controller_service_buffer);

View File

@ -1848,11 +1848,11 @@ int btstack_main(int argc, const char * argv[]){
sdp_register_service(sdp_avdtp_source_service_buffer);
// setup AVRCP
uint16_t avrcp_controller_supported_features = (1 << AVRCP_CONTROLLER_SUPPORTED_FEATURE_CATEGORY_PLAYER_OR_RECORDER);
uint16_t avrcp_target_supported_features = (1 << AVRCP_TARGET_SUPPORTED_FEATURE_CATEGORY_PLAYER_OR_RECORDER);
uint16_t avrcp_controller_supported_features = AVRCP_FEATURE_MASK_CATEGORY_PLAYER_OR_RECORDER;
uint16_t avrcp_target_supported_features = AVRCP_FEATURE_MASK_CATEGORY_PLAYER_OR_RECORDER;
#ifdef AVRCP_BROWSING_ENABLED
avrcp_controller_supported_features |= (1 << AVRCP_CONTROLLER_SUPPORTED_FEATURE_BROWSING);
avrcp_target_supported_features |= (1 << AVRCP_TARGET_SUPPORTED_FEATURE_BROWSING);
avrcp_controller_supported_features |= AVRCP_FEATURE_MASK_BROWSING;
avrcp_target_supported_features |= AVRCP_FEATURE_MASK_BROWSING;
#endif
memset(sdp_avrcp_controller_service_buffer, 0, sizeof(sdp_avrcp_controller_service_buffer));
avrcp_controller_create_sdp_record(sdp_avrcp_controller_service_buffer, 0x10003, avrcp_controller_supported_features, NULL, NULL);

View File

@ -131,9 +131,9 @@ 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);
uint16_t controller_supported_features = (1 << AVRCP_CONTROLLER_SUPPORTED_FEATURE_CATEGORY_PLAYER_OR_RECORDER);
uint16_t controller_supported_features = AVRCP_FEATURE_MASK_CATEGORY_PLAYER_OR_RECORDER;
#ifdef AVRCP_BROWSING_ENABLED
controller_supported_features |= (1 << AVRCP_CONTROLLER_SUPPORTED_FEATURE_BROWSING);
controller_supported_features |= AVRCP_FEATURE_MASK_BROWSING;
#endif
avrcp_controller_create_sdp_record(avrcp_controller_service_buffer, 0x10008, controller_supported_features, NULL, NULL);
sdp_register_service(avrcp_controller_service_buffer);
@ -141,9 +141,9 @@ int btstack_main(int argc, const char * argv[]){
a2dp_source_create_sdp_record(a2dp_source_service_buffer, 0x10009, 1, NULL, NULL);
sdp_register_service(a2dp_source_service_buffer);
uint16_t target_supported_features = (1 << AVRCP_TARGET_SUPPORTED_FEATURE_CATEGORY_PLAYER_OR_RECORDER);
uint16_t target_supported_features = AVRCP_FEATURE_MASK_CATEGORY_PLAYER_OR_RECORDER;
#ifdef AVRCP_BROWSING_ENABLED
target_supported_features |= (1 << AVRCP_CONTROLLER_SUPPORTED_FEATURE_BROWSING);
target_supported_features |= AVRCP_FEATURE_MASK_BROWSING;
#endif
avrcp_target_create_sdp_record(avrcp_target_service_buffer, 0x1000a, target_supported_features, NULL, NULL);
sdp_register_service(avrcp_target_service_buffer);