TinyRobotics
Loading...
Searching...
No Matches
CallbackMessageHandler.h
1#pragma once
2#include <functional>
3
5
6namespace tinyrobotics {
7
8/**
9 * @brief MessageHandler implementation using user-provided callbacks.
10 *
11 * Allows setting custom callbacks for each supported message type.
12 */
14 public:
15 using ValueCallback = std::function<bool(const Message<float>&, void*)>;
16 using CoordinateCallback =
17 std::function<bool(const Message<Coordinate<float>>&, void*)>;
18 using GPSCoordinateCallback =
19 std::function<bool(const Message<GPSCoordinate>&, void*)>;
20 using MotionStateCallback = std::function<bool(const Message<MotionState3D>&, void*)>;
21
22 CallbackMessageHandler() = default;
23
24 bool onMessage(const Message<float>& msg) override {
25 if (valueCallback_) return valueCallback_(msg, ref);
26 return false;
27 }
28
29 bool onMessage(const Message<Coordinate<float>>& msg) override {
30 if (coordinateCallback_) return coordinateCallback_(msg, ref);
31 return false;
32 }
33
34 bool onMessage(const Message<GPSCoordinate>& msg) override {
35 if (gpsCoordinateCallback_) return gpsCoordinateCallback_(msg, ref);
36 return false;
37 }
38
39
40 bool onMessage(const Message<MotionState3D>& msg) override {
41 if (motionStateCallback_) return motionStateCallback_(msg, ref);
42 return false;
43 }
44
45 void setValueCallback(ValueCallback cb, void* reference) {
46 valueCallback_ = cb;
47 ref = reference;
48 }
49 void setCoordinateCallback(CoordinateCallback cb, void* reference) {
50 coordinateCallback_ = cb;
51 ref = reference;
52 }
53 void setGPSCoordinateCallback(GPSCoordinateCallback cb, void* reference) {
54 gpsCoordinateCallback_ = cb;
55 ref = reference;
56 }
57
58 void setMotionStateCallback(MotionStateCallback cb, void* reference) {
59 motionStateCallback_ = cb;
60 ref = reference;
61 }
62
63protected:
64 void* ref = nullptr;
65 ValueCallback valueCallback_;
66 CoordinateCallback coordinateCallback_;
67 GPSCoordinateCallback gpsCoordinateCallback_;
68 MotionStateCallback motionStateCallback_;
69
70};
71
72} // namespace tinyrobotics
MessageHandler implementation using user-provided callbacks.
Definition: CallbackMessageHandler.h:13
bool onMessage(const Message< float > &msg) override
Handle an incoming message (pure virtual).
Definition: CallbackMessageHandler.h:24
A generic 3D coordinate class for robotics, navigation, and spatial calculations.
Definition: Coordinate.h:57
Represents a geodetic GPS coordinate with latitude, longitude, and optional altitude.
Definition: GPSCoordinate.h:52
Interface for handling messages in the TinyRobotics framework.
Definition: MessageHandler.h:18
Represents the full 3D motion state of a robot or vehicle.
Definition: MotionState3D.h:53
Generic message structure for communication, parameterized by value type.
Definition: Message.h:72