Osmocom_Gb_types: add RIM templates
The template set we use for testing the GB (BSSGB) interface on osmo-sgsn and osmo-pcu lacks templates to generate RIM (ran information management) messages. The records and unions are already specified in BSSGP_Types.ttcn, we just need to form templates in order to be able to use them. Change-Id: Ic495e0bb6ceb2b65cbc7c3da7ee519a013aede55 Related: SYS#5103
This commit is contained in:
parent
14c0445cde
commit
b76a279edf
|
@ -2211,6 +2211,812 @@ octetstring sdu) := {
|
|||
}
|
||||
}
|
||||
|
||||
/* 3GPP TS 48.018 11.3.61 */
|
||||
const OCT1 RIM_APP_ID_NACC := '01'O;
|
||||
const OCT1 RIM_APP_ID_SI3 := '02'O;
|
||||
const OCT1 RIM_APP_ID_MBMS_DATA_CH := '03'O;
|
||||
const OCT1 RIM_APP_ID_SON_TRANSF := '04'O;
|
||||
const OCT1 RIM_APP_ID_UTRA_SI := '05'O;
|
||||
template (value) RIM_Application_Identity ts_RIM_Application_Identity(OCT1 app_id) := {
|
||||
iEI := '4B'O,
|
||||
ext := '1'B,
|
||||
lengthIndicator := {
|
||||
length1 := 1
|
||||
},
|
||||
rIMApplicationIdentity := app_id
|
||||
}
|
||||
|
||||
|
||||
/* 3GPP TS 48.018 11.3.62 */
|
||||
template (value) RIM_Sequence_Number ts_RIM_Sequence_Number(integer seq) := {
|
||||
iEI := '4C'O,
|
||||
ext := '1'B,
|
||||
lengthIndicator := {
|
||||
length1 := 4
|
||||
},
|
||||
rIMSequenceNumber := int2oct(seq, 4)
|
||||
}
|
||||
|
||||
/* 3GPP TS 48.018 11.3.62a.1 */
|
||||
template (value) RAN_Information_Request_RIM_Container
|
||||
ts_RAN_Information_Request_RIM_Container(template (value) RIM_Application_Identity app_id,
|
||||
template (value) RIM_Sequence_Number seq,
|
||||
template (value) RIM_PDU_Indications ind,
|
||||
template (omit) RIM_Protocol_Version_Number ver := omit,
|
||||
template (omit) RAN_Information_Request_Application_Container app_cont := omit,
|
||||
template (omit) SON_Transfer_Application_Identity_TLV son_app_id := omit) := {
|
||||
iEI := '57'O,
|
||||
ext := '1'B,
|
||||
lengthIndicator := {
|
||||
length1 := 0 /* overwritten */
|
||||
},
|
||||
rIM_Application_Identity := app_id,
|
||||
rIM_Sequence_Number := seq,
|
||||
rIM_PDU_Indications := ind,
|
||||
rIM_Protocol_Version_Number := ver,
|
||||
application_Container := app_cont,
|
||||
sON_Transfer_Application_Identity_TLV := son_app_id
|
||||
}
|
||||
template RAN_Information_Request_RIM_Container
|
||||
tr_RAN_Information_Request_RIM_Container(template RIM_Application_Identity app_id := ?,
|
||||
template RIM_Sequence_Number seq := ?,
|
||||
template RIM_PDU_Indications ind := ?,
|
||||
template RIM_Protocol_Version_Number ver := *,
|
||||
template RAN_Information_Request_Application_Container app_cont := *,
|
||||
template SON_Transfer_Application_Identity_TLV son_app_id := *) := {
|
||||
iEI := '57'O,
|
||||
ext := '1'B,
|
||||
lengthIndicator := {
|
||||
length1 := ?
|
||||
},
|
||||
rIM_Application_Identity := app_id,
|
||||
rIM_Sequence_Number := seq,
|
||||
rIM_PDU_Indications := ind,
|
||||
rIM_Protocol_Version_Number := ver,
|
||||
application_Container := app_cont,
|
||||
sON_Transfer_Application_Identity_TLV := son_app_id
|
||||
}
|
||||
|
||||
|
||||
/* 3GPP TS 48.018 11.3.62a.2 */
|
||||
template (value) RAN_Information_RIM_Container
|
||||
ts_RAN_Information_RIM_Container(template (value) RIM_Application_Identity app_id,
|
||||
template (value) RIM_Sequence_Number seq,
|
||||
template (value) RIM_PDU_Indications ind,
|
||||
template (omit) RIM_Protocol_Version_Number ver := omit,
|
||||
template (omit) ApplContainer_or_ApplErrContainer app_cont_or_app_err := omit,
|
||||
template (omit) SON_Transfer_Application_Identity_TLV son_app_id := omit) := {
|
||||
|
||||
iEI := '58'O,
|
||||
ext := '1'B,
|
||||
lengthIndicator := {
|
||||
length1 := 0 /* overwritten */
|
||||
},
|
||||
rIM_Application_Identity := app_id,
|
||||
rIM_Sequence_Number := seq,
|
||||
rIM_PDU_Indications := ind,
|
||||
rIM_Protocol_Version_Number := ver,
|
||||
applContainer_or_ApplErrContainer := app_cont_or_app_err,
|
||||
sON_Transfer_Application_Identity := son_app_id
|
||||
}
|
||||
template (value) ApplContainer_or_ApplErrContainer
|
||||
tsu_ApplContainer_or_ApplErrContainer_NACC(template (value) ApplContainer_or_ApplErrContainer_NACC cont) := {
|
||||
nacc := cont
|
||||
}
|
||||
template (value) ApplContainer_or_ApplErrContainer
|
||||
tsu_ApplContainer_or_ApplErrContainer_SI3(template (value) ApplContainer_or_ApplErrContainer_SI3 cont) := {
|
||||
si3 := cont
|
||||
}
|
||||
template (value) ApplContainer_or_ApplErrContainer
|
||||
tsu_ApplContainer_or_ApplErrContainer_MBMS_data_channel(template (value) ApplContainer_or_ApplErrContainer_MBMS_data_channel cont) := {
|
||||
mBMS_data_channel := cont
|
||||
}
|
||||
template (value) ApplContainer_or_ApplErrContainer_NACC
|
||||
tsu_ApplContainer_NACC(template (value) BssgpCellId cid, boolean psi_type, integer si_psi_num, octetstring si_psi) := {
|
||||
application_Container := ts_RAN_Information_Application_Container_NACC(cid, psi_type, si_psi_num, si_psi)
|
||||
}
|
||||
template (value) ApplContainer_or_ApplErrContainer_NACC
|
||||
tsu_ApplErrContainer_NACC(template (value) BssgpCellId cid,
|
||||
integer cause,
|
||||
template (value) Application_Container_IE_NACC app_cont) := {
|
||||
application_Error_Container := ts_Application_Error_Container_NACC(cid, cause, app_cont)
|
||||
}
|
||||
template (value) ApplContainer_or_ApplErrContainer_SI3
|
||||
tsu_ApplContainer_SI3(template (value) BssgpCellId cid, template (value) SI3 si3) := {
|
||||
application_Container := ts_RAN_Information_Application_Container_SI3(cid, si3)
|
||||
}
|
||||
template (value) ApplContainer_or_ApplErrContainer_SI3
|
||||
tsu_ApplErrContainer_SI3(template (value) BssgpCellId cid,
|
||||
integer cause,
|
||||
template (value) Application_Container_IE_SI3 app_cont) := {
|
||||
application_Error_Container := ts_Application_Error_Container_SI3(cid, cause, app_cont)
|
||||
}
|
||||
template (value) ApplContainer_or_ApplErrContainer_MBMS_data_channel
|
||||
tsu_ApplContainer_MBMS_data_channel(template (value) BssgpCellId cid, octetstring data_ch_report) := {
|
||||
application_Container := ts_RAN_Information_Application_Container_MBMS_data_channel(cid, data_ch_report)
|
||||
}
|
||||
template (value) ApplContainer_or_ApplErrContainer_MBMS_data_channel
|
||||
tsu_ApplErrContainer_MBMS_data_channel(template (value) BssgpCellId cid,
|
||||
integer cause,
|
||||
template (value) Application_Container_IE_MBMS_data_channel app_cont) := {
|
||||
application_Error_Container := ts_Application_Error_Container_MBMS_data_channel(cid, cause, app_cont)
|
||||
}
|
||||
|
||||
/* 3GPP TS 48.018 11.3.62a.3 */
|
||||
template (value) RAN_Information_Ack_RIM_Container
|
||||
ts_RAN_Information_Ack_RIM_Container(template (value) RIM_Application_Identity app_id,
|
||||
template (value) RIM_Sequence_Number seq,
|
||||
template (omit) RIM_Protocol_Version_Number ver := omit,
|
||||
template (omit) SON_Transfer_Application_Identity_TLV son_app_id := omit) := {
|
||||
iEI := '5A'O,
|
||||
ext := '1'B,
|
||||
lengthIndicator := {
|
||||
length1 := 0 /* overwritten */
|
||||
},
|
||||
rIM_Application_Identity := app_id,
|
||||
rIM_Sequence_Number := seq,
|
||||
rIM_Protocol_Version_Number := ver,
|
||||
sON_Transfer_Application_Identity := son_app_id
|
||||
}
|
||||
|
||||
/* 3GPP TS 48.018 11.3.62a.4 */
|
||||
template (value) RAN_Information_Error_RIM_Container
|
||||
ts_RAN_Information_Error_RIM_Container(template (value) RIM_Application_Identity app_id,
|
||||
template (value) Cause_BSSGP cause,
|
||||
template (omit) RIM_Protocol_Version_Number ver := omit,
|
||||
PDU_BSSGP pdu,
|
||||
template (omit) SON_Transfer_Application_Identity_TLV son_app_id := omit) := {
|
||||
iEI := '5B'O,
|
||||
ext := '1'B,
|
||||
lengthIndicator := {
|
||||
length1 := 0 /* overwritten */
|
||||
},
|
||||
rIM_Application_Identity := app_id,
|
||||
rIM_cause := cause,
|
||||
rIM_Protocol_Version_Number := ver,
|
||||
pDU_in_Error:= {
|
||||
iEI := '15'O,
|
||||
ext := '1'B,
|
||||
lengthIndicator := {
|
||||
length1 := 0 /* overwritten */
|
||||
},
|
||||
erroneous_BSSGP_PDU := enc_PDU_BSSGP(pdu)
|
||||
},
|
||||
sON_Transfer_Application_Identity := son_app_id
|
||||
}
|
||||
|
||||
/* 3GPP TS 48.018 11.3.62a.5 */
|
||||
template (value) RAN_Information_Application_Error_RIM_Container
|
||||
ts_RAN_Information_Application_Error_RIM_Container(template (value) RIM_Application_Identity app_id,
|
||||
template (value) RIM_Sequence_Number seq,
|
||||
template (value) RIM_PDU_Indications ind,
|
||||
template (omit) RIM_Protocol_Version_Number ver := omit,
|
||||
template (value) Application_Error_Container cont,
|
||||
template (omit) SON_Transfer_Application_Identity_TLV son_app_id := omit) := {
|
||||
iEI := '59'O,
|
||||
ext := '1'B,
|
||||
lengthIndicator := {
|
||||
length1 := 0 /* overwritten */
|
||||
},
|
||||
rIM_Application_Identity := app_id,
|
||||
rIM_Sequence_Number := seq,
|
||||
rIM_PDU_Indications := ind,
|
||||
rIM_Protocol_Version_Number := ver,
|
||||
application_Error_Container := cont,
|
||||
sON_Transfer_Application_Identity := son_app_id
|
||||
}
|
||||
|
||||
|
||||
/* 3GPP TS 48.018 11.3.63.1 */
|
||||
template (value) RAN_Information_Request_Application_Container
|
||||
tsu_RAN_Information_Request_Application_Container_NACC(template (value) BssgpCellId cid) := {
|
||||
nacc := ts_RAN_Information_Request_Application_Container_NACC(cid)
|
||||
}
|
||||
template (value) RAN_Information_Request_Application_Container
|
||||
tsu_RAN_Information_Request_Application_Container_SI3(template (value) BssgpCellId cid) := {
|
||||
si3 := ts_RAN_Information_Request_Application_Container_SI3(cid)
|
||||
}
|
||||
template (value) RAN_Information_Request_Application_Container
|
||||
tsu_RAN_Information_Request_Application_Container_MBMS_data_channel(template (value) BssgpCellId cid) := {
|
||||
mBMS_data_channel := ts_RAN_Information_Request_Application_Container_MBMS_data_channel(cid)
|
||||
}
|
||||
|
||||
/* NOTE: The type description of reporting_Cell_Identifier in chapter 11.3.63.1, version V10.6.0 (2012-07) of
|
||||
* 3GPP TS 48.018 clearly states: "Reporting Cell Identifier: This field is encoded as the Cell Identifier
|
||||
* defined in sub-clause 11.3.9". However this seems to be an error in the specification, because the
|
||||
* specifiction in Table 11.3.63.1.1 already has a length field an an IEI defined. Keeping the IEI and lenght
|
||||
* of the BSSGP cell identifier in addition would no make sense. Also in the chapters below the specifiction
|
||||
* of the IEs are similar and there it says "Reporting Cell Identifier: This field is encoded as the value
|
||||
* part of the Cell Identifier IE defined in sub-clause 11.3.9, not including IEI and Length Indicator.",
|
||||
* which actually makes sense. */
|
||||
|
||||
/* 3GPP TS 48.018 11.3.63.1.1 */
|
||||
template (value) RAN_Information_Request_Application_Container_NACC
|
||||
ts_RAN_Information_Request_Application_Container_NACC(template (value) BssgpCellId cid) := {
|
||||
iEI := '4D'O,
|
||||
ext := '1'B,
|
||||
lengthIndicator := {
|
||||
length1 := 0 /* overwritten */
|
||||
},
|
||||
reporting_Cell_Identifier := t_Cell_Identifier_V(cid)
|
||||
}
|
||||
|
||||
/* 3GPP TS 48.018 11.3.63.1.2 */
|
||||
template (value) RAN_Information_Request_Application_Container_SI3
|
||||
ts_RAN_Information_Request_Application_Container_SI3(template (value) BssgpCellId cid) := {
|
||||
iEI := '4D'O,
|
||||
ext := '1'B,
|
||||
lengthIndicator := {
|
||||
length1 := 0 /* overwritten */
|
||||
},
|
||||
reporting_Cell_Identifier := t_Cell_Identifier_V(cid)
|
||||
}
|
||||
|
||||
/* 3GPP TS 48.018 11.3.63.1.3 */
|
||||
template (value) RAN_Information_Request_Application_Container_MBMS_data_channel
|
||||
ts_RAN_Information_Request_Application_Container_MBMS_data_channel(template (value) BssgpCellId cid) := {
|
||||
iEI := '4D'O,
|
||||
ext := '1'B,
|
||||
lengthIndicator := {
|
||||
length1 := 0 /* overwritten */
|
||||
},
|
||||
reporting_Cell_Identifier := t_Cell_Identifier_V(cid)
|
||||
}
|
||||
|
||||
/* 3GPP TS 48.018 11.3.63.2.1 */
|
||||
template (value) RAN_Information_Application_Container_NACC
|
||||
ts_RAN_Information_Application_Container_NACC(template (value) BssgpCellId cid, boolean psi_type, integer si_psi_num, octetstring si_psi) := {
|
||||
iEI := '4E'O,
|
||||
ext := '1'B,
|
||||
lengthIndicator := {
|
||||
length1 := 0 /* overwritten */
|
||||
},
|
||||
reporting_Cell_Identifier := t_Cell_Identifier_V(cid),
|
||||
typeBit := bool2bit(psi_type),
|
||||
number_of_SI_PSI := int2bit(si_psi_num, 7),
|
||||
sI_PSI := si_psi
|
||||
}
|
||||
|
||||
/* 3GPP TS 48.018 11.3.63.2.2 */
|
||||
template (value) RAN_Information_Application_Container_SI3
|
||||
ts_RAN_Information_Application_Container_SI3(template (value) BssgpCellId cid, template (value) SI3 si3) := {
|
||||
iEI := '4E'O,
|
||||
ext := '1'B,
|
||||
lengthIndicator := {
|
||||
length1 := 0 /* overwritten */
|
||||
},
|
||||
reporting_Cell_Identifier := t_Cell_Identifier_V(cid),
|
||||
sI3 := si3
|
||||
}
|
||||
|
||||
/* 3GPP TS 48.018 11.3.63.2.3 */
|
||||
template (value) RAN_Information_Application_Container_MBMS_data_channel
|
||||
ts_RAN_Information_Application_Container_MBMS_data_channel(template (value) BssgpCellId cid, octetstring data_ch_report) := {
|
||||
iEI := '4E'O,
|
||||
ext := '1'B,
|
||||
lengthIndicator := {
|
||||
length1 := 0 /* overwritten */
|
||||
},
|
||||
reporting_Cell_Identifier := t_Cell_Identifier_V(cid),
|
||||
mBMS_data_channel_report := data_ch_report
|
||||
}
|
||||
|
||||
|
||||
/* 3GPP TS 48.018 11.3.64 */
|
||||
template (value) Application_Error_Container
|
||||
tsu_Application_Error_Container_NACC(template (value) BssgpCellId cid,
|
||||
integer cause,
|
||||
template (value) Application_Container_IE_NACC app_cont) := {
|
||||
nacc := ts_Application_Error_Container_NACC(cid, cause, app_cont)
|
||||
}
|
||||
template (value) Application_Error_Container
|
||||
tsu_Application_Error_Container_SI3(template (value) BssgpCellId cid,
|
||||
integer cause,
|
||||
template (value) Application_Container_IE_SI3 app_cont) := {
|
||||
si3 := ts_Application_Error_Container_SI3(cid, cause, app_cont)
|
||||
}
|
||||
template (value) Application_Error_Container
|
||||
tsu_Application_Error_Container_MBMS_data_channel(template (value) BssgpCellId cid,
|
||||
integer cause,
|
||||
template (value) Application_Container_IE_MBMS_data_channel app_cont) := {
|
||||
mBMS_data_channel := ts_Application_Error_Container_MBMS_data_channel(cid, cause, app_cont)
|
||||
}
|
||||
|
||||
/* 3GPP TS 48.018 11.3.64.1 */
|
||||
template (value) Application_Error_Container_NACC
|
||||
ts_Application_Error_Container_NACC(template (value) BssgpCellId cid,
|
||||
integer cause,
|
||||
template (value) Application_Container_IE_NACC app_cont) := {
|
||||
iEI := '56'O,
|
||||
ext := '1'B,
|
||||
lengthIndicator := {
|
||||
length1 := 0 /* overwritten */
|
||||
},
|
||||
nACC_cause := int2oct(cause, 1),
|
||||
erroneousApplicationContainer := app_cont
|
||||
}
|
||||
template (value) Application_Container_IE_NACC
|
||||
tsu_Application_Container_IE_NACC_req(template (value) BssgpCellId cid) := {
|
||||
rAN_Information_Request_Application_Container := ts_RAN_Information_Request_Application_Container_NACC(cid)
|
||||
}
|
||||
template (value) Application_Container_IE_NACC
|
||||
tsu_Application_Container_IE_NACC(template (value) BssgpCellId cid, boolean psi_type, integer si_psi_num, octetstring si_psi) := {
|
||||
rAN_Information_Application_Container := ts_RAN_Information_Application_Container_NACC(cid, psi_type, si_psi_num, si_psi)
|
||||
}
|
||||
|
||||
/* 3GPP TS 48.018 11.3.64.2 */
|
||||
template (value) Application_Error_Container_SI3
|
||||
ts_Application_Error_Container_SI3(template (value) BssgpCellId cid,
|
||||
integer cause,
|
||||
template (value) Application_Container_IE_SI3 app_cont) := {
|
||||
iEI := '56'O,
|
||||
ext := '1'B,
|
||||
lengthIndicator := {
|
||||
length1 := 0 /* overwritten */
|
||||
},
|
||||
sI3_cause := int2oct(cause, 1),
|
||||
erroneousApplicationContainer := app_cont
|
||||
}
|
||||
template (value) Application_Container_IE_SI3
|
||||
tsu_Application_Container_IE_SI3_req(template (value) BssgpCellId cid) := {
|
||||
rAN_Information_Request_Application_Container := ts_RAN_Information_Request_Application_Container_SI3(cid)
|
||||
}
|
||||
template (value) Application_Container_IE_SI3
|
||||
tsu_Application_Container_IE_SI3(template (value) BssgpCellId cid, template (value) SI3 si3) := {
|
||||
rAN_Information_Application_Container := ts_RAN_Information_Application_Container_SI3(cid, si3)
|
||||
}
|
||||
|
||||
/* 3GPP TS 48.018 11.3.64.3 */
|
||||
template (value) Application_Error_Container_MBMS_data_channel
|
||||
ts_Application_Error_Container_MBMS_data_channel(template (value) BssgpCellId cid,
|
||||
integer cause,
|
||||
template (value) Application_Container_IE_MBMS_data_channel app_cont) := {
|
||||
iEI := '56'O,
|
||||
ext := '1'B,
|
||||
lengthIndicator := {
|
||||
length1 := 0 /* overwritten */
|
||||
},
|
||||
mBMS_data_channel_cause := int2oct(cause, 1),
|
||||
erroneousApplicationContainer := app_cont
|
||||
}
|
||||
template (value) Application_Container_IE_MBMS_data_channel
|
||||
tsu_Application_Container_IE_MBMS_data_channel_req(template (value) BssgpCellId cid) := {
|
||||
rAN_Information_Request_Application_Container := ts_RAN_Information_Request_Application_Container_MBMS_data_channel(cid)
|
||||
}
|
||||
template (value) Application_Container_IE_MBMS_data_channel
|
||||
tsu_Application_Container_IE_MBMS_data_channel(template (value) BssgpCellId cid, octetstring data_ch_report) := {
|
||||
rAN_Information_Application_Container := ts_RAN_Information_Application_Container_MBMS_data_channel(cid, data_ch_report)
|
||||
}
|
||||
|
||||
|
||||
/* 3GPP TS 44.018 10.5.1.3 -> 3GPP TS 24.008 10.5.1.3 */
|
||||
function t_LocationAreaIdentification(template BssgpCellId cid) return template BSSGP_Types.LocationAreaIdentification {
|
||||
var template BSSGP_Types.LocationAreaIdentification ret := {
|
||||
mccDigit1 := ?,
|
||||
mccDigit2 := ?,
|
||||
mccDigit3 := ?,
|
||||
mncDigit3 := ?,
|
||||
mncDigit1 := ?,
|
||||
mncDigit2 := ?,
|
||||
lac := ?
|
||||
}
|
||||
if (istemplatekind(cid, "omit")) {
|
||||
return omit;
|
||||
} else if (istemplatekind(cid, "*")) {
|
||||
return *;
|
||||
} else if (istemplatekind(cid, "?")) {
|
||||
return ?;
|
||||
}
|
||||
if (isvalue(cid) and isvalue(cid.ra_id) and isvalue(cid.ra_id.lai)) {
|
||||
if (isvalue(cid.ra_id.lai.mcc_mnc)) {
|
||||
ret.mccDigit1 := cid.ra_id.lai.mcc_mnc[0];
|
||||
ret.mccDigit2 := cid.ra_id.lai.mcc_mnc[1];
|
||||
ret.mccDigit3 := cid.ra_id.lai.mcc_mnc[2];
|
||||
ret.mncDigit3 := cid.ra_id.lai.mcc_mnc[3];
|
||||
ret.mncDigit1 := cid.ra_id.lai.mcc_mnc[4];
|
||||
ret.mncDigit2 := cid.ra_id.lai.mcc_mnc[5];
|
||||
}
|
||||
if (isvalue(cid.ra_id.lai.lac)) {
|
||||
ret.lac := f_oct_or_wc(cid.ra_id.lai.lac, 2);
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* 3GPP TS 44.018 10.5.2.11 */
|
||||
template (value) ControlChannelDescription ts_ControlChannelDescription(integer ccch_conf,
|
||||
integer bs_ag_blks_res,
|
||||
boolean att,
|
||||
boolean mscr,
|
||||
integer bs_pa_mfrms,
|
||||
BIT2 cbq3,
|
||||
integer t3212) := {
|
||||
cCCH_Conf := int2bit(ccch_conf, 3),
|
||||
bS_AG_BLKS_RES := int2bit(bs_ag_blks_res, 3),
|
||||
aTT := bool2bit(att),
|
||||
mSCR := bool2bit(mscr),
|
||||
bS_PA_MFRMS := int2bit(bs_pa_mfrms, 3),
|
||||
spare1 := '00'B,
|
||||
cBQ3 := cbq3,
|
||||
spare2 := '0'B,
|
||||
t3212 := int2oct(t3212, 1)
|
||||
}
|
||||
|
||||
/* 3GPP TS 44.018 10.5.2.3 */
|
||||
template (value) CellOptions ts_CellOptions(integer radio_link_timeout,
|
||||
BIT3 dtx,
|
||||
boolean pwrc) := {
|
||||
radioLinkTimeout := int2bit(radio_link_timeout, 4),
|
||||
dTX1 := dtx[0] & dtx[1],
|
||||
pWRC := bool2bit(pwrc),
|
||||
dtx2 := dtx[2]
|
||||
}
|
||||
|
||||
/* 3GPP TS 44.018 10.5.2.4 */
|
||||
template (value) CellSelectionParameters ts_CellSelectionParameters(integer ms_txpwr_max_cch,
|
||||
integer cell_reselection_hysteresis,
|
||||
integer rxlev_access_min,
|
||||
boolean neci,
|
||||
boolean acs) := {
|
||||
mS_TXPWR_MAX_CCH := int2bit(ms_txpwr_max_cch, 5),
|
||||
cellReselectHysterisis := int2bit(cell_reselection_hysteresis, 3),
|
||||
rXLEV_Access_Min := int2bit(rxlev_access_min, 6),
|
||||
nECI := bool2bit(neci),
|
||||
aCS := bool2bit(acs)
|
||||
}
|
||||
|
||||
/* 3GPP TS 44.018 10.5.2.29 */
|
||||
template (value) RACHControlParameters ts_RACHControlParameters(boolean re,
|
||||
boolean cell_barr_access,
|
||||
integer tx_integer,
|
||||
integer max_retrans,
|
||||
integer ac_15_to_8,
|
||||
integer ac_7_to_0) := {
|
||||
rE := bool2bit(re),
|
||||
cellBarrAccess := bool2bit(cell_barr_access),
|
||||
tX_Integer := int2bit(tx_integer, 4),
|
||||
maxRetrans := int2bit(max_retrans, 2),
|
||||
aC_15_to_8 := int2oct(ac_15_to_8, 1),
|
||||
aC_7_to_0 := int2oct(ac_7_to_0, 1)
|
||||
}
|
||||
|
||||
/* 3GPP TS 44.018 9.1.35 */
|
||||
template (value) SI3 ts_SI3(integer cell_id,
|
||||
template (value) BSSGP_Types.LocationAreaIdentification lai,
|
||||
template (value) ControlChannelDescription cch_descr,
|
||||
template (value) CellOptions cell_opt,
|
||||
template (value) CellSelectionParameters cell_sel_par,
|
||||
template (value) RACHControlParameters rach_ctrl_par,
|
||||
OCT4 rest_octets) := {
|
||||
sI3MessageType := '1B'O,
|
||||
cellIdentity := int2oct(cell_id, 2),
|
||||
locationAreaIdentification := lai,
|
||||
controlChannelDescription := cch_descr,
|
||||
cellOptions := cell_opt,
|
||||
cellSelectionParameters := cell_sel_par,
|
||||
rACHControlParameters := rach_ctrl_par,
|
||||
sI3RestOctets := rest_octets
|
||||
}
|
||||
|
||||
|
||||
/* 3GPP TS 48.018 11.3.65 */
|
||||
const BIT3 RIM_PDU_TYPE_STOP := '000'B;
|
||||
const BIT3 RIM_PDU_TYPE_SING_REP := '001'B;
|
||||
const BIT3 RIM_PDU_TYPE_MULT_REP := '010'B;
|
||||
template (value) RIM_PDU_Indications ts_RIM_PDU_Indications(boolean ack, BIT3 type_ext) := {
|
||||
iEI := '4F'O,
|
||||
ext := '1'B,
|
||||
lengthIndicator := {
|
||||
length1 := 1
|
||||
},
|
||||
ack := bool2bit(ack),
|
||||
pDU_Type_Extension := type_ext,
|
||||
reserved := '0000'B
|
||||
}
|
||||
|
||||
/* 3GPP TS 48.018 11.3.67 */
|
||||
template (value) RIM_Protocol_Version_Number ts_RIM_Protocol_Version_Number(integer ver) := {
|
||||
iEI := '55'O,
|
||||
ext := '1'B,
|
||||
lengthIndicator := {
|
||||
length1 := 1
|
||||
},
|
||||
rIMProtocolVersionNumber := int2oct(ver, 1)
|
||||
}
|
||||
|
||||
/* 3GPP TS 48.018 11.3.70 */
|
||||
const HEX1 RIM_ADDR_GERAN_CELL_ID := '0'H;
|
||||
const HEX1 RIM_ADDR_UTRAN_RNC_ID := '1'H;
|
||||
const HEX1 RIM_ADDR_EUTRAN_NODEB_ID := '2'H;
|
||||
const HEX1 RIM_ADDR_EHRPD_SECTOR_ID := '3'H;
|
||||
template (value) RIM_Routing_Information ts_RIM_Routing_Information(HEX1 addr_discr, template (value) RIM_Routing_Address addr) := {
|
||||
iEI := '54'O,
|
||||
ext := '1'B,
|
||||
lengthIndicator := {
|
||||
length1 := 0 /* overwritten */
|
||||
},
|
||||
rIMRoutingAddressDiscriminator := addr_discr,
|
||||
spare := '0'H,
|
||||
rIM_Routing_Address := addr
|
||||
}
|
||||
template RIM_Routing_Information tr_RIM_Routing_Information(template HEX1 addr_discr := ?, template RIM_Routing_Address addr := ?) := {
|
||||
iEI := '54'O,
|
||||
ext := '1'B,
|
||||
lengthIndicator := {
|
||||
length1 := ?
|
||||
},
|
||||
rIMRoutingAddressDiscriminator := addr_discr,
|
||||
spare := '0'H,
|
||||
rIM_Routing_Address := addr
|
||||
}
|
||||
|
||||
template RIM_Routing_Address t_RIM_Routing_Address_cid(template BssgpCellId cid := ?) := {
|
||||
cell_Identifier := t_Cell_Identifier_V(cid)
|
||||
}
|
||||
template RIM_Routing_Address t_RIM_Routing_Address_rncid(template BssgpCellId cid := ?, template integer rnc_id := ?) := {
|
||||
globalRNCID := t_GlobalRNC_ID_BSSGP(cid, rnc_id)
|
||||
}
|
||||
template RIM_Routing_Address t_RIM_Routing_Address_enbid(template BssgpCellId cid := ?, template integer tac := ?, template octetstring gnbid := ?) := {
|
||||
eNB_Identifier := t_ENB_Identifier_V(cid, tac, gnbid)
|
||||
}
|
||||
template RIM_Routing_Address t_RIM_Routing_Address_sector(template octetstring sector := ?) := {
|
||||
eHRPD_SectorID := sector
|
||||
}
|
||||
|
||||
function t_Cell_Identifier_V(template BssgpCellId cid) return template Cell_Identifier_V {
|
||||
var template Cell_Identifier_V ret := {
|
||||
mccDigit1 := ?,
|
||||
mccDigit2 := ?,
|
||||
mccDigit3 := ?,
|
||||
mncDigit3 := ?,
|
||||
mncDigit1 := ?,
|
||||
mncDigit2 := ?,
|
||||
lac := ?,
|
||||
rac := ?,
|
||||
cI_value := ?
|
||||
}
|
||||
if (istemplatekind(cid, "omit")) {
|
||||
return omit;
|
||||
} else if (istemplatekind(cid, "*")) {
|
||||
return *;
|
||||
} else if (istemplatekind(cid, "?")) {
|
||||
return ?;
|
||||
}
|
||||
if (isvalue(cid) and isvalue(cid.ra_id) and isvalue(cid.ra_id.lai)) {
|
||||
if (isvalue(cid.ra_id.lai.mcc_mnc)) {
|
||||
ret.mccDigit1 := cid.ra_id.lai.mcc_mnc[0];
|
||||
ret.mccDigit2 := cid.ra_id.lai.mcc_mnc[1];
|
||||
ret.mccDigit3 := cid.ra_id.lai.mcc_mnc[2];
|
||||
ret.mncDigit3 := cid.ra_id.lai.mcc_mnc[3];
|
||||
ret.mncDigit1 := cid.ra_id.lai.mcc_mnc[4];
|
||||
ret.mncDigit2 := cid.ra_id.lai.mcc_mnc[5];
|
||||
}
|
||||
if (isvalue(cid.ra_id.lai.lac)) {
|
||||
ret.lac := f_oct_or_wc(cid.ra_id.lai.lac, 2);
|
||||
}
|
||||
}
|
||||
if (isvalue(cid) and isvalue(cid.ra_id)) {
|
||||
ret.rac := f_oct_or_wc(cid.ra_id.rac, 1);
|
||||
}
|
||||
if (isvalue(cid)) {
|
||||
ret.cI_value := f_oct_or_wc(cid.cell_id, 2);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
function t_GlobalRNC_ID_BSSGP(template BssgpCellId cid, template integer rnc_id) return template GlobalRNC_ID_BSSGP {
|
||||
var template GlobalRNC_ID_BSSGP ret := {
|
||||
mccDigit1 := ?,
|
||||
mccDigit2 := ?,
|
||||
mccDigit3 := ?,
|
||||
mncDigit3 := ?,
|
||||
mncDigit1 := ?,
|
||||
mncDigit2 := ?,
|
||||
lac := ?,
|
||||
rac := ?,
|
||||
spare := ?,
|
||||
rNC_ID := ?
|
||||
}
|
||||
if (istemplatekind(cid, "omit") and istemplatekind(rnc_id, "omit")) {
|
||||
return omit;
|
||||
} else if (istemplatekind(cid, "*") and istemplatekind(rnc_id, "*")) {
|
||||
return *;
|
||||
} else if (istemplatekind(cid, "?") and istemplatekind(rnc_id, "?")) {
|
||||
return ?;
|
||||
}
|
||||
if (isvalue(cid) and isvalue(cid.ra_id) and isvalue(cid.ra_id.lai)) {
|
||||
if (isvalue(cid.ra_id.lai.mcc_mnc)) {
|
||||
ret.mccDigit1 := cid.ra_id.lai.mcc_mnc[0];
|
||||
ret.mccDigit2 := cid.ra_id.lai.mcc_mnc[1];
|
||||
ret.mccDigit3 := cid.ra_id.lai.mcc_mnc[2];
|
||||
ret.mncDigit3 := cid.ra_id.lai.mcc_mnc[3];
|
||||
ret.mncDigit1 := cid.ra_id.lai.mcc_mnc[4];
|
||||
ret.mncDigit2 := cid.ra_id.lai.mcc_mnc[5];
|
||||
}
|
||||
if (isvalue(cid.ra_id.lai.lac)) {
|
||||
ret.lac := f_oct_or_wc(cid.ra_id.lai.lac, 2);
|
||||
}
|
||||
}
|
||||
if (isvalue(cid) and isvalue(cid.ra_id)) {
|
||||
ret.rac := f_oct_or_wc(cid.ra_id.rac, 1);
|
||||
}
|
||||
if (isvalue(rnc_id)) {
|
||||
ret.spare := '0'H;
|
||||
ret.rNC_ID := rnc_id;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
function t_ENB_Identifier_V(template BssgpCellId cid, template integer tac, template octetstring gnbid) return template ENB_Identifier_V {
|
||||
var template ENB_Identifier_V ret := {
|
||||
mccDigit1 := ?,
|
||||
mccDigit2 := ?,
|
||||
mccDigit3 := ?,
|
||||
mncDigit3 := ?,
|
||||
mncDigit1 := ?,
|
||||
mncDigit2 := ?,
|
||||
tac := ?,
|
||||
globaleNBID := ?
|
||||
}
|
||||
if (istemplatekind(cid, "omit") and istemplatekind(tac, "omit") and istemplatekind(gnbid, "omit")) {
|
||||
return omit;
|
||||
} else if (istemplatekind(cid, "*") and istemplatekind(tac, "*") and istemplatekind(gnbid, "*")) {
|
||||
return *;
|
||||
} else if (istemplatekind(cid, "?") and istemplatekind(tac, "?") and istemplatekind(gnbid, "?")) {
|
||||
return ?;
|
||||
}
|
||||
if (isvalue(cid) and isvalue(cid.ra_id) and isvalue(cid.ra_id.lai)) {
|
||||
if (isvalue(cid.ra_id.lai.mcc_mnc)) {
|
||||
ret.mccDigit1 := cid.ra_id.lai.mcc_mnc[0];
|
||||
ret.mccDigit2 := cid.ra_id.lai.mcc_mnc[1];
|
||||
ret.mccDigit3 := cid.ra_id.lai.mcc_mnc[2];
|
||||
ret.mncDigit3 := cid.ra_id.lai.mcc_mnc[3];
|
||||
ret.mncDigit1 := cid.ra_id.lai.mcc_mnc[4];
|
||||
ret.mncDigit2 := cid.ra_id.lai.mcc_mnc[5];
|
||||
}
|
||||
}
|
||||
if (isvalue(tac)) {
|
||||
ret.tac := int2oct(valueof(tac), 2);
|
||||
}
|
||||
if (isvalue(gnbid)) {
|
||||
ret.globaleNBID := gnbid;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* 3GPP TS 48.018 11.3.108 */
|
||||
template (value) SON_Transfer_Application_Identity_TLV ts_SON_Transfer_Application_Identity_TLV(template (value) octetstring app_id) := {
|
||||
iEI := '84'O,
|
||||
ext := '1'B,
|
||||
lengthIndicator := {
|
||||
length1 := 0 /* overwritten */
|
||||
},
|
||||
sON_Transfer_Application_Identity := app_id
|
||||
}
|
||||
|
||||
|
||||
/* 3GPP TS 48.018 10.6.1 */
|
||||
template (value) PDU_BSSGP
|
||||
ts_RAN_INFORMATION_REQUEST(template (value) RIM_Routing_Information dst,
|
||||
template (value) RIM_Routing_Information src,
|
||||
template (value) RAN_Information_Request_RIM_Container cont) := {
|
||||
pDU_BSSGP_RAN_INFORMATION_REQUEST := {
|
||||
bssgpPduType := '71'O,
|
||||
destination_Cell_Identifier := dst,
|
||||
source_Cell_Identifier := src,
|
||||
rIM_Container := cont
|
||||
}
|
||||
}
|
||||
template PDU_BSSGP
|
||||
tr_RAN_INFORMATION_REQUEST(template RIM_Routing_Information dst := ?,
|
||||
template RIM_Routing_Information src := ?,
|
||||
template RAN_Information_Request_RIM_Container cont := ?) := {
|
||||
pDU_BSSGP_RAN_INFORMATION_REQUEST := {
|
||||
bssgpPduType := '71'O,
|
||||
destination_Cell_Identifier := dst,
|
||||
source_Cell_Identifier := src,
|
||||
rIM_Container := cont
|
||||
}
|
||||
}
|
||||
|
||||
/* 3GPP TS 48.018 10.6.2 */
|
||||
template (value) PDU_BSSGP
|
||||
ts_PDU_BSSGP_RAN_INFORMATION(template (value) RIM_Routing_Information dst,
|
||||
template (value) RIM_Routing_Information src,
|
||||
template (value) RAN_Information_RIM_Container cont) := {
|
||||
pDU_BSSGP_RAN_INFORMATION := {
|
||||
bssgpPduType := '70'O,
|
||||
destination_Cell_Identifier := dst,
|
||||
source_Cell_Identifier := src,
|
||||
rIM_Container := cont
|
||||
}
|
||||
}
|
||||
template PDU_BSSGP
|
||||
tr_PDU_BSSGP_RAN_INFORMATION(template RIM_Routing_Information dst := ?,
|
||||
template RIM_Routing_Information src := ?,
|
||||
template RAN_Information_RIM_Container cont := ?) := {
|
||||
pDU_BSSGP_RAN_INFORMATION := {
|
||||
bssgpPduType := '70'O,
|
||||
destination_Cell_Identifier := dst,
|
||||
source_Cell_Identifier := src,
|
||||
rIM_Container := cont
|
||||
}
|
||||
}
|
||||
|
||||
/* 3GPP TS 48.018 10.6.3 */
|
||||
template (value) PDU_BSSGP
|
||||
ts_PDU_BSSGP_RAN_INFORMATION_ACK(template (value) RIM_Routing_Information dst,
|
||||
template (value) RIM_Routing_Information src,
|
||||
template (value) RAN_Information_Ack_RIM_Container cont) := {
|
||||
pDU_BSSGP_RAN_INFORMATION_ACK := {
|
||||
bssgpPduType := '72'O,
|
||||
destination_Cell_Identifier := dst,
|
||||
source_Cell_Identifier := src,
|
||||
rIM_Container := cont
|
||||
}
|
||||
}
|
||||
template PDU_BSSGP
|
||||
tr_PDU_BSSGP_RAN_INFORMATION_ACK(template RIM_Routing_Information dst := ?,
|
||||
template RIM_Routing_Information src := ?,
|
||||
template RAN_Information_Ack_RIM_Container cont := ?) := {
|
||||
pDU_BSSGP_RAN_INFORMATION_ACK := {
|
||||
bssgpPduType := '72'O,
|
||||
destination_Cell_Identifier := dst,
|
||||
source_Cell_Identifier := src,
|
||||
rIM_Container := cont
|
||||
}
|
||||
}
|
||||
|
||||
/* 3GPP TS 48.018 10.6.4 */
|
||||
template (value) PDU_BSSGP
|
||||
ts_PDU_BSSGP_RAN_INFORMATION_ERROR(template (value) RIM_Routing_Information dst,
|
||||
template (value) RIM_Routing_Information src,
|
||||
template (value) RAN_Information_Error_RIM_Container cont) := {
|
||||
pDU_BSSGP_RAN_INFORMATION_ERROR := {
|
||||
bssgpPduType := '73'O,
|
||||
destination_Cell_Identifier := dst,
|
||||
source_Cell_Identifier := src,
|
||||
rIM_Container := cont
|
||||
}
|
||||
}
|
||||
template PDU_BSSGP
|
||||
tr_PDU_BSSGP_RAN_INFORMATION_ERROR(template RIM_Routing_Information dst := ?,
|
||||
template RIM_Routing_Information src := ?,
|
||||
template RAN_Information_Error_RIM_Container cont := ?) := {
|
||||
pDU_BSSGP_RAN_INFORMATION_ERROR := {
|
||||
bssgpPduType := '73'O,
|
||||
destination_Cell_Identifier := dst,
|
||||
source_Cell_Identifier := src,
|
||||
rIM_Container := cont
|
||||
}
|
||||
}
|
||||
|
||||
/* 3GPP TS 48.018 10.6.5 */
|
||||
template (value) PDU_BSSGP
|
||||
ts_PDU_BSSGP_RAN_INFORMATION_APPLICATION_ERROR(template (value) RIM_Routing_Information dst,
|
||||
template (value) RIM_Routing_Information src,
|
||||
template (value) RAN_Information_Application_Error_RIM_Container cont) := {
|
||||
pDU_BSSGP_RAN_INFORMATION_APPLICATION_ERROR := {
|
||||
bssgpPduType := '74'O,
|
||||
destination_Cell_Identifier := dst,
|
||||
source_Cell_Identifier := src,
|
||||
rIM_Container := cont
|
||||
}
|
||||
}
|
||||
template PDU_BSSGP
|
||||
tr_PDU_BSSGP_RAN_INFORMATION_APPLICATION_ERROR(template RIM_Routing_Information dst := ?,
|
||||
template RIM_Routing_Information src := ?,
|
||||
template RAN_Information_Application_Error_RIM_Container cont := ?) := {
|
||||
pDU_BSSGP_RAN_INFORMATION_APPLICATION_ERROR := {
|
||||
bssgpPduType := '74'O,
|
||||
destination_Cell_Identifier := dst,
|
||||
source_Cell_Identifier := src,
|
||||
rIM_Container := cont
|
||||
}
|
||||
}
|
||||
|
||||
/* PDU permitted on PTP BVC only (TS 48.018 Section 5.4.1) */
|
||||
template (present) PDU_BSSGP tr_BSSGP_PERMITTED_PTP_ONLY := (
|
||||
{pDU_BSSGP_DL_UNITDATA := ?},
|
||||
|
|
Loading…
Reference in New Issue