Added fix for canbus
This commit is contained in:
@ -234,6 +234,7 @@ struct ButtonProfile3Accessor : public NewSettingsAccessor<uint8_t> { ConfigWrap
|
||||
|
||||
// Can
|
||||
struct CanResetOnErrorAccessor : public NewSettingsAccessor<bool> { ConfigWrapper<bool> &getConfig() const override { return configs.canResetOnError; } };
|
||||
struct CanReinstallDriverAccessor : public NewSettingsAccessor<bool> { ConfigWrapper<bool> &getConfig() const override { return configs.canUninstallOnReset; } };
|
||||
|
||||
// Quick Actions
|
||||
struct QuickActionLeft2Accessor : public NewSettingsAccessor<BobbyQuickActions> { ConfigWrapper<BobbyQuickActions> &getConfig() const override { return configs.quickActionLeft2; } };
|
||||
|
16
main/can.cpp
16
main/can.cpp
@ -280,7 +280,7 @@ void sendCanCommands()
|
||||
const auto status = twai_get_status_info(&status_info);
|
||||
const auto timestamp_after = espchrono::millis_clock::now();
|
||||
|
||||
if (result == ESP_ERR_TIMEOUT || (status == ESP_OK && status_info.bus_error_count > can_sequential_bus_errors))
|
||||
if ((result == ESP_ERR_TIMEOUT || status == TWAI_STATE_BUS_OFF) || (status == ESP_OK && status_info.bus_error_count > can_sequential_bus_errors))
|
||||
{
|
||||
++can_sequential_error_cnt;
|
||||
++can_total_error_cnt;
|
||||
@ -314,6 +314,20 @@ void sendCanCommands()
|
||||
{
|
||||
ESP_LOGE(TAG, "ERROR: twai_stop() failed with %s", esp_err_to_name(err));
|
||||
}
|
||||
|
||||
if (configs.canUninstallOnReset.value)
|
||||
{
|
||||
if (const auto err = twai_driver_uninstall(); err != ESP_OK) {
|
||||
ESP_LOGE(TAG, "ERROR: twai_driver_uninstall() failed with %s", esp_err_to_name(err));
|
||||
}
|
||||
twai_general_config_t g_config = TWAI_GENERAL_CONFIG_DEFAULT(GPIO_NUM_21, GPIO_NUM_22,
|
||||
TWAI_MODE_NORMAL);
|
||||
twai_timing_config_t t_config = TWAI_TIMING_CONFIG_250KBITS();
|
||||
twai_filter_config_t f_config = TWAI_FILTER_CONFIG_ACCEPT_ALL();
|
||||
if (const auto err = twai_driver_install(&g_config, &t_config, &f_config); err != ESP_OK) {
|
||||
ESP_LOGE(TAG, "ERROR: twai_driver_install() failed with %s", esp_err_to_name(err));
|
||||
}
|
||||
}
|
||||
if (const auto err = twai_start(); err != ESP_OK)
|
||||
{
|
||||
ESP_LOGE(TAG, "ERROR: twai_start() failed with %s", esp_err_to_name(err));
|
||||
|
@ -32,6 +32,7 @@ constexpr char TEXT_BACKSENDCAN[] = "Back send CAN";
|
||||
constexpr char TEXT_CANTRANSMITTIMEOUT[] = "CanTransmitTimeout";
|
||||
constexpr char TEXT_CANRECEIVETIMEOUT[] = "CanReceiveTimeout";
|
||||
constexpr char TEXT_CANRESETONERROR[] = "Reset on error";
|
||||
constexpr char TEXT_CANREINSTALLDRIVER[] = "Reinstall on error";
|
||||
#endif
|
||||
constexpr char TEXT_BACK[] = "Back";
|
||||
|
||||
@ -90,6 +91,7 @@ ControllerHardwareSettingsMenu::ControllerHardwareSettingsMenu()
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CANTRANSMITTIMEOUT>, SwitchScreenAction<CanTransmitTimeoutChangeScreen>>>();
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CANRECEIVETIMEOUT>, SwitchScreenAction<CanReceiveTimeoutChangeScreen>>>();
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CANRESETONERROR>, BobbyCheckbox, CanResetOnErrorAccessor>>();
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CANREINSTALLDRIVER>, BobbyCheckbox, CanReinstallDriverAccessor>>();
|
||||
#endif
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<SettingsMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
|
||||
}
|
||||
|
@ -159,6 +159,7 @@ public:
|
||||
ConfigWrapper<espchrono::DayLightSavingMode>timeDst{espchrono::DayLightSavingMode::EuropeanSummerTime, DoReset, {}, "time_dst" };
|
||||
|
||||
ConfigWrapper<bool> canResetOnError {false, DoReset, {}, "canBusRstErr" };
|
||||
ConfigWrapper<bool> canUninstallOnReset {false, DoReset, {}, "canUninstlRstErr" };
|
||||
|
||||
ConfigWrapper<int16_t> sampleCount {50, DoReset, {}, "sampleCount" };
|
||||
ConfigWrapper<int16_t> gasMin {0, DoReset, MinMaxValue<int16_t, 0, 4095>, "gasMin" };
|
||||
@ -479,7 +480,8 @@ public:
|
||||
x(timezoneOffset) \
|
||||
x(timeDst) \
|
||||
\
|
||||
x(canResetOnError) \
|
||||
x(canResetOnError) \
|
||||
x(canUninstallOnReset) \
|
||||
\
|
||||
x(sampleCount) \
|
||||
x(gasMin) \
|
||||
|
Reference in New Issue
Block a user