diff --git a/main/displays/menus/candebugmenu.cpp b/main/displays/menus/candebugmenu.cpp index 2ce311f..88315d1 100644 --- a/main/displays/menus/candebugmenu.cpp +++ b/main/displays/menus/candebugmenu.cpp @@ -24,6 +24,7 @@ namespace { constexpr char TAG[] = "CANDEBUG"; constexpr char TEXT_CANDEBUG[] = "CAN Debug"; +constexpr char TEXT_TWAI_INITIATE_RECOVERY[] = "twai_initiate_recovery()"; constexpr char TEXT_TWAI_STOP[] = "twai_stop()"; constexpr char TEXT_TWAI_START[] = "twai_start()"; constexpr char TEXT_TWAI_UNINSTALL[] = "twai_drv_uninstall()"; @@ -175,6 +176,17 @@ protected: std::string canStatusText(const twai_status_info_t &can_status_info) const override { return std::to_string(can_status_info.bus_error_count); } }; +class CanInitiateRecoveryAction : public virtual espgui::ActionInterface +{ +public: + void triggered() override + { + const auto result = twai_initiate_recovery(); + ESP_LOGI(TAG, "twai_initiate_recovery() returned %s", esp_err_to_name(result)); + BobbyErrorHandler{}.errorOccured(fmt::format("twai_initiate_recovery() returned {}", esp_err_to_name(result))); + } +}; + class CanStopAction : public virtual espgui::ActionInterface { public: @@ -239,6 +251,7 @@ CanDebugMenu::CanDebugMenu() #endif constructMenuItem>(m_last_can_status_info); constructMenuItem>(m_last_can_status_info); + constructMenuItem, CanInitiateRecoveryAction>>(); constructMenuItem, CanStopAction>>(); constructMenuItem, CanStartAction>>(); constructMenuItem, CanUninstallAction>>();