///////////////////////////////////////////////////////////////////////////////
//
// 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_LGen_Definitions.ttcn
//  Description:
//  Rev:                R1A
//  Prodnr:             CNL 113 859
//  Updated:            2020-03-04
//  Contact:            http://ttcn.ericsson.se
///////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////
//  Module: EPTF_LwM2M_LGen_Definitions
// 
//  Purpose:
//    This module contains the definitions for the LWM2M load generator component
//
//  Module depends on:
//    - <EPTF_LwM2M_Object_Definitions>
//    - <EPTF_LwM2M_Transport_Definitions>
//    - <EPTF_CLL_LGenBase_Definitions>
//    - <EPTF_CLL_Logging_Definitions>
//    - <EPTF_CLL_FBQ_Definitions>
//    - <LightweightM2M_Types>
// 
//  Module Parameters:
//    tsp_EPTF_LwM2M_LGen_log_error - <tsp_EPTF_LwM2M_LGen_log_error> - *boolean* - Enabled/disable error logging
//    tsp_EPTF_LwM2M_LGen_log_warning - <tsp_EPTF_LwM2M_LGen_log_warning> - *boolean* - Enabled/disable warning logging
//    tsp_EPTF_LwM2M_LGen_debug - <tsp_EPTF_LwM2M_LGen_debug> - *boolean* - Enabled/disable debug logging
//    tsp_EPTF_LwM2M_LGen_debugVerbose - <tsp_EPTF_LwM2M_LGen_debugVerbose> - *boolean* - Enabled/disable verbose debug logging
//    tsp_EPTF_LwM2M_LGen_templates - <tsp_EPTF_LwM2M_LGen_templates> - <LwM2M_Template_List> - LWM2M template definitions for sending
//    tsp_EPTF_LwM2M_LGen_objectSpecifications - <tsp_EPTF_LwM2M_LGen_objectSpecifications> - <LwM2M_ObjectSpecification_List> - Additional smart object specifications to be loaded
//    tsp_EPTF_LwM2M_LGen_defaultContentFormat - <tsp_EPTF_LwM2M_LGen_defaultContentFormat> - *integer* - default LwM@M payload content format
//
//  Events:
//    LWM2M Register request - <c_LwM2M_eventIdx_Register>, <c_LwM2M_eventName_Register>
//    LWM2M Update request - <c_LwM2M_eventIdx_Update>, <c_LwM2M_eventName_Update>
//    LWM2M Deregister request - <c_LwM2M_eventIdx_Deregister>, <c_LwM2M_eventName_Deregister>
//    LWM2M Read request - <c_LwM2M_eventIdx_Read>, <c_LwM2M_eventName_Read>
//    LWM2M Write request - <c_LwM2M_eventIdx_Write>, <c_LwM2M_eventName_Write>
//    LWM2M Execute request - <c_LwM2M_eventIdx_Execute>, <c_LwM2M_eventName_Execute>
//    LWM2M Create request - <c_LwM2M_eventIdx_Create>, <c_LwM2M_eventName_Create>
//    LWM2M Delete request - <c_LwM2M_eventIdx_Delete>, <c_LwM2M_eventName_Delete>
//    LWM2M 1xx response - <c_LwM2M_eventIdx_1xx>, <c_LwM2M_eventName_1xx>
//    LWM2M 2xx response - <c_LwM2M_eventIdx_2xx>, <c_LwM2M_eventName_2xx>
//    LWM2M 3xx response - <c_LwM2M_eventIdx_3xx>, <c_LwM2M_eventName_3xx>
//    LWM2M 4xx response - <c_LwM2M_eventIdx_4xx>, <c_LwM2M_eventName_4xx>
//    LWM2M 5xx response - <c_LwM2M_eventIdx_5xx>, <c_LwM2M_eventName_5xx>
//    LWM2M 6xx response - <c_LwM2M_eventIdx_6xx>, <c_LwM2M_eventName_6xx>
//    LWM2M 3xxto6xx response - <c_LwM2M_eventIdx_3xxto6xx>, <c_LwM2M_eventName_3xxto6xx>
//    LWM2M resource not observed any more indication - <c_LwM2M_eventIdx_resourceNotObservedIndication>, <c_LwM2M_eventName_resourceNotObservedIndication>
//
//  TestSteps:
//    LWM2M load template - <f_LwM2M_step_loadTemplate_byIntIdx>, <c_LwM2M_stepName_loadTemplate_byIntIdx>, <c_LwM2M_stepIdx_loadTemplate_byIntIdx>
//                          <f_LwM2M_step_loadTemplate_byStringId>, <c_LwM2M_stepName_send>, <c_LwM2M_stepIdx_loadTemplate_byStringId>
//    LWM2M send - <f_LwM2M_step_send>, <c_LwM2M_stepName_send>, <c_LwM2M_stepIdx_send>
//    LWM2M create device - <f_LwM2M_step_createDevice>, <c_LwM2M_stepName_createDevice>, <c_LwM2M_stepIdx_createDevice>
//    LWM2M clean up device - <f_LwM2M_step_cleanupDevice>, <c_LwM2M_stepName_cleanupDevice>, <c_LwM2M_stepIdx_cleanupDevice>
//    LWM2M log device - <f_LwM2M_step_logDevice>, <c_LwM2M_stepName_logDevice>, <c_LwM2M_stepIdx_logDevice>
//    LWM2M create object - <f_LwM2M_step_createObject>, <c_LwM2M_stepName_createObject>, <c_LwM2M_stepIdx_createObject>
//    LWM2M create object instance - <f_LwM2M_step_createObjectInstance>, <c_LwM2M_stepName_createObjectInstance>, <c_LwM2M_stepIdx_createObjectInstance>
//    LWM2M handle READ request - <f_LwM2M_step_handleReadRequest>, <c_LwM2M_stepName_handleReadRequest>, <c_LwM2M_stepIdx_handleReadRequest>
//    LWM2M handle WRITE request - <f_LwM2M_step_handleWriteRequest>, <c_LwM2M_stepName_handleWriteRequest>, <c_LwM2M_stepIdx_handleWriteRequest>
//    LWM2M handle EXECUTE request - <f_LwM2M_step_handleExecuteRequest>, <c_LwM2M_stepName_handleExecuteRequest>, <c_LwM2M_stepIdx_handleExecuteRequest>
//    LWM2M send NOTIFICATION - <f_LwM2M_step_sendNotificationForObservedResources>, <c_LwM2M_stepName_sendNotificationForObservedResources>, <c_LwM2M_stepIdx_sendNotificationForObservedResources>
//    LWM2M set firmware update state - <f_LwM2M_step_setFirmwareUpdateState>, <c_LwM2M_stepName_setFirmwareUpdateState>, <c_LwM2M_stepIdx_setFirmwareUpdateState>
//    LWM2M set firmware update results - <f_LwM2M_step_setFirmwareUpdateResult>, <c_LwM2M_stepName_setFirmwareUpdateResult>, <c_LwM2M_stepIdx_setFirmwareUpdateResult>
//    LWM2M set bootstrap state - <f_LwM2M_step_setBootstrapState>, <c_LwM2M_stepName_setBootstrapState>, <c_LwM2M_stepIdx_setBootstrapState>
//    LWM2M set not_registered state - <f_LwM2M_step_setNotRegisteredState>, <c_LwM2M_stepName_setNotRegisteredState>, <c_LwM2M_stepIdx_setNotRegisteredState>
//    LWM2M set block1 handling stateless - <f_LwM2M_step_setBlock1Handling_stateless>, <c_LwM2M_stepName_setBlock1Handling_stateless>, <c_LwM2M_stepIdx_setBlock1Handling_stateless>
//    LWM2M set block1 handling atomic - <f_LwM2M_step_setBlock1Handling_atomic>, <c_LwM2M_stepName_setBlock1Handling_atomic>, <c_LwM2M_stepIdx_setBlock1Handling_atomic>
//    LWM2M set content formats - <f_LwM2M_step_setContentFormats>, <c_LwM2M_stepName_setContentFormats>, <c_LwM2M_stepIdx_setContentFormats>
//
//  Class Diagram:
//   (see EPTF_LwM2M_LGen_Definitions.classes.jpg)
//
///////////////////////////////////////////////////////////////
module EPTF_LwM2M_LGen_Definitions
{
  import from EPTF_CLL_LGenBase_Definitions all;
  import from EPTF_CLL_Logging_Definitions all;
  import from EPTF_CLL_FBQ_Definitions all;
  import from EPTF_LwM2M_Object_Definitions all;
  import from EPTF_LwM2M_Transport_Definitions all;
  import from LightweightM2M_Types all;

