titan support: Rebuild C++ source from ttcn using ttcn3_compiler

This commit is contained in:
Harald Welte 2019-05-20 17:00:39 +02:00
parent db8c4ca598
commit 71f0f1d94d
14 changed files with 3241 additions and 93656 deletions

View File

@ -25,3 +25,4 @@ titan/titan.a:
clean:
rm -f *.o libudtrace.so
$(MAKE) -C titan clean

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

329
titan/General_Types.ttcn Normal file
View File

@ -0,0 +1,329 @@
/******************************************************************************
* 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
*
* Contributors:
* Balasko, Jeno
* Baranyi, Botond
*
******************************************************************************/
//
// File: General_Types.ttcn
// Rev: <RnXnn>
// Prodnr: CNL 113 368
// Updated: 2012-11-06
// Contact: http://ttcn.ericsson.se
// Reference:
module General_Types
{
group SimpleNativeTypes {
//****************************************************
// Bitstrings
//****************************************************
//bitstring with fixed length
type bitstring BIT1n length(1) with { variant "" };
type bitstring BIT2n length(2) with { variant "" };
type bitstring BIT3n length(3) with { variant "" };
type bitstring BIT4n length(4) with { variant "" };
type bitstring BIT5n length(5) with { variant "" };
type bitstring BIT6n length(6) with { variant "" };
type bitstring BIT7n length(7) with { variant "" };
type bitstring BIT8n length(8) with { variant "" };
type bitstring BIT9n length(9) with { variant "" };
type bitstring BIT12n length(12) with { variant "" };
type bitstring BIT14n length(14) with { variant "" };
type bitstring BIT15n length(15) with { variant "" };
type bitstring BIT16n length(16) with { variant "" };
type bitstring BIT56n length(56) with { variant "" };
//bitstring with length interval
type bitstring BIT14_24n length(14..24) with { variant "" };
//bitstring to be padded with fixed length
type bitstring BIT1np length(1) with { variant "" };
type bitstring BIT2np length(2) with { variant "" };
type bitstring BIT3np length(3) with { variant "" };
type bitstring BIT4np length(4) with { variant "" };
type bitstring BIT5np length(5) with { variant "" };
type bitstring BIT6np length(6) with { variant "" };
type bitstring BIT7np length(7) with { variant "" };
type bitstring BIT15np length(15) with { variant "" };
//bitstring with fixed length
type bitstring BIT1 length(1) with { variant "FIELDLENGTH(1)" };
type bitstring BIT2 length(2) with { variant "FIELDLENGTH(2)" };
type bitstring BIT3 length(3) with { variant "FIELDLENGTH(3)" };
type bitstring BIT4 length(4) with { variant "FIELDLENGTH(4)" };
type bitstring BIT5 length(5) with { variant "FIELDLENGTH(5)" };
type bitstring BIT6 length(6) with { variant "FIELDLENGTH(6)" };
type bitstring BIT7 length(7) with { variant "FIELDLENGTH(7)" };
type bitstring BIT8 length(8) with { variant "FIELDLENGTH(8)" };
type bitstring BIT9 length(9) with { variant "FIELDLENGTH(9)" };
type bitstring BIT10 length(10) with { variant "FIELDLENGTH(10)" };
type bitstring BIT11 length(11) with { variant "FIELDLENGTH(11)" };
type bitstring BIT12 length(12) with { variant "FIELDLENGTH(12)" };
type bitstring BIT13 length(13) with { variant "FIELDLENGTH(13)" };
type bitstring BIT14 length(14) with { variant "FIELDLENGTH(14)" };
type bitstring BIT15 length(15) with { variant "FIELDLENGTH(15)" };
type bitstring BIT16 length(16) with { variant "FIELDLENGTH(16)" };
type bitstring BIT24 length(24) with { variant "FIELDLENGTH(24)" };
type bitstring BIT28 length(28) with { variant "FIELDLENGTH(28)" };
type bitstring BIT29 length(29) with { variant "FIELDLENGTH(29)" };
type bitstring BIT30 length(30) with { variant "FIELDLENGTH(30)" };
type bitstring BIT31 length(31) with { variant "FIELDLENGTH(31)" };
type bitstring BIT32 length(32) with { variant "FIELDLENGTH(32)" };
type bitstring BIT56 length(56) with { variant "FIELDLENGTH(56)" };
//****************************************************
// Octetstrings
//****************************************************
//octetstring with fixed length
type octetstring OCT0n length(0) with { variant "" };
type octetstring OCT1n length(1) with { variant "" };
type octetstring OCT2n length(2) with { variant "" };
type octetstring OCT3n length(3) with { variant "" };
type octetstring OCT4n length(4) with { variant "" };
type octetstring OCT5n length(5) with { variant "" };
type octetstring OCT6n length(6) with { variant "" };
type octetstring OCT7n length(7) with { variant "" };
type octetstring OCT8n length(8) with { variant "" };
type octetstring OCT9n length(9) with { variant "" };
type octetstring OCT10n length(10) with { variant "" };
type octetstring OCT11n length(11) with { variant "" };
type octetstring OCT12n length(12) with { variant "" };
type octetstring OCT13n length(13) with { variant "" };
type octetstring OCT14n length(14) with { variant "" };
type octetstring OCT15n length(15) with { variant "" };
type octetstring OCT16n length(16) with { variant "" };
type octetstring OCT17n length(17) with { variant "" };
type octetstring OCT18n length(18) with { variant "" };
type octetstring OCT19n length(19) with { variant "" };
type octetstring OCT20n length(20) with { variant "" };
type octetstring OCT28n length(28) with { variant "" };
type octetstring OCT32n length(32) with { variant "" };
type octetstring OCT34n length(34) with { variant "" };
type octetstring OCT46n length(46) with { variant "" };
type octetstring OCT50n length(50) with { variant "" };
type octetstring OCT69n length(69) with { variant "" };
type octetstring OCT100n length(100) with { variant "" };
type octetstring OCT128n length(128) with { variant "" };
type octetstring OCT500n length(500) with { variant "" };
type octetstring OCTNn with { variant "" };
//octetstring with length interval
type octetstring OCT1_3n length(1..3) with { variant "" };
type octetstring OCT1_4n length(1..4) with { variant "" };
type octetstring OCT1_5n length(1..5) with { variant "" };
type octetstring OCT1_6n length(1..6) with { variant "" };
type octetstring OCT1_7n length(1..7) with { variant "" };
type octetstring OCT1_8n length(1..8) with { variant "" };
type octetstring OCT1_12n length(1..12) with { variant "" };
type octetstring OCT1_15n length(1..15) with { variant "" };
type octetstring OCT1_16n length(1..16) with { variant "" };
type octetstring OCT1_18n length(1..18) with { variant "" };
type octetstring OCT1_20n length(1..20) with { variant "" };
type octetstring OCT1_24n length(1..24) with { variant "" };
type octetstring OCT1_32n length(1..32) with { variant "" };
type octetstring OCT1_34n length(1..34) with { variant "" };
type octetstring OCT1_46n length(1..46) with { variant "" };
type octetstring OCT1_50n length(1..50) with { variant "" };
type octetstring OCT1_112n length(1..112) with { variant "" };
type octetstring OCT1_127n length(1..127) with { variant "" };
type octetstring OCT1_128n length(1..128) with { variant "" };
type octetstring OCT1_172n length(1..172) with { variant "" };
type octetstring OCT3_5n length(3..5) with { variant "" };
type octetstring OCT3_7n length(3..7) with { variant "" };
type octetstring OCT3_8n length(3..8) with { variant "" };
type octetstring OCT3_14n length(3..14) with { variant "" };
type octetstring OCT3_17n length(3..17) with { variant "" };
type octetstring OCT4_8n length(4..8) with { variant "" };
//****************************************************
// Charstrings
//****************************************************
//charstring with fixed length
type charstring CHAR4 length (4);
//****************************************************
// Hexstrings
//****************************************************
//hexstring with fixed length
type hexstring HEX4n length(4) with { variant "" };
type hexstring HEX6n length(6) with { variant "" };
type hexstring HEX8n length(8) with { variant "" };
type hexstring HEX15n length(15) with { variant "" };
type hexstring HEX16n length(16) with { variant "" };
type hexstring HEX24n length(24) with { variant "" };
//hexstring with length interval
type hexstring HEX0_3n length(0..3) with { variant "" };
type hexstring HEX0_18n length(0..18) with { variant "" };
type hexstring HEX1_20n length(1..20) with { variant "" };
type hexstring HEX1_34n length(1..34) with { variant "" };
//****************************************************
// Integers
//****************************************************
//integer with fixed bit number
type integer INT3nb (0..7) with { variant "" };
type integer INT4nb (0..15) with { variant "" };
type integer INT5nb (0..31) with { variant "" };
type integer INT8nb (0..255) with { variant "" };
//integer with fixed bit number and with padding
type integer INT2nbp (0..3) with { variant "" };
type integer INT1nbp (0..1) with { variant "" };
type integer INT3nbp (0..7) with { variant "" };
type integer INT5nbp (0..31) with { variant "" };
type integer INT9nbp (0..511) with { variant "" };
type integer INT13nbp (0..8191) with { variant "" };
type integer INT15nbp (0..32767) with { variant "" };
} // end group NativeTypes
//****************************************************
//****************************************************
// RAW Encoded Types
//****************************************************
//****************************************************
group SimpleRAWEncodedTypes {
//****************************************************
// Bitstrings
//****************************************************
//bitstring with fixed length
type bitstring BIT6_BO_LAST length (6) with {variant "BYTEORDER(last)"};
type bitstring BIT16_BO_LAST length (16) with {variant "BYTEORDER(last)"};
type bitstring BIT32_BO_LAST length (32) with {variant "BYTEORDER(last)"};
//****************************************************
// Octetstrings
//****************************************************
//octetstring with fixed length
type octetstring Dummy length(0) with { variant "FIELDLENGTH(0)" };
type octetstring OCT0 length(0) with { variant "FIELDLENGTH(0)" };
type octetstring OCT1 length(1) with { variant "FIELDLENGTH(1)" };
type octetstring OCT2 length(2) with { variant "FIELDLENGTH(2)" };
type octetstring OCT3 length(3) with { variant "FIELDLENGTH(3)" };
type octetstring OCT4 length(4) with { variant "FIELDLENGTH(4)" };
type octetstring OCT5 length(5) with { variant "FIELDLENGTH(5)" };
type octetstring OCT6 length(6) with { variant "FIELDLENGTH(6)" };
type octetstring OCT7 length(7) with { variant "FIELDLENGTH(7)" };
type octetstring OCT8 length(8) with { variant "FIELDLENGTH(8)" };
type octetstring OCT9 length(9) with { variant "FIELDLENGTH(9)" };
type octetstring OCT10 length(10) with { variant "FIELDLENGTH(10)" };
type octetstring OCT11 length(11) with { variant "FIELDLENGTH(11)" };
type octetstring OCT12 length(12) with { variant "FIELDLENGTH(12)" };
type octetstring OCT13 length(13) with { variant "FIELDLENGTH(13)" };
type octetstring OCT14 length(14) with { variant "FIELDLENGTH(14)" };
type octetstring OCT15 length(15) with { variant "FIELDLENGTH(15)" };
type octetstring OCT16 length(16) with { variant "FIELDLENGTH(16)" };
type octetstring OCT17 length(17) with { variant "FIELDLENGTH(17)" };
type octetstring OCT18 length(18) with { variant "FIELDLENGTH(18)" };
type octetstring OCT19 length(19) with { variant "FIELDLENGTH(19)" };
type octetstring OCT20 length(20) with { variant "FIELDLENGTH(20)" };
type octetstring OCT22 length(22) with { variant "FIELDLENGTH(22)" };
type octetstring OCT32 length(32) with { variant "FIELDLENGTH(32)" };
type octetstring OCT34 length(34) with { variant "FIELDLENGTH(34)" };
type octetstring OCT46 length(46) with { variant "FIELDLENGTH(46)" };
//octetstring with length interval
type octetstring OCT1_260 length(1..260) with { variant "" };
type octetstring OCT1_8 length(1..8) with { variant "" };
type octetstring OCT1_12 length(1..12) with { variant "" };
type octetstring OCT1_32 length(1..32) with { variant "" };
type octetstring OCT1_50 length(1..50) with { variant "" };
type octetstring OCT3_8 length(3..8) with { variant "" };
type octetstring OCTN with { variant "" };
//****************************************************
// Hexstrings
//****************************************************
//hexstring with fixed length
type hexstring HEX1 length(1) with {variant "FIELDLENGTH(1)"};
//hexstring with length interval
type hexstring HEX0_16 length(0..16) with { variant "" };
type hexstring HEX5_16 length(5..16) with { variant "" };
type hexstring HEX1_32 length(1..32) with { variant "" };
//****************************************************
// Integers
//****************************************************
//integer with fixed octet number
type integer INT1 (0..255) with { variant "FIELDLENGTH(8)" };
type integer LIN1 (0..255) with { variant "FIELDLENGTH(8)" };
type integer LIN2 (0..65535) with { variant "FIELDLENGTH(16)" };
type integer LIN2_BO_LAST (0..65535) with { variant "FIELDLENGTH(16), COMP(nosign), BYTEORDER(last)" };
type integer LIN3_BO_LAST (0..16777215) with { variant "FIELDLENGTH(24), COMP(nosign), BYTEORDER(last)" };
type integer LIN4_BO_LAST (0..4294967295) with { variant "FIELDLENGTH(32), COMP(nosign), BYTEORDER(last)" };
//integer with fixed bit number
type integer INT1b (0..1) with { variant "FIELDLENGTH(1)" };
type integer INT2b (0..3) with { variant "FIELDLENGTH(2)" };
type integer INT3b (0..7) with { variant "FIELDLENGTH(3)" };
type integer INT4b (0..15) with { variant "FIELDLENGTH(4)" };
type integer INT5b (0..31) with { variant "FIELDLENGTH(5)" };
type integer INT6b (0..63) with { variant "FIELDLENGTH(6)" };
type integer INT7b (0..127) with { variant "FIELDLENGTH(7)" };
type integer INT11b_BO_LAST ( 0 .. 2047 ) with { variant "FIELDLENGTH(11), COMP(nosign), BYTEORDER(last)" };
type integer INT12b_BO_LAST ( 0 .. 4095 ) with { variant "FIELDLENGTH(12), COMP(nosign), BYTEORDER(last)" };
type integer INT13b_BO_LAST ( 0 .. 8191 ) with { variant "FIELDLENGTH(13), COMP(nosign), BYTEORDER(last)" };
type integer INT14b_BO_LAST ( 0 .. 16383 ) with { variant "FIELDLENGTH(14), COMP(nosign), BYTEORDER(last)" };
type integer INT18b_BO_LAST ( 0 .. 262143 ) with { variant "FIELDLENGTH(18), COMP(nosign), BYTEORDER(last)" };
type integer INT20b_BO_LAST ( 0 .. 1048575 ) with { variant "FIELDLENGTH(20), COMP(nosign), BYTEORDER(last)" };
type integer INT31b_BO_LAST ( 0 .. 2147483647 ) with { variant "FIELDLENGTH(31), COMP(nosign), BYTEORDER(last)" };
//****************************************************
// Structures
//****************************************************
//integer record
type record of integer Integers with { variant "" };
type record of Integers Integer_array with { variant "" };
} // end group SimpleRAWEncodedTypes
group ComponentTypes {
type component Dummy_comptype {}
type component Dummy_CT {}
} // end group ComponentTypes
group CompositeTypes {
type enumerated Protocols
{ mtp3, sccp, isup, bicc, qaal2, gcp, bssap, bssmap, ranap, dtap }
type record of OCT1 OCT1List with { variant "" };
type record of OCT2 OCT2List with { variant "" };
type record of OCT3 OCT3List with { variant "" };
type record of OCT4 OCT4List with { variant "" };
type record of OCT5 OCT5List with { variant "" };
type record of OCT6 OCT6List with { variant "" };
type record of OCT7 OCT7List with { variant "" };
type record of Dummy_comptype ListOfDummy_comptype;
type record of Dummy_CT ListOfDummy_CT;
type record of Protocols ProtocolList with { variant "" };
} // end group CompositeTypes
} with { encode "RAW" } /* End of module General_Types */

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

