1 #include <binding/application.hpp>
2 #include <can/can-decoder.hpp>
3 #include <can/can-encoder.hpp>
6 CTLP_CAPI_REGISTER("example");
8 #include "can/canread.h"
10 using openxc::can::read::publishNumericalMessage;
12 void handleSteeringWheelMessage(CanMessage* message,
13 CanSignal* signals, int signalCount, Pipeline* pipeline) {
14 publishNumericalMessage("latitude", 42.0, pipeline);
17 openxc_DynamicField handleInverted(CanSignal* signal, CanSignal* signals,
18 int signalCount, float value, bool* send) {
19 return openxc::payload::wrapNumber(value * -1);
22 void initializeMyStuff() { }
24 void initializeOtherStuff() { }
27 // this function will be called once, each time through the main loop, after
28 // all CAN message processing has been completed
31 // >>>>> handlers.cpp >>>>>
32 #include "can/canread.h"
34 using openxc::can::read::publishNumericalMessage;
36 void handleSteeringWheelMessage(CanMessage* message,
37 CanSignal* signals, int signalCount, Pipeline* pipeline) {
38 publishNumericalMessage("latitude", 42.0, pipeline);
41 openxc_DynamicField handleInverted(CanSignal* signal, CanSignal* signals,
42 int signalCount, float value, bool* send) {
43 return openxc::payload::wrapNumber(value * -1);
46 void initializeMyStuff() { }
48 void initializeOtherStuff() { }
51 // this function will be called once, each time through the main loop, after
52 // all CAN message processing has been completed
55 // <<<<< handlers.cpp <<<<<
57 std::shared_ptr<message_set_t> cms = std::make_shared<message_set_t>(message_set_t{0,"example",
58 { // beginning message_definition_ vector
59 {std::make_shared<message_definition_t>(message_definition_t{"hs",0x128,"ECM_z_5D2",8,0,frequency_clock_t(5.00000f),true,
60 { // beginning signals vector
61 {std::make_shared<signal_t> (signal_t{
62 "engine_speed",// generic_name
69 frequency_clock_t(15.0000f),// frequency
71 false,// force_send_changed
78 std::make_pair<bool, int>(false, 0),// multiplex
79 static_cast<sign_t>(0),// signed
80 -1,// bit_sign_position
83 {std::make_shared<signal_t> (signal_t{
84 "GearshiftPosition",// generic_name
91 frequency_clock_t(0.00000f),// frequency
93 false,// force_send_changed
103 decoder_t::decode_state,// decoder
106 std::make_pair<bool, int>(false, 0),// multiplex
107 static_cast<sign_t>(0),// signed
108 -1,// bit_sign_position
111 {std::make_shared<signal_t> (signal_t{
112 "SteeringWheelAngle",// generic_name
119 frequency_clock_t(0.00000f),// frequency
121 false,// force_send_changed
125 decoder_t::gnedSteeringWheelAngle,// decoder
128 std::make_pair<bool, int>(false, 0),// multiplex
129 static_cast<sign_t>(0),// signed
130 -1,// bit_sign_position
133 {std::make_shared<signal_t> (signal_t{
134 "steering_wheel_angle_error",// generic_name
141 frequency_clock_t(0.00000f),// frequency
143 false,// force_send_changed
147 decoder_t::der,// decoder
150 std::make_pair<bool, int>(false, 0),// multiplex
151 static_cast<sign_t>(0),// signed
152 -1,// bit_sign_position
155 {std::make_shared<signal_t> (signal_t{
156 "steering_angle_sign",// generic_name
163 frequency_clock_t(0.00000f),// frequency
165 false,// force_send_changed
169 decoder_t::der,// decoder
172 std::make_pair<bool, int>(false, 0),// multiplex
173 static_cast<sign_t>(0),// signed
174 -1,// bit_sign_position
177 } // end signals vector
178 })} // end message_definition entry
179 }, // end message_definition vector
180 { // beginning diagnostic_messages_ vector
181 {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
193 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
205 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
212 decoder_t::agRequest,
218 } // end diagnostic_messages_ vector
219 }); // end message_set entry
221 CTLP_ONLOAD(plugin, handle) {
222 afb_api_t api = (afb_api_t) plugin->api;
223 CtlConfigT* CtlConfig = (CtlConfigT*) afb_api_get_userdata(api);
224 application_t* app = (application_t*) getExternalData(CtlConfig);
226 return app->add_message_set(cms);