  ///////////////////////////////////////////////////////////
  //  Module parameter: tsp_EPTF_LwM2M_LGen_log_error
  // 
  //  Purpose:
  //    Enabled/disable error logging
  //  
  //  Type:
  //     *boolean*
  //
  //  Default value:
  //     *true*
  ///////////////////////////////////////////////////////////
  modulepar boolean tsp_EPTF_LwM2M_LGen_log_error := true;

  ///////////////////////////////////////////////////////////
  //  Module parameter: tsp_EPTF_LwM2M_LGen_log_warning
  // 
  //  Purpose:
  //    Enabled/disable warning logging
  //  
  //  Type:
  //     *boolean*
  //
  //  Default value:
  //     *true*
  ///////////////////////////////////////////////////////////
  modulepar boolean tsp_EPTF_LwM2M_LGen_log_warning := true;
  
  ///////////////////////////////////////////////////////////
  //  Module parameter: tsp_EPTF_LwM2M_LGen_debug
  // 
  //  Purpose:
  //    Enabled/disable debug logging
  //  
  //  Type:
  //     *boolean*
  //
  //  Default value:
  //     *false*
  ///////////////////////////////////////////////////////////
  modulepar boolean tsp_EPTF_LwM2M_LGen_debug := false;

  ///////////////////////////////////////////////////////////
  //  Module parameter: tsp_EPTF_LwM2M_LGen_debugVerbose
  // 
  //  Purpose:
  //    Enabled/disable verbose debug logging
  //
  //  Type:
  //     *boolean*
  //
  //  Default value:
  //     *false*
  ///////////////////////////////////////////////////////////
  modulepar boolean tsp_EPTF_LwM2M_LGen_debugVerbose := false;

  modulepar integer tsp_EPTF_LwM2M_LGen_maxBindableCtx := -1;

  ///////////////////////////////////////////////////////////
  //  Module parameter: tsp_EPTF_LwM2M_LGen_templates
  // 
  //  Purpose:
  //    List of LWM2M messages for sending
  //
  //  Type:
  //     <LwM2M_Template_List>
  //
  //  Default value:
  //     Empty list: {}
  ///////////////////////////////////////////////////////////
  modulepar LwM2M_Template_List tsp_EPTF_LwM2M_LGen_templates := {};

  ///////////////////////////////////////////////////////////
  //  Module parameter: tsp_EPTF_LwM2M_LGen_objectSpecifications
  // 
  //  Purpose:
  //    List of smart object specifications (needed for creating smart object instances)
  //
  //  Type:
  //     <LwM2M_ObjectSpecification_List>
  //
  //  Default value:
  //     Empty list: {}
  ///////////////////////////////////////////////////////////
  modulepar LwM2M_ObjectSpecification_List tsp_EPTF_LwM2M_LGen_objectSpecifications := {};
  
  ///////////////////////////////////////////////////////////
  //  Module parameter: tsp_EPTF_LwM2M_LGen_defaultContentFormat
  // 
  //  Purpose:
  //    Setting the default content format code for encoding LwM2M payload
  //
  //  Type:
  //     *integer*
  //
  //  Default value:
  //     11543
  ///////////////////////////////////////////////////////////
  modulepar integer tsp_EPTF_LwM2M_LGen_defaultContentFormat := 11543;

  const integer c_LwM2M_LGen_Logging_WARNING := 0;
  const integer c_LwM2M_LGen_Logging_DEBUG := 1;
  const integer c_LwM2M_LGen_Logging_DEBUGV := 2;
  const integer c_LwM2M_LGen_Logging_ERROR := 3;

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_behaviorType
  //
  //  Purpose:
  //    Constant for LWM2M behaviour name
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_behaviorType := "LWM2M Behavior";
  

 /*****************************************************************
   @startuml EPTF_LwM2M_LGen_Definitions.classes.jpg

     class EPTF_LwM2M_LGen_CT {
       boolean v_LwM2M_initialized
       integer v_LwM2M_bIdx
       integer v_LwM2M_loggingMaskId
       LwM2M_ObjectSpecificationDB v_LwM2M_ObjectSpecificationDB
       LwM2M_EntityCtx_DB v_LwM2M_EntityCtxDB
       LwM2M_Device_DB v_LwM2M_DeviceDB
       LwM2M_Template_DB v_LwM2M_templateDB
       LwM2M_StepCtx v_LwM2M_ctx
       EPTF_LwM2M_PDU v_LwM2M_msgToProcess
       EPTF_LwM2M_PDU v_LwM2M_msgToSend
       EPTF_LwM2M_Event v_LwM2M_eventToProcess
       f_EPTF_LwM2M_LGen_init(in charstring pl_name)
       f_LwM2M_cleanUp()
       f_LwM2M_eCtxBind(in integer pl_eIdx)
       f_LwM2M_eCtxUnbind(in integer pl_eIdx)
       f_LwM2M_eCtxReset(in integer pl_eIdx)
       f_EPTF_LwM2M_Logging_VERBOSE(in @lazy charstring pl_message)
       f_EPTF_LwM2M_Logging_DEBUG(in @lazy charstring pl_message)
       f_EPTF_LwM2M_Logging_WARNING(in @lazy charstring pl_message)
       f_EPTF_LwM2M_Logging_ERROR(in @lazy charstring pl_message)
       f_EPTF_LwM2M_LGen_receiveMessage(in EPTF_LwM2M_PDU pl_message)
       f_EPTF_LwM2M_LGen_receiveEvent(in EPTF_LwM2M_Event pl_event)
       f_EPTF_LwM2M_declareEvents()
       f_EPTF_LwM2M_declareSteps()
       f_EPTF_LwM2M_setStepCtx(in EPTF_LGenBase_TestStepArgs pl_ptr, inout LwM2M_StepCtx p_ctx)
       f_EPTF_LwM2M_setCtx(in integer p_eIdx, in integer p_fsmIdx, inout LwM2M_StepCtx p_ctx)
       f_EPTF_LwM2M_hasDevice(in LwM2M_StepCtx p_ctx)
       f_EPTF_LwM2M_stack_fromApp(inout EPTF_LwM2M_PDU p_pdu, in LwM2M_StepCtx p_ctx)
       f_EPTF_LwM2M_stack_fromEnv(in EPTF_LwM2M_PDU p_pdu)
       f_EPTF_LwM2M_dispatchEventsForPDU(in LWM2M_PDU pl_pdu, in integer pl_eIdx, in integer pl_fsmCtx, in EPTF_IntegerList pl_reportedArgs)
       f_EPTF_LwM2M_dispatchEvent(in integer pl_eventIdx, in integer pl_eIdx, in integer pl_fsmCtx, in EPTF_IntegerList pl_reportedArgs)
     }
     EPTF_LwM2M_LGen_CT "1" --> "1\n.v_LwM2M_ObjectSpecificationDB" LwM2M_ObjectSpecificationDB
     EPTF_LwM2M_LGen_CT "1" --> "1\n.v_LwM2M_EntityCtxDB" LwM2M_EntityCtx_DB
     EPTF_LwM2M_LGen_CT "1" --> "1\n.v_LwM2M_DeviceDB" LwM2M_Device_DB
     EPTF_LwM2M_LGen_CT "1" --> "1\n.v_LwM2M_templateDB" LwM2M_Template_DB

     class LwM2M_EntityCtx {
       integer eIdx
       integer currentDevice
     }
     LwM2M_EntityCtx "1" --> "1\n.currentDevice" LwM2M_Device

     class LwM2M_EntityCtx_DB {
       EPTF_FreeBusyQueue  queue
       LwM2M_EntityCtx_List data
       integer             hashRef
       f_EPTF_LwM2M_EntityCtxDB_init()
       f_EPTF_LwM2M_EntityCtxDB_cleanUp()
     }
     LwM2M_EntityCtx_DB "1" --> "*\n.data[]" LwM2M_EntityCtx

     class LwM2M_Device {
       Location registeredLocation
       LwM2M_ObjectDB objects
       LwM2M_Block1_Handling block1Handling
       EPTF_IntegerList contentFormats
       LwM2M_Device_State state
     }

     class LwM2M_Device_DB {
       EPTF_FreeBusyQueue    queue
       LwM2M_Device_List data
       integer hashRef
       f_EPTF_LwM2M_DeviceDB_init()
       f_EPTF_LwM2M_DeviceDB_add(in LwM2M_Device p_device)
       f_EPTF_LwM2M_DeviceDB_remove(in integer p_idx)
       f_EPTF_LwM2M_DeviceDB_setLocationKey(in Location p_location, in integer p_idx)
       f_EPTF_LwM2M_DeviceDB_locationHash(in Location p_location)
       f_EPTF_LwM2M_DeviceDB_cleanUp()
     }
     LwM2M_Device_DB "1" --> "*\n.data[]" LwM2M_Device

     class LwM2M_Template_DB {
       EPTF_FreeBusyQueue    queue
       LwM2M_Template_List data
       integer hashRef
       f_EPTF_LwM2M_TemplateDB_init()
       f_EPTF_LwM2M_TemplateDB_add(in LwM2M_Template p_template)
       f_EPTF_LwM2M_TemplateDB_lookUp(in charstring p_id)
       f_EPTF_LwM2M_TemplateDB_get(in integer p_idx, inout LWM2M_PDU p_pdu)
       f_EPTF_LwM2M_TemplateDB_cleanUp()
     }
     LwM2M_Template_DB "1" --> "*\n.data[]" LwM2M_Template

   @enduml
  ******************************************************************/

