X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=examples%2Fbasic%2Fapplication-generated.cpp;h=97482f65266ab6ffab5c00eea7b5b8da40b7ee2d;hb=refs%2Fchanges%2F79%2F23379%2F3;hp=e05397ad3ad782ebce6bc8d7838ab37e88be1fb6;hpb=1ad897412bef84e380a6eb31c00233a0b7f8cbe0;p=apps%2Fagl-service-can-low-level.git diff --git a/examples/basic/application-generated.cpp b/examples/basic/application-generated.cpp index e05397ad..97482f65 100644 --- a/examples/basic/application-generated.cpp +++ b/examples/basic/application-generated.cpp @@ -2,6 +2,28 @@ #include "../can/can-decoder.hpp" #include "../can/can-encoder.hpp" +#include "can/canread.h" + +using openxc::can::read::publishNumericalMessage; + +void handleSteeringWheelMessage(CanMessage* message, + CanSignal* signals, int signalCount, Pipeline* pipeline) { + publishNumericalMessage("latitude", 42.0, pipeline); +} + +openxc_DynamicField handleInverted(CanSignal* signal, CanSignal* signals, + int signalCount, float value, bool* send) { + return openxc::payload::wrapNumber(value * -1); +} + +void initializeMyStuff() { } + +void initializeOtherStuff() { } + +void myLooper() { + // this function will be called once, each time through the main loop, after + // all CAN message processing has been completed +} // >>>>> handlers.cpp >>>>> #include "can/canread.h" @@ -34,14 +56,14 @@ application_t::application_t() , message_set_{ {std::make_shared(message_set_t{0,"example", { // beginning message_definition_ vector - {std::make_shared(message_definition_t{"hs",0x128,0,0,message_format_t::STANDARD,frequency_clock_t(5.00000f),true, + {std::make_shared(message_definition_t{"hs",0x128,"ECM_z_5D2",8,0,true,frequency_clock_t(5.00000f),true, { // beginning signals vector {std::make_shared (signal_t{ "engine_speed",// generic_name 12,// bit_position 8,// bit_size 1.00000f,// factor - 0.00000,// offset + 0.00000f,// offset 0,// min_value 0,// max_value frequency_clock_t(15.0000f),// frequency @@ -54,8 +76,9 @@ application_t::application_t() nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex - 0,// is_big_endian - 0,// is_signed + false,// is_big_endian + static_cast(0),// signed + -1,// bit_sign_position ""// unit })}, {std::make_shared (signal_t{ @@ -63,7 +86,7 @@ application_t::application_t() 41,// bit_position 3,// bit_size 1.00000f,// factor - 0.00000,// offset + 0.00000f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency @@ -78,12 +101,13 @@ application_t::application_t() {3,"THIRD"} },// states false,// writable - nullptr,// decoder + decoder_t::decode_state,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex - 0,// is_big_endian - 0,// is_signed + false,// is_big_endian + static_cast(0),// signed + -1,// bit_sign_position ""// unit })}, {std::make_shared (signal_t{ @@ -91,7 +115,7 @@ application_t::application_t() 52,// bit_position 12,// bit_size 0.153920f,// factor - 0.00000,// offset + 0.00000f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency @@ -100,12 +124,13 @@ application_t::application_t() { },// states false,// writable - handleUnsignedSteeringWheelAngle,// decoder + decoder_t::v1_to_v2_gnedSteeringWheelAngle,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex - 0,// is_big_endian - 0,// is_signed + false,// is_big_endian + static_cast(0),// signed + -1,// bit_sign_position ""// unit })}, {std::make_shared (signal_t{ @@ -113,7 +138,7 @@ application_t::application_t() 44,// bit_position 12,// bit_size 1.00000f,// factor - 0.00000,// offset + 0.00000f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency @@ -122,12 +147,13 @@ application_t::application_t() { },// states false,// writable - ignoreDecoder,// decoder + decoder_t::v1_to_v2_der,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex - 0,// is_big_endian - 0,// is_signed + false,// is_big_endian + static_cast(0),// signed + -1,// bit_sign_position ""// unit })}, {std::make_shared (signal_t{ @@ -135,7 +161,7 @@ application_t::application_t() 52,// bit_position 12,// bit_size 1.00000f,// factor - 0.00000,// offset + 0.00000f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency @@ -144,12 +170,13 @@ application_t::application_t() { },// states false,// writable - ignoreDecoder,// decoder + decoder_t::v1_to_v2_der,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex - 0,// is_big_endian - 0,// is_signed + false,// is_big_endian + static_cast(0),// signed + -1,// bit_sign_position ""// unit })} } // end signals vector @@ -164,7 +191,7 @@ application_t::application_t() 0, UNIT::INVALID, 1.00000f, - handleObd2Pid, + decoder_t::v1_to_v2_Pid, nullptr, true, false @@ -188,7 +215,7 @@ application_t::application_t() 0, UNIT::INVALID, 1.00000f, - handleMyDiagRequest, + decoder_t::v1_to_v2_agRequest, nullptr, true, false @@ -225,3 +252,43 @@ const std::string application_t::get_diagnostic_bus() const } +openxc_DynamicField decoder_t::v1_to_v2_gnedSteeringWheelAngle(signal_t& signal, std::shared_ptr message, bool* send){ + float value = decoder_t::parse_signal_bitfield(signal, message); + openxc_DynamicField ret = decoder_t::gnedSteeringWheelAngle(signal, value, send); + if ((signal.get_last_value() == value && !signal.get_send_same()) || !*send ){ + *send = false; + } + signal.set_last_value(value); + return ret; +} + +openxc_DynamicField decoder_t::v1_to_v2_der(signal_t& signal, std::shared_ptr message, bool* send){ + float value = decoder_t::parse_signal_bitfield(signal, message); + openxc_DynamicField ret = decoder_t::der(signal, value, send); + if ((signal.get_last_value() == value && !signal.get_send_same()) || !*send ){ + *send = false; + } + signal.set_last_value(value); + return ret; +} + +openxc_DynamicField decoder_t::v1_to_v2_Pid(signal_t& signal, std::shared_ptr message, bool* send){ + float value = decoder_t::parse_signal_bitfield(signal, message); + openxc_DynamicField ret = decoder_t::Pid(signal, value, send); + if ((signal.get_last_value() == value && !signal.get_send_same()) || !*send ){ + *send = false; + } + signal.set_last_value(value); + return ret; +} + +openxc_DynamicField decoder_t::v1_to_v2_agRequest(signal_t& signal, std::shared_ptr message, bool* send){ + float value = decoder_t::parse_signal_bitfield(signal, message); + openxc_DynamicField ret = decoder_t::agRequest(signal, value, send); + if ((signal.get_last_value() == value && !signal.get_send_same()) || !*send ){ + *send = false; + } + signal.set_last_value(value); + return ret; +} +