1939
titan/MNCC_Types.ttcn Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,3 +1,8 @@
TYPE_MODULES:=General Osmocom MNCC PCUIF
TYPE_CC=$(TYPE_MODULES:%=%_Types.cc)
TYPE_HH=$(TYPE_MODULES:%=%_Types.hh)
GENERATED=$(TYPE_CC) $(TYPE_HH)
OBJS=General_Types.o Osmocom_Types.o hello.o
OBJS+=MNCC_Types.o MNCC_EncDec.o
@ -7,7 +12,10 @@ CXXFLAGS=-DLINUX -DMAKEDEPEND_RUN -I/usr/include/titan -fPIC
LDFLAGS=-L/usr/lib/titan -fPIC -lttcn3-dynamic
LDFLAGS_STATIC=-L/usr/lib/titan -lttcn3 -lxml2 -lssl -lcrypto
all: titan.a
all: compile titan.a
$(GENERATED):
ttcn3_compiler -D *.ttcn
titan.a: $(OBJS)
$(AR) r $@ $^
@ -15,5 +23,6 @@ titan.a: $(OBJS)
%.o: %.cc
$(CXX) $(CXXFLAGS) -c -o $@ $^
.PHONY: clean
clean:
@rm titan.a $(OBJS)
@rm -f titan.a $(OBJS) $(GENERATED)

