rlcmac: introduce initial support for NACC related messages
Change-Id: I4d2f123479c34e6afffe0bc8d91409e6b0529a62
diff --git a/library/RLCMAC_CSN1_Templates.ttcn b/library/RLCMAC_CSN1_Templates.ttcn
index 64c709a..1becddd 100644
--- a/library/RLCMAC_CSN1_Templates.ttcn
+++ b/library/RLCMAC_CSN1_Templates.ttcn
@@ -108,6 +108,77 @@
}
};
+ const CCNMesurementReport ccn_meas_rep_def := {
+ rxlev_servig_cell := 0,
+ zero := '0'B,
+ num_meas := 0,
+ meas := { }
+ }
+
+ /* TS 44.060 sec 11.2.3a */
+ template (value) RlcmacUlCtrlMsg ts_RlcMacUlCtrl_PKT_CELL_CHG_NOTIF(uint5_t tfi,
+ GsmArfcn arfcn,
+ uint6_t bsic,
+ template (value) CCNMesurementReport ccn_meas_rep := ccn_meas_rep_def)
+ := {
+ msg_type := PACKET_CELL_CHANGE_NOTIFICATION,
+ u := {
+ cell_chg_notif := {
+ gtfi := {
+ is_dl_tfi := false,
+ tfi := tfi
+ },
+ arfcn_bsic_presence := '0'B,
+ arfcn := arfcn,
+ bsic := bsic,
+ ba_psi3_presence := '0'B,
+ ba_used := '0'B,
+ psi3_change_mark := omit,
+ pmo_used := '0'B,
+ pccn_sending := '0'B,
+ ccn_meas_rep := ccn_meas_rep
+ }
+ }
+ };
+
+ /* TS 44.060 sec 11.2.2a */
+ template RlcmacDlCtrlMsg tr_RlcMacDlCtrl_PKT_CELL_CHG_CONTINUE(template GlobalTfi tfi := ?)
+ := {
+ msg_type := PACKET_CELL_CHANGE_CONTINUE,
+ u := {
+ cell_chg_continue := {
+ page_mode := ?,
+ zero := '0'B,
+ gtfi := tfi,
+ arfcn_bsic_presence := ?,
+ arfcn := *,
+ bsic := *,
+ container_id := *
+ }
+ }
+ };
+
+ /* TS 44.060 sec 11.2.9e */
+ template RlcmacDlCtrlMsg tr_RlcMacDlCtrl_PKT_NEIGH_CELL_DATA(template (present) GlobalTfi tfi := ?,
+ template (present) uint5_t container_index := ?)
+ := {
+ msg_type := PACKET_NEIGHBOUR_CELL_DATA,
+ u := {
+ neighbour_cell_data := {
+ page_mode := ?,
+ zero := '0'B,
+ gtfi := tfi,
+ container_id := ?,
+ spare := '0'B,
+ container_index := container_index,
+ arfcn_bsic_presence := ?,
+ arfcn := *,
+ bsic := *,
+ container_list := ?
+ }
+ }
+ };
+
private function f_presence_bit_tfi(template uint5_t tfi) return BIT1 {
if (istemplatekind(tfi, "omit")) {
return '0'B;
diff --git a/library/RLCMAC_CSN1_Types.ttcn b/library/RLCMAC_CSN1_Types.ttcn
index 14570bf..af8b8d6 100644
--- a/library/RLCMAC_CSN1_Types.ttcn
+++ b/library/RLCMAC_CSN1_Types.ttcn
@@ -32,6 +32,8 @@
PACKET_TBF_RELEASE ('001000'B),
PACKET_UL_ACK_NACK ('001001'B),
PACKET_UL_ASSIGNMENT ('001010'B),
+ PACKET_CELL_CHANGE_CONTINUE ('001011'B),
+ PACKET_NEIGHBOUR_CELL_DATA ('001100'B),
PACKET_DL_DUMMY_CTRL ('100101'B)
} with { variant "FIELDLENGTH(6)" };
@@ -49,7 +51,7 @@
PACKET_EGPRS_DL_ACK_NACK ('001000'B),
PACKET_PAUSE ('001001'B),
ADDITIONAL_MS_RA_CAPABILITIES ('001011'B),
- PACKET_CELL_CANGE_NOTIFICATION ('001100'B),
+ PACKET_CELL_CHANGE_NOTIFICATION ('001100'B),
PACKET_SI_STATUS ('001101'B),
PACKET_CS_REQUEST ('001110'B),
MBMS_SERVICE_REQUEST ('001111'B),
@@ -586,6 +588,47 @@
variant (msg) "PRESENCE(msg_escape = '0'B)"
};
+ /* 11.2.2a Packet Cell Change Continue */
+ type record PacketCellChangeContinue {
+ PageMode page_mode,
+ BIT1 zero ('0'B),
+ GlobalTfi gtfi,
+ BIT1 arfcn_bsic_presence,
+ uint10_t arfcn optional,
+ uint6_t bsic optional,
+ uint2_t container_id optional
+ } with {
+ variant (arfcn) "PRESENCE(arfcn_bsic_presence = '1'B)"
+ variant (bsic) "PRESENCE(arfcn_bsic_presence = '1'B)"
+ variant (container_id) "PRESENCE(arfcn_bsic_presence = '1'B)"
+ };
+
+ /* 11.2.9e Packet Neighbour Cell Data */
+ type record PacketNeighbourCellDataContainer {
+ BIT3 pd,
+ uint5_t cd_length,
+ octetstring container_data
+ } with {
+ variant (cd_length) "LENGTHTO (container_data)"
+ variant (container_data) "BYTEORDER(first)"
+ };
+ type record of PacketNeighbourCellDataContainer PacketNeighbourCellDataContainerList
+ type record PacketNeighbourCellData {
+ PageMode page_mode,
+ BIT1 zero ('0'B),
+ GlobalTfi gtfi,
+ uint2_t container_id,
+ BIT1 spare ('0'B),
+ uint5_t container_index,
+ BIT1 arfcn_bsic_presence,
+ uint10_t arfcn optional,
+ uint6_t bsic optional,
+ PacketNeighbourCellDataContainerList container_list
+ } with {
+ variant (arfcn) "PRESENCE(arfcn_bsic_presence = '1'B)"
+ variant (bsic) "PRESENCE(arfcn_bsic_presence = '1'B)"
+ };
+
/* 11.2.0.1 */
type union RlcmacDlCtrlUnion {
PacketDlAssignment dl_assignment,
@@ -594,6 +637,8 @@
PacketUlAckNack ul_ack_nack,
PacketDlDummy dl_dummy,
PacketPwrControlTA pwr_ta,
+ PacketCellChangeContinue cell_chg_continue,
+ PacketNeighbourCellData neighbour_cell_data,
octetstring other
} with { variant "" };
@@ -607,6 +652,8 @@
ul_ack_nack, msg_type = PACKET_UL_ACK_NACK;
dl_dummy, msg_type = PACKET_DL_DUMMY_CTRL;
pwr_ta, msg_type = PACKET_PWR_CONTROL_TA;
+ cell_chg_continue,msg_type = PACKET_CELL_CHANGE_CONTINUE;
+ neighbour_cell_data,msg_type = PACKET_NEIGHBOUR_CELL_DATA;
other, OTHERWISE
)"
};
@@ -755,14 +802,51 @@
variant (sign_var) "PRESENCE(sign_var_presence = '1'B)"
};
+ /* 11.2.3a Packet Cell Change Notification */
+ type record NCMeasurementItem {
+ uint6_t freq,
+ BIT1 bsic_presence,
+ uint6_t bsic optional,
+ uint6_t rxlev
+ } with {
+ variant (bsic) "PRESENCE(bsic_presence = '1'B)"
+ };
+ type record of NCMeasurementItem NCMeasurements;
+ type record CCNMesurementReport {
+ uint6_t rxlev_servig_cell,
+ BIT1 zero ('0'B),
+ uint3_t num_meas,
+ NCMeasurements meas
+ } with { variant "" };
+ type record PacketCellChangeNotification {
+ GlobalTfi gtfi,
+ /* TODO: support 3g/4g in these bits */
+ BIT1 arfcn_bsic_presence,
+ uint10_t arfcn optional,
+ uint6_t bsic optional,
+ BIT1 ba_psi3_presence,
+ BIT1 ba_used optional,
+ BIT2 psi3_change_mark optional,
+ BIT1 pmo_used,
+ BIT1 pccn_sending,
+ CCNMesurementReport ccn_meas_rep
+ /* TODO: Rel6 additions for 3G support */
+ } with {
+ variant (arfcn) "PRESENCE(arfcn_bsic_presence = '0'B)"
+ variant (bsic) "PRESENCE(arfcn_bsic_presence = '0'B)"
+ variant (ba_used) "PRESENCE(ba_psi3_presence = '0'B)"
+ variant (psi3_change_mark) "PRESENCE(ba_psi3_presence = '1'B)"
+ };
+
/* 11.2.0.2 */
type union RlcmacUlCtrlUnion {
- PacketCtrlAck ctrl_ack,
- PacketDlAckNack dl_ack_nack,
- EgprsPacketDlAckNack dl_ack_nack_egprs,
- PacketUlDummy ul_dummy,
- PacketResourceReq resource_req,
- octetstring other
+ PacketCtrlAck ctrl_ack,
+ PacketDlAckNack dl_ack_nack,
+ EgprsPacketDlAckNack dl_ack_nack_egprs,
+ PacketUlDummy ul_dummy,
+ PacketResourceReq resource_req,
+ PacketCellChangeNotification cell_chg_notif,
+ octetstring other
} with { variant "" };
type record RlcmacUlCtrlMsg {
@@ -774,6 +858,7 @@
dl_ack_nack_egprs, msg_type = PACKET_EGPRS_DL_ACK_NACK;
ul_dummy, msg_type = PACKET_UL_DUMMY_CTRL;
resource_req, msg_type = PACKET_RESOURCE_REQUEST;
+ cell_chg_notif, msg_type = PACKET_CELL_CHANGE_NOTIFICATION;
other, OTHERWISE
)"
};