 /*****************************************************************
   @startuml EPTF_LwM2M_LGen_Definitions.LwM2M_EntityCtx.jpg
     class LwM2M_EntityCtx {
       integer eIdx
       integer currentDevice
     }
   @enduml
  ******************************************************************/

  ///////////////////////////////////////////////////////////
  //  Type: LwM2M_EntityCtx
  //
  //  Purpose:
  //    A LWM2M entity is a simulated LWM2M device, this structure stores an association for one simulated device and an entity
  //
  //  Class:
  //    (see EPTF_LwM2M_LGen_Definitions.LwM2M_EntityCtx.jpg)
  //
  //  Elements:
  //    eIdx  - *integer* - pointer to the entity itself
  //    currentDevice  - *integer* - pointer to the simulated <LwM2M_Device> in *v_LwM2M_DeviceDB*
  //
  //  Related Functions:
  //    - <f_LwM2M_step_createDevice> (in <EPTF_LGenBase_TestStepArgs> pl_ptr)
  //    - <f_LwM2M_step_cleanupDevice> (in <EPTF_LGenBase_TestStepArgs> pl_ptr)
  ///////////////////////////////////////////////////////////
  type record LwM2M_EntityCtx
  {
    integer eIdx,
    integer currentDevice
  }

  const LwM2M_EntityCtx c_LwM2M_EntityCtx_init :=
  {
    eIdx := -1,
    currentDevice := -1
  }

  ///////////////////////////////////////////////////////////
  //  Type: LwM2M_EntityCtx_List
  //
  //  Purpose:
  //    List of <LwM2M_EntityCtx>
  ///////////////////////////////////////////////////////////
  type record of LwM2M_EntityCtx LwM2M_EntityCtx_List;

  /*****************************************************************
   @startuml EPTF_LwM2M_LGen_Definitions.LwM2M_EntityCtx_DB.jpg
     class LwM2M_EntityCtx_DB {
       EPTF_FreeBusyQueue  queue
       LwM2M_EntityCtx_List data
       integer             hashRef
       f_EPTF_LwM2M_EntityCtxDB_init()
       f_EPTF_LwM2M_EntityCtxDB_cleanUp()
     }
   @enduml
  ******************************************************************/
  ///////////////////////////////////////////////////////////
  //  Type: LwM2M_EntityCtx_DB
  //
  //  Purpose:
  //    Storing LWM2M entity contexts
  //
  //  Class:
  //    (see EPTF_LwM2M_LGen_Definitions.LwM2M_EntityCtx_DB.jpg)
  //
  //  Elements:
  //    queue  - <EPTF_FreeBusyQueue> - FBQ for the stored elements
  //    data  - <LwM2M_EntityCtx_List> - elements
  //
  //  Related Functions:
  //    - <f_EPTF_LwM2M_EntityCtxDB_init> ()
  //    - <f_EPTF_LwM2M_EntityCtxDB_cleanUp> ()
  ///////////////////////////////////////////////////////////
  type record LwM2M_EntityCtx_DB 
  {
    EPTF_FreeBusyQueue   queue, 
    LwM2M_EntityCtx_List data,
    integer              hashRef
  }
  
 /*****************************************************************
   @startuml EPTF_LwM2M_LGen_Definitions.LwM2M_Device.jpg
     class LwM2M_Device {
       Location registeredLocation
       LwM2M_ObjectDB objects
       LwM2M_Block1_Handling block1Handling
       EPTF_IntegerList contentFormats
       LwM2M_Device_State state
     }
   @enduml
  ******************************************************************/
  ///////////////////////////////////////////////////////////
  //  Type: LwM2M_Device
  //
  //  Purpose:
  //    Storing the state and smart object of a simulated LWM2M device
  //
  //  Class:
  //    (see EPTF_LwM2M_LGen_Definitions.LwM2M_Device.jpg)
  //
  //  Elements:
  //    registeredLocation  - <Location> - id acquired during registration
  //    objects  - <LwM2M_ObjectDB> - smart objects and their instances
  //    block1Handling - <LwM2M_Block1_Handling> - block1 handling (atomic/stateless)
  //    contentFormats - <EPTF_IntegerList> - preferred content formats for encoding payload
  //    state - <LwM2M_Device_State> - tracking the state of the device
  //
  //  Related Functions:
  //    - <f_EPTF_LwM2M_sendNotificationForResource> (in <EPTF_LGenBase_TestStepArgs> pl_ptr, <LwM2M_Resource> v_res)
  ///////////////////////////////////////////////////////////
  type record LwM2M_Device
  {
    Location 		   registeredLocation,
    LwM2M_ObjectDB	   objects,
    LwM2M_Block1_Handling  block1Handling,
    LwM2M_Format_List      contentFormats,
    LwM2M_Device_State     state
  }
  
  ///////////////////////////////////////////////////////////
  //  Type: LwM2M_Format_List
  //
  //  Purpose:
  //    List of *integer*
  ///////////////////////////////////////////////////////////
  type record of integer LwM2M_Format_List;
  
  ///////////////////////////////////////////////////////////
  //  Enum: LwM2M_Device_State
  //
  //  Purpose:
  //    States of a <LwM2M_Device> simulated LWM2M device
  //
  //  Elements:
  //    - NOT_REGISTERED
  //    - REGISTERED
  ///////////////////////////////////////////////////////////
  type enumerated LwM2M_Device_State
  {
    NOT_REGISTERED,
    REGISTERED,
    BOOTSTRAPPING
  }
  
  ///////////////////////////////////////////////////////////
  //  Enum: LwM2M_Block1_Handling
  //
  //  Purpose:
  //    Block1 handling strategy of a <LwM2M_Device> simulated LWM2M device
  //
  //  Elements:
  //    - STATELESS
  //    - ATOMIC
  ///////////////////////////////////////////////////////////
  type enumerated LwM2M_Block1_Handling
  {
    STATELESS,
    ATOMIC
  }
  
  const LwM2M_Device c_LwM2M_Device_init :=
  {
    registeredLocation := {},
    objects := c_LwM2M_ObjectDB_init,
    block1Handling := STATELESS,
    contentFormats := { 11543 },
    state := NOT_REGISTERED
  }
  
