@@ -171,6 +171,7 @@ class ODriveCAN {
171
171
* @brief Requests ODrive DC bus voltage and current
172
172
*
173
173
* This function will block and wait for up to timeout_ms (default 10msec) for ODrive to reply
174
+ * May trigger onBusVI callback if it's registered.
174
175
*/
175
176
bool getBusVI (Get_Bus_Voltage_Current_msg_t& msg, uint16_t timeout_ms = 10 );
176
177
@@ -222,6 +223,38 @@ class ODriveCAN {
222
223
torques_user_data_ = user_data;
223
224
}
224
225
226
+ /* *
227
+ * @brief Registers a callback for ODrive temperature feedback.
228
+ */
229
+ void onTemperature (void (*callback)(Get_Temperature_msg_t& feedback, void * user_data), void* user_data = nullptr) {
230
+ temperature_callback_ = callback;
231
+ temperature_user_data_ = user_data;
232
+ }
233
+
234
+ /* *
235
+ * @brief Registers a callback for ODrive bus voltage/current feedback.
236
+ */
237
+ void onBusVI (void (*callback)(Get_Bus_Voltage_Current_msg_t& feedback, void * user_data), void* user_data = nullptr) {
238
+ busVI_callback_ = callback;
239
+ busVI_user_data_ = user_data;
240
+ }
241
+
242
+ /* *
243
+ * @brief Registers a callback for ODrive currents feedback.
244
+ */
245
+ void onCurrents (void (*callback)(Get_Iq_msg_t& feedback, void * user_data), void* user_data = nullptr) {
246
+ currents_callback_ = callback;
247
+ currents_user_data_ = user_data;
248
+ }
249
+
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
+
225
258
/* *
226
259
* @brief Processes received CAN messages for the ODrive.
227
260
*/
@@ -332,8 +365,16 @@ class ODriveCAN {
332
365
void * axis_state_user_data_;
333
366
void * feedback_user_data_;
334
367
void * torques_user_data_;
368
+ void * temperature_user_data_;
369
+ void * busVI_user_data_;
370
+ void * currents_user_data_;
371
+ void * error_user_data_;
335
372
336
373
void (*axis_state_callback_)(Heartbeat_msg_t& feedback, void * user_data) = nullptr ;
337
374
void (*feedback_callback_)(Get_Encoder_Estimates_msg_t& feedback, void * user_data) = nullptr ;
338
375
void (*torques_callback_)(Get_Torques_msg_t& feedback, void * user_data) = nullptr ;
376
+ void (*temperature_callback_)(Get_Temperature_msg_t& feedback, void * user_data) = nullptr ;
377
+ void (*busVI_callback_)(Get_Bus_Voltage_Current_msg_t& feedback, void * user_data) = nullptr ;
378
+ 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 ;
339
380
};
0 commit comments