Implement SystemInformation13 Rest Octets types
Related: SYS#5358 Change-Id: Id8845ebe28a9a6ed79d2d408dc7c1ad8a275b809
This commit is contained in:
parent
dd9fb84b58
commit
28652d8724
|
@ -165,8 +165,7 @@ type record SystemInformationConfig {
|
|||
SI2quaterRestOctetsList si2quater optional,
|
||||
SystemInformationType3 si3 optional,
|
||||
SystemInformationType4 si4 optional,
|
||||
/* TODO: replace with proper decoding of SI13, implement SI13 in GSM_SystemInformation.ttcn */
|
||||
octetstring si13 optional,
|
||||
SystemInformationType13 si13 optional,
|
||||
SystemInformationType5 si5 optional,
|
||||
SystemInformationType5bis si5bis optional,
|
||||
SystemInformationType5ter si5ter optional,
|
||||
|
@ -371,7 +370,44 @@ template SystemInformationConfig SystemInformationConfig_default := {
|
|||
s := omit
|
||||
}
|
||||
},
|
||||
si13 := '9000185A6FC9E08410AB2B2B2B2B2B2B2B2B2B2B'O,
|
||||
si13 := {
|
||||
rest_octets := {
|
||||
presence := '1'B,
|
||||
bcch_change_mark := ?,
|
||||
si_change_field := '0000'B,
|
||||
presence2 := '0'B,
|
||||
si13_change_mark := omit,
|
||||
gprs_ma := omit,
|
||||
zero := '0'B, /* PBCCH not present in cell */
|
||||
rac := 0,
|
||||
spgc_ccch_sup := '0'B,
|
||||
priority_access_thr := '110'B,
|
||||
network_control_order := '00'B,
|
||||
gprs_cell_opts := {
|
||||
nmo := '01'B,
|
||||
t3168 := '011'B,
|
||||
t3192 := '010'B,
|
||||
drx_timer_max := '011'B,
|
||||
access_burst_type := '0'B,
|
||||
control_ack_type := '1'B,
|
||||
bs_cv_max := 15,
|
||||
pan_presence := '1'B,
|
||||
pan_dec := 1,
|
||||
pan_inc := 1,
|
||||
pan_max := '111'B,
|
||||
ext_info_presence := ?,
|
||||
ext_info_length := *,
|
||||
ext_info := *
|
||||
},
|
||||
gprs_pwr_ctrl_params := {
|
||||
alpha := 0,
|
||||
t_avg_w := '10000'B,
|
||||
t_avg_t := '10000'B,
|
||||
pc_meas_chan := '0'B,
|
||||
n_avg_i := '1000'B
|
||||
}
|
||||
}
|
||||
},
|
||||
si5 := {
|
||||
bcch_freq_list := '10000000000000000000000000000000'O
|
||||
},
|
||||
|
@ -480,7 +516,7 @@ function f_sysinfo_dec_raw(inout SystemInformationConfig si, RSL_Message rsl)
|
|||
if (not isbound(data)) {
|
||||
si.si13 := omit;
|
||||
} else {
|
||||
si.si13 := dec_SystemInformation(data).payload.other;
|
||||
si.si13 := dec_SystemInformation(data).payload.si13;
|
||||
}
|
||||
} else {
|
||||
handled := false;
|
||||
|
|
|
@ -15,6 +15,7 @@ module GSM_RestOctets {
|
|||
|
||||
import from General_Types all;
|
||||
import from Osmocom_Types all;
|
||||
import from RLCMAC_CSN1_Types all;
|
||||
|
||||
/* 10.5.2.33b SI 2quater Rest Octets */
|
||||
type record SI2quaterRestOctets {
|
||||
|
@ -692,6 +693,34 @@ type record SI4RestOctets {
|
|||
variant "PADDING(yes), PADDING_PATTERN('00101011'B)"
|
||||
};
|
||||
|
||||
/* 10.5.2.37b SI 13 Rest Octets (O & S) */
|
||||
type record SI13RestOctets {
|
||||
BIT1 presence, // L/H
|
||||
uint3_t bcch_change_mark,
|
||||
BIT4 si_change_field,
|
||||
BIT1 presence2,
|
||||
BIT2 si13_change_mark optional,
|
||||
GprsMobileAllocation gprs_ma optional,
|
||||
BIT1 zero ('0'B), /* PBCCH not present in cell */
|
||||
uint8_t rac,
|
||||
BIT1 spgc_ccch_sup,
|
||||
BIT3 priority_access_thr,
|
||||
BIT2 network_control_order,
|
||||
GprsCellOptions gprs_cell_opts,
|
||||
GprsPowerControlParameters gprs_pwr_ctrl_params
|
||||
/* TODO: Additions in release 99 */
|
||||
} with {
|
||||
|
||||
variant (presence) "CSN.1 L/H"
|
||||
/* TODO: for all fields after presencte: variant (<field>) "PRESENCE(presence = '1'B)" */
|
||||
variant (si13_change_mark) "PRESENCE(presence2 = '1'B)"
|
||||
variant (gprs_ma) "PRESENCE(presence2 = '1'B)"
|
||||
|
||||
/* The TITAN's RAW encoder generates an octet-aligned octetstring,
|
||||
* so we should make sure that unused bits contain proper padding. */
|
||||
variant "PADDING(yes), PADDING_PATTERN('00101011'B)"
|
||||
};
|
||||
|
||||
/* Selection Parameters */
|
||||
type record SelectionParams {
|
||||
boolean cbq,
|
||||
|
@ -777,6 +806,11 @@ external function enc_SI4RestOctets(in SI4RestOctets ro) return octetstring
|
|||
external function dec_SI4RestOctets(in octetstring stream) return SI4RestOctets
|
||||
with { extension "prototype(convert) decode(RAW)" };
|
||||
|
||||
external function enc_SI13RestOctets(in SI13RestOctets ro) return octetstring
|
||||
with { extension "prototype(convert) encode(RAW)" };
|
||||
external function dec_SI13RestOctets(in octetstring stream) return SI13RestOctets
|
||||
with { extension "prototype(convert) decode(RAW)" };
|
||||
|
||||
|
||||
/* Basic templates to be extended in place */
|
||||
template (value) SI3RestOctets ts_SI3RestOctets := {
|
||||
|
|
|
@ -196,6 +196,11 @@ module GSM_SystemInformation {
|
|||
RestOctets rest_octets length(0..7)
|
||||
} with { variant "" };
|
||||
|
||||
/* 44.018 9.1.43a */
|
||||
type record SystemInformationType13 {
|
||||
SI13RestOctets rest_octets
|
||||
} with { variant "" };
|
||||
|
||||
type union SystemInformationUnion {
|
||||
SystemInformationType1 si1,
|
||||
SystemInformationType2 si2,
|
||||
|
@ -208,6 +213,7 @@ module GSM_SystemInformation {
|
|||
SystemInformationType5bis si5bis,
|
||||
SystemInformationType5ter si5ter,
|
||||
SystemInformationType6 si6,
|
||||
SystemInformationType13 si13,
|
||||
octetstring other
|
||||
} with { variant "" };
|
||||
|
||||
|
@ -225,6 +231,7 @@ module GSM_SystemInformation {
|
|||
si5bis, header.message_type = SYSTEM_INFORMATION_TYPE_5bis;
|
||||
si5ter, header.message_type = SYSTEM_INFORMATION_TYPE_5ter;
|
||||
si6, header.message_type = SYSTEM_INFORMATION_TYPE_6;
|
||||
si13, header.message_type = SYSTEM_INFORMATION_TYPE_13;
|
||||
other, OTHERWISE;
|
||||
)" };
|
||||
|
||||
|
|
|
@ -929,7 +929,7 @@ module RLCMAC_CSN1_Types {
|
|||
};
|
||||
type record FreqDirect1 {
|
||||
uint6_t maio,
|
||||
GprsMobileAllication mobile_allocation
|
||||
GprsMobileAllocation mobile_allocation
|
||||
}
|
||||
type record FreqDirect2 {
|
||||
uint6_t maio,
|
||||
|
@ -953,6 +953,15 @@ module RLCMAC_CSN1_Types {
|
|||
variant (direct2) "PRESENCE(presence = '11'B)"
|
||||
};
|
||||
|
||||
/* 12.9a GPRS Power Control Parameters */
|
||||
type record GprsPowerControlParameters {
|
||||
uint4_t alpha,
|
||||
BIT5 t_avg_w,
|
||||
BIT5 t_avg_t,
|
||||
BIT1 pc_meas_chan,
|
||||
BIT4 n_avg_i
|
||||
};
|
||||
|
||||
/* 12.10 Global TFI */
|
||||
type record GlobalTfi {
|
||||
boolean is_dl_tfi,
|
||||
|
@ -967,7 +976,7 @@ module RLCMAC_CSN1_Types {
|
|||
} with {
|
||||
variant (rfl_number_list) "PRESENCE(presence = '1'B)"
|
||||
};
|
||||
type record GprsMobileAllication {
|
||||
type record GprsMobileAllocation {
|
||||
uint6_t hsn,
|
||||
BIT1 rfl_number_list_present,
|
||||
RflNumberList rfl_number_list optional,
|
||||
|
@ -1036,6 +1045,48 @@ module RLCMAC_CSN1_Types {
|
|||
variant (relative_k) "PRESENCE(presence = '1'B)"
|
||||
};
|
||||
|
||||
/* 12.24 GPRS Cell Options */
|
||||
type record ExtensionInformation {
|
||||
BIT1 egprs_supported,
|
||||
BIT1 egprs_pkt_channel_req optional,
|
||||
BIT4 bep_period optional,
|
||||
BIT1 pfc_feature_mode,
|
||||
BIT1 dtm_support,
|
||||
BIT1 bss_paging_coordination,
|
||||
/* REL-4 extension */
|
||||
BIT1 ccn_active optional,
|
||||
BIT1 nw_ext_utbf optional
|
||||
/* TODO: REL-6 extension */
|
||||
/* TODO: REL-7 extension */
|
||||
/* TODO: REL-10 extension */
|
||||
} with {
|
||||
variant (egprs_pkt_channel_req) "PRESENCE(egprs_supported = '1'B)"
|
||||
variant (bep_period) "PRESENCE(egprs_supported = '1'B)"
|
||||
};
|
||||
type record GprsCellOptions {
|
||||
BIT2 nmo,
|
||||
BIT3 t3168,
|
||||
BIT3 t3192,
|
||||
BIT3 drx_timer_max,
|
||||
BIT1 access_burst_type,
|
||||
BIT1 control_ack_type,
|
||||
uint4_t bs_cv_max,
|
||||
BIT1 pan_presence,
|
||||
uint3_t pan_dec optional,
|
||||
uint3_t pan_inc optional,
|
||||
BIT3 pan_max optional,
|
||||
BIT1 ext_info_presence,
|
||||
BIT6 ext_info_length optional,
|
||||
ExtensionInformation ext_info optional
|
||||
} with {
|
||||
variant (pan_dec) "PRESENCE(pan_presence = '1'B)"
|
||||
variant (pan_inc) "PRESENCE(pan_presence = '1'B)"
|
||||
variant (pan_max) "PRESENCE(pan_presence = '1'B)"
|
||||
variant (ext_info_length) "PRESENCE(ext_info_presence = '1'B)"
|
||||
variant (ext_info) "PRESENCE(ext_info_presence = '1'B)"
|
||||
/* TODO: mark REL-4 and upwards in ext_info as omit based on ext_info_length ? */
|
||||
};
|
||||
|
||||
/* 3GPP TS 44.060, table 11.2.5a.2 "EGPRS PACKET CHANNEL REQUEST" */
|
||||
type union EGPRSPktChRequest {
|
||||
EGPRSPktChRequest_MC5P2RB3 one_phase,
|
||||
|
|
Loading…
Reference in New Issue