osmo-ttcn3-hacks/library/hnbap/HNBAP_Templates.ttcn

136 lines
3.2 KiB
Plaintext

/* HNBAP Templates in TTCN-3
* (C) 2021 Pau Espin Pedrol <pespin@sysmocom.de>
* 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
*/
module HNBAP_Templates {
import from General_Types all;
import from Osmocom_Types all;
import from HNBAP_IEs all;
import from HNBAP_CommonDataTypes all;
import from HNBAP_Constants all;
import from HNBAP_Containers all;
import from HNBAP_PDU_Contents all;
import from HNBAP_PDU_Descriptions all;
/*********************************************************************************
* 3GPP TS 25.469
*********************************************************************************/
template (value) Cause ts_HnbapCause(template (value) CauseRadioNetwork c) := {
radioNetwork := c
}
/* 9.1.3 HNB REGISTER REQUEST */
template (present) HNBAP_PDU
tr_HNBAP_HNBRegisterRequest(template (present) octetstring hNB_Identity_Info := ?,
template (present) OCT3 plmnid := ?,
template (present) BIT28 cell_identity := ?,
template (present) OCT2 lac := ?,
template (present) OCT1 rac := ?,
template (present) OCT2 sac := ?) := {
initiatingMessage := {
procedureCode := id_HNBRegister,
criticality := reject,
value_ := {
hNBRegisterRequest := {
protocolIEs := {
{
id := HNBAP_Constants.id_HNB_Identity,
criticality := reject,
value_ := {
hNB_Identity := {
hNB_Identity_Info := hNB_Identity_Info,
iE_Extensions := omit
}
}
}, {
id := 8,
criticality := reject,
value_ := {
hNB_Location_Information := {
macroCoverageInfo := omit,
geographicalCoordinates := omit,
iE_Extensions := omit
}
}
}, {
id := 9,
criticality := reject,
value_ := { pLMNidentity := plmnid }
}, {
id := 11,
criticality := reject,
value_ := { cellIdentity := cell_identity }
}, {
id := 6,
criticality := reject,
value_ := { lAC := lac }
}, {
id := 7,
criticality := reject,
value_ := { rAC := rac }
}, {
id := 10,
criticality := reject,
value_ := { sAC := sac }
}
},
protocolExtensions := omit
}
}
}
}
/* 9.1.4 HNB REGISTER ACCEPT */
template (value) HNBAP_PDU
ts_HNBAP_HNBRegisterAccept(template (value) uint16_t rnc_id) := {
successfulOutcome := {
procedureCode := id_HNBRegister,
criticality := reject,
value_ := {
hNBRegisterAccept := {
protocolIEs := {
{
id := HNBAP_Constants.id_RNC_ID,
criticality := reject,
value_ := { RNC_ID := rnc_id }
}
},
protocolExtensions := omit /* TODO: Mux Port Number (optional) 9.2.29 */
}
}
}
}
/* 9.1.5 HNB REGISTER REJECT */
template (value) HNBAP_PDU
ts_HNBAP_HNBRegisterReject(template (value) Cause cause) := {
unsuccessfulOutcome := {
procedureCode := id_HNBRegister,
criticality := reject,
value_ := {
HNBRegisterReject := {
protocolIEs := {
{
id := HNBAP_Constants.id_Cause,
criticality := ignore,
value_ := { Cause := cause }
}
},
protocolExtensions := omit /* TODO: CriticalityDiagnostics, BackoffTimer */
}
}
}
}
}