GSM_Types: More 44.018 + 24.008 definitions for RR
This commit is contained in:
parent
f0a4997efc
commit
d2e342fb7d
|
@ -9,57 +9,14 @@ module GSM_SystemInformation {
|
||||||
import from GSM_Types all;
|
import from GSM_Types all;
|
||||||
import from Osmocom_Types all;
|
import from Osmocom_Types all;
|
||||||
|
|
||||||
type record L2PseudoLength {
|
|
||||||
uint6_t l2_plen,
|
|
||||||
BIT2 zero_one
|
|
||||||
} with { variant "" };
|
|
||||||
|
|
||||||
template L2PseudoLength t_L2Pseudolength(template uint6_t len) := {
|
|
||||||
l2_plen := len,
|
|
||||||
zero_one := '01'B
|
|
||||||
};
|
|
||||||
|
|
||||||
type octetstring RestOctets with { variant "PADDING(yes), PADDING_PATTERN('00101011'B)" };
|
|
||||||
|
|
||||||
type record MaioHsn {
|
|
||||||
} with { variant "" };
|
|
||||||
|
|
||||||
type union ArfcnOrMaio {
|
type union ArfcnOrMaio {
|
||||||
uint12_t arfcn,
|
uint12_t arfcn,
|
||||||
MaioHsn maio_hsn
|
MaioHsn maio_hsn
|
||||||
} with { variant "" };
|
} with { variant "" };
|
||||||
|
|
||||||
type record SystemInformationHeader {
|
|
||||||
L2PseudoLength l2_plen,
|
|
||||||
uint4_t skip_indicator,
|
|
||||||
uint4_t rr_protocol_discriminator,
|
|
||||||
RrMessageType message_type
|
|
||||||
} with { variant "" };
|
|
||||||
|
|
||||||
template SystemInformationHeader t_SiHeader(RrMessageType msg_type, template uint6_t len) := {
|
|
||||||
l2_plen := t_L2Pseudolength(len),
|
|
||||||
skip_indicator := 0,
|
|
||||||
rr_protocol_discriminator := 6,
|
|
||||||
message_type := msg_type
|
|
||||||
};
|
|
||||||
|
|
||||||
external function enc_SystemInformationHeader(in SystemInformationHeader si) return octetstring
|
|
||||||
with { extension "prototype(convert) encode(RAW)" };
|
|
||||||
external function dec_SystemInformationHeader(in octetstring stream) return SystemInformationHeader
|
|
||||||
with { extension "prototype(convert) decode(RAW)" };
|
|
||||||
|
|
||||||
type hexstring GsmBcdString with { variant "HEXORDER(low)" };
|
|
||||||
type GsmBcdString BcdMccMnc with { variant "FIELDLENGTH(6)" };
|
|
||||||
|
|
||||||
/* 24.008 10.5.1.1 */
|
/* 24.008 10.5.1.1 */
|
||||||
type uint16_t CellIdentity;
|
type uint16_t CellIdentity;
|
||||||
|
|
||||||
/* 24.008 10.5.1.3 */
|
|
||||||
type record LocationAreaIdentification {
|
|
||||||
BcdMccMnc mcc_mnc,
|
|
||||||
uint16_t lac
|
|
||||||
} with { variant "" };
|
|
||||||
|
|
||||||
/* 44.018 10.5.2.1b */
|
/* 44.018 10.5.2.1b */
|
||||||
type octetstring CellChannelDescription with { variant "FIELDLENGTH(16)" };
|
type octetstring CellChannelDescription with { variant "FIELDLENGTH(16)" };
|
||||||
|
|
||||||
|
@ -88,18 +45,6 @@ module GSM_SystemInformation {
|
||||||
uint6_t rxlev_access_min
|
uint6_t rxlev_access_min
|
||||||
} with { variant "" };
|
} with { variant "" };
|
||||||
|
|
||||||
/* 44.018 10.5.2.5 */
|
|
||||||
type record ChannelDescription {
|
|
||||||
OCT1 iei,
|
|
||||||
BIT5 chan_type_tdma_offset,
|
|
||||||
uint3_t tn,
|
|
||||||
uint3_t tsc,
|
|
||||||
boolean h,
|
|
||||||
uint12_t arfcn optional,
|
|
||||||
MaioHsn maio_hsn optional
|
|
||||||
} with { variant (arfcn) "PRESENCE(h = true)"
|
|
||||||
variant (maio_hsn) "PRESENCE(h = false)" };
|
|
||||||
|
|
||||||
/* 44.018 10.5.2.11 */
|
/* 44.018 10.5.2.11 */
|
||||||
type record ControlChannelDescription {
|
type record ControlChannelDescription {
|
||||||
boolean mscrr,
|
boolean mscrr,
|
||||||
|
@ -116,7 +61,7 @@ module GSM_SystemInformation {
|
||||||
template ControlChannelDescription t_ControlChannelDescription := { ?, ?, ?, ?, ?, ?, '00'B, ?, ? };
|
template ControlChannelDescription t_ControlChannelDescription := { ?, ?, ?, ?, ?, ?, '00'B, ?, ? };
|
||||||
|
|
||||||
/* 44.018 10.5.2.21 */
|
/* 44.018 10.5.2.21 */
|
||||||
type record MobileAllocation {
|
type record MobileAllocationT {
|
||||||
OCT1 iei,
|
OCT1 iei,
|
||||||
uint8_t len,
|
uint8_t len,
|
||||||
bitstring ma
|
bitstring ma
|
||||||
|
@ -145,7 +90,6 @@ module GSM_SystemInformation {
|
||||||
|
|
||||||
/* 44.018 9.1.31 */
|
/* 44.018 9.1.31 */
|
||||||
type record SystemInformationType1 {
|
type record SystemInformationType1 {
|
||||||
//SystemInformationHeader header,
|
|
||||||
CellChannelDescription cell_chan_desc,
|
CellChannelDescription cell_chan_desc,
|
||||||
RachControlParameters rach_control,
|
RachControlParameters rach_control,
|
||||||
Si1RestOctets rest_octets
|
Si1RestOctets rest_octets
|
||||||
|
@ -153,7 +97,6 @@ module GSM_SystemInformation {
|
||||||
|
|
||||||
/* 44.018 9.1.32 */
|
/* 44.018 9.1.32 */
|
||||||
type record SystemInformationType2 {
|
type record SystemInformationType2 {
|
||||||
//SystemInformationHeader header,
|
|
||||||
NeighbourCellDescription bcch_freq_list,
|
NeighbourCellDescription bcch_freq_list,
|
||||||
BIT8 ncc_permitted,
|
BIT8 ncc_permitted,
|
||||||
RachControlParameters rach_control
|
RachControlParameters rach_control
|
||||||
|
@ -161,7 +104,6 @@ module GSM_SystemInformation {
|
||||||
|
|
||||||
/* 44.018 9.1.33 */
|
/* 44.018 9.1.33 */
|
||||||
type record SystemInformationType2bis {
|
type record SystemInformationType2bis {
|
||||||
//SystemInformationHeader header,
|
|
||||||
NeighbourCellDescription extd_bcch_freq_list,
|
NeighbourCellDescription extd_bcch_freq_list,
|
||||||
RachControlParameters rach_control,
|
RachControlParameters rach_control,
|
||||||
OCT1 rest_octets
|
OCT1 rest_octets
|
||||||
|
@ -169,14 +111,12 @@ module GSM_SystemInformation {
|
||||||
|
|
||||||
/* 44.018 9.1.34 */
|
/* 44.018 9.1.34 */
|
||||||
type record SystemInformationType2ter {
|
type record SystemInformationType2ter {
|
||||||
//SystemInformationHeader header,
|
|
||||||
NeighbourCellDescription2 extd_bcch_freq_list,
|
NeighbourCellDescription2 extd_bcch_freq_list,
|
||||||
OCT4 rest_octets
|
OCT4 rest_octets
|
||||||
} with { variant "" };
|
} with { variant "" };
|
||||||
|
|
||||||
/* 44.018 9.1.35 */
|
/* 44.018 9.1.35 */
|
||||||
type record SystemInformationType3 {
|
type record SystemInformationType3 {
|
||||||
//SystemInformationHeader header,
|
|
||||||
CellIdentity cell_id,
|
CellIdentity cell_id,
|
||||||
LocationAreaIdentification lai,
|
LocationAreaIdentification lai,
|
||||||
ControlChannelDescription ctrl_chan_desc,
|
ControlChannelDescription ctrl_chan_desc,
|
||||||
|
@ -199,36 +139,31 @@ module GSM_SystemInformation {
|
||||||
|
|
||||||
/* 44.018 9.1.36 */
|
/* 44.018 9.1.36 */
|
||||||
type record SystemInformationType4 {
|
type record SystemInformationType4 {
|
||||||
//SystemInformationHeader header,
|
|
||||||
LocationAreaIdentification lai,
|
LocationAreaIdentification lai,
|
||||||
CellSelectionParameters cell_sel_par,
|
CellSelectionParameters cell_sel_par,
|
||||||
RachControlParameters rach_control,
|
RachControlParameters rach_control,
|
||||||
ChannelDescription cbch_chan_desc optional,
|
ChannelDescription cbch_chan_desc optional,
|
||||||
MobileAllocation cbch_mobile_alloc optional,
|
MobileAllocationT cbch_mobile_alloc optional,
|
||||||
RestOctets rest_octets
|
RestOctets rest_octets
|
||||||
} with { variant "TAG(cbch_chan_desc, iei = '64'O; cbch_mobile_alloc, iei = '72'O)" };
|
} with { variant "TAG(cbch_chan_desc, iei = '64'O; cbch_mobile_alloc, iei = '72'O)" };
|
||||||
|
|
||||||
/* 44.018 9.1.37 */
|
/* 44.018 9.1.37 */
|
||||||
type record SystemInformationType5 {
|
type record SystemInformationType5 {
|
||||||
SystemInformationHeader header,
|
|
||||||
NeighbourCellDescription bcch_freq_list
|
NeighbourCellDescription bcch_freq_list
|
||||||
} with { variant "" };
|
} with { variant "" };
|
||||||
|
|
||||||
/* 44.018 9.1.38 */
|
/* 44.018 9.1.38 */
|
||||||
type record SystemInformationType5bis {
|
type record SystemInformationType5bis {
|
||||||
//SystemInformationHeader header,
|
|
||||||
NeighbourCellDescription extd_bcch_freq_list
|
NeighbourCellDescription extd_bcch_freq_list
|
||||||
} with { variant "" };
|
} with { variant "" };
|
||||||
|
|
||||||
/* 44.018 9.1.39 */
|
/* 44.018 9.1.39 */
|
||||||
type record SystemInformationType5ter {
|
type record SystemInformationType5ter {
|
||||||
//SystemInformationHeader header,
|
|
||||||
NeighbourCellDescription2 extd_bcch_freq_list
|
NeighbourCellDescription2 extd_bcch_freq_list
|
||||||
} with { variant "" };
|
} with { variant "" };
|
||||||
|
|
||||||
/* 44.018 9.1.40 */
|
/* 44.018 9.1.40 */
|
||||||
type record SystemInformationType6 {
|
type record SystemInformationType6 {
|
||||||
//SystemInformationHeader header,
|
|
||||||
CellIdentity cell_id,
|
CellIdentity cell_id,
|
||||||
LocationAreaIdentification lai,
|
LocationAreaIdentification lai,
|
||||||
CellOptionsSacch cell_options,
|
CellOptionsSacch cell_options,
|
||||||
|
@ -251,7 +186,7 @@ module GSM_SystemInformation {
|
||||||
} with { variant "" };
|
} with { variant "" };
|
||||||
|
|
||||||
type record SystemInformation {
|
type record SystemInformation {
|
||||||
SystemInformationHeader header,
|
RrHeader header,
|
||||||
SystemInformationUnion payload
|
SystemInformationUnion payload
|
||||||
} with { variant (payload) "CROSSTAG(si1, header.message_type = SYSTEM_INFORMATION_TYPE_1;
|
} with { variant (payload) "CROSSTAG(si1, header.message_type = SYSTEM_INFORMATION_TYPE_1;
|
||||||
si2, header.message_type = SYSTEM_INFORMATION_TYPE_2;
|
si2, header.message_type = SYSTEM_INFORMATION_TYPE_2;
|
||||||
|
|
|
@ -11,6 +11,11 @@ module GSM_Types {
|
||||||
type integer GsmArfcn (0..1023);
|
type integer GsmArfcn (0..1023);
|
||||||
type integer UmtsArfcn (0..16383);
|
type integer UmtsArfcn (0..16383);
|
||||||
type integer UmtsScramblingCode (0..511);
|
type integer UmtsScramblingCode (0..511);
|
||||||
|
const integer GsmMaxFrameNumber := 26*51*2048;
|
||||||
|
type integer GsmFrameNumber (0..GsmMaxFrameNumber);
|
||||||
|
type integer GsmRxLev (0..63);
|
||||||
|
type integer GsmTsc (0..7) with { variant "FIELDLENGTH(8)" };
|
||||||
|
type uint32_t GsmTmsi;
|
||||||
|
|
||||||
/* Table 10.4.1 of Section 10.4 / 3GPP TS 44.018 */
|
/* Table 10.4.1 of Section 10.4 / 3GPP TS 44.018 */
|
||||||
type enumerated RrMessageType {
|
type enumerated RrMessageType {
|
||||||
|
@ -107,4 +112,329 @@ module GSM_Types {
|
||||||
INTERSYS_TO_EUTRAN_HO_CMD ('01100110'B)
|
INTERSYS_TO_EUTRAN_HO_CMD ('01100110'B)
|
||||||
} with { variant "FIELDLENGTH(8)" };
|
} with { variant "FIELDLENGTH(8)" };
|
||||||
|
|
||||||
|
type octetstring RestOctets with { variant "PADDING(yes), PADDING_PATTERN('00101011'B)" };
|
||||||
|
type hexstring GsmBcdString with { variant "HEXORDER(low)" };
|
||||||
|
type GsmBcdString BcdMccMnc with { variant "FIELDLENGTH(6)" };
|
||||||
|
|
||||||
|
type record L2PseudoLength {
|
||||||
|
uint6_t l2_plen,
|
||||||
|
BIT2 zero_one
|
||||||
|
} with { variant "" };
|
||||||
|
|
||||||
|
template L2PseudoLength t_L2Pseudolength(template uint6_t len) := {
|
||||||
|
l2_plen := len,
|
||||||
|
zero_one := '01'B
|
||||||
|
};
|
||||||
|
|
||||||
|
type record RrHeader {
|
||||||
|
L2PseudoLength l2_plen,
|
||||||
|
uint4_t skip_indicator,
|
||||||
|
uint4_t rr_protocol_discriminator,
|
||||||
|
RrMessageType message_type
|
||||||
|
} with { variant "" };
|
||||||
|
|
||||||
|
template RrHeader t_RrHeader(RrMessageType msg_type, template uint6_t len) := {
|
||||||
|
l2_plen := t_L2Pseudolength(len),
|
||||||
|
skip_indicator := 0,
|
||||||
|
rr_protocol_discriminator := 6,
|
||||||
|
message_type := msg_type
|
||||||
|
};
|
||||||
|
|
||||||
|
type record RrL3Header {
|
||||||
|
uint4_t skip_indicator,
|
||||||
|
uint4_t rr_protocol_discriminator,
|
||||||
|
RrMessageType message_type
|
||||||
|
} with { variant "" };
|
||||||
|
|
||||||
|
type record MaioHsn {
|
||||||
|
} with { variant "" };
|
||||||
|
|
||||||
|
/* TS 24.008 10.5.1.2 */
|
||||||
|
type uint4_t CipheringKeySeqNr (0..7);
|
||||||
|
|
||||||
|
/* 24.008 10.5.1.3 */
|
||||||
|
type record LocationAreaIdentification {
|
||||||
|
BcdMccMnc mcc_mnc,
|
||||||
|
uint16_t lac
|
||||||
|
} with { variant "" };
|
||||||
|
|
||||||
|
/* TS 24.008 10.5.1.4 */
|
||||||
|
type enumerated MobileIdentityType {
|
||||||
|
MI_TYPE_NONE (0),
|
||||||
|
MI_TYPE_IMSI,
|
||||||
|
MI_TYPE_IMEI,
|
||||||
|
MI_TYPE_IMEISV,
|
||||||
|
MI_TYPE_TMSI,
|
||||||
|
MI_TYPE_TMGI
|
||||||
|
} with { variant "FIELDLENGTH(3)" };
|
||||||
|
|
||||||
|
type record MobileIdentityBCD {
|
||||||
|
MobileIdentityType mi_type (MI_TYPE_IMSI, MI_TYPE_IMEI, MI_TYPE_IMEISV),
|
||||||
|
boolean odd,
|
||||||
|
hexstring digits
|
||||||
|
} with { variant "" };
|
||||||
|
|
||||||
|
type record MobileIdentityTMSI {
|
||||||
|
MobileIdentityType mi_type (MI_TYPE_TMSI),
|
||||||
|
boolean odd (false),
|
||||||
|
BIT4 pad ('1111'B),
|
||||||
|
GsmTmsi tmsi
|
||||||
|
} with { variant "" };
|
||||||
|
|
||||||
|
type union MobileIdentity {
|
||||||
|
MobileIdentityBCD bcd,
|
||||||
|
MobileIdentityTMSI tmsi
|
||||||
|
} with { variant "TAG(bcd, mi_type = MI_TYPE_IMSI;
|
||||||
|
bcd, mi_type = MI_TYPE_IMEI;
|
||||||
|
bcd, mi_type = MI_TYPE_IMEISV;
|
||||||
|
tmsi, mi_type = MI_TYPE_TMSI)" };
|
||||||
|
|
||||||
|
type record MobileIdentityLV {
|
||||||
|
uint8_t len,
|
||||||
|
MobileIdentity mi
|
||||||
|
} with { variant (len) "LENGTHTO(mi)" };
|
||||||
|
|
||||||
|
type record MobileIdentityTLV {
|
||||||
|
uint8_t tag,
|
||||||
|
uint8_t len,
|
||||||
|
MobileIdentity mi
|
||||||
|
} with { variant (len) "LENGTHTO(mi)" };
|
||||||
|
|
||||||
|
/* TS 24.008 10.5.1.5 */
|
||||||
|
type record MsClassmark1 {
|
||||||
|
BIT1 spare,
|
||||||
|
uint2_t rev_level,
|
||||||
|
boolean es_ind,
|
||||||
|
boolean a51,
|
||||||
|
uint3_t rf_pwr_cap
|
||||||
|
} with { variant "" };
|
||||||
|
|
||||||
|
/* TS 24.008 10.5.1.6 */
|
||||||
|
type record MsClassmark2 {
|
||||||
|
BIT1 spare,
|
||||||
|
uint2_t rev_level,
|
||||||
|
boolean es_ind,
|
||||||
|
boolean a51,
|
||||||
|
uint3_t rf_pwr_cap,
|
||||||
|
BIT1 spare1,
|
||||||
|
boolean ps_cap,
|
||||||
|
uint2_t ss_screen_ind,
|
||||||
|
boolean sm_cap,
|
||||||
|
boolean vbs,
|
||||||
|
boolean vgcs,
|
||||||
|
boolean fc,
|
||||||
|
boolean cm3,
|
||||||
|
BIT1 spare2,
|
||||||
|
boolean lcsva_cap,
|
||||||
|
boolean ucs2,
|
||||||
|
boolean solsa,
|
||||||
|
boolean cmsp,
|
||||||
|
boolean a53,
|
||||||
|
boolean a52
|
||||||
|
} with { variant "" };
|
||||||
|
type record MsClassmark2LV {
|
||||||
|
uint8_t len,
|
||||||
|
MsClassmark2 cm2
|
||||||
|
} with { variant (len) "LENGTHTO(cm2)" };
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* 44.018 10.5.2.5 */
|
||||||
|
type record ChannelDescription {
|
||||||
|
OCT1 iei,
|
||||||
|
BIT5 chan_type_tdma_offset,
|
||||||
|
uint3_t tn,
|
||||||
|
uint3_t tsc,
|
||||||
|
boolean h,
|
||||||
|
uint12_t arfcn optional,
|
||||||
|
MaioHsn maio_hsn optional
|
||||||
|
} with { variant (arfcn) "PRESENCE(h = true)"
|
||||||
|
variant (maio_hsn) "PRESENCE(h = false)" };
|
||||||
|
|
||||||
|
/* 10.5.2.8 */
|
||||||
|
type enumerated ChannelNeeded {
|
||||||
|
CHAN_NEED_ANY (0),
|
||||||
|
CHAN_NEED_SDCCH (1),
|
||||||
|
CHAN_NEED_TCH_F (2),
|
||||||
|
CHAN_NEED_TCH_H (3)
|
||||||
|
} with { variant "FIELDLENGTH(2)" };
|
||||||
|
type record ChannelNeeded12 {
|
||||||
|
ChannelNeeded second,
|
||||||
|
ChannelNeeded first
|
||||||
|
} with { variant "" };
|
||||||
|
|
||||||
|
/* 10.5.2.21 */
|
||||||
|
type record MobileAllocation {
|
||||||
|
uint8_t len,
|
||||||
|
bitstring ma
|
||||||
|
} with { variant (len) "LENGTHTO(ma)" };
|
||||||
|
|
||||||
|
/* 10.5.2.25a */
|
||||||
|
type OCT3 PacketChannelDescription;
|
||||||
|
|
||||||
|
/* 10.5.2.25b */
|
||||||
|
type record DedicatedModeOrTbf {
|
||||||
|
BIT1 spare,
|
||||||
|
boolean tma,
|
||||||
|
boolean downlink,
|
||||||
|
boolean tbf
|
||||||
|
} with { variant "" };
|
||||||
|
|
||||||
|
/* 10.5.2.26 */
|
||||||
|
type enumerated PageMode {
|
||||||
|
PAGE_MODE_NORMAL,
|
||||||
|
PAGE_MODE_EXTENDED,
|
||||||
|
PAGE_MODE_REORGANIZATION,
|
||||||
|
PAGE_MODE_SAME_AS_BEFORE
|
||||||
|
} with { variant "FIELDLENGTH(4)" };
|
||||||
|
|
||||||
|
/* 10.5.2.30 */
|
||||||
|
type record RequestReference {
|
||||||
|
bitstring ra length(8),
|
||||||
|
uint5_t t1p,
|
||||||
|
uint6_t t3,
|
||||||
|
uint5_t t1
|
||||||
|
} with { variant "" };
|
||||||
|
|
||||||
|
/* 10.5.2.40 */
|
||||||
|
type integer TimingAdvance (0..219);
|
||||||
|
|
||||||
|
/* 10.5.2.43 */
|
||||||
|
type uint8_t WaitIndication;
|
||||||
|
|
||||||
|
/* 10.5.2.76 */
|
||||||
|
type record FeatureIndicator {
|
||||||
|
BIT2 spare,
|
||||||
|
boolean cs_ir,
|
||||||
|
boolean ps_ir
|
||||||
|
} with { variant "" };
|
||||||
|
|
||||||
|
|
||||||
|
/* 9.1.18 */
|
||||||
|
type record ImmediateAssignment {
|
||||||
|
DedicatedModeOrTbf ded_or_tbf,
|
||||||
|
PageMode page_mode,
|
||||||
|
ChannelDescription chan_desc optional,
|
||||||
|
PacketChannelDescription pkt_chan_desc optional,
|
||||||
|
RequestReference req_ref,
|
||||||
|
TimingAdvance timing_advance,
|
||||||
|
MobileAllocation mobile_allocation
|
||||||
|
} with { variant (chan_desc) "PRESENCE(ded_or_tbf.tbf = false)"
|
||||||
|
variant (pkt_chan_desc) "PRESENCE(ded_or_tbf.tbf = true)" };
|
||||||
|
|
||||||
|
/* 9.1.20 */
|
||||||
|
type record ReqRefWaitInd {
|
||||||
|
RequestReference req_ref,
|
||||||
|
WaitIndication wait_ind
|
||||||
|
} with { variant "" };
|
||||||
|
type record length(4) of ReqRefWaitInd ReqRefWaitInd4;
|
||||||
|
type record ImmediateAssignmentReject {
|
||||||
|
FeatureIndicator feature_ind,
|
||||||
|
PageMode page_mode,
|
||||||
|
ReqRefWaitInd4 payload
|
||||||
|
} with { variant "" };
|
||||||
|
|
||||||
|
/* 9.1.22 */
|
||||||
|
type record PagingRequestType1 {
|
||||||
|
ChannelNeeded12 chan_needed,
|
||||||
|
PageMode page_mode,
|
||||||
|
MobileIdentityLV mi1,
|
||||||
|
MobileIdentityTLV mi2 optional,
|
||||||
|
RestOctets rest_octets
|
||||||
|
} with { variant "TAG(mi2, tag = 23)" };
|
||||||
|
|
||||||
|
/* 9.1.23 */
|
||||||
|
type record PagingRequestType2 {
|
||||||
|
ChannelNeeded12 chan_needed,
|
||||||
|
PageMode page_mode,
|
||||||
|
GsmTmsi mi1,
|
||||||
|
GsmTmsi mi2,
|
||||||
|
MobileIdentityTLV mi3 optional,
|
||||||
|
RestOctets rest_octets
|
||||||
|
} with { variant "TAG(mi3, tag = 23)" };
|
||||||
|
|
||||||
|
/* 9.1.24 */
|
||||||
|
type record length(4) of GsmTmsi GsmTmsi4;
|
||||||
|
type record PagingRequestType3 {
|
||||||
|
ChannelNeeded12 chan_needed,
|
||||||
|
PageMode page_mode,
|
||||||
|
GsmTmsi4 mi,
|
||||||
|
RestOctets rest_octets
|
||||||
|
} with { variant "" };
|
||||||
|
|
||||||
|
|
||||||
|
type union RrUnion {
|
||||||
|
/*
|
||||||
|
SystemInformationType1 si1,
|
||||||
|
SystemInformationType2 si2,
|
||||||
|
SystemInformationType2bis si2bis,
|
||||||
|
SystemInformationType2ter si2ter,
|
||||||
|
SystemInformationType3 si3,
|
||||||
|
SystemInformationType4 si4,
|
||||||
|
SystemInformationType5 si5,
|
||||||
|
SystemInformationType5bis si5bis,
|
||||||
|
SystemInformationType5ter si5ter,
|
||||||
|
SystemInformationType6 si6,
|
||||||
|
*/
|
||||||
|
ImmediateAssignment imm_ass,
|
||||||
|
ImmediateAssignmentReject imm_ass_rej,
|
||||||
|
PagingRequestType1 pag_req_1,
|
||||||
|
PagingRequestType2 pag_req_2,
|
||||||
|
PagingRequestType3 pag_req_3,
|
||||||
|
octetstring other
|
||||||
|
} with { variant "" };
|
||||||
|
|
||||||
|
/* Special RR Message on BCCH / CCCH Dowlink */
|
||||||
|
|
||||||
|
type record GsmRrMessage {
|
||||||
|
RrHeader header,
|
||||||
|
RrUnion payload
|
||||||
|
} with { variant (payload) "CROSSTAG(
|
||||||
|
/*
|
||||||
|
si1, header.message_type = SYSTEM_INFORMATION_TYPE_1;
|
||||||
|
si2, header.message_type = SYSTEM_INFORMATION_TYPE_2;
|
||||||
|
si2bis, header.message_type = SYSTEM_INFORMATION_TYPE_2bis;
|
||||||
|
si2ter, header.message_type = SYSTEM_INFORMATION_TYPE_2ter;
|
||||||
|
si3, header.message_type = SYSTEM_INFORMATION_TYPE_3;
|
||||||
|
si4, header.message_type = SYSTEM_INFORMATION_TYPE_4;
|
||||||
|
si5, header.message_type = SYSTEM_INFORMATION_TYPE_5;
|
||||||
|
si5bis, header.message_type = SYSTEM_INFORMATION_TYPE_5bis;
|
||||||
|
si5ter, header.message_type = SYSTEM_INFORMATION_TYPE_5ter;
|
||||||
|
si6, header.message_type = SYSTEM_INFORMATION_TYPE_6;
|
||||||
|
*/
|
||||||
|
imm_ass, header.message_type = IMMEDIATE_ASSIGNMENT;
|
||||||
|
imm_ass_rej, header.message_type = IMMEDIATE_ASSIGNMENT_REJECT;
|
||||||
|
pag_req_1, header.message_type = PAGING_REQUEST_TYPE_1;
|
||||||
|
pag_req_2, header.message_type = PAGING_REQUEST_TYPE_2;
|
||||||
|
pag_req_3, header.message_type = PAGING_REQUEST_TYPE_3;
|
||||||
|
other, OTHERWISE;
|
||||||
|
)" };
|
||||||
|
|
||||||
|
/* Normal L3 Message on Dedicated Channel */
|
||||||
|
|
||||||
|
/* 9.1.25 Paging Response */
|
||||||
|
type record PagingResponse {
|
||||||
|
uint4_t spare_half_octet,
|
||||||
|
CipheringKeySeqNr cksn,
|
||||||
|
MsClassmark2LV cm2,
|
||||||
|
MobileIdentityLV mi,
|
||||||
|
uint8_t addl_upd_par optional
|
||||||
|
} with { variant "" };
|
||||||
|
|
||||||
|
type union RrL3Union {
|
||||||
|
PagingResponse paging_response,
|
||||||
|
octetstring other
|
||||||
|
};
|
||||||
|
|
||||||
|
type record GsmRrL3Message {
|
||||||
|
RrL3Header header,
|
||||||
|
RrL3Union payload
|
||||||
|
} with { variant (payload) "CROSSTAG(
|
||||||
|
paging_response, header.message_type = PAGING_RESPONSE;
|
||||||
|
|
||||||
|
other, OTHERWISE;
|
||||||
|
)" }
|
||||||
|
|
||||||
|
|
||||||
} with { encode "RAW"; variant "FIELDORDER(msb)" }
|
} with { encode "RAW"; variant "FIELDORDER(msb)" }
|
||||||
|
|
|
@ -797,7 +797,7 @@ module Test {
|
||||||
}
|
}
|
||||||
|
|
||||||
template SystemInformation t_SI_SI3 := {
|
template SystemInformation t_SI_SI3 := {
|
||||||
header := t_SiHeader(SYSTEM_INFORMATION_TYPE_3, ?),
|
header := t_RrHeader(SYSTEM_INFORMATION_TYPE_3, ?),
|
||||||
payload := { si3 := t_SI3 }
|
payload := { si3 := t_SI3 }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue