Galaxis Codebase  1.0.0
Team Galaxis software stack for the Carolo Cup 2023 - ROS2 based software
ECUNode.hpp
Go to the documentation of this file.
1 #ifndef ECU_NODE_H
2 #define ECU_NODE_H
3 
4 #include <chrono>
5 
6 #include <sensor_msgs/msg/range.hpp>
8 #include "ECUHandler.hpp"
9 #include "util/Packets.hpp"
10 #include <galaxis/messages.hpp>
11 #include <sensor_msgs/msg/range.hpp>
12 #include <std_msgs/msg/float32.hpp>
13 
14 
15 class ECUNode : public GalaxisNode {
16 public:
17  ECUNode() :
18  GalaxisNode("ecu_node") {}
19 
26  void init(std::shared_ptr<ECUHandler> _handler);
27 
32  void publishMeasurements(const EcuPacket* const packet, const std::array<std::chrono::duration<double, std::milli>, 10>& diff_ms);
33 
34 private:
35  /* PRIVATE VARIABLE DECLARATIONS */
39  rclcpp::Publisher<ButtonStateMessageType>::SharedPtr
41 
45  rclcpp::Publisher<MeasurementsType>::SharedPtr
47 
48  // rclcpp::Publisher<MeasurementsType>::SharedPtr
49  // m_measurementPubSPtr2 = nullptr;
50 
51  rclcpp::Publisher<sensor_msgs::msg::Range>::SharedPtr m_TOFRearPubSPtr;
52  rclcpp::Publisher<sensor_msgs::msg::Range>::SharedPtr m_TOFRightPubSPtr;
53  rclcpp::Publisher<std_msgs::msg::Float32>::SharedPtr m_velocityPubSPtr;
54 // rclcpp::Publisher<std_msgs::msg::Float32>::SharedPtr m_orientationPubSPtr;
55 
59  rclcpp::Subscription<ControlMotionType>::SharedPtr
61 
65  rclcpp::Subscription<SettingsValuesType>::SharedPtr
67 
68  rclcpp::Subscription<ControlLightsType>::SharedPtr
69  m_lightsSubSPtr = nullptr;
73  std::shared_ptr<ECUHandler> m_ecuHandlerSPtr = nullptr;
74 
75  ControlLightsType::SharedPtr m_lastLightsSPtr = nullptr;
76 
77  uint8_t m_lastButtonState = 0;
78 
79  std::mutex m_lightsMtx;
80 
81  /* PRIVATE FUNCTION DECLARATIONS */
82 
89  void motion_callback(const ControlMotionType::SharedPtr p_msgSPtr);
90 
91  void lights_callback(const ControlLightsType::SharedPtr p_msgSPtr);
92 
99  void settingsvalues_callback(const SettingsValuesType::SharedPtr p_msgSPtr);
100 };
101 
102 #endif //ECU_NODE_H
ECUNode::lights_callback
void lights_callback(const ControlLightsType::SharedPtr p_msgSPtr)
Definition: ECUNode.cpp:300
ECUNode::settingsvalues_callback
void settingsvalues_callback(const SettingsValuesType::SharedPtr p_msgSPtr)
Callback function on new message. Sends the Data to the ECUHandler to send to the ECU.
Definition: ECUNode.cpp:104
ECUNode::init
void init(std::shared_ptr< ECUHandler > _handler)
Initialises the ECUNode and saves the pointer to the ECU Handler.
Definition: ECUNode.cpp:19
ECUNode::m_lightsMtx
std::mutex m_lightsMtx
Definition: ECUNode.hpp:79
Packets.hpp
ECUNode::publishMeasurements
void publishMeasurements(const EcuPacket *const packet, const std::array< std::chrono::duration< double, std::milli >, 10 > &diff_ms)
Publishes the new Measurements from the ECU on the apropriate Publishers.
Definition: ECUNode.cpp:140
ECUNode::m_buttonStatePubSPtr
rclcpp::Publisher< ButtonStateMessageType >::SharedPtr m_buttonStatePubSPtr
Publisher object for buttonStates.
Definition: ECUNode.hpp:40
ECUNode::m_controlValuesSubSPtr
rclcpp::Subscription< ControlMotionType >::SharedPtr m_controlValuesSubSPtr
Subscriber object for control values from controller node.
Definition: ECUNode.hpp:60
ECUNode
Definition: ECUNode.hpp:15
EcuPacket
EcuPacket
Definition: Packets.hpp:242
ECUNode::m_velocityPubSPtr
rclcpp::Publisher< std_msgs::msg::Float32 >::SharedPtr m_velocityPubSPtr
Definition: ECUNode.hpp:53
ECUNode::m_lastButtonState
uint8_t m_lastButtonState
Definition: ECUNode.hpp:77
ECUHandler.hpp
ECUNode::m_ecuHandlerSPtr
std::shared_ptr< ECUHandler > m_ecuHandlerSPtr
Handler for ECU communication.
Definition: ECUNode.hpp:73
GalaxisNode.hpp
ECUNode::m_TOFRightPubSPtr
rclcpp::Publisher< sensor_msgs::msg::Range >::SharedPtr m_TOFRightPubSPtr
Definition: ECUNode.hpp:52
ECUNode::m_lastLightsSPtr
ControlLightsType::SharedPtr m_lastLightsSPtr
Definition: ECUNode.hpp:75
ECUNode::ECUNode
ECUNode()
Definition: ECUNode.hpp:17
GalaxisNode
Definition: GalaxisNode.hpp:21
ECUNode::motion_callback
void motion_callback(const ControlMotionType::SharedPtr p_msgSPtr)
Callback function on new message. Sends the Data to the ECUHandler to send to the ECU.
Definition: ECUNode.cpp:54
ECUNode::m_TOFRearPubSPtr
rclcpp::Publisher< sensor_msgs::msg::Range >::SharedPtr m_TOFRearPubSPtr
Definition: ECUNode.hpp:51
ECUNode::m_measurementPubSPtr
rclcpp::Publisher< MeasurementsType >::SharedPtr m_measurementPubSPtr
Publisher object for measurements.
Definition: ECUNode.hpp:46
ECUNode::m_settingsValuesSubSPtr
rclcpp::Subscription< SettingsValuesType >::SharedPtr m_settingsValuesSubSPtr
Subscriber object for control values from controller node.
Definition: ECUNode.hpp:66
messages.hpp
ECUNode::m_lightsSubSPtr
rclcpp::Subscription< ControlLightsType >::SharedPtr m_lightsSubSPtr
Definition: ECUNode.hpp:69