L1CTL_Types: Add support for L1CTL_DATA_TBF_{REQ,CONF}
Those two L1CTL primitives are extensions of L1CTL for GPRS operation
This commit is contained in:
parent
6f3c223b9a
commit
b3c226ebde
|
@ -63,6 +63,18 @@ module L1CTL_PortType {
|
||||||
return rr.payload.imm_ass;
|
return rr.payload.imm_ass;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function f_L1CTL_TBF_CFG(L1CTL_PT pt, boolean is_uplink, TfiUsfArr tfi_usf) {
|
||||||
|
timer T := 2.0;
|
||||||
|
T.start;
|
||||||
|
pt.send(t_L1CTL_TBF_CFG_REQ(is_uplink, tfi_usf));
|
||||||
|
alt {
|
||||||
|
[] pt.receive(t_L1CTL_TBF_CFG_CONF(is_uplink)) {}
|
||||||
|
[] pt.receive { repeat };
|
||||||
|
[] T.timeout { setverdict(fail, "Timeout waiting for TBF-CFG.conf") };
|
||||||
|
}
|
||||||
|
T.stop;
|
||||||
|
}
|
||||||
|
|
||||||
/* Send DM_EST_REQ from parameters derived from IMM ASS */
|
/* Send DM_EST_REQ from parameters derived from IMM ASS */
|
||||||
function f_L1CTL_DM_EST_REQ_IA(L1CTL_PT pt, ImmediateAssignment imm_ass) {
|
function f_L1CTL_DM_EST_REQ_IA(L1CTL_PT pt, ImmediateAssignment imm_ass) {
|
||||||
pt.send(t_L1CTL_DM_EST_REQ({ false, imm_ass.chan_desc.arfcn }, imm_ass.chan_desc.chan_nr, imm_ass.chan_desc.tsc));
|
pt.send(t_L1CTL_DM_EST_REQ({ false, imm_ass.chan_desc.arfcn }, imm_ass.chan_desc.chan_nr, imm_ass.chan_desc.tsc));
|
||||||
|
|
|
@ -41,7 +41,9 @@ module L1CTL_Types {
|
||||||
L1CTL_TRAFFIC_CONF,
|
L1CTL_TRAFFIC_CONF,
|
||||||
L1CTL_TRAFFIC_IND,
|
L1CTL_TRAFFIC_IND,
|
||||||
L1CTL_TBF_CFG_REQ,
|
L1CTL_TBF_CFG_REQ,
|
||||||
L1CTL_TBF_CFG_CONF
|
L1CTL_TBF_CFG_CONF,
|
||||||
|
L1CTL_DATA_TBF_REQ,
|
||||||
|
L1CTL_DATA_TBF_CONF
|
||||||
} with { variant "FIELDLENGTH(8)" };
|
} with { variant "FIELDLENGTH(8)" };
|
||||||
|
|
||||||
type enumerated L1ctlCcchMode {
|
type enumerated L1ctlCcchMode {
|
||||||
|
@ -166,6 +168,11 @@ module L1CTL_Types {
|
||||||
OCT2 padding
|
OCT2 padding
|
||||||
} with { variant "" };
|
} with { variant "" };
|
||||||
|
|
||||||
|
type record L1ctlUlTbfInfo {
|
||||||
|
uint8_t tbf_nr,
|
||||||
|
OCT3 padding
|
||||||
|
} with { variant "" };
|
||||||
|
|
||||||
type record L1ctlFbsbFlags {
|
type record L1ctlFbsbFlags {
|
||||||
BIT5 padding,
|
BIT5 padding,
|
||||||
boolean sb,
|
boolean sb,
|
||||||
|
@ -270,6 +277,7 @@ module L1CTL_Types {
|
||||||
type record L1ctlUlMessage {
|
type record L1ctlUlMessage {
|
||||||
L1ctlHeader header,
|
L1ctlHeader header,
|
||||||
L1ctlUlInfo ul_info optional,
|
L1ctlUlInfo ul_info optional,
|
||||||
|
L1ctlUlTbfInfo ul_info_tbf optional,
|
||||||
L1ctlUlPayload payload
|
L1ctlUlPayload payload
|
||||||
} with { variant (ul_info) "PRESENCE(header.msg_type = L1CTL_RACH_REQ,
|
} with { variant (ul_info) "PRESENCE(header.msg_type = L1CTL_RACH_REQ,
|
||||||
header.msg_type = L1CTL_PARAM_REQ,
|
header.msg_type = L1CTL_PARAM_REQ,
|
||||||
|
@ -279,6 +287,7 @@ module L1CTL_Types {
|
||||||
header.msg_type = L1CTL_DM_FREQ_REQ,
|
header.msg_type = L1CTL_DM_FREQ_REQ,
|
||||||
header.msg_type = L1CTL_DM_REL_REQ,
|
header.msg_type = L1CTL_DM_REL_REQ,
|
||||||
header.msg_type = L1CTL_TRAFFIC_REQ)"
|
header.msg_type = L1CTL_TRAFFIC_REQ)"
|
||||||
|
variant (ul_info_tbf) "PRESENCE(header.msg_type = L1CTL_DATA_TBF_REQ)"
|
||||||
variant (payload) "CROSSTAG(fbsb_req, header.msg_type = L1CTL_FBSB_REQ;
|
variant (payload) "CROSSTAG(fbsb_req, header.msg_type = L1CTL_FBSB_REQ;
|
||||||
ccch_mode_req, header.msg_type = L1CTL_CCCH_MODE_REQ;
|
ccch_mode_req, header.msg_type = L1CTL_CCCH_MODE_REQ;
|
||||||
tch_mode_req, header.msg_type = L1CTL_TCH_MODE_REQ;
|
tch_mode_req, header.msg_type = L1CTL_TCH_MODE_REQ;
|
||||||
|
@ -323,6 +332,7 @@ module L1CTL_Types {
|
||||||
template L1ctlUlMessage t_L1ctlResetReq(template L1ctlResetType rst_type) := {
|
template L1ctlUlMessage t_L1ctlResetReq(template L1ctlResetType rst_type) := {
|
||||||
header := t_L1ctlHeader(L1CTL_RESET_REQ),
|
header := t_L1ctlHeader(L1CTL_RESET_REQ),
|
||||||
ul_info := omit,
|
ul_info := omit,
|
||||||
|
ul_info_tbf := omit,
|
||||||
payload := {
|
payload := {
|
||||||
reset_req := {
|
reset_req := {
|
||||||
reset_type := rst_type,
|
reset_type := rst_type,
|
||||||
|
@ -335,6 +345,7 @@ module L1CTL_Types {
|
||||||
template L1ctlUlMessage t_L1CTL_FBSB_REQ(template Arfcn arfcn, template L1ctlFbsbFlags flags, uint8_t sync_info_idx, L1ctlCcchMode ccch_mode, GsmRxLev rxlev_exp) := {
|
template L1ctlUlMessage t_L1CTL_FBSB_REQ(template Arfcn arfcn, template L1ctlFbsbFlags flags, uint8_t sync_info_idx, L1ctlCcchMode ccch_mode, GsmRxLev rxlev_exp) := {
|
||||||
header := t_L1ctlHeader(L1CTL_FBSB_REQ),
|
header := t_L1ctlHeader(L1CTL_FBSB_REQ),
|
||||||
ul_info := omit,
|
ul_info := omit,
|
||||||
|
ul_info_tbf := omit,
|
||||||
payload := {
|
payload := {
|
||||||
fbsb_req := {
|
fbsb_req := {
|
||||||
arfcn := arfcn,
|
arfcn := arfcn,
|
||||||
|
@ -370,6 +381,7 @@ module L1CTL_Types {
|
||||||
link_id := ts_RslLinkID_DCCH(0),
|
link_id := ts_RslLinkID_DCCH(0),
|
||||||
padding := '0000'O
|
padding := '0000'O
|
||||||
},
|
},
|
||||||
|
ul_info_tbf := omit,
|
||||||
payload := {
|
payload := {
|
||||||
rach_req := {
|
rach_req := {
|
||||||
ra := ra,
|
ra := ra,
|
||||||
|
@ -386,6 +398,7 @@ module L1CTL_Types {
|
||||||
link_id := ts_RslLinkID_DCCH(0),
|
link_id := ts_RslLinkID_DCCH(0),
|
||||||
padding := '0000'O
|
padding := '0000'O
|
||||||
},
|
},
|
||||||
|
ul_info_tbf := omit,
|
||||||
payload := {
|
payload := {
|
||||||
dm_est_req := {
|
dm_est_req := {
|
||||||
tsc := tsc,
|
tsc := tsc,
|
||||||
|
@ -405,6 +418,7 @@ module L1CTL_Types {
|
||||||
link_id := ts_RslLinkID_DCCH(0),
|
link_id := ts_RslLinkID_DCCH(0),
|
||||||
padding := '0000'O
|
padding := '0000'O
|
||||||
},
|
},
|
||||||
|
ul_info_tbf := omit,
|
||||||
payload := {
|
payload := {
|
||||||
other := ''O
|
other := ''O
|
||||||
}
|
}
|
||||||
|
@ -417,6 +431,7 @@ module L1CTL_Types {
|
||||||
link_id := link_id,
|
link_id := link_id,
|
||||||
padding := '0000'O
|
padding := '0000'O
|
||||||
},
|
},
|
||||||
|
ul_info_tbf := omit,
|
||||||
payload := {
|
payload := {
|
||||||
other := l2_data
|
other := l2_data
|
||||||
}
|
}
|
||||||
|
@ -425,6 +440,7 @@ module L1CTL_Types {
|
||||||
template L1ctlUlMessage t_L1CTL_TBF_CFG_REQ(boolean is_uplink, TfiUsfArr tfi_usf) := {
|
template L1ctlUlMessage t_L1CTL_TBF_CFG_REQ(boolean is_uplink, TfiUsfArr tfi_usf) := {
|
||||||
header := t_L1ctlHeader(L1CTL_TBF_CFG_REQ),
|
header := t_L1ctlHeader(L1CTL_TBF_CFG_REQ),
|
||||||
ul_info := omit,
|
ul_info := omit,
|
||||||
|
ul_info_tbf := omit,
|
||||||
payload := {
|
payload := {
|
||||||
tbf_cfg_req := {
|
tbf_cfg_req := {
|
||||||
tbf_nr := 0,
|
tbf_nr := 0,
|
||||||
|
@ -448,6 +464,18 @@ module L1CTL_Types {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template L1ctlUlMessage t_L1CTL_DATA_TBF_REQ(octetstring l2_data, uint8_t tbf_nr := 0) := {
|
||||||
|
header := t_L1ctlHeader(L1CTL_DATA_TBF_REQ),
|
||||||
|
ul_info := omit,
|
||||||
|
ul_info_tbf := {
|
||||||
|
tbf_nr := tbf_nr,
|
||||||
|
padding := '000000'O
|
||||||
|
},
|
||||||
|
payload := {
|
||||||
|
other := l2_data
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* for matching against incoming RACH_CONF */
|
/* for matching against incoming RACH_CONF */
|
||||||
template L1ctlDlMessage t_L1CTL_RACH_CONF := {
|
template L1ctlDlMessage t_L1CTL_RACH_CONF := {
|
||||||
header := t_L1ctlHeader(L1CTL_RACH_CONF),
|
header := t_L1ctlHeader(L1CTL_RACH_CONF),
|
||||||
|
|
Loading…
Reference in New Issue