summaryrefslogtreecommitdiffstats
path: root/examples/basic/application-generated.cpp
diff options
context:
space:
mode:
authorRomain Forlot <romain.forlot@iot.bzh>2019-11-19 12:44:05 +0100
committerRomain Forlot <romain.forlot@iot.bzh>2020-01-09 15:55:03 +0100
commit5178fbebb1b2aa6a25c50259f2545e97502c4248 (patch)
tree78c67a2ff72a193dba297b8afd33fe2757cb1912 /examples/basic/application-generated.cpp
parent857547cbdb44eac387bda44c2a61e32ca014e564 (diff)
examples: Update using new Generator
New generator including new signals capabilities: - sign - big_endian frame - default length Bug-AGL: SPEC-2988 Change-Id: Icf2e4dd7ef880a73527103c90a8063cf3d042e41 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
Diffstat (limited to 'examples/basic/application-generated.cpp')
-rw-r--r--examples/basic/application-generated.cpp101
1 files changed, 84 insertions, 17 deletions
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>(message_set_t{0,"example",
{ // beginning message_definition_ vector
- {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,
+ {std::make_shared<message_definition_t>(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> (signal_t{
"engine_speed",// generic_name
@@ -54,8 +76,9 @@ application_t::application_t()
nullptr,// encoder
false,// received
std::make_pair<bool, int>(false, 0),// multiplex
- 0,// is_big_endian
- 0,// is_signed
+ false,// is_big_endian
+ static_cast<sign_t>(0),// signed
+ -1,// bit_sign_position
""// unit
})},
{std::make_shared<signal_t> (signal_t{
@@ -82,8 +105,9 @@ application_t::application_t()
nullptr,// encoder
false,// received
std::make_pair<bool, int>(false, 0),// multiplex
- 0,// is_big_endian
- 0,// is_signed
+ false,// is_big_endian
+ static_cast<sign_t>(0),// signed
+ -1,// bit_sign_position
""// unit
})},
{std::make_shared<signal_t> (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<bool, int>(false, 0),// multiplex
- 0,// is_big_endian
- 0,// is_signed
+ false,// is_big_endian
+ static_cast<sign_t>(0),// signed
+ -1,// bit_sign_position
""// unit
})},
{std::make_shared<signal_t> (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<bool, int>(false, 0),// multiplex
- 0,// is_big_endian
- 0,// is_signed
+ false,// is_big_endian
+ static_cast<sign_t>(0),// signed
+ -1,// bit_sign_position
""// unit
})},
{std::make_shared<signal_t> (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<bool, int>(false, 0),// multiplex
- 0,// is_big_endian
- 0,// is_signed
+ false,// is_big_endian
+ static_cast<sign_t>(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<message_set_t> cms: message_set_)
{
- vect_ptr_msg_def_t messages_definition = cms->get_messages_definition();
+ std::vector<std::shared_ptr<message_definition_t>> messages_definition = cms->get_messages_definition();
for(std::shared_ptr<message_definition_t> 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_t> 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_t> 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_t> 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_t> 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;
+}
+