File diff suppressed because it is too large Load Diff

View File

@ -1,375 +0,0 @@
// This C++ header file was generated by the TTCN-3 compiler
// of the TTCN-3 Test Executor version CRL 113 200/6 R5A
// The generation of user and time information were disabled by the -D flag.
// Copyright (c) 2000-2018 Ericsson Telecom AB
// Do not edit this file unless you know what you are doing.
#ifndef Osmocom__Types_HH
#define Osmocom__Types_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 "General_Types.hh"
#if TTCN3_VERSION != 60500
#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 Osmocom__Types_HH
#endif
namespace Osmocom__Types {
/* Forward declarations of classes */
class Arfcn;
class Arfcn_template;
typedef PreGenRecordOf::PREGEN__RECORD__OF__INTEGER IntegerRecord;
typedef PreGenRecordOf::PREGEN__RECORD__OF__INTEGER_template IntegerRecord_template;
} /* end of namespace */
#ifndef Osmocom__Types_HH
#define Osmocom__Types_HH
namespace Osmocom__Types {
/* Type definitions */
typedef INTEGER uint8__t;
typedef INTEGER_template uint8__t_template;
typedef INTEGER uint16__t;
typedef INTEGER_template uint16__t_template;
typedef INTEGER uint24__t;
typedef INTEGER_template uint24__t_template;
typedef INTEGER uint32__t;
typedef INTEGER_template uint32__t_template;
typedef INTEGER int8__t;
typedef INTEGER_template int8__t_template;
typedef INTEGER int16__t;
typedef INTEGER_template int16__t_template;
typedef INTEGER uint1__t;
typedef INTEGER_template uint1__t_template;
typedef INTEGER uint2__t;
typedef INTEGER_template uint2__t_template;
typedef INTEGER uint3__t;
typedef INTEGER_template uint3__t_template;
typedef INTEGER uint4__t;
typedef INTEGER_template uint4__t_template;
typedef INTEGER uint5__t;
typedef INTEGER_template uint5__t_template;
typedef INTEGER uint6__t;
typedef INTEGER_template uint6__t_template;
typedef INTEGER uint7__t;
typedef INTEGER_template uint7__t_template;
typedef INTEGER uint9__t;
typedef INTEGER_template uint9__t_template;
typedef INTEGER uint10__t;
typedef INTEGER_template uint10__t_template;
typedef INTEGER uint11__t;
typedef INTEGER_template uint11__t_template;
typedef INTEGER uint12__t;
typedef INTEGER_template uint12__t_template;
typedef INTEGER uint13__t;
typedef INTEGER_template uint13__t_template;
typedef INTEGER uint14__t;
typedef INTEGER_template uint14__t_template;
typedef INTEGER uint15__t;
typedef INTEGER_template uint15__t_template;
/* Class definitions */
class Arfcn : public Base_Type {
BOOLEAN field_pcs;
INTEGER field_arfcn;
public:
Arfcn();
Arfcn(const BOOLEAN& par_pcs,
const INTEGER& par_arfcn);
Arfcn(const Arfcn& other_value);
inline boolean is_component() { return FALSE; }
void clean_up();
const TTCN_Typedescriptor_t* get_descriptor() const;
Arfcn& operator=(const Arfcn& other_value);
boolean operator==(const Arfcn& other_value) const;
inline boolean operator!=(const Arfcn& other_value) const
{ return !(*this == other_value); }
boolean is_bound() const;
inline boolean is_present() const { return is_bound(); }
boolean is_value() const;
inline BOOLEAN& pcs()
{return field_pcs;}
inline const BOOLEAN& pcs() const
{return field_pcs;}
inline INTEGER& arfcn()
{return field_arfcn;}
inline const INTEGER& arfcn() const
{return field_arfcn;}
inline int size_of() const
{return 2;}
void log() const;
void set_param(Module_Param& param);
void set_implicit_omit();
void encode_text(Text_Buf& text_buf) const;
void decode_text(Text_Buf& text_buf);
void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
};
class Arfcn_template : public Base_Template {
struct single_value_struct;
union {
single_value_struct *single_value;
struct {
unsigned int n_values;
Arfcn_template *list_value;
} value_list;
};
void set_specific();
void copy_value(const Arfcn& other_value);
void copy_template(const Arfcn_template& other_value);
public:
Arfcn_template();
Arfcn_template(template_sel other_value);
Arfcn_template(const Arfcn& other_value);
Arfcn_template(const OPTIONAL<Arfcn>& other_value);
Arfcn_template(const Arfcn_template& other_value);
~Arfcn_template();
Arfcn_template& operator=(template_sel other_value);
Arfcn_template& operator=(const Arfcn& other_value);
Arfcn_template& operator=(const OPTIONAL<Arfcn>& other_value);
Arfcn_template& operator=(const Arfcn_template& other_value);
boolean match(const Arfcn& other_value, boolean legacy = FALSE) const;
boolean is_bound() const;
boolean is_value() const;
void clean_up();
Arfcn valueof() const;
void set_type(template_sel template_type, unsigned int list_length);
Arfcn_template& list_item(unsigned int list_index) const;
BOOLEAN_template& pcs();
const BOOLEAN_template& pcs() const;
INTEGER_template& arfcn();
const INTEGER_template& arfcn() const;
int size_of() const;
void log() const;
void log_match(const Arfcn& 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;
};
/* Function prototypes */
extern void uint8__t_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name);
extern INTEGER uint8__t_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name);
extern void uint16__t_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name);
extern INTEGER uint16__t_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name);
extern void uint24__t_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name);
extern INTEGER uint24__t_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name);
extern void uint32__t_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name);
extern INTEGER uint32__t_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name);
extern void int8__t_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name);
extern INTEGER int8__t_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name);
extern void int16__t_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name);
extern INTEGER int16__t_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name);
extern void uint1__t_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name);
extern INTEGER uint1__t_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name);
extern void uint2__t_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name);
extern INTEGER uint2__t_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name);
extern void uint3__t_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name);
extern INTEGER uint3__t_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name);
extern void uint4__t_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name);
extern INTEGER uint4__t_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name);
extern void uint5__t_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name);
extern INTEGER uint5__t_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name);
extern void uint6__t_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name);
extern INTEGER uint6__t_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name);
extern void uint7__t_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name);
extern INTEGER uint7__t_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name);
extern void uint9__t_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name);
extern INTEGER uint9__t_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name);
extern void uint10__t_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name);
extern INTEGER uint10__t_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name);
extern void uint11__t_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name);
extern INTEGER uint11__t_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name);
extern void uint12__t_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name);
extern INTEGER uint12__t_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name);
extern void uint13__t_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name);
extern INTEGER uint13__t_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name);
extern void uint14__t_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name);
extern INTEGER uint14__t_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name);
extern void uint15__t_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name);
extern INTEGER uint15__t_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name);
extern void Arfcn_pcs_encoder(const BOOLEAN& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name);
extern INTEGER Arfcn_pcs_decoder(OCTETSTRING& input_stream, BOOLEAN& output_value, const UNIVERSAL_CHARSTRING& coding_name);
extern void Arfcn_arfcn_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name);
extern INTEGER Arfcn_arfcn_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name);
extern void Arfcn_encoder(const Arfcn& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name);
extern INTEGER Arfcn_decoder(OCTETSTRING& input_stream, Arfcn& output_value, const UNIVERSAL_CHARSTRING& coding_name);
extern INTEGER f__rnd__int(const INTEGER& max);
extern HEXSTRING f__rnd__hexstring(const INTEGER& len, const INTEGER& max);
extern OCTETSTRING f__rnd__octstring(const INTEGER& len);
extern HEXSTRING f__rnd__imsi(const HEXSTRING& prefix);
extern OCTETSTRING f__rnd__msisdn(const OCTETSTRING& prefix, const INTEGER& len);
extern void f__sleep(const FLOAT& seconds);
extern BITSTRING bool2bit(const BOOLEAN& inp);
extern BITSTRING_template bool2bit__tmpl(const BOOLEAN_template& inp);
extern void IntegerRecord_0_encoder(const INTEGER& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name);
extern INTEGER IntegerRecord_0_decoder(OCTETSTRING& input_stream, INTEGER& output_value, const UNIVERSAL_CHARSTRING& coding_name);
extern void IntegerRecord_encoder(const IntegerRecord& input_value, OCTETSTRING& output_stream, const UNIVERSAL_CHARSTRING& coding_name);
extern INTEGER IntegerRecord_decoder(OCTETSTRING& input_stream, IntegerRecord& output_value, const UNIVERSAL_CHARSTRING& coding_name);
extern BOOLEAN int2bool(const INTEGER& int_);
extern BOOLEAN f__array__contains(const IntegerRecord& arr, const INTEGER& key);
extern void f__timer__safe__restart(TIMER& T);
extern INTEGER f__div__round__up(const INTEGER& dividend, const INTEGER& divisor);
/* Global variable declarations */
extern const TTCN_RAWdescriptor_t uint8__t_raw_;
extern const XERdescriptor_t uint8__t_xer_;
extern const TTCN_OERdescriptor_t uint8__t_oer_;
extern const TTCN_Typedescriptor_t uint8__t_descr_;
extern UNIVERSAL_CHARSTRING uint8__t_default_coding;
extern const TTCN_RAWdescriptor_t uint16__t_raw_;
extern const XERdescriptor_t uint16__t_xer_;
extern const TTCN_OERdescriptor_t uint16__t_oer_;
extern const TTCN_Typedescriptor_t uint16__t_descr_;
extern UNIVERSAL_CHARSTRING uint16__t_default_coding;
extern const TTCN_RAWdescriptor_t uint24__t_raw_;
extern const XERdescriptor_t uint24__t_xer_;
extern const TTCN_Typedescriptor_t uint24__t_descr_;
extern UNIVERSAL_CHARSTRING uint24__t_default_coding;
extern const TTCN_RAWdescriptor_t uint32__t_raw_;
extern const XERdescriptor_t uint32__t_xer_;
extern const TTCN_OERdescriptor_t uint32__t_oer_;
extern const TTCN_Typedescriptor_t uint32__t_descr_;
extern UNIVERSAL_CHARSTRING uint32__t_default_coding;
extern const TTCN_RAWdescriptor_t int8__t_raw_;
extern const XERdescriptor_t int8__t_xer_;
extern const TTCN_OERdescriptor_t int8__t_oer_;
extern const TTCN_Typedescriptor_t int8__t_descr_;
extern UNIVERSAL_CHARSTRING int8__t_default_coding;
extern const TTCN_RAWdescriptor_t int16__t_raw_;
extern const XERdescriptor_t int16__t_xer_;
extern const TTCN_OERdescriptor_t int16__t_oer_;
extern const TTCN_Typedescriptor_t int16__t_descr_;
extern UNIVERSAL_CHARSTRING int16__t_default_coding;
extern const TTCN_RAWdescriptor_t uint1__t_raw_;
extern const XERdescriptor_t uint1__t_xer_;
extern const TTCN_OERdescriptor_t uint1__t_oer_;
extern const TTCN_Typedescriptor_t uint1__t_descr_;
extern UNIVERSAL_CHARSTRING uint1__t_default_coding;
extern const TTCN_RAWdescriptor_t uint2__t_raw_;
extern const XERdescriptor_t uint2__t_xer_;
extern const TTCN_OERdescriptor_t uint2__t_oer_;
extern const TTCN_Typedescriptor_t uint2__t_descr_;
extern UNIVERSAL_CHARSTRING uint2__t_default_coding;
extern const TTCN_RAWdescriptor_t uint3__t_raw_;
extern const XERdescriptor_t uint3__t_xer_;
extern const TTCN_OERdescriptor_t uint3__t_oer_;
extern const TTCN_Typedescriptor_t uint3__t_descr_;
extern UNIVERSAL_CHARSTRING uint3__t_default_coding;
extern const TTCN_RAWdescriptor_t uint4__t_raw_;
extern const XERdescriptor_t uint4__t_xer_;
extern const TTCN_OERdescriptor_t uint4__t_oer_;
extern const TTCN_Typedescriptor_t uint4__t_descr_;
extern UNIVERSAL_CHARSTRING uint4__t_default_coding;
extern const TTCN_RAWdescriptor_t uint5__t_raw_;
extern const XERdescriptor_t uint5__t_xer_;
extern const TTCN_OERdescriptor_t uint5__t_oer_;
extern const TTCN_Typedescriptor_t uint5__t_descr_;
extern UNIVERSAL_CHARSTRING uint5__t_default_coding;
extern const TTCN_RAWdescriptor_t uint6__t_raw_;
extern const XERdescriptor_t uint6__t_xer_;
extern const TTCN_OERdescriptor_t uint6__t_oer_;
extern const TTCN_Typedescriptor_t uint6__t_descr_;
extern UNIVERSAL_CHARSTRING uint6__t_default_coding;
extern const TTCN_RAWdescriptor_t uint7__t_raw_;
extern const XERdescriptor_t uint7__t_xer_;
extern const TTCN_Typedescriptor_t uint7__t_descr_;
extern UNIVERSAL_CHARSTRING uint7__t_default_coding;
extern const TTCN_RAWdescriptor_t uint9__t_raw_;
extern const XERdescriptor_t uint9__t_xer_;
extern const TTCN_OERdescriptor_t uint9__t_oer_;
extern const TTCN_Typedescriptor_t uint9__t_descr_;
extern UNIVERSAL_CHARSTRING uint9__t_default_coding;
extern const TTCN_RAWdescriptor_t uint10__t_raw_;
extern const XERdescriptor_t uint10__t_xer_;
extern const TTCN_OERdescriptor_t uint10__t_oer_;
extern const TTCN_Typedescriptor_t uint10__t_descr_;
extern UNIVERSAL_CHARSTRING uint10__t_default_coding;
extern const TTCN_RAWdescriptor_t uint11__t_raw_;
extern const XERdescriptor_t uint11__t_xer_;
extern const TTCN_Typedescriptor_t uint11__t_descr_;
extern UNIVERSAL_CHARSTRING uint11__t_default_coding;
extern const TTCN_RAWdescriptor_t uint12__t_raw_;
extern const XERdescriptor_t uint12__t_xer_;
extern const TTCN_OERdescriptor_t uint12__t_oer_;
extern const TTCN_Typedescriptor_t uint12__t_descr_;
extern UNIVERSAL_CHARSTRING uint12__t_default_coding;
extern const TTCN_RAWdescriptor_t uint13__t_raw_;
extern const XERdescriptor_t uint13__t_xer_;
extern const TTCN_Typedescriptor_t uint13__t_descr_;
extern UNIVERSAL_CHARSTRING uint13__t_default_coding;
extern const TTCN_RAWdescriptor_t uint14__t_raw_;
extern const XERdescriptor_t uint14__t_xer_;
extern const TTCN_Typedescriptor_t uint14__t_descr_;
extern UNIVERSAL_CHARSTRING uint14__t_default_coding;
extern const TTCN_RAWdescriptor_t uint15__t_raw_;
extern const XERdescriptor_t uint15__t_xer_;
extern const TTCN_Typedescriptor_t uint15__t_descr_;
extern UNIVERSAL_CHARSTRING uint15__t_default_coding;
extern const INTEGER& c__UINT16__MAX;
extern const INTEGER& c__UINT32__MAX;
extern const TTCN_RAWdescriptor_t Arfcn_pcs_raw_;
extern const XERdescriptor_t Arfcn_pcs_xer_;
extern const TTCN_OERdescriptor_t Arfcn_pcs_oer_;
extern const TTCN_Typedescriptor_t Arfcn_pcs_descr_;
extern UNIVERSAL_CHARSTRING Arfcn_pcs_default_coding;
extern const TTCN_RAWdescriptor_t Arfcn_arfcn_raw_;
extern const XERdescriptor_t Arfcn_arfcn_xer_;
extern const TTCN_OERdescriptor_t Arfcn_arfcn_oer_;
extern const TTCN_Typedescriptor_t Arfcn_arfcn_descr_;
extern UNIVERSAL_CHARSTRING Arfcn_arfcn_default_coding;
extern const TTCN_RAWdescriptor_t Arfcn_raw_;
extern const TTCN_Typedescriptor_t Arfcn_descr_;
extern UNIVERSAL_CHARSTRING Arfcn_default_coding;
extern const INTEGER& f__rnd__hexstring_max_defval;
extern const INTEGER& f__rnd__msisdn_len_defval;
extern const TTCN_RAWdescriptor_t IntegerRecord_raw_;
extern const TTCN_Typedescriptor_t IntegerRecord_descr_;
extern const TTCN_RAWdescriptor_t IntegerRecord_0_raw_;
extern const XERdescriptor_t IntegerRecord_0_xer_;
extern const TTCN_Typedescriptor_t IntegerRecord_0_descr_;
extern UNIVERSAL_CHARSTRING IntegerRecord_0_default_coding;
extern UNIVERSAL_CHARSTRING IntegerRecord_default_coding;
extern TTCN_Module module_object;
} /* end of namespace */
#endif

