diff --git a/components/bt/controller/esp32/bt.c b/components/bt/controller/esp32/bt.c index b9d1a31746..5ae52afe5e 100644 --- a/components/bt/controller/esp32/bt.c +++ b/components/bt/controller/esp32/bt.c @@ -89,7 +89,7 @@ do{\ } while(0) #define OSI_FUNCS_TIME_BLOCKING 0xffffffff -#define OSI_VERSION 0x00010003 +#define OSI_VERSION 0x00010004 #define OSI_MAGIC_VALUE 0xFADEBEAD /* Types definition @@ -176,6 +176,7 @@ struct osi_funcs_t { void (*_interrupt_l3_disable)(void); void (*_interrupt_l3_restore)(void); void *(* _customer_queue_create)(uint32_t queue_len, uint32_t item_size); + int (* _coex_version_get)(unsigned int *major, unsigned int *minor, unsigned int *patch); uint32_t _magic; }; @@ -320,6 +321,7 @@ static uint8_t coex_schm_curr_period_get_wrapper(void); static void * coex_schm_curr_phase_get_wrapper(void); static int coex_wifi_channel_get_wrapper(uint8_t *primary, uint8_t *secondary); static int coex_register_wifi_channel_change_callback_wrapper(void *cb); +static int coex_version_get_wrapper(unsigned int *major, unsigned int *minor, unsigned int *patch); #if CONFIG_BTDM_CTRL_HLI static void *customer_queue_create_hlevel_wrapper(uint32_t queue_len, uint32_t item_size); #endif /* CONFIG_BTDM_CTRL_HLI */ @@ -412,6 +414,7 @@ static const struct osi_funcs_t osi_funcs_ro = { #else ._customer_queue_create = NULL, #endif /* CONFIG_BTDM_CTRL_HLI */ + ._coex_version_get = coex_version_get_wrapper, ._magic = OSI_MAGIC_VALUE, }; @@ -1230,6 +1233,30 @@ static int coex_register_wifi_channel_change_callback_wrapper(void *cb) #endif } +static int coex_version_get_wrapper(unsigned int *major, unsigned int *minor, unsigned int *patch) +{ +#if CONFIG_SW_COEXIST_ENABLE + const char *ver_str = esp_coex_version_get(); + if (ver_str != NULL) { + unsigned int _major = 0, _minor = 0, _patch = 0; + if (sscanf(ver_str, "%u.%u.%u", &_major, &_minor, &_patch) != 3) { + return -1; + } + if (major != NULL) { + *major = _major; + } + if (minor != NULL) { + *minor = _minor; + } + if (patch != NULL) { + *patch = _patch; + } + return 0; + } +#endif + return -1; +} + bool esp_vhci_host_check_send_available(void) { return API_vhci_host_check_send_available(); diff --git a/components/bt/controller/lib_esp32 b/components/bt/controller/lib_esp32 index f18eabd48c..8ce6d27e09 160000 --- a/components/bt/controller/lib_esp32 +++ b/components/bt/controller/lib_esp32 @@ -1 +1 @@ -Subproject commit f18eabd48cb91d779e56e985512bf210741aa700 +Subproject commit 8ce6d27e0981c09e1c5a982976f182d0a37662f6