1 #include "application.hpp"
2 #include "../can/can-decoder.hpp"
3 #include "../can/can-encoder.hpp"
6 // >>>>> handlers.cpp >>>>>
7 #include "can/canread.h"
9 using openxc::can::read::publishNumericalMessage;
11 void handleSteeringWheelMessage(CanMessage* message,
12 CanSignal* signals, int signalCount, Pipeline* pipeline) {
13 publishNumericalMessage("latitude", 42.0, pipeline);
16 openxc_DynamicField handleInverted(CanSignal* signal, CanSignal* signals,
17 int signalCount, float value, bool* send) {
18 return openxc::payload::wrapNumber(value * -1);
21 void initializeMyStuff() { }
23 void initializeOtherStuff() { }
26 // this function will be called once, each time through the main loop, after
27 // all CAN message processing has been completed
30 // <<<<< handlers.cpp <<<<<
32 application_t::application_t()
33 : can_bus_manager_{utils::config_parser_t{"/etc/dev-mapping.conf"}}
35 {std::make_shared<message_set_t>(message_set_t{0,"example",
36 { // beginning message_definition_ vector
37 {std::make_shared<message_definition_t>(message_definition_t{"hs", 0x128,"ECM_z_5D2", 0, false, message_format_t::STANDARD, frequency_clock_t(5.00000f), true,
38 { // beginning signals vector
39 {std::make_shared<signal_t> (signal_t{
40 "engine_speed",// generic_name
47 frequency_clock_t(15.0000f),// frequency
49 false,// force_send_changed
56 std::make_pair<bool, int>(false, 0),// multiplex
61 {std::make_shared<signal_t> (signal_t{
62 "GearshiftPosition",// generic_name
69 frequency_clock_t(0.00000f),// frequency
71 false,// force_send_changed
81 decoder_t::decode_state,// decoder
84 std::make_pair<bool, int>(false, 0),// multiplex
89 {std::make_shared<signal_t> (signal_t{
90 "SteeringWheelAngle",// generic_name
97 frequency_clock_t(0.00000f),// frequency
99 false,// force_send_changed
103 handleUnsignedSteeringWheelAngle,// decoder
106 std::make_pair<bool, int>(false, 0),// multiplex
111 {std::make_shared<signal_t> (signal_t{
112 "steering_wheel_angle_error",// generic_name
119 frequency_clock_t(0.00000f),// frequency
121 false,// force_send_changed
125 ignoreDecoder,// decoder
128 std::make_pair<bool, int>(false, 0),// multiplex
133 {std::make_shared<signal_t> (signal_t{
134 "steering_angle_sign",// generic_name
141 frequency_clock_t(0.00000f),// frequency
143 false,// force_send_changed
147 ignoreDecoder,// decoder
150 std::make_pair<bool, int>(false, 0),// multiplex
155 } // end signals vector
156 })} // end message_definition entry
158 }, // end message_definition vector
159 { // beginning diagnostic_messages_ vector
160 {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
172 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
184 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
197 } // end diagnostic_messages_ vector
198 })} // end message_set entry
199 } // end message_set vector
201 for(std::shared_ptr<message_set_t> cms: message_set_)
203 vect_ptr_msg_def_t messages_definition = cms->get_messages_definition();
204 for(std::shared_ptr<message_definition_t> cmd : messages_definition)
206 cmd->set_parent(cms);
207 std::vector<std::shared_ptr<signal_t>> signals = cmd->get_signals();
208 for(std::shared_ptr<signal_t> sig: signals)
210 sig->set_parent(cmd);
214 std::vector<std::shared_ptr<diagnostic_message_t>> diagnostic_messages = cms->get_diagnostic_messages();
215 for(std::shared_ptr<diagnostic_message_t> dm : diagnostic_messages)
222 const std::string application_t::get_diagnostic_bus() const