forked from espressif/esp-idf
Merge branch 'feat/calibrate_bus_latency' into 'master'
feat(openthread/br): calibrate bus latency Closes TZ-1455 See merge request espressif/esp-idf!38529
This commit is contained in:
@@ -400,6 +400,12 @@ menu "OpenThread"
|
||||
help
|
||||
The device's XTAL accuracy, in ppm.
|
||||
|
||||
config OPENTHREAD_BUS_LATENCY
|
||||
int "The bus latency between host and radio chip"
|
||||
default 4000
|
||||
help
|
||||
The device's bus latency, in us.
|
||||
|
||||
config OPENTHREAD_MLE_MAX_CHILDREN
|
||||
int "The size of max MLE children entries"
|
||||
default 10
|
||||
|
@@ -44,6 +44,14 @@ void esp_openthread_radio_deinit(void);
|
||||
*/
|
||||
void esp_openthread_radio_update(esp_openthread_mainloop_context_t *mainloop);
|
||||
|
||||
/**
|
||||
* @brief This function handles netif change for radio spinel.
|
||||
*
|
||||
* @param[in] state The updated netif state.
|
||||
*
|
||||
*/
|
||||
void esp_openthread_handle_netif_state_change(bool state);
|
||||
|
||||
/**
|
||||
* @brief This function performs the OpenThread radio process.
|
||||
*
|
||||
|
@@ -209,6 +209,11 @@ void esp_openthread_radio_update(esp_openthread_mainloop_context_t *mainloop)
|
||||
s_spinel_interface.GetSpinelInterface().UpdateFdSet((void *)mainloop);
|
||||
}
|
||||
|
||||
void esp_openthread_handle_netif_state_change(bool state)
|
||||
{
|
||||
s_radio.SetTimeSyncState(state);
|
||||
}
|
||||
|
||||
void otPlatRadioGetIeeeEui64(otInstance *instance, uint8_t *ieee_eui64)
|
||||
{
|
||||
SuccessOrDie(s_radio.GetIeeeEui64(ieee_eui64));
|
||||
@@ -523,3 +528,27 @@ uint32_t otPlatRadioGetSupportedChannelMask(otInstance *aInstance)
|
||||
// Refer to `GetRadioChannelMask(bool aPreferred)`: FALSE to get supported channel mask
|
||||
return s_radio.GetRadioChannelMask(false);
|
||||
}
|
||||
|
||||
uint32_t otPlatRadioGetBusSpeed(otInstance *aInstance)
|
||||
{
|
||||
OT_UNUSED_VARIABLE(aInstance);
|
||||
|
||||
#if CONFIG_OPENTHREAD_RADIO_SPINEL_UART
|
||||
return s_esp_openthread_radio_config->radio_uart_config.uart_config.baud_rate;
|
||||
#elif CONFIG_OPENTHREAD_RADIO_SPINEL_SPI
|
||||
return s_esp_openthread_radio_config->radio_spi_config.spi_device.clock_speed_hz;
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
uint32_t otPlatRadioGetBusLatency(otInstance *aInstance)
|
||||
{
|
||||
OT_UNUSED_VARIABLE(aInstance);
|
||||
|
||||
#if CONFIG_OPENTHREAD_RADIO_SPINEL_UART || CONFIG_OPENTHREAD_RADIO_SPINEL_SPI
|
||||
return CONFIG_OPENTHREAD_BUS_LATENCY;
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
@@ -21,7 +21,7 @@
|
||||
|
||||
static void handle_ot_netif_state_change(otInstance* instance)
|
||||
{
|
||||
if (otLinkIsEnabled(instance)) {
|
||||
if (otIp6IsEnabled(instance)) {
|
||||
ESP_LOGI(TAG, "netif up");
|
||||
if (esp_event_post(OPENTHREAD_EVENT, OPENTHREAD_EVENT_IF_UP, NULL, 0, 0) != ESP_OK) {
|
||||
ESP_LOGE(TAG, "Failed to post OpenThread if up event");
|
||||
@@ -32,6 +32,10 @@ static void handle_ot_netif_state_change(otInstance* instance)
|
||||
ESP_LOGE(TAG, "Failed to post OpenThread if down event");
|
||||
}
|
||||
}
|
||||
|
||||
#if (CONFIG_OPENTHREAD_RADIO_SPINEL_UART || CONFIG_OPENTHREAD_RADIO_SPINEL_SPI)
|
||||
esp_openthread_handle_netif_state_change(otIp6IsEnabled(instance));
|
||||
#endif
|
||||
}
|
||||
|
||||
static void handle_ot_netdata_change(void)
|
||||
|
Reference in New Issue
Block a user