mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-03-30 07:21:20 +00:00
sco_util: fallback to CVSD if no codec has been negotiated
This commit is contained in:
parent
5fff3cef91
commit
d76591ef8d
@ -93,7 +93,7 @@ static int dump_data = 1;
|
|||||||
static int phase = 0;
|
static int phase = 0;
|
||||||
static int count_sent = 0;
|
static int count_sent = 0;
|
||||||
static int count_received = 0;
|
static int count_received = 0;
|
||||||
static uint8_t negotiated_codec = HFP_CODEC_CVSD;
|
static uint8_t negotiated_codec = 0;
|
||||||
static int num_audio_frames = 0;
|
static int num_audio_frames = 0;
|
||||||
|
|
||||||
FILE * msbc_file;
|
FILE * msbc_file;
|
||||||
@ -384,10 +384,19 @@ static void sco_report(void){
|
|||||||
printf("SCO: sent %u, received %u\n", count_sent, count_received);
|
printf("SCO: sent %u, received %u\n", count_sent, count_received);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void sco_assert_codec_set(void){
|
||||||
|
// if SCO is open but we didn't hear about the codec yet, we fall back to CVSD
|
||||||
|
if (!negotiated_codec){
|
||||||
|
sco_demo_set_codec(HFP_CODEC_CVSD);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void sco_demo_send(hci_con_handle_t sco_handle){
|
void sco_demo_send(hci_con_handle_t sco_handle){
|
||||||
|
|
||||||
if (!sco_handle) return;
|
if (!sco_handle) return;
|
||||||
|
|
||||||
|
sco_assert_codec_set();
|
||||||
|
|
||||||
const int sco_packet_length = 24 + 3; // hci_get_sco_packet_length();
|
const int sco_packet_length = 24 + 3; // hci_get_sco_packet_length();
|
||||||
const int sco_payload_length = sco_packet_length - 3;
|
const int sco_payload_length = sco_packet_length - 3;
|
||||||
|
|
||||||
@ -406,7 +415,10 @@ void sco_demo_send(hci_con_handle_t sco_handle){
|
|||||||
log_error("mSBC stream is empty.");
|
log_error("mSBC stream is empty.");
|
||||||
}
|
}
|
||||||
hfp_msbc_read_from_stream(sco_packet + 3, sco_payload_length);
|
hfp_msbc_read_from_stream(sco_packet + 3, sco_payload_length);
|
||||||
fwrite(sco_packet + 3, sco_payload_length, 1, msbc_file);
|
if (msbc_file){
|
||||||
|
// log outgoing mSBC data for testing
|
||||||
|
fwrite(sco_packet + 3, sco_payload_length, 1, msbc_file);
|
||||||
|
}
|
||||||
|
|
||||||
sco_demo_fill_audio_frame();
|
sco_demo_fill_audio_frame();
|
||||||
} else {
|
} else {
|
||||||
@ -438,12 +450,12 @@ void sco_demo_send(hci_con_handle_t sco_handle){
|
|||||||
if ((count_sent % SCO_REPORT_PERIOD) == 0) sco_report();
|
if ((count_sent % SCO_REPORT_PERIOD) == 0) sco_report();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Process received data
|
* @brief Process received data
|
||||||
*/
|
*/
|
||||||
void sco_demo_receive(uint8_t * packet, uint16_t size){
|
void sco_demo_receive(uint8_t * packet, uint16_t size){
|
||||||
|
|
||||||
|
sco_assert_codec_set();
|
||||||
|
|
||||||
dump_data = 1;
|
dump_data = 1;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user