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

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

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

#ifndef IPA__Emulation_HH
#define IPA__Emulation_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 "IPA_CodecPort_CtrlFunct.hh"
#include "Osmocom_CTRL_Types.hh"

#if TTCN3_VERSION != 90000
#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 IPA__Emulation_HH
#endif

namespace IPA__Emulation {

/* Forward declarations of classes */

class IpaMode;
class IpaMode_template;
class IpaInitBehavior;
class IpaInitBehavior_template;
class ASP__IPA__Unitdata;
class ASP__IPA__Unitdata_template;
class ASP__IPA__EventType;
class ASP__IPA__EventType_template;
class ASP__IPA__Event;
class ASP__IPA__Event_template;
class IPA__SP__PT;
class IPA__CTRL__PT;
class IPA__CCM__Parameters;
class IPA__CCM__Parameters_template;
class IPA__CFG__disconnect_call;
class IPA__CFG__disconnect_call_redirect;
class IPA__CFG__disconnect_reply;
class IPA__CFG__disconnect_reply_redirect;
class IPA__CFG__disconnect_template;
class IPA__CFG__chg__ccm__enabled_call;
class IPA__CFG__chg__ccm__enabled_call_redirect;
class IPA__CFG__chg__ccm__enabled_reply;
class IPA__CFG__chg__ccm__enabled_reply_redirect;
class IPA__CFG__chg__ccm__enabled_template;
class IPA__CFG__PT;

} /* end of namespace */

#ifndef IPA__Emulation_HH
#define IPA__Emulation_HH

namespace IPA__Emulation {

/* Type definitions */

typedef COMPONENT IPA__Emulation__CT;
typedef COMPONENT_template IPA__Emulation__CT_template;
typedef COMPONENT IPA__EventWaiter__CT;
typedef COMPONENT_template IPA__EventWaiter__CT_template;

/* Class definitions */

class IpaMode : public Base_Type { // enum
friend class IpaMode_template;
public:
enum enum_type { IPA__MODE__CLIENT = 0, IPA__MODE__SERVER = 1, UNKNOWN_VALUE = 2, UNBOUND_VALUE = 3 };
private:
enum_type enum_value;

public:
IpaMode();
IpaMode(int other_value);
IpaMode(enum_type other_value);
IpaMode(const IpaMode& other_value);

IpaMode& operator=(int other_value);
IpaMode& operator=(enum_type other_value);
IpaMode& operator=(const IpaMode& other_value);

boolean operator==(enum_type other_value) const;
boolean operator==(const IpaMode& other_value) const;
inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
inline boolean operator!=(const IpaMode& other_value) const { return !(*this == other_value); }
boolean operator<(enum_type other_value) const;
boolean operator<(const IpaMode& other_value) const;
boolean operator>(enum_type other_value) const;
boolean operator>(const IpaMode& other_value) const;
inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
inline boolean operator<=(const IpaMode& other_value) const { return !(*this > other_value); }
inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
inline boolean operator>=(const IpaMode& other_value) const { return !(*this < other_value); }

static const char *enum_to_str(enum_type enum_par);
static enum_type str_to_enum(const char *str_par);
static boolean is_valid_enum(int int_par);

static int enum2int(enum_type enum_par);
static int enum2int(const IpaMode& enum_par);
int as_int() const { return enum2int(enum_value); }
void from_int(int p_val) { *this = p_val; }
void int2enum(int int_val);
operator enum_type() const;
inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
inline void clean_up(){ enum_value = UNBOUND_VALUE; }
inline boolean is_present() const { return is_bound(); }
void log() const;
void set_param(Module_Param& param);
void encode_text(Text_Buf& text_buf) const;
void decode_text(Text_Buf& text_buf);
};

class IpaMode_template : public Base_Template {
union {
IpaMode::enum_type single_value;
struct {
unsigned int n_values;
IpaMode_template *list_value;
} value_list;
struct {
IpaMode_template* precondition;
IpaMode_template* implied_template;
} implication_;
dynmatch_struct<IpaMode>* dyn_match;
};

void copy_template(const IpaMode_template& other_value);

public:
IpaMode_template();
IpaMode_template(template_sel other_value);
IpaMode_template(int other_value);
IpaMode_template(IpaMode::enum_type other_value);
IpaMode_template(const IpaMode& other_value);
IpaMode_template(const OPTIONAL<IpaMode>& other_value);
IpaMode_template(IpaMode_template* p_precondition, IpaMode_template* p_implied_template);
IpaMode_template(Dynamic_Match_Interface<IpaMode>* p_dyn_match);
IpaMode_template(const IpaMode_template& other_value);
~IpaMode_template();

boolean is_bound() const;
boolean is_value() const;
void clean_up();
IpaMode_template& operator=(template_sel other_value);
IpaMode_template& operator=(int other_value);
IpaMode_template& operator=(IpaMode::enum_type other_value);
IpaMode_template& operator=(const IpaMode& other_value);
IpaMode_template& operator=(const OPTIONAL<IpaMode>& other_value);
IpaMode_template& operator=(const IpaMode_template& other_value);

boolean match(IpaMode::enum_type other_value, boolean legacy = FALSE) const;
boolean match(const IpaMode& other_value, boolean legacy = FALSE) const;
IpaMode::enum_type valueof() const;
void set_type(template_sel template_type, unsigned int list_length);
IpaMode_template& list_item(unsigned int list_index);
void log() const;
void log_match(const IpaMode& match_value, boolean legacy = FALSE) const;
void encode_text(Text_Buf& text_buf) const;
void decode_text(Text_Buf& text_buf);
boolean is_present(boolean legacy = FALSE) const;
boolean match_omit(boolean legacy = FALSE) const;
void set_param(Module_Param& param);
void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
};

class IpaInitBehavior : public Base_Type { // enum
friend class IpaInitBehavior_template;
public:
enum enum_type { IPA__INIT__SEND__IPA__ID__GET = 0, IPA__INIT__SEND__IPA__ID__ACK = 1, UNKNOWN_VALUE = 2, UNBOUND_VALUE = 3 };
private:
enum_type enum_value;

public:
IpaInitBehavior();
IpaInitBehavior(int other_value);
IpaInitBehavior(enum_type other_value);
IpaInitBehavior(const IpaInitBehavior& other_value);

IpaInitBehavior& operator=(int other_value);
IpaInitBehavior& operator=(enum_type other_value);
IpaInitBehavior& operator=(const IpaInitBehavior& other_value);

boolean operator==(enum_type other_value) const;
boolean operator==(const IpaInitBehavior& other_value) const;
inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
inline boolean operator!=(const IpaInitBehavior& other_value) const { return !(*this == other_value); }
boolean operator<(enum_type other_value) const;
boolean operator<(const IpaInitBehavior& other_value) const;
boolean operator>(enum_type other_value) const;
boolean operator>(const IpaInitBehavior& other_value) const;
inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
inline boolean operator<=(const IpaInitBehavior& other_value) const { return !(*this > other_value); }
inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
inline boolean operator>=(const IpaInitBehavior& other_value) const { return !(*this < other_value); }

static const char *enum_to_str(enum_type enum_par);
static enum_type str_to_enum(const char *str_par);
static boolean is_valid_enum(int int_par);

static int enum2int(enum_type enum_par);
static int enum2int(const IpaInitBehavior& enum_par);
int as_int() const { return enum2int(enum_value); }
void from_int(int p_val) { *this = p_val; }
void int2enum(int int_val);
operator enum_type() const;
inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
inline void clean_up(){ enum_value = UNBOUND_VALUE; }
inline boolean is_present() const { return is_bound(); }
void log() const;
void set_param(Module_Param& param);
void encode_text(Text_Buf& text_buf) const;
void decode_text(Text_Buf& text_buf);
};

class IpaInitBehavior_template : public Base_Template {
union {
IpaInitBehavior::enum_type single_value;
struct {
unsigned int n_values;
IpaInitBehavior_template *list_value;
} value_list;
struct {
IpaInitBehavior_template* precondition;
IpaInitBehavior_template* implied_template;
} implication_;
dynmatch_struct<IpaInitBehavior>* dyn_match;
};

void copy_template(const IpaInitBehavior_template& other_value);

public:
IpaInitBehavior_template();
IpaInitBehavior_template(template_sel other_value);
IpaInitBehavior_template(int other_value);
IpaInitBehavior_template(IpaInitBehavior::enum_type other_value);
IpaInitBehavior_template(const IpaInitBehavior& other_value);
IpaInitBehavior_template(const OPTIONAL<IpaInitBehavior>& other_value);
IpaInitBehavior_template(IpaInitBehavior_template* p_precondition, IpaInitBehavior_template* p_implied_template);
IpaInitBehavior_template(Dynamic_Match_Interface<IpaInitBehavior>* p_dyn_match);
IpaInitBehavior_template(const IpaInitBehavior_template& other_value);
~IpaInitBehavior_template();

boolean is_bound() const;
boolean is_value() const;
void clean_up();
IpaInitBehavior_template& operator=(template_sel other_value);
IpaInitBehavior_template& operator=(int other_value);
IpaInitBehavior_template& operator=(IpaInitBehavior::enum_type other_value);
IpaInitBehavior_template& operator=(const IpaInitBehavior& other_value);
IpaInitBehavior_template& operator=(const OPTIONAL<IpaInitBehavior>& other_value);
IpaInitBehavior_template& operator=(const IpaInitBehavior_template& other_value);

boolean match(IpaInitBehavior::enum_type other_value, boolean legacy = FALSE) const;
boolean match(const IpaInitBehavior& other_value, boolean legacy = FALSE) const;
IpaInitBehavior::enum_type valueof() const;
void set_type(template_sel template_type, unsigned int list_length);
IpaInitBehavior_template& list_item(unsigned int list_index);
void log() const;
void log_match(const IpaInitBehavior& match_value, boolean legacy = FALSE) const;
void encode_text(Text_Buf& text_buf) const;
void decode_text(Text_Buf& text_buf);
boolean is_present(boolean legacy = FALSE) const;
boolean match_omit(boolean legacy = FALSE) const;
void set_param(Module_Param& param);
void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
};

class ASP__IPA__Unitdata {
  IPA__Types::IpaStreamId field_streamId;
  OPTIONAL< IPA__Types::IpaExtStreamId > field_streamIdExt;
  OCTETSTRING field_payload;
public:
  ASP__IPA__Unitdata();
  ASP__IPA__Unitdata(const IPA__Types::IpaStreamId& par_streamId,
    const OPTIONAL< IPA__Types::IpaExtStreamId >& par_streamIdExt,
    const OCTETSTRING& par_payload);
  ASP__IPA__Unitdata(const ASP__IPA__Unitdata& other_value);
  inline boolean is_component() { return FALSE; }
  void clean_up();
const TTCN_Typedescriptor_t* get_descriptor() const;
  ASP__IPA__Unitdata& operator=(const ASP__IPA__Unitdata& other_value);
  boolean operator==(const ASP__IPA__Unitdata& other_value) const;
  inline boolean operator!=(const ASP__IPA__Unitdata& other_value) const
    { return !(*this == other_value); }

