/* Copyright (c) 2000-2019 Ericsson Telecom AB 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
******************************************************************************/
//
//  File:               Isobustest_plain_socketcan.ttcn
//  Description:        Encoder / Decoder for Isobus message frames
//
// Revision R1A

module Isobustest_test_encoder{

import from Isobus all
import from IsobusVT_Templates all
import from J1939 all

//component declarations
type component MTC_CT
{ 
}

testcase tc_encdec() runs on MTC_CT
{
  template J1939_messageWithPGN t_address_claimed :=  {pgn := '00EEFF'O,
    pdu := {addressClaimedOrCannotClaimSourceAddress := { name := {  
          identityNumber := 514,
          manufacturerCode := 368,
          ecuInstance := 3,
          functionInstance := 5,  
          function_ := 3,
          reserved := 0, 
          vehicleSystem := 101, 
          vehicleSystemInstance := 1, 
          industryGroup := 3, 
          arbitraryAddresssBit := 0     
        }}}}

  log(f_encode_J1939_message(valueof(t_address_claimed)))
  log("--------------------------------------------")
  log(f_decode_J1939_message(f_encode_J1939_message(valueof(t_address_claimed))))
  log("--------------------------------------------")

  template J1939_messageWithPGN t_requestForAddressClaimed :=  {pgn := '00EA00'O,
    pdu := {requestForAddressClaimed := {pgn := 123}}}

  log(f_encode_J1939_message(valueof(t_requestForAddressClaimed)))
  log("--------------------------------------------")
  log(f_decode_J1939_message(f_encode_J1939_message(valueof(t_requestForAddressClaimed))))
  log("--------------------------------------------")

  //  template CAN_frame_j1939 t_CAN_frame_j1939_3 :=  { can_j1939 := { prio := 0, res := '0'B, dp := '0'B, pf := '00'O, ps := 'FD'O, sa := 'C0'O }, can_pdu := { cannotClaimSourceAddress := { name := {  
  //    arbitraryAddresssBitValue := 0, 
  //    industryGroupValue := 3, 
  //    vehicleSystemInstanceValue := 1, 
  //    vehicleSystemValue := 101, 
  //    reservedValue := 0, 
  //    functionValue := 3, 
  //    functionInstanceValue := 5, 
  //    ecuInstanceValue := 3, 
  //    manufacturerCodeValue := 368, 
  //    identityNumberValue := 514 } }}}
  //  log(f_encode_CAN_frame_j1939(valueof(t_CAN_frame_j1939_3)))
  //  log("--------------------------------------------")
  //  log(f_decode_CAN_frame_j1939(f_encode_CAN_frame_j1939(valueof(t_CAN_frame_j1939_3))))
  //  log("--------------------------------------------")

  template J1939_messageWithPGN t_commandedAddress :=  {pgn := '00FED8'O,
    pdu := { commandedAddress := {
        name := {  
          identityNumber := 514,
          manufacturerCode := 368,
          ecuInstance := 3,
          functionInstance := 5,  
          function_ := 3,
          reserved := 0, 
          vehicleSystem := 101, 
          vehicleSystemInstance := 1, 
          industryGroup := 3, 
          arbitraryAddresssBit := 0 },
        newSourceAddress:='AA'O
      } } }

  log(f_encode_J1939_message(valueof(t_commandedAddress)))
  log("--------------------------------------------")
  log(f_decode_J1939_message(f_encode_J1939_message(valueof(t_commandedAddress))))
  log("--------------------------------------------")
}

testcase tc_encdec_vtStatusReq() runs on MTC_CT
{
  template J1939_messageWithPGN t_commandedAddress :=  {pgn := '00E600'O,
    pdu := {vt2ecu := {vtStatusInd :=
        { vtfunction := 254, 
          sourceAddressOfActiveWorkingSetMaster := '11'O,
          objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet := '2233'O,
          objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet := '4455'O,
          vtBusyCodes := vtIsBusyExecutingACommand,
          vtFunctionCode := '66'O}}}}
  log(f_encode_J1939_message(valueof(t_commandedAddress)))
  log("--------------------------------------------")
  log(f_decode_J1939_message(f_encode_J1939_message(valueof(t_commandedAddress))))
  log("--------------------------------------------")
}

testcase tc_encdec_getMemoryReq() runs on MTC_CT
{
  template J1939_messageWithPGN t_commandedAddress :=  {pgn := '00E700'O,
    pdu := {ecu2vt := {getMemoryReq :=
        { vtfunction := 192, 
          reserved2 := 'FF'O,
          memoryRequired := 1234567}}}}
  log(f_encode_J1939_message(valueof(t_commandedAddress)))
  log("--------------------------------------------")
  log(f_decode_J1939_message(f_encode_J1939_message(valueof(t_commandedAddress))))
  log("--------------------------------------------")
}

testcase tc_encdec_getMemoryReq_with_template() runs on MTC_CT // using a template
{
  template J1939_messageWithPGN t_getMemoryReq := t_GetMemoryReq(1234567)
  log(f_encode_J1939_message(valueof(t_getMemoryReq)))
  log("--------------------------------------------")
  log(f_decode_J1939_message(f_encode_J1939_message(valueof(t_getMemoryReq))))
  log("--------------------------------------------")
}

testcase tc_encdec_workingSetMaintenanceReq() runs on MTC_CT // using a template
{
  template J1939_messageWithPGN t_workingSetMaintenanceReq := t_WorkingSetMaintenanceInd(
    true,
    compliantWithVTVersion4)
  log(f_encode_J1939_message(valueof(t_workingSetMaintenanceReq)))
  log("--------------------------------------------")
  log(f_decode_J1939_message(f_encode_J1939_message(valueof(t_workingSetMaintenanceReq))))
  log("--------------------------------------------")
}


//testcase tc_dec_largemessage() runs on MTC_CT
//{
//
//  var octetstring j1939_pdu
//  //j1939_pdu := '18EAFFFE00EE00'O                
//  //j1939_pdu := '18EEFFF83102032E003D0080'O
//  //j1939_pdu := '18EEFFF73102032E008200A0'O
//  //j1939_pdu := '18EAF8F8EBFE00'O  
//  j1939_pdu := '18ECF8F810160004FFEBFE00'O
//
//  // j1939_pdu := '00E726F8B3DA590B0066696C6520736572766572'O
//  // j1939_pdu := '03FE00F8FE2A66696C65207365727665722A3139373136392A2D2A'O
//  // j1939_pdu := '03FE00F82A66696C65207365727665722A3139373136392A2D2A'O
//  // j1939_pdu := '03FE00262A6661726D20646973706C61792A3139373136392A2D2A'O
//  // j1939_pdu := '03FE00F72A7461736B20636F6E74726F6C6C65722A3139373136392A2D2A'O
//  // j1939_pdu := '03FE00FD2A6661726D20646973706C61792A3139373136392A2D2A'O
//  // j1939_pdu := '01FD00F82D2A3139373136392A2D2A2D2A6E696E67757065782A2D2A'O
//  // j1939_pdu := '01FD00262D2A3139373136392A2D2A2D2A6E696E67757065782A2D2A'O
//  // j1939_pdu := '01FD00F72D2A3139373136392A2D2A2D2A6E696E67757065782A2D2A'O
//  // j1939_pdu := '01FD00262D2A3139373136392A2D2A2D2A6E696E67757065782A2D2A'O
//  // j1939_pdu := '01FD00FD2D2A3139373136392A2D2A2D2A6E696E67757065782A2D2A'O
//  // j1939_pdu := '02FE00FD016661726D20646973706C617920312E33372E31362E3733352A'O
//  // j1939_pdu := '02FE0026026661726D20646973706C617920312E33372E31362E3733352A69736F627573206C69627261727920312E32362E332E3932382A'O
//  // j1939_pdu := '02FE00F8096E696E67757065782066696C6520736572766572207573657220696E74657266616365204E5820322E322E342E3237302A746F6F6C206C69627261727920322E34322E382E3834302A6C6F67206C69627261727920322E302E31312E3136342A636F6E66696775726174696F6E206C69627261727920312E31322E322E3139332A43414E20627573206861726477617265206C69627261727920312E31392E352E3139382A7365637572697479206C69627261727920312E31312E302E3332312A69736F627573206C69627261727920312E32362E332E3932382A69736F62757320636F6D6D6F6E206C69627261727920322E31322E302E3139332A66696C652073657276657220312E342E352E3235382A'O
//  // j1939_pdu := '9CFE0DF8FE01FFFFFFFFFFFFFF'O
//
//  log(j1939_pdu)
//  log("--------------------------------------------")
//  log(f_decode_CAN_frame_j1939(j1939_pdu))
//  log("--------------------------------------------")
//}

testcase tc_dec_message1() runs on MTC_CT
{

  var J1939_PGN j1939_pgn
  var octetstring j1939_pdu


  j1939_pgn := '00e600'O
  j1939_pdu := 'fefeffffffff00ff'O

  log(j1939_pgn, j1939_pdu)
  log("--------------------------------------------")
  log(f_decode_J1939_message(j1939_pgn & j1939_pdu))
  log("--------------------------------------------")
}

testcase tc_dec_message2() runs on MTC_CT
{

  var J1939_PGN j1939_pgn
  var octetstring j1939_pdu


  j1939_pgn := '00e700'O
  j1939_pdu := 'ff0104ffffffffff'O

  log(j1939_pgn, j1939_pdu)
  log("--------------------------------------------")
  log(f_decode_J1939_message(j1939_pgn & j1939_pdu))
  log("--------------------------------------------")
}

testcase tc_dec_message3() runs on MTC_CT
{

  var J1939_PGN j1939_pgn
  var octetstring j1939_pdu


  j1939_pgn := '00e700'O
  j1939_pdu := 'c7ffffffffffffff'O

  log(j1939_pgn, j1939_pdu)
  log("--------------------------------------------")
  log(f_decode_J1939_message(j1939_pgn & j1939_pdu))
  log("--------------------------------------------")
}

testcase tc_dec_message4() runs on MTC_CT
{

  var J1939_PGN j1939_pgn
  var octetstring j1939_pdu


  j1939_pgn := '00e600'O
  j1939_pdu := 'c7ff02cde001e001'O

  log(j1939_pgn, j1939_pdu)
  log("--------------------------------------------")
  log(f_decode_J1939_message(j1939_pgn & j1939_pdu))
  log("--------------------------------------------")
}

testcase tc_dec_message5() runs on MTC_CT
{

  var J1939_PGN j1939_pgn
  var octetstring j1939_pdu


  j1939_pgn := '00e700'O
  j1939_pdu := 'c2ffffffffffffff'O

  log(j1939_pgn, j1939_pdu)
  log("--------------------------------------------")
  log(f_decode_J1939_message(j1939_pgn & j1939_pdu))
  log("--------------------------------------------")
}

testcase tc_dec_message6() runs on MTC_CT
{

  var J1939_PGN j1939_pgn
  var octetstring j1939_pdu


  j1939_pgn := '00e600'O
  j1939_pdu := 'c200ffff7d48400c'O

  log(j1939_pgn, j1939_pdu)
  log("--------------------------------------------")
  log(f_decode_J1939_message(j1939_pgn & j1939_pdu))
  log("--------------------------------------------")
}

testcase tc_dec_message7() runs on MTC_CT
{

  var J1939_PGN j1939_pgn
  var octetstring j1939_pdu


  j1939_pgn := '00e700'O
  j1939_pdu := 'C3FFFFFFFFFFFFFF'O

  log(j1939_pgn, j1939_pdu)
  log("--------------------------------------------")
  log(f_decode_J1939_message(j1939_pgn & j1939_pdu))
  log("--------------------------------------------")
}

testcase tc_dec_message8() runs on MTC_CT
{

  var J1939_PGN j1939_pgn
  var octetstring j1939_pdu


  j1939_pgn := '00e600'O
  j1939_pdu := 'C3FFFFFFFF7F7FFF'O

  log(j1939_pgn, j1939_pdu)
  log("--------------------------------------------")
  log(f_decode_J1939_message(j1939_pgn & j1939_pdu))
  log("--------------------------------------------")
}

testcase tc_dec_message9() runs on MTC_CT
{

  var J1939_PGN j1939_pgn
  var octetstring j1939_pdu


  j1939_pgn := '00e700'O
  j1939_pdu := 'C0FF00000000FFFF'O

  log(j1939_pgn, j1939_pdu)
  log("--------------------------------------------")
  log(f_decode_J1939_message(j1939_pgn & j1939_pdu))
  log("--------------------------------------------")
}

testcase tc_dec_message10() runs on MTC_CT
{

  var J1939_PGN j1939_pgn
  var octetstring j1939_pdu


  j1939_pgn := '00e600'O
  j1939_pdu := 'C00400FFFFFFFFFF'O

  log(j1939_pgn, j1939_pdu)
  log("--------------------------------------------")
  log(f_decode_J1939_message(j1939_pgn & j1939_pdu))
  log("--------------------------------------------")
}

testcase tc_dec_message11() runs on MTC_CT
{

  var J1939_PGN j1939_pgn
  var octetstring j1939_pdu


  j1939_pgn := '00e700'O
  j1939_pdu := 'DFFFFFFFFFFFFFFF'O

  log(j1939_pgn, j1939_pdu)
  log("--------------------------------------------")
  log(f_decode_J1939_message(j1939_pgn & j1939_pdu))
  log("--------------------------------------------")
}

testcase tc_dec_message12() runs on MTC_CT
{

  var J1939_PGN j1939_pgn
  var octetstring j1939_pdu


  j1939_pgn := '00e600'O
  j1939_pdu := 'E00130303034333030'O

  log(j1939_pgn, j1939_pdu)
  log("--------------------------------------------")
  log(f_decode_J1939_message(j1939_pgn & j1939_pdu))
  log("--------------------------------------------")
}

testcase tc_dec_message13() runs on MTC_CT
{

  var J1939_PGN j1939_pgn
  var octetstring j1939_pdu


  j1939_pgn := '00e700'O
  j1939_pdu := 'D130303034333030'O

  log(j1939_pgn, j1939_pdu)
  log("--------------------------------------------")
  log(f_decode_J1939_message(j1939_pgn & j1939_pdu))
  log("--------------------------------------------")
}

testcase tc_dec_message14() runs on MTC_CT
{

  var J1939_PGN j1939_pgn
  var octetstring j1939_pdu


  j1939_pgn := '00e600'O
  j1939_pdu := 'D1FFFFFFFF00FFFF'O

  log(j1939_pgn, j1939_pdu)
  log("--------------------------------------------")
  log(f_decode_J1939_message(j1939_pgn & j1939_pdu))
  log("--------------------------------------------")
}

testcase tc_dec_message15() runs on MTC_CT
{

  var octetstring j1939_pgn_and_pdu


  j1939_pgn_and_pdu := '00E600E00130303032303036'O

  log(j1939_pgn_and_pdu)
  log("--------------------------------------------")
  log(f_decode_J1939_message(j1939_pgn_and_pdu))
  log("--------------------------------------------")
}

testcase tc_dec_message16() runs on MTC_CT
{

  var octetstring j1939_pgn_and_pdu


  j1939_pgn_and_pdu := '00E700D130303032303036'O

  log(j1939_pgn_and_pdu)
  log("--------------------------------------------")
  log(f_decode_J1939_message(j1939_pgn_and_pdu))
  log("--------------------------------------------")
}

testcase tc_dec_message17() runs on MTC_CT
{

  var octetstring j1939_pgn_and_pdu


  j1939_pgn_and_pdu := '00E60009D00701FFFF01FF'O
  j1939_pgn_and_pdu := '00E70009D00701FFFF01FF'O
  j1939_pgn_and_pdu := '00E600FEF8D007FFFF00FF'O
  j1939_pgn_and_pdu := '00E600B3FFFFDA5900FFFF'O
  j1939_pgn_and_pdu := '00E700A82BD3FFBC0B0000'O
  j1939_pgn_and_pdu := '00E600A82BD300BC0B0000'O
  j1939_pgn_and_pdu := '00E700A82CD3FFBB0B0000'O
  j1939_pgn_and_pdu := '00E600A82CD300BB0B0000'O
  j1939_pgn_and_pdu := '00E700A82DD3FFBB0B0000'O
  j1939_pgn_and_pdu := '00E600A82DD300BB0B0000'O
  j1939_pgn_and_pdu := '00E600D1FFFFFFFF00FFFF'O
  j1939_pgn_and_pdu := '00E700B3DA590B0066696C6520736572766572'O
  j1939_pgn_and_pdu := '00E60009D00701FFFF00FF'O
  j1939_pgn_and_pdu := '00E70009D00701FFFF00FF'O
  j1939_pgn_and_pdu := '00E700B302D72B00746F756368206F72207072657373206B657920746F206D6F766520686572652066726F6D20565420233100'O
  j1939_pgn_and_pdu := '00E600B3FFFF02D700FFFF'O
  j1939_pgn_and_pdu := '00E700B3B42D08006E696E6775706578'O
  j1939_pgn_and_pdu := '00E600B3FFFFB42D00FFFF'O
  j1939_pgn_and_pdu := '00E700A875D6FFC4DA0000'O
  j1939_pgn_and_pdu := '00E600A875D600C4DA0000'O
  //..
  j1939_pgn_and_pdu := '00E700AD0000ED03FFFFFF'O
  j1939_pgn_and_pdu := '00E600ADED0300FFFFFFFF'O

  log(j1939_pgn_and_pdu)
  log("--------------------------------------------")
  log(f_decode_J1939_message(j1939_pgn_and_pdu))
  log("--------------------------------------------")
}




function f_reverse_j1939_name_withoutencoding(in J1939_NAME p_j1939_name) 
//runs on PTC_isobus_CT 
return J1939_NAME{
  var J1939_NAME v_j1939_name_reverse := 

  p_j1939_name[7]& p_j1939_name[6]& p_j1939_name[5]&
  p_j1939_name[4]& p_j1939_name[3]& p_j1939_name[2]& 
  p_j1939_name[1]& p_j1939_name[0];
  return v_j1939_name_reverse
}

// f_reverse_j1939_name() has the same behaviour as f_reverse_j1939_name_withoutencoding()

function f_reverse_j1939_name(in J1939_NAME p_j1939_name) 
//runs on PTC_isobus_CT 
return J1939_NAME{
  var J1939_NAME v_j1939_name_reverse := f_encode_J1939_name(p_j1939_name)

  return v_j1939_name_reverse
}

testcase tc_dec_name_1() runs on MTC_CT
{

  var J1939_NAME j1939_name_reverse, j1939_name

  j1939_name_reverse := '3102032E003D0080'O

  j1939_name := f_reverse_j1939_name(j1939_name_reverse)

  log("j1939 name reverse:-------------------------")
  log(j1939_name_reverse)
  log("j1939 name----------------------------------")
  log(j1939_name)
  log("--------------------------------------------")
  log(f_decode_J1939_name(j1939_name))
  log("--------------------------------------------")
  log(f_encode_J1939_name(f_decode_J1939_name(j1939_name)))
  log("--------------------------------------------")
}

testcase tc_dec_name_2() runs on MTC_CT
{

  var J1939_NAME j1939_name_reverse, j1939_name

  j1939_name_reverse := '3102032E008200A0'O

  j1939_name := f_reverse_j1939_name(j1939_name_reverse)

  log("j1939 name reverse:-------------------------")
  log(j1939_name_reverse)
  log("j1939 name----------------------------------")
  log(j1939_name)
  log("--------------------------------------------")
  log(f_decode_J1939_name(j1939_name))
  log("--------------------------------------------")
  log(f_encode_J1939_name(f_decode_J1939_name(j1939_name)))
  log("--------------------------------------------")
}

testcase tc_dec_name_3() runs on MTC_CT
{

  var J1939_NAME j1939_name_reverse, j1939_name

  j1939_name_reverse := '3102032E001D0080'O

  j1939_name := f_reverse_j1939_name(j1939_name_reverse)

  log("j1939 name reverse:-------------------------")
  log(j1939_name_reverse)
  log("j1939 name----------------------------------")
  log(j1939_name)
  log("--------------------------------------------")
  log(f_decode_J1939_name(j1939_name))
  log("--------------------------------------------")
  log(f_encode_J1939_name(f_decode_J1939_name(j1939_name)))
  log("--------------------------------------------")
}

testcase tc_dec_name_4() runs on MTC_CT
{

  var J1939_NAME j1939_name_reverse, j1939_name

  j1939_name_reverse := '3102032E008100A0'O

  j1939_name := f_reverse_j1939_name(j1939_name_reverse)

  log("j1939 name reverse:-------------------------")
  log(j1939_name_reverse)
  log("j1939 name----------------------------------")
  log(j1939_name)
  log("--------------------------------------------")
  log(f_decode_J1939_name(j1939_name))
  log("--------------------------------------------")
  log(f_encode_J1939_name(f_decode_J1939_name(j1939_name)))
  log("--------------------------------------------")
}

testcase tc_dec_name_5() runs on MTC_CT
{

  var J1939_NAME j1939_name_reverse, j1939_name

  j1939_name_reverse := '3102032E00800AA1'O  

  j1939_name := f_reverse_j1939_name(j1939_name_reverse)

  log("j1939 name reverse:-------------------------")
  log(j1939_name_reverse)
  log("j1939 name----------------------------------")
  log(j1939_name)
  log("--------------------------------------------")
  log(f_decode_J1939_name(j1939_name))
  log("--------------------------------------------")
  log(f_encode_J1939_name(f_decode_J1939_name(j1939_name)))
  log("--------------------------------------------")
}

testcase tc_dec_name_6() runs on MTC_CT
{

  var J1939_NAME j1939_name_reverse, j1939_name

  j1939_name_reverse := '3102032E193D0B93'O  

  j1939_name := f_reverse_j1939_name(j1939_name_reverse)

  log("j1939 name reverse:-------------------------")
  log(j1939_name_reverse)
  log("j1939 name----------------------------------")
  log(j1939_name)
  log("--------------------------------------------")
  log(f_decode_J1939_name(j1939_name))
  log("--------------------------------------------")
  log(f_encode_J1939_name(f_decode_J1939_name(j1939_name)))
  log("--------------------------------------------")
}

testcase tc_dec_name_record_1() runs on MTC_CT
{

  var J1939_NAME j1939_name_reverse, j1939_name

  j1939_name_reverse := '3102032E003D0080'O

  j1939_name := f_reverse_j1939_name(j1939_name_reverse)

  log("j1939 name reverse:-------------------------")
  log(j1939_name_reverse)
  log("j1939 name----------------------------------")
  log(j1939_name)
  log("--------------------------------------------")
  log(f_decode_J1939_name_record(j1939_name))
  log("--------------------------------------------")
  log(f_encode_J1939_name_record(f_decode_J1939_name_record(j1939_name)))
  log("--------------------------------------------")
}

testcase tc_dec_name_record_2() runs on MTC_CT
{

  var J1939_NAME j1939_name_reverse, j1939_name

  j1939_name_reverse := '3102032E008200A0'O

  j1939_name := f_reverse_j1939_name(j1939_name_reverse)

  log("j1939 name reverse:-------------------------")
  log(j1939_name_reverse)
  log("j1939 name----------------------------------")
  log(j1939_name)
  log("--------------------------------------------")
  log(f_decode_J1939_name_record(j1939_name))
  log("--------------------------------------------")
  log(f_encode_J1939_name_record(f_decode_J1939_name_record(j1939_name)))
  log("--------------------------------------------")
}

testcase tc_dec_name_record_3() runs on MTC_CT
{

  var J1939_NAME j1939_name_reverse, j1939_name

  j1939_name_reverse := '3102032E001D0080'O

  j1939_name := f_reverse_j1939_name(j1939_name_reverse)

  log("j1939 name reverse:-------------------------")
  log(j1939_name_reverse)
  log("j1939 name----------------------------------")
  log(j1939_name)
  log("--------------------------------------------")
  log(f_decode_J1939_name_record(j1939_name))
  log("--------------------------------------------")
  log(f_encode_J1939_name_record(f_decode_J1939_name_record(j1939_name)))
  log("--------------------------------------------")
}

testcase tc_dec_name_record_4() runs on MTC_CT
{

  var J1939_NAME j1939_name_reverse, j1939_name

  j1939_name_reverse := '3102032E008100A0'O

  j1939_name := f_reverse_j1939_name(j1939_name_reverse)

  log("j1939 name reverse:-------------------------")
  log(j1939_name_reverse)
  log("j1939 name----------------------------------")
  log(j1939_name)
  log("--------------------------------------------")
  log(f_decode_J1939_name_record(j1939_name))
  log("--------------------------------------------")
  log(f_encode_J1939_name_record(f_decode_J1939_name_record(j1939_name)))
  log("--------------------------------------------")
}

testcase tc_dec_name_record_5() runs on MTC_CT
{

  var J1939_NAME j1939_name_reverse, j1939_name

  j1939_name_reverse := '3102032E00800AA1'O  

  j1939_name := f_reverse_j1939_name(j1939_name_reverse)

  log("j1939 name reverse:-------------------------")
  log(j1939_name_reverse)
  log("j1939 name----------------------------------")
  log(j1939_name)
  log("--------------------------------------------")
  log(f_decode_J1939_name_record(j1939_name))
  log("--------------------------------------------")
  log(f_encode_J1939_name_record(f_decode_J1939_name_record(j1939_name)))
  log("--------------------------------------------")
}

testcase tc_dec_name_record_encode_1() runs on MTC_CT
{

  var J1939_NAME_RECORD j1939_name_record := {
    arbitraryAddresssBit := 1,
    industryGroup := 2,
    vehicleSystemInstance := 0,
    vehicleSystem := 0,
    reserved := 0,
    function_ := 129,
    functionInstance := 0,
    ecuInstance := 0,
    manufacturerCode := 368,
    identityNumber := 999
  }

  log("j1939 name_record --------------------------")
  log(j1939_name_record)
  log("--------------------------------------------")
  log(f_encode_J1939_name_record(j1939_name_record))
  log("--------------------------------------------")
  log(f_decode_J1939_name_record(f_encode_J1939_name_record(j1939_name_record)))
  log("--------------------------------------------")
}
// result NAME = A00081002E0003E7

testcase tc_dec_name_record_encode_2() runs on MTC_CT
{

  var J1939_NAME_RECORD j1939_name_record := {
    arbitraryAddresssBit := 1,
    industryGroup := 2,
    vehicleSystemInstance := 0,
    vehicleSystem := 0,
    reserved := 0,
    function_ := 128,
    functionInstance := 0,
    ecuInstance := 0,
    manufacturerCode := 368,
    identityNumber := 998
  }

  log("j1939 name_record --------------------------")
  log(j1939_name_record)
  log("--------------------------------------------")
  log(f_encode_J1939_name_record(j1939_name_record))
  log("--------------------------------------------")
  log(f_decode_J1939_name_record(f_encode_J1939_name_record(j1939_name_record)))
  log("--------------------------------------------")
}

// result NAME = A00080002E0003E6

} with { encode "RAW" } 

