blob: e733e1d10696d63984a5ef83bab6de18662dc907 [file] [log] [blame]
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" }