156
titan/Osmocom_Types.ttcn Normal file
View File

@ -0,0 +1,156 @@
module Osmocom_Types {
import from General_Types all;
type integer uint8_t (0..255) with { variant "unsigned 8 bit" };
type integer uint16_t (0..65535) with { variant "unsigned 16 bit" };
type integer uint24_t (0..16777215) with { variant "unsigned 24 bit" };
type integer uint32_t (0..4294967295) with { variant "unsigned 32 bit" };
type integer int8_t (-128..127) with { variant "8 bit" };
type integer int16_t (-32768..32767) with { variant "16 bit" };
type integer uint1_t (0..1) with { variant "unsigned 1 bit" };
type integer uint2_t (0..3) with { variant "unsigned 2 bit" };
type integer uint3_t (0..7) with { variant "unsigned 3 bit" };
type integer uint4_t (0..15) with { variant "unsigned 4 bit" };
type integer uint5_t (0..31) with { variant "unsigned 5 bit" };
type integer uint6_t (0..63) with { variant "unsigned 6 bit" };
type integer uint7_t (0..127) with { variant "unsigned 7 bit" };
type integer uint9_t (0..511) with { variant "unsigned 9 bit" };
type integer uint10_t (0..1023) with { variant "unsigned 10 bit" };
type integer uint11_t (0..2047) with { variant "unsigned 11 bit" };
type integer uint12_t (0..4095) with { variant "unsigned 12 bit" };
type integer uint13_t (0..8191) with { variant "unsigned 13 bit" };
type integer uint14_t (0..16383) with { variant "unsigned 14 bit" };
type integer uint15_t (0..32767) with { variant "unsigned 15 bit" };
const uint16_t c_UINT16_MAX := 65535;
const uint32_t c_UINT32_MAX := 4294967295;
type record Arfcn {
boolean pcs,
uint15_t arfcn
} with { variant "" };
/* return random integer between 0 and max */
function f_rnd_int(integer max) return integer {
return float2int(rnd()*int2float(max));
}
/* return hexstring composed of random digits */
function f_rnd_hexstring(in integer len, in integer max := 15) return hexstring {
var integer i;
var hexstring ret := ''H;
for (i := 0; i < len; i := i + 1) {
ret := ret & int2hex(f_rnd_int(max), 1);
}
return ret;
}
/* return octetstring composed of random bytes */
function f_rnd_octstring(in integer len) return octetstring {
var integer i;
var octetstring ret := ''O;
for (i := 0; i < len; i := i + 1) {
ret := ret & int2oct(f_rnd_int(255), 1);
}
return ret;
}
function f_rnd_imsi(in hexstring prefix) return hexstring {
return prefix & f_rnd_hexstring(15 - lengthof(prefix), 9);
}
function f_rnd_msisdn(in octetstring prefix, integer len := 6) return octetstring {
return prefix & f_rnd_octstring(len - lengthof(prefix));
}
function f_sleep(float seconds) {
timer T := seconds;
T.start;
T.timeout;
}
function bool2bit(boolean inp) return BIT1 {
if (inp) {
return '1'B;
} else {
return '0'B;
}
}
function bool2bit_tmpl(template boolean inp) return template BIT1 {
if (istemplatekind(inp, "omit")) {
return omit;
} else if (istemplatekind(inp, "*")) {
return *;
} else if (istemplatekind(inp, "?")) {
return ?;
} else {
if (valueof(inp)) {
return '1'B;
} else {
return '0'B;
}
}
}
type record of integer IntegerRecord;
function int2bool(integer int) return boolean {
if (int != 0) {
return true;
} else {
return false;
}
}
function f_array_contains(IntegerRecord arr, integer key) return boolean {
for (var integer i:= 0; i< sizeof(arr); i := i + 1) {
if (arr[i] == key) {
return true;
}
}
return false;
}
/* re-start given timer in a warning-safe way: Stop (only if running) + start */
function f_timer_safe_restart(timer T) {
if (T.running) {
T.stop;
}
T.start;
}
/* divide two integers and return rounded-up result */
function f_div_round_up(integer dividend, integer divisor) return integer {
var integer x := dividend / divisor;
if (dividend rem divisor != 0) {
x := x+1;
}
return x;
}
function imsi_hex2oct(hexstring imsi) return octetstring {
var hexstring tmp := ''H;
var octetstring ret;
var integer i;
/* swap nibbles and pad with F if insufficient input nibbles */
for (i := 0; i < lengthof(imsi); i := i+1) {
if (i+1 < lengthof(imsi)) {
tmp := tmp & imsi[i+1];
} else {
tmp := tmp & 'F'H;
}
tmp := tmp & imsi[i];
i := i+1;
}
ret := hex2oct(tmp);
return ret;
}
} with { encode "RAW"; variant "FIELDORDER(msb)" }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

