From d510d08f6fb70b2956f9db9baf2063fb57a232e1 Mon Sep 17 00:00:00 2001 From: KrzysKond Date: Tue, 26 May 2026 06:18:36 -0700 Subject: [PATCH 1/3] fix: EPROM fixes --- .../servoController/servo_controller.cpp | 7 +++++++ .../ServoService/servoController/servo_driver.hpp | 15 ++++++++++++--- apps/ec/engine_service/engine_app.cpp | 1 + deployment/tools/ecu/BUILD | 4 ++-- mw/gpio_server/gpio_mw.cpp | 13 ++++++++----- 5 files changed, 30 insertions(+), 10 deletions(-) diff --git a/apps/ec/ServoService/servoController/servo_controller.cpp b/apps/ec/ServoService/servoController/servo_controller.cpp index 9406471e..e5c365c6 100644 --- a/apps/ec/ServoService/servoController/servo_controller.cpp +++ b/apps/ec/ServoService/servoController/servo_controller.cpp @@ -41,8 +41,15 @@ void ServoController::closingThreadLoop(const std::stop_token& token) { if (cfg.value().position != kOpenState) { continue; } + { + std::lock_guard lock(pulsing_mtx_); + if (pulsing_db.find(id) != pulsing_db.end()) { + continue; + } + } if (cfg.value().open_time_end <= now) { servo_ctr_.SetServoPosition(cfg.value(), 0); + servo_cfg_mng.SetServoPosition(id, kCloseState); } else { auto time_until_end = std::chrono::duration_cast< std::chrono::milliseconds>(cfg.value().open_time_end - now); diff --git a/apps/ec/ServoService/servoController/servo_driver.hpp b/apps/ec/ServoService/servoController/servo_driver.hpp index b95c96e6..7715c5fb 100644 --- a/apps/ec/ServoService/servoController/servo_driver.hpp +++ b/apps/ec/ServoService/servoController/servo_driver.hpp @@ -59,15 +59,24 @@ class ServoDriver { bool SetServoPosition(const srp::service::ServoRuntimeConfig& cfg, const uint8_t state) { std::unique_lock lock(operation_mtx); if (cfg.mosfet_id != 0) { - if (gpio_.SetPinValue(cfg.mosfet_id, kOpenState, kDefault_mosfet_active_time_ms) != core::ErrorCode::kOk) { + core::ErrorCode mosfet_res; + if (state == kOpenState) { + mosfet_res = gpio_.SetPinValue(cfg.mosfet_id, kOpenState, 0); + } else if (cfg.pulsing_time > 0) { + mosfet_res = gpio_.SetPinValue(cfg.mosfet_id, kCloseState, 0); + } else { + mosfet_res = gpio_.SetPinValue(cfg.mosfet_id, kOpenState, kDefault_mosfet_active_time_ms, true); + } + if (mosfet_res != core::ErrorCode::kOk) { logger_.LogError() << "ServoController.ExecuteServoMovement: failed to enable MOSFET " << cfg.mosfet_id; return false; } } - const uint16_t target_position = ((state == kOpenState) ? cfg.on_pos : cfg.off_pos) - * config.pca9685_XO_corelation; + const float corelation = (config.pca9685_XO_corelation > 0.0f) ? config.pca9685_XO_corelation : 1.0f; + const uint16_t target_position = static_cast( + ((state == kOpenState) ? cfg.on_pos : cfg.off_pos) * corelation); logger_.LogDebug() << "ServoController.ExecuteServoMovement: setting actuator " << "to PWM " << target_position; diff --git a/apps/ec/engine_service/engine_app.cpp b/apps/ec/engine_service/engine_app.cpp index deaf6b0d..c3440521 100644 --- a/apps/ec/engine_service/engine_app.cpp +++ b/apps/ec/engine_service/engine_app.cpp @@ -229,6 +229,7 @@ void EngineApp::OnDisarm() { ara::log::LogError() << "cant disarm pin: " << pin.name; } } + servo_handler_->SetMainServoValue(0); servo_handler_->SetVentServoValue(0); servo_handler_->SetDumpValue(0); } diff --git a/deployment/tools/ecu/BUILD b/deployment/tools/ecu/BUILD index 23002375..dddb1984 100644 --- a/deployment/tools/ecu/BUILD +++ b/deployment/tools/ecu/BUILD @@ -3,7 +3,7 @@ load("@srp_platform//tools/common:flash_ecu.bzl", "flash_ecu") flash_ecu( name = "flash_ec", file = ["//deployment/cpu/ec:pkg"], - ip = "192.168.10.101", + ip = "192.168.10.51", tool = select({ "//:sim": "//deployment/bazel:docker_flash_sh", "//conditions:default": "//deployment/bazel:flash_sh", @@ -14,7 +14,7 @@ flash_ecu( flash_ecu( name = "flash_fc", file = ["//deployment/cpu/fc:pkg"], - ip = "192.168.10.101", + ip = "192.168.10.52", tool = select({ "//:sim": "//deployment/bazel:docker_flash_sh", "//conditions:default": "//deployment/bazel:flash_sh", diff --git a/mw/gpio_server/gpio_mw.cpp b/mw/gpio_server/gpio_mw.cpp index 34a84b93..0284ac00 100644 --- a/mw/gpio_server/gpio_mw.cpp +++ b/mw/gpio_server/gpio_mw.cpp @@ -94,11 +94,14 @@ std::vector GPIOMWService::RxCallback(const std::string& ip, const std: } auto new_time = std::chrono::high_resolution_clock::now() + std::chrono::milliseconds(hdr.value().time_period); - expire_it->second.disable_tp = std::max(expire_it->second.disable_tp, new_time); - if (hdr.value().time_period == 0) { - expire_it->second.infinite_active = true; - } else if (hdr.value().force_time_period) { - expire_it->second.infinite_active = false; + if (hdr.value().force_time_period) { + expire_it->second.disable_tp = new_time; + expire_it->second.infinite_active = (hdr.value().time_period == 0); + } else { + expire_it->second.disable_tp = std::max(expire_it->second.disable_tp, new_time); + if (hdr.value().time_period == 0) { + expire_it->second.infinite_active = true; + } } } return {core::ErrorCode::kOk}; From 0d34880b8a7ff597a825f5d794484bf8168b31c6 Mon Sep 17 00:00:00 2001 From: KrzysKond Date: Tue, 26 May 2026 06:56:20 -0700 Subject: [PATCH 2/3] add makr fixes --- .../servoController/servo_controller.cpp | 6 ------ .../ec/ServoService/servoController/servo_driver.hpp | 12 ++---------- 2 files changed, 2 insertions(+), 16 deletions(-) diff --git a/apps/ec/ServoService/servoController/servo_controller.cpp b/apps/ec/ServoService/servoController/servo_controller.cpp index e5c365c6..90245608 100644 --- a/apps/ec/ServoService/servoController/servo_controller.cpp +++ b/apps/ec/ServoService/servoController/servo_controller.cpp @@ -41,12 +41,6 @@ void ServoController::closingThreadLoop(const std::stop_token& token) { if (cfg.value().position != kOpenState) { continue; } - { - std::lock_guard lock(pulsing_mtx_); - if (pulsing_db.find(id) != pulsing_db.end()) { - continue; - } - } if (cfg.value().open_time_end <= now) { servo_ctr_.SetServoPosition(cfg.value(), 0); servo_cfg_mng.SetServoPosition(id, kCloseState); diff --git a/apps/ec/ServoService/servoController/servo_driver.hpp b/apps/ec/ServoService/servoController/servo_driver.hpp index 7715c5fb..579efed0 100644 --- a/apps/ec/ServoService/servoController/servo_driver.hpp +++ b/apps/ec/ServoService/servoController/servo_driver.hpp @@ -59,22 +59,14 @@ class ServoDriver { bool SetServoPosition(const srp::service::ServoRuntimeConfig& cfg, const uint8_t state) { std::unique_lock lock(operation_mtx); if (cfg.mosfet_id != 0) { - core::ErrorCode mosfet_res; - if (state == kOpenState) { - mosfet_res = gpio_.SetPinValue(cfg.mosfet_id, kOpenState, 0); - } else if (cfg.pulsing_time > 0) { - mosfet_res = gpio_.SetPinValue(cfg.mosfet_id, kCloseState, 0); - } else { - mosfet_res = gpio_.SetPinValue(cfg.mosfet_id, kOpenState, kDefault_mosfet_active_time_ms, true); - } - if (mosfet_res != core::ErrorCode::kOk) { + if (gpio_.SetPinValue(cfg.mosfet_id, kOpenState, kDefault_mosfet_active_time_ms) != core::ErrorCode::kOk) { if (state == kOpenState) { logger_.LogError() << "ServoController.ExecuteServoMovement: failed to enable MOSFET " << cfg.mosfet_id; return false; } } - const float corelation = (config.pca9685_XO_corelation > 0.0f) ? config.pca9685_XO_corelation : 1.0f; + const float corelation = (config.pca9685_XO_corelation > 0.0f && config.pca9685_XO_corelation < 1.2f ) ? config.pca9685_XO_corelation : 1.0f; const uint16_t target_position = static_cast( ((state == kOpenState) ? cfg.on_pos : cfg.off_pos) * corelation); From b6fef79558711346c6bb3fe8f2fe0faf08ce13d8 Mon Sep 17 00:00:00 2001 From: KrzysKond Date: Tue, 26 May 2026 06:57:15 -0700 Subject: [PATCH 3/3] remove orphan if --- apps/ec/ServoService/servoController/servo_driver.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/ec/ServoService/servoController/servo_driver.hpp b/apps/ec/ServoService/servoController/servo_driver.hpp index 579efed0..94e94fe1 100644 --- a/apps/ec/ServoService/servoController/servo_driver.hpp +++ b/apps/ec/ServoService/servoController/servo_driver.hpp @@ -59,7 +59,7 @@ class ServoDriver { bool SetServoPosition(const srp::service::ServoRuntimeConfig& cfg, const uint8_t state) { std::unique_lock lock(operation_mtx); if (cfg.mosfet_id != 0) { - if (gpio_.SetPinValue(cfg.mosfet_id, kOpenState, kDefault_mosfet_active_time_ms) != core::ErrorCode::kOk) { if (state == kOpenState) { + if (gpio_.SetPinValue(cfg.mosfet_id, kOpenState, kDefault_mosfet_active_time_ms) != core::ErrorCode::kOk) { logger_.LogError() << "ServoController.ExecuteServoMovement: failed to enable MOSFET " << cfg.mosfet_id; return false;