From 8c0a3d45ca37f710100afab065b07e82682dc1ef Mon Sep 17 00:00:00 2001
From: Arthur Guyader <arthur.guyader@iot.bzh>
Date: Tue, 2 Jul 2019 17:46:16 +0200
Subject: Update examples and can_samples

Update of examples for new features (is_fd,is_extended,is_j1939).

Bug-AGL: SPEC-2386

Signed-off-by: Arthur Guyader <arthur.guyader@iot.bzh>
Change-Id: I8c3afbafdde4f5818d73c0e71a3b7e47fb7d8fc6
---
 can_samples/j1939/j1939-one-frame                 |    1 +
 examples/agl-vcar/application-generated.cpp       |   50 +-
 examples/agl-vcar/signals.json                    |   18 +
 examples/basic/application-generated.cpp          |   14 +-
 examples/basic/signals.json                       |    3 +
 examples/engine/application-generated.cpp         |   18 +-
 examples/engine/signals.json                      |    9 +
 examples/hvac/application-generated.cpp           |   10 +-
 examples/hvac/signals.json                        |    3 +
 examples/j1939/application-generated.cpp          |  598 ++++++--
 examples/j1939/j1939_parse.json                   |  191 ++-
 examples/tests/application-generated.cpp          | 1691 +++++++++++++++++++++
 examples/toyota/auris/application-generated.cpp   |   40 +-
 examples/toyota/auris/signals.json                |   15 +
 low-can-binding/binding/application-generated.cpp | 1189 +++++++++++++--
 15 files changed, 3460 insertions(+), 390 deletions(-)
 create mode 100644 can_samples/j1939/j1939-one-frame
 create mode 100644 examples/tests/application-generated.cpp

