diff --git a/src/hunter_sdk/hunter_base/include/hunter_base/hunter_types.hpp b/src/hunter_sdk/hunter_base/include/hunter_base/hunter_types.hpp index 7ab420b..203041b 100644 --- a/src/hunter_sdk/hunter_base/include/hunter_base/hunter_types.hpp +++ b/src/hunter_sdk/hunter_base/include/hunter_base/hunter_types.hpp @@ -33,7 +33,8 @@ struct HunterState uint8_t set_zero_steering = 0; // motor state - MotorState motor_states[3]; + static constexpr uint8_t motor_num = 3; + MotorState motor_states[motor_num]; // motion state double linear_velocity = 0; diff --git a/src/hunter_sdk/hunter_base/src/hunter_base.cpp b/src/hunter_sdk/hunter_base/src/hunter_base.cpp index 0818978..5849ad8 100644 --- a/src/hunter_sdk/hunter_base/src/hunter_base.cpp +++ b/src/hunter_sdk/hunter_base/src/hunter_base.cpp @@ -229,7 +229,7 @@ void HunterBase::UpdateHunterState(const HunterMessage &status_msg, // std::cout << "motor 1 driver feedback received" << std::endl; const MotorDriverStatusMessage &msg = status_msg.body.motor_driver_status_msg; - for (int i = 0; i < 4; ++i) { + for (int i = 0; i < HunterState::motor_num; ++i) { state.motor_states[status_msg.body.motor_driver_status_msg.motor_id] .current = (static_cast(msg.data.status.current.low_byte) | diff --git a/src/scout_sdk/scout_base/include/scout_base/scout_types.hpp b/src/scout_sdk/scout_base/include/scout_base/scout_types.hpp index 6767a0e..120531f 100644 --- a/src/scout_sdk/scout_base/include/scout_base/scout_types.hpp +++ b/src/scout_sdk/scout_base/include/scout_base/scout_types.hpp @@ -45,7 +45,8 @@ struct ScoutState double battery_voltage = 0.0; // motor state - MotorState motor_states[4]; + static constexpr uint8_t motor_num = 4; + MotorState motor_states[motor_num]; // light state bool light_control_enabled = false; diff --git a/src/scout_sdk/scout_base/src/scout_base.cpp b/src/scout_sdk/scout_base/src/scout_base.cpp index 0d7cc60..35a0afb 100644 --- a/src/scout_sdk/scout_base/src/scout_base.cpp +++ b/src/scout_sdk/scout_base/src/scout_base.cpp @@ -325,7 +325,7 @@ void ScoutBase::UpdateScoutState(const ScoutMessage &status_msg, ScoutState &sta { // std::cout << "motor 1 driver feedback received" << std::endl; const MotorDriverStatusMessage &msg = status_msg.body.motor_driver_status_msg; - for (int i = 0; i < 4; ++i) + for (int i = 0; i < ScoutState::motor_num; ++i) { state.motor_states[status_msg.body.motor_driver_status_msg.motor_id].current = (static_cast(msg.data.status.current.low_byte) | static_cast(msg.data.status.current.high_byte) << 8) / 10.0; state.motor_states[status_msg.body.motor_driver_status_msg.motor_id].rpm = static_cast(static_cast(msg.data.status.rpm.low_byte) | static_cast(msg.data.status.rpm.high_byte) << 8);