2020-03-29 15:34:11 +00:00
|
|
|
module BSSLAP_Types {
|
|
|
|
|
|
|
|
/* BSSLAP_Types, defining abstract TTCN-3 data types for the 3GPP BSSLAP protocol.
|
|
|
|
*
|
|
|
|
* BSSLAP is a 3GPP standard protocol used between BSC and SMLC in a GSM network.
|
|
|
|
* This file covers 3GPP TS 48.071 version 15.0.0 Release 15
|
|
|
|
*
|
|
|
|
* (C) 2020 by Harald Welte <laforge@gnumonks.org>
|
|
|
|
* All rights reserved.
|
|
|
|
*
|
|
|
|
* Released under the terms of GNU General Public License, Version 2 or
|
|
|
|
* (at your option) any later version.
|
|
|
|
*
|
|
|
|
* SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
*/
|
|
|
|
|
|
|
|
import from General_Types all;
|
|
|
|
import from Osmocom_Types all;
|
|
|
|
|
|
|
|
|
|
|
|
/* 3GPP TS 48.071 Table 5.1 */
|
|
|
|
type enumerated BSSLAP_IEI {
|
|
|
|
BSSLAP_IEI_TA ('00000001'B),
|
|
|
|
BSSLAP_IEI_CELL_ID ('00001001'B),
|
|
|
|
BSSLAP_IEI_CHAN_DESC ('00010000'B),
|
|
|
|
BSSLAP_IEI_MEAS_REP ('00010100'B),
|
|
|
|
BSSLAP_IEI_CAUSE ('00011000'B),
|
|
|
|
BSSLAP_IEI_RRLP_FLAG ('00011001'B),
|
|
|
|
BSSLAP_IEI_RRLP ('00011011'B),
|
|
|
|
BSSLAP_IEI_CELL_ID_LIST ('00011100'B),
|
|
|
|
BSSLAP_IEI_ENH_MEAS_REP ('00011101'B),
|
|
|
|
BSSLAP_IEI_LAC ('00011110'B),
|
|
|
|
BSSLAP_IEI_FREQ_LIST ('00100001'B),
|
|
|
|
BSSLAP_IEI_MS_POWER ('00100010'B),
|
|
|
|
BSSLAP_IEI_DELTA_TIMER ('00100011'B),
|
|
|
|
BSSLAP_IEI_SERVING_CELL_ID ('00100100'B),
|
|
|
|
BSSLAP_IEI_ENCR_KEY ('00100101'B),
|
|
|
|
BSSLAP_IEI_CIPH_MODE_SET ('00100110'B),
|
|
|
|
BSSLAP_IEI_CHAN_MODE ('00100111'B),
|
|
|
|
BSSLAP_IEI_MR_CONFIG ('00101000'B),
|
|
|
|
BSSLAP_IEI_POLLING_REPETITION ('00101001'B),
|
|
|
|
BSSLAP_IEI_PACKET_CHAN_DESC ('00101010'B),
|
|
|
|
BSSLAP_IEI_TLLI ('00101011'B),
|
|
|
|
BSSLAP_IEI_TFI ('00101100'B),
|
|
|
|
BSSLAP_IEI_TBF_START_TIME ('00101101'B),
|
|
|
|
BSSLAP_IEI_PWRUP_START_TIME ('00101110'B),
|
|
|
|
BSSLAP_IEI_LONG_ENCR_KEY ('00101111'B),
|
|
|
|
BSSLAP_IEI_CONCUR_POS_PROC_F ('00110000'B)
|
|
|
|
} with { variant "FIELDLENGTH(8)" };
|
|
|
|
|
|
|
|
/* 3GPP TS 48.071 Section 5.1 */
|
|
|
|
type enumerated BSSLAP_MsgType {
|
|
|
|
BSSLAP_MSGT_TA_REQUEST ('00000001'B),
|
|
|
|
BSSLAP_MSGT_TA_RESPONSE ('00000010'B),
|
|
|
|
BSSLAP_MSGT_REJECT ('00001010'B),
|
|
|
|
BSSLAP_MSGT_RESET ('00001011'B),
|
|
|
|
BSSLAP_MSGT_ABORT ('00001100'B),
|
|
|
|
BSSLAP_MSGT_TA_LAYER3 ('00001101'B),
|
|
|
|
BSSLAP_MSGT_MS_POS_CMD ('00001111'B),
|
|
|
|
BSSLAP_MSGT_MS_POS_RESP ('00010000'B),
|
|
|
|
BSSLAP_MSGT_UTDOA_REQ ('00010001'B),
|
|
|
|
BSSLAP_MSGT_UTDOA_RESP ('00010010'B)
|
|
|
|
} with { variant "FIELDLENGTH(8)" };
|
|
|
|
|
|
|
|
|
|
|
|
/* Section 4.2.1 */
|
|
|
|
type record BSSLAP_TaRequest {
|
|
|
|
BSSLAP_MsgType msg_type
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Section 4.2.2 */
|
|
|
|
type record BSSLAP_TaResponse {
|
|
|
|
BSSLAP_MsgType msg_type,
|
|
|
|
BSSLAP_IE_CellId serving_cell_id,
|
|
|
|
BSSLAP_IE_TimingAdvance timing_advance,
|
|
|
|
BSSLAP_IE_MeasRep meas_rep optional,
|
|
|
|
BSSLAP_IE_EnhMeasRep enh_meas_rep optional,
|
|
|
|
BSSLAP_IE_CellIdList meas_cell_id_list optional,
|
|
|
|
BSSLAP_IE_ConcurMethodF concur_meth_flag optional
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Section 4.2.5 */
|
|
|
|
type record BSSLAP_Reject {
|
|
|
|
BSSLAP_MsgType msg_type,
|
|
|
|
BSSLAP_IE_Cause cause
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Section 4.2.6 */
|
|
|
|
type record BSSLAP_Reset {
|
|
|
|
BSSLAP_MsgType msg_type,
|
|
|
|
BSSLAP_IE_CellId cell_id,
|
|
|
|
BSSLAP_IE_TimingAdvance timing_advance,
|
|
|
|
BSSLAP_IE_ChanDesc chan_desc,
|
|
|
|
BSSLAP_IE_Cause cause,
|
|
|
|
BSSLAP_IE_MeasRep meas_rep optional,
|
|
|
|
BSSLAP_IE_EnhMeasRep enh_meas_rep optional,
|
|
|
|
BSSLAP_IE_CellIdList meas_cell_id_list optional,
|
|
|
|
BSSLAP_IE_LAC lac optional,
|
|
|
|
BSSLAP_IE_FreqList freq_list optional,
|
|
|
|
BSSLAP_IE_ChanMode chan_mode optional,
|
|
|
|
BSSLAP_IE_MultiRateConfig mr_config optional,
|
|
|
|
BSSLAP_IE_PacketChanDesc pkt_chan_desc optional,
|
|
|
|
BSSLAP_IE_TLLI tlli optional,
|
|
|
|
BSSLAP_IE_TFI tfi optional,
|
|
|
|
BSSLAP_IE_StartingTime tbf_start_time optional,
|
|
|
|
BSSLAP_IE_EncryptionKey encr_key optional,
|
|
|
|
BSSLAP_IE_CiphModeSet ciph_mode_set optional,
|
|
|
|
BSSLAP_IE_LongEncryptionKey long_encr_key optional
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Section 4.2.7 */
|
|
|
|
type record BSSLAP_Abort {
|
|
|
|
BSSLAP_MsgType msg_type,
|
|
|
|
BSSLAP_IE_Cause cause
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Section 4.2.8 */
|
|
|
|
type record BSSLAP_TA_Layer3 {
|
|
|
|
BSSLAP_MsgType msg_type,
|
|
|
|
BSSLAP_IE_TimingAdvance timing_advance,
|
|
|
|
BSSLAP_IE_MeasRep meas_rep optional,
|
|
|
|
BSSLAP_IE_EnhMeasRep enh_meas_rep optional,
|
|
|
|
BSSLAP_IE_CellIdList meas_cell_id_list optional
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Section 4.2.9 */
|
|
|
|
type record BSSLAP_MS_PosCmd {
|
|
|
|
BSSLAP_MsgType msg_type,
|
|
|
|
BSSLAP_IE_RrlpFlag flag,
|
|
|
|
BSSLAP_IE_Rrlp rrlp_info
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Section 4.2.10 */
|
|
|
|
type record BSSLAP_MS_PosResp {
|
|
|
|
BSSLAP_MsgType msg_type,
|
|
|
|
BSSLAP_IE_RrlpFlag flag,
|
|
|
|
BSSLAP_IE_Rrlp rrlp_info,
|
|
|
|
BSSLAP_IE_TimingAdvance timing_advance optional,
|
|
|
|
BSSLAP_IE_MeasRep meas_rep optional,
|
|
|
|
BSSLAP_IE_EnhMeasRep enh_meas_rep optional,
|
|
|
|
BSSLAP_IE_CellIdList meas_cell_id_list optional,
|
|
|
|
BSSLAP_IE_ConcurMethodF concur_meth_flag optional
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Section 4.2.11 */
|
|
|
|
type record BSSLAP_UTDOA_Req {
|
|
|
|
BSSLAP_MsgType msg_type,
|
|
|
|
BSSLAP_IE_DeltaTimer delta_timer optional,
|
|
|
|
BSSLAP_IE_PollingRep polling_repetition optional
|
|
|
|
};
|
|
|
|
|
|
|
|
type union BSSLAP_PDU {
|
|
|
|
BSSLAP_TaRequest ta_req,
|
|
|
|
BSSLAP_TaResponse ta_resp,
|
|
|
|
BSSLAP_Reject reject,
|
|
|
|
BSSLAP_Reset reset,
|
|
|
|
BSSLAP_Abort abort,
|
|
|
|
BSSLAP_TA_Layer3 ta_layer3,
|
|
|
|
BSSLAP_MS_PosCmd ms_pos_cmd,
|
|
|
|
BSSLAP_MS_PosResp ms_pos_resp,
|
|
|
|
BSSLAP_UTDOA_Req utdoa_req
|
|
|
|
// TODO: U-TDOA Resp
|
|
|
|
} with { variant "TAG(
|
|
|
|
ta_req, msg_type = BSSLAP_MSGT_TA_REQUEST;
|
|
|
|
ta_resp, msg_type = BSSLAP_MSGT_TA_RESPONSE;
|
|
|
|
reject, msg_type = BSSLAP_MSGT_REJECT;
|
|
|
|
reset, msg_type = BSSLAP_MSGT_RESET;
|
|
|
|
abort, msg_type = BSSLAP_MSGT_ABORT;
|
|
|
|
ta_layer3, msg_type = BSSLAP_MSGT_TA_LAYER3;
|
|
|
|
ms_pos_cmd, msg_type = BSSLAP_MSGT_MS_POS_CMD;
|
|
|
|
ms_pos_resp, msg_type = BSSLAP_MSGT_MS_POS_RESP;
|
|
|
|
utdoa_req, msg_type = BSSLAP_MSGT_UTDOA_REQ;
|
|
|
|
)"
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/* Section 5.2 */
|
|
|
|
type record BSSLAP_IE_TimingAdvance {
|
|
|
|
BSSLAP_IEI iei,
|
|
|
|
uint8_t ta
|
|
|
|
} with { variant "PRESENCE(iei = BSSLAP_IEI_TA)" };
|
|
|
|
|
|
|
|
|
|
|
|
/* Section 5.4 */
|
|
|
|
type record BSSLAP_IE_CellId {
|
|
|
|
BSSLAP_IEI iei,
|
|
|
|
uint16_t cell_id
|
|
|
|
} with { variant "PRESENCE(iei = BSSLAP_IEI_CELL_ID)" };
|
|
|
|
|
|
|
|
/* Section 5.8 */
|
|
|
|
type record BSSLAP_IE_ChanDesc {
|
|
|
|
BSSLAP_IEI iei,
|
|
|
|
OCT3 chan_desc
|
|
|
|
} with { variant "PRESENCE(iei = BSSLAP_IEI_CHAN_DESC)" };
|
|
|
|
|
|
|
|
|
|
|
|
/* Section 5.12 */
|
|
|
|
type record BSSLAP_IE_MeasRep {
|
|
|
|
BSSLAP_IEI iei,
|
|
|
|
uint8_t len,
|
|
|
|
octetstring meas_rep
|
|
|
|
} with {
|
|
|
|
variant "PRESENCE(iei = BSSLAP_IEI_MEAS_REP)"
|
|
|
|
variant (len) "LENGTHTO(meas_rep)"
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Section 5.14 */
|
|
|
|
type record BSSLAP_IE_Cause {
|
|
|
|
BSSLAP_IEI iei,
|
|
|
|
BSSLAP_Cause cause
|
|
|
|
} with { variant "PRESENCE(iei = BSSLAP_IEI_CAUSE)" };
|
|
|
|
type enumerated BSSLAP_Cause {
|
|
|
|
BSSLAP_CAUSE_CONGESTION ('00000000'B),
|
|
|
|
BSSLAP_CAUSE_CHAN_MODE_NOT_SUPP ('00000001'B),
|
|
|
|
BSSLAP_CAUSE_POS_PROC_NOT_SUPP ('00000010'B),
|
|
|
|
BSSLAP_CAUSE_OTHER_RADIO_EVT_FAIL ('00000011'B),
|
|
|
|
BSSLAP_CAUSE_INTRA_BSS_HO ('00000100'B),
|
|
|
|
BSSLAP_CAUSE_SUPERV_TIMER_EXPIRED ('00000101'B),
|
|
|
|
BSSLAP_CAUSE_INTER_BSS_HO ('00000110'B),
|
|
|
|
BSSLAP_CAUSE_LOSS_SIG_CONN_MS ('00000111'B),
|
|
|
|
BSSLAP_CAUSE_INCORR_SERV_CELL_ID ('00001000'B),
|
|
|
|
BSSLAP_CAUSE_BSSAP_LE_SEGMENT_ERR ('00001001'B),
|
|
|
|
BSSLAP_CAUSE_CONCUR_POS_PROC_NOT_EN ('00001010'B)
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Section 5.15 */
|
|
|
|
type record BSSLAP_IE_RrlpFlag {
|
|
|
|
BSSLAP_IEI iei,
|
|
|
|
BIT7 spare,
|
|
|
|
boolean not_a_pos_cmd
|
|
|
|
} with { variant "PRESENCE(iei = BSSLAP_IEI_RRLP_FLAG)" };
|
|
|
|
|
|
|
|
/* Section 5.16 */
|
|
|
|
type record BSSLAP_IE_Rrlp {
|
|
|
|
BSSLAP_IEI iei,
|
|
|
|
uint16_t len,
|
|
|
|
octetstring rrlp_apdu
|
|
|
|
} with {
|
|
|
|
variant "PRESENCE(iei = BSSLAP_IEI_RRLP)"
|
|
|
|
variant (len) "LENGTHTO(rrlp_apdu)"
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Section 5.17 */
|
|
|
|
type record BSSLAP_IE_CellIdList {
|
|
|
|
BSSLAP_IEI iei,
|
|
|
|
uint8_t len,
|
|
|
|
BSSLAP_CellIdList cell_id_list
|
|
|
|
} with {
|
|
|
|
variant "PRESENCE(iei = BSSLAP_IEI_CELL_ID_LIST)"
|
|
|
|
variant (len) "LENGTHTO(cell_id_list)"
|
|
|
|
};
|
|
|
|
type record of BSSLAP_CellIdListEnt BSSLAP_CellIdList;
|
|
|
|
type union BSSLAP_CellIdListEnt {
|
|
|
|
BIT4 spare,
|
|
|
|
BSSLAP_CellIdDiscr discr,
|
|
|
|
BSSLAP_CellIdListEntU u
|
|
|
|
}// with {
|
|
|
|
//};
|
|
|
|
type enumerated BSSLAP_CellIdDiscr {
|
|
|
|
BSSLAP_CIDL_DISC_CGI ('0000'B),
|
|
|
|
BSSLAP_CIDL_DISC_LAC_CI ('0001'B),
|
|
|
|
BSSLAP_CIDL_DISC_3G_1 ('0010'B),
|
|
|
|
BSSLAP_CIDL_DISC_3G_2 ('0011'B)
|
|
|
|
} with { variant "FIELDLENGTH(4)" };
|
|
|
|
type union BSSLAP_CellIdListEntU {
|
|
|
|
BSSLAP_CellIdListEntCGI cgi,
|
|
|
|
BSSLAP_CellIdListEntLACCI lac_ci,
|
|
|
|
BSSLAP_CellIdListEnt3G1 umts_cont1,
|
|
|
|
BSSLAP_CellIdListEnt3G2 umts_cont2
|
|
|
|
};
|
|
|
|
type record BSSLAP_CellIdListEntCGI {
|
|
|
|
HEX6n mcc_mnc,
|
|
|
|
uint16_t lac,
|
|
|
|
uint16_t ci
|
|
|
|
};
|
|
|
|
type record BSSLAP_CellIdListEntLACCI {
|
|
|
|
uint16_t lac,
|
|
|
|
uint16_t ci
|
|
|
|
};
|
|
|
|
type record BSSLAP_CellIdListEnt3G1 {
|
|
|
|
OCT9 cont
|
|
|
|
};
|
|
|
|
type record BSSLAP_CellIdListEnt3G2 {
|
|
|
|
OCT6 cont
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Section 5.18 */
|
|
|
|
type record BSSLAP_IE_EnhMeasRep {
|
|
|
|
BSSLAP_IEI iei,
|
|
|
|
uint8_t len,
|
|
|
|
octetstring meas_rep
|
|
|
|
} with {
|
|
|
|
variant "PRESENCE(iei = BSSLAP_IEI_ENH_MEAS_REP)"
|
|
|
|
variant (len) "LENGTHTO(meas_rep)"
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Section 5.19 */
|
|
|
|
type record BSSLAP_IE_LAC {
|
|
|
|
BSSLAP_IEI iei,
|
|
|
|
uint16_t lac
|
|
|
|
} with { variant "PRESENCE(iei = BSSLAP_IEI_LAC)" };
|
|
|
|
|
|
|
|
/* Section 5.20 */
|
|
|
|
type record BSSLAP_IE_FreqList {
|
|
|
|
BSSLAP_IEI iei,
|
|
|
|
uint8_t len,
|
|
|
|
octetstring freq_list
|
|
|
|
} with {
|
|
|
|
variant "PRESENCE(iei = BSSLAP_IEI_FREQ_LIST)"
|
|
|
|
variant (len) "LENGTHTO(freq_list)"
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Section 5.21 */
|
|
|
|
type record BSSLAP_IE_MsPower {
|
|
|
|
BSSLAP_IEI iei,
|
|
|
|
uint8_t ms_pwr
|
|
|
|
} with { variant "PRESENCE(iei = BSSLAP_IEI_MS_POWER)" };
|
|
|
|
|
|
|
|
/* Section 5.22 */
|
|
|
|
type record BSSLAP_IE_DeltaTimer {
|
|
|
|
BSSLAP_IEI iei,
|
|
|
|
uint8_t timer_val
|
|
|
|
} with { variant "PRESENCE(iei = BSSLAP_IEI_MS_POWER)" };
|
|
|
|
|
|
|
|
/* Section 5.23 */
|
|
|
|
type record BSSLAP_IE_ServingCellId {
|
|
|
|
BSSLAP_IEI iei,
|
|
|
|
uint8_t len,
|
|
|
|
octetstring val // FIXME: like TS 08.08
|
|
|
|
} with {
|
|
|
|
variant "PRESENCE(iei = BSSLAP_IEI_SERVING_CELL_ID)"
|
|
|
|
variant (len) "LENGTHTO(val)"
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Section 5.24 */
|
|
|
|
type record BSSLAP_IE_EncryptionKey {
|
|
|
|
BSSLAP_IEI iei,
|
|
|
|
OCT8 kc
|
|
|
|
} with { variant "PRESENCE(iei = BSSLAP_IEI_ENCR_KEY)" };
|
|
|
|
|
|
|
|
/* Section 5.25 */
|
|
|
|
type record BSSLAP_IE_CiphModeSet {
|
|
|
|
BSSLAP_IEI iei,
|
|
|
|
BIT1 spare,
|
|
|
|
BIT3 iei2,
|
|
|
|
BIT3 algo_id,
|
|
|
|
boolean sc
|
|
|
|
} with { variant "PRESENCE(iei = BSSLAP_IEI_CIPH_MODE_SET)" };
|
|
|
|
|
|
|
|
/* Section 5.26 */
|
|
|
|
type record BSSLAP_IE_ChanMode {
|
|
|
|
BSSLAP_IEI iei,
|
|
|
|
OCT1 mode
|
|
|
|
} with { variant "PRESENCE(iei = BSSLAP_IEI_CHAN_MODE)" };
|
|
|
|
|
|
|
|
/* Section 5.27 */
|
|
|
|
type record BSSLAP_IE_MultiRateConfig {
|
|
|
|
BSSLAP_IEI iei,
|
|
|
|
uint8_t len,
|
|
|
|
/* TODO: Unify with TS 48.018 */
|
|
|
|
uint3_t mr_speech_ver,
|
|
|
|
boolean nscb,
|
|
|
|
boolean icmi,
|
|
|
|
BIT1 spare,
|
|
|
|
uint2_t start_mode,
|
|
|
|
octetstring parameters
|
|
|
|
} with {
|
|
|
|
variant "PRESENCE(iei = BSSLAP_IEI_MR_CONFIG)"
|
|
|
|
variant (len) "LENGTHTO(mr_speech_ver,nscb,icmi,spare,start_mode,parameters)"
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Section 5.28 */
|
|
|
|
type record BSSLAP_IE_PollingRep {
|
|
|
|
BSSLAP_IEI iei,
|
|
|
|
BIT2 spare,
|
|
|
|
uint6_t num_rep
|
|
|
|
} with { variant "PRESENCE(iei = BSSLAP_IEI_MR_CONFIG)" };
|
|
|
|
|
|
|
|
/* Section 5.29 */
|
|
|
|
type record BSSLAP_IE_PacketChanDesc {
|
|
|
|
BSSLAP_IEI iei,
|
|
|
|
OCT4 chan_desc
|
|
|
|
} with { variant "PRESENCE(iei = BSSLAP_IEI_PACKET_CHAN_DESC)" };
|
|
|
|
|
|
|
|
/* Section 5.30 */
|
|
|
|
type record BSSLAP_IE_TLLI {
|
|
|
|
BSSLAP_IEI iei,
|
|
|
|
OCT4 tlli
|
|
|
|
} with { variant "PRESENCE(iei = BSSLAP_IEI_TLLI)" };
|
|
|
|
|
|
|
|
/* Section 5.31 */
|
|
|
|
type record BSSLAP_IE_TFI {
|
|
|
|
BSSLAP_IEI iei,
|
|
|
|
BIT3 spare,
|
|
|
|
uint5_t tfi
|
|
|
|
} with { variant "PRESENCE(iei = BSSLAP_IEI_TFI)" };
|
|
|
|
|
|
|
|
/* Section 5.32 */
|
|
|
|
type record BSSLAP_IE_StartingTime {
|
|
|
|
BSSLAP_IEI iei,
|
|
|
|
uint5_t t1_p,
|
|
|
|
uint6_t t3,
|
|
|
|
uint6_t t2
|
|
|
|
} with { variant "PRESENCE(iei = BSSLAP_IEI_TBF_START_TIME)" };
|
|
|
|
|
|
|
|
/* Section 5.33 */
|
|
|
|
type record BSSLAP_IE_LongEncryptionKey {
|
|
|
|
BSSLAP_IEI iei,
|
|
|
|
OCT16 kc
|
|
|
|
} with { variant "PRESENCE(iei = BSSLAP_IEI_LONG_ENCR_KEY)" };
|
|
|
|
|
|
|
|
/* Section 5.34 */
|
|
|
|
type record BSSLAP_IE_ConcurMethodF {
|
|
|
|
BSSLAP_IEI iei,
|
|
|
|
BSSLAP_ConcurMethodF flag
|
|
|
|
} with { variant "PRESENCE(iei = BSSLAP_IEI_CONCUR_POS_PROC_F)" };
|
|
|
|
type enumerated BSSLAP_ConcurMethodF {
|
|
|
|
BSSLAP_SECOND_CONCUR_ALLOWED ('00000000'B),
|
|
|
|
BSSLAP_SECOND_CONCUR_DISALLOWED ('11111111'B)
|
|
|
|
} with { variant "FIELDLENGTH(8)" };
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
external function enc_BSSLAP_PDU(in BSSLAP_PDU msg) return octetstring
|
|
|
|
with { extension "prototype(convert) encode(RAW)" };
|
|
|
|
external function dec_BSSLAP_PDU(in octetstring stream) return BSSLAP_PDU
|
|
|
|
with { extension "prototype(convert) decode(RAW)" };
|
|
|
|
|
|
|
|
template (value) BSSLAP_PDU ts_BSSLAP_TA_Req := {
|
|
|
|
ta_req := {
|
|
|
|
msg_type := BSSLAP_MSGT_TA_REQUEST
|
|
|
|
}
|
|
|
|
}
|
|
|
|
template (present) BSSLAP_PDU tr_BSSLAP_TA_Req := {
|
|
|
|
ta_req := {
|
|
|
|
msg_type := BSSLAP_MSGT_TA_REQUEST
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
template (value) BSSLAP_PDU
|
|
|
|
ts_BSSLAP_TA_Resp(uint16_t cell_id, uint8_t ta) := {
|
|
|
|
ta_resp := {
|
|
|
|
msg_type := BSSLAP_MSGT_TA_RESPONSE,
|
|
|
|
serving_cell_id := ts_BSSLAP_IE_CellId(cell_id),
|
|
|
|
timing_advance := ts_BSSLAP_IE_TA(ta),
|
|
|
|
meas_rep := omit,
|
|
|
|
enh_meas_rep := omit,
|
|
|
|
meas_cell_id_list := omit,
|
|
|
|
concur_meth_flag := omit
|
|
|
|
}
|
|
|
|
}
|
|
|
|
template (present) BSSLAP_PDU
|
|
|
|
tr_BSSLAP_TA_Resp(template (present) uint16_t cell_id, template (present) uint8_t ta) := {
|
|
|
|
ta_resp := {
|
|
|
|
msg_type := BSSLAP_MSGT_TA_RESPONSE,
|
|
|
|
serving_cell_id := tr_BSSLAP_IE_CellId(cell_id),
|
|
|
|
timing_advance := tr_BSSLAP_IE_TA(ta),
|
|
|
|
meas_rep := *,
|
|
|
|
enh_meas_rep := *,
|
|
|
|
meas_cell_id_list := *,
|
|
|
|
concur_meth_flag := *
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
template (value) BSSLAP_PDU
|
|
|
|
ts_BSSLAP_Reject(BSSLAP_Cause cause) := {
|
|
|
|
reject := {
|
|
|
|
msg_type := BSSLAP_MSGT_REJECT,
|
|
|
|
cause := ts_BSSLAP_IE_Cause(cause)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
template (present) BSSLAP_PDU
|
|
|
|
tr_BSSLAP_Reject(template (present) BSSLAP_Cause cause) := {
|
|
|
|
reject := {
|
|
|
|
msg_type := BSSLAP_MSGT_REJECT,
|
|
|
|
cause := tr_BSSLAP_IE_Cause(cause)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template (value) BSSLAP_PDU
|
|
|
|
ts_BSSLAP_Abort(BSSLAP_Cause cause) := {
|
|
|
|
abort := {
|
|
|
|
msg_type := BSSLAP_MSGT_ABORT,
|
|
|
|
cause := ts_BSSLAP_IE_Cause(cause)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
template (present) BSSLAP_PDU
|
|
|
|
tr_BSSLAP_Abort(template (present) BSSLAP_Cause cause) := {
|
|
|
|
abort := {
|
|
|
|
msg_type := BSSLAP_MSGT_ABORT,
|
|
|
|
cause := tr_BSSLAP_IE_Cause(cause)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-10-01 04:37:19 +00:00
|
|
|
template (value) BSSLAP_PDU ts_BSSLAP_TA_Layer3(uint8_t ta) := {
|
|
|
|
ta_layer3 := {
|
|
|
|
msg_type := BSSLAP_MSGT_TA_LAYER3,
|
|
|
|
timing_advance := ts_BSSLAP_IE_TA(ta),
|
|
|
|
meas_rep := omit,
|
|
|
|
enh_meas_rep := omit,
|
|
|
|
meas_cell_id_list := omit
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
template (present) BSSLAP_PDU tr_BSSLAP_TA_Layer3(template BSSLAP_IE_TimingAdvance timing_advance := *) := {
|
|
|
|
ta_layer3 := {
|
|
|
|
msg_type := BSSLAP_MSGT_TA_LAYER3,
|
|
|
|
timing_advance := timing_advance,
|
|
|
|
meas_rep := *,
|
|
|
|
enh_meas_rep := *,
|
|
|
|
meas_cell_id_list := *
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
template (value) BSSLAP_IE_ChanDesc ts_BSSLAP_IE_ChanDesc := {
|
|
|
|
iei := BSSLAP_IEI_CHAN_DESC,
|
|
|
|
chan_desc := '112233'O /* FIXME */
|
|
|
|
}
|
|
|
|
|
|
|
|
template (value) BSSLAP_PDU
|
|
|
|
ts_BSSLAP_Reset(uint16_t cell_id,
|
|
|
|
uint8_t ta,
|
|
|
|
BSSLAP_IE_ChanDesc chan_desc,
|
|
|
|
BSSLAP_Cause cause) := {
|
|
|
|
reset := {
|
|
|
|
msg_type := BSSLAP_MSGT_RESET,
|
|
|
|
cell_id := ts_BSSLAP_IE_CellId(cell_id),
|
|
|
|
timing_advance := ts_BSSLAP_IE_TA(ta),
|
|
|
|
chan_desc := chan_desc,
|
|
|
|
cause := tr_BSSLAP_IE_Cause(cause),
|
|
|
|
meas_rep := omit,
|
|
|
|
enh_meas_rep := omit,
|
|
|
|
meas_cell_id_list := omit,
|
|
|
|
lac := omit,
|
|
|
|
freq_list := omit,
|
|
|
|
chan_mode := omit,
|
|
|
|
mr_config := omit,
|
|
|
|
pkt_chan_desc := omit,
|
|
|
|
tlli := omit,
|
|
|
|
tfi := omit,
|
|
|
|
tbf_start_time := omit,
|
|
|
|
encr_key := omit,
|
|
|
|
ciph_mode_set := omit,
|
|
|
|
long_encr_key := omit
|
|
|
|
}
|
|
|
|
}
|
2020-03-29 15:34:11 +00:00
|
|
|
|
2020-10-01 04:37:19 +00:00
|
|
|
template (present) BSSLAP_PDU
|
|
|
|
tr_BSSLAP_Reset(template (present) BSSLAP_Cause cause) := {
|
|
|
|
reset := {
|
|
|
|
msg_type := BSSLAP_MSGT_RESET,
|
|
|
|
cell_id := ?,
|
|
|
|
timing_advance := ?,
|
|
|
|
chan_desc := ?,
|
|
|
|
cause := tr_BSSLAP_IE_Cause(cause),
|
|
|
|
meas_rep := *,
|
|
|
|
enh_meas_rep := *,
|
|
|
|
meas_cell_id_list := *,
|
|
|
|
lac := *,
|
|
|
|
freq_list := *,
|
|
|
|
chan_mode := *,
|
|
|
|
mr_config := *,
|
|
|
|
pkt_chan_desc := *,
|
|
|
|
tlli := *,
|
|
|
|
tfi := *,
|
|
|
|
tbf_start_time := *,
|
|
|
|
encr_key := *,
|
|
|
|
ciph_mode_set := *,
|
|
|
|
long_encr_key := *
|
|
|
|
}
|
|
|
|
}
|
2020-03-29 15:34:11 +00:00
|
|
|
|
|
|
|
template (value) BSSLAP_IE_TimingAdvance ts_BSSLAP_IE_TA(uint8_t ta) := {
|
|
|
|
iei := BSSLAP_IEI_TA,
|
|
|
|
ta := ta
|
|
|
|
}
|
|
|
|
template (present) BSSLAP_IE_TimingAdvance tr_BSSLAP_IE_TA(template (present) uint8_t ta) := {
|
|
|
|
iei := BSSLAP_IEI_TA,
|
|
|
|
ta := ta
|
|
|
|
}
|
|
|
|
|
|
|
|
template (value) BSSLAP_IE_CellId ts_BSSLAP_IE_CellId(uint16_t cell_id) := {
|
|
|
|
iei := BSSLAP_IEI_CELL_ID,
|
|
|
|
cell_id := cell_id
|
|
|
|
}
|
|
|
|
template (present) BSSLAP_IE_CellId tr_BSSLAP_IE_CellId(template (present) uint16_t cell_id) := {
|
|
|
|
iei := BSSLAP_IEI_CELL_ID,
|
|
|
|
cell_id := cell_id
|
|
|
|
}
|
|
|
|
|
|
|
|
template (value) BSSLAP_IE_Cause ts_BSSLAP_IE_Cause(BSSLAP_Cause cause) := {
|
|
|
|
iei := BSSLAP_IEI_CAUSE,
|
|
|
|
cause := cause
|
|
|
|
}
|
|
|
|
template (present) BSSLAP_IE_Cause tr_BSSLAP_IE_Cause(template (present) BSSLAP_Cause cause) := {
|
|
|
|
iei := BSSLAP_IEI_CAUSE,
|
|
|
|
cause := cause
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} with { encode "RAW" };
|