  ///////////////////////////////////////////////////////////
  //  Type: LwM2M_Device_List
  //
  //  Purpose:
  //    List of <LwM2M_Device>
  ///////////////////////////////////////////////////////////
  type record of LwM2M_Device LwM2M_Device_List;
  
 /*****************************************************************
   @startuml EPTF_LwM2M_LGen_Definitions.LwM2M_Device_DB.jpg
     class LwM2M_Device_DB {
       EPTF_FreeBusyQueue    queue
       LwM2M_Device_List data
       integer hashRef
       f_EPTF_LwM2M_DeviceDB_init()
       f_EPTF_LwM2M_DeviceDB_add(in LwM2M_Device p_device)
       f_EPTF_LwM2M_DeviceDB_remove(in integer p_idx)
       f_EPTF_LwM2M_DeviceDB_setLocationKey(in Location p_location, in integer p_idx)
       f_EPTF_LwM2M_DeviceDB_locationHash(in Location p_location)
       f_EPTF_LwM2M_DeviceDB_cleanUp()
     }
   @enduml
  ******************************************************************/
 ///////////////////////////////////////////////////////////
  //  Type: LwM2M_Device_DB
  //
  //  Purpose:
  //    Storing <LwM2M_Device> instances
  //
  //  Class:
  //    (see EPTF_LwM2M_LGen_Definitions.LwM2M_Device_DB.jpg)
  //
  //  Elements:
  //    queue  - <EPTF_FreeBusyQueue> - FBQ for the stored elements
  //    data  - <LwM2M_Device_List> - elements
  //    hashFref - *integer* - hashmap id used for looking up devices
  //
  //  Related Functions:
  //    - <f_EPTF_LwM2M_DeviceDB_init> ()
  //    - <f_EPTF_LwM2M_DeviceDB_add> (in <LwM2M_Device> p_device)
  //    - <f_EPTF_LwM2M_DeviceDB_remove> (in *integer* p_idx)
  //    - <f_EPTF_LwM2M_DeviceDB_setLocationKey> (in <Location> p_location, in *integer* p_idx)
  //    - <f_EPTF_LwM2M_DeviceDB_locationHash> (in <Location> p_location)
  //    - <f_EPTF_LwM2M_DeviceDB_cleanUp> ()
  ///////////////////////////////////////////////////////////
  type record LwM2M_Device_DB 
  {
    EPTF_FreeBusyQueue  queue, 
    LwM2M_Device_List 	data,
    integer             hashRef
  }  
  
  ///////////////////////////////////////////////////////////
  //  Type: LwM2M_Template
  //
  //  Purpose:
  //    Grouping a <LWM2M_PDU> with an id so that the message can be loaded from an FSM later by using the id
  //
  //  Elements:
  //    id  - *charstring* - identifier
  //    msg  - <LWM2M_PDU> - LWM2M PDU
  ///////////////////////////////////////////////////////////
  type record LwM2M_Template
  {
    charstring id,
    LWM2M_PDU msg
  }

  ///////////////////////////////////////////////////////////
  //  Type: LwM2M_Template_List
  //
  //  Purpose:
  //    List of <LwM2M_Template>
  ///////////////////////////////////////////////////////////
  type record of LwM2M_Template LwM2M_Template_List;
  
 /*****************************************************************
   @startuml EPTF_LwM2M_LGen_Definitions.LwM2M_Template_DB.jpg
     class LwM2M_Template_DB {
       EPTF_FreeBusyQueue    queue
       LwM2M_Template_List data
       integer hashRef
       f_EPTF_LwM2M_TemplateDB_init()
       f_EPTF_LwM2M_TemplateDB_add(in LwM2M_Template p_template)
       f_EPTF_LwM2M_TemplateDB_lookUp(in charstring p_id)
       f_EPTF_LwM2M_TemplateDB_get(in integer p_idx, inout LWM2M_PDU p_pdu)
       f_EPTF_LwM2M_TemplateDB_cleanUp()
     }
   @enduml
  ******************************************************************/
  ///////////////////////////////////////////////////////////
  //  Type: LwM2M_Template_DB
  //
  //  Purpose:
  //    Storing <LwM2M_Template> instances
  //
  //  Class:
  //    (see EPTF_LwM2M_LGen_Definitions.LwM2M_Template_DB.jpg)
  //
  //  Elements:
  //    data  - <LwM2M_Template_List> - elements
  //
  //  Related Functions:
  //    - <f_EPTF_LwM2M_templateDB_init> ()
  //    - <f_EPTF_LwM2M_templateDB_add> (in <LwM2M_Template> p_template)
  //    - <f_EPTF_LwM2M_templateDB_lookUp> (in *charstring* p_id)
  //    - <f_EPTF_LwM2M_templateDB_get> (in *integer* p_idx, inout <LWM2M_PDU> p_pdu)
  //    - <f_EPTF_LwM2M_templateDB_cleanUp> ()
  ///////////////////////////////////////////////////////////
  type record LwM2M_Template_DB
  {
    LwM2M_Template_List data,
    integer hashRef
  }  

  ///////////////////////////////////////////////////////////
  //  Type: LwM2M_StepCtx
  //
  //  Purpose:
  //    Stores the most important pointers that are used from a test steps
  //
  //  Elements:
  //    eIdx  - *integer* - entity index
  //    fsmIdx - *integer* - fsm index
  //    eCtxIdx - *integer* - entity context index <LwM2M_EntityCtx> in *v_LwM2M_EntityCtxDB*
  //    deviceIdx - *integer* - device instance index <LwM2M_Device> in *v_LwM2M_DeviceDB*
  ///////////////////////////////////////////////////////////  
  type record LwM2M_StepCtx
  {
    integer eIdx,
    integer fsmIdx,
    integer eCtxIdx,
    integer deviceIdx
  }

  const LwM2M_StepCtx c_LwM2M_StepCtx_empty :=
  {
    eIdx := -1,
    fsmIdx := -1,
    eCtxIdx := -1,
    deviceIdx := -1
  }

