1414
1515#include <zephyr/bluetooth/classic/a2dp_codec_sbc.h>
1616#include <zephyr/bluetooth/classic/a2dp.h>
17-
17+ #include <zephyr/bluetooth/sbc.h>
1818
1919uint8_t bt_a2dp_sbc_get_channel_num (struct bt_a2dp_codec_sbc_params * sbc_codec )
2020{
@@ -33,6 +33,23 @@ uint8_t bt_a2dp_sbc_get_channel_num(struct bt_a2dp_codec_sbc_params *sbc_codec)
3333 }
3434}
3535
36+ enum sbc_ch_mode bt_a2dp_sbc_get_channel_mode (struct bt_a2dp_codec_sbc_params * sbc_codec )
37+ {
38+ __ASSERT_NO_MSG (sbc_codec != NULL );
39+
40+ if (sbc_codec -> config [0 ] & A2DP_SBC_CH_MODE_MONO ) {
41+ return SBC_CH_MODE_MONO ;
42+ } else if (sbc_codec -> config [0 ] & A2DP_SBC_CH_MODE_DUAL ) {
43+ return SBC_CH_MODE_DUAL_CHANNEL ;
44+ } else if (sbc_codec -> config [0 ] & A2DP_SBC_CH_MODE_STEREO ) {
45+ return SBC_CH_MODE_STEREO ;
46+ } else if (sbc_codec -> config [0 ] & A2DP_SBC_CH_MODE_JOINT ) {
47+ return SBC_CH_MODE_JOINT_STEREO ;
48+ } else {
49+ return SBC_CH_MODE_MONO ;
50+ }
51+ }
52+
3653uint32_t bt_a2dp_sbc_get_sampling_frequency (struct bt_a2dp_codec_sbc_params * sbc_codec )
3754{
3855 __ASSERT_NO_MSG (sbc_codec != NULL );
@@ -49,3 +66,44 @@ uint32_t bt_a2dp_sbc_get_sampling_frequency(struct bt_a2dp_codec_sbc_params *sbc
4966 return 0U ;
5067 }
5168}
69+
70+ uint8_t bt_a2dp_sbc_get_subband_num (struct bt_a2dp_codec_sbc_params * sbc_codec )
71+ {
72+ __ASSERT_NO_MSG (sbc_codec != NULL );
73+
74+ if (sbc_codec -> config [1 ] & A2DP_SBC_SUBBAND_4 ) {
75+ return 4U ;
76+ } else if (sbc_codec -> config [1 ] & A2DP_SBC_SUBBAND_8 ) {
77+ return 8U ;
78+ } else {
79+ return 0U ;
80+ }
81+ }
82+
83+ uint8_t bt_a2dp_sbc_get_block_length (struct bt_a2dp_codec_sbc_params * sbc_codec )
84+ {
85+ __ASSERT_NO_MSG (sbc_codec != NULL );
86+
87+ if (sbc_codec -> config [1 ] & A2DP_SBC_BLK_LEN_4 ) {
88+ return 4U ;
89+ } else if (sbc_codec -> config [1 ] & A2DP_SBC_BLK_LEN_8 ) {
90+ return 8U ;
91+ } else if (sbc_codec -> config [1 ] & A2DP_SBC_BLK_LEN_12 ) {
92+ return 12U ;
93+ } else if (sbc_codec -> config [1 ] & A2DP_SBC_BLK_LEN_16 ) {
94+ return 16U ;
95+ } else {
96+ return 0U ;
97+ }
98+ }
99+
100+ enum sbc_alloc_mthd bt_a2dp_sbc_get_allocation_method (struct bt_a2dp_codec_sbc_params * sbc_codec )
101+ {
102+ __ASSERT_NO_MSG (sbc_codec != NULL );
103+
104+ if (sbc_codec -> config [1 ] & A2DP_SBC_ALLOC_MTHD_SNR ) {
105+ return SBC_ALLOC_MTHD_SNR ;
106+ } else {
107+ return SBC_ALLOC_MTHD_LOUDNESS ;
108+ }
109+ }
0 commit comments