From 014ba2dd29eaadb4d61948ca417c25112f76ee0e Mon Sep 17 00:00:00 2001 From: Romain Forlot Date: Tue, 13 Jun 2017 17:20:05 +0200 Subject: Import CAN generator from low-level-can-service Also use the app-templates CMake helpers. Change-Id: I034e5efa9baa0f686a081f60df5c3588e4b3bd51 Signed-off-by: Romain Forlot --- tests/basic.json | 112 +++++++++++++++++++++++++++++ tests/generated.cpp | 197 ++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/handlers.cpp | 22 ++++++ tests/signals.json | 121 ++++++++++++++++++++++++++++++++ 4 files changed, 452 insertions(+) create mode 100755 tests/basic.json create mode 100644 tests/generated.cpp create mode 100644 tests/handlers.cpp create mode 100755 tests/signals.json (limited to 'tests') diff --git a/tests/basic.json b/tests/basic.json new file mode 100755 index 0000000..32cd1b4 --- /dev/null +++ b/tests/basic.json @@ -0,0 +1,112 @@ +{ + "name": "example", + "extra_sources": [ + ], + "initializers": [ + ], + "loopers": [ + ], + "buses": { + "hs": { + "controller": 1, + "speed": 500000 + }, + "can0": { + "controller": 1, + "speed": 111111 + } + }, + "commands": [ + { + } + ], + "messages": { + "0x128": { + "name": "ECM_z_5D2", + "bus": "can0", + "signals": { + "StrAnglAct": { + "generic_name": "SteeringWheelAngle", + "bit_position": 52, + "bit_size": 12, + "factor": 0.15392, + "offset": 0 + }, + "StrAnglSign": { + "generic_name": "steering_angle_sign", + "bit_position": 52, + "bit_size": 12 + }, + "EngSpd": { + "generic_name": "engine_speed", + "max_frequency": 15, + "bit_position": 12, + "bit_size": 8 + }, + "GrshftPos": { + "generic_name": "GearshiftPosition", + "bit_position": 41, + "bit_size": 3, + "states": { + "FIRST": [ 1 ], + "SECOND": [ 2 ], + "THIRD": [ 3 ], + "FOURTH": [ 4 ], + "REVERSE": [ 5 ], + "NEUTRAL": [ 6 ] + } + }, + "StrAnglErr": { + "generic_name": "steering_wheel_angle_error", + "bit_position": 44, + "bit_size": 12 + } + }, + "handlers": [ ] + }, + "0x813": { + "name": "ECM_z_5D2", + "bus": "can0", + "signals": { + "ABC": { + "generic_name": "abc", + "bit_position": 52, + "bit_size": 12, + "factor": 0.15392, + "offset": 0 + }, + "DEF": { + "generic_name": "def", + "decoder": "decoder_t::ignoreDecoder", + "bit_position": 52, + "bit_size": 12 + } + } + } + }, + "diagnostic_messages": [ + { + "bus": "hs", + "id": 2015, + "mode": 1, + "pid": 12, + "frequency": 1, + "decoder": "decoder_t::decode_obd2_response" + }, + { + "bus": "hs", + "id": 2016, + "mode": 2, + "pid": 12, + "frequency": 1 + }, + { + "bus": "hs", + "id": 2016, + "mode": 22, + "pid": 6, + "frequency": 1, + "decoder": "decoder_t::decode_obd2_response" + } + ] +} diff --git a/tests/generated.cpp b/tests/generated.cpp new file mode 100644 index 0000000..9768860 --- /dev/null +++ b/tests/generated.cpp @@ -0,0 +1,197 @@ +#include "application.hpp" +#include "can/can-decoder.hpp" + + +// >>>>> handlers.cpp >>>>> +#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 <<<<< + +application_t::application_t() + : can_message_set_{0, "example", 2, 2, 7, 1, 3} + , can_message_definition_ + { + { + can_message_definition_t(0, "can0", 0x128, can_message_format_t::STANDARD, frequency_clock_t(0.00000f), true), + can_message_definition_t(0, "can0", 0x813, can_message_format_t::STANDARD, frequency_clock_t(0.00000f), true) + } + } + , can_signals_ + { + { + { + 0, + 0, + "engine_speed", + 12, + 8, + 1.00000, + 0, + 0, + 0, + frequency_clock_t(15.0000f), + true, + false, + { + }, + false, + nullptr, + nullptr, + false + }, + { + 0, + 0, + "GearshiftPosition", + 41, + 3, + 1.00000, + 0, + 0, + 0, + frequency_clock_t(0.00000f), + true, + false, + { + {1, "FIRST"}, + {4, "FOURTH"}, + {6, "NEUTRAL"}, + {5, "REVERSE"}, + {2, "SECOND"}, + {3, "THIRD"} + }, + false, + nullptr, + nullptr, + false + }, + { + 0, + 0, + "SteeringWheelAngle", + 52, + 12, + 0.153920, + 0, + 0, + 0, + frequency_clock_t(0.00000f), + true, + false, + { + }, + false, + handleUnsignedSteeringWheelAngle, + nullptr, + false + }, + { + 0, + 0, + "steering_wheel_angle_error", + 44, + 12, + 1.00000, + 0, + 0, + 0, + frequency_clock_t(0.00000f), + true, + false, + { + }, + false, + ignoreDecoder, + nullptr, + false + }, + { + 0, + 0, + "steering_angle_sign", + 52, + 12, + 1.00000, + 0, + 0, + 0, + frequency_clock_t(0.00000f), + true, + false, + { + }, + false, + ignoreDecoder, + nullptr, + false + } + }, + { + { + 0, + 1, + "abc", + 52, + 12, + 0.153920, + 0, + 0, + 0, + frequency_clock_t(0.00000f), + true, + false, + { + }, + false, + handleUnsignedSteeringWheelAngle, + nullptr, + false + }, + { + 0, + 1, + "def", + 52, + 12, + 1.00000, + 0, + 0, + 0, + frequency_clock_t(0.00000f), + true, + false, + { + }, + false, + decoder_t::ignoreDecoder, + nullptr, + false + } + } + } + //, obd2_signals_{/*...*/} +{ +} + + diff --git a/tests/handlers.cpp b/tests/handlers.cpp new file mode 100644 index 0000000..4316f15 --- /dev/null +++ b/tests/handlers.cpp @@ -0,0 +1,22 @@ +#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 +} diff --git a/tests/signals.json b/tests/signals.json new file mode 100755 index 0000000..648427a --- /dev/null +++ b/tests/signals.json @@ -0,0 +1,121 @@ +{ + "name": "example", + "extra_sources": [ + "handlers.cpp" + ], + "initializers": [ + "initializeMyStuff" + ], + "loopers": [ + "myLooper" + ], + "buses": { + "hs": { + "controller": 1, + "speed": 500000 + }, + "can0": { + "controller": 1, + "speed": 111111 + } + }, + "commands": [ + { + "name": "turn_signal_status", + "handler": "handleTurnSignalCommand" + } + ], + "messages": { + "0x128": { + "name": "ECM_z_5D2", + "bus": "can0", + "signals": { + "StrAnglAct": { + "generic_name": "SteeringWheelAngle", + "bit_position": 52, + "bit_size": 12, + "factor": 0.15392, + "offset": 0, + "decoder": "handleUnsignedSteeringWheelAngle" + }, + "StrAnglSign": { + "generic_name": "steering_angle_sign", + "decoder": "ignoreDecoder", + "bit_position": 52, + "bit_size": 12 + }, + "EngSpd": { + "generic_name": "engine_speed", + "max_frequency": 15, + "bit_position": 12, + "bit_size": 8 + }, + "GrshftPos": { + "generic_name": "GearshiftPosition", + "bit_position": 41, + "bit_size": 3, + "states": { + "FIRST": [ 1 ], + "SECOND": [ 2 ], + "THIRD": [ 3 ], + "FOURTH": [ 4 ], + "REVERSE": [ 5 ], + "NEUTRAL": [ 6 ] + } + }, + "StrAnglErr": { + "decoder": "ignoreDecoder", + "generic_name": "steering_wheel_angle_error", + "bit_position": 44, + "bit_size": 12 + } + }, + "handlers": [ "handleSteeringWheelMessage" ] + }, + "0x813": { + "name": "ECM_z_5D2", + "bus": "can0", + "signals": { + "ABC": { + "generic_name": "abc", + "bit_position": 52, + "bit_size": 12, + "factor": 0.15392, + "offset": 0, + "decoder": "handleUnsignedSteeringWheelAngle" + }, + "DEF": { + "generic_name": "def", + "decoder": "decoder_t::ignoreDecoder", + "bit_position": 52, + "bit_size": 12 + } + } + } + }, + "diagnostic_messages": [ + { + "bus": "hs", + "id": 2015, + "mode": 1, + "pid": 12, + "frequency": 1, + "decoder": "handleObd2Pid" + }, + { + "bus": "hs", + "id": 2016, + "mode": 2, + "pid": 12, + "frequency": 1 + }, + { + "bus": "hs", + "id": 2016, + "mode": 22, + "pid": 6, + "frequency": 1, + "decoder": "handleMyDiagRequest" + } + ] +} -- cgit 1.2.3-korg