Update in demo
diff --git a/demo/CANFD_matrix_messages.ttcn b/demo/CANFD_matrix_messages.ttcn
new file mode 100644
index 0000000..5ab56d7
--- /dev/null
+++ b/demo/CANFD_matrix_messages.ttcn
@@ -0,0 +1,79 @@
+module CANFD_matrix_messages {
+
+import from Can all // for CAN_id
+import from CAN_matrix_signals all
+
+//The following section is used for the automatic message encding / decoding
+
+type record CANFD_MESSAGE_TESTFRAME0_msg_type
+{
+ BIT11_signal_type test_sig_11_bit_bitstring_lsb_coded,
+ BIT5_signal_type test_sig_5_bit_bitstring_lsb_coded
+
+} with {variant "FIELDORDER(msb)"
+ variant (test_sig_11_bit_bitstring_lsb_coded) "BITORDERINFIELD(lsb)"
+ variant (test_sig_5_bit_bitstring_lsb_coded) "BITORDERINFIELD(lsb)"
+}
+
+type record CANFD_MESSAGE_TESTFRAME1_msg_type
+{
+ BIT11_signal_type test_sig_11_bit_bitstring_msb_coded,
+ BIT5_signal_type test_sig_5_bit_bitstring_msb_coded
+
+} with {variant "FIELDORDER(msb)"
+ variant (test_sig_11_bit_bitstring_msb_coded) "BITORDERINFIELD(msb)"
+ variant (test_sig_5_bit_bitstring_msb_coded) "BITORDERINFIELD(msb)"
+}
+
+type record CANFD_MESSAGE_TESTFRAME2_msg_type
+{
+ INT_BIT11_signal_type test_sig_11_bit_integer_msb_coded,
+ INT_BIT5_signal_type test_sig_5_bit_integer_msb_coded
+
+} with {variant "FIELDORDER(msb)"
+ variant (test_sig_11_bit_integer_msb_coded) "BITORDERINFIELD(msb)"
+ variant (test_sig_5_bit_integer_msb_coded) "BITORDERINFIELD(msb)"
+}
+
+type record CANFD_MESSAGE_TESTFRAME3_msg_type
+{
+ OCT1_signal_type test_sig_1_byte_octetstring_msb_coded,
+ OCT2_signal_type test_sig_2_byte_octetstring_msb_coded
+
+} with {variant "" }
+
+type record CANFD_MESSAGE_EXTENDEDFRAME1_msg_type
+{
+ // CAN_id can_id ('80000001'O),
+ // according to SocketCAN Extended frames have the bit 31 set,
+ OCT2_signal_type test_sig_2_byte_octetstring_msb_coded
+
+} with {variant ""}
+
+ type union CANFD_MatrixPayloadUnion
+ {
+ CANFD_MESSAGE_TESTFRAME0_msg_type message_MyTestframe0,
+ CANFD_MESSAGE_TESTFRAME1_msg_type message_MyTestframe1,
+ CANFD_MESSAGE_TESTFRAME2_msg_type message_MyTestframe2,
+ CANFD_MESSAGE_TESTFRAME3_msg_type message_MyTestframe3,
+ CANFD_MESSAGE_EXTENDEDFRAME1_msg_type message_extendedFrame1
+ }
+ with {variant "" }
+
+ type record CANFD_MatrixUnion {
+ CAN_id can_id,
+ CAN_flags can_flags, // only used with CAN FD
+ CANFD_MatrixPayloadUnion can_pdu
+} with {variant (can_pdu) "CROSSTAG(
+ message_MyTestframe0, can_id = '00000122'O;
+ message_MyTestframe1, can_id = '00000123'O;
+ message_MyTestframe2, can_id = '00000124'O;
+ message_MyTestframe3, can_id = '00000125'O;
+ message_extendedFrame1, can_id = '80000001'O;
+ )"
+ }
+
+
+//The above section is used for the automatic message encding / decoding
+
+} with { encode "RAW" }
diff --git a/demo/CAN_matrix.ttcn b/demo/CAN_matrix.ttcn
index 61db435..13ddedf 100644
--- a/demo/CAN_matrix.ttcn
+++ b/demo/CAN_matrix.ttcn
@@ -3,8 +3,8 @@
import from Can all // for CAN_id
import from SocketCAN_Types all // for SocketCAN_CAN_or_CAN_FD_frame
import from CAN_matrix_general_types all
-import from My_can_matrix all
-import from My_canfd_matrix all
+import from CAN_matrix_messages all
+import from CANFD_matrix_messages all
external function f_encode_can_matrix(in CAN_MatrixUnion pdu) return octetstring
with { extension "prototype(convert) encode(RAW)" }
diff --git a/demo/CAN_matrix_messages.ttcn b/demo/CAN_matrix_messages.ttcn
new file mode 100644
index 0000000..e733e1d
--- /dev/null
+++ b/demo/CAN_matrix_messages.ttcn
@@ -0,0 +1,150 @@
+module CAN_matrix_messages {
+
+import from Can all // for CAN_id
+
+import from CAN_matrix_signals all
+
+
+
+//The following section is used for the automatic message encding / decoding
+
+//For each message type:
+
+/* type record <message name>_msg_type
+{
+ <signal name1>_signal_type <signal name1>,
+ <signal name2>_signal_type <signal name2>,
+ ...
+ <signal nameN>_signal_type <signal nameK>
+} with {variant "FIELDORDER(msb)"
+ variant (<signal name1>) "BITORDERINFIELD(lsb)" // lsb for little endian, msb for big endian
+ variant (<signal name2>) "BITORDERINFIELD(lsb)" // lsb for little endian, msb for big endian
+ ...
+ variant (<signal nameK>) "BITORDERINFIELD(lsb)" // lsb for little endian, msb for big endian
+}
+ */
+
+type record CAN_MESSAGE_TESTFRAME0_msg_type
+{
+ BIT11_signal_type test_sig_11_bit_bitstring_little_endian_coded,
+ BIT5_signal_type test_sig_5_bit_bitstring_little_endian_coded
+
+} with {variant "FIELDORDER(msb)"
+ variant (test_sig_11_bit_bitstring_little_endian_coded) "BITORDERINFIELD(lsb)"
+ variant (test_sig_5_bit_bitstring_little_endian_coded) "BITORDERINFIELD(lsb)"
+}
+
+type record CAN_MESSAGE_TESTFRAME1_msg_type
+{
+ BIT11_signal_type test_sig_11_bit_bitstring_big_endian_coded,
+ BIT5_signal_type test_sig_5_bit_bitstring_big_endian_coded
+
+} with {variant "FIELDORDER(msb)"
+ variant (test_sig_11_bit_bitstring_big_endian_coded) "BITORDERINFIELD(msb)"
+ variant (test_sig_5_bit_bitstring_big_endian_coded) "BITORDERINFIELD(msb)"
+}
+
+type record CAN_MESSAGE_TESTFRAME2_msg_type
+{
+ INT_BIT11_signal_type test_sig_11_bit_integer_big_endian_coded,
+ INT_BIT5_signal_type test_sig_5_bit_integer_big_endian_coded
+
+} with {variant "FIELDORDER(msb)"
+ variant (test_sig_11_bit_integer_big_endian_coded) "BITORDERINFIELD(msb)"
+ variant (test_sig_5_bit_integer_big_endian_coded) "BITORDERINFIELD(msb)"
+}
+
+type record CAN_MESSAGE_TESTFRAME3_msg_type
+{
+ OCT1_signal_type test_sig_1_byte_octetstring_big_endian_coded,
+ OCT2_signal_type test_sig_2_byte_octetstring_big_endian_coded
+
+} with {variant "FIELDORDER(msb)"
+ variant (test_sig_1_byte_octetstring_big_endian_coded) "BITORDERINFIELD(msb)"
+ variant (test_sig_2_byte_octetstring_big_endian_coded) "BITORDERINFIELD(msb)"
+}
+
+type record CAN_MESSAGE_TESTFRAME4_msg_type
+{
+ INT_BIT9_PADDED_2_signal_type test_unsig_9_bit_2_padded_integer_big_endian_coded,
+ INT_BIT5_signal_type test_sig_5_bit_integer_big_endian_coded
+
+} with {variant "FIELDORDER(msb)"
+ variant (test_unsig_9_bit_2_padded_integer_big_endian_coded) "BITORDERINFIELD(msb)"
+ variant (test_sig_5_bit_integer_big_endian_coded) "BITORDERINFIELD(msb)"
+}
+
+type record CAN_MESSAGE_TESTFRAME5_msg_type
+{
+ INT_BIT9_PADDED_2_signal_type test_unsig_9_bit_2_padded_integer_big_endian_coded,
+ INT_BIT5_signal_type test_sig_5_bit_integer_big_endian_coded
+
+} with {variant "FIELDORDER(msb)"
+ variant (test_unsig_9_bit_2_padded_integer_big_endian_coded) "BITORDERINFIELD(lsb)"
+ variant (test_sig_5_bit_integer_big_endian_coded) "BITORDERINFIELD(lsb)"
+}
+
+type record CAN_MESSAGE_EXTENDEDFRAME1_msg_type
+{
+ // CAN_id can_id ('80000001'O),
+ // according to SocketCAN Extended frames have the bit 31 set,
+ OCT2_signal_type test_sig_2_byte_octetstring_msb_coded
+
+} with {variant "FIELDORDER(msb)"
+ variant (test_sig_2_byte_octetstring_msb_coded) "BITORDERINFIELD(lsb)"
+}
+
+
+
+/* For code generation from can matrix:
+type union CAN_MatrixPayloadUnion
+{
+ <message name1>_msg_type <message name1>_frame,
+ <message name2>_msg_type <message name2>_frame,
+ ....
+ <message nameK>_msg_type <message nameK>_frame
+} with {variant "" }
+
+type record CAN_MatrixUnion {
+ CAN_id can_id,
+ CAN_MatrixPayloadUnion can_pdu
+} with {variant (can_pdu) "CROSSTAG(
+ <message name1>_frame, can_id = '<CAN-ID of message 1 in Hex padded with 0s>'O;
+ <message name2>_frame, can_id = '<CAN-ID of message 2 in Hex padded with 0s>'O;
+ ...
+ <message nameK>_frame, can_id = '<CAN-ID of message K in Hex padded with 0s>'O;
+// note for extended CAN-Frames CAN-ID is ored with '80000000'O
+ )"
+ }
+*/
+
+ type union CAN_MatrixPayloadUnion
+ {
+ CAN_MESSAGE_TESTFRAME0_msg_type message_MyTestframe0,
+ CAN_MESSAGE_TESTFRAME1_msg_type message_MyTestframe1,
+ CAN_MESSAGE_TESTFRAME2_msg_type message_MyTestframe2,
+ CAN_MESSAGE_TESTFRAME3_msg_type message_MyTestframe3,
+ CAN_MESSAGE_TESTFRAME4_msg_type message_MyTestframe4,
+ CAN_MESSAGE_TESTFRAME5_msg_type message_MyTestframe5,
+ CAN_MESSAGE_EXTENDEDFRAME1_msg_type message_extendedFrame1
+ }
+ with {variant "" }
+
+ type record CAN_MatrixUnion {
+ CAN_id can_id,
+ CAN_MatrixPayloadUnion can_pdu
+} with {variant (can_pdu) "CROSSTAG(
+ message_MyTestframe0, can_id = '00000122'O;
+ message_MyTestframe1, can_id = '00000123'O;
+ message_MyTestframe2, can_id = '00000124'O;
+ message_MyTestframe3, can_id = '00000125'O;
+ message_MyTestframe4, can_id = '00000126'O;
+ message_MyTestframe5, can_id = '00000127'O;
+ message_extendedFrame1, can_id = '80000001'O;
+ )"
+ }
+
+
+//The above section is used for the automatic message encding / decoding
+
+} with { encode "RAW" }
diff --git a/demo/CAN_matrix_signals.ttcn b/demo/CAN_matrix_signals.ttcn
new file mode 100644
index 0000000..067bd36
--- /dev/null
+++ b/demo/CAN_matrix_signals.ttcn
@@ -0,0 +1,51 @@
+module CAN_matrix_signals { // header
+
+import from General_Types all // header
+import from CAN_matrix_general_types all // header
+
+
+// instead of distinguishing between padding and no padding code generation,
+// always tghe padded soulution could be used.
+
+
+// for Bit types without padding
+// type BIT<bitssize>_MSB <signal_name>_signal_type with { variant "BITORDER(msb)" };
+type BIT11_MSB BIT11_signal_type with { variant "BITORDER(msb)" };
+type BIT5_MSB BIT5_signal_type with { variant "BITORDER(msb)" };
+
+// for n-Bit types with k-Bit padding
+//type INT_BIT<n>_MSB <signal_name>_signal_type with
+//{ variant "ALIGN(right)"
+// variant "FIELDLENGTH(<(n+k)>)" // 9 (used) +2 (padding) = 11
+// variant "BITORDER(msb)"
+//};
+type INT_BIT9_MSB BIT_BIT9_PADDED_2_signal_type with
+{ variant "ALIGN(right)"
+ variant "FIELDLENGTH(11)" // 9 (used) +2 (padding) = 11
+ variant "BITORDER(msb)"
+};
+
+// for integer types without padding
+// type INT_BIT<bitssize>_MSB <signal_name>_signal_type with { variant "BITORDER(msb)" };
+type INT_BIT11_MSB INT_BIT11_signal_type with { variant "BITORDER(msb)" };
+type INT_BIT5_MSB INT_BIT5_signal_type with { variant "BITORDER(msb)" };
+
+// for n-Bit integer types with k-Bit padding
+//type INT_BIT<n>_MSB <signal_name>_signal_type with
+//{ variant "ALIGN(right)"
+// variant "FIELDLENGTH(<n>+<k>)" // n (used) +k (padding) = 11
+// variant "BITORDER(msb)"
+//};
+
+type INT_BIT9_MSB INT_BIT9_PADDED_2_signal_type with
+{ variant "ALIGN(right)"
+ variant "FIELDLENGTH(11)" // 9 (used) +2 (padding) = 11
+ variant "BITORDER(msb)"
+};
+
+// for Byte types without padding
+// type OCT<bytesize> <signal_name>_signal_type with { variant "BITORDER(msb)" };
+type OCT1 OCT1_signal_type with { variant "BITORDER(msb)" };
+type OCT2 OCT2_signal_type with { variant "BITORDER(msb)" };
+
+} with { encode "RAW" } //footer
diff --git a/demo/CAN_matrix_templates.ttcn b/demo/CAN_matrix_templates.ttcn
new file mode 100644
index 0000000..c7ec4e6
--- /dev/null
+++ b/demo/CAN_matrix_templates.ttcn
@@ -0,0 +1,31 @@
+module CAN_matrix_templates {
+
+import from CAN_matrix all
+import from CAN_matrix_signals all
+
+import from CAN_matrix_general_types all
+import from CAN_matrix_messages all
+
+
+// for code generation for each defined message
+
+//template CAN_MatrixUnion t_<message_name>(<signal_type_parameter1> <signal_name_parameter1>,
+// <signal_type_parameter2> <signal_name_parameter2>,
+// ...
+// <signal_type_parameterN> <signal_name_parameterN>) := {
+// can_id := '<CAN-ID of message in HEX with padded 0s>'O, // '...'O as this is an octetstring
+// can_pdu := { <message name>_frame := {
+// <signal_type_parameter1> := <signal_name_parameter1>,
+// <signal_type_parameter2> := <signal_name_parameter2>
+// } }
+// }
+
+ template CAN_MatrixUnion t_message_Frame5_2_parm(integer parameter1, INT_BIT5_signal_type parameter2) := {
+
+ can_id := '00000127'O, // '...'O as this is an octetstring
+ can_pdu := { message_MyTestframe5 := {
+ test_unsig_9_bit_2_padded_integer_big_endian_coded := parameter1,
+ test_sig_5_bit_integer_big_endian_coded := parameter2
+ } }
+ }
+}
diff --git a/demo/CAN_matrix_test.ttcn b/demo/CAN_matrix_test.ttcn
index 472cd74..3fcbde1 100644
--- a/demo/CAN_matrix_test.ttcn
+++ b/demo/CAN_matrix_test.ttcn
@@ -7,10 +7,13 @@
import from Can all // for CAN_id
import from SocketCAN_Types all // for SocketCAN_CAN_or_CAN_FD_frame
import from CAN_matrix all
-import from My_can_matrix all
-import from My_canfd_matrix all
+import from CAN_matrix_messages all
+import from CANFD_matrix_messages all
import from SocketCANtest all
+import from CAN_matrix_general_types all
+import from CAN_matrix_templates all
+
//component declarations
type component MTC_CT
{
@@ -29,8 +32,8 @@
my_can_message := {can_id := '00000124'O, can_pdu := { message_MyTestframe2 := {
- test_sig_11_bit_integer_msb_coded := 2047, // as this is a integer
- test_sig_5_bit_integer_msb_coded := 2 // as this is a integer
+ test_sig_11_bit_integer_big_endian_coded := 2047, // as this is a integer
+ test_sig_5_bit_integer_big_endian_coded := 2 // as this is a integer
}}}
log(my_can_message)
@@ -42,8 +45,8 @@
// please note that if it is an extended can address, it would be '0x80000122' as usual in socketCAN
can_id := '00000122'O, // '...'O as this is anm octetstring
can_pdu := { message_MyTestframe0 := {
- test_sig_11_bit_bitstring_lsb_coded := '01010101011'B, // '...'B as this is a bitstring
- test_sig_5_bit_bitstring_lsb_coded := '11111'B // '...'B as this is a bitstring
+ test_sig_11_bit_bitstring_little_endian_coded := '01010101011'B, // '...'B as this is a bitstring
+ test_sig_5_bit_bitstring_little_endian_coded := '11111'B // '...'B as this is a bitstring
}
}
}
@@ -58,8 +61,8 @@
// please note that if it is an extended can address, it would be '0x80000123' as usual in socketCAN
can_id := '00000123'O, // '...'O as this is anm octetstring
can_pdu := { message_MyTestframe1 := {
- test_sig_11_bit_bitstring_msb_coded := '01010101011'B, // '...'B as this is a bitstring
- test_sig_5_bit_bitstring_msb_coded := '11111'B // '...'B as this is a bitstring
+ test_sig_11_bit_bitstring_big_endian_coded := '01010101011'B, // '...'B as this is a bitstring
+ test_sig_5_bit_bitstring_big_endian_coded := '11111'B // '...'B as this is a bitstring
}
}
}
@@ -75,8 +78,8 @@
can_id := '00000124'O, // '...'O as this is anm octetstring
can_pdu := { message_MyTestframe2 := {
- test_sig_11_bit_integer_msb_coded := 2047, // as this is a integer
- test_sig_5_bit_integer_msb_coded := 2 // as this is a integer
+ test_sig_11_bit_integer_big_endian_coded := 2047, // as this is a integer
+ test_sig_5_bit_integer_big_endian_coded := 2 // as this is a integer
}
}
}
@@ -93,8 +96,8 @@
can_id := '00000125'O, // '...'O as this is anm octetstring
can_pdu := { message_MyTestframe3 := {
- test_sig_1_byte_octetstring_msb_coded := 'FF'O, // as this is a 1 Byte octetstring
- test_sig_2_byte_octetstring_msb_coded := '123F'O // as this is a 2 Byte octetstring
+ test_sig_1_byte_octetstring_big_endian_coded := 'FF'O, // as this is a 1 Byte octetstring
+ test_sig_2_byte_octetstring_big_endian_coded := '123F'O // as this is a 2 Byte octetstring
}
}
}
@@ -121,18 +124,18 @@
log(f_decode_can_matrix(f_encode_can_matrix(valueof(t_message_extendedFrame1_1))))
log("--------------------------------------------")
- var CAN_MESSAGE_TESTFRAME1 v_message_Frame1_2
- var CAN_MESSAGE_TESTFRAME2 v_message_Frame2_2
- var CAN_MESSAGE_TESTFRAME3 v_message_Frame3_2
- var CAN_MESSAGE_TESTFRAME4 v_message_Frame4_2
- var CAN_MESSAGE_TESTFRAME5 v_message_Frame5_2
- var CAN_MESSAGE_EXTENDEDFRAME1 v_message_extendedFrame1_2
+ var CAN_MESSAGE_TESTFRAME1_msg_type v_message_Frame1_2
+ var CAN_MESSAGE_TESTFRAME2_msg_type v_message_Frame2_2
+ var CAN_MESSAGE_TESTFRAME3_msg_type v_message_Frame3_2
+ var CAN_MESSAGE_TESTFRAME4_msg_type v_message_Frame4_2
+ var CAN_MESSAGE_TESTFRAME5_msg_type v_message_Frame5_2
+ var CAN_MESSAGE_EXTENDEDFRAME1_msg_type v_message_extendedFrame1_2
v_message_Frame1_2 :=
{
// please note that if it is an extended can address, it would be '0x80000123' as usual in socketCAN
- test_sig_11_bit_bitstring_msb_coded := '01010101011'B, // '...'B as this is a bitstring
- test_sig_5_bit_bitstring_msb_coded := '11111'B // '...'B as this is a bitstring
+ test_sig_11_bit_bitstring_big_endian_coded := '01010101011'B, // '...'B as this is a bitstring
+ test_sig_5_bit_bitstring_big_endian_coded := '11111'B // '...'B as this is a bitstring
}
template CAN_MatrixUnion t_message_Frame1_2 := {
@@ -149,8 +152,8 @@
v_message_Frame2_2 :=
{
// please note that if it is an extended can address, it would be '0x80000124' as usual in socketCAN
- test_sig_11_bit_integer_msb_coded := 2047, // as this is a integer
- test_sig_5_bit_integer_msb_coded := 2 // as this is a integer
+ test_sig_11_bit_integer_big_endian_coded := 2047, // as this is a integer
+ test_sig_5_bit_integer_big_endian_coded := 2 // as this is a integer
}
template CAN_MatrixUnion t_message_Frame2_2 := {
@@ -168,8 +171,8 @@
v_message_Frame3_2 :=
{
// please note that if it is an extended can address, it would be '0x80000125' as usual in socketCAN
- test_sig_1_byte_octetstring_msb_coded := 'FF'O, // as this is a 1 Byte octetstring
- test_sig_2_byte_octetstring_msb_coded := '123F'O // as this is a 2 Byte octetstring
+ test_sig_1_byte_octetstring_big_endian_coded := 'FF'O, // as this is a 1 Byte octetstring
+ test_sig_2_byte_octetstring_big_endian_coded := '123F'O // as this is a 2 Byte octetstring
}
template CAN_MatrixUnion t_message_Frame3_2 := {
@@ -185,8 +188,8 @@
v_message_Frame4_2 :=
{
- test_unsig_9_bit_2_padded_integer_msb_coded := 511, // as this is a 9 Bit bitstring
- test_sig_5_bit_integer_msb_coded := 8 // as this is a 5 bit integer
+ test_unsig_9_bit_2_padded_integer_big_endian_coded := 511, // as this is a 9 Bit bitstring
+ test_sig_5_bit_integer_big_endian_coded := 8 // as this is a 5 bit integer
}
template CAN_MatrixUnion t_message_Frame4_2 := {
@@ -202,8 +205,8 @@
v_message_Frame5_2 :=
{
- test_unsig_9_bit_2_padded_integer_msb_coded := 127, // as this is a 9 Bit bitstring
- test_sig_5_bit_integer_msb_coded := 16 // as this is a 5 bit integer
+ test_unsig_9_bit_2_padded_integer_big_endian_coded := 127, // as this is a 9 Bit bitstring
+ test_sig_5_bit_integer_big_endian_coded := 16 // as this is a 5 bit integer
}
template CAN_MatrixUnion t_message_Frame5_2 := {
@@ -217,8 +220,15 @@
log(f_decode_can_matrix(f_encode_can_matrix(valueof(t_message_Frame5_2))))
log("--------------------------------------------")
+ log("********************************************")
+ log(f_encode_can_matrix(valueof(t_message_Frame5_2_parm(7, 1))))
+ log("--------------------------------------------")
+ log(f_decode_can_matrix(f_encode_can_matrix(valueof(t_message_Frame5_2_parm(7, 1)))))
+ log("--------------------------------------------")
+ log("********************************************")
+
v_message_extendedFrame1_2 :=
{
// please note that if it is an extended can address, it would be '0x80000125' as usual in socketCAN
@@ -272,13 +282,13 @@
connect(mtc:pt_sync, v_ptc_rawFrameReceiver:pt_sync)
- var CAN_MESSAGE_TESTFRAME1 v_message_Frame1_3
+ var CAN_MESSAGE_TESTFRAME1_msg_type v_message_Frame1_3
v_message_Frame1_3 :=
{
// please note that if it is an extended can address, it would be '0x80000123' as usual in socketCAN
- test_sig_11_bit_bitstring_msb_coded := '01010101011'B, // '...'B as this is a bitstring
- test_sig_5_bit_bitstring_msb_coded := '11111'B // '...'B as this is a bitstring
+ test_sig_11_bit_bitstring_big_endian_coded := '01010101011'B, // '...'B as this is a bitstring
+ test_sig_5_bit_bitstring_big_endian_coded := '11111'B // '...'B as this is a bitstring
}
template CAN_MatrixUnion t_message_Frame1_3 := {
@@ -328,7 +338,7 @@
can_pdu := '0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF'O}
}
- var CANFD_MESSAGE_TESTFRAME1 v_message_Frame1_4
+ var CANFD_MESSAGE_TESTFRAME1_msg_type v_message_Frame1_4
v_message_Frame1_4 :=
{
diff --git a/demo/Isobus.cfg b/demo/Isobus.cfg
new file mode 100644
index 0000000..48c49ff
--- /dev/null
+++ b/demo/Isobus.cfg
@@ -0,0 +1,42 @@
+ ##############################################################################
+ # Copyright (c) 2010, 2016 Ericsson AB
+ # All rights reserved. This program and the accompanying materials
+ # are made available under the terms of the Eclipse Public License v1.0
+ # which accompanies this distribution, and is available at
+ # http://www.eclipse.org/legal/epl-v10.html
+ #
+ # Contributors:
+ # Michael Josenhans
+ ##############################################################################
+
+
+
+[LOGGING]
+FileMask := LOG_ALL | DEBUG | MATCHING
+ConsoleMask := LOG_ALL | DEBUG | MATCHING
+LogSourceInfo := Yes
+SourceInfoFormat:= Single // Single or Stack
+LogEntityName:= Yes
+LogEventTypes:= Yes
+
+[TESTPORT_PARAMETERS]
+// Syntax:
+// <component_name>.<port_name>.<parameter_name> := <parameter_value>
+*.pt_socketCAN.SocketCAN_can_interface_name := "vcan0"
+*.pt_socketCAN.SocketCAN_debugging := "YES"
+
+
+[EXECUTE]
+Isobustest.tc_encdec
+Isobustest.tc_encdec_vt2ecu_vtStatusReq
+Isobustest.tc_encdec_ecu2vt_getMemoryReq
+Isobustest.tc_encdec_ecu2vt_getMemoryReq_with_templateI
+Isobustest.tc_encdec_ecu2vt_getMemoryReq_with_template_II
+Isobustest.tc_encdec_networkMessage_N_SP_Response_pdu_with_template
+Isobustest.tc_encdec_networkMessage_N_SP_Response_with_template
+Isobustest.tc_encdec_N_SP_Response_with_template
+Isobustest.tc_encdec_ecu2vt_workingSetMaintenanceReq
+Isobustest.tc_dec_requestForAddressClaimed
+Isobustest.tc_dec_largemessage
+//Isobustest.tc_Example001
+//Isobustest.tc_Example002
diff --git a/demo/IsobusNMMessageTypes.ttcn b/demo/IsobusNMMessageTypes.ttcn
index 7c061db..3a4ed24 100644
--- a/demo/IsobusNMMessageTypes.ttcn
+++ b/demo/IsobusNMMessageTypes.ttcn
@@ -269,7 +269,7 @@
type record N_GP_Response
{
Function msgFunction (129),
- octetstring requestedParametrics [6 .. 255]
+ record length (6..255) of OCT1 requestedParametrics
// Note: If total length below 8 bytes shall be padded to 8 bytes with reserved ('FF'O) within RequestedParametrics
// this is the easiest way to handle it
} with {
@@ -296,12 +296,12 @@
// this is the easiest way to handle it
} with {
variant "" }
-
+
type record N_SP_Response
{
Function msgFunction (132),
PortPair portPair,
- octetstring requestedParametrics [5 .. 255]
+ record length (5..255) of OCT1 requestedParametrics
// Note: If total length below 8 bytes shall be padded to 8 bytes with reserved ('FF'O) within RequestedParametrics
// this is the easiest way to handle it
} with {
diff --git a/demo/Isobus_Templates.ttcn b/demo/Isobus_Templates.ttcn
index 8b926ca..a18f509 100644
--- a/demo/Isobus_Templates.ttcn
+++ b/demo/Isobus_Templates.ttcn
@@ -2,9 +2,34 @@
import from IsobusMessageTypes all
import from IsobusVTMessageTypes all
+import from IsobusCMMessageTypes all
+import from IsobusNMMessageTypes all
import from Isobus all
import from General_Types all
+ template CAN_frame_j1939 t_message(Isobus.Priority prio_param, BIT1 res_param, BIT1 dp_param,
+ OCT1 pf_param, OCT1 ps_param, SourceAddress sa_param, template AnyIsoBusPdu t_can_pdu)
+ := { can_j1939 := {
+ prio := prio_param,
+ res := res_param,
+ dp := dp_param,
+ pf := pf_param,
+ ps := ps_param,
+ sa := sa_param},
+ can_pdu := t_can_pdu
+ }
+
+ template CAN_frame_j1939 t_network_message(Isobus.Priority prio_param, BIT1 res_param, BIT1 dp_param,
+ OCT1 pf_param, OCT1 ps_param, SourceAddress sa_param, template IsobusNMMessageTypes.NetworkMessage t_networkMessage)
+ := { can_j1939 := {
+ prio := prio_param,
+ res := res_param,
+ dp := dp_param,
+ pf := pf_param,
+ ps := ps_param,
+ sa := sa_param},
+ can_pdu := {networkMessage := t_networkMessage}
+ }
template ECU2VT t_GetMemoryReqX( INT3 p_memoryRequired) := {
getMemoryReq := {
@@ -89,5 +114,20 @@
reserved8 := 'FF'O
}
+template N_SP_Response t_N_SP_Response(template e_PortNumber t_fromPort,
+ template e_PortNumber t_toPort,
+ template N_SP_Response.requestedParametrics requestedParametrics_param) := {
+ msgFunction := 132,
+ portPair := {fromPort := t_fromPort, toPort := t_toPort},
+ requestedParametrics := requestedParametrics_param
+ }
+
+template AnyIsoBusPdu t_N_SP_Response_pdu(template e_PortNumber t_fromPort,
+ template e_PortNumber t_toPort,
+ template N_SP_Response.requestedParametrics t_requestedParametrics_param) := {
+ networkMessage := {n_SP_Response := t_N_SP_Response(t_fromPort, t_toPort, t_requestedParametrics_param)
+ }}
+
+
}
diff --git a/demo/Isobustest.ttcn b/demo/Isobustest.ttcn
index fc85669..28accdb 100644
--- a/demo/Isobustest.ttcn
+++ b/demo/Isobustest.ttcn
@@ -26,7 +26,7 @@
import from IsobusMessageTypes all
import from Isobus_Templates all
-
+ import from IsobusNMMessageTypes all
type union CAN_ID {
OCT4 can_eff, // 29-bit can address
@@ -576,7 +576,6 @@
log("--------------------------------------------")
log(f_decode_CAN_frame_j1939(f_encode_CAN_frame_j1939(valueof(t_CAN_frame_j1939_6))))
log("--------------------------------------------")
-
}
testcase tc_encdec_vt2ecu_vtStatusReq() runs on MTC_CT
@@ -622,6 +621,30 @@
log(f_decode_CAN_frame_j1939(f_encode_CAN_frame_j1939(valueof(t_CAN_frame_j1939))))
}
+testcase tc_encdec_networkMessage_N_SP_Response_pdu_with_template() runs on MTC_CT // using a template
+{
+ template CAN_frame_j1939 t_CAN_frame_j1939 := t_message ( '000001'B, '1'B, '0'B, '0A'O, '0B'O, '0C'O ,
+ t_N_SP_Response_pdu(port_3, port_4, {'01'O,'02'O,'03'O,'04'O,'05'O,'06'O,'07'O}))
+ log(f_encode_CAN_frame_j1939(valueof(t_CAN_frame_j1939)))
+ log(f_decode_CAN_frame_j1939(f_encode_CAN_frame_j1939(valueof(t_CAN_frame_j1939))))
+}
+
+testcase tc_encdec_networkMessage_N_SP_Response_with_template() runs on MTC_CT // using a template
+{
+ template CAN_frame_j1939 t_CAN_frame_j1939 := t_network_message ( '000001'B, '1'B, '0'B, '0A'O, '0B'O, '0C'O ,
+ {n_SP_Response := t_N_SP_Response(port_3, port_4, {'01'O,'02'O,'03'O,'04'O,'05'O,'06'O,'07'O})})
+ log(f_encode_CAN_frame_j1939(valueof(t_CAN_frame_j1939)))
+ log(f_decode_CAN_frame_j1939(f_encode_CAN_frame_j1939(valueof(t_CAN_frame_j1939))))
+}
+
+testcase tc_encdec_N_SP_Response_with_template() runs on MTC_CT // using a template
+{
+ template CAN_frame_j1939 t_CAN_frame_j1939 := t_message ( '000001'B, '1'B, '0'B, '0A'O, '0B'O, '0C'O ,
+ {networkMessage := {n_SP_Response := t_N_SP_Response(port_3, port_4, {'01'O,'02'O,'03'O,'04'O,'05'O,'06'O,'07'O})}})
+ log(f_encode_CAN_frame_j1939(valueof(t_CAN_frame_j1939)))
+ log(f_decode_CAN_frame_j1939(f_encode_CAN_frame_j1939(valueof(t_CAN_frame_j1939))))
+}
+
testcase tc_encdec_ecu2vt_workingSetMaintenanceReq() runs on MTC_CT // using a template
{
template CAN_frame_j1939 t_CAN_frame_j1939 := { can_j1939 := { prio := '000000'B, res := '0'B, dp := '0'B, pf := '00'O, ps := '00'O, sa := '00'O }, can_pdu :=
diff --git a/demo/Makefile b/demo/Makefile
index 8474742..09cfec8 100644
--- a/demo/Makefile
+++ b/demo/Makefile
@@ -88,7 +88,8 @@
../src/SocketCAN_Types.ttcn SocketCANtest.ttcn Isobus.ttcn Isobustest.ttcn IsobusMessageTypes.ttcn \
Isobus_Templates.ttcn IsobusNMMessageTypes.ttcn IsobusCMMessageTypes.ttcn IsobusVTMessageTypes.ttcn \
Isotp.ttcn Isotptest.ttcn \
-CAN_matrix_general_types.ttcn CAN_matrix_test.ttcn CAN_matrix.ttcn My_can_matrix.ttcn My_canfd_matrix.ttcn
+CAN_matrix_general_types.ttcn CAN_matrix_test.ttcn CAN_matrix.ttcn CAN_matrix_messages.ttcn CANFD_matrix_messages.ttcn \
+CAN_matrix_signals.ttcn CAN_matrix_templates.ttcn
# ASN.1 modules of this project:
ASN1_MODULES =
@@ -100,7 +101,8 @@
SocketCAN_Types.cc SocketCANtest.cc Isobus.cc Isobustest.cc IsobusMessageTypes.cc \
Isobus_Templates.cc IsobusNMMessageTypes.cc IsobusCMMessageTypes.cc IsobusVTMessageTypes.cc \
Isotp.cc Isotptest.cc \
-CAN_matrix_general_types.cc CAN_matrix_test.cc CAN_matrix.cc My_can_matrix.cc My_canfd_matrix.cc
+CAN_matrix_general_types.cc CAN_matrix_test.cc CAN_matrix.cc CAN_matrix_messages.cc CANFD_matrix_messages.cc \
+CAN_matrix_signals.cc CAN_matrix_templates.cc
GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh)
diff --git a/demo/My_can_matrix.ttcn b/demo/My_can_matrix.ttcn
deleted file mode 100644
index 7f961d1..0000000
--- a/demo/My_can_matrix.ttcn
+++ /dev/null
@@ -1,112 +0,0 @@
-module My_can_matrix {
-
-import from General_Types all // for OCT1, OCT2, ..., INT1, ..
-import from Can all // for CAN_id
-import from CAN_matrix_general_types all
-
-
-
-
-//The following section is used for the automatic message encding / decoding
-
-type record CAN_MESSAGE_TESTFRAME0
-{
- BIT11_MSB test_sig_11_bit_bitstring_lsb_coded,
- BIT5_MSB test_sig_5_bit_bitstring_lsb_coded
-
-} with {variant "FIELDORDER(msb)"
- variant (test_sig_11_bit_bitstring_lsb_coded) "BITORDERINFIELD(lsb)"
- variant (test_sig_5_bit_bitstring_lsb_coded) "BITORDERINFIELD(lsb)"
-}
-
-type record CAN_MESSAGE_TESTFRAME1
-{
- BIT11_MSB test_sig_11_bit_bitstring_msb_coded,
- BIT5_MSB test_sig_5_bit_bitstring_msb_coded
-
-} with {variant "FIELDORDER(msb)"
- variant (test_sig_11_bit_bitstring_msb_coded) "BITORDERINFIELD(msb)"
- variant (test_sig_5_bit_bitstring_msb_coded) "BITORDERINFIELD(msb)"
-}
-
-type record CAN_MESSAGE_TESTFRAME2
-{
- INT_BIT11_MSB test_sig_11_bit_integer_msb_coded,
- INT_BIT5_MSB test_sig_5_bit_integer_msb_coded
-
-} with {variant "FIELDORDER(msb)"
- variant (test_sig_11_bit_integer_msb_coded) "BITORDERINFIELD(msb)"
- variant (test_sig_5_bit_integer_msb_coded) "BITORDERINFIELD(msb)"
-}
-
-type record CAN_MESSAGE_TESTFRAME3
-{
- OCT1 test_sig_1_byte_octetstring_msb_coded,
- OCT2 test_sig_2_byte_octetstring_msb_coded
-
-} with {variant "" }
-
-type integer INT_BIT9_PADDED_2_MSB (0..511) with
-{ variant "ALIGN(right)";
- variant "FIELDLENGTH(11)"
- variant "BITORDER(msb)"
-};
-
-type record CAN_MESSAGE_TESTFRAME4
-{
- INT_BIT9_PADDED_2_MSB test_unsig_9_bit_2_padded_integer_msb_coded,
- INT_BIT5_MSB test_sig_5_bit_integer_msb_coded
-
-} with {variant "FIELDORDER(msb)"
- variant (test_unsig_9_bit_2_padded_integer_msb_coded) "BITORDERINFIELD(msb)"
- variant (test_sig_5_bit_integer_msb_coded) "BITORDERINFIELD(msb)"
-}
-
-type record CAN_MESSAGE_TESTFRAME5
-{
- INT_BIT9_PADDED_2_MSB test_unsig_9_bit_2_padded_integer_msb_coded,
- INT_BIT5_MSB test_sig_5_bit_integer_msb_coded
-
-} with {variant "FIELDORDER(msb)"
- variant (test_unsig_9_bit_2_padded_integer_msb_coded) "BITORDERINFIELD(lsb)"
- variant (test_sig_5_bit_integer_msb_coded) "BITORDERINFIELD(lsb)"
-}
-
-type record CAN_MESSAGE_EXTENDEDFRAME1
-{
- // CAN_id can_id ('80000001'O),
- // according to SocketCAN Extended frames have the bit 31 set,
- OCT2 test_sig_2_byte_octetstring_msb_coded
-
-} with {variant ""}
-
- type union CAN_MatrixPayloadUnion
- {
- CAN_MESSAGE_TESTFRAME0 message_MyTestframe0,
- CAN_MESSAGE_TESTFRAME1 message_MyTestframe1,
- CAN_MESSAGE_TESTFRAME2 message_MyTestframe2,
- CAN_MESSAGE_TESTFRAME3 message_MyTestframe3,
- CAN_MESSAGE_TESTFRAME4 message_MyTestframe4,
- CAN_MESSAGE_TESTFRAME5 message_MyTestframe5,
- CAN_MESSAGE_EXTENDEDFRAME1 message_extendedFrame1
- }
- with {variant "" }
-
- type record CAN_MatrixUnion {
- CAN_id can_id,
- CAN_MatrixPayloadUnion can_pdu
-} with {variant (can_pdu) "CROSSTAG(
- message_MyTestframe0, can_id = '00000122'O;
- message_MyTestframe1, can_id = '00000123'O;
- message_MyTestframe2, can_id = '00000124'O;
- message_MyTestframe3, can_id = '00000125'O;
- message_MyTestframe4, can_id = '00000126'O;
- message_MyTestframe5, can_id = '00000127'O;
- message_extendedFrame1, can_id = '80000001'O;
- )"
- }
-
-
-//The above section is used for the automatic message encding / decoding
-
-} with { encode "RAW" }
diff --git a/demo/My_canfd_matrix.ttcn b/demo/My_canfd_matrix.ttcn
deleted file mode 100644
index d55aab4..0000000
--- a/demo/My_canfd_matrix.ttcn
+++ /dev/null
@@ -1,80 +0,0 @@
-module My_canfd_matrix {
-
-import from General_Types all // for OCT1, OCT2, ..., INT1, ..
-import from Can all // for CAN_id
-import from CAN_matrix_general_types all
-
-//The following section is used for the automatic message encding / decoding
-
-type record CANFD_MESSAGE_TESTFRAME0
-{
- BIT11_MSB test_sig_11_bit_bitstring_lsb_coded,
- BIT5_MSB test_sig_5_bit_bitstring_lsb_coded
-
-} with {variant "FIELDORDER(msb)"
- variant (test_sig_11_bit_bitstring_lsb_coded) "BITORDERINFIELD(lsb)"
- variant (test_sig_5_bit_bitstring_lsb_coded) "BITORDERINFIELD(lsb)"
-}
-
-type record CANFD_MESSAGE_TESTFRAME1
-{
- BIT11_MSB test_sig_11_bit_bitstring_msb_coded,
- BIT5_MSB test_sig_5_bit_bitstring_msb_coded
-
-} with {variant "FIELDORDER(msb)"
- variant (test_sig_11_bit_bitstring_msb_coded) "BITORDERINFIELD(msb)"
- variant (test_sig_5_bit_bitstring_msb_coded) "BITORDERINFIELD(msb)"
-}
-
-type record CANFD_MESSAGE_TESTFRAME2
-{
- INT_BIT11_MSB test_sig_11_bit_integer_msb_coded,
- INT_BIT5_MSB test_sig_5_bit_integer_msb_coded
-
-} with {variant "FIELDORDER(msb)"
- variant (test_sig_11_bit_integer_msb_coded) "BITORDERINFIELD(msb)"
- variant (test_sig_5_bit_integer_msb_coded) "BITORDERINFIELD(msb)"
-}
-
-type record CANFD_MESSAGE_TESTFRAME3
-{
- OCT1 test_sig_1_byte_octetstring_msb_coded,
- OCT2 test_sig_2_byte_octetstring_msb_coded
-
-} with {variant "" }
-
-type record CANFD_MESSAGE_EXTENDEDFRAME1
-{
- // CAN_id can_id ('80000001'O),
- // according to SocketCAN Extended frames have the bit 31 set,
- OCT2 test_sig_2_byte_octetstring_msb_coded
-
-} with {variant ""}
-
- type union CANFD_MatrixPayloadUnion
- {
- CANFD_MESSAGE_TESTFRAME0 message_MyTestframe0,
- CANFD_MESSAGE_TESTFRAME1 message_MyTestframe1,
- CANFD_MESSAGE_TESTFRAME2 message_MyTestframe2,
- CANFD_MESSAGE_TESTFRAME3 message_MyTestframe3,
- CANFD_MESSAGE_EXTENDEDFRAME1 message_extendedFrame1
- }
- with {variant "" }
-
- type record CANFD_MatrixUnion {
- CAN_id can_id,
- CAN_flags can_flags, // only used with CAN FD
- CANFD_MatrixPayloadUnion can_pdu
-} with {variant (can_pdu) "CROSSTAG(
- message_MyTestframe0, can_id = '00000122'O;
- message_MyTestframe1, can_id = '00000123'O;
- message_MyTestframe2, can_id = '00000124'O;
- message_MyTestframe3, can_id = '00000125'O;
- message_extendedFrame1, can_id = '80000001'O;
- )"
- }
-
-
-//The above section is used for the automatic message encding / decoding
-
-} with { encode "RAW" }