@@ -780,10 +780,50 @@ static void configure_pacs_char(const struct bt_bap_pacs_register_param *param)
780
780
pacs_svc .attr_count -= attrs_to_rem ;
781
781
}
782
782
783
+ static bool valid_pacs_register_param (const struct bt_bap_pacs_register_param * param )
784
+ {
785
+ bool any_pac_registered = false;
786
+
787
+ if (param == NULL ) {
788
+ LOG_DBG ("param is NULL" );
789
+ return false;
790
+ }
791
+
792
+ #if defined(CONFIG_BT_PAC_SNK )
793
+ any_pac_registered |= param -> snk_pac ;
794
+ #endif /* CONFIG_BT_PAC_SNK */
795
+ #if defined(CONFIG_BT_PAC_SNK_LOC )
796
+ if (param -> snk_loc && !param -> snk_pac ) {
797
+ LOG_DBG ("Cannot register snk_loc without snk_pac" );
798
+ return false;
799
+ }
800
+ #endif /* CONFIG_BT_PAC_SNK_LOC */
801
+ #if defined(CONFIG_BT_PAC_SRC )
802
+ any_pac_registered |= param -> src_pac ;
803
+ #endif /* CONFIG_BT_PAC_SRC */
804
+ #if defined(CONFIG_BT_PAC_SRC_LOC )
805
+ if (param -> src_loc && !param -> src_pac ) {
806
+ LOG_DBG ("Cannot register src_loc without src_pac" );
807
+ return false;
808
+ }
809
+ #endif /* CONFIG_BT_PAC_SRC_LOC */
810
+
811
+ if (!any_pac_registered ) {
812
+ LOG_DBG ("Neither snk_pac or src_pac registered" );
813
+ return false;
814
+ }
815
+
816
+ return true;
817
+ }
818
+
783
819
int bt_pacs_register (const struct bt_bap_pacs_register_param * param )
784
820
{
785
821
int err = 0 ;
786
822
823
+ if (!valid_pacs_register_param (param )) {
824
+ return - EINVAL ;
825
+ }
826
+
787
827
if (atomic_test_and_set_bit (pacs .flags , PACS_FLAG_REGISTERED )) {
788
828
LOG_DBG ("PACS already registered" );
789
829
@@ -809,10 +849,10 @@ int bt_pacs_register(const struct bt_bap_pacs_register_param *param)
809
849
810
850
err = bt_gatt_service_register (& pacs_svc );
811
851
if (err != 0 ) {
812
- LOG_DBG ("Failed to register ASCS in gatt DB" );
852
+ LOG_DBG ("Failed to register ASCS in gatt DB: %d" , err );
813
853
atomic_clear_bit (pacs .flags , PACS_FLAG_REGISTERED );
814
854
815
- return err ;
855
+ return - ENOEXEC ;
816
856
}
817
857
818
858
return 0 ;
0 commit comments