diff --git a/can_samples/j1939/j1939-one-frame b/can_samples/j1939/j1939-one-frame
new file mode 100644
index 00000000..90b89c9d
--- /dev/null
+++ b/can_samples/j1939/j1939-one-frame
@@ -0,0 +1 @@
+(08255.460200) can0 0CF00203#CD402800043828FF
diff --git a/examples/agl-vcar/application-generated.cpp b/examples/agl-vcar/application-generated.cpp
index 38d26cc1..35d847b7 100644
--- a/examples/agl-vcar/application-generated.cpp
+++ b/examples/agl-vcar/application-generated.cpp
@@ -7,14 +7,14 @@ application_t::application_t()
 	, message_set_{
 		{std::make_shared<message_set_t>(message_set_t{0,"AGL Virtual Car",
 			{ // beginning message_definition_ vector
-				{std::make_shared<message_definition_t>(message_definition_t{"ls",0x30,0,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
+				{std::make_shared<message_definition_t>(message_definition_t{"ls",0x30,"",0,false,message_format_t::EXTENDED,frequency_clock_t(5.00000f),true,
 					{ // beginning signals vector
 						{std::make_shared<signal_t> (signal_t{
 							"hvac.fan.speed",// generic_name
 							32,// bit_position
 							8,// bit_size
 							23.5294f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -36,7 +36,7 @@ application_t::application_t()
 							0,// bit_position
 							8,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -58,7 +58,7 @@ application_t::application_t()
 							8,// bit_position
 							8,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -80,7 +80,7 @@ application_t::application_t()
 							16,// bit_position
 							8,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -99,14 +99,14 @@ application_t::application_t()
 						})}
 					} // end signals vector
 				})} // end message_definition entry
-,				{std::make_shared<message_definition_t>(message_definition_t{"hs",0x3D9,0,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
+,				{std::make_shared<message_definition_t>(message_definition_t{"hs",0x3D9,"",0,true,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
 					{ // beginning signals vector
 						{std::make_shared<signal_t> (signal_t{
 							"engine.speed",// generic_name
 							16,// bit_position
 							16,// bit_size
 							0.250000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -128,7 +128,7 @@ application_t::application_t()
 							55,// bit_position
 							1,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -150,7 +150,7 @@ application_t::application_t()
 							8,// bit_position
 							8,// bit_size
 							0.392157f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -169,14 +169,14 @@ application_t::application_t()
 						})}
 					} // end signals vector
 				})} // end message_definition entry
-,				{std::make_shared<message_definition_t>(message_definition_t{"hs",0x3E9,0,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
+,				{std::make_shared<message_definition_t>(message_definition_t{"hs",0x3E9,"",0,false,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
 					{ // beginning signals vector
 						{std::make_shared<signal_t> (signal_t{
 							"vehicle.average.speed",// generic_name
 							0,// bit_position
 							15,// bit_size
 							0.0156250f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -195,14 +195,14 @@ application_t::application_t()
 						})}
 					} // end signals vector
 				})} // end message_definition entry
-,				{std::make_shared<message_definition_t>(message_definition_t{"hs",0x4D1,0,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
+,				{std::make_shared<message_definition_t>(message_definition_t{"hs",0x4D1,"",0,false,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
 					{ // beginning signals vector
 						{std::make_shared<signal_t> (signal_t{
 							"engine.oil.temp",// generic_name
 							16,// bit_position
 							8,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -224,7 +224,7 @@ application_t::application_t()
 							7,// bit_position
 							1,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -243,14 +243,14 @@ application_t::application_t()
 						})}
 					} // end signals vector
 				})} // end message_definition entry
-,				{std::make_shared<message_definition_t>(message_definition_t{"hs",0x620,0,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
+,				{std::make_shared<message_definition_t>(message_definition_t{"hs",0x620,"",0,false,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
 					{ // beginning signals vector
 						{std::make_shared<signal_t> (signal_t{
 							"doors.boot.open",// generic_name
 							47,// bit_position
 							1,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -272,7 +272,7 @@ application_t::application_t()
 							43,// bit_position
 							1,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -294,7 +294,7 @@ application_t::application_t()
 							44,// bit_position
 							1,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -316,7 +316,7 @@ application_t::application_t()
 							46,// bit_position
 							1,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -338,7 +338,7 @@ application_t::application_t()
 							45,// bit_position
 							4,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -357,14 +357,14 @@ application_t::application_t()
 						})}
 					} // end signals vector
 				})} // end message_definition entry
-,				{std::make_shared<message_definition_t>(message_definition_t{"hs",0x799,0,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
+,				{std::make_shared<message_definition_t>(message_definition_t{"hs",0x799,"",0,false,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
 					{ // beginning signals vector
 						{std::make_shared<signal_t> (signal_t{
 							"windows.front_left.open",// generic_name
 							43,// bit_position
 							1,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -386,7 +386,7 @@ application_t::application_t()
 							44,// bit_position
 							1,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -408,7 +408,7 @@ application_t::application_t()
 							46,// bit_position
 							1,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -430,7 +430,7 @@ application_t::application_t()
 							45,// bit_position
 							4,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
diff --git a/examples/agl-vcar/signals.json b/examples/agl-vcar/signals.json
index 8d64b52d..679ab68e 100644
--- a/examples/agl-vcar/signals.json
+++ b/examples/agl-vcar/signals.json
@@ -7,6 +7,9 @@
 	"messages": {
 		"0x620": {
 			"bus": "hs",
+			"is_fd" : false,
+			"is_extended": false,
+			"is_j1939" : false,
 			"signals": {
 				"doors.driver.open": {
 					"generic_name": "doors.front_left.open",
@@ -47,6 +50,9 @@
 	},
 		"0x799": {
 			"bus": "hs",
+			"is_fd" : false,
+			"is_extended": false,
+			"is_j1939" : false,
 			"signals": {
 				"windows.driver.open": {
 					"generic_name": "windows.front_left.open",
@@ -80,6 +86,9 @@
 	},
 	"0x3D9": {
 	"bus": "hs",
+	"is_fd" : true,
+	"is_extended": false,
+	"is_j1939" : false,
 	"signals": {
 		"PT_FuelLevelPct": {
 			"generic_name": "fuel.level",
@@ -107,6 +116,9 @@
 	},
 	"0x4D1": {
 	"bus": "hs",
+	"is_fd" : false,
+	"is_extended": false,
+	"is_j1939" : false,
 	"signals": {
 		"PT_EngineOilTempHigh": {
 			"generic_name": "engine.oil.temp.high",
@@ -127,6 +139,9 @@
 	},
 	"0x3E9": {
 	"bus": "hs",
+	"is_fd" : false,
+	"is_extended": false,
+	"is_j1939" : false,
 	"signals": {
 		"PT_VehicleAvgSpeed": {
 			"generic_name": "vehicle.average.speed",
@@ -139,6 +154,9 @@
 	},
 	"0x30": {
 	"bus": "ls",
+	"is_fd" : false,
+	"is_extended": true,
+	"is_j1939" : false,
 	"signals": {
 		"LeftTemperature": {
 			"generic_name": "hvac.temperature.left",
diff --git a/examples/basic/application-generated.cpp b/examples/basic/application-generated.cpp
index e05397ad..19857603 100644
--- a/examples/basic/application-generated.cpp
+++ b/examples/basic/application-generated.cpp
@@ -34,14 +34,14 @@ 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,0,0,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
+				{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,
 					{ // beginning signals vector
 						{std::make_shared<signal_t> (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
@@ -63,7 +63,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,7 +78,7 @@ application_t::application_t()
 								{3,"THIRD"}
 							},// states
 							false,// writable
-							nullptr,// decoder
+							decoder_t::decode_state,// decoder
 							nullptr,// encoder
 							false,// received
 							std::make_pair<bool, int>(false, 0),// multiplex
@@ -91,7 +91,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
@@ -113,7 +113,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
@@ -135,7 +135,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
diff --git a/examples/basic/signals.json b/examples/basic/signals.json
index 8d9a2d24..dc2e346c 100644
--- a/examples/basic/signals.json
+++ b/examples/basic/signals.json
@@ -27,6 +27,9 @@
         "0x128": {
             "name": "ECM_z_5D2",
             "bus": "hs",
+            "is_fd" : false,
+            "is_extended": false,
+            "is_j1939" : false,
             "signals": {
                 "StrAnglAct": {
                     "generic_name": "SteeringWheelAngle",
diff --git a/examples/engine/application-generated.cpp b/examples/engine/application-generated.cpp
index 3b9ecfde..bc66b5ec 100644
--- a/examples/engine/application-generated.cpp
+++ b/examples/engine/application-generated.cpp
@@ -7,14 +7,14 @@ 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",0x3D9,0,0,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
+				{std::make_shared<message_definition_t>(message_definition_t{"hs",0x3D9,"",0,false,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
 					{ // beginning signals vector
 						{std::make_shared<signal_t> (signal_t{
 							"engine.speed",// generic_name
 							16,// bit_position
 							16,// bit_size
 							0.250000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -36,7 +36,7 @@ application_t::application_t()
 							55,// bit_position
 							1,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -58,7 +58,7 @@ application_t::application_t()
 							8,// bit_position
 							8,// bit_size
 							0.392157f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -77,14 +77,14 @@ application_t::application_t()
 						})}
 					} // end signals vector
 				})} // end message_definition entry
-,				{std::make_shared<message_definition_t>(message_definition_t{"hs",0x3E9,0,0,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
+,				{std::make_shared<message_definition_t>(message_definition_t{"hs",0x3E9,"",0,false,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
 					{ // beginning signals vector
 						{std::make_shared<signal_t> (signal_t{
 							"vehicle.average.speed",// generic_name
 							0,// bit_position
 							15,// bit_size
 							0.0156250f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -103,14 +103,14 @@ application_t::application_t()
 						})}
 					} // end signals vector
 				})} // end message_definition entry
-,				{std::make_shared<message_definition_t>(message_definition_t{"hs",0x4D1,0,0,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
+,				{std::make_shared<message_definition_t>(message_definition_t{"hs",0x4D1,"",0,false,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
 					{ // beginning signals vector
 						{std::make_shared<signal_t> (signal_t{
 							"engine.oil.temp",// generic_name
 							16,// bit_position
 							8,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -132,7 +132,7 @@ application_t::application_t()
 							7,// bit_position
 							1,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
diff --git a/examples/engine/signals.json b/examples/engine/signals.json
index 83ed38e2..a64fa138 100644
--- a/examples/engine/signals.json
+++ b/examples/engine/signals.json
@@ -7,6 +7,9 @@
 	"messages": {
 	"0x3D9": {
 	"bus": "hs",
+	"is_fd" : false,
+	"is_extended": false,
+	"is_j1939" : false,
 	"signals": {
 		"PT_FuelLevelPct": {
 			"generic_name": "fuel.level",
@@ -34,6 +37,9 @@
 	},
 		"0x4D1": {
 		"bus": "hs",
+		"is_fd" : false,
+		"is_extended": false,
+		"is_j1939" : false,
 		"signals": {
 			"PT_EngineOilTempHigh": {
 				"generic_name": "engine.oil.temp.high",
@@ -54,6 +60,9 @@
 		},
 		"0x3E9": {
 		"bus": "hs",
+		"is_fd" : false,
+		"is_extended": false,
+		"is_j1939" : false,
 		"signals": {
 			"PT_VehicleAvgSpeed": {
 				"generic_name": "vehicle.average.speed",
diff --git a/examples/hvac/application-generated.cpp b/examples/hvac/application-generated.cpp
index de8f2240..a716654e 100644
--- a/examples/hvac/application-generated.cpp
+++ b/examples/hvac/application-generated.cpp
@@ -7,14 +7,14 @@ 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{"ls",0x30,0,0,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
+				{std::make_shared<message_definition_t>(message_definition_t{"ls",0x30,"",0,false,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
 					{ // beginning signals vector
 						{std::make_shared<signal_t> (signal_t{
 							"hvac.fan.speed",// generic_name
 							32,// bit_position
 							8,// bit_size
 							23.5294f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -36,7 +36,7 @@ application_t::application_t()
 							0,// bit_position
 							8,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -58,7 +58,7 @@ application_t::application_t()
 							8,// bit_position
 							8,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -80,7 +80,7 @@ application_t::application_t()
 							16,// bit_position
 							8,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
diff --git a/examples/hvac/signals.json b/examples/hvac/signals.json
index 81ad64b8..dbe4cf7d 100644
--- a/examples/hvac/signals.json
+++ b/examples/hvac/signals.json
@@ -7,6 +7,9 @@
 	"messages": {
 		"0x30": {
 		"bus": "ls",
+		"is_fd" : false,
+		"is_extended": false,
+		"is_j1939" : false,
 		"signals": {
 			"LeftTemperature": {
 				"generic_name": "hvac.temperature.left",
diff --git a/examples/j1939/application-generated.cpp b/examples/j1939/application-generated.cpp
index ebb580a6..1b07b5bc 100644
--- a/examples/j1939/application-generated.cpp
+++ b/examples/j1939/application-generated.cpp
@@ -5,17 +5,16 @@
 application_t::application_t()
 	: can_bus_manager_{utils::config_parser_t{"/etc/dev-mapping.conf"}}
 	, message_set_{
-		{std::make_shared<message_set_t>(message_set_t{0,"J1939",
+		{std::make_shared<message_set_t>(message_set_t{0,"Virtual J1939",
 			{ // beginning message_definition_ vector
-
-				{std::make_shared<message_definition_t>(message_definition_t{"j1939",61442,0,message_format_t::J1939,frequency_clock_t(5.00000f),true,8,
+				{std::make_shared<message_definition_t>(message_definition_t{"j1939",61442,"ETC1",8,false,message_format_t::J1939,frequency_clock_t(5.00000f),true,
 					{ // beginning signals vector
 						{std::make_shared<signal_t> (signal_t{
-							"EngMomentaryOverspeedEnable",// generic_name
+							"Eng.Momentary.Overspeed.Enable",// generic_name
 							32,// bit_position
 							2,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -27,22 +26,21 @@ application_t::application_t()
 								{2,"Reserved"},
 								{3,"TakeNoAction"}
 							},// states
-							false,// writable
-							nullptr,// decoder
+							true,// writable
+							decoder_t::decode_state,// decoder
 							nullptr,// encoder
 							false,// received
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"",// unit
-							"Command signal used to indicate that the engine speed may be boosted up to the maximum engine overspeed value to"// comment
+							""// unit
 						})},
 						{std::make_shared<signal_t> (signal_t{
-							"MomentaryEngMaxPowerEnable",// generic_name
+							"Momentary.Eng.Max.Power.Enable",// generic_name
 							36,// bit_position
 							2,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -54,22 +52,21 @@ application_t::application_t()
 								{3,"notAvailable"},
 								{0,"notRqingMaxPowerAvailable"}
 							},// states
-							false,// writable
-							nullptr,// decoder
+							true,// writable
+							decoder_t::decode_state,// decoder
 							nullptr,// encoder
 							false,// received
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"",// unit
-							"Momentarily Requesting highest torque map from the engine control"// comment
+							""// unit
 						})},
 						{std::make_shared<signal_t> (signal_t{
-							"PercentClutchSlip",// generic_name
+							"Percent.Clutch.Slip",// generic_name
 							24,// bit_position
 							8,// bit_size
 							0.400000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -77,22 +74,21 @@ application_t::application_t()
 							false,// force_send_changed
 							{
 							},// states
-							false,// writable
+							true,// writable
 							nullptr,// decoder
 							nullptr,// encoder
 							false,// received
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"%",// unit
-							"Parameter which represents the ratio of input shaft speed to current engine speed (in percent)."// comment
+							"%"// unit
 						})},
 						{std::make_shared<signal_t> (signal_t{
-							"ProgressiveShiftDisable",// generic_name
+							"Progressive.Shift.Disable",// generic_name
 							34,// bit_position
 							2,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -104,22 +100,21 @@ application_t::application_t()
 								{2,"Reserved"},
 								{3,"TakeNoAction"}
 							},// states
-							false,// writable
-							nullptr,// decoder
+							true,// writable
+							decoder_t::decode_state,// decoder
 							nullptr,// encoder
 							false,// received
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"",// unit
-							"Command signal used to indicate that progressive shifting by the engine should be disallowed."// comment
+							""// unit
 						})},
 						{std::make_shared<signal_t> (signal_t{
-							"SrcAddrssOfCtrllngDvcFrTrnsCntrl",// generic_name
+							"Src.Addrss.Of.Ctrllng.Dvc.Fr.Trns.Cntrl",// generic_name
 							56,// bit_position
 							8,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -127,22 +122,21 @@ application_t::application_t()
 							false,// force_send_changed
 							{
 							},// states
-							false,// writable
+							true,// writable
 							nullptr,// decoder
 							nullptr,// encoder
 							false,// received
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"",// unit
-							"The source address of the SAE J1939 device currently controlling the transmission."// comment
+							""// unit
 						})},
 						{std::make_shared<signal_t> (signal_t{
-							"TransDrivelineEngaged",// generic_name
+							"Trans.Driveline.Engaged",// generic_name
 							0,// bit_position
 							2,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -154,22 +148,21 @@ application_t::application_t()
 								{2,"Error"},
 								{3,"NotAvailable"}
 							},// states
-							false,// writable
-							nullptr,// decoder
+							true,// writable
+							decoder_t::decode_state,// decoder
 							nullptr,// encoder
 							false,// received
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"",// unit
-							"Driveline engaged indicates the transmission controlled portion of the driveline is engaged sufficiently to allow a transfer"// comment
+							""// unit
 						})},
 						{std::make_shared<signal_t> (signal_t{
-							"TransInputShaftSpeed",// generic_name
+							"Trans.Input.Shaft.Speed",// generic_name
 							40,// bit_position
 							16,// bit_size
 							0.125000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -177,22 +170,21 @@ application_t::application_t()
 							false,// force_send_changed
 							{
 							},// states
-							false,// writable
+							true,// writable
 							nullptr,// decoder
 							nullptr,// encoder
 							false,// received
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"rpm",// unit
-							"Rotational velocity of the primary shaft transferring power into the transmission."// comment
+							"rpm"// unit
 						})},
 						{std::make_shared<signal_t> (signal_t{
-							"TransOutputShaftSpeed",// generic_name
+							"Trans.Output.Shaft.Speed",// generic_name
 							8,// bit_position
 							16,// bit_size
 							0.125000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -200,22 +192,21 @@ application_t::application_t()
 							false,// force_send_changed
 							{
 							},// states
-							false,// writable
+							true,// writable
 							nullptr,// decoder
 							nullptr,// encoder
 							false,// received
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"rpm",// unit
-							"Calculated speed of the transmission output shaft."// comment
+							"rpm"// unit
 						})},
 						{std::make_shared<signal_t> (signal_t{
-							"TransShiftInProcess",// generic_name
+							"Trans.Shift.In.Process",// generic_name
 							4,// bit_position
 							2,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -227,22 +218,21 @@ application_t::application_t()
 								{1,"ShiftInProcess"},
 								{0,"ShiftIsNotInProcess"}
 							},// states
-							false,// writable
-							nullptr,// decoder
+							true,// writable
+							decoder_t::decode_state,// decoder
 							nullptr,// encoder
 							false,// received
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"",// unit
-							"Indicates that the transmission is in process of shifting from the current gear to the selected gear."// comment
+							""// unit
 						})},
 						{std::make_shared<signal_t> (signal_t{
-							"TrnsTrqCnvrtrLckpTrnstnInPrcess",// generic_name
+							"Trns.Trq.Cnvrtr.Lckp.Trnstn.In.Prcess",// generic_name
 							6,// bit_position
 							2,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -254,22 +244,21 @@ application_t::application_t()
 								{1,"TransitionIsInProcess"},
 								{0,"TransitionIsNotInProcess"}
 							},// states
-							false,// writable
-							nullptr,// decoder
+							true,// writable
+							decoder_t::decode_state,// decoder
 							nullptr,// encoder
 							false,// received
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"",// unit
-							"State signal indicating whether or not the transmission torque converter lock up clutch is transitioning between being"// comment
+							""// unit
 						})},
 						{std::make_shared<signal_t> (signal_t{
-							"TrnsTrqueConverterLockupEngaged",// generic_name
+							"Trns.Trque.Converter.Lockup.Engaged",// generic_name
 							2,// bit_position
 							2,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -281,6 +270,80 @@ application_t::application_t()
 								{0,"TorqueConverterLockupDisengaged"},
 								{1,"TorqueConverterLockupEngaged"}
 							},// states
+							true,// writable
+							decoder_t::decode_state,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							""// unit
+						})}
+					} // end signals vector
+				})} // end message_definition entry
+,				{std::make_shared<message_definition_t>(message_definition_t{"j1939",61444,"EEC1",8,false,message_format_t::J1939,frequency_clock_t(5.00000f),true,
+					{ // beginning signals vector
+						{std::make_shared<signal_t> (signal_t{
+							"Actl.Eng.Prcnt.Trque.High.Resolution",// generic_name
+							4,// bit_position
+							4,// bit_size
+							0.125000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+								{0,"0000"},
+								{1,"0125"},
+								{7,"0875"},
+								{8,"1111NotAvailable"}
+							},// states
+							false,// writable
+							decoder_t::decode_state,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"%"// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Actual.Eng.Percent.Torque",// generic_name
+							16,// bit_position
+							8,// bit_size
+							1.00000f,// factor
+							-125.000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"%"// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Drivers.Demand.Eng.Percent.Torque",// generic_name
+							8,// bit_position
+							8,// bit_size
+							1.00000f,// factor
+							-125.000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
 							false,// writable
 							nullptr,// decoder
 							nullptr,// encoder
@@ -288,20 +351,154 @@ application_t::application_t()
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"",// unit
-							"State signal which indicates whether the torque converter lockup is engaged."// comment
+							"%"// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Eng.Demand.Percent.Torque",// generic_name
+							56,// bit_position
+							8,// bit_size
+							1.00000f,// factor
+							-125.000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"%"// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Eng.Speed",// generic_name
+							24,// bit_position
+							16,// bit_size
+							0.125000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"rpm"// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Eng.Starter.Mode",// generic_name
+							48,// bit_position
+							4,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+								{9,"1011Reserved"},
+								{14,"error"},
+								{15,"notAvailable"},
+								{0,"startNotRqed"},
+								{2,"starterActiveGearEngaged"},
+								{1,"starterActiveGearNotEngaged"},
+								{12,"starterInhibitedReasonUnknown"},
+								{3,"strtFnshdStrtrNtActvAftrHvngBnA"},
+								{6,"strtrInhbtdDTDrvlnEnggdOthrTrns"},
+								{5,"strtrInhbtdDTEngNtReadyForStart"},
+								{7,"strtrInhbtdDToActiveImmobilizer"},
+								{4,"strtrInhbtdDToEngAlreadyRunning"},
+								{8,"strtrInhbtdDueToStarterOvertemp"}
+							},// states
+							false,// writable
+							decoder_t::decode_state,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							""// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Eng.Torque.Mode",// generic_name
+							0,// bit_position
+							4,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+								{7,"ABS control"},
+								{5,"ASR control"},
+								{1,"Accelerator pedal/operator selec"},
+								{10,"Braking system"},
+								{2,"Cruise control"},
+								{9,"High speed governor"},
+								{0,"Low idle governor/no request (de"},
+								{15,"Not available"},
+								{3,"PTO governor"},
+								{11,"Remote accelerator"},
+								{4,"Road speed governor"},
+								{8,"Torque limiting"},
+								{6,"Transmission control"}
+							},// states
+							false,// writable
+							decoder_t::decode_state,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							""// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Src.AddrssOf.Ctrllng.Dvc.Fr.Eng.Cntrl",// generic_name
+							40,// bit_position
+							8,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							""// unit
 						})}
 					} // end signals vector
-				})}, // end message_definition entry
-
-				{std::make_shared<message_definition_t>(message_definition_t{"j1939",61449,0,message_format_t::J1939,frequency_clock_t(5.00000f),true,8,
+				})} // end message_definition entry
+,				{std::make_shared<message_definition_t>(message_definition_t{"j1939",61449,"VDC2",8,false,message_format_t::J1939,frequency_clock_t(5.00000f),true,
 					{ // beginning signals vector
 						{std::make_shared<signal_t> (signal_t{
-							"LateralAcceleration",// generic_name
+							"Lateral.Acceleration",// generic_name
 							40,// bit_position
 							16,// bit_size
 							0.000488281f,// factor
-							-15.6870,// offset
+							-15.6870f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -316,15 +513,14 @@ application_t::application_t()
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"m/s/s",// unit
-							"Indicates a lateral acceleration of the vehicle."// comment
+							"m/s/s"// unit
 						})},
 						{std::make_shared<signal_t> (signal_t{
-							"LongitudinalAcceleration",// generic_name
+							"Longitudinal.Acceleration",// generic_name
 							56,// bit_position
 							8,// bit_size
 							0.100000f,// factor
-							-12.5000,// offset
+							-12.5000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -339,15 +535,14 @@ application_t::application_t()
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"m/s/s",// unit
-							"Indicates the longitudinal acceleration of the vehicle."// comment
+							"m/s/s"// unit
 						})},
 						{std::make_shared<signal_t> (signal_t{
-							"SteerWheelAngle",// generic_name
+							"Steer.Wheel.Angle",// generic_name
 							0,// bit_position
 							16,// bit_size
 							0.000976562f,// factor
-							-31.3740,// offset
+							-31.3740f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -362,15 +557,14 @@ application_t::application_t()
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"rad",// unit
-							"The main operator`s steering wheel angle (on the steering column, not the actual wheel angle)."// comment
+							"rad"// unit
 						})},
 						{std::make_shared<signal_t> (signal_t{
-							"SteerWheelAngleSensorType",// generic_name
+							"Steer.Wheel.Angle.Sensor.Type",// generic_name
 							22,// bit_position
 							2,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -383,21 +577,20 @@ application_t::application_t()
 								{2,"Reserved"}
 							},// states
 							false,// writable
-							nullptr,// decoder
+							decoder_t::decode_state,// decoder
 							nullptr,// encoder
 							false,// received
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"",// unit
-							"Indicates whether the steering wheel angle sensor is capable of absolute measuring of the number of steering wheel"// comment
+							""// unit
 						})},
 						{std::make_shared<signal_t> (signal_t{
-							"SteerWheelTurnCounter",// generic_name
+							"Steer.Wheel.Turn.Counter",// generic_name
 							16,// bit_position
 							6,// bit_size
 							1.00000f,// factor
-							-32.0000,// offset
+							-32.0000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -412,15 +605,14 @@ application_t::application_t()
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"turns",// unit
-							"Indicates number of steering wheel turns, absolute position or relative position at ignition on."// comment
+							"turns"// unit
 						})},
 						{std::make_shared<signal_t> (signal_t{
-							"YawRate",// generic_name
+							"Yaw.Rate",// generic_name
 							24,// bit_position
 							16,// bit_size
 							0.000122070f,// factor
-							-3.92000,// offset
+							-3.92000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -435,20 +627,176 @@ application_t::application_t()
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"rad/s",// unit
-							"Indicates the rotation about the vertical axis."// comment
+							"rad/s"// unit
 						})}
 					} // end signals vector
-				})}, // end message_definition entry
-
-				{std::make_shared<message_definition_t>(message_definition_t{"j1939",65253,0,message_format_t::J1939,frequency_clock_t(5.00000f),true,8,
+				})} // end message_definition entry
+,				{std::make_shared<message_definition_t>(message_definition_t{"j1939",65215,"EBC2",8,false,message_format_t::J1939,frequency_clock_t(5.00000f),true,
+					{ // beginning signals vector
+						{std::make_shared<signal_t> (signal_t{
+							"Front.Axle.Speed",// generic_name
+							0,// bit_position
+							16,// bit_size
+							0.00390625f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"km/h"// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Relative.Speed.Front.Axle.Left.Wheel",// generic_name
+							16,// bit_position
+							8,// bit_size
+							0.0625000f,// factor
+							-7.81250f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"km/h"// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Relative.Speed.Rear.Axle1.Left.Wheel",// generic_name
+							32,// bit_position
+							8,// bit_size
+							0.0625000f,// factor
+							-7.81250f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"km/h"// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Relative.Speed.Rear.Axle2.Left.Wheel",// generic_name
+							48,// bit_position
+							8,// bit_size
+							0.0625000f,// factor
+							-7.81250f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"km/h"// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Rlative.Speed.Front.Axle.Right.Wheel",// generic_name
+							24,// bit_position
+							8,// bit_size
+							0.0625000f,// factor
+							-7.81250f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"km/h"// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Rlative.Speed.Rear.Axle1.Right.Wheel",// generic_name
+							40,// bit_position
+							8,// bit_size
+							0.0625000f,// factor
+							-7.81250f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"km/h"// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Rlative.Speed.Rear.Axle2.Right.Wheel",// generic_name
+							56,// bit_position
+							8,// bit_size
+							0.0625000f,// factor
+							-7.81250f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"km/h"// unit
+						})}
+					} // end signals vector
+				})} // end message_definition entry
+,				{std::make_shared<message_definition_t>(message_definition_t{"j1939",65253,"HOURS",8,false,message_format_t::J1939,frequency_clock_t(5.00000f),true,
 					{ // beginning signals vector
 						{std::make_shared<signal_t> (signal_t{
-							"EngTotalHoursOfOperation",// generic_name
+							"Eng.Total.Hours.Of.Operation",// generic_name
 							0,// bit_position
 							32,// bit_size
 							0.0500000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -463,15 +811,14 @@ application_t::application_t()
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"hr",// unit
-							"Accumulated time of operation of engine."// comment
+							"hr"// unit
 						})},
 						{std::make_shared<signal_t> (signal_t{
-							"EngTotalRevolutions",// generic_name
+							"Eng.Total.Revolutions",// generic_name
 							32,// bit_position
 							32,// bit_size
 							1000.00f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -486,21 +833,18 @@ application_t::application_t()
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"r",// unit
-							"Accumulated number of revolutions of engine crankshaft during its operation."// comment
+							"r"// unit
 						})}
 					} // end signals vector
-				})}, // end message_definition entry
-
-
-				{std::make_shared<message_definition_t>(message_definition_t{"j1939",65262,0,message_format_t::J1939,frequency_clock_t(5.00000f),true,8,
+				})} // end message_definition entry
+,				{std::make_shared<message_definition_t>(message_definition_t{"j1939",65262,"ET1",8,false,message_format_t::J1939,frequency_clock_t(5.00000f),true,
 					{ // beginning signals vector
 						{std::make_shared<signal_t> (signal_t{
-							"EngCoolantTemp",// generic_name
+							"Eng.Coolant.Temp",// generic_name
 							0,// bit_position
 							8,// bit_size
 							0.0312500f,// factor
-							-273.000,// offset
+							-273.000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -515,15 +859,14 @@ application_t::application_t()
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"deg C",// unit
-							"Temperature of liquid found in engine cooling system."// comment
+							"deg C"// unit
 						})},
 						{std::make_shared<signal_t> (signal_t{
-							"EngFuelTemp1",// generic_name
+							"Eng.Fuel.Temp1",// generic_name
 							8,// bit_position
 							8,// bit_size
 							1.00000f,// factor
-							-40.0000,// offset
+							-40.0000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -538,15 +881,14 @@ application_t::application_t()
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"deg C",// unit
-							"Temperature of fuel (or gas) passing through the first fuel control system."// comment
+							"deg C"// unit
 						})},
 						{std::make_shared<signal_t> (signal_t{
-							"EngIntercoolerTemp",// generic_name
+							"Eng.Intercooler.Temp",// generic_name
 							48,// bit_position
 							8,// bit_size
 							1.00000f,// factor
-							-40.0000,// offset
+							-40.0000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -561,15 +903,14 @@ application_t::application_t()
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"deg C",// unit
-							"Temperature of liquid found in the intercooler located after the turbocharger."// comment
+							"deg C"// unit
 						})},
 						{std::make_shared<signal_t> (signal_t{
-							"EngIntercoolerThermostatOpening",// generic_name
+							"Eng.Intercooler.Thermostat.Opening",// generic_name
 							56,// bit_position
 							8,// bit_size
 							0.400000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -584,15 +925,14 @@ application_t::application_t()
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"%",// unit
-							"The current position of the thermostat used to regulate the temperature of the engine intercooler."// comment
+							"%"// unit
 						})},
 						{std::make_shared<signal_t> (signal_t{
-							"EngOilTemp1",// generic_name
+							"Eng.Oil.Temp1",// generic_name
 							16,// bit_position
 							16,// bit_size
 							0.0312500f,// factor
-							-273.000,// offset
+							-273.000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -607,15 +947,14 @@ application_t::application_t()
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"deg C",// unit
-							"Temperature of the engine lubricant."// comment
+							"deg C"// unit
 						})},
 						{std::make_shared<signal_t> (signal_t{
-							"EngTurboOilTemp",// generic_name
+							"Eng.Turbo.Oil.Temp",// generic_name
 							32,// bit_position
 							16,// bit_size
 							0.0312500f,// factor
-							-273.000,// offset
+							-273.000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -630,8 +969,7 @@ application_t::application_t()
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"deg C",// unit
-							"Temperature of the turbocharger lubricant."// comment
+							"deg C"// unit
 						})}
 					} // end signals vector
 				})} // end message_definition entry
diff --git a/examples/j1939/j1939_parse.json b/examples/j1939/j1939_parse.json
index fd4c3fc2..a5f8bcbc 100644
--- a/examples/j1939/j1939_parse.json
+++ b/examples/j1939/j1939_parse.json
@@ -11,10 +11,12 @@
 			"length": 8,
 			"name": "ETC1",
 			"bus" : "j1939",
+			"is_fd" : false,
+			"is_extended": false,
 			"is_j1939" : true,
 			"signals" : {
-				"TrnsTrqueConverterLockupEngaged" : {
-					"generic_name": "TrnsTrqueConverterLockupEngaged",
+				"Trns.Trque.Converter.Lockup.Engaged" : {
+					"generic_name": "Trns.Trque.Converter.Lockup.Engaged",
 					"bit_position": 2,
 					"bit_size": 2,
 					"factor": 1,
@@ -22,6 +24,7 @@
 					"comment": "State signal which indicates whether the torque converter lockup is engaged.",
 					"is_big_endian": false,
 					"is_signed": false,
+					"writable" : true,
 					"states": {
 						"TorqueConverterLockupDisengaged": [0],
 						"TorqueConverterLockupEngaged": [1],
@@ -29,8 +32,8 @@
 						"NotAvailable": [3]
 					}
 				},
-				"TrnsTrqCnvrtrLckpTrnstnInPrcess" : {
-					"generic_name": "TrnsTrqCnvrtrLckpTrnstnInPrcess",
+				"Trns.Trq.Cnvrtr.Lckp.Trnstn.In.Prcess" : {
+					"generic_name": "Trns.Trq.Cnvrtr.Lckp.Trnstn.In.Prcess",
 					"bit_position": 6,
 					"bit_size": 2,
 					"factor": 1,
@@ -38,6 +41,7 @@
 					"comment": "State signal indicating whether or not the transmission torque converter lock up clutch is transitioning between being",
 					"is_big_endian": false,
 					"is_signed": false,
+					"writable" : true,
 					"states": {
 						"TransitionIsNotInProcess": [0],
 						"TransitionIsInProcess": [1],
@@ -45,18 +49,19 @@
 						"NotAvailable": [3]
 					}
 				},
-				"SrcAddrssOfCtrllngDvcFrTrnsCntrl" : {
-					"generic_name": "SrcAddrssOfCtrllngDvcFrTrnsCntrl",
+				"Src.Addrss.Of.Ctrllng.Dvc.Fr.Trns.Cntrl" : {
+					"generic_name": "Src.Addrss.Of.Ctrllng.Dvc.Fr.Trns.Cntrl",
 					"bit_position": 56,
 					"bit_size": 8,
 					"factor": 1,
 					"offset": 0,
 					"comment": "The source address of the SAE J1939 device currently controlling the transmission.",
 					"is_big_endian": false,
-					"is_signed": false
+					"is_signed": false,
+					"writable" : true
 				},
-				"MomentaryEngMaxPowerEnable" : {
-					"generic_name": "MomentaryEngMaxPowerEnable",
+				"Momentary.Eng.Max.Power.Enable" : {
+					"generic_name": "Momentary.Eng.Max.Power.Enable",
 					"bit_position": 36,
 					"bit_size": 2,
 					"factor": 1,
@@ -64,6 +69,7 @@
 					"comment": "Momentarily Requesting highest torque map from the engine control",
 					"is_big_endian": false,
 					"is_signed": false,
+					"writable" : true,
 					"states": {
 						"notRqingMaxPowerAvailable": [0],
 						"mmntarilyRqingMaxPowerAvailable": [1],
@@ -71,8 +77,8 @@
 						"notAvailable": [3]
 					}
 				},
-				"TransInputShaftSpeed" : {
-					"generic_name": "TransInputShaftSpeed",
+				"Trans.Input.Shaft.Speed" : {
+					"generic_name": "Trans.Input.Shaft.Speed",
 					"bit_position": 40,
 					"bit_size": 16,
 					"factor": 0.125,
@@ -80,10 +86,11 @@
 					"comment": "Rotational velocity of the primary shaft transferring power into the transmission.",
 					"unit": "rpm",
 					"is_big_endian": false,
-					"is_signed": false
+					"is_signed": false,
+					"writable" : true
 				},
-				"ProgressiveShiftDisable" : {
-					"generic_name": "ProgressiveShiftDisable",
+				"Progressive.Shift.Disable" : {
+					"generic_name": "Progressive.Shift.Disable",
 					"bit_position": 34,
 					"bit_size": 2,
 					"factor": 1,
@@ -91,6 +98,7 @@
 					"comment": "Command signal used to indicate that progressive shifting by the engine should be disallowed.",
 					"is_big_endian": false,
 					"is_signed": false,
+					"writable" : true,
 					"states": {
 						"ProgressiveShiftIsNotDisabled": [0],
 						"ProgressiveShiftIsDisabled": [1],
@@ -98,8 +106,8 @@
 						"TakeNoAction": [3]
 					}
 				},
-				"EngMomentaryOverspeedEnable" : {
-					"generic_name": "EngMomentaryOverspeedEnable",
+				"Eng.Momentary.Overspeed.Enable" : {
+					"generic_name": "Eng.Momentary.Overspeed.Enable",
 					"bit_position": 32,
 					"bit_size": 2,
 					"factor": 1,
@@ -107,6 +115,7 @@
 					"comment": "Command signal used to indicate that the engine speed may be boosted up to the maximum engine overspeed value to",
 					"is_big_endian": false,
 					"is_signed": false,
+					"writable" : true,
 					"states": {
 						"MomentaryEngOverspeedIsDisabled": [0],
 						"MomentaryEngOverspeedIsEnabled": [1],
@@ -114,8 +123,8 @@
 						"TakeNoAction": [3]
 					}
 				},
-				"PercentClutchSlip" : {
-					"generic_name": "PercentClutchSlip",
+				"Percent.Clutch.Slip" : {
+					"generic_name": "Percent.Clutch.Slip",
 					"bit_position": 24,
 					"bit_size": 8,
 					"factor": 0.4,
@@ -123,10 +132,11 @@
 					"comment": "Parameter which represents the ratio of input shaft speed to current engine speed (in percent).",
 					"unit": "%",
 					"is_big_endian": false,
-					"is_signed": false
+					"is_signed": false,
+					"writable" : true
 				},
-				"TransOutputShaftSpeed" : {
-					"generic_name": "TransOutputShaftSpeed",
+				"Trans.Output.Shaft.Speed" : {
+					"generic_name": "Trans.Output.Shaft.Speed",
 					"bit_position": 8,
 					"bit_size": 16,
 					"factor": 0.125,
@@ -134,10 +144,11 @@
 					"comment": "Calculated speed of the transmission output shaft.",
 					"unit": "rpm",
 					"is_big_endian": false,
-					"is_signed": false
+					"is_signed": false,
+					"writable" : true
 				},
-				"TransShiftInProcess" : {
-					"generic_name": "TransShiftInProcess",
+				"Trans.Shift.In.Process" : {
+					"generic_name": "Trans.Shift.In.Process",
 					"bit_position": 4,
 					"bit_size": 2,
 					"factor": 1,
@@ -145,6 +156,7 @@
 					"comment": "Indicates that the transmission is in process of shifting from the current gear to the selected gear.",
 					"is_big_endian": false,
 					"is_signed": false,
+					"writable" : true,
 					"states": {
 						"ShiftIsNotInProcess": [0],
 						"ShiftInProcess": [1],
@@ -152,8 +164,8 @@
 						"NotAvailable": [3]
 					}
 				},
-				"TransDrivelineEngaged" : {
-					"generic_name": "TransDrivelineEngaged",
+				"Trans.Driveline.Engaged" : {
+					"generic_name": "Trans.Driveline.Engaged",
 					"bit_position": 0,
 					"bit_size": 2,
 					"factor": 1,
@@ -161,6 +173,7 @@
 					"comment": "Driveline engaged indicates the transmission controlled portion of the driveline is engaged sufficiently to allow a transfer",
 					"is_big_endian": false,
 					"is_signed": false,
+					"writable" : true,
 					"states": {
 						"DrivelineDisengaged": [0],
 						"DrivelineEngaged": [1],
@@ -175,10 +188,12 @@
 			"length": 8,
 			"name": "EEC1",
 			"bus" : "j1939",
+			"is_fd" : false,
+			"is_extended": false,
 			"is_j1939" : true,
 			"signals" : {
-				"SrcAddrssOfCtrllngDvcFrEngCntrl" : {
-					"generic_name": "SrcAddrssOfCtrllngDvcFrEngCntrl",
+				"Src.AddrssOf.Ctrllng.Dvc.Fr.Eng.Cntrl" : {
+					"generic_name": "Src.AddrssOf.Ctrllng.Dvc.Fr.Eng.Cntrl",
 					"bit_position": 40,
 					"bit_size": 8,
 					"factor": 1,
@@ -187,8 +202,8 @@
 					"is_big_endian": false,
 					"is_signed": false
 				},
-				"ActlEngPrcntTrqueHighResolution" : {
-					"generic_name": "ActlEngPrcntTrqueHighResolution",
+				"Actl.Eng.Prcnt.Trque.High.Resolution" : {
+					"generic_name": "Actl.Eng.Prcnt.Trque.High.Resolution",
 					"bit_position": 4,
 					"bit_size": 4,
 					"factor": 0.125,
@@ -204,8 +219,8 @@
 						"1111NotAvailable": [8]
 					}
 				},
-				"EngDemandPercentTorque" : {
-					"generic_name": "EngDemandPercentTorque",
+				"Eng.Demand.Percent.Torque" : {
+					"generic_name": "Eng.Demand.Percent.Torque",
 					"bit_position": 56,
 					"bit_size": 8,
 					"factor": 1,
@@ -215,8 +230,8 @@
 					"is_big_endian": false,
 					"is_signed": false
 				},
-				"EngStarterMode" : {
-					"generic_name": "EngStarterMode",
+				"Eng.Starter.Mode" : {
+					"generic_name": "Eng.Starter.Mode",
 					"bit_position": 48,
 					"bit_size": 4,
 					"factor": 1,
@@ -240,8 +255,8 @@
 						"notAvailable": [15]
 					}
 				},
-				"EngSpeed" : {
-					"generic_name": "EngSpeed",
+				"Eng.Speed" : {
+					"generic_name": "Eng.Speed",
 					"bit_position": 24,
 					"bit_size": 16,
 					"factor": 0.125,
@@ -251,8 +266,8 @@
 					"is_big_endian": false,
 					"is_signed": false
 				},
-				"ActualEngPercentTorque" : {
-					"generic_name": "ActualEngPercentTorque",
+				"Actual.Eng.Percent.Torque" : {
+					"generic_name": "Actual.Eng.Percent.Torque",
 					"bit_position": 16,
 					"bit_size": 8,
 					"factor": 1,
@@ -262,8 +277,8 @@
 					"is_big_endian": false,
 					"is_signed": false
 				},
-				"DriversDemandEngPercentTorque" : {
-					"generic_name": "DriversDemandEngPercentTorque",
+				"Drivers.Demand.Eng.Percent.Torque" : {
+					"generic_name": "Drivers.Demand.Eng.Percent.Torque",
 					"bit_position": 8,
 					"bit_size": 8,
 					"factor": 1,
@@ -273,8 +288,8 @@
 					"is_big_endian": false,
 					"is_signed": false
 				},
-				"EngTorqueMode" : {
-					"generic_name": "EngTorqueMode",
+				"Eng.Torque.Mode" : {
+					"generic_name": "Eng.Torque.Mode",
 					"bit_position": 0,
 					"bit_size": 4,
 					"factor": 1,
@@ -305,10 +320,12 @@
 			"length": 8,
 			"name": "HOURS",
 			"bus" : "j1939",
+			"is_fd" : false,
+			"is_extended": false,
 			"is_j1939" : true,
 			"signals" : {
-				"EngTotalRevolutions" : {
-					"generic_name": "EngTotalRevolutions",
+				"Eng.Total.Revolutions" : {
+					"generic_name": "Eng.Total.Revolutions",
 					"bit_position": 32,
 					"bit_size": 32,
 					"factor": 1000,
@@ -318,8 +335,8 @@
 					"is_big_endian": false,
 					"is_signed": false
 				},
-				"EngTotalHoursOfOperation" : {
-					"generic_name": "EngTotalHoursOfOperation",
+				"Eng.Total.Hours.Of.Operation" : {
+					"generic_name": "Eng.Total.Hours.Of.Operation",
 					"bit_position": 0,
 					"bit_size": 32,
 					"factor": 0.05,
@@ -336,10 +353,12 @@
 			"length": 8,
 			"name": "VDC2",
 			"bus" : "j1939",
+			"is_fd" : false,
+			"is_extended": false,
 			"is_j1939" : true,
 			"signals" : {
-				"SteerWheelAngle" : {
-					"generic_name": "SteerWheelAngle",
+				"Steer.Wheel.Angle" : {
+					"generic_name": "Steer.Wheel.Angle",
 					"bit_position": 0,
 					"bit_size": 16,
 					"factor": 0.0009765625,
@@ -349,8 +368,8 @@
 					"is_big_endian": false,
 					"is_signed": false
 				},
-				"LongitudinalAcceleration" : {
-					"generic_name": "LongitudinalAcceleration",
+				"Longitudinal.Acceleration" : {
+					"generic_name": "Longitudinal.Acceleration",
 					"bit_position": 56,
 					"bit_size": 8,
 					"factor": 0.1,
@@ -360,8 +379,8 @@
 					"is_big_endian": false,
 					"is_signed": false
 				},
-				"LateralAcceleration" : {
-					"generic_name": "LateralAcceleration",
+				"Lateral.Acceleration" : {
+					"generic_name": "Lateral.Acceleration",
 					"bit_position": 40,
 					"bit_size": 16,
 					"factor": 0.00048828125,
@@ -371,8 +390,8 @@
 					"is_big_endian": false,
 					"is_signed": false
 				},
-				"YawRate" : {
-					"generic_name": "YawRate",
+				"Yaw.Rate" : {
+					"generic_name": "Yaw.Rate",
 					"bit_position": 24,
 					"bit_size": 16,
 					"factor": 0.0001220703125,
@@ -382,8 +401,8 @@
 					"is_big_endian": false,
 					"is_signed": false
 				},
-				"SteerWheelAngleSensorType" : {
-					"generic_name": "SteerWheelAngleSensorType",
+				"Steer.Wheel.Angle.Sensor.Type" : {
+					"generic_name": "Steer.Wheel.Angle.Sensor.Type",
 					"bit_position": 22,
 					"bit_size": 2,
 					"factor": 1,
@@ -398,8 +417,8 @@
 						"NotAvailable": [3]
 					}
 				},
-				"SteerWheelTurnCounter" : {
-					"generic_name": "SteerWheelTurnCounter",
+				"Steer.Wheel.Turn.Counter" : {
+					"generic_name": "Steer.Wheel.Turn.Counter",
 					"bit_position": 16,
 					"bit_size": 6,
 					"factor": 1,
@@ -416,10 +435,12 @@
 			"length": 8,
 			"name": "EBC2",
 			"bus" : "j1939",
+			"is_fd" : false,
+			"is_extended": false,
 			"is_j1939" : true,
 			"signals" : {
-				"RlativeSpeedRearAxle2RightWheel" : {
-					"generic_name": "RlativeSpeedRearAxle2RightWheel",
+				"Rlative.Speed.Rear.Axle2.Right.Wheel" : {
+					"generic_name": "Rlative.Speed.Rear.Axle2.Right.Wheel",
 					"bit_position": 56,
 					"bit_size": 8,
 					"factor": 0.0625,
@@ -429,8 +450,8 @@
 					"is_big_endian": false,
 					"is_signed": false
 				},
-				"RelativeSpeedRearAxle2LeftWheel" : {
-					"generic_name": "RelativeSpeedRearAxle2LeftWheel",
+				"Relative.Speed.Rear.Axle2.Left.Wheel" : {
+					"generic_name": "Relative.Speed.Rear.Axle2.Left.Wheel",
 					"bit_position": 48,
 					"bit_size": 8,
 					"factor": 0.0625,
@@ -440,8 +461,8 @@
 					"is_big_endian": false,
 					"is_signed": false
 				},
-				"RlativeSpeedRearAxle1RightWheel" : {
-					"generic_name": "RlativeSpeedRearAxle1RightWheel",
+				"Rlative.Speed.Rear.Axle1.Right.Wheel" : {
+					"generic_name": "Rlative.Speed.Rear.Axle1.Right.Wheel",
 					"bit_position": 40,
 					"bit_size": 8,
 					"factor": 0.0625,
@@ -451,8 +472,8 @@
 					"is_big_endian": false,
 					"is_signed": false
 				},
-				"RelativeSpeedRearAxle1LeftWheel" : {
-					"generic_name": "RelativeSpeedRearAxle1LeftWheel",
+				"Relative.Speed.Rear.Axle1.Left.Wheel" : {
+					"generic_name": "Relative.Speed.Rear.Axle1.Left.Wheel",
 					"bit_position": 32,
 					"bit_size": 8,
 					"factor": 0.0625,
@@ -462,8 +483,8 @@
 					"is_big_endian": false,
 					"is_signed": false
 				},
-				"RlativeSpeedFrontAxleRightWheel" : {
-					"generic_name": "RlativeSpeedFrontAxleRightWheel",
+				"Rlative.Speed.Front.Axle.Right.Wheel" : {
+					"generic_name": "Rlative.Speed.Front.Axle.Right.Wheel",
 					"bit_position": 24,
 					"bit_size": 8,
 					"factor": 0.0625,
@@ -473,8 +494,8 @@
 					"is_big_endian": false,
 					"is_signed": false
 				},
-				"RelativeSpeedFrontAxleLeftWheel" : {
-					"generic_name": "RelativeSpeedFrontAxleLeftWheel",
+				"Relative.Speed.Front.Axle.Left.Wheel" : {
+					"generic_name": "Relative.Speed.Front.Axle.Left.Wheel",
 					"bit_position": 16,
 					"bit_size": 8,
 					"factor": 0.0625,
@@ -484,8 +505,8 @@
 					"is_big_endian": false,
 					"is_signed": false
 				},
-				"FrontAxleSpeed" : {
-					"generic_name": "FrontAxleSpeed",
+				"Front.Axle.Speed" : {
+					"generic_name": "Front.Axle.Speed",
 					"bit_position": 0,
 					"bit_size": 16,
 					"factor": 0.00390625,
@@ -502,10 +523,12 @@
 			"length": 8,
 			"name": "ET1",
 			"bus" : "j1939",
+			"is_fd" : false,
+			"is_extended": false,
 			"is_j1939" : true,
 			"signals" : {
-				"EngFuelTemp1" : {
-					"generic_name": "EngFuelTemp1",
+				"Eng.Fuel.Temp1" : {
+					"generic_name": "Eng.Fuel.Temp1",
 					"bit_position": 8,
 					"bit_size": 8,
 					"factor": 1,
@@ -515,8 +538,8 @@
 					"is_big_endian": false,
 					"is_signed": false
 				},
-				"EngIntercoolerThermostatOpening" : {
-					"generic_name": "EngIntercoolerThermostatOpening",
+				"Eng.Intercooler.Thermostat.Opening" : {
+					"generic_name": "Eng.Intercooler.Thermostat.Opening",
 					"bit_position": 56,
 					"bit_size": 8,
 					"factor": 0.4,
@@ -526,8 +549,8 @@
 					"is_big_endian": false,
 					"is_signed": false
 				},
-				"EngIntercoolerTemp" : {
-					"generic_name": "EngIntercoolerTemp",
+				"Eng.Intercooler.Temp" : {
+					"generic_name": "Eng.Intercooler.Temp",
 					"bit_position": 48,
 					"bit_size": 8,
 					"factor": 1,
@@ -537,8 +560,8 @@
 					"is_big_endian": false,
 					"is_signed": false
 				},
-				"EngTurboOilTemp" : {
-					"generic_name": "EngTurboOilTemp",
+				"Eng.Turbo.Oil.Temp" : {
+					"generic_name": "Eng.Turbo.Oil.Temp",
 					"bit_position": 32,
 					"bit_size": 16,
 					"factor": 0.03125,
@@ -548,8 +571,8 @@
 					"is_big_endian": false,
 					"is_signed": false
 				},
-				"EngOilTemp1" : {
-					"generic_name": "EngOilTemp1",
+				"Eng.Oil.Temp1" : {
+					"generic_name": "Eng.Oil.Temp1",
 					"bit_position": 16,
 					"bit_size": 16,
 					"factor": 0.03125,
@@ -559,8 +582,8 @@
 					"is_big_endian": false,
 					"is_signed": false
 				},
-				"EngCoolantTemp" : {
-					"generic_name": "EngCoolantTemp",
+				"Eng.Coolant.Temp" : {
+					"generic_name": "Eng.Coolant.Temp",
 					"bit_position": 0,
 					"bit_size": 8,
 					"factor": 0.03125,
diff --git a/examples/tests/application-generated.cpp b/examples/tests/application-generated.cpp
new file mode 100644
index 00000000..6abb4851
--- /dev/null
+++ b/examples/tests/application-generated.cpp
@@ -0,0 +1,1691 @@
+#include "application.hpp"
+#include "../can/can-decoder.hpp"
+#include "../can/can-encoder.hpp"
+
+application_t::application_t()
+	: can_bus_manager_{utils::config_parser_t{"/etc/dev-mapping.conf"}}
+	, message_set_{
+		{std::make_shared<message_set_t>(message_set_t{0,"AGL Virtual Car",
+			{ // beginning message_definition_ vector
+				{std::make_shared<message_definition_t>(message_definition_t{"ls",0x30,"",0,false,message_format_t::EXTENDED,frequency_clock_t(5.00000f),true,					{ // beginning signals vector
+						{std::make_shared<signal_t> (signal_t{
+							"hvac.fan.speed",// generic_name
+							32,// bit_position
+							8,// bit_size
+							23.5294f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"hvac.temperature.left",// generic_name
+							0,// bit_position
+							8,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							true,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"hvac.temperature.right",// generic_name
+							8,// bit_position
+							8,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							true,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"hvac.temperature.average",// generic_name
+							16,// bit_position
+							8,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							true,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"",// unit
+						})}
+					} // end signals vector
+				})} // end message_definition entry
+,				{std::make_shared<message_definition_t>(message_definition_t{"hs",0x3D9,"",0,true,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,					{ // beginning signals vector
+						{std::make_shared<signal_t> (signal_t{
+							"engine.speed",// generic_name
+							16,// bit_position
+							16,// bit_size
+							0.250000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"fuel.level.low",// generic_name
+							55,// bit_position
+							1,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							decoder_t::decode_boolean,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"fuel.level",// generic_name
+							8,// bit_position
+							8,// bit_size
+							0.392157f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"",// unit
+						})}
+					} // end signals vector
+				})} // end message_definition entry
+,				{std::make_shared<message_definition_t>(message_definition_t{"hs",0x3E9,"",0,false,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,					{ // beginning signals vector
+						{std::make_shared<signal_t> (signal_t{
+							"vehicle.average.speed",// generic_name
+							0,// bit_position
+							15,// bit_size
+							0.0156250f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"",// unit
+						})}
+					} // end signals vector
+				})} // end message_definition entry
+,				{std::make_shared<message_definition_t>(message_definition_t{"hs",0x4D1,"",0,false,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,					{ // beginning signals vector
+						{std::make_shared<signal_t> (signal_t{
+							"engine.oil.temp",// generic_name
+							16,// bit_position
+							8,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"engine.oil.temp.high",// generic_name
+							7,// bit_position
+							1,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							decoder_t::decode_boolean,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"",// unit
+						})}
+					} // end signals vector
+				})} // end message_definition entry
+,				{std::make_shared<message_definition_t>(message_definition_t{"hs",0x620,"",0,false,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,					{ // beginning signals vector
+						{std::make_shared<signal_t> (signal_t{
+							"doors.boot.open",// generic_name
+							47,// bit_position
+							1,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							decoder_t::decode_boolean,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"doors.front_left.open",// generic_name
+							43,// bit_position
+							1,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							decoder_t::decode_boolean,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"doors.front_right.open",// generic_name
+							44,// bit_position
+							1,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							decoder_t::decode_boolean,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"doors.rear_left.open",// generic_name
+							46,// bit_position
+							1,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							decoder_t::decode_boolean,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"doors.rear_right.open",// generic_name
+							45,// bit_position
+							4,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							decoder_t::decode_boolean,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"",// unit
+						})}
+					} // end signals vector
+				})} // end message_definition entry
+,				{std::make_shared<message_definition_t>(message_definition_t{"hs",0x799,"",0,false,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,					{ // beginning signals vector
+						{std::make_shared<signal_t> (signal_t{
+							"windows.front_left.open",// generic_name
+							43,// bit_position
+							1,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							decoder_t::decode_boolean,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"windows.front_right.open",// generic_name
+							44,// bit_position
+							1,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							decoder_t::decode_boolean,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"windows.rear_left.open",// generic_name
+							46,// bit_position
+							1,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							decoder_t::decode_boolean,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"windows.rear_right.open",// generic_name
+							45,// bit_position
+							4,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							decoder_t::decode_boolean,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"",// unit
+						})}
+					} // end signals vector
+				})} // end message_definition entry
+,				{std::make_shared<message_definition_t>(message_definition_t{"j1939",61442,"ETC1",8,false,message_format_t::J1939,frequency_clock_t(5.00000f),true,					{ // beginning signals vector
+						{std::make_shared<signal_t> (signal_t{
+							"Eng.Momentary.Overspeed.Enable",// generic_name
+							32,// bit_position
+							2,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+								{0,"MomentaryEngOverspeedIsDisabled"},
+								{1,"MomentaryEngOverspeedIsEnabled"},
+								{2,"Reserved"},
+								{3,"TakeNoAction"}
+							},// states
+							true,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Momentary.Eng.Max.Power.Enable",// generic_name
+							36,// bit_position
+							2,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+								{2,"fault"},
+								{1,"mmntarilyRqingMaxPowerAvailable"},
+								{3,"notAvailable"},
+								{0,"notRqingMaxPowerAvailable"}
+							},// states
+							true,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Percent.Clutch.Slip",// generic_name
+							24,// bit_position
+							8,// bit_size
+							0.400000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							true,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"%",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Progressive.Shift.Disable",// generic_name
+							34,// bit_position
+							2,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+								{1,"ProgressiveShiftIsDisabled"},
+								{0,"ProgressiveShiftIsNotDisabled"},
+								{2,"Reserved"},
+								{3,"TakeNoAction"}
+							},// states
+							true,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Src.Addrss.Of.Ctrllng.Dvc.Fr.Trns.Cntrl",// generic_name
+							56,// bit_position
+							8,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							true,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Trans.Driveline.Engaged",// generic_name
+							0,// bit_position
+							2,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+								{0,"DrivelineDisengaged"},
+								{1,"DrivelineEngaged"},
+								{2,"Error"},
+								{3,"NotAvailable"}
+							},// states
+							true,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Trans.Input.Shaft.Speed",// generic_name
+							40,// bit_position
+							16,// bit_size
+							0.125000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							true,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"rpm",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Trans.Output.Shaft.Speed",// generic_name
+							8,// bit_position
+							16,// bit_size
+							0.125000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							true,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"rpm",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Trans.Shift.In.Process",// generic_name
+							4,// bit_position
+							2,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+								{2,"Error"},
+								{3,"NotAvailable"},
+								{1,"ShiftInProcess"},
+								{0,"ShiftIsNotInProcess"}
+							},// states
+							true,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Trns.Trq.Cnvrtr.Lckp.Trnstn.In.Prcess",// generic_name
+							6,// bit_position
+							2,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+								{2,"Error"},
+								{3,"NotAvailable"},
+								{1,"TransitionIsInProcess"},
+								{0,"TransitionIsNotInProcess"}
+							},// states
+							true,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Trns.Trque.Converter.Lockup.Engaged",// generic_name
+							2,// bit_position
+							2,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+								{2,"Error"},
+								{3,"NotAvailable"},
+								{0,"TorqueConverterLockupDisengaged"},
+								{1,"TorqueConverterLockupEngaged"}
+							},// states
+							true,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"",// unit
+						})}
+					} // end signals vector
+				})} // end message_definition entry
+,				{std::make_shared<message_definition_t>(message_definition_t{"j1939",61444,"EEC1",8,false,message_format_t::J1939,frequency_clock_t(5.00000f),true,					{ // beginning signals vector
+						{std::make_shared<signal_t> (signal_t{
+							"Actl.Eng.Prcnt.Trque.High.Resolution",// generic_name
+							4,// bit_position
+							4,// bit_size
+							0.125000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+								{0,"0000"},
+								{1,"0125"},
+								{7,"0875"},
+								{8,"1111NotAvailable"}
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"%",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Actual.Eng.Percent.Torque",// generic_name
+							16,// bit_position
+							8,// bit_size
+							1.00000f,// factor
+							-125.000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"%",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Drivers.Demand.Eng.Percent.Torque",// generic_name
+							8,// bit_position
+							8,// bit_size
+							1.00000f,// factor
+							-125.000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"%",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Eng.Demand.Percent.Torque",// generic_name
+							56,// bit_position
+							8,// bit_size
+							1.00000f,// factor
+							-125.000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"%",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Eng.Speed",// generic_name
+							24,// bit_position
+							16,// bit_size
+							0.125000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"rpm",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Eng.Starter.Mode",// generic_name
+							48,// bit_position
+							4,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+								{9,"1011Reserved"},
+								{14,"error"},
+								{15,"notAvailable"},
+								{0,"startNotRqed"},
+								{2,"starterActiveGearEngaged"},
+								{1,"starterActiveGearNotEngaged"},
+								{12,"starterInhibitedReasonUnknown"},
+								{3,"strtFnshdStrtrNtActvAftrHvngBnA"},
+								{6,"strtrInhbtdDTDrvlnEnggdOthrTrns"},
+								{5,"strtrInhbtdDTEngNtReadyForStart"},
+								{7,"strtrInhbtdDToActiveImmobilizer"},
+								{4,"strtrInhbtdDToEngAlreadyRunning"},
+								{8,"strtrInhbtdDueToStarterOvertemp"}
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Eng.Torque.Mode",// generic_name
+							0,// bit_position
+							4,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+								{7,"ABS control"},
+								{5,"ASR control"},
+								{1,"Accelerator pedal/operator selec"},
+								{10,"Braking system"},
+								{2,"Cruise control"},
+								{9,"High speed governor"},
+								{0,"Low idle governor/no request (de"},
+								{15,"Not available"},
+								{3,"PTO governor"},
+								{11,"Remote accelerator"},
+								{4,"Road speed governor"},
+								{8,"Torque limiting"},
+								{6,"Transmission control"}
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Src.AddrssOf.Ctrllng.Dvc.Fr.Eng.Cntrl",// generic_name
+							40,// bit_position
+							8,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"",// unit
+						})}
+					} // end signals vector
+				})} // end message_definition entry
+,				{std::make_shared<message_definition_t>(message_definition_t{"j1939",61449,"VDC2",8,false,message_format_t::J1939,frequency_clock_t(5.00000f),true,					{ // beginning signals vector
+						{std::make_shared<signal_t> (signal_t{
+							"Lateral.Acceleration",// generic_name
+							40,// bit_position
+							16,// bit_size
+							0.000488281f,// factor
+							-15.6870f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"m/s/s",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Longitudinal.Acceleration",// generic_name
+							56,// bit_position
+							8,// bit_size
+							0.100000f,// factor
+							-12.5000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"m/s/s",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Steer.Wheel.Angle",// generic_name
+							0,// bit_position
+							16,// bit_size
+							0.000976562f,// factor
+							-31.3740f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"rad",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Steer.Wheel.Angle.Sensor.Type",// generic_name
+							22,// bit_position
+							2,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+								{1,"AbsMeasuringPrinciple"},
+								{3,"NotAvailable"},
+								{0,"RelativeMeasuringPrinciple"},
+								{2,"Reserved"}
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Steer.Wheel.Turn.Counter",// generic_name
+							16,// bit_position
+							6,// bit_size
+							1.00000f,// factor
+							-32.0000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"turns",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Yaw.Rate",// generic_name
+							24,// bit_position
+							16,// bit_size
+							0.000122070f,// factor
+							-3.92000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"rad/s",// unit
+						})}
+					} // end signals vector
+				})} // end message_definition entry
+,				{std::make_shared<message_definition_t>(message_definition_t{"j1939",65215,"EBC2",8,false,message_format_t::J1939,frequency_clock_t(5.00000f),true,					{ // beginning signals vector
+						{std::make_shared<signal_t> (signal_t{
+							"Front.Axle.Speed",// generic_name
+							0,// bit_position
+							16,// bit_size
+							0.00390625f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"km/h",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Relative.Speed.Front.Axle.Left.Wheel",// generic_name
+							16,// bit_position
+							8,// bit_size
+							0.0625000f,// factor
+							-7.81250f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"km/h",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Relative.Speed.Rear.Axle1.Left.Wheel",// generic_name
+							32,// bit_position
+							8,// bit_size
+							0.0625000f,// factor
+							-7.81250f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"km/h",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Relative.Speed.Rear.Axle2.Left.Wheel",// generic_name
+							48,// bit_position
+							8,// bit_size
+							0.0625000f,// factor
+							-7.81250f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"km/h",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Rlative.Speed.Front.Axle.Right.Wheel",// generic_name
+							24,// bit_position
+							8,// bit_size
+							0.0625000f,// factor
+							-7.81250f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"km/h",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Rlative.Speed.Rear.Axle1.Right.Wheel",// generic_name
+							40,// bit_position
+							8,// bit_size
+							0.0625000f,// factor
+							-7.81250f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"km/h",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Rlative.Speed.Rear.Axle2.Right.Wheel",// generic_name
+							56,// bit_position
+							8,// bit_size
+							0.0625000f,// factor
+							-7.81250f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"km/h",// unit
+						})}
+					} // end signals vector
+				})} // end message_definition entry
+,				{std::make_shared<message_definition_t>(message_definition_t{"j1939",65253,"HOURS",8,false,message_format_t::J1939,frequency_clock_t(5.00000f),true,					{ // beginning signals vector
+						{std::make_shared<signal_t> (signal_t{
+							"Eng.Total.Hours.Of.Operation",// generic_name
+							0,// bit_position
+							32,// bit_size
+							0.0500000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"hr",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Eng.Total.Revolutions",// generic_name
+							32,// bit_position
+							32,// bit_size
+							1000.00f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"r",// unit
+						})}
+					} // end signals vector
+				})} // end message_definition entry
+,				{std::make_shared<message_definition_t>(message_definition_t{"j1939",65262,"ET1",8,false,message_format_t::J1939,frequency_clock_t(5.00000f),true,					{ // beginning signals vector
+						{std::make_shared<signal_t> (signal_t{
+							"Eng.Coolant.Temp",// generic_name
+							0,// bit_position
+							8,// bit_size
+							0.0312500f,// factor
+							-273.000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"deg C",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Eng.Fuel.Temp1",// generic_name
+							8,// bit_position
+							8,// bit_size
+							1.00000f,// factor
+							-40.0000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"deg C",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Eng.Intercooler.Temp",// generic_name
+							48,// bit_position
+							8,// bit_size
+							1.00000f,// factor
+							-40.0000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"deg C",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Eng.Intercooler.Thermostat.Opening",// generic_name
+							56,// bit_position
+							8,// bit_size
+							0.400000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"%",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Eng.Oil.Temp1",// generic_name
+							16,// bit_position
+							16,// bit_size
+							0.0312500f,// factor
+							-273.000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"deg C",// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Eng.Turbo.Oil.Temp",// generic_name
+							32,// bit_position
+							16,// bit_size
+							0.0312500f,// factor
+							-273.000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false,0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"deg C",// unit
+						})}
+					} // end signals vector
+				})} // end message_definition entry
+		}, // end message_definition vector
+			{ // beginning diagnostic_messages_ vector
+				{std::make_shared<diagnostic_message_t>(diagnostic_message_t{
+					4,
+					"engine.load",
+					0,
+					0,
+					UNIT::INVALID,
+					5.00000f,
+					decoder_t::decode_obd2_response,
+					nullptr,
+					true,
+					false
+				})}
+,				{std::make_shared<diagnostic_message_t>(diagnostic_message_t{
+					5,
+					"engine.coolant.temperature",
+					0,
+					0,
+					UNIT::INVALID,
+					1.00000f,
+					decoder_t::decode_obd2_response,
+					nullptr,
+					true,
+					false
+				})}
+,				{std::make_shared<diagnostic_message_t>(diagnostic_message_t{
+					10,
+					"fuel.pressure",
+					0,
+					0,
+					UNIT::INVALID,
+					1.00000f,
+					decoder_t::decode_obd2_response,
+					nullptr,
+					true,
+					false
+				})}
+,				{std::make_shared<diagnostic_message_t>(diagnostic_message_t{
+					11,
+					"intake.manifold.pressure",
+					0,
+					0,
+					UNIT::INVALID,
+					1.00000f,
+					decoder_t::decode_obd2_response,
+					nullptr,
+					true,
+					false
+				})}
+,				{std::make_shared<diagnostic_message_t>(diagnostic_message_t{
+					12,
+					"engine.speed",
+					0,
+					0,
+					UNIT::INVALID,
+					5.00000f,
+					decoder_t::decode_obd2_response,
+					nullptr,
+					true,
+					false
+				})}
+,				{std::make_shared<diagnostic_message_t>(diagnostic_message_t{
+					13,
+					"vehicle.speed",
+					0,
+					0,
+					UNIT::INVALID,
+					5.00000f,
+					decoder_t::decode_obd2_response,
+					nullptr,
+					true,
+					false
+				})}
+,				{std::make_shared<diagnostic_message_t>(diagnostic_message_t{
+					15,
+					"intake.air.temperature",
+					0,
+					0,
+					UNIT::INVALID,
+					1.00000f,
+					decoder_t::decode_obd2_response,
+					nullptr,
+					true,
+					false
+				})}
+,				{std::make_shared<diagnostic_message_t>(diagnostic_message_t{
+					16,
+					"mass.airflow",
+					0,
+					0,
+					UNIT::INVALID,
+					5.00000f,
+					decoder_t::decode_obd2_response,
+					nullptr,
+					true,
+					false
+				})}
+,				{std::make_shared<diagnostic_message_t>(diagnostic_message_t{
+					17,
+					"throttle.position",
+					0,
+					0,
+					UNIT::INVALID,
+					5.00000f,
+					decoder_t::decode_obd2_response,
+					nullptr,
+					true,
+					false
+				})}
+,				{std::make_shared<diagnostic_message_t>(diagnostic_message_t{
+					31,
+					"running.time",
+					0,
+					0,
+					UNIT::INVALID,
+					1.00000f,
+					decoder_t::decode_obd2_response,
+					nullptr,
+					true,
+					false
+				})}
+,				{std::make_shared<diagnostic_message_t>(diagnostic_message_t{
+					45,
+					"EGR.error",
+					0,
+					0,
+					UNIT::INVALID,
+					0.00000f,
+					decoder_t::decode_obd2_response,
+					nullptr,
+					true,
+					false
+				})}
+,				{std::make_shared<diagnostic_message_t>(diagnostic_message_t{
+					47,
+					"fuel.level",
+					0,
+					0,
+					UNIT::INVALID,
+					1.00000f,
+					decoder_t::decode_obd2_response,
+					nullptr,
+					true,
+					false
+				})}
+,				{std::make_shared<diagnostic_message_t>(diagnostic_message_t{
+					51,
+					"barometric.pressure",
+					0,
+					0,
+					UNIT::INVALID,
+					1.00000f,
+					decoder_t::decode_obd2_response,
+					nullptr,
+					true,
+					false
+				})}
+,				{std::make_shared<diagnostic_message_t>(diagnostic_message_t{
+					70,
+					"ambient.air.temperature",
+					0,
+					0,
+					UNIT::INVALID,
+					1.00000f,
+					decoder_t::decode_obd2_response,
+					nullptr,
+					true,
+					false
+				})}
+,				{std::make_shared<diagnostic_message_t>(diagnostic_message_t{
+					76,
+					"commanded.throttle.position",
+					0,
+					0,
+					UNIT::INVALID,
+					1.00000f,
+					decoder_t::decode_obd2_response,
+					nullptr,
+					true,
+					false
+				})}
+,				{std::make_shared<diagnostic_message_t>(diagnostic_message_t{
+					82,
+					"ethanol.fuel.percentage",
+					0,
+					0,
+					UNIT::INVALID,
+					1.00000f,
+					decoder_t::decode_obd2_response,
+					nullptr,
+					true,
+					false
+				})}
+,				{std::make_shared<diagnostic_message_t>(diagnostic_message_t{
+					90,
+					"accelerator.pedal.position",
+					0,
+					0,
+					UNIT::INVALID,
+					5.00000f,
+					decoder_t::decode_obd2_response,
+					nullptr,
+					true,
+					false
+				})}
+,				{std::make_shared<diagnostic_message_t>(diagnostic_message_t{
+					91,
+					"hybrid.battery-pack.remaining.life",
+					0,
+					0,
+					UNIT::INVALID,
+					5.00000f,
+					decoder_t::decode_obd2_response,
+					nullptr,
+					true,
+					false
+				})}
+,				{std::make_shared<diagnostic_message_t>(diagnostic_message_t{
+					92,
+					"engine.oil.temperature",
+					0,
+					0,
+					UNIT::INVALID,
+					1.00000f,
+					decoder_t::decode_obd2_response,
+					nullptr,
+					true,
+					false
+				})}
+,				{std::make_shared<diagnostic_message_t>(diagnostic_message_t{
+					94,
+					"engine.fuel.rate",
+					0,
+					0,
+					UNIT::INVALID,
+					1.00000f,
+					decoder_t::decode_obd2_response,
+					nullptr,
+					true,
+					false
+				})}
+,				{std::make_shared<diagnostic_message_t>(diagnostic_message_t{
+					99,
+					"engine.torque",
+					0,
+					0,
+					UNIT::INVALID,
+					1.00000f,
+					decoder_t::decode_obd2_response,
+					nullptr,
+					true,
+					false
+				})}
+
+			} // end diagnostic_messages_ vector
+		})} // end message_set entry
+	} // end message_set vector
+{
+	for(std::shared_ptr<message_set_t> cms: message_set_)
+	{
+		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);
+			std::vector<std::shared_ptr<signal_t>> signals = cmd->get_signals();
+			for(std::shared_ptr<signal_t> sig: signals)
+			{
+				sig->set_parent(cmd);
+			}
+		}
+
+		std::vector<std::shared_ptr<diagnostic_message_t>> diagnostic_messages = cms->get_diagnostic_messages();
+		for(std::shared_ptr<diagnostic_message_t> dm : diagnostic_messages)
+		{
+			dm->set_parent(cms);
+		}
+	}
+		}
+
+const std::string application_t::get_diagnostic_bus() const
+{
+	return "hs";
+}
+
+
diff --git a/examples/toyota/auris/application-generated.cpp b/examples/toyota/auris/application-generated.cpp
index f635e2bd..1d5e946a 100644
--- a/examples/toyota/auris/application-generated.cpp
+++ b/examples/toyota/auris/application-generated.cpp
@@ -7,14 +7,14 @@ 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",0x3D9,0,0,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
+				{std::make_shared<message_definition_t>(message_definition_t{"hs",0x3D9,"",0,false,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
 					{ // beginning signals vector
 						{std::make_shared<signal_t> (signal_t{
 							"engine.speed",// generic_name
 							16,// bit_position
 							16,// bit_size
 							0.250000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -36,7 +36,7 @@ application_t::application_t()
 							55,// bit_position
 							1,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -58,7 +58,7 @@ application_t::application_t()
 							8,// bit_position
 							8,// bit_size
 							0.392157f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -77,14 +77,14 @@ application_t::application_t()
 						})}
 					} // end signals vector
 				})} // end message_definition entry
-,				{std::make_shared<message_definition_t>(message_definition_t{"hs",0x3E9,0,0,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
+,				{std::make_shared<message_definition_t>(message_definition_t{"hs",0x3E9,"",0,false,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
 					{ // beginning signals vector
 						{std::make_shared<signal_t> (signal_t{
 							"vehicle.average.speed",// generic_name
 							0,// bit_position
 							15,// bit_size
 							0.0156250f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -103,14 +103,14 @@ application_t::application_t()
 						})}
 					} // end signals vector
 				})} // end message_definition entry
-,				{std::make_shared<message_definition_t>(message_definition_t{"hs",0x4D1,0,0,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
+,				{std::make_shared<message_definition_t>(message_definition_t{"hs",0x4D1,"",0,false,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
 					{ // beginning signals vector
 						{std::make_shared<signal_t> (signal_t{
 							"engine.oil.temp",// generic_name
 							16,// bit_position
 							8,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -132,7 +132,7 @@ application_t::application_t()
 							7,// bit_position
 							1,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -151,14 +151,14 @@ application_t::application_t()
 						})}
 					} // end signals vector
 				})} // end message_definition entry
-,				{std::make_shared<message_definition_t>(message_definition_t{"hs",0x620,0,0,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
+,				{std::make_shared<message_definition_t>(message_definition_t{"hs",0x620,"",0,false,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
 					{ // beginning signals vector
 						{std::make_shared<signal_t> (signal_t{
 							"doors.boot.open",// generic_name
 							47,// bit_position
 							1,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -180,7 +180,7 @@ application_t::application_t()
 							43,// bit_position
 							1,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -202,7 +202,7 @@ application_t::application_t()
 							44,// bit_position
 							1,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -224,7 +224,7 @@ application_t::application_t()
 							46,// bit_position
 							1,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -246,7 +246,7 @@ application_t::application_t()
 							45,// bit_position
 							4,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -265,14 +265,14 @@ application_t::application_t()
 						})}
 					} // end signals vector
 				})} // end message_definition entry
-,				{std::make_shared<message_definition_t>(message_definition_t{"hs",0x799,0,0,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
+,				{std::make_shared<message_definition_t>(message_definition_t{"hs",0x799,"",0,false,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
 					{ // beginning signals vector
 						{std::make_shared<signal_t> (signal_t{
 							"windows.front_left.open",// generic_name
 							43,// bit_position
 							1,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -294,7 +294,7 @@ application_t::application_t()
 							44,// bit_position
 							1,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -316,7 +316,7 @@ application_t::application_t()
 							46,// bit_position
 							1,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -338,7 +338,7 @@ application_t::application_t()
 							45,// bit_position
 							4,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
diff --git a/examples/toyota/auris/signals.json b/examples/toyota/auris/signals.json
index c6345ef4..5b726660 100644
--- a/examples/toyota/auris/signals.json
+++ b/examples/toyota/auris/signals.json
@@ -7,6 +7,9 @@
     "messages": {
         "0x620": {
             "bus": "hs",
+            "is_fd" : false,
+            "is_extended": false,
+            "is_j1939" : false,
             "signals": {
                 "doors.driver.open": {
                     "generic_name": "doors.front_left.open",
@@ -47,6 +50,9 @@
 	},
         "0x799": {
             "bus": "hs",
+            "is_fd" : false,
+            "is_extended": false,
+            "is_j1939" : false,
             "signals": {
                 "windows.driver.open": {
                     "generic_name": "windows.front_left.open",
@@ -80,6 +86,9 @@
 	},
     "0x3D9": {
     "bus": "hs",
+    "is_fd" : false,
+    "is_extended": false,
+    "is_j1939" : false,
       "signals": {
         "PT_FuelLevelPct": {
           "generic_name": "fuel.level",
@@ -107,6 +116,9 @@
     },
     "0x4D1": {
     "bus": "hs",
+    "is_fd" : false,
+    "is_extended": false,
+    "is_j1939" : false,
       "signals": {
         "PT_EngineOilTempHigh": {
           "generic_name": "engine.oil.temp.high",
@@ -127,6 +139,9 @@
     },
     "0x3E9": {
       "bus": "hs",
+      "is_fd" : false,
+      "is_extended": false,
+      "is_j1939" : false,
       "signals": {
         "PT_VehicleAvgSpeed": {
           "generic_name": "vehicle.average.speed",
diff --git a/low-can-binding/binding/application-generated.cpp b/low-can-binding/binding/application-generated.cpp
index 8db26224..65f72cdf 100644
--- a/low-can-binding/binding/application-generated.cpp
+++ b/low-can-binding/binding/application-generated.cpp
@@ -7,14 +7,14 @@ application_t::application_t()
 	, message_set_{
 		{std::make_shared<message_set_t>(message_set_t{0,"AGL Virtual Car",
 			{ // beginning message_definition_ vector
-				{std::make_shared<message_definition_t>(message_definition_t{"ls",0x30,0,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
+				{std::make_shared<message_definition_t>(message_definition_t{"ls",0x30,"",0,false,message_format_t::EXTENDED,frequency_clock_t(5.00000f),true,
 					{ // beginning signals vector
 						{std::make_shared<signal_t> (signal_t{
 							"hvac.fan.speed",// generic_name
 							32,// bit_position
 							8,// bit_size
 							23.5294f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -29,14 +29,14 @@ application_t::application_t()
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"" // unit
+							""// unit
 						})},
 						{std::make_shared<signal_t> (signal_t{
 							"hvac.temperature.left",// generic_name
 							0,// bit_position
 							8,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -51,14 +51,14 @@ application_t::application_t()
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"" // unit
+							""// unit
 						})},
 						{std::make_shared<signal_t> (signal_t{
 							"hvac.temperature.right",// generic_name
 							8,// bit_position
 							8,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -73,14 +73,14 @@ application_t::application_t()
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"" // unit
+							""// unit
 						})},
 						{std::make_shared<signal_t> (signal_t{
 							"hvac.temperature.average",// generic_name
 							16,// bit_position
 							8,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -95,18 +95,18 @@ application_t::application_t()
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"" // unit
+							""// unit
 						})}
 					} // end signals vector
 				})} // end message_definition entry
-,				{std::make_shared<message_definition_t>(message_definition_t{"hs",0x3D9,0,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
+,				{std::make_shared<message_definition_t>(message_definition_t{"hs",0x3D9,"",0,true,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
 					{ // beginning signals vector
 						{std::make_shared<signal_t> (signal_t{
 							"engine.speed",// generic_name
 							16,// bit_position
 							16,// bit_size
 							0.250000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -114,43 +114,808 @@ application_t::application_t()
 							false,// force_send_changed
 							{
 							},// states
+							true,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							""// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"fuel.level.low",// generic_name
+							55,// bit_position
+							1,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							true,// writable
+							decoder_t::decode_boolean,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							""// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"fuel.level",// generic_name
+							8,// bit_position
+							8,// bit_size
+							0.392157f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							true,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							""// unit
+						})}
+					} // end signals vector
+				})} // end message_definition entry
+,				{std::make_shared<message_definition_t>(message_definition_t{"hs",0x3E9,"",0,false,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
+					{ // beginning signals vector
+						{std::make_shared<signal_t> (signal_t{
+							"vehicle.average.speed",// generic_name
+							0,// bit_position
+							15,// bit_size
+							0.0156250f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							""// unit
+						})}
+					} // end signals vector
+				})} // end message_definition entry
+,				{std::make_shared<message_definition_t>(message_definition_t{"hs",0x4D1,"",0,false,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
+					{ // beginning signals vector
+						{std::make_shared<signal_t> (signal_t{
+							"engine.oil.temp",// generic_name
+							16,// bit_position
+							8,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							""// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"engine.oil.temp.high",// generic_name
+							7,// bit_position
+							1,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							decoder_t::decode_boolean,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							""// unit
+						})}
+					} // end signals vector
+				})} // end message_definition entry
+,				{std::make_shared<message_definition_t>(message_definition_t{"hs",0x620,"",0,false,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
+					{ // beginning signals vector
+						{std::make_shared<signal_t> (signal_t{
+							"doors.boot.open",// generic_name
+							47,// bit_position
+							1,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							decoder_t::decode_boolean,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							""// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"doors.front_left.open",// generic_name
+							43,// bit_position
+							1,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							decoder_t::decode_boolean,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							""// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"doors.front_right.open",// generic_name
+							44,// bit_position
+							1,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							decoder_t::decode_boolean,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							""// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"doors.rear_left.open",// generic_name
+							46,// bit_position
+							1,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							decoder_t::decode_boolean,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							""// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"doors.rear_right.open",// generic_name
+							45,// bit_position
+							4,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							decoder_t::decode_boolean,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							""// unit
+						})}
+					} // end signals vector
+				})} // end message_definition entry
+,				{std::make_shared<message_definition_t>(message_definition_t{"hs",0x799,"",0,false,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
+					{ // beginning signals vector
+						{std::make_shared<signal_t> (signal_t{
+							"windows.front_left.open",// generic_name
+							43,// bit_position
+							1,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							decoder_t::decode_boolean,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							""// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"windows.front_right.open",// generic_name
+							44,// bit_position
+							1,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							decoder_t::decode_boolean,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							""// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"windows.rear_left.open",// generic_name
+							46,// bit_position
+							1,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							decoder_t::decode_boolean,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							""// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"windows.rear_right.open",// generic_name
+							45,// bit_position
+							4,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							decoder_t::decode_boolean,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							""// unit
+						})}
+					} // end signals vector
+				})} // end message_definition entry
+#ifdef USE_FEATURE_J1939
+,				{std::make_shared<message_definition_t>(message_definition_t{"j1939",61442,"ETC1",8,false,message_format_t::J1939,frequency_clock_t(5.00000f),true,
+					{ // beginning signals vector
+						{std::make_shared<signal_t> (signal_t{
+							"Eng.Momentary.Overspeed.Enable",// generic_name
+							32,// bit_position
+							2,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+								{0,"MomentaryEngOverspeedIsDisabled"},
+								{1,"MomentaryEngOverspeedIsEnabled"},
+								{2,"Reserved"},
+								{3,"TakeNoAction"}
+							},// states
+							true,// writable
+							decoder_t::decode_state,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							""// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Momentary.Eng.Max.Power.Enable",// generic_name
+							36,// bit_position
+							2,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+								{2,"fault"},
+								{1,"mmntarilyRqingMaxPowerAvailable"},
+								{3,"notAvailable"},
+								{0,"notRqingMaxPowerAvailable"}
+							},// states
+							true,// writable
+							decoder_t::decode_state,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							""// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Percent.Clutch.Slip",// generic_name
+							24,// bit_position
+							8,// bit_size
+							0.400000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							true,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"%"// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Progressive.Shift.Disable",// generic_name
+							34,// bit_position
+							2,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+								{1,"ProgressiveShiftIsDisabled"},
+								{0,"ProgressiveShiftIsNotDisabled"},
+								{2,"Reserved"},
+								{3,"TakeNoAction"}
+							},// states
+							true,// writable
+							decoder_t::decode_state,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							""// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Src.Addrss.Of.Ctrllng.Dvc.Fr.Trns.Cntrl",// generic_name
+							56,// bit_position
+							8,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							true,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							""// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Trans.Driveline.Engaged",// generic_name
+							0,// bit_position
+							2,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+								{0,"DrivelineDisengaged"},
+								{1,"DrivelineEngaged"},
+								{2,"Error"},
+								{3,"NotAvailable"}
+							},// states
+							true,// writable
+							decoder_t::decode_state,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							""// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Trans.Input.Shaft.Speed",// generic_name
+							40,// bit_position
+							16,// bit_size
+							0.125000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							true,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"rpm"// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Trans.Output.Shaft.Speed",// generic_name
+							8,// bit_position
+							16,// bit_size
+							0.125000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							true,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"rpm"// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Trans.Shift.In.Process",// generic_name
+							4,// bit_position
+							2,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+								{2,"Error"},
+								{3,"NotAvailable"},
+								{1,"ShiftInProcess"},
+								{0,"ShiftIsNotInProcess"}
+							},// states
+							true,// writable
+							decoder_t::decode_state,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							""// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Trns.Trq.Cnvrtr.Lckp.Trnstn.In.Prcess",// generic_name
+							6,// bit_position
+							2,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+								{2,"Error"},
+								{3,"NotAvailable"},
+								{1,"TransitionIsInProcess"},
+								{0,"TransitionIsNotInProcess"}
+							},// states
+							true,// writable
+							decoder_t::decode_state,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							""// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Trns.Trque.Converter.Lockup.Engaged",// generic_name
+							2,// bit_position
+							2,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+								{2,"Error"},
+								{3,"NotAvailable"},
+								{0,"TorqueConverterLockupDisengaged"},
+								{1,"TorqueConverterLockupEngaged"}
+							},// states
+							true,// writable
+							decoder_t::decode_state,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							""// unit
+						})}
+					} // end signals vector
+				})} // end message_definition entry
+,				{std::make_shared<message_definition_t>(message_definition_t{"j1939",61444,"EEC1",8,false,message_format_t::J1939,frequency_clock_t(5.00000f),true,
+					{ // beginning signals vector
+						{std::make_shared<signal_t> (signal_t{
+							"Actl.Eng.Prcnt.Trque.High.Resolution",// generic_name
+							4,// bit_position
+							4,// bit_size
+							0.125000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+								{0,"0000"},
+								{1,"0125"},
+								{7,"0875"},
+								{8,"1111NotAvailable"}
+							},// states
+							false,// writable
+							decoder_t::decode_state,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"%"// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Actual.Eng.Percent.Torque",// generic_name
+							16,// bit_position
+							8,// bit_size
+							1.00000f,// factor
+							-125.000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"%"// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Drivers.Demand.Eng.Percent.Torque",// generic_name
+							8,// bit_position
+							8,// bit_size
+							1.00000f,// factor
+							-125.000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"%"// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Eng.Demand.Percent.Torque",// generic_name
+							56,// bit_position
+							8,// bit_size
+							1.00000f,// factor
+							-125.000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"%"// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Eng.Speed",// generic_name
+							24,// bit_position
+							16,// bit_size
+							0.125000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"rpm"// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Eng.Starter.Mode",// generic_name
+							48,// bit_position
+							4,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+								{9,"1011Reserved"},
+								{14,"error"},
+								{15,"notAvailable"},
+								{0,"startNotRqed"},
+								{2,"starterActiveGearEngaged"},
+								{1,"starterActiveGearNotEngaged"},
+								{12,"starterInhibitedReasonUnknown"},
+								{3,"strtFnshdStrtrNtActvAftrHvngBnA"},
+								{6,"strtrInhbtdDTDrvlnEnggdOthrTrns"},
+								{5,"strtrInhbtdDTEngNtReadyForStart"},
+								{7,"strtrInhbtdDToActiveImmobilizer"},
+								{4,"strtrInhbtdDToEngAlreadyRunning"},
+								{8,"strtrInhbtdDueToStarterOvertemp"}
+							},// states
 							false,// writable
-							nullptr,// decoder
+							decoder_t::decode_state,// decoder
 							nullptr,// encoder
 							false,// received
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"" // unit
+							""// unit
 						})},
 						{std::make_shared<signal_t> (signal_t{
-							"fuel.level.low",// generic_name
-							55,// bit_position
-							1,// bit_size
+							"Eng.Torque.Mode",// generic_name
+							0,// bit_position
+							4,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
 							true,// send_same
 							false,// force_send_changed
 							{
+								{7,"ABS control"},
+								{5,"ASR control"},
+								{1,"Accelerator pedal/operator selec"},
+								{10,"Braking system"},
+								{2,"Cruise control"},
+								{9,"High speed governor"},
+								{0,"Low idle governor/no request (de"},
+								{15,"Not available"},
+								{3,"PTO governor"},
+								{11,"Remote accelerator"},
+								{4,"Road speed governor"},
+								{8,"Torque limiting"},
+								{6,"Transmission control"}
 							},// states
 							false,// writable
-							decoder_t::decode_boolean,// decoder
+							decoder_t::decode_state,// decoder
 							nullptr,// encoder
 							false,// received
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"" // unit
+							""// unit
 						})},
 						{std::make_shared<signal_t> (signal_t{
-							"fuel.level",// generic_name
-							8,// bit_position
+							"Src.AddrssOf.Ctrllng.Dvc.Fr.Eng.Cntrl",// generic_name
+							40,// bit_position
 							8,// bit_size
-							0.392157f,// factor
-							0.00000,// offset
+							1.00000f,// factor
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -165,18 +930,62 @@ application_t::application_t()
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"" // unit
+							""// unit
 						})}
 					} // end signals vector
 				})} // end message_definition entry
-,				{std::make_shared<message_definition_t>(message_definition_t{"hs",0x3E9,0,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
+,				{std::make_shared<message_definition_t>(message_definition_t{"j1939",61449,"VDC2",8,false,message_format_t::J1939,frequency_clock_t(5.00000f),true,
 					{ // beginning signals vector
 						{std::make_shared<signal_t> (signal_t{
-							"vehicle.average.speed",// generic_name
+							"Lateral.Acceleration",// generic_name
+							40,// bit_position
+							16,// bit_size
+							0.000488281f,// factor
+							-15.6870f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"m/s/s"// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Longitudinal.Acceleration",// generic_name
+							56,// bit_position
+							8,// bit_size
+							0.100000f,// factor
+							-12.5000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"m/s/s"// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Steer.Wheel.Angle",// generic_name
 							0,// bit_position
-							15,// bit_size
-							0.0156250f,// factor
-							0.00000,// offset
+							16,// bit_size
+							0.000976562f,// factor
+							-31.3740f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -191,18 +1000,40 @@ application_t::application_t()
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"" // unit
-						})}
-					} // end signals vector
-				})} // end message_definition entry
-,				{std::make_shared<message_definition_t>(message_definition_t{"hs",0x4D1,0,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
-					{ // beginning signals vector
+							"rad"// unit
+						})},
 						{std::make_shared<signal_t> (signal_t{
-							"engine.oil.temp",// generic_name
+							"Steer.Wheel.Angle.Sensor.Type",// generic_name
+							22,// bit_position
+							2,// bit_size
+							1.00000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+								{1,"AbsMeasuringPrinciple"},
+								{3,"NotAvailable"},
+								{0,"RelativeMeasuringPrinciple"},
+								{2,"Reserved"}
+							},// states
+							false,// writable
+							decoder_t::decode_state,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							""// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Steer.Wheel.Turn.Counter",// generic_name
 							16,// bit_position
-							8,// bit_size
+							6,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							-32.0000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -217,14 +1048,14 @@ application_t::application_t()
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"" // unit
+							"turns"// unit
 						})},
 						{std::make_shared<signal_t> (signal_t{
-							"engine.oil.temp.high",// generic_name
-							7,// bit_position
-							1,// bit_size
-							1.00000f,// factor
-							0.00000,// offset
+							"Yaw.Rate",// generic_name
+							24,// bit_position
+							16,// bit_size
+							0.000122070f,// factor
+							-3.92000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -233,24 +1064,24 @@ application_t::application_t()
 							{
 							},// states
 							false,// writable
-							decoder_t::decode_boolean,// decoder
+							nullptr,// decoder
 							nullptr,// encoder
 							false,// received
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"" // unit
+							"rad/s"// unit
 						})}
 					} // end signals vector
 				})} // end message_definition entry
-,				{std::make_shared<message_definition_t>(message_definition_t{"hs",0x620,0,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
+,				{std::make_shared<message_definition_t>(message_definition_t{"j1939",65215,"EBC2",8,false,message_format_t::J1939,frequency_clock_t(5.00000f),true,
 					{ // beginning signals vector
 						{std::make_shared<signal_t> (signal_t{
-							"doors.boot.open",// generic_name
-							47,// bit_position
-							1,// bit_size
-							1.00000f,// factor
-							0.00000,// offset
+							"Front.Axle.Speed",// generic_name
+							0,// bit_position
+							16,// bit_size
+							0.00390625f,// factor
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -259,20 +1090,20 @@ application_t::application_t()
 							{
 							},// states
 							false,// writable
-							decoder_t::decode_boolean,// decoder
+							nullptr,// decoder
 							nullptr,// encoder
 							false,// received
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"" // unit
+							"km/h"// unit
 						})},
 						{std::make_shared<signal_t> (signal_t{
-							"doors.front_left.open",// generic_name
-							43,// bit_position
-							1,// bit_size
-							1.00000f,// factor
-							0.00000,// offset
+							"Relative.Speed.Front.Axle.Left.Wheel",// generic_name
+							16,// bit_position
+							8,// bit_size
+							0.0625000f,// factor
+							-7.81250f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -281,20 +1112,20 @@ application_t::application_t()
 							{
 							},// states
 							false,// writable
-							decoder_t::decode_boolean,// decoder
+							nullptr,// decoder
 							nullptr,// encoder
 							false,// received
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"" // unit
+							"km/h"// unit
 						})},
 						{std::make_shared<signal_t> (signal_t{
-							"doors.front_right.open",// generic_name
-							44,// bit_position
-							1,// bit_size
-							1.00000f,// factor
-							0.00000,// offset
+							"Relative.Speed.Rear.Axle1.Left.Wheel",// generic_name
+							32,// bit_position
+							8,// bit_size
+							0.0625000f,// factor
+							-7.81250f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -303,20 +1134,20 @@ application_t::application_t()
 							{
 							},// states
 							false,// writable
-							decoder_t::decode_boolean,// decoder
+							nullptr,// decoder
 							nullptr,// encoder
 							false,// received
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"" // unit
+							"km/h"// unit
 						})},
 						{std::make_shared<signal_t> (signal_t{
-							"doors.rear_left.open",// generic_name
-							46,// bit_position
-							1,// bit_size
-							1.00000f,// factor
-							0.00000,// offset
+							"Relative.Speed.Rear.Axle2.Left.Wheel",// generic_name
+							48,// bit_position
+							8,// bit_size
+							0.0625000f,// factor
+							-7.81250f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -325,20 +1156,20 @@ application_t::application_t()
 							{
 							},// states
 							false,// writable
-							decoder_t::decode_boolean,// decoder
+							nullptr,// decoder
 							nullptr,// encoder
 							false,// received
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"" // unit
+							"km/h"// unit
 						})},
 						{std::make_shared<signal_t> (signal_t{
-							"doors.rear_right.open",// generic_name
-							45,// bit_position
-							4,// bit_size
-							1.00000f,// factor
-							0.00000,// offset
+							"Rlative.Speed.Front.Axle.Right.Wheel",// generic_name
+							24,// bit_position
+							8,// bit_size
+							0.0625000f,// factor
+							-7.81250f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -347,24 +1178,68 @@ application_t::application_t()
 							{
 							},// states
 							false,// writable
-							decoder_t::decode_boolean,// decoder
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"km/h"// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Rlative.Speed.Rear.Axle1.Right.Wheel",// generic_name
+							40,// bit_position
+							8,// bit_size
+							0.0625000f,// factor
+							-7.81250f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"km/h"// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Rlative.Speed.Rear.Axle2.Right.Wheel",// generic_name
+							56,// bit_position
+							8,// bit_size
+							0.0625000f,// factor
+							-7.81250f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
 							nullptr,// encoder
 							false,// received
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"" // unit
+							"km/h"// unit
 						})}
 					} // end signals vector
 				})} // end message_definition entry
-,				{std::make_shared<message_definition_t>(message_definition_t{"hs",0x799,0,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
+,				{std::make_shared<message_definition_t>(message_definition_t{"j1939",65253,"HOURS",8,false,message_format_t::J1939,frequency_clock_t(5.00000f),true,
 					{ // beginning signals vector
 						{std::make_shared<signal_t> (signal_t{
-							"windows.front_left.open",// generic_name
-							43,// bit_position
-							1,// bit_size
-							1.00000f,// factor
-							0.00000,// offset
+							"Eng.Total.Hours.Of.Operation",// generic_name
+							0,// bit_position
+							32,// bit_size
+							0.0500000f,// factor
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -373,20 +1248,20 @@ application_t::application_t()
 							{
 							},// states
 							false,// writable
-							decoder_t::decode_boolean,// decoder
+							nullptr,// decoder
 							nullptr,// encoder
 							false,// received
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"" // unit
+							"hr"// unit
 						})},
 						{std::make_shared<signal_t> (signal_t{
-							"windows.front_right.open",// generic_name
-							44,// bit_position
-							1,// bit_size
-							1.00000f,// factor
-							0.00000,// offset
+							"Eng.Total.Revolutions",// generic_name
+							32,// bit_position
+							32,// bit_size
+							1000.00f,// factor
+							0.00000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -395,20 +1270,46 @@ application_t::application_t()
 							{
 							},// states
 							false,// writable
-							decoder_t::decode_boolean,// decoder
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"r"// unit
+						})}
+					} // end signals vector
+				})} // end message_definition entry
+,				{std::make_shared<message_definition_t>(message_definition_t{"j1939",65262,"ET1",8,false,message_format_t::J1939,frequency_clock_t(5.00000f),true,
+					{ // beginning signals vector
+						{std::make_shared<signal_t> (signal_t{
+							"Eng.Coolant.Temp",// generic_name
+							0,// bit_position
+							8,// bit_size
+							0.0312500f,// factor
+							-273.000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
 							nullptr,// encoder
 							false,// received
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"" // unit
+							"deg C"// unit
 						})},
 						{std::make_shared<signal_t> (signal_t{
-							"windows.rear_left.open",// generic_name
-							46,// bit_position
-							1,// bit_size
+							"Eng.Fuel.Temp1",// generic_name
+							8,// bit_position
+							8,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							-40.0000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -417,20 +1318,20 @@ application_t::application_t()
 							{
 							},// states
 							false,// writable
-							decoder_t::decode_boolean,// decoder
+							nullptr,// decoder
 							nullptr,// encoder
 							false,// received
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"" // unit
+							"deg C"// unit
 						})},
 						{std::make_shared<signal_t> (signal_t{
-							"windows.rear_right.open",// generic_name
-							45,// bit_position
-							4,// bit_size
+							"Eng.Intercooler.Temp",// generic_name
+							48,// bit_position
+							8,// bit_size
 							1.00000f,// factor
-							0.00000,// offset
+							-40.0000f,// offset
 							0,// min_value
 							0,// max_value
 							frequency_clock_t(0.00000f),// frequency
@@ -439,17 +1340,83 @@ application_t::application_t()
 							{
 							},// states
 							false,// writable
-							decoder_t::decode_boolean,// decoder
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"deg C"// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Eng.Intercooler.Thermostat.Opening",// generic_name
+							56,// bit_position
+							8,// bit_size
+							0.400000f,// factor
+							0.00000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"%"// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Eng.Oil.Temp1",// generic_name
+							16,// bit_position
+							16,// bit_size
+							0.0312500f,// factor
+							-273.000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
+							nullptr,// encoder
+							false,// received
+							std::make_pair<bool, int>(false, 0),// multiplex
+							0,// is_big_endian
+							0,// is_signed
+							"deg C"// unit
+						})},
+						{std::make_shared<signal_t> (signal_t{
+							"Eng.Turbo.Oil.Temp",// generic_name
+							32,// bit_position
+							16,// bit_size
+							0.0312500f,// factor
+							-273.000f,// offset
+							0,// min_value
+							0,// max_value
+							frequency_clock_t(0.00000f),// frequency
+							true,// send_same
+							false,// force_send_changed
+							{
+							},// states
+							false,// writable
+							nullptr,// decoder
 							nullptr,// encoder
 							false,// received
 							std::make_pair<bool, int>(false, 0),// multiplex
 							0,// is_big_endian
 							0,// is_signed
-							"" // unit
+							"deg C"// unit
 						})}
 					} // end signals vector
 				})} // end message_definition entry
-
+#endif
 		}, // end message_definition vector
 			{ // beginning diagnostic_messages_ vector
 				{std::make_shared<diagnostic_message_t>(diagnostic_message_t{
@@ -734,3 +1701,5 @@ const std::string application_t::get_diagnostic_bus() const
 {
 	return "hs";
 }
+
+
-- 
cgit