  boolean is_bound() const;

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

  inline IPA__Types::IpaStreamId& streamId()
    {return field_streamId;}
  inline const IPA__Types::IpaStreamId& streamId() const
    {return field_streamId;}
  inline OPTIONAL< IPA__Types::IpaExtStreamId >& streamIdExt()
    {return field_streamIdExt;}
  inline const OPTIONAL< IPA__Types::IpaExtStreamId >& streamIdExt() const
    {return field_streamIdExt;}
  inline OCTETSTRING& payload()
    {return field_payload;}
  inline const OCTETSTRING& payload() const
    {return field_payload;}
  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 ASP__IPA__Unitdata_template : public Base_Template {
struct single_value_struct;
union {
single_value_struct *single_value;
struct {
unsigned int n_values;
ASP__IPA__Unitdata_template *list_value;
} value_list;
struct {
ASP__IPA__Unitdata_template* precondition;
ASP__IPA__Unitdata_template* implied_template;
} implication_;
dynmatch_struct<ASP__IPA__Unitdata>* dyn_match;
};

void set_specific();
void copy_value(const ASP__IPA__Unitdata& other_value);
void copy_template(const ASP__IPA__Unitdata_template& other_value);

public:
ASP__IPA__Unitdata_template();
ASP__IPA__Unitdata_template(template_sel other_value);
ASP__IPA__Unitdata_template(const ASP__IPA__Unitdata& other_value);
ASP__IPA__Unitdata_template(const OPTIONAL<ASP__IPA__Unitdata>& other_value);
ASP__IPA__Unitdata_template(ASP__IPA__Unitdata_template* p_precondition, ASP__IPA__Unitdata_template* p_implied_template);
ASP__IPA__Unitdata_template(Dynamic_Match_Interface<ASP__IPA__Unitdata>* p_dyn_match);
ASP__IPA__Unitdata_template(const ASP__IPA__Unitdata_template& other_value);
~ASP__IPA__Unitdata_template();
ASP__IPA__Unitdata_template& operator=(template_sel other_value);
ASP__IPA__Unitdata_template& operator=(const ASP__IPA__Unitdata& other_value);
ASP__IPA__Unitdata_template& operator=(const OPTIONAL<ASP__IPA__Unitdata>& other_value);
ASP__IPA__Unitdata_template& operator=(const ASP__IPA__Unitdata_template& other_value);
boolean match(const ASP__IPA__Unitdata& other_value, boolean legacy = FALSE) const;
boolean is_bound() const;
boolean is_value() const;
void clean_up();
ASP__IPA__Unitdata valueof() const;
void set_type(template_sel template_type, unsigned int list_length);
ASP__IPA__Unitdata_template& list_item(unsigned int list_index) const;
IPA__Types::IpaStreamId_template& streamId();
const IPA__Types::IpaStreamId_template& streamId() const;
IPA__Types::IpaExtStreamId_template& streamIdExt();
const IPA__Types::IpaExtStreamId_template& streamIdExt() const;
OCTETSTRING_template& payload();
const OCTETSTRING_template& payload() const;
int size_of() const;
void log() const;
void log_match(const ASP__IPA__Unitdata& match_value, boolean legacy = FALSE) const;
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 ASP__IPA__EventType : public Base_Type { // enum
friend class ASP__IPA__EventType_template;
public:
enum enum_type { ASP__IPA__EVENT__DOWN = 0, ASP__IPA__EVENT__UP = 1, ASP__IPA__EVENT__ID__RESP = 2, ASP__IPA__EVENT__ID__ACK = 3, UNKNOWN_VALUE = 4, UNBOUND_VALUE = 5 };
private:
enum_type enum_value;

public:
ASP__IPA__EventType();
ASP__IPA__EventType(int other_value);
ASP__IPA__EventType(enum_type other_value);
ASP__IPA__EventType(const ASP__IPA__EventType& other_value);

ASP__IPA__EventType& operator=(int other_value);
ASP__IPA__EventType& operator=(enum_type other_value);
ASP__IPA__EventType& operator=(const ASP__IPA__EventType& other_value);

boolean operator==(enum_type other_value) const;
boolean operator==(const ASP__IPA__EventType& other_value) const;
inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
inline boolean operator!=(const ASP__IPA__EventType& other_value) const { return !(*this == other_value); }
boolean operator<(enum_type other_value) const;
boolean operator<(const ASP__IPA__EventType& other_value) const;
boolean operator>(enum_type other_value) const;
boolean operator>(const ASP__IPA__EventType& other_value) const;
inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
inline boolean operator<=(const ASP__IPA__EventType& other_value) const { return !(*this > other_value); }
inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
inline boolean operator>=(const ASP__IPA__EventType& other_value) const { return !(*this < other_value); }

static const char *enum_to_str(enum_type enum_par);
static enum_type str_to_enum(const char *str_par);
static boolean is_valid_enum(int int_par);

static int enum2int(enum_type enum_par);
static int enum2int(const ASP__IPA__EventType& enum_par);
int as_int() const { return enum2int(enum_value); }
void from_int(int p_val) { *this = p_val; }
void int2enum(int int_val);
operator enum_type() const;
inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
inline void clean_up(){ enum_value = UNBOUND_VALUE; }
inline boolean is_present() const { return is_bound(); }
void log() const;
void set_param(Module_Param& param);
void encode_text(Text_Buf& text_buf) const;
void decode_text(Text_Buf& text_buf);
};

class ASP__IPA__EventType_template : public Base_Template {
union {
ASP__IPA__EventType::enum_type single_value;
struct {
unsigned int n_values;
ASP__IPA__EventType_template *list_value;
} value_list;
struct {
ASP__IPA__EventType_template* precondition;
ASP__IPA__EventType_template* implied_template;
} implication_;
dynmatch_struct<ASP__IPA__EventType>* dyn_match;
};

void copy_template(const ASP__IPA__EventType_template& other_value);

public:
ASP__IPA__EventType_template();
ASP__IPA__EventType_template(template_sel other_value);
ASP__IPA__EventType_template(int other_value);
ASP__IPA__EventType_template(ASP__IPA__EventType::enum_type other_value);
ASP__IPA__EventType_template(const ASP__IPA__EventType& other_value);
ASP__IPA__EventType_template(const OPTIONAL<ASP__IPA__EventType>& other_value);
ASP__IPA__EventType_template(ASP__IPA__EventType_template* p_precondition, ASP__IPA__EventType_template* p_implied_template);
ASP__IPA__EventType_template(Dynamic_Match_Interface<ASP__IPA__EventType>* p_dyn_match);
ASP__IPA__EventType_template(const ASP__IPA__EventType_template& other_value);
~ASP__IPA__EventType_template();

boolean is_bound() const;
boolean is_value() const;
void clean_up();
ASP__IPA__EventType_template& operator=(template_sel other_value);
ASP__IPA__EventType_template& operator=(int other_value);
ASP__IPA__EventType_template& operator=(ASP__IPA__EventType::enum_type other_value);
ASP__IPA__EventType_template& operator=(const ASP__IPA__EventType& other_value);
ASP__IPA__EventType_template& operator=(const OPTIONAL<ASP__IPA__EventType>& other_value);
ASP__IPA__EventType_template& operator=(const ASP__IPA__EventType_template& other_value);

boolean match(ASP__IPA__EventType::enum_type other_value, boolean legacy = FALSE) const;
boolean match(const ASP__IPA__EventType& other_value, boolean legacy = FALSE) const;
ASP__IPA__EventType::enum_type valueof() const;
void set_type(template_sel template_type, unsigned int list_length);
ASP__IPA__EventType_template& list_item(unsigned int list_index);
void log() const;
void log_match(const ASP__IPA__EventType& match_value, boolean legacy = FALSE) const;
void encode_text(Text_Buf& text_buf) const;
void decode_text(Text_Buf& text_buf);
boolean is_present(boolean legacy = FALSE) const;
boolean match_omit(boolean legacy = FALSE) const;
void set_param(Module_Param& param);
void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
};

class ASP__IPA__Event {
  ASP__IPA__EventType field_ev__type;
  INTEGER field_conn__id;
  OPTIONAL< IPA__Types::IpaCcmIdResp > field_id__resp;
public:
  ASP__IPA__Event();
  ASP__IPA__Event(const ASP__IPA__EventType& par_ev__type,
    const INTEGER& par_conn__id,
    const OPTIONAL< IPA__Types::IpaCcmIdResp >& par_id__resp);
  ASP__IPA__Event(const ASP__IPA__Event& other_value);
  inline boolean is_component() { return FALSE; }
  void clean_up();
const TTCN_Typedescriptor_t* get_descriptor() const;
  ASP__IPA__Event& operator=(const ASP__IPA__Event& other_value);
  boolean operator==(const ASP__IPA__Event& other_value) const;
  inline boolean operator!=(const ASP__IPA__Event& other_value) const
    { return !(*this == other_value); }

  boolean is_bound() const;

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

  inline ASP__IPA__EventType& ev__type()
    {return field_ev__type;}
  inline const ASP__IPA__EventType& ev__type() const
    {return field_ev__type;}
  inline INTEGER& conn__id()
    {return field_conn__id;}
  inline const INTEGER& conn__id() const
    {return field_conn__id;}
  inline OPTIONAL< IPA__Types::IpaCcmIdResp >& id__resp()
    {return field_id__resp;}
  inline const OPTIONAL< IPA__Types::IpaCcmIdResp >& id__resp() const
    {return field_id__resp;}
  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 ASP__IPA__Event_template : public Base_Template {
struct single_value_struct;
union {
single_value_struct *single_value;
struct {
unsigned int n_values;
ASP__IPA__Event_template *list_value;
} value_list;
struct {
ASP__IPA__Event_template* precondition;
ASP__IPA__Event_template* implied_template;
} implication_;
dynmatch_struct<ASP__IPA__Event>* dyn_match;
};

void set_specific();
void copy_value(const ASP__IPA__Event& other_value);
void copy_template(const ASP__IPA__Event_template& other_value);

public:
ASP__IPA__Event_template();
ASP__IPA__Event_template(template_sel other_value);
ASP__IPA__Event_template(const ASP__IPA__Event& other_value);
ASP__IPA__Event_template(const OPTIONAL<ASP__IPA__Event>& other_value);
ASP__IPA__Event_template(ASP__IPA__Event_template* p_precondition, ASP__IPA__Event_template* p_implied_template);
ASP__IPA__Event_template(Dynamic_Match_Interface<ASP__IPA__Event>* p_dyn_match);
ASP__IPA__Event_template(const ASP__IPA__Event_template& other_value);
~ASP__IPA__Event_template();
ASP__IPA__Event_template& operator=(template_sel other_value);
ASP__IPA__Event_template& operator=(const ASP__IPA__Event& other_value);
ASP__IPA__Event_template& operator=(const OPTIONAL<ASP__IPA__Event>& other_value);
ASP__IPA__Event_template& operator=(const ASP__IPA__Event_template& other_value);
boolean match(const ASP__IPA__Event& other_value, boolean legacy = FALSE) const;
boolean is_bound() const;
boolean is_value() const;
void clean_up();
ASP__IPA__Event valueof() const;
void set_type(template_sel template_type, unsigned int list_length);
ASP__IPA__Event_template& list_item(unsigned int list_index) const;
ASP__IPA__EventType_template& ev__type();
const ASP__IPA__EventType_template& ev__type() const;
INTEGER_template& conn__id();
const INTEGER_template& conn__id() const;
IPA__Types::IpaCcmIdResp_template& id__resp();
const IPA__Types::IpaCcmIdResp_template& id__resp() const;
int size_of() const;
void log() const;
void log_match(const ASP__IPA__Event& match_value, boolean legacy = FALSE) const;
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 IPA__SP__PT : public PORT {
enum msg_selection { MESSAGE_0, MESSAGE_1 };
struct msg_queue_item : public msg_queue_item_base {
msg_selection item_selection;
union {
ASP__IPA__Unitdata *message_0;
ASP__IPA__Event *message_1;
};
component sender_component;
};

void remove_msg_queue_head();
protected:
void clear_queue();
public:
IPA__SP__PT(const char *par_port_name = NULL);
~IPA__SP__PT();
void send(const ASP__IPA__Unitdata& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const ASP__IPA__Unitdata& send_par, FLOAT* timestamp_redirect = NULL);
void send(const ASP__IPA__Unitdata_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const ASP__IPA__Unitdata_template& send_par, FLOAT* timestamp_redirect = NULL);
void send(const ASP__IPA__Event& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const ASP__IPA__Event& send_par, FLOAT* timestamp_redirect = NULL);
void send(const ASP__IPA__Event_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const ASP__IPA__Event_template& send_par, FLOAT* timestamp_redirect = NULL);
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 ASP__IPA__Unitdata_template& value_template, ASP__IPA__Unitdata *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_receive(const ASP__IPA__Unitdata_template& value_template, ASP__IPA__Unitdata *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status trigger(const ASP__IPA__Unitdata_template& value_template, ASP__IPA__Unitdata *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status receive(const ASP__IPA__Event_template& value_template, ASP__IPA__Event *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_receive(const ASP__IPA__Event_template& value_template, ASP__IPA__Event *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status trigger(const ASP__IPA__Event_template& value_template, ASP__IPA__Event *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
private:
void incoming_message(const ASP__IPA__Unitdata& incoming_par, component sender_component);
void incoming_message(const ASP__IPA__Event& incoming_par, component sender_component);
protected:
boolean process_message(const char *message_type, Text_Buf& incoming_buf, component sender_component, OCTETSTRING& slider);
};

class IPA__CTRL__PT : public PORT {
enum msg_selection { MESSAGE_0, MESSAGE_1 };
struct msg_queue_item : public msg_queue_item_base {
msg_selection item_selection;
union {
Osmocom__CTRL__Types::CtrlMessage *message_0;
ASP__IPA__Event *message_1;
};
component sender_component;
};

void remove_msg_queue_head();
protected:
void clear_queue();
public:
IPA__CTRL__PT(const char *par_port_name = NULL);
~IPA__CTRL__PT();
void send(const Osmocom__CTRL__Types::CtrlMessage& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const Osmocom__CTRL__Types::CtrlMessage& send_par, FLOAT* timestamp_redirect = NULL);
void send(const Osmocom__CTRL__Types::CtrlMessage_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const Osmocom__CTRL__Types::CtrlMessage_template& send_par, FLOAT* timestamp_redirect = NULL);
void send(const ASP__IPA__Event& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const ASP__IPA__Event& send_par, FLOAT* timestamp_redirect = NULL);
void send(const ASP__IPA__Event_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void send(const ASP__IPA__Event_template& send_par, FLOAT* timestamp_redirect = NULL);
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 Osmocom__CTRL__Types::CtrlMessage_template& value_template, Osmocom__CTRL__Types::CtrlMessage *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_receive(const Osmocom__CTRL__Types::CtrlMessage_template& value_template, Osmocom__CTRL__Types::CtrlMessage *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status trigger(const Osmocom__CTRL__Types::CtrlMessage_template& value_template, Osmocom__CTRL__Types::CtrlMessage *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status receive(const ASP__IPA__Event_template& value_template, ASP__IPA__Event *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_receive(const ASP__IPA__Event_template& value_template, ASP__IPA__Event *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status trigger(const ASP__IPA__Event_template& value_template, ASP__IPA__Event *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
private:
void incoming_message(const Osmocom__CTRL__Types::CtrlMessage& incoming_par, component sender_component);
void incoming_message(const ASP__IPA__Event& incoming_par, component sender_component);
protected:
boolean process_message(const char *message_type, Text_Buf& incoming_buf, component sender_component, OCTETSTRING& slider);
};

class IPA__CCM__Parameters {
  OPTIONAL< CHARSTRING > field_ser__nr;
  OPTIONAL< CHARSTRING > field_name;
  OPTIONAL< CHARSTRING > field_location1;
  OPTIONAL< CHARSTRING > field_location2;
  OPTIONAL< CHARSTRING > field_equip__version;
  OPTIONAL< CHARSTRING > field_sw__version;
  OPTIONAL< CHARSTRING > field_ip__addr;
  OPTIONAL< CHARSTRING > field_mac__addr;
  OPTIONAL< CHARSTRING > field_unit__id;
  OPTIONAL< CHARSTRING > field_osmo__rand;
public:
  IPA__CCM__Parameters();
  IPA__CCM__Parameters(const OPTIONAL< CHARSTRING >& par_ser__nr,
    const OPTIONAL< CHARSTRING >& par_name,
    const OPTIONAL< CHARSTRING >& par_location1,
    const OPTIONAL< CHARSTRING >& par_location2,
    const OPTIONAL< CHARSTRING >& par_equip__version,
    const OPTIONAL< CHARSTRING >& par_sw__version,
    const OPTIONAL< CHARSTRING >& par_ip__addr,
    const OPTIONAL< CHARSTRING >& par_mac__addr,
    const OPTIONAL< CHARSTRING >& par_unit__id,
    const OPTIONAL< CHARSTRING >& par_osmo__rand);
  IPA__CCM__Parameters(const IPA__CCM__Parameters& other_value);
  inline boolean is_component() { return FALSE; }
  void clean_up();
const TTCN_Typedescriptor_t* get_descriptor() const;
  IPA__CCM__Parameters& operator=(const IPA__CCM__Parameters& other_value);
  boolean operator==(const IPA__CCM__Parameters& other_value) const;
  inline boolean operator!=(const IPA__CCM__Parameters& 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< CHARSTRING >& ser__nr()
    {return field_ser__nr;}
  inline const OPTIONAL< CHARSTRING >& ser__nr() const
    {return field_ser__nr;}
  inline OPTIONAL< CHARSTRING >& name()
    {return field_name;}
  inline const OPTIONAL< CHARSTRING >& name() const
    {return field_name;}
  inline OPTIONAL< CHARSTRING >& location1()
    {return field_location1;}
  inline const OPTIONAL< CHARSTRING >& location1() const
    {return field_location1;}
  inline OPTIONAL< CHARSTRING >& location2()
    {return field_location2;}
  inline const OPTIONAL< CHARSTRING >& location2() const
    {return field_location2;}
  inline OPTIONAL< CHARSTRING >& equip__version()
    {return field_equip__version;}
  inline const OPTIONAL< CHARSTRING >& equip__version() const
    {return field_equip__version;}
  inline OPTIONAL< CHARSTRING >& sw__version()
    {return field_sw__version;}
  inline const OPTIONAL< CHARSTRING >& sw__version() const
    {return field_sw__version;}
  inline OPTIONAL< CHARSTRING >& ip__addr()
    {return field_ip__addr;}
  inline const OPTIONAL< CHARSTRING >& ip__addr() const
    {return field_ip__addr;}
  inline OPTIONAL< CHARSTRING >& mac__addr()
    {return field_mac__addr;}
  inline const OPTIONAL< CHARSTRING >& mac__addr() const
    {return field_mac__addr;}
  inline OPTIONAL< CHARSTRING >& unit__id()
    {return field_unit__id;}
  inline const OPTIONAL< CHARSTRING >& unit__id() const
    {return field_unit__id;}
  inline OPTIONAL< CHARSTRING >& osmo__rand()
    {return field_osmo__rand;}
  inline const OPTIONAL< CHARSTRING >& osmo__rand() const
    {return field_osmo__rand;}
  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 IPA__CCM__Parameters_template : public Base_Template {
struct single_value_struct;
union {
single_value_struct *single_value;
struct {
unsigned int n_values;
IPA__CCM__Parameters_template *list_value;
} value_list;
struct {
IPA__CCM__Parameters_template* precondition;
IPA__CCM__Parameters_template* implied_template;
} implication_;
dynmatch_struct<IPA__CCM__Parameters>* dyn_match;
};

void set_specific();
void copy_value(const IPA__CCM__Parameters& other_value);
void copy_template(const IPA__CCM__Parameters_template& other_value);

public:
IPA__CCM__Parameters_template();
IPA__CCM__Parameters_template(template_sel other_value);
IPA__CCM__Parameters_template(const IPA__CCM__Parameters& other_value);
IPA__CCM__Parameters_template(const OPTIONAL<IPA__CCM__Parameters>& other_value);
IPA__CCM__Parameters_template(IPA__CCM__Parameters_template* p_precondition, IPA__CCM__Parameters_template* p_implied_template);
IPA__CCM__Parameters_template(Dynamic_Match_Interface<IPA__CCM__Parameters>* p_dyn_match);
IPA__CCM__Parameters_template(const IPA__CCM__Parameters_template& other_value);
~IPA__CCM__Parameters_template();
IPA__CCM__Parameters_template& operator=(template_sel other_value);
IPA__CCM__Parameters_template& operator=(const IPA__CCM__Parameters& other_value);
IPA__CCM__Parameters_template& operator=(const OPTIONAL<IPA__CCM__Parameters>& other_value);
IPA__CCM__Parameters_template& operator=(const IPA__CCM__Parameters_template& other_value);
boolean match(const IPA__CCM__Parameters& other_value, boolean legacy = FALSE) const;
boolean is_bound() const;
boolean is_value() const;
void clean_up();
IPA__CCM__Parameters valueof() const;
void set_type(template_sel template_type, unsigned int list_length);
IPA__CCM__Parameters_template& list_item(unsigned int list_index) const;
CHARSTRING_template& ser__nr();
const CHARSTRING_template& ser__nr() const;
CHARSTRING_template& name();
const CHARSTRING_template& name() const;
CHARSTRING_template& location1();
const CHARSTRING_template& location1() const;
CHARSTRING_template& location2();
const CHARSTRING_template& location2() const;
CHARSTRING_template& equip__version();
const CHARSTRING_template& equip__version() const;
CHARSTRING_template& sw__version();
const CHARSTRING_template& sw__version() const;
CHARSTRING_template& ip__addr();
const CHARSTRING_template& ip__addr() const;
CHARSTRING_template& mac__addr();
const CHARSTRING_template& mac__addr() const;
CHARSTRING_template& unit__id();
const CHARSTRING_template& unit__id() const;
CHARSTRING_template& osmo__rand();
const CHARSTRING_template& osmo__rand() const;
int size_of() const;
void log() const;
void log_match(const IPA__CCM__Parameters& match_value, boolean legacy = FALSE) const;
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 IPA__CFG__disconnect_call {
Socket__API__Definitions::Result param_res;
public:
inline Socket__API__Definitions::Result& res() { return param_res; }
inline const Socket__API__Definitions::Result& res() const { return param_res; }
void encode_text(Text_Buf& text_buf) const;
void decode_text(Text_Buf& text_buf);
void log() const;
};

class IPA__CFG__disconnect_call_redirect {
Socket__API__Definitions::Result *ptr_res;
public:
IPA__CFG__disconnect_call_redirect(Socket__API__Definitions::Result *par_res = NULL)
 : ptr_res(par_res) { }
virtual ~IPA__CFG__disconnect_call_redirect() { }
virtual void set_parameters(const IPA__CFG__disconnect_call& call_par) const;
};

class IPA__CFG__disconnect_reply {
Socket__API__Definitions::Result param_res;
public:
inline Socket__API__Definitions::Result& res() { return param_res; }
inline const Socket__API__Definitions::Result& res() const { return param_res; }
void encode_text(Text_Buf& text_buf) const;
void decode_text(Text_Buf& text_buf);
void log() const;
};

class IPA__CFG__disconnect_reply_redirect {
Socket__API__Definitions::Result *ptr_res;
public:
IPA__CFG__disconnect_reply_redirect(Socket__API__Definitions::Result *par_res = NULL)
 : ptr_res(par_res) { }
virtual ~IPA__CFG__disconnect_reply_redirect() { }
virtual void set_parameters(const IPA__CFG__disconnect_reply& reply_par) const;
};

class IPA__CFG__disconnect_template {
Socket__API__Definitions::Result_template param_res;
public:
IPA__CFG__disconnect_template();
inline Socket__API__Definitions::Result_template& res() { return param_res; }
inline const Socket__API__Definitions::Result_template& res() const { return param_res; }
IPA__CFG__disconnect_call create_call() const;
IPA__CFG__disconnect_reply create_reply() const;
boolean match_call(const IPA__CFG__disconnect_call& match_value, boolean legacy = FALSE) const;
boolean match_reply(const IPA__CFG__disconnect_reply& match_value, boolean legacy = FALSE) const;
void log() const;
void log_match_call(const IPA__CFG__disconnect_call& match_value, boolean legacy = FALSE) const;
void log_match_reply(const IPA__CFG__disconnect_reply& match_value, boolean legacy = FALSE) const;
void encode_text(Text_Buf& text_buf) const;
void decode_text(Text_Buf& text_buf);
};

class IPA__CFG__chg__ccm__enabled_call {
BOOLEAN param_res;
public:
inline BOOLEAN& res() { return param_res; }
inline const BOOLEAN& res() const { return param_res; }
void encode_text(Text_Buf& text_buf) const;
void decode_text(Text_Buf& text_buf);
void log() const;
};

class IPA__CFG__chg__ccm__enabled_call_redirect {
BOOLEAN *ptr_res;
public:
IPA__CFG__chg__ccm__enabled_call_redirect(BOOLEAN *par_res = NULL)
 : ptr_res(par_res) { }
virtual ~IPA__CFG__chg__ccm__enabled_call_redirect() { }
virtual void set_parameters(const IPA__CFG__chg__ccm__enabled_call& call_par) const;
};

class IPA__CFG__chg__ccm__enabled_reply {
public:
inline void encode_text(Text_Buf&) const { }
inline void decode_text(Text_Buf&) { }
void log() const;
};

class IPA__CFG__chg__ccm__enabled_reply_redirect {
public:
inline void set_parameters(const IPA__CFG__chg__ccm__enabled_reply&) const {}
};

class IPA__CFG__chg__ccm__enabled_template {
BOOLEAN_template param_res;
public:
IPA__CFG__chg__ccm__enabled_template();
inline BOOLEAN_template& res() { return param_res; }
inline const BOOLEAN_template& res() const { return param_res; }
IPA__CFG__chg__ccm__enabled_call create_call() const;
inline IPA__CFG__chg__ccm__enabled_reply create_reply() const { return IPA__CFG__chg__ccm__enabled_reply(); }
boolean match_call(const IPA__CFG__chg__ccm__enabled_call& match_value, boolean legacy = FALSE) const;
inline boolean match_reply(const IPA__CFG__chg__ccm__enabled_reply&, boolean legacy = FALSE) const { return TRUE; }
void log() const;
void log_match_call(const IPA__CFG__chg__ccm__enabled_call& match_value, boolean legacy = FALSE) const;
void log_match_reply(const IPA__CFG__chg__ccm__enabled_reply& match_value, boolean legacy = FALSE) const;
void encode_text(Text_Buf& text_buf) const;
void decode_text(Text_Buf& text_buf);
};

class IPA__CFG__PT : public PORT {
enum proc_selection { CALL_0, CALL_1, REPLY_0, REPLY_1 };
struct proc_queue_item {
proc_selection item_selection;
union {
IPA__CFG__disconnect_call *call_0;
IPA__CFG__chg__ccm__enabled_call *call_1;
IPA__CFG__disconnect_reply *reply_0;
IPA__CFG__chg__ccm__enabled_reply *reply_1;
};
component sender_component;
proc_queue_item *next_item;
} *proc_queue_head, *proc_queue_tail;
void append_to_proc_queue(proc_queue_item *new_item);
void remove_proc_queue_head();
protected:
void clear_queue();
public:
IPA__CFG__PT(const char *par_port_name = NULL);
~IPA__CFG__PT();
void call(const IPA__CFG__disconnect_template& call_template, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void call(const IPA__CFG__disconnect_template& call_template, FLOAT* timestamp_redirect = NULL);
void call(const IPA__CFG__chg__ccm__enabled_template& call_template, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void call(const IPA__CFG__chg__ccm__enabled_template& call_template, FLOAT* timestamp_redirect = NULL);
void reply(const IPA__CFG__disconnect_template& reply_template, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void reply(const IPA__CFG__disconnect_template& reply_template, FLOAT* timestamp_redirect = NULL);
void reply(const IPA__CFG__chg__ccm__enabled_template& reply_template, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
void reply(const IPA__CFG__chg__ccm__enabled_template& reply_template, FLOAT* timestamp_redirect = NULL);
public:
alt_status getcall(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_getcall(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status getcall(const IPA__CFG__disconnect_template& getcall_template, const COMPONENT_template& sender_template, const IPA__CFG__disconnect_call_redirect& param_ref, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_getcall(const IPA__CFG__disconnect_template& getcall_template, const COMPONENT_template& sender_template, const IPA__CFG__disconnect_call_redirect& param_ref, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status getcall(const IPA__CFG__chg__ccm__enabled_template& getcall_template, const COMPONENT_template& sender_template, const IPA__CFG__chg__ccm__enabled_call_redirect& param_ref, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_getcall(const IPA__CFG__chg__ccm__enabled_template& getcall_template, const COMPONENT_template& sender_template, const IPA__CFG__chg__ccm__enabled_call_redirect& param_ref, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status getreply(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_getreply(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status getreply(const IPA__CFG__disconnect_template& getreply_template, const COMPONENT_template& sender_template, const IPA__CFG__disconnect_reply_redirect& param_ref, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_getreply(const IPA__CFG__disconnect_template& getreply_template, const COMPONENT_template& sender_template, const IPA__CFG__disconnect_reply_redirect& param_ref, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status getreply(const IPA__CFG__chg__ccm__enabled_template& getreply_template, const COMPONENT_template& sender_template, const IPA__CFG__chg__ccm__enabled_reply_redirect& param_ref, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
alt_status check_getreply(const IPA__CFG__chg__ccm__enabled_template& getreply_template, const COMPONENT_template& sender_template, const IPA__CFG__chg__ccm__enabled_reply_redirect& param_ref, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
private:
void incoming_call(const IPA__CFG__disconnect_call& incoming_par, component sender_component);
void incoming_call(const IPA__CFG__chg__ccm__enabled_call& incoming_par, component sender_component);
void incoming_reply(const IPA__CFG__disconnect_reply& incoming_par, component sender_component);
void incoming_reply(const IPA__CFG__chg__ccm__enabled_reply& incoming_par, component sender_component);
protected:
boolean process_call(const char *signature_name, Text_Buf& incoming_buf, component sender_component);
boolean process_reply(const char *signature_name, Text_Buf& incoming_buf, component sender_component);
};


/* Function prototypes */

extern ASP__IPA__Event_template ts__ASP__IPA__EV(const ASP__IPA__EventType& ev__type, const INTEGER& conn__id, const IPA__Types::IpaCcmIdResp_template& id__resp);
extern ASP__IPA__Event_template tr__ASP__IPA__EV(const ASP__IPA__EventType_template& ev__type, const INTEGER_template& conn__id, const IPA__Types::IpaCcmIdResp_template& id__resp);
extern ASP__IPA__Unitdata_template t__ASP__IPA__UD(const IPA__Types::IpaStreamId& sid, const OCTETSTRING& pl, const IPA__Types::IpaExtStreamId_template& esid);
extern void f__ipa__cfg__disconnect(IPA__CFG__PT& pt, Socket__API__Definitions::Result& res);
extern void f__ipa__cfg__chg__ccm__enabled(IPA__CFG__PT& pt, const BOOLEAN& ccm__enabled);
extern void f__connect(const CHARSTRING& remote__host, const INTEGER& remote__port, const CHARSTRING& local__host, const INTEGER& local__port, const IPA__CCM__Parameters& ccm__pars);
extern void start_f__connect(const COMPONENT& component_reference, const CHARSTRING& remote__host, const INTEGER& remote__port, const CHARSTRING& local__host, const INTEGER& local__port, const IPA__CCM__Parameters& ccm__pars);
extern void f__bind(const CHARSTRING& local__host, const INTEGER& local__port, const IPA__CCM__Parameters& ccm__pars);
extern void start_f__bind(const COMPONENT& component_reference, const CHARSTRING& local__host, const INTEGER& local__port, const IPA__CCM__Parameters& ccm__pars);
extern Socket__API__Definitions::Result f__close();
extern void start_f__close(const COMPONENT& component_reference);
extern IPA__Types::IpaCcmRespPart_template t__IdRespPart(const IPA__Types::IpaCcmIdTag& tag, const CHARSTRING& payload);
extern void f__send__IPA__EVT(const ASP__IPA__Event_template& evt);
extern void start_f__send__IPA__EVT(const COMPONENT& component_reference, const ASP__IPA__Event_template& evt);
extern IPA__Types::PDU__IPA__CCM f__ccm__make__id__resp(const IPA__Types::PDU__IPA__CCM& get);
extern void start_f__ccm__make__id__resp(const COMPONENT& component_reference, const IPA__Types::PDU__IPA__CCM& get);
extern void f__ccm__tx(const IPA__Types::PDU__IPA__CCM& ccm, const INTEGER& conn__id);
extern void start_f__ccm__tx(const COMPONENT& component_reference, const IPA__Types::PDU__IPA__CCM& ccm, const INTEGER& conn__id);
extern void f__ccm__rx__client(const IPA__Types::PDU__IPA__CCM& ccm);
extern void start_f__ccm__rx__client(const COMPONENT& component_reference, const IPA__Types::PDU__IPA__CCM& ccm);
extern void f__ccm__rx__server(const IPA__Types::PDU__IPA__CCM& ccm, const INTEGER& conn__id);
extern void start_f__ccm__rx__server(const COMPONENT& component_reference, const IPA__Types::PDU__IPA__CCM& ccm, const INTEGER& conn__id);
extern ASP__IPA__Unitdata f__to__asp(const IPA__CodecPort::IPA__RecvFrom& ipa__rx);
extern IPA__CodecPort::IPA__Send f__from__asp(const INTEGER& connId, const ASP__IPA__Unitdata& ipa__tx);
extern void main__client(const CHARSTRING& remote__host, const INTEGER& remote__port, const CHARSTRING& local__host, const INTEGER& local__port, const IPA__CCM__Parameters& ccm__pars, const BOOLEAN& ccm__enabled);
extern void start_main__client(const COMPONENT& component_reference, const CHARSTRING& remote__host, const INTEGER& remote__port, const CHARSTRING& local__host, const INTEGER& local__port, const IPA__CCM__Parameters& ccm__pars, const BOOLEAN& ccm__enabled);
extern void main__server(const CHARSTRING& local__host, const INTEGER& local__port, const BOOLEAN& ccm__enabled, const IpaInitBehavior& init__behavior, const BOOLEAN& server__stop__on__ipa__ev__down);
extern void start_main__server(const COMPONENT& component_reference, const CHARSTRING& local__host, const INTEGER& local__port, const BOOLEAN& ccm__enabled, const IpaInitBehavior& init__behavior, const BOOLEAN& server__stop__on__ipa__ev__down);
extern void f__ctrl__to__user(const OCTETSTRING& msg);
extern void start_f__ctrl__to__user(const COMPONENT& component_reference, const OCTETSTRING& msg);
extern INTEGER f__ipa__conn__id();
extern void start_f__ipa__conn__id(const COMPONENT& component_reference);
extern void ScanEvents();
extern void start_ScanEvents(const COMPONENT& component_reference);
extern void waiter__main(const ASP__IPA__Event_template& wait__for);
extern void start_waiter__main(const COMPONENT& component_reference, const ASP__IPA__Event_template& wait__for);
extern void pre_init_module();
extern void post_init_module();
extern boolean set_module_param(Module_Param& param);
extern void log_module_param();
extern boolean init_comp_type(const char *component_type, boolean init_base_comps);
extern boolean init_system_port(const char* component_type, const char* port_name);
extern boolean start_ptc_function(const char *function_name, Text_Buf& function_arguments);

/* Global variable declarations */

extern const BOOLEAN& mp__ipa__mgcp__uses__osmo__ext;
extern BOOLEAN modulepar_mp__ipa__mgcp__uses__osmo__ext;
extern const TTCN_Typedescriptor_t IpaMode_descr_;
extern const TTCN_Typedescriptor_t IpaInitBehavior_descr_;
extern UNIVERSAL_CHARSTRING ASP__IPA__Unitdata_streamId_default_coding;
extern const XERdescriptor_t ASP__IPA__Unitdata_payload_xer_;
extern const TTCN_OERdescriptor_t ASP__IPA__Unitdata_payload_oer_;
extern const TTCN_Typedescriptor_t ASP__IPA__Unitdata_payload_descr_;
extern const TTCN_Typedescriptor_t ASP__IPA__Unitdata_descr_;
extern UNIVERSAL_CHARSTRING ASP__IPA__Unitdata_streamIdExt_default_coding;
extern const TTCN_Typedescriptor_t ASP__IPA__EventType_descr_;
extern const XERdescriptor_t ASP__IPA__Event_conn__id_xer_;
extern const TTCN_Typedescriptor_t ASP__IPA__Event_conn__id_descr_;
extern const TTCN_Typedescriptor_t ASP__IPA__Event_descr_;
extern UNIVERSAL_CHARSTRING ASP__IPA__Event_id__resp_default_coding;
extern const IPA__Types::IpaCcmIdResp_template& ts__ASP__IPA__EV_id__resp_defval;
extern IPA__Types::IpaCcmIdResp_template template_ts__ASP__IPA__EV_id__resp_defval;
extern const INTEGER_template& tr__ASP__IPA__EV_conn__id_defval;
extern INTEGER_template template_tr__ASP__IPA__EV_conn__id_defval;
extern const IPA__Types::IpaCcmIdResp_template& tr__ASP__IPA__EV_id__resp_defval;
extern IPA__Types::IpaCcmIdResp_template template_tr__ASP__IPA__EV_id__resp_defval;
extern const IPA__Types::IpaExtStreamId_template& t__ASP__IPA__UD_esid_defval;
extern IPA__Types::IpaExtStreamId_template template_t__ASP__IPA__UD_esid_defval;
extern const TTCN_Typedescriptor_t& IPA__Emulation__CT_descr_;
extern IPA__CodecPort::IPA__CODEC__PT IPA__Emulation__CT_component_IPA__PORT;
extern IPA__CFG__PT IPA__Emulation__CT_component_CFG__PORT;
extern IPA__CTRL__PT IPA__Emulation__CT_component_IPA__CTRL__PORT;
extern IPA__SP__PT IPA__Emulation__CT_component_IPA__SP__PORT;
extern BOOLEAN IPA__Emulation__CT_component_g__initialized;
extern BOOLEAN IPA__Emulation__CT_component_g__is__bsc__mgw;
extern INTEGER IPA__Emulation__CT_component_g__self__conn__id;
extern INTEGER IPA__Emulation__CT_component_g__last__conn__id;
extern IpaMode IPA__Emulation__CT_component_g__mode;
extern BOOLEAN IPA__Emulation__CT_component_g__ccm__enabled;
extern IpaInitBehavior IPA__Emulation__CT_component_g__init__behavior;
extern BOOLEAN IPA__Emulation__CT_component_g__server__stop__on__ipa__ev__down;
extern const TTCN_Typedescriptor_t IPA__CCM__Parameters_descr_;
extern const XERdescriptor_t IPA__CCM__Parameters_ser__nr_xer_;
extern const TTCN_Typedescriptor_t IPA__CCM__Parameters_ser__nr_descr_;
extern const XERdescriptor_t IPA__CCM__Parameters_name_xer_;
extern const TTCN_Typedescriptor_t IPA__CCM__Parameters_name_descr_;
extern const XERdescriptor_t IPA__CCM__Parameters_location1_xer_;
extern const TTCN_Typedescriptor_t IPA__CCM__Parameters_location1_descr_;
extern const XERdescriptor_t IPA__CCM__Parameters_location2_xer_;
extern const TTCN_Typedescriptor_t IPA__CCM__Parameters_location2_descr_;
extern const XERdescriptor_t IPA__CCM__Parameters_equip__version_xer_;
extern const TTCN_Typedescriptor_t IPA__CCM__Parameters_equip__version_descr_;
extern const XERdescriptor_t IPA__CCM__Parameters_sw__version_xer_;
extern const TTCN_Typedescriptor_t IPA__CCM__Parameters_sw__version_descr_;
extern const XERdescriptor_t IPA__CCM__Parameters_ip__addr_xer_;
extern const TTCN_Typedescriptor_t IPA__CCM__Parameters_ip__addr_descr_;
extern const XERdescriptor_t IPA__CCM__Parameters_mac__addr_xer_;
extern const TTCN_Typedescriptor_t IPA__CCM__Parameters_mac__addr_descr_;
extern const XERdescriptor_t IPA__CCM__Parameters_unit__id_xer_;
extern const TTCN_Typedescriptor_t IPA__CCM__Parameters_unit__id_descr_;
extern const XERdescriptor_t IPA__CCM__Parameters_osmo__rand_xer_;
extern const TTCN_Typedescriptor_t IPA__CCM__Parameters_osmo__rand_descr_;
extern IPA__CCM__Parameters IPA__Emulation__CT_component_g__ccm__pars;
extern const IPA__CCM__Parameters& c__IPA__default__ccm__pars;
extern IPA__CCM__Parameters const_c__IPA__default__ccm__pars;
extern const IPA__CCM__Parameters& f__connect_ccm__pars_defval;
extern IPA__CCM__Parameters const_f__connect_ccm__pars_defval;
extern const IPA__CCM__Parameters& f__bind_ccm__pars_defval;
extern IPA__CCM__Parameters const_f__bind_ccm__pars_defval;
extern const IPA__Types::PDU__IPA__CCM_template& ts__IPA__PONG;
extern IPA__Types::PDU__IPA__CCM_template template_ts__IPA__PONG;
extern const IPA__Types::PDU__IPA__CCM_template& ts__IPA__ACK;
extern IPA__Types::PDU__IPA__CCM_template template_ts__IPA__ACK;
extern const IPA__Types::PDU__IPA__CCM_template& ts__IPA__ID__GET;
extern IPA__Types::PDU__IPA__CCM_template template_ts__IPA__ID__GET;
extern const IPA__Types::PDU__IPA__CCM_template& tr__IPA__ID__RESP;
extern IPA__Types::PDU__IPA__CCM_template template_tr__IPA__ID__RESP;
extern const IPA__CCM__Parameters& main__client_ccm__pars_defval;
extern IPA__CCM__Parameters const_main__client_ccm__pars_defval;
extern const BOOLEAN& main__client_ccm__enabled_defval;
extern BOOLEAN const_main__client_ccm__enabled_defval;
extern const BOOLEAN& main__server_ccm__enabled_defval;
extern BOOLEAN const_main__server_ccm__enabled_defval;
extern const IpaInitBehavior& main__server_init__behavior_defval;
extern IpaInitBehavior const_main__server_init__behavior_defval;
extern const BOOLEAN& main__server_server__stop__on__ipa__ev__down_defval;
extern BOOLEAN const_main__server_server__stop__on__ipa__ev__down_defval;
extern const TTCN_Typedescriptor_t& IPA__EventWaiter__CT_descr_;
extern IPA__SP__PT IPA__EventWaiter__CT_component_IPA__SP__PORT;
extern const ASP__IPA__Event_template& waiter__main_wait__for_defval;
extern ASP__IPA__Event_template template_waiter__main_wait__for_defval;
extern const OCTETSTRING os_0;
extern const CHARSTRING cs_0,
cs_2,
cs_3,
cs_1,
cs_4;
extern const unsigned char module_checksum[];
extern TTCN_Module module_object;
extern const RuntimeVersionChecker ver_checker;

} /* end of namespace */

#endif