  /*****************************************************************
   @startuml EPTF_LwM2M_LGen_Definitions.EPTF_LwM2M_LGen_CT.jpg
     class EPTF_LwM2M_LGen_CT {
       boolean v_LwM2M_initialized
       integer v_LwM2M_bIdx
       integer v_LwM2M_loggingMaskId
       LwM2M_ObjectSpecificationDB v_LwM2M_ObjectSpecificationDB
       LwM2M_EntityCtx_DB v_LwM2M_EntityCtxDB
       LwM2M_Device_DB v_LwM2M_DeviceDB
       LwM2M_Template_DB v_LwM2M_templateDB
       LwM2M_StepCtx v_LwM2M_ctx
       EPTF_LwM2M_PDU v_LwM2M_msgToProcess
       EPTF_LwM2M_PDU v_LwM2M_msgToSend
       EPTF_LwM2M_Event v_LwM2M_eventToProcess
       f_EPTF_LwM2M_LGen_init(in charstring pl_name)
       f_LwM2M_cleanUp()
       f_LwM2M_eCtxBind(in integer pl_eIdx)
       f_LwM2M_eCtxUnbind(in integer pl_eIdx)
       f_LwM2M_eCtxReset(in integer pl_eIdx)
       f_EPTF_LwM2M_Logging_VERBOSE(in @lazy charstring pl_message)
       f_EPTF_LwM2M_Logging_DEBUG(in @lazy charstring pl_message)
       f_EPTF_LwM2M_Logging_WARNING(in @lazy charstring pl_message)
       f_EPTF_LwM2M_Logging_ERROR(in @lazy charstring pl_message)
       f_EPTF_LwM2M_LGen_receiveMessage(in EPTF_LwM2M_PDU pl_message)
       f_EPTF_LwM2M_LGen_receiveEvent(in EPTF_LwM2M_Event pl_event)
       f_EPTF_LwM2M_declareEvents()
       f_EPTF_LwM2M_declareSteps()
       f_EPTF_LwM2M_setStepCtx(in EPTF_LGenBase_TestStepArgs pl_ptr, inout LwM2M_StepCtx p_ctx)
       f_EPTF_LwM2M_setCtx(in integer p_eIdx, in integer p_fsmIdx, inout LwM2M_StepCtx p_ctx)
       f_EPTF_LwM2M_hasDevice(in LwM2M_StepCtx p_ctx)
       f_EPTF_LwM2M_stack_fromApp(inout EPTF_LwM2M_PDU p_pdu, in LwM2M_StepCtx p_ctx)
       f_EPTF_LwM2M_stack_fromEnv(in EPTF_LwM2M_PDU p_pdu)
       f_EPTF_LwM2M_dispatchEventsForPDU(in LWM2M_PDU pl_pdu, in integer pl_eIdx, in integer pl_fsmCtx, in EPTF_IntegerList pl_reportedArgs)
       f_EPTF_LwM2M_dispatchEvent(in integer pl_eventIdx, in integer pl_eIdx, in integer pl_fsmCtx, in EPTF_IntegerList pl_reportedArgs)
     }
   @enduml
  *****************************************************************/
  ///////////////////////////////////////////////////////////
  // Type: EPTF_LwM2M_LGen_CT
  //
  // Purpose:
  //   LWM2M load generator component
  //
  // Class:
  //   (see EPTF_LwM2M_LGen_Definitions.EPTF_LwM2M_LGen_CT.jpg)
  //
  // Extensions:
  //  - <EPTF_LwM2M_Transport_User_CT>
  //  - <EPTF_LGenBase_CT>
  //  - <EPTF_Logging_CT>
  //
  // Ports:
  //   -
  //
  // Timers:
  //   -
  //
  // Variables:
  //   v_LwM2M_initialized  - *boolean* - Flag to indicate that if init function was already called
  //   v_LwM2M_bIdx  - *integer* - Name of the LWM2M LGen component
  //   v_LwM2M_loggingMaskId - *integer* - logging mask id
  //
  //   v_LwM2M_ctx - <LwM2M_StepCtx> - collection of the most important pointers
  //
  //   v_LwM2M_msgToProcess - <EPTF_LwM2M_PDU> - message from the transport layer to process
  //   v_LwM2M_msgToSend - <EPTF_LwM2M_PDU> - message to send to the transport layer
  //   v_LwM2M_eventToProcess - <EPTF_LwM2M_Event> - incoming event from the transport layer to process
  // 
  // Instance databases:
  //   v_LwM2M_templateDB - <LwM2M_Template_DB> - template database <LwM2M_Template>
  //   v_LwM2M_EntityCtxDB - <LwM2M_EntityCtx_DB> - database of entity contexts <LwM2M_EntityCtx>
  //   v_LwM2M_DeviceDB - <LwM2M_Device_DB> - database of <LwM2M_Device> instances
  //   v_LwM2M_ObjectSpecificationDB - <LwM2M_ObjectSpecificationDB> - object specification database <LwM2M_ObjectSpecification>
  //
  // Related Functions:
  //   - <f_EPTF_LwM2M_LGen_init> (in *charstring* pl_name)
  //   - <f_LwM2M_cleanUp> ()
  //   - <f_LwM2M_eCtxBind> (in *integer* pl_eIdx)
  //   - <f_LwM2M_eCtxUnbind> (in *integer* pl_eIdx)
  //   - <f_LwM2M_eCtxReset> (in *integer* pl_eIdx)
  //   - <f_EPTF_LwM2M_Logging_VERBOSE> (in @lazy *charstring* pl_message)
  //   - <f_EPTF_LwM2M_Logging_DEBUG> (in @lazy *charstring* pl_message)
  //   - <f_EPTF_LwM2M_Logging_WARNING> (in @lazy *charstring* pl_message)
  //   - <f_EPTF_LwM2M_Logging_ERROR> (in @lazy *charstring* pl_message)
  //   - <f_EPTF_LwM2M_LGen_receiveMessage> (in <EPTF_LwM2M_PDU> pl_message)
  //   - <f_EPTF_LwM2M_LGen_receiveEvent> (in <EPTF_LwM2M_Event> pl_event)
  //   - <f_EPTF_LwM2M_declareEvents> ()
  //   - <f_EPTF_LwM2M_declareSteps> ()
  //   - <f_EPTF_LwM2M_setStepCtx> (in <EPTF_LGenBase_TestStepArgs> pl_ptr, inout <LwM2M_StepCtx> p_ctx)
  //   - <f_EPTF_LwM2M_setCtx> (in *integer* p_eIdx, in *integer* p_fsmIdx, inout <LwM2M_StepCtx> p_ctx)
  //   - <f_EPTF_LwM2M_hasDevice> (in <LwM2M_StepCtx> p_ctx)
  //   - <f_EPTF_LwM2M_stack_fromApp> (inout <EPTF_LwM2M_PDU> p_pdu, in <LwM2M_StepCtx> p_ctx)
  //   - <f_EPTF_LwM2M_stack_fromEnv> (in <EPTF_LwM2M_PDU> p_pdu)
  //   - <f_EPTF_LwM2M_dispatchEventsForPDU> (in <LWM2M_PDU> pl_pdu, in *integer* pl_eIdx, in *integer* pl_fsmCtx, in <EPTF_IntegerList> pl_reportedArgs)
  //   - <f_EPTF_LwM2M_dispatchEvent>(in *integer* pl_eventIdx, in *integer* pl_eIdx, in *integer* pl_fsmCtx, in <EPTF_IntegerList> pl_reportedArgs)
  ///////////////////////////////////////////////////////////
  type component EPTF_LwM2M_LGen_CT extends EPTF_LwM2M_Transport_User_CT, EPTF_LGenBase_CT, EPTF_Logging_CT
  {
    var boolean v_LwM2M_initialized := false;

    var integer v_LwM2M_bIdx;

    var integer v_LwM2M_loggingMaskId := -1;

    var LwM2M_ObjectSpecificationDB v_LwM2M_ObjectSpecificationDB;
    var LwM2M_EntityCtx_DB   v_LwM2M_EntityCtxDB;
    var LwM2M_Device_DB   	 v_LwM2M_DeviceDB;
    var LwM2M_Template_DB    v_LwM2M_templateDB := {};

    var LwM2M_StepCtx v_LwM2M_ctx := c_LwM2M_StepCtx_empty;

    var EPTF_LwM2M_PDU   v_LwM2M_msgToProcess;
    var EPTF_LwM2M_PDU   v_LwM2M_msgToSend;
    var EPTF_LwM2M_Event v_LwM2M_eventToProcess;

    var EPTF_LwM2M_LGen_Statistics v_LwM2M_stats := c_EPTF_LwM2M_LGen_Statistics_empty;
  }
  
  ///////////////////////////////////////////////////////////
  //  Type: EPTF_LwM2M_LGen_Statistics
  //
  //  Purpose:
  //    Storing counters for load generator related statistics
  //
  //  Elements:
  //    incoming - <EPTF_COAP_Message_Statistics> - statistics of incoming messages
  //    outgoing - <EPTF_COAP_Message_Statistics> - statistics of outgoing messages
  ///////////////////////////////////////////////////////////  
  type record EPTF_LwM2M_LGen_Statistics
  {
    EPTF_LwM2M_Message_Statistics incoming,
    EPTF_LwM2M_Message_Statistics outgoing
  }

  const EPTF_LwM2M_LGen_Statistics c_EPTF_LwM2M_LGen_Statistics_empty :=
  {
    incoming := c_EPTF_LwM2M_Message_Statistics_empty,
    outgoing := c_EPTF_LwM2M_Message_Statistics_empty
  }

