Unify the Config_t style for ODriveCAN

This commit is contained in:
Unknown
2018-09-28 18:19:34 -04:00
parent 51c890d0c1
commit 75dfb48238
3 changed files with 23 additions and 23 deletions
+3 -3
View File
@@ -10,7 +10,7 @@
#include <communication/interface_can.hpp>
BoardConfig_t board_config;
CANConfig_t can_config;
ODriveCAN::Config_t can_config;
Encoder::Config_t encoder_configs[AXIS_COUNT];
SensorlessEstimator::Config_t sensorless_configs[AXIS_COUNT];
Controller::Config_t controller_configs[AXIS_COUNT];
@@ -26,7 +26,7 @@ ODriveCAN *odCAN;
typedef Config<
BoardConfig_t,
CANConfig_t,
ODriveCAN::Config_t,
Encoder::Config_t[AXIS_COUNT],
SensorlessEstimator::Config_t[AXIS_COUNT],
Controller::Config_t[AXIS_COUNT],
@@ -64,7 +64,7 @@ void load_configuration(void) {
&axis_configs)) {
//If loading failed, restore defaults
board_config = BoardConfig_t();
can_config = CANConfig_t();
can_config = ODriveCAN::Config_t();
for (size_t i = 0; i < AXIS_COUNT; ++i) {
encoder_configs[i] = Encoder::Config_t();
sensorless_configs[i] = SensorlessEstimator::Config_t();
+1 -1
View File
@@ -41,7 +41,7 @@
static uint32_t counter = 0;
// Constructor is called by communication.cpp and the handle is assigned appropriately
ODriveCAN::ODriveCAN(CAN_HandleTypeDef *handle, CANConfig_t &config)
ODriveCAN::ODriveCAN(CAN_HandleTypeDef *handle, ODriveCAN::Config_t &config)
: handle_{handle},
config_{config} {
}
+19 -19
View File
@@ -16,27 +16,29 @@ typedef struct {
} CAN_message_t;
// Anonymous enum for defining the most common CAN baud rates
enum {
CAN_BAUD_125K = 125000,
CAN_BAUD_250K = 250000,
CAN_BAUD_500K = 500000,
CAN_BAUD_1000K = 1000000,
CAN_BAUD_1M = 1000000
};
struct CANConfig_t {
uint8_t node_id = 0;
uint32_t baud = CAN_BAUD_250K;
};
enum {
CAN_BAUD_125K = 125000,
CAN_BAUD_250K = 250000,
CAN_BAUD_500K = 500000,
CAN_BAUD_1000K = 1000000,
CAN_BAUD_1M = 1000000
};
class ODriveCAN {
public:
ODriveCAN(CAN_HandleTypeDef *handle, CANConfig_t &config);
struct Config_t {
uint8_t node_id = 0;
uint32_t baud = CAN_BAUD_250K;
};
ODriveCAN(CAN_HandleTypeDef *handle, ODriveCAN::Config_t &config);
bool start_can_server();
void can_server_thread();
uint32_t write(CAN_message_t& txmsg);
int read(CAN_message_t& rxmsg);
uint32_t write(CAN_message_t &txmsg);
int read(CAN_message_t &rxmsg);
osThreadId thread_id_;
volatile bool thread_id_valid_ = false;
@@ -45,16 +47,14 @@ class ODriveCAN {
return make_protocol_member_list(
make_protocol_object("config",
make_protocol_ro_property("node_id", &config_.node_id),
make_protocol_ro_property("baud_rate", &config_.baud)
),
make_protocol_ro_property("baud_rate", &config_.baud)),
make_protocol_function("set_node_id", *this, &ODriveCAN::set_node_id, "nodeID"),
make_protocol_function("set_baud_rate", *this, &ODriveCAN::set_baud_rate, "baudRate")
);
make_protocol_function("set_baud_rate", *this, &ODriveCAN::set_baud_rate, "baudRate"));
}
private:
CAN_HandleTypeDef *handle_ = nullptr;
CANConfig_t &config_;
ODriveCAN::Config_t &config_;
void set_node_id(uint8_t nodeID);
void set_baud_rate(uint32_t baudRate);