#include <modules/worker_thread/worker_thread.h>
WORKER_THREAD_DECLARE_EXTERN(spi3_thread)
static struct worker_thread_listener_task_s imu_delta_listener_task;
static void imu_deltas_handler(size_t msg_size, const void* buf, void* ctx);
RUN_AFTER(INIT_END) {
worker_thread_add_listener_task(&spi3_thread, &imu_delta_listener_task, &imu_deltas_topic, imu_deltas_handler, NULL);
}
static void imu_deltas_handler(size_t msg_size, const void* buf, void* ctx) {
const struct imu_delta_s* deltas = (const struct imu_delta_s*)buf;
// ...
}
WORKER_THREAD_LISTENER(spi3_thread, imu_deltas_topic) {
}
Or something more C++-y.