  ///////////////////////////////////////////////////////////
  //  Type: EPTF_LwM2M_Message_Statistics
  //
  //  Purpose:
  //    Storing counters for message related statistics
  //
  //  Elements:
  //    noRegister  - *integer* - number of Register requests
  //    noUpdate - *integer* - number of Update request
  //    noDeregister - *integer* - number of Deregister request
  //    noNotification - *integer* - number of Notifications
  //    noRead - *integer* - number of Read requests
  //    noWrite - *integer* - number of Write requests
  //    noExecute - *integer* - number of Execute requests
  //    noCreate - *integer* - number of Create requests
  //    noDelete - *integer* - number of Delete requests
  //    noPosResp - *integer* - number of positive (2.xx) repsonses
  //    noNegResp - *integer* - number of negative (3.xx - 6.xx) repsonses
  /////////////////////////////////////////////////////////// 
  type record EPTF_LwM2M_Message_Statistics
  {
    integer noRegister,
    integer noUpdate,
    integer noDeregister,
    integer noNotification,
    integer noRead,
    integer noWrite,
    integer noExecute,
    integer noCreate,
    integer noDelete,
    integer noPosResp,
    integer noNegResp
  }

  const EPTF_LwM2M_Message_Statistics c_EPTF_LwM2M_Message_Statistics_empty :=
  {
    noRegister := 0,
    noUpdate := 0,
    noDeregister := 0,
    noNotification := 0,
    noRead := 0,
    noWrite := 0,
    noExecute := 0,
    noCreate := 0,
    noDelete := 0,
    noPosResp := 0,
    noNegResp := 0
  }
  
  // FSM AppData
  
  const integer c_LwM2M_AppData_deviceIdx := 0;
  
  // Events

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventIdx_Register
  //
  //  Purpose:
  //    Integer constant for the LWM2M Register request event
  ///////////////////////////////////////////////////////////
  const integer c_LwM2M_eventIdx_Register := 0;

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventName_Register
  //
  //  Purpose:
  //    Charstring constant for the LWM2M Register request event
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_eventName_Register := "LWM2M req: Register";

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventIdx_Update
  //
  //  Purpose:
  //    Integer constant for the LWM2M Update request event
  ///////////////////////////////////////////////////////////
  const integer c_LwM2M_eventIdx_Update := 1;

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventName_Update
  //
  //  Purpose:
  //    Charstring constant for the LWM2M Update request event
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_eventName_Update := "LWM2M req: Update";

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventIdx_Deregister
  //
  //  Purpose:
  //    Integer constant for the LWM2M Deregister request event
  ///////////////////////////////////////////////////////////
  const integer c_LwM2M_eventIdx_Deregister := 2;

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventName_Deregister
  //
  //  Purpose:
  //    Charstring constant for the LWM2M Deregister request event
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_eventName_Deregister := "LWM2M req: Deregister";
  
  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventIdx_Read
  //
  //  Purpose:
  //    Integer constant for the LWM2M Read request event
  ///////////////////////////////////////////////////////////
  const integer c_LwM2M_eventIdx_Read := 3;

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventName_Read
  //
  //  Purpose:
  //    Charstring constant for the LWM2M Read request event
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_eventName_Read := "LWM2M req: Read";
  
  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventIdx_Write
  //
  //  Purpose:
  //    Integer constant for the LWM2M Write request event
  ///////////////////////////////////////////////////////////
  const integer c_LwM2M_eventIdx_Write := 4;

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventName_Write
  //
  //  Purpose:
  //    Charstring constant for the LWM2M Write request event
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_eventName_Write := "LWM2M req: Write";
  
  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventIdx_Execute
  //
  //  Purpose:
  //    Integer constant for the LWM2M Execute request event
  ///////////////////////////////////////////////////////////
  const integer c_LwM2M_eventIdx_Execute := 5;

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventName_Execute
  //
  //  Purpose:
  //    Charstring constant for the LWM2M Execute request event
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_eventName_Execute := "LWM2M req: Execute";
  
  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventIdx_Create
  //
  //  Purpose:
  //    Integer constant for the LWM2M Create request event
  ///////////////////////////////////////////////////////////
  const integer c_LwM2M_eventIdx_Create := 6;

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventName_Create
  //
  //  Purpose:
  //    Charstring constant for the LWM2M Create request event
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_eventName_Create := "LWM2M req: Create";
  
  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventIdx_Delete
  //
  //  Purpose:
  //    Integer constant for the LWM2M Delete request event
  ///////////////////////////////////////////////////////////
  const integer c_LwM2M_eventIdx_Delete := 7;

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventName_Delete
  //
  //  Purpose:
  //    Charstring constant for the LWM2M Delete request event
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_eventName_Delete := "LWM2M req: Delete";
  
  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventIdx_Observe
  //
  //  Purpose:
  //    Integer constant for the LWM2M Observe request event
  ///////////////////////////////////////////////////////////
  const integer c_LwM2M_eventIdx_Observe := 8;

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventName_Observe
  //
  //  Purpose:
  //    Charstring constant for the LWM2M Observe request event
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_eventName_Observe := "LWM2M req: Observe";
  

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventIdx_WriteFWUri
  //
  //  Purpose:
  //    Integer constant for the LWM2M WriteFWUri request event
  ///////////////////////////////////////////////////////////
  const integer c_LwM2M_eventIdx_WriteFWUri := 9;

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventName_WriteFWUri
  //
  //  Purpose:
  //    Charstring constant for the LWM2M WriteFWUri request event
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_eventName_WriteFWUri := "LWM2M req: WriteFWUri";
  

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventIdx_WriteFWPackage
  //
  //  Purpose:
  //    Integer constant for the LWM2M WriteFWPackage request event
  ///////////////////////////////////////////////////////////
  const integer c_LwM2M_eventIdx_WriteFWPackage := 10;

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventName_WriteFWPackage
  //
  //  Purpose:
  //    Charstring constant for the LWM2M WriteFWPackage request event
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_eventName_WriteFWPackage := "LWM2M req: WriteFWPackage";  

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventIdx_ExecuteFWUpdate
  //
  //  Purpose:
  //    Integer constant for the LWM2M ExecuteFWUpdate request event
  ///////////////////////////////////////////////////////////
  const integer c_LwM2M_eventIdx_ExecuteFWUpdate := 11;


  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventName_ExecuteFWUpdate
  //
  //  Purpose:
  //    Charstring constant for the LWM2M ExecuteFWUpdate request event
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_eventName_ExecuteFWUpdate := "LWM2M req: ExecuteFWUpdate";

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventIdx_BS_Delete
  //
  //  Purpose:
  //    Integer constant for the LWM2M BS_Delete request event
  ///////////////////////////////////////////////////////////
  const integer c_LwM2M_eventIdx_BS_Delete := 12;

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventName_BS_Delete
  //
  //  Purpose:
  //    Charstring constant for the LWM2M BS_Delete request event
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_eventName_BS_Delete := "LWM2M req: BS_Delete";

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventIdx_BS_Finish
  //
  //  Purpose:
  //    Integer constant for the LWM2M BS_Finish request event
  ///////////////////////////////////////////////////////////
  const integer c_LwM2M_eventIdx_BS_Finish := 13;

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventName_BS_Finish
  //
  //  Purpose:
  //    Charstring constant for the LWM2M BS_Finish request event
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_eventName_BS_Finish := "LWM2M req: BS_Finish";

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventIdx_BS_Discover
  //
  //  Purpose:
  //    Integer constant for the LWM2M BS_Discover request event
  ///////////////////////////////////////////////////////////
  const integer c_LwM2M_eventIdx_BS_Discover := 14;

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventName_BS_Discover
  //
  //  Purpose:
  //    Charstring constant for the LWM2M BS_Discover request event
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_eventName_BS_Discover := "LWM2M req: BS_Discover";


