///////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2000-2017 Ericsson Telecom 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
///////////////////////////////////////////////////////////////////////////////
//  File:               IOT_LGen_Definitions.ttcn
//  Description:
//  Rev:                R1A
//  Prodnr:             LPA 108 661
//  Updated:            2017-09-01
//  Contact:            http://ttcn.ericsson.se
///////////////////////////////////////////////////////////////////////////////
module IOT_LGen_Definitions
{
  import from EPTF_MQTT_LGen_Definitions all;
  import from EPTF_MQTT_LocalTransport_Definitions all;
  import from EPTF_COAP_LGen_Definitions all;
  import from EPTF_COAP_LocalTransport_Definitions all;
  import from EPTF_LwM2M_LGen_Definitions all;
  import from EPTF_LwM2M_CoapApplibTransport_Definitions all;
  import from EPTF_LwM2M_Object_Definitions all;
  import from EPTF_HTTP_Definitions all;
  import from EPTF_HTTP_Transport_Definitions all;
  import from EPTF_CLL_LGenBase_Definitions all;
  import from EPTF_CLL_LGenBase_ConfigDefinitions all;
  import from EPTF_CLL_ExecCtrl_Definitions all;
  import from InfluxDB_Definitions all;

  modulepar EPTF_LGenBase_FsmTableDeclaratorList tsp_IOT_LGen_FSMs := {}

  const charstring c_IOT_entityType := "IOT_Entity";
  const charstring c_IOT_behaviorType := "IOT_Behavior";

  const integer c_IOT_LGen_Logging_WARNING := 0;
  const integer c_IOT_LGen_Logging_DEBUG := 1;
  const integer c_IOT_LGen_Logging_DEBUGV := 2;
  const integer c_IOT_LGen_Logging_ERROR := 3;

  const integer c_FSM_inconclusive := 0;
  const integer c_FSM_pass := 1;
  const integer c_FSM_fail := 2;
  const integer c_FSM_timeout := 3;

  type component IOT_LGen_CT
  extends EPTF_LGenBase_CT, EPTF_ExecCtrlClient_CT,
  		EPTF_MQTT_LGen_CT, EPTF_MQTT_LocalTransport_CT,
  		EPTF_COAP_LGen_CT, EPTF_COAP_LocalTransport_CT,
  		EPTF_LwM2M_LGen_CT, EPTF_LwM2M_CoapApplibTransport_CT,
  		EPTF_HTTP_LGen_CT, EPTF_HTTP_LocalTransport_CT,
  		InfluxDB_CT
  {
    var charstring v_IOT_LGen_name;
    var integer v_IOT_LGen_idx;

    var integer v_IOT_bIdx;
    var integer v_IOT_LGen_loggingMaskId;

    var integer v_IOT_LGen_localAddressIdx;
    var integer v_IOT_LGen_remoteAddressIdx;

    var integer v_HTTP_portGroupConnectionHandle := -1;

    var LwM2M_DataSamples_DB v_IOT_LGen_DataSamples_DB := c_LwM2M_DataSamples_DB_init;
  }

    const LwM2M_DataSamples c_DataSamples_Latitude :=
  {
    name := "Latitude",
    values :=
    {
      { floatValue := 47.475902 },
      { floatValue := 47.476758 },
      { floatValue := 47.477048 },
      { floatValue := 47.477657 },
      { floatValue := 47.478266 },
      { floatValue := 47.478730 },
      { floatValue := 47.479571 },
      { floatValue := 47.480325 },
      { floatValue := 47.481456 },
      { floatValue := 47.482646 },
      { floatValue := 47.484241 },
      { floatValue := 47.484589 },
      { floatValue := 47.485740 },
      { floatValue := 47.485262 },
      { floatValue := 47.484682 },
      { floatValue := 47.484102 },
      { floatValue := 47.483536 },
      { floatValue := 47.482579 },
      { floatValue := 47.482028 },
      { floatValue := 47.481390 },
      { floatValue := 47.480520 },
      { floatValue := 47.479519 },
      { floatValue := 47.478243 },
      { floatValue := 47.477286 },
      { floatValue := 47.476097 },
      { floatValue := 47.475241 },
      { floatValue := 47.474324 },
      { floatValue := 47.473134 }
    }
  }
  
  const LwM2M_DataSamples c_DataSamples_Longitude :=
  {
    name := "Longitude",
    values :=
    {
      { floatValue := 19.057703 },
      { floatValue := 19.059430 },
      { floatValue := 19.060122 },
      { floatValue := 19.061195 },
      { floatValue := 19.062311 },
      { floatValue := 19.063405 },
      { floatValue := 19.065144 },
      { floatValue := 19.066989 },
      { floatValue := 19.068276 },
      { floatValue := 19.068877 },
      { floatValue := 19.069435 },
      { floatValue := 19.069521 },
      { floatValue := 19.070077 },
      { floatValue := 19.071772 },
      { floatValue := 19.073231 },
      { floatValue := 19.074798 },
      { floatValue := 19.076600 },
      { floatValue := 19.079325 },
      { floatValue := 19.080892 },
      { floatValue := 19.082694 },
      { floatValue := 19.085033 },
      { floatValue := 19.087780 },
      { floatValue := 19.091127 },
      { floatValue := 19.093788 },
      { floatValue := 19.096727 },
      { floatValue := 19.098938 },
      { floatValue := 19.097714 },
      { floatValue := 19.096813 }
    }
  }
}
