| 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" } |