Skip to content

Commit f7db784

Browse files
Your NameBrechtSerckx
Your Name
authored andcommitted
Callback for Get_Error
1 parent 394babc commit f7db784

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

src/ODriveCAN.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,13 @@ void ODriveCAN::onReceive(uint32_t id, uint8_t length, const uint8_t* data) {
192192
currents_callback_(iq, currents_user_data_);
193193
break;
194194
}
195+
case Get_Error_msg_t::cmd_id: {
196+
Get_Error_msg_t error;
197+
error.decode_buf(data);
198+
if (error_callback_)
199+
error_callback_(error, error_user_data_);
200+
break;
201+
}
195202
default: {
196203
if (requested_msg_id_ == REQUEST_PENDING)
197204
return;

src/ODriveCAN.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,14 @@ class ODriveCAN {
247247
currents_user_data_ = user_data;
248248
}
249249

250+
/**
251+
* @brief Registers a callback for ODrive error messages.
252+
*/
253+
void onError(void (*callback)(Get_Error_msg_t& msg, void* user_data), void* user_data = nullptr) {
254+
error_callback_ = callback;
255+
error_user_data_ = user_data;
256+
}
257+
250258
/**
251259
* @brief Processes received CAN messages for the ODrive.
252260
*/
@@ -360,11 +368,13 @@ class ODriveCAN {
360368
void* temperature_user_data_;
361369
void* busVI_user_data_;
362370
void* currents_user_data_;
371+
void* error_user_data_;
363372

364373
void (*axis_state_callback_)(Heartbeat_msg_t& feedback, void* user_data) = nullptr;
365374
void (*feedback_callback_)(Get_Encoder_Estimates_msg_t& feedback, void* user_data) = nullptr;
366375
void (*torques_callback_)(Get_Torques_msg_t& feedback, void* user_data) = nullptr;
367376
void (*temperature_callback_)(Get_Temperature_msg_t& feedback, void* user_data) = nullptr;
368377
void (*busVI_callback_)(Get_Bus_Voltage_Current_msg_t& feedback, void* user_data) = nullptr;
369378
void (*currents_callback_)(Get_Iq_msg_t& feedback, void* user_data) = nullptr;
379+
void (*error_callback_)(Get_Error_msg_t& msg, void* user_data) = nullptr;
370380
};

0 commit comments

Comments
 (0)