///////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2000-2020 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
///////////////////////////////////////////////////////////////////////////////
//  File:               EPTF_LwM2M_Transport_Definitions.ttcn
//  Description:
//  Rev:                R1A
//  Prodnr:             CNL 113 859
//  Updated:            2020-03-04
//  Contact:            http://ttcn.ericsson.se
///////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////
//  Module: EPTF_LwM2M_Transport_Definitions
// 
//  Purpose:
//    This module contains the generic transport definitions of the LwM2M load generator
//
//  Component Diagram:
//    (see EPTF_LwM2M_Transport_Definitions.components.jpg)
//
//  See also:
//    - <EPTF_LwM2M_LGen_Definitions>
//    - <EPTF_LwM2M_Transport_User_CT>
//    - <EPTF_LwM2M_Transport_Provider_CT>
///////////////////////////////////////////////////////////////
/*****************************************************************
 @startuml EPTF_LwM2M_Transport_Definitions.components.jpg
   package "EPTF_LwM2M_Transport_Definitions" {
     class EPTF_LwM2M_Transport_User_CT {
       fcb_EPTF_LwM2M_Transport_sendMessage vf_EPTF_LwM2M_Transport_send
     }
     class EPTF_LwM2M_Transport_Provider_CT {
       fcb_EPTF_LwM2M_Transport_receiveMessage vf_EPTF_LwM2M_Transport_receiveMessage
       fcb_EPTF_LwM2M_Transport_receiveEvent fcb_EPTF_LwM2M_Transport_receiveEvent
     }
     EPTF_LwM2M_Transport_Provider_CT <-> EPTF_LwM2M_Transport_User_CT
  }
 @enduml
******************************************************************/
module EPTF_LwM2M_Transport_Definitions
{
  import from LightweightM2M_Types all;

  ///////////////////////////////////////////////////////////
  //  Type: fcb_EPTF_LwM2M_Transport_receiveMessage
  //
  //  Purpose:
  //    Call-back function type for reporting received <EPTF_LwM2M_PDU> LwM2M messages
  //
  //  Elements:
  //    pl_message  - *in* <EPTF_LwM2M_PDU> - received COAP message
  ///////////////////////////////////////////////////////////
  type function fcb_EPTF_LwM2M_Transport_receiveMessage(in EPTF_LwM2M_PDU pl_message) runs on self;

  ///////////////////////////////////////////////////////////
  //  Type: fcb_EPTF_LwM2M_Transport_receiveEvent
  //
  //  Purpose:
  //    Call-back function type for reporting received <EPTF_LwM2M_Event> LWM2M event
  //
  //  Elements:
  //    p_event  - *in* <EPTF_LwM2M_Event> - received LWM2M event
  ///////////////////////////////////////////////////////////
  type function fcb_EPTF_LwM2M_Transport_receiveEvent(in EPTF_LwM2M_Event pl_event) runs on self;

  ///////////////////////////////////////////////////////////
  //  Type: fcb_EPTF_LwM2M_Transport_sendMessage
  //
  //  Purpose:
  //    Call-back function type for sending a <EPTF_LwM2M_PDU> LwM2M message
  //
  //  Elements:
  //    pl_msg  - *in* <EPTF_LwM2M_PDU> - LwM2M message to be sent
  ///////////////////////////////////////////////////////////
  type function fcb_EPTF_LwM2M_Transport_sendMessage(in EPTF_LwM2M_PDU pl_msg) runs on self;

  ///////////////////////////////////////////////////////////
  //  Type: EPTF_LwM2M_PDU
  //
  //  Purpose:
  //    Encapsulates a <LWM2M_PDU> with the corresponding entity (and FSM) indices
  //
  //  Elements:
  //    pdu - <LWM2M_PDU> - LwM2M PDU
  //    eIdx - *integer* - entity index
  //    fsmIdx - *integer* - fsm index
  ///////////////////////////////////////////////////////////
  type record EPTF_LwM2M_PDU
  {
    LWM2M_PDU	pdu,
    integer     eIdx,
    integer	fsmIdx
  }

  ///////////////////////////////////////////////////////////
  //  Type: EPTF_LwM2M_Event
  //
  //  Purpose:
  //    Encapsulates a <EPTF_LwM2M_Event> with the corresponding entity
  //
  //  Elements:
  //    event - <LWM2M_Event> - LwM2M event
  //    eIdx - *integer* - entity index
  ///////////////////////////////////////////////////////////
  type record EPTF_LwM2M_Event
  {
    LWM2M_Event event,
    integer     eIdx
  }