  template charstring c_LwM2M_eventName(in integer p_code) := "LWM2M rsp: "&int2str(p_code);

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventIdx_1xx
  //
  //  Purpose:
  //    Integer constant for the LWM2M 1xx reponse event
  ///////////////////////////////////////////////////////////
  const integer c_LwM2M_eventIdx_1xx := 700;

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventName_1xx
  //
  //  Purpose:
  //    Charstring constant for the LWM2M 1xx response event
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_eventName_1xx := "LWM2M rsp: 1xx";

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventIdx_2xx
  //
  //  Purpose:
  //    Integer constant for the LWM2M 2xx reponse event
  ///////////////////////////////////////////////////////////
  const integer c_LwM2M_eventIdx_2xx := 701;

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventName_2xx
  //
  //  Purpose:
  //    Charstring constant for the LWM2M 2xx response event
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_eventName_2xx := "LWM2M rsp: 2xx";

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventIdx_3xx
  //
  //  Purpose:
  //    Integer constant for the LWM2M 3xx reponse event
  ///////////////////////////////////////////////////////////
  const integer c_LwM2M_eventIdx_3xx := 702;

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventName_3xx
  //
  //  Purpose:
  //    Charstring constant for the LWM2M 3xx response event
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_eventName_3xx := "LWM2M rsp: 3xx";

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventIdx_4xx
  //
  //  Purpose:
  //    Integer constant for the LWM2M 4xx reponse event
  ///////////////////////////////////////////////////////////
  const integer c_LwM2M_eventIdx_4xx := 703;

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventName_4xx
  //
  //  Purpose:
  //    Charstring constant for the LWM2M 4xx response event
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_eventName_4xx := "LWM2M rsp: 4xx";

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventIdx_5xx
  //
  //  Purpose:
  //    Integer constant for the LWM2M 5xx reponse event
  ///////////////////////////////////////////////////////////
  const integer c_LwM2M_eventIdx_5xx := 704;

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventName_5xx
  //
  //  Purpose:
  //    Charstring constant for the LWM2M 5xx response event
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_eventName_5xx := "LWM2M rsp: 5xx";

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventIdx_6xx
  //
  //  Purpose:
  //    Integer constant for the LWM2M 6xx reponse event
  ///////////////////////////////////////////////////////////
  const integer c_LwM2M_eventIdx_6xx := 705;

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventName_6xx
  //
  //  Purpose:
  //    Charstring constant for the LWM2M 6xx response event
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_eventName_6xx := "LWM2M rsp: 6xx";

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventIdx_3xxto6xx
  //
  //  Purpose:
  //    Integer constant for the LWM2M 6xx reponse event
  ///////////////////////////////////////////////////////////
  const integer c_LwM2M_eventIdx_3xxto6xx := 706;

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventName_3xxto6xx
  //
  //  Purpose:
  //    Charstring constant for the LWM2M 6xx response event
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_eventName_3xxto6xx := "LWM2M rsp: 3xxto6xx";
  
  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventIdx_resourceNotObservedIndication
  //
  //  Purpose:
  //    Integer constant for the resource not observed any more indication
  //    This event occurs after all subscribers unsubscribed from a resource
  ///////////////////////////////////////////////////////////
  const integer c_LwM2M_eventIdx_resourceNotObservedIndication := 707;

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventName_resourceNotObservedIndication
  //
  //  Purpose:
  //    Charstring constant for the resource not observed any more indication
  //    This event occurs after all subscribers unsubscribed from a resource
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_eventName_resourceNotObservedIndication := "LWM2M ind: resource not observed";
  
  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventIdx_atomicBlock1Finished
  //
  //  Purpose:
  //    Integer constant for indicating that a block1 transfer was finished
  ///////////////////////////////////////////////////////////
  const integer c_LwM2M_eventIdx_atomicBlock1Finished := 708;

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_eventName_atomicBlock1Finished
  //
  //  Purpose:
  //    Charstring constant for indicating that a block1 transfer was finished
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_eventName_atomicBlock1Finished := "LWM2M ind: atomic Block1 transfer finished";
  