805
titan/PCUIF_Types.ttcn Normal file
View File

@ -0,0 +1,805 @@
module PCUIF_Types {
import from General_Types all;
import from Osmocom_Types all;
/* Osmocom PCU Interface Types, as per osmo-pcu/include/osmocom/pcu/pcuif_proto.h */
const charstring PCU_SOCK_DEFAULT := "/tmp/pcu_bts";
const uint32_t PCU_IF_VERSION := 9;
type enumerated PCUIF_MsgType {
PCU_IF_MSG_DATA_REQ ('00'O),
PCU_IF_MSG_DATA_CNF ('01'O),
PCU_IF_MSG_DATA_IND ('02'O),
PCU_IF_MSG_SUSP_REQ ('03'O),
PCU_IF_MSG_RTS_REQ ('10'O),
PCU_IF_MSG_DATA_CNF_DT ('11'O),
PCU_IF_MSG_RACH_IND ('22'O),
PCU_IF_MSG_INFO_IND ('32'O),
PCU_IF_MSG_ACT_REQ ('40'O),
PCU_IF_MSG_TIME_IND ('52'O),
PCU_IF_MSG_PAG_REQ ('60'O),
PCU_IF_MSG_TXT_IND ('70'O)
} with { variant "FIELDLENGTH(8)" };
type enumerated PCUIF_Sapi {
PCU_IF_SAPI_UNKNOWN ('00'O),
PCU_IF_SAPI_RACH ('01'O),
PCU_IF_SAPI_AGCH ('02'O),
PCU_IF_SAPI_PCH ('03'O),
PCU_IF_SAPI_BCCH ('04'O),
PCU_IF_SAPI_PDTCH ('05'O),
PCU_IF_SAPI_PRACH ('06'O),
PCU_IF_SAPI_PTCCH ('07'O),
PCU_IF_SAPI_AGCH_DT ('08'O)
} with { variant "FIELDLENGTH(8)" };
type record PCUIF_Flags {
boolean bts_active,
boolean sysmo_direct_dsp,
BIT14 spare,
boolean cs1,
boolean cs2,
boolean cs3,
boolean cs4,
boolean mcs1,
boolean mcs2,
boolean mcs3,
boolean mcs4,
boolean mcs5,
boolean mcs6,
boolean mcs7,
boolean mcs8,
boolean mcs9,
BIT3 spare2
} with { variant "" };
type enumerated PCUIF_TextType {
PCU_VERSION (0),
PCU_OML_ALERT (1)
} with { variant "FIELDLENGTH(8)" };
type charstring PCUIF_Text length(128) with { variant "FIELDLENGTH(128)" };
type record PCUIF_txt_ind {
PCUIF_TextType txt_type,
PCUIF_Text text
} with { variant "" };
type record PCUIF_data {
PCUIF_Sapi sapi,
uint8_t len,
octetstring data length(162),
uint32_t fn,
uint16_t arfcn,
uint8_t trx_nr,
uint8_t ts_nr,
uint8_t block_nr,
int8_t rssi,
uint16_t ber10k,
int16_t ta_offs_qbits,
int16_t lqual_cb
} with { variant (data) "FIELDLENGTH(162), ALIGN(left)" };
type record PCUIF_data_cnf_dt {
PCUIF_Sapi sapi,
OCT4 tlli,
uint32_t fn,
uint16_t arfcn,
uint8_t trx_nr,
uint8_t ts_nr,
uint8_t block_nr,
int8_t rssi,
uint16_t ber10k,
int16_t ta_offs_qbits,
int16_t lqual_cb
} with { variant "" };
type record PCUIF_rts_req {
PCUIF_Sapi sapi,
OCT3 spare,
uint32_t fn,
uint16_t arfcn,
uint8_t trx_nr,
uint8_t ts_nr,
uint8_t block_nr
} with { variant "" };
type enumerated PCUIF_BurstType {
BURST_TYPE_NONE (0),
BURST_TYPE_0 (1),
BURST_TYPE_1 (2),
BURST_TYPE_2 (3)
} with { variant "FIELDLENGTH(8)" };
type record PCUIF_rach_ind {
PCUIF_Sapi sapi,
uint16_t ra,
int16_t qta,
uint32_t fn,
uint16_t arfcn,
uint8_t is_11bit,
PCUIF_BurstType burst_type
} with { variant "" };
type record PCUIF_InfoTrx {
uint16_t arfcn,
BIT8 pdch_mask,
OCT1 spare,
OCT8 tsc,
uint32_t hLayer1
} with { variant (pdch_mask) "BITORDER(msb)" };
type record length(8) of PCUIF_InfoTrx PCUIF_InfoTrxs;
type record PCUIF_info_ind {
uint32_t version,
PCUIF_Flags flags,
PCUIF_InfoTrxs trx,
uint8_t bsic,
uint16_t mcc,
uint16_t mnc,
uint8_t mnc_3_digits,
uint16_t lac,
uint16_t rac,
uint16_t nsei,
record length(7) of uint8_t nse_timer,
record length(11) of uint8_t cell_timer,
uint16_t cell_id,
uint16_t repeat_time,
uint8_t repeat_count,
uint16_t bvci,
uint8_t t3142,
uint8_t t3169,
uint8_t t3191,
uint8_t t3193_10ms,
uint8_t t3195,
uint8_t t3101,
uint8_t t3103,
uint8_t t3105,
uint8_t cv_countdown,
uint16_t dl_tbf_ext,
uint16_t ul_tbf_ext,
uint8_t initial_cs,
uint8_t initial_mcs,
record length(2) of uint16_t nsvci,
record length(2) of uint16_t local_pprt,
record length(2) of uint16_t remote_port,
record length(2) of OCT4 remote_ip
} with { variant "" }
type record PCUIF_act_req {
uint8_t is_activate,
uint8_t trx_nr,
uint8_t ts_nr,
OCT1 spare
} with { variant "" };
type record PCUIF_time_ind {
uint32_t fn
} with { variant "" };
type record PCUIF_pag_req {
PCUIF_Sapi sapi,
uint8_t chan_needed,
OCT9 identity_lv
} with { variant "" };
type record PCUIF_susp_req {
OCT4 tlli,
OCT6 ra_id,
uint8_t cause
} with { variant "" };
type union PCUIF_MsgUnion {
PCUIF_data data_req,
PCUIF_data data_cnf,
PCUIF_data_cnf_dt data_cnf_dt,
PCUIF_data data_ind,
PCUIF_susp_req susp_req,
PCUIF_rts_req rts_req,
PCUIF_rach_ind rach_ind,
PCUIF_txt_ind txt_ind,
PCUIF_info_ind info_ind,
PCUIF_act_req act_req,
PCUIF_time_ind time_ind,
PCUIF_pag_req pag_req
} with { variant "" };
type record PCUIF_Message {
PCUIF_MsgType msg_type,
uint8_t bts_nr,
OCT2 spare,
PCUIF_MsgUnion u
} with { variant (u) "CROSSTAG(
data_req, msg_type = PCU_IF_MSG_DATA_REQ;
data_cnf, msg_type = PCU_IF_MSG_DATA_CNF;
data_cnf_dt, msg_type = PCU_IF_MSG_DATA_CNF_DT;
data_ind, msg_type = PCU_IF_MSG_DATA_IND;
susp_req, msg_type = PCU_IF_MSG_SUSP_REQ;
rts_req, msg_type = PCU_IF_MSG_RTS_REQ;
rach_ind, msg_type = PCU_IF_MSG_RACH_IND;
txt_ind, msg_type = PCU_IF_MSG_TXT_IND;
info_ind, msg_type = PCU_IF_MSG_INFO_IND;
act_req, msg_type = PCU_IF_MSG_ACT_REQ;
time_ind, msg_type = PCU_IF_MSG_TIME_IND;
pag_req, msg_type = PCU_IF_MSG_PAG_REQ)"
variant "PADDING(1696)" /* 212 * 8 */
};
external function enc_PCUIF_Message(in PCUIF_Message pdu) return octetstring
with { extension "prototype(convert) encode(RAW)" };
external function dec_PCUIF_Message(in octetstring stream) return PCUIF_Message
with { extension "prototype(convert) decode(RAW)" };
template (value) PCUIF_Message ts_PCUIF_RTS_REQ(template (value) uint8_t bts_nr,
template (value) uint8_t trx_nr,
template (value) uint8_t ts_nr,
template (value) PCUIF_Sapi sapi,
template (value) uint32_t fn,
template (value) uint16_t arfcn,
template (value) uint8_t block_nr
) := {
msg_type := PCU_IF_MSG_RTS_REQ,
bts_nr := bts_nr,
spare := '0000'O,
u := {
rts_req := {
sapi := sapi,
spare := '000000'O,
fn := fn,
arfcn := arfcn,
trx_nr := trx_nr,
ts_nr := ts_nr,
block_nr := block_nr
}
}
}
template PCUIF_Message tr_PCUIF_RTS_REQ(template uint8_t bts_nr := ?,
template uint8_t trx_nr := ?,
template uint8_t ts_nr := ?,
template PCUIF_Sapi sapi := ?,
template uint32_t fn := ?,
template uint8_t block_nr := ?
) := {
msg_type := PCU_IF_MSG_RTS_REQ,
bts_nr := bts_nr,
spare := ?,
u := {
rts_req := {
sapi := sapi,
spare := ?,
fn := fn,
arfcn := ?,
trx_nr := trx_nr,
ts_nr := ts_nr,
block_nr := block_nr
}
}
}
template (value) PCUIF_Message ts_PCUIF_TXT_IND(uint8_t bts_nr, PCUIF_TextType tt, charstring text) := {
msg_type := PCU_IF_MSG_TXT_IND,
bts_nr := bts_nr,
spare := '0000'O,
u := {
txt_ind := {
txt_type := tt,
text := text
}
}
}
template PCUIF_Message tr_PCUIF_TXT_IND(template uint8_t bts_nr, template PCUIF_TextType tt,
template charstring text := ?) := {
msg_type := PCU_IF_MSG_TXT_IND,
bts_nr := bts_nr,
spare := '0000'O,
u := {
txt_ind := {
txt_type := tt,
text := text
}
}
}
template (value) PCUIF_Message ts_PCUIF_ACT_REQ(uint8_t bts_nr, uint8_t trx_nr, uint8_t ts_nr) := {
msg_type := PCU_IF_MSG_ACT_REQ,
bts_nr := bts_nr,
spare := '0000'O,
u := {
act_req := {
is_activate := 1,
trx_nr := trx_nr,
ts_nr := ts_nr,
spare := '00'O
}
}
}
template PCUIF_Message tr_PCUIF_ACT_REQ(template uint8_t bts_nr, template uint8_t trx_nr,
template uint8_t ts_nr) := {
msg_type := PCU_IF_MSG_ACT_REQ,
bts_nr := bts_nr,
spare := '0000'O,
u := {
act_req := {
is_activate := 1,
trx_nr := trx_nr,
ts_nr := ts_nr,
spare := '00'O
}
}
}
template (value) PCUIF_Message ts_PCUIF_DEACT_REQ(uint8_t bts_nr, uint8_t trx_nr, uint8_t ts_nr) := {
msg_type := PCU_IF_MSG_ACT_REQ,
bts_nr := bts_nr,
spare := '0000'O,
u := {
act_req := {
is_activate := 0,
trx_nr := trx_nr,
ts_nr := ts_nr,
spare := '00'O
}
}
}
template PCUIF_Message tr_PCUIF_DEACT_REQ(template uint8_t bts_nr, template uint8_t trx_nr,
template uint8_t ts_nr) := {
msg_type := PCU_IF_MSG_ACT_REQ,
bts_nr := bts_nr,
spare := '0000'O,
u := {
act_req := {
is_activate := 0,
trx_nr := trx_nr,
ts_nr := ts_nr,
spare := '00'O
}
}
}
template (value) PCUIF_Message ts_PCUIF_DATA_IND(template (value) uint8_t bts_nr,
template (value) uint8_t trx_nr,
template (value) uint8_t ts_nr,
template (value) uint8_t block_nr,
template (value) PCUIF_Sapi sapi,
template (value) octetstring data,
template (value) uint32_t fn,
template (value) uint16_t arfcn,
template (value) int8_t rssi := -80,
template (value) uint16_t ber10k := 0,
template (value) int16_t ta_offs_qbits := 0,
template (value) uint16_t lqual_cb := 10) := {
msg_type := PCU_IF_MSG_DATA_IND,
bts_nr := bts_nr,
spare := '0000'O,
u := {
data_ind := {
sapi := sapi,
len := lengthof(valueof(data)),
data := data,
fn := fn,
arfcn := arfcn,
trx_nr := trx_nr,
ts_nr := ts_nr,
block_nr := block_nr,
rssi := rssi,
ber10k := ber10k,
ta_offs_qbits := ta_offs_qbits,
lqual_cb := lqual_cb
}
}
}
template PCUIF_Message tr_PCUIF_DATA_IND(template uint8_t bts_nr := ?,
template uint8_t trx_nr := ?,
template uint8_t ts_nr := ?,
template uint8_t block_nr := ?,
template PCUIF_Sapi sapi := ?,
template octetstring data := ?) := {
msg_type := PCU_IF_MSG_DATA_IND,
bts_nr := bts_nr,
spare := ?,
u := {
data_ind := {
sapi := sapi,
len := ?,
data := data,
fn := ?,
arfcn := ?,
trx_nr := trx_nr,
ts_nr := ts_nr,
block_nr := block_nr,
rssi := ?,
ber10k := ?,
ta_offs_qbits := ?,
lqual_cb := ?
}
}
}
template (value) PCUIF_Message ts_PCUIF_DATA_REQ(uint8_t bts_nr, uint8_t trx_nr,
uint8_t ts_nr, uint8_t block_nr,
uint32_t fn, PCUIF_Sapi sapi,
octetstring data) := {
msg_type := PCU_IF_MSG_DATA_REQ,
bts_nr := bts_nr,
spare := '0000'O,
u := {
data_req := {
sapi := sapi,
len := lengthof(data),
data := data,
fn := fn,
arfcn := 0, /* unused in BTS */
trx_nr := trx_nr,
ts_nr := ts_nr,
block_nr := block_nr,
/* measurement parameters below unused on Tx */
rssi := 0,
ber10k := 0,
ta_offs_qbits := 0,
lqual_cb := 0
}
}
}
template PCUIF_Message tr_PCUIF_DATA_REQ(template uint8_t bts_nr,
template uint8_t trx_nr,
template uint8_t ts_nr,
template uint8_t block_nr := ?,
template uint32_t fn := ?,
template PCUIF_Sapi sapi := ?,
template octetstring data := ?) := {
msg_type := PCU_IF_MSG_DATA_REQ,
bts_nr := bts_nr,
spare := '0000'O,
u := {
data_req := {
sapi := sapi,
len := ?,
data := data,
fn := fn,
arfcn := ?, /* unused in BTS */
trx_nr := trx_nr,
ts_nr := ts_nr,
block_nr := block_nr,
/* measurement parameters below unused on Tx */
rssi := 0,
ber10k := 0,
ta_offs_qbits := 0,
lqual_cb := 0
}
}
}
template (value) PCUIF_Message ts_PCUIF_DATA_CNF(template (value) uint8_t bts_nr,
template (value) uint8_t trx_nr,
template (value) uint8_t ts_nr,
template (value) uint8_t block_nr,
template (value) uint32_t fn,
template (value) uint16_t arfcn,
template (value) PCUIF_Sapi sapi,
template (value) octetstring data) := {
msg_type := PCU_IF_MSG_DATA_CNF,
bts_nr := bts_nr,
spare := '0000'O,
u := {
data_cnf := {
sapi := sapi,
len := 0, /* overwritten */
data := data,
fn := fn,
arfcn := arfcn,
trx_nr := trx_nr,
ts_nr := ts_nr,
block_nr := block_nr,
rssi := 0,
ber10k := 0,
ta_offs_qbits := 0,
lqual_cb := 0
}
}
}
template PCUIF_Message tr_PCUIF_DATA_CNF(template uint8_t bts_nr := ?,
template uint8_t trx_nr := ?,
template uint8_t ts_nr := ?,
template PCUIF_Sapi sapi := ?,
template octetstring data := ?) := {
msg_type := PCU_IF_MSG_DATA_CNF,
bts_nr := bts_nr,
spare := ?,
u := {
data_cnf := {
sapi := sapi,
len := ?,
data := data,
fn := ?,
arfcn := ?,
trx_nr := trx_nr,
ts_nr := ts_nr,
block_nr := ?,
rssi := ?,
ber10k := ?,
ta_offs_qbits := ?,
lqual_cb := ?
}
}
}
template (value) PCUIF_Message ts_PCUIF_RACH_IND(template (value) uint8_t bts_nr,
template (value) uint16_t ra,
template (value) uint8_t is_11bit,
template (value) PCUIF_BurstType burst_type,
template (value) uint32_t fn,
template (value) uint16_t arfcn,
template (value) int16_t qta := 0
) := {
msg_type := PCU_IF_MSG_RACH_IND,
bts_nr := bts_nr,
spare := '0000'O,
u := {
rach_ind := {
sapi := PCU_IF_SAPI_RACH,
ra := ra,
qta := qta,
fn := fn,
arfcn := arfcn,
is_11bit := is_11bit,
burst_type := burst_type
}
}
}
template PCUIF_Message tr_PCUIF_RACH_IND(template uint8_t bts_nr := ?,
template uint16_t ra := ?,
template uint8_t is_11bit := ?,
template PCUIF_BurstType burst_type := ?,
template uint32_t fn := ?) := {
msg_type := PCU_IF_MSG_RACH_IND,
bts_nr := bts_nr,
spare := ?,
u := {
rach_ind := {
sapi := PCU_IF_SAPI_RACH,
ra := ra,
qta := ?,
fn := fn,
arfcn := ?,
is_11bit := is_11bit,
burst_type := burst_type
}
}
}
template (value) PCUIF_Message ts_PCUIF_PAG_REQ(template (value) uint8_t bts_nr,
template (value) OCT9 id_lv,
template (value) uint8_t chan_needed,
template (value) PCUIF_Sapi sapi) := {
msg_type := PCU_IF_MSG_PAG_REQ,
bts_nr := bts_nr,
spare := '0000'O,
u := {
pag_req := {
sapi := sapi,
chan_needed := chan_needed,
identity_lv := id_lv
}
}
}
template PCUIF_Message tr_PCUIF_PAG_REQ(template uint8_t bts_nr := ?,
template OCT9 id_lv := ?,
template uint8_t chan_needed := ?,
template PCUIF_Sapi sapi := ?) := {
msg_type := PCU_IF_MSG_PAG_REQ,
bts_nr := bts_nr,
spare := ?,
u := {
pag_req := {
sapi := ?,
chan_needed := chan_needed,
identity_lv := id_lv
}
}
}
const PCUIF_Flags c_PCUIF_Flags_default := {
bts_active := true,
sysmo_direct_dsp := false,
spare := '00000000000000'B,
cs1 := true,
cs2 := true,
cs3 := true,
cs4 := true,
mcs1 := true,
mcs2 := true,
mcs3 := true,
mcs4 := true,
mcs5 := true,
mcs6 := true,
mcs7 := true,
mcs8 := true,
mcs9 := true,
spare2 := '000'B
};
template (value) PCUIF_InfoTrx ts_PCUIF_InfoTrx(template (value) uint16_t arfcn := 871,
template (value) BIT8 pdch_mask := '00000001'B,
OCT1 tsc := '07'O) := {
arfcn := arfcn,
pdch_mask := pdch_mask,
spare := '00'O,
tsc := tsc & tsc & tsc & tsc & tsc & tsc & tsc & tsc,
hLayer1 := 0
}
template (value) PCUIF_InfoTrx ts_PCUIF_InfoTrxNULL := ts_PCUIF_InfoTrx(0, '00000000'B, '00'O);
template (value) PCUIF_InfoTrxs ts_PCUIF_InfoTrxs_def := {
ts_PCUIF_InfoTrx, ts_PCUIF_InfoTrxNULL, ts_PCUIF_InfoTrxNULL, ts_PCUIF_InfoTrxNULL,
ts_PCUIF_InfoTrxNULL, ts_PCUIF_InfoTrxNULL, ts_PCUIF_InfoTrxNULL, ts_PCUIF_InfoTrxNULL };
template (value) PCUIF_Message ts_PCUIF_INFO_IND(template (value) uint8_t bts_nr,
template (value) uint16_t nsei,
template (value) uint16_t nsvci,
template (value) uint16_t bvci,
template (value) uint16_t local_port,
template (value) uint16_t remote_port,
template (value) OCT4 remote_ip,
template (value) PCUIF_Flags flags := c_PCUIF_Flags_default,
template (value) uint16_t mcc := 262,
template (value) uint16_t mnc := 42,
template (value) uint16_t lac := 13135,
template (value) uint8_t rac := 0,
template (value) uint16_t cell_id := 20960,
template (value) uint8_t bsic := 7,
template (value) PCUIF_InfoTrxs trx := ts_PCUIF_InfoTrxs_def,
template (value) uint32_t version := PCU_IF_VERSION) := {
msg_type := PCU_IF_MSG_INFO_IND,
bts_nr := bts_nr,
spare := '0000'O,
u := {
info_ind := {
version := version,
flags := flags,
trx := trx,
bsic := bsic,
mcc := mcc,
mnc := mnc,
mnc_3_digits := 0,
lac := lac,
rac := rac,
nsei := nsei,
nse_timer := { 3, 3, 3, 3, 30, 3, 10 },
cell_timer := { 3, 3, 3, 3, 3, 10, 3, 10, 3, 10, 3 },
cell_id := cell_id,
repeat_time := 5 * 50,
repeat_count := 3,
bvci := bvci,
t3142 := 20,
t3169 := 5,
t3191 := 5,
t3193_10ms := 160,
t3195 := 5,
t3101 := 10,
t3103 := 4,
t3105 := 8,
cv_countdown := 15,
dl_tbf_ext := 250 * 10, /* ms */
ul_tbf_ext := 250 * 10, /* ms */
initial_cs := 2,
initial_mcs := 6,
nsvci := { nsvci, 0 },
local_pprt := { local_port, 0 },
remote_port := { remote_port, 0 },
remote_ip := { remote_ip , '00000000'O }
}
}
}
template PCUIF_Message tr_PCUIF_INFO_IND(template uint8_t bts_nr := ?,
template PCUIF_Flags flags := ?,
template uint32_t version := PCU_IF_VERSION) := {
msg_type := PCU_IF_MSG_INFO_IND,
bts_nr := bts_nr,
spare := ?,
u := {
info_ind := {
version := version,
flags := flags,
trx := ?,
bsic := ?,
mcc := ?,
mnc :=?,
mnc_3_digits := ?,
lac := ?,
rac := ?,
nsei := ?,
nse_timer := ?,
cell_timer := ?,
cell_id := ?,
repeat_time := ?,
repeat_count := ?,
bvci := ?,
t3142 := ?,
t3169 := ?,
t3191 := ?,
t3193_10ms := ?,
t3195 := ?,
t3101 := ?,
t3103 := ?,
t3105 := ?,
cv_countdown := ?,
dl_tbf_ext := ?,
ul_tbf_ext := ?,
initial_cs := ?,
initial_mcs := ?,
nsvci := ?,
local_pprt := ?,
remote_port := ?,
remote_ip := ?
}
}
}
template (value) PCUIF_Message ts_PCUIF_TIME_IND(template (value) uint8_t bts_nr,
template (value) uint32_t fn) := {
msg_type := PCU_IF_MSG_TIME_IND,
bts_nr := bts_nr,
spare := '0000'O,
u := {
time_ind := {
fn := fn
}
}
}
template PCUIF_Message tr_PCUIF_TIME_IND(template uint8_t bts_nr,
template uint32_t fn) := {
msg_type := PCU_IF_MSG_TIME_IND,
bts_nr := bts_nr,
spare := ?,
u := {
time_ind := {
fn := fn
}
}
}
template (value) PCUIF_Message ts_PCUIF_SUSP_REQ(template (value) uint8_t bts_nr,
template (value) OCT4 tlli,
template (value) OCT6 ra_id,
template (value) uint8_t cause) := {
msg_type := PCU_IF_MSG_SUSP_REQ,
bts_nr := bts_nr,
spare := '0000'O,
u := {
susp_req := {
tlli := tlli,
ra_id := ra_id,
cause := cause
}
}
}
template PCUIF_Message tr_PCUIF_SUSP_REQ(template uint8_t bts_nr,
template OCT4 tlli,
template OCT6 ra_id,
template uint8_t cause) := {
msg_type := PCU_IF_MSG_SUSP_REQ,
bts_nr := bts_nr,
spare := '0000'O,
u := {
susp_req := {
tlli := tlli,
ra_id := ra_id,
cause := cause
}
}
}
} with { encode "RAW" variant "BYTEORDER(first)" };