  ///////////////////////////////////////////////////////////
  //  Type: LWM2M_Event
  //
  //  Purpose:
  //    A union of possible LwM2M events
  //
  //  Elements:
  //    resourceNotObserved - <ObjectPath> - dispatched when a resource is not observed any more, the object path identifies the resource
  //    atomicBlock1Finished - <LWM2M_Event_Block1> - in case an atomic block1 transfer finished, it is indicated here
  ///////////////////////////////////////////////////////////
  type union LWM2M_Event
  {
    ObjectPath          resourceNotObserved,
    LWM2M_Event_Block1  atomicBlock1Finished
  }

  ///////////////////////////////////////////////////////////
  //  Type: LWM2M_Event_Block1
  //
  //  Purpose:
  //    Blcok1 event descriptor
  //
  //  Elements:
  //    path - <ObjectPath> - path uri
  //    method - <LWM2M_Block1_Method> - method of the request
  //    contentFormat - integer - content format code
  //    resources - <LwM2M_Resource_List> - resource list
  ///////////////////////////////////////////////////////////
  type record LWM2M_Event_Block1
  {
    ObjectPath	        path,
    LWM2M_Block1_Method method,
    integer             contentFormat,
    LwM2M_Resource_List resources
  }

  ///////////////////////////////////////////////////////////
  //  Enum: LWM2M_Block1_Method
  //
  //  Purpose:
  //    Block1 method types
  //
  //  Elements:
  //    - UNMAPPED
  //    - WRITE
  ///////////////////////////////////////////////////////////
  type enumerated LWM2M_Block1_Method
  {
    UNMAPPED,
    WRITE
  }

  const LWM2M_Event_Block1 c_LWM2M_Event_Block1_empty :=
  {
    path := {},
    method := UNMAPPED,
    contentFormat := -1,
    resources := {}
  }

  /*****************************************************************
   @startuml EPTF_LwM2M_Transport_Definitions.EPTF_LwM2M_Transport_Provider_CT.jpg
     class EPTF_LwM2M_Transport_Provider_CT {
       fcb_EPTF_LwM2M_Transport_receiveMessage vf_EPTF_LwM2M_Transport_receiveMessage
       fcb_EPTF_LwM2M_Transport_receiveEvent fcb_EPTF_LwM2M_Transport_receiveEvent
     }
   @enduml
  *****************************************************************/
  ///////////////////////////////////////////////////////////
  // Type: EPTF_LwM2M_Transport_Provider_CT
  //
  // Purpose:
  //   Base component type for a LwM2M transport realization
  //
  // Class:
  //   (see EPTF_LwM2M_Transport_Definitions.EPTF_LwM2M_Transport_Provider_CT.jpg)
  //
  // Variables:
  //   vf_EPTF_LwM2M_Transport_receiveMessage - <fcb_EPTF_LwM2M_Transport_receiveMessage> - Function hook for reporting received messages
  //   vf_EPTF_LwM2M_Transport_receiveEvent - <fcb_EPTF_LwM2M_Transport_receiveEvent> - Function hook for reporting received events
  ///////////////////////////////////////////////////////////
  type component EPTF_LwM2M_Transport_Provider_CT
  {
    var fcb_EPTF_LwM2M_Transport_receiveMessage  vf_EPTF_LwM2M_Transport_receiveMessage := null;
    var fcb_EPTF_LwM2M_Transport_receiveEvent  vf_EPTF_LwM2M_Transport_receiveEvent := null;
  }

  /*****************************************************************
   @startuml EPTF_LwM2M_Transport_Definitions.EPTF_LwM2M_Transport_User_CT.jpg
     class EPTF_LwM2M_Transport_User_CT {
       fcb_EPTF_LwM2M_Transport_sendMessage vf_EPTF_LwM2M_Transport_send
     }
   @enduml
  *****************************************************************/
  ///////////////////////////////////////////////////////////
  // Type: EPTF_LwM2M_Transport_User_CT
  //
  // Purpose:
  //   Base component type for a LwM2M transport user realization
  //
  // Class:
  //   (see EPTF_LwM2M_Transport_Definitions.EPTF_LwM2M_Transport_User_CT.jpg)
  //
  // Variables:
  //   vf_EPTF_LwM2M_Transport_send - <fcb_EPTF_LwM2M_Transport_sendMessage> - Function hook for reporting received messages
  ///////////////////////////////////////////////////////////
  type component EPTF_LwM2M_Transport_User_CT
  {
    var fcb_EPTF_LwM2M_Transport_sendMessage     vf_EPTF_LwM2M_Transport_send := null;
  }
}