  // Steps

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_stepIdx_loadTemplate_byIntIdx
  //
  //  Purpose:
  //    Integer constant for the LWM2M loadTemplate (param: integer index) test step
  //
  //  Related Function:
  //    - <f_LwM2M_step_loadTemplate_byIntIdx>
  ///////////////////////////////////////////////////////////
  const integer c_LwM2M_stepIdx_loadTemplate_byIntIdx := 0;

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_stepName_loadTemplate_byIntIdx
  //
  //  Purpose:
  //    Charstring constant for the LWM2M loadTemplate (param: integer index) test step
  //
  //  Related Function:
  //    - <f_LwM2M_step_loadTemplate_byIntIdx>
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_stepName_loadTemplate_byIntIdx := "LWM2M Applib: loadTemplate_byIntIdx";

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_stepIdx_send
  //
  //  Purpose:
  //    Integer constant for the LWM2M send test step
  //
  //  Related Function:
  //    - <f_LwM2M_step_send>
  ///////////////////////////////////////////////////////////
  const integer c_LwM2M_stepIdx_send := 1;

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_stepName_send
  //
  //  Purpose:
  //    Charstring constant for the LWM2M send test step
  //
  //  Related Function:
  //    - <f_LwM2M_step_send>
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_stepName_send := "LWM2M Applib: send";
  
  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_stepIdx_createDevice
  //
  //  Purpose:
  //    Integer constant for the LWM2M create device test step
  //
  //  Related Function:
  //    - <f_LwM2M_step_createDevice>
  ///////////////////////////////////////////////////////////
  const integer c_LwM2M_stepIdx_createDevice := 2;

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_stepName_createDevice
  //
  //  Purpose:
  //    Charstring constant for the LWM2M create device test step
  //
  //  Related Function:
  //    - <f_LwM2M_step_createDevice>
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_stepName_createDevice := "LWM2M Applib: createDevice";
  
  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_stepIdx_cleanupDevice
  //
  //  Purpose:
  //    Integer constant for the LWM2M clean up device test step
  //
  //  Related Function:
  //    - <f_LwM2M_step_cleanupDevice>
  ///////////////////////////////////////////////////////////
  const integer c_LwM2M_stepIdx_cleanupDevice := 3;

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_stepName_cleanupDevice
  //
  //  Purpose:
  //    Charstring constant for the LWM2M clean up device test step
  //
  //  Related Function:
  //    - <f_LwM2M_step_cleanupDevice>
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_stepName_cleanupDevice := "LWM2M Applib: cleanupDevice";
  
  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_stepIdx_logDevice
  //
  //  Purpose:
  //    Integer constant for the LWM2M log device test step
  //
  //  Related Function:
  //    - <f_LwM2M_step_logDevice>
  ///////////////////////////////////////////////////////////
  const integer c_LwM2M_stepIdx_logDevice := 4;

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_stepName_logDevice
  //
  //  Purpose:
  //    Charstring constant for the LWM2M log device test step
  //
  //  Related Function:
  //    - <f_LwM2M_step_logDevice>
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_stepName_logDevice := "LWM2M Applib: logDevice";
  
  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_stepIdx_createObject
  //
  //  Purpose:
  //    Integer constant for the LWM2M create object test step
  //
  //  Related Function:
  //    - <f_LwM2M_step_createObject>
  ///////////////////////////////////////////////////////////
  const integer c_LwM2M_stepIdx_createObject := 5;

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_stepName_createObject
  //
  //  Purpose:
  //    Charstring constant for the LWM2M create object test step
  //
  //  Related Function:
  //    - <f_LwM2M_step_createObject>
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_stepName_createObject := "LWM2M Applib: createObject";
  
  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_stepIdx_createObjectInstance
  //
  //  Purpose:
  //    Integer constant for the LWM2M create object instance test step
  //
  //  Related Function:
  //    - <f_LwM2M_step_createObjectInstance>
  ///////////////////////////////////////////////////////////
  const integer c_LwM2M_stepIdx_createObjectInstance := 6;

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_stepName_createObjectInstance
  //
  //  Purpose:
  //    Charstring constant for the LWM2M create object instance test step
  //
  //  Related Function:
  //    - <f_LwM2M_step_createObjectInstance>
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_stepName_createObjectInstance := "LWM2M Applib: createObjectInstance";
  
  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_stepIdx_handleReadRequest
  //
  //  Purpose:
  //    Integer constant for the LWM2M handle READ request test step
  //
  //  Related Function:
  //    - <f_LwM2M_step_handleReadRequest>
  ///////////////////////////////////////////////////////////
  const integer c_LwM2M_stepIdx_handleReadRequest := 7;

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_stepName_handleReadRequest
  //
  //  Purpose:
  //    Charstring constant for the LWM2M handle READ request test step
  //
  //  Related Function:
  //    - <f_LwM2M_step_handleReadRequest>
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_stepName_handleReadRequest := "LWM2M Applib: handleReadRequest";
  
  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_stepIdx_handleWriteRequest
  //
  //  Purpose:
  //    Integer constant for the LWM2M handle WRITE request test step
  //
  //  Related Function:
  //    - <f_LwM2M_step_handleWriteRequest>
  ///////////////////////////////////////////////////////////
  const integer c_LwM2M_stepIdx_handleWriteRequest := 8;

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_stepName_handleWriteRequest
  //
  //  Purpose:
  //    Charstring constant for the LWM2M handle WRITE request test step
  //
  //  Related Function:
  //    - <f_LwM2M_step_handleWriteRequest>
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_stepName_handleWriteRequest := "LWM2M Applib: handleWriteRequest";
  
  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_stepIdx_handleExecuteRequest
  //
  //  Purpose:
  //    Integer constant for the LWM2M handle EXECUTE request test step
  //
  //  Related Function:
  //    - <f_LwM2M_step_handleExecuteRequest>
  ///////////////////////////////////////////////////////////
  const integer c_LwM2M_stepIdx_handleExecuteRequest := 9;

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_stepName_handleExecuteRequest
  //
  //  Purpose:
  //    Charstring constant for the LWM2M handle EXECUTE request test step
  //
  //  Related Function:
  //    - <f_LwM2M_step_handleExecuteRequest>
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_stepName_handleExecuteRequest := "LWM2M Applib: handleExecuteRequest";
      
  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_stepIdx_loadTemplate_byStringId
  //
  //  Purpose:
  //    Integer constant for the LWM2M load template (param: string id of the template) test step
  //
  //  Related Function:
  //    - <f_LwM2M_step_loadTemplate_byStringId>
  ///////////////////////////////////////////////////////////
  const integer c_LwM2M_stepIdx_loadTemplate_byStringId := 10;

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_stepName_loadTemplate_byStringId
  //
  //  Purpose:
  //    Charstring constant for the LWM2M load template (param: string id of the template) test step
  //
  //  Related Function:
  //    - <f_LwM2M_step_loadTemplate_byStringId>
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_stepName_loadTemplate_byStringId := "LWM2M Applib: loadTemplate_byStringId";
  
  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_stepIdx_sendNotificationForObservedResources
  //
  //  Purpose:
  //    Integer constant for the LWM2M send notification for observed resources test step
  //
  //  Related Function:
  //    - <c_LwM2M_stepName_sendNotificationForObservedResources>
  ///////////////////////////////////////////////////////////
  const integer c_LwM2M_stepIdx_sendNotificationForObservedResources := 11;

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_stepName_sendNotificationForObservedResources
  //
  //  Purpose:
  //    Charstring constant for the LWM2M send notification for observed resources test step
  //
  //  Related Function:
  //    - <c_LwM2M_stepName_sendNotificationForObservedResources>
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_stepName_sendNotificationForObservedResources := "LWM2M Applib: sendNotificationForObservedResources";
  
    ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_stepName_setFirmwareUpdateState
  //
  //  Purpose:
  //    Integer constant for the LWM2M set firmware update state test step
  //
  //  Related Function:
  //    - <c_LwM2M_stepName_setFirmwareUpdateState>
  ///////////////////////////////////////////////////////////
  const integer c_LwM2M_stepIdx_setFirmwareUpdateState := 12;

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_stepName_setFirmwareUpdateState
  //
  //  Purpose:
  //    Charstring constant for the LWM2M set firmware update state test step
  //
  //  Related Function:
  //    - <c_LwM2M_stepName_setFirmwareUpdateState>
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_stepName_setFirmwareUpdateState := "LWM2M Applib: setFirmwareUpdateState";
  
  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_stepIdx_setFirmwareUpdateResult
  //
  //  Purpose:
  //    Integer constant for the LWM2M set firmware update result test step
  //
  //  Related Function:
  //    - <c_LwM2M_stepName_setFirmwareUpdateResult>
  ///////////////////////////////////////////////////////////
  const integer c_LwM2M_stepIdx_setFirmwareUpdateResult := 13;

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_stepName_setFirmwareUpdateState
  //
  //  Purpose:
  //    Charstring constant for the LWM2M set furmware update result test step
  //
  //  Related Function:
  //    - <c_LwM2M_stepName_setFirmwareUpdateResult>
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_stepName_setFirmwareUpdateResult := "LWM2M Applib: setFirmwareUpdateResult";

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_stepIdx_setBootstrapState
  //
  //  Purpose:
  //    Integer constant for the  LWM2M set bootstrap state test step
  //
  //  Related Function:
  //    - <f_LwM2M_step_setBootstrapState>
  ///////////////////////////////////////////////////////////
  const integer c_LwM2M_stepIdx_setBootstrapState := 14;

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_stepName_setBootstrapState
  //
  //  Purpose:
  //    Charstring constant for the LWM2M set bootstrap state test step
  //
  //  Related Function:
  //    - <f_LwM2M_step_setBootstrapState>
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_stepName_setBootstrapState := "LWM2M Applib: setBootstrapState";
  
  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_stepIdx_setNotRegisteredState
  //
  //  Purpose:
  //    Integer constant for the  LWM2M set not registered state test step
  //
  //  Related Function:
  //    - <f_LwM2M_step_setNotRegisteredState>
  ///////////////////////////////////////////////////////////
  const integer c_LwM2M_stepIdx_setNotRegisteredState := 15;

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_stepName_setBootstrapState
  //
  //  Purpose:
  //    Charstring constant for the LWM2M set not registered state test step
  //
  //  Related Function:
  //    - <f_LwM2M_step_setNotRegisteredState>
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_stepName_setNotRegisteredState := "LWM2M Applib: setNotRegisteredState";
  
  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_stepIdx_setBlock1Handling_stateless
  //
  //  Purpose:
  //    Integer constant for the  LWM2M set block1 handling stateless test step
  //
  //  Related Function:
  //    - <f_LwM2M_step_setBlock1Handling_stateless>
  ///////////////////////////////////////////////////////////
  const integer c_LwM2M_stepIdx_setBlock1Handling_stateless := 16;

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_stepName_setBlock1Handling_stateless
  //
  //  Purpose:
  //    Charstring constant for the LWM2M set block1 handling stateless test step
  //
  //  Related Function:
  //    - <f_LwM2M_step_setBlock1Handling_stateless>
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_stepName_setBlock1Handling_stateless := "LWM2M Applib: setBlock1Handling_stateless";
  
  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_stepIdx_setBlock1Handling_atomic
  //
  //  Purpose:
  //    Integer constant for the  LWM2M set block1 handling atomic test step
  //
  //  Related Function:
  //    - <f_LwM2M_step_setBlock1Handling_atomic>
  ///////////////////////////////////////////////////////////
  const integer c_LwM2M_stepIdx_setBlock1Handling_atomic := 17;

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_stepName_setBlock1Handling_atomic
  //
  //  Purpose:
  //    Charstring constant for the LWM2M set block1 handling atomic test step
  //
  //  Related Function:
  //    - <f_LwM2M_step_setBlock1Handling_atomic>
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_stepName_setBlock1Handling_atomic := "LWM2M Applib: setBlock1Handling_atomic";
  
  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_stepIdx_setContentFormats
  //
  //  Purpose:
  //    Integer constant for setting the preferred content formats
  //
  //  Related Function:
  //    - <f_LwM2M_step_setContentFormats>
  ///////////////////////////////////////////////////////////
  const integer c_LwM2M_stepIdx_setContentFormats := 18;

  ///////////////////////////////////////////////////////////
  //  const: c_LwM2M_stepName_setContentFormats
  //
  //  Purpose:
  //    Charstring constant for setting the preferred content format
  //
  //  Related Function:
  //    - <f_LwM2M_step_setContentFormats>
  ///////////////////////////////////////////////////////////
  const charstring c_LwM2M_stepName_setContentFormats := "LWM2M Applib: setContentFormats";
  
  const integer c_LwM2M_stepParam_createObjectInstance_DoNotAddResources := 0;
}
