Skip to content

Commit

Permalink
update module registration mechanism
Browse files Browse the repository at this point in the history
  • Loading branch information
PonomarevDA committed Aug 10, 2024
1 parent 43a9991 commit 21fb0e6
Show file tree
Hide file tree
Showing 8 changed files with 22 additions and 7 deletions.
15 changes: 15 additions & 0 deletions Src/common/module.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -96,4 +96,19 @@ class ModuleManager {
static inline uint8_t modules_amount{0};
};

/**
* @brief Register module
* This macro defines a static instance of a Module child with a unique name in an anonymous
* namespace. It ensures that each module instance is unique within its translation unit,
* preventing naming collisions.
* Once a module is registered, his pointer is added to ModuleManager where it is automatically
* handled.
*/
#define UNIQUE_NAME_CONCATENATE(x, y) x##y
#define UNIQUE_NAME(x) UNIQUE_NAME_CONCATENATE(x, __COUNTER__)
#define REGISTER_MODULE(ModuleClass) \
namespace { \
static ModuleClass UNIQUE_NAME(moduleInstance); \
}

#endif // SRC_COMMON_MODULE_HPP_
2 changes: 1 addition & 1 deletion Src/modules/cyphal/circuit_status/circuit_status.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
#include "uavcan/si/sample/voltage/Scalar_1_0.h"
#include "uavcan/si/sample/temperature/Scalar_1_0.h"

static CircuitStatus crct;
REGISTER_MODULE(CircuitStatus)

void CircuitStatus::init() {
health = Status::OK;
Expand Down
2 changes: 1 addition & 1 deletion Src/modules/cyphal/core/cyphal_module.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
#include "params.hpp"
#include "periphery/adc/circuit_periphery.hpp"

static CyphalModule cyphal_module;
REGISTER_MODULE(CyphalModule)

CyphalModule::CyphalModule() : Module(0) {
}
Expand Down
2 changes: 1 addition & 1 deletion Src/modules/cyphal/feedback/feedback.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
#include "params.hpp"
#include "periphery/pwm/pwm.hpp"

static FeedbackModule feedback;
REGISTER_MODULE(FeedbackModule)

void FeedbackPublisher::publish() {
uint8_t buffer[reg_udral_service_actuator_common_Feedback_0_1_EXTENT_BYTES_];
Expand Down
2 changes: 1 addition & 1 deletion Src/modules/cyphal/setpoint/setpoint.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
#include "params.hpp"
#include "periphery/pwm/pwm.hpp"

static SetpointModule setpoint;
REGISTER_MODULE(SetpointModule)

int8_t SetpointSubscriber::init() {
port_id = static_cast<uint16_t>(paramsGetIntegerValue(IntParamsIndexes::PARAM_SUB_SETPOINT_ID));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
#include "CircuitStatusModule.hpp"
#include "periphery/adc/circuit_periphery.hpp"

static CircuitStatus circuit_status_module;
REGISTER_MODULE(CircuitStatus)

void CircuitStatus::init() {
mode = Module::Mode::OPERATIONAL;
Expand Down
2 changes: 1 addition & 1 deletion Src/modules/dronecan/core/dronecan_module.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
#include "dronecan.h"
#include "periphery/adc/circuit_periphery.hpp"

static DronecanModule dronecan_module;
REGISTER_MODULE(DronecanModule)

DronecanModule::DronecanModule() : Module(0) {
}
Expand Down
2 changes: 1 addition & 1 deletion Src/modules/dronecan/pwm/PWMModule.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ uint16_t PWMModule::ttl_cmd = 500;
uint16_t PWMModule::pwm_freq = 50;
CommandType PWMModule::pwm_cmd_type = CommandType::RAW_COMMAND;

static PWMModule pwm_module;
REGISTER_MODULE(PWMModule)

std::array<PwmChannelInfo, static_cast<uint8_t>(HAL::PwmPin::PWM_AMOUNT)> PWMModule::params = {{
{{.min = MIN(1), .max = MAX(1), .def = DEF(1), .ch = CH(1), .fb = FB(1)}, HAL::PwmPin::PWM_1},
Expand Down

0 comments on commit 21fb0e6

Please sign in to comment.