X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=examples%2Fbasic%2Fapplication-generated.cpp;h=97482f65266ab6ffab5c00eea7b5b8da40b7ee2d;hb=e671dc14af007ad96edc824a4373e4c52b5cf070;hp=bf3210678e88121c12256b3dfad44cd592a42ed4;hpb=444f76300718c38269aca8b731cb01353baf9f68;p=apps%2Fagl-service-can-low-level.git diff --git a/examples/basic/application-generated.cpp b/examples/basic/application-generated.cpp index bf321067..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,7 +56,7 @@ 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,"ECM_z_5D2", 0, false, 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 @@ -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{ @@ -82,8 +105,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{ @@ -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{ @@ -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{ @@ -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 @@ -200,7 +227,7 @@ application_t::application_t() { for(std::shared_ptr cms: message_set_) { - vect_ptr_msg_def_t messages_definition = cms->get_messages_definition(); + std::vector> messages_definition = cms->get_messages_definition(); for(std::shared_ptr cmd : messages_definition) { cmd->set_parent(cms); @@ -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; +} +