mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-01-26 21:35:16 +00:00
hci: sco rx tracking only for sco over hci
This commit is contained in:
parent
aa81e641ae
commit
6be3cf7f32
@ -2906,6 +2906,7 @@ static void event_handler(uint8_t *packet, uint16_t size){
|
|||||||
|
|
||||||
#ifdef ENABLE_CLASSIC
|
#ifdef ENABLE_CLASSIC
|
||||||
|
|
||||||
|
#ifdef ENABLE_SCO_OVER_HCI
|
||||||
static void sco_tx_timeout_handler(btstack_timer_source_t * ts);
|
static void sco_tx_timeout_handler(btstack_timer_source_t * ts);
|
||||||
static void sco_schedule_tx(hci_connection_t * conn);
|
static void sco_schedule_tx(hci_connection_t * conn);
|
||||||
|
|
||||||
@ -2941,6 +2942,7 @@ static void sco_schedule_tx(hci_connection_t * conn){
|
|||||||
btstack_run_loop_set_timer_handler(timer, &sco_tx_timeout_handler);
|
btstack_run_loop_set_timer_handler(timer, &sco_tx_timeout_handler);
|
||||||
btstack_run_loop_add_timer(timer);
|
btstack_run_loop_add_timer(timer);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static void sco_handler(uint8_t * packet, uint16_t size){
|
static void sco_handler(uint8_t * packet, uint16_t size){
|
||||||
// lookup connection struct
|
// lookup connection struct
|
||||||
@ -2948,6 +2950,7 @@ static void sco_handler(uint8_t * packet, uint16_t size){
|
|||||||
hci_connection_t * conn = hci_connection_for_handle(con_handle);
|
hci_connection_t * conn = hci_connection_for_handle(con_handle);
|
||||||
if (!conn) return;
|
if (!conn) return;
|
||||||
|
|
||||||
|
#ifdef ENABLE_SCO_OVER_HCI
|
||||||
// CSR 8811 prefixes 60 byte SCO packet in transparent mode with 20 zero bytes -> skip first 20 payload bytes
|
// CSR 8811 prefixes 60 byte SCO packet in transparent mode with 20 zero bytes -> skip first 20 payload bytes
|
||||||
if (hci_stack->manufacturer == BLUETOOTH_COMPANY_ID_CAMBRIDGE_SILICON_RADIO){
|
if (hci_stack->manufacturer == BLUETOOTH_COMPANY_ID_CAMBRIDGE_SILICON_RADIO){
|
||||||
if ((size == 83) && ((hci_stack->sco_voice_setting_active & 0x03) == 0x03)){
|
if ((size == 83) && ((hci_stack->sco_voice_setting_active & 0x03) == 0x03)){
|
||||||
@ -2988,6 +2991,8 @@ static void sco_handler(uint8_t * packet, uint16_t size){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// deliver to app
|
// deliver to app
|
||||||
if (hci_stack->sco_packet_handler) {
|
if (hci_stack->sco_packet_handler) {
|
||||||
hci_stack->sco_packet_handler(HCI_SCO_DATA_PACKET, 0, packet, size);
|
hci_stack->sco_packet_handler(HCI_SCO_DATA_PACKET, 0, packet, size);
|
||||||
|
@ -528,11 +528,12 @@ typedef struct {
|
|||||||
uint16_t sniff_attempt;
|
uint16_t sniff_attempt;
|
||||||
uint16_t sniff_timeout;
|
uint16_t sniff_timeout;
|
||||||
|
|
||||||
|
#ifdef ENABLE_SCO_OVER_HCI
|
||||||
// track SCO rx event
|
// track SCO rx event
|
||||||
uint32_t sco_rx_ms;
|
uint32_t sco_rx_ms;
|
||||||
uint8_t sco_rx_count;
|
uint8_t sco_rx_count;
|
||||||
uint8_t sco_rx_valid;
|
uint8_t sco_rx_valid;
|
||||||
|
#endif
|
||||||
// generate sco can send now based on received packets, using timeout below
|
// generate sco can send now based on received packets, using timeout below
|
||||||
uint8_t sco_tx_ready;
|
uint8_t sco_tx_ready;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user