// This C++ header file was generated by the TTCN-3 compiler
// of the TTCN-3 Test Executor version 11.1.0
// The generation of user and time information were disabled by the -D flag.

// Copyright (c) 2000-2025 Ericsson Telecom AB

// Do not edit this file unless you know what you are doing.

#ifndef L1CTL__PortType_HH
#define L1CTL__PortType_HH

#ifdef TITAN_RUNTIME_2
#error Generated code does not match with used runtime.\
 Code was generated without -R option but -DTITAN_RUNTIME_2 was used.
#endif

/* Header file includes */

#include <TTCN3.hh>
#include "L1CTL_Types.hh"
#include "UD_PortType.hh"
#include "L1CTL_PortType_CtrlFunct.hh"

#if TTCN3_VERSION != 110100
#error Version mismatch detected.\
 Please check the version of the TTCN-3 compiler and the base library.\
 Run make clean and rebuild the project if the version of the compiler changed recently.
#endif

#ifndef LINUX
#error This file should be compiled on LINUX
#endif

#undef L1CTL__PortType_HH
#endif

namespace L1CTL__PortType {

/* Forward declarations of classes */

class L1CTL__connect;
class L1CTL__connect_template;
class L1CTL__connect__result;
class L1CTL__connect__result_template;
class L1CTL__PT;

} /* end of namespace */

#ifndef L1CTL__PortType_HH
#define L1CTL__PortType_HH

namespace L1CTL__PortType {

/* Class definitions */

class L1CTL__connect {
  CHARSTRING field_path;
public:
  L1CTL__connect();
  L1CTL__connect(const CHARSTRING& par_path);
  L1CTL__connect(const L1CTL__connect& other_value);
  inline boolean is_component() { return FALSE; }
  void clean_up();
const TTCN_Typedescriptor_t* get_descriptor() const;
  L1CTL__connect& operator=(const L1CTL__connect& other_value);
  boolean operator==(const L1CTL__connect& other_value) const;
  inline boolean operator!=(const L1CTL__connect& other_value) const
    { return !(*this == other_value); }

  boolean is_bound() const;

inline boolean is_present() const { return is_bound(); }
  boolean is_value() const;

  inline CHARSTRING& path()
    {return field_path;}
  inline const CHARSTRING& path() const
    {return field_path;}
  inline int size_of() const
    {return 1;}
  void log() const;
  void set_implicit_omit();
  void set_param(Module_Param& param);
  void encode_text(Text_Buf& text_buf) const;
  void decode_text(Text_Buf& text_buf);
};

class L1CTL__connect_template : public Base_Template {
struct single_value_struct;
union {
single_value_struct *single_value;
struct {
unsigned int n_values;
L1CTL__connect_template *list_value;
} value_list;
struct {
L1CTL__connect_template* precondition;
L1CTL__connect_template* implied_template;
} implication_;
dynmatch_struct<L1CTL__connect>* dyn_match;
};

void set_specific();
void copy_value(const L1CTL__connect& other_value);
void copy_template(const L1CTL__connect_template& other_value);

public:
L1CTL__connect_template();
L1CTL__connect_template(template_sel other_value);
L1CTL__connect_template(const L1CTL__connect& other_value);
L1CTL__connect_template(const OPTIONAL<L1CTL__connect>& other_value);
L1CTL__connect_template(L1CTL__connect_template* p_precondition, L1CTL__connect_template* p_implied_template);
L1CTL__connect_template(Dynamic_Match_Interface<L1CTL__connect>* p_dyn_match);
L1CTL__connect_template(const L1CTL__connect_template& other_value);
~L1CTL__connect_template();
L1CTL__connect_template& operator=(template_sel other_value);
L1CTL__connect_template& operator=(const L1CTL__connect& other_value);
L1CTL__connect_template& operator=(const OPTIONAL<L1CTL__connect>& other_value);
L1CTL__connect_template& operator=(const L1CTL__connect_template& other_value);
boolean match(const L1CTL__connect& other_value, boolean legacy = FALSE) const;
boolean is_bound() const;
boolean is_value() const;
void clean_up();
L1CTL__connect valueof() const;
void set_type(template_sel template_type, unsigned int list_length);
L1CTL__connect_template& list_item(unsigned int list_index) const;
CHARSTRING_template& path();
const CHARSTRING_template& path() const;
int size_of() const;
void log() const;
void log_match(const L1CTL__connect& match_value, boolean legacy = FALSE) const;
  void set_implicit_omit();
void encode_text(Text_Buf& text_buf) const;
void decode_text(Text_Buf& text_buf);
void set_param(Module_Param& param);
void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
boolean is_present(boolean legacy = FALSE) const;
boolean match_omit(boolean legacy = FALSE) const;
};

class L1CTL__connect__result {
  OPTIONAL< UD__Types::UD__Result__code > field_result__code;
  OPTIONAL< CHARSTRING > field_err;
public:
  L1CTL__connect__result();
  L1CTL__connect__result(const OPTIONAL< UD__Types::UD__Result__code >& par_result__code,
    const OPTIONAL< CHARSTRING >& par_err);
  L1CTL__connect__result(const L1CTL__connect__result& other_value);
  inline boolean is_component() { return FALSE; }
  void clean_up();
const TTCN_Typedescriptor_t* get_descriptor() const;
  L1CTL__connect__result& operator=(const L1CTL__connect__result& other_value);
  boolean operator==(const L1CTL__connect__result& other_value) const;
  inline boolean operator!=(const L1CTL__connect__result& other_value) const
    { return !(*this == other_value); }

