

/* Copyright (c) 2000-2019 Ericsson Telecom AB
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
*
* Contributors:
* Michael Josenhans
******************************************************************************/
//
//  File:               Isotp.ttcn
//  Description:        Isotp base 
//


module Isotp {

import from Bcm all
import from Can all
import from Raw all
import from SocketCAN_Types all
import from General_Types all

template SocketCAN_write_isotp_result a_SocketCAN_write_isotp_result(
  template SocketCAN_Result p_result) := { 
  // send ISOTP pdu
  result := p_result
}

template SocketCAN_receive_isotp_pdu a_SocketCAN_receive_isotp_pdu(
  template SocketCAN_socketid p_id, 
  template CAN_id p_can_id,
  template SocketCAN_Isotp_PDU p_isotp_pdu) := { 
  // recieved CAN frame
  id        := p_id,
  ifr       := ?,
  pdu       := p_isotp_pdu
}

} 




