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