  boolean is_bound() const;

inline boolean is_present() const { return is_bound(); }
  boolean is_value() const;

  inline OPTIONAL< UD__Types::UD__Result__code >& result__code()
    {return field_result__code;}
  inline const OPTIONAL< UD__Types::UD__Result__code >& result__code() const
    {return field_result__code;}
  inline OPTIONAL< CHARSTRING >& err()
    {return field_err;}
  inline const OPTIONAL< CHARSTRING >& err() const
    {return field_err;}
  int size_of() const;
  void log() const;
  void set_implicit_omit();
  void set_param(Module_Param& param);
  void encode_text(Text_Buf& text_buf) const;
  void decode_text(Text_Buf& text_buf);
};

class L1CTL__connect__result_template : public Base_Template {
struct single_value_struct;
union {
single_value_struct *single_value;
struct {
unsigned int n_values;
L1CTL__connect__result_template *list_value;
} value_list;
struct {
L1CTL__connect__result_template* precondition;
L1CTL__connect__result_template* implied_template;
} implication_;
dynmatch_struct<L1CTL__connect__result>* dyn_match;
};

void set_specific();
void copy_value(const L1CTL__connect__result& other_value);
void copy_template(const L1CTL__connect__result_template& other_value);

public:
L1CTL__connect__result_template();
L1CTL__connect__result_template(template_sel other_value);
L1CTL__connect__result_template(const L1CTL__connect__result& other_value);
L1CTL__connect__result_template(const OPTIONAL<L1CTL__connect__result>& other_value);
L1CTL__connect__result_template(L1CTL__connect__result_template* p_precondition, L1CTL__connect__result_template* p_implied_template);
L1CTL__connect__result_template(Dynamic_Match_Interface<L1CTL__connect__result>* p_dyn_match);
L1CTL__connect__result_template(const L1CTL__connect__result_template& other_value);
~L1CTL__connect__result_template();
L1CTL__connect__result_template& operator=(template_sel other_value);
L1CTL__connect__result_template& operator=(const L1CTL__connect__result& other_value);
L1CTL__connect__result_template& operator=(const OPTIONAL<L1CTL__connect__result>& other_value);
L1CTL__connect__result_template& operator=(const L1CTL__connect__result_template& other_value);
boolean match(const L1CTL__connect__result& other_value, boolean legacy = FALSE) const;
boolean is_bound() const;
boolean is_value() const;
void clean_up();
L1CTL__connect__result valueof() const;
void set_type(template_sel template_type, unsigned int list_length);
L1CTL__connect__result_template& list_item(unsigned int list_index) const;
UD__Types::UD__Result__code_template& result__code();
const UD__Types::UD__Result__code_template& result__code() const;
CHARSTRING_template& err();
const CHARSTRING_template& err() const;
int size_of() const;
void log() const;
void log_match(const L1CTL__connect__result& match_value, boolean legacy = FALSE) const;
  void set_implicit_omit();
void encode_text(Text_Buf& text_buf) const;
void decode_text(Text_Buf& text_buf);
void set_param(Module_Param& param);
void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
boolean is_present(boolean legacy = FALSE) const;
boolean match_omit(boolean legacy = FALSE) const;
};

class L1CTL__PT : public UD__PortType::UD__PT_PROVIDER {
enum msg_selection { MESSAGE_0, MESSAGE_1, MESSAGE_2, MESSAGE_3 };
struct msg_queue_item : public msg_queue_item_base {
msg_selection item_selection;
union {
L1CTL__Types::L1ctlMessage *message_0;
L1CTL__connect__result *message_1;
UD__Types::UD__listen__result *message_2;
UD__Types::UD__connected *message_3;
};
component sender_component;
};

void remove_msg_queue_head();
protected:
void clear_queue();
public:
L1CTL__PT(const char *par_port_name = NULL);
~L1CTL__PT();
void send(const L1CTL__Types::L1ctlMessage& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const L1CTL__Types::L1ctlMessage& send_par, size_t nof_components, const COMPONENT* destination_components, FLOAT* timestamp_redirect = NULL);
void send(const L1CTL__Types::L1ctlMessage& send_par, boolean broadcast = FALSE, FLOAT* timestamp_redirect = NULL);
void send(const L1CTL__Types::L1ctlMessage_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const L1CTL__Types::L1ctlMessage_template& send_par, size_t nof_components, const COMPONENT* destination_components, FLOAT* timestamp_redirect = NULL);
void send(const L1CTL__Types::L1ctlMessage_template& send_par, boolean broadcast = FALSE, FLOAT* timestamp_redirect = NULL);
void send(const L1CTL__connect& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const L1CTL__connect& send_par, size_t nof_components, const COMPONENT* destination_components, FLOAT* timestamp_redirect = NULL);
void send(const L1CTL__connect& send_par, boolean broadcast = FALSE, FLOAT* timestamp_redirect = NULL);
void send(const L1CTL__connect_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const L1CTL__connect_template& send_par, size_t nof_components, const COMPONENT* destination_components, FLOAT* timestamp_redirect = NULL);
void send(const L1CTL__connect_template& send_par, boolean broadcast = FALSE, FLOAT* timestamp_redirect = NULL);
public:
PORT* get_provider_port();
public:
alt_status receive(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_receive(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status trigger(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status receive(const L1CTL__Types::L1ctlMessage_template& value_template, L1CTL__Types::L1ctlMessage *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_receive(const L1CTL__Types::L1ctlMessage_template& value_template, L1CTL__Types::L1ctlMessage *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status trigger(const L1CTL__Types::L1ctlMessage_template& value_template, L1CTL__Types::L1ctlMessage *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status receive(const L1CTL__connect__result_template& value_template, L1CTL__connect__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_receive(const L1CTL__connect__result_template& value_template, L1CTL__connect__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status trigger(const L1CTL__connect__result_template& value_template, L1CTL__connect__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status receive(const UD__Types::UD__listen__result_template& value_template, UD__Types::UD__listen__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_receive(const UD__Types::UD__listen__result_template& value_template, UD__Types::UD__listen__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status trigger(const UD__Types::UD__listen__result_template& value_template, UD__Types::UD__listen__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status receive(const UD__Types::UD__connected_template& value_template, UD__Types::UD__connected *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_receive(const UD__Types::UD__connected_template& value_template, UD__Types::UD__connected *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status trigger(const UD__Types::UD__connected_template& value_template, UD__Types::UD__connected *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
private:
void incoming_message(const UD__Types::UD__listen__result& incoming_par, component sender_component);
void incoming_message(const UD__Types::UD__connect__result& incoming_par, component sender_component);
void incoming_message(const UD__Types::UD__connected& incoming_par, component sender_component);
void incoming_message(const UD__Types::UD__send__data& incoming_par, component sender_component);
protected:
void incoming_message(const UD__Types::UD__listen__result& incoming_par);
void incoming_message(const UD__Types::UD__connect__result& incoming_par);
void incoming_message(const UD__Types::UD__connected& incoming_par);
void incoming_message(const UD__Types::UD__send__data& incoming_par);
boolean process_message(const char *message_type, Text_Buf& incoming_buf, component sender_component, OCTETSTRING& slider);
};


/* Function prototypes */

extern INTEGER f__L1CTL__getMsgLen(const OCTETSTRING& stream, Socket__API__Definitions::ro__integer& );
extern L1CTL__Types::L1ctlMessage f__L1CTL__rx__data(L1CTL__PT& pt, const GSM__Types::RslChannelNr_template& chan__nr, const GSM__Types::RslLinkId_template& link__id);
extern void f__L1CTL__FBSB(L1CTL__PT& pt, const GSM__Types::GsmBandArfcn& arfcn, const L1CTL__Types::L1ctlCcchMode& ccch__mode, const INTEGER& rxlev__exp);
extern void f__L1CTL__CCCH__MODE(L1CTL__PT& pt, const L1CTL__Types::L1ctlCcchMode& ccch__mode);
extern void f__L1CTL__TCH__MODE(L1CTL__PT& pt, const L1CTL__Types::L1ctlMessage_template& tch__mode__req__tmpl);
extern INTEGER f__L1CTL__RACH(L1CTL__PT& pt, const INTEGER& ra, const INTEGER& combined, const INTEGER& offset, const GSM__Types::RslChannelNr_template& chan__nr, const GSM__Types::RslLinkId_template& link__id);
extern INTEGER f__L1CTL__EXT__RACH(L1CTL__PT& pt, const INTEGER& ra11, const L1CTL__Types::L1ctlRachSynchSeq& seq, const INTEGER& combined, const INTEGER& offset);
extern void f__L1CTL__PARAM(L1CTL__PT& pt, const INTEGER& ta, const INTEGER& tx__power);
extern GSM__RR__Types::ImmediateAssignment f__L1CTL__WAIT__IMM__ASS(L1CTL__PT& pt, const INTEGER& ra, const INTEGER& rach__fn);
extern GSM__RR__Types::ImmediateAssignment f__L1CTL__WAIT__IMM__ASS__TBF__DL(L1CTL__PT& pt, const OCTETSTRING& tlli);
extern void f__L1CTL__DM__EST__REQ__IA(L1CTL__PT& pt, const GSM__RR__Types::ImmediateAssignment& imm__ass, const L1CTL__Types::L1ctlMA& ma);
extern void f__L1CTL__DM__REL__REQ(L1CTL__PT& pt, const GSM__Types::RslChannelNr& chan__nr);
extern void f__L1CTL__RESET(L1CTL__PT& pt, const L1CTL__Types::L1ctlResetType& res__type);
extern void f__L1CTL__CRYPTO__REQ(L1CTL__PT& pt, const GSM__Types::RslChannelNr& chan__nr, const INTEGER& algo, const OCTETSTRING& key);
extern void f__connect__reset(L1CTL__PT& pt, const CHARSTRING& l1ctl__sock__path);
extern void L1CTL__to__UD__connect(const L1CTL__connect& pin, UD__Types::UD__connect& pout);
extern void UD__to__L1CTL__connect__result(const UD__Types::UD__connect__result& pin, L1CTL__connect__result& pout);
extern void L1CTL__to__UD(const L1CTL__Types::L1ctlMessage& pin, UD__Types::UD__send__data& pout);
extern void UD__to__L1CTL(const UD__Types::UD__send__data& pin, L1CTL__Types::L1ctlMessage& pout);
extern void pre_init_module();
extern void post_init_module();
extern boolean set_module_param(Module_Param& param);
extern void log_module_param();

/* Global variable declarations */

extern const XERdescriptor_t L1CTL__connect_path_xer_;
extern const TTCN_Typedescriptor_t L1CTL__connect_path_descr_;
extern const TTCN_Typedescriptor_t L1CTL__connect_descr_;
extern const TTCN_Typedescriptor_t L1CTL__connect__result_descr_;
extern const XERdescriptor_t L1CTL__connect__result_err_xer_;
extern const TTCN_Typedescriptor_t L1CTL__connect__result_err_descr_;
extern const CHARSTRING& m__l1ctl__sock__path;
extern CHARSTRING modulepar_m__l1ctl__sock__path;
extern const GSM__Types::RslChannelNr_template& f__L1CTL__rx__data_chan__nr_defval;
extern GSM__Types::RslChannelNr_template template_f__L1CTL__rx__data_chan__nr_defval;
extern const GSM__Types::RslLinkId_template& f__L1CTL__rx__data_link__id_defval;
extern GSM__Types::RslLinkId_template template_f__L1CTL__rx__data_link__id_defval;
extern const L1CTL__Types::L1ctlCcchMode& f__L1CTL__FBSB_ccch__mode_defval;
extern L1CTL__Types::L1ctlCcchMode const_f__L1CTL__FBSB_ccch__mode_defval;
extern const INTEGER& f__L1CTL__FBSB_rxlev__exp_defval;
extern INTEGER const_f__L1CTL__FBSB_rxlev__exp_defval;
extern const L1CTL__Types::L1ctlMessage_template& f__L1CTL__TCH__MODE_tch__mode__req__tmpl_defval;
extern L1CTL__Types::L1ctlMessage_template template_f__L1CTL__TCH__MODE_tch__mode__req__tmpl_defval;
extern const INTEGER& f__L1CTL__RACH_combined_defval;
extern INTEGER const_f__L1CTL__RACH_combined_defval;
extern const INTEGER& f__L1CTL__RACH_offset_defval;
extern INTEGER const_f__L1CTL__RACH_offset_defval;
extern const GSM__Types::RslChannelNr_template& f__L1CTL__RACH_chan__nr_defval;
extern GSM__Types::RslChannelNr_template template_f__L1CTL__RACH_chan__nr_defval;
extern const GSM__Types::RslLinkId_template& f__L1CTL__RACH_link__id_defval;
extern GSM__Types::RslLinkId_template template_f__L1CTL__RACH_link__id_defval;
extern const INTEGER& f__L1CTL__EXT__RACH_combined_defval;
extern INTEGER const_f__L1CTL__EXT__RACH_combined_defval;
extern const INTEGER& f__L1CTL__EXT__RACH_offset_defval;
extern INTEGER const_f__L1CTL__EXT__RACH_offset_defval;
extern const L1CTL__Types::L1ctlMA& f__L1CTL__DM__EST__REQ__IA_ma_defval;
extern L1CTL__Types::L1ctlMA const_f__L1CTL__DM__EST__REQ__IA_ma_defval;
extern const L1CTL__Types::L1ctlResetType& f__L1CTL__RESET_res__type_defval;
extern L1CTL__Types::L1ctlResetType const_f__L1CTL__RESET_res__type_defval;
extern const CHARSTRING& f__connect__reset_l1ctl__sock__path_defval;
extern CHARSTRING const_f__connect__reset_l1ctl__sock__path_defval;
extern const CHARSTRING cs_0;
extern const unsigned char module_checksum[];
extern TTCN_Module module_object;
extern const RuntimeVersionChecker ver_checker;

} /* end of namespace */

#endif
