RSL_Types: Add dissected RSL_IE_ActivationType and related templates

This is required for supporting normal and handover assignments.

Change-Id: I116d589d0ec4aa6bffba4da6e3bfe1974dd04db2
This commit is contained in:
Harald Welte 2019-05-19 22:27:11 +02:00
parent b05fd2d294
commit 921f9e0732
1 changed files with 36 additions and 10 deletions

View File

@ -273,20 +273,44 @@ module RSL_Types {
type record RSL_IE_ActivationType {
boolean reactivation,
uint4_t reserved,
uint3_t a_bits
}
RSL_ActivationAbits a_bits
};
type enumerated RSL_ActivationAbits {
ACT_REL_TO_IMM_ASSIGN ('000'B),
ACT_REL_TO_NORM_ASSIGN ('001'B),
ACT_REL_TO_ASYNC_HANDOVER ('010'B),
ACT_REL_TO_SYNC_HANDOVER ('011'B),
ACT_REL_TO_ADDL_ASSIGN ('100'B),
ACT_REL_TO_MSLOT_CONFIG ('101'B),
ACT_REL_TO_OSMO_PDCH ('111'B)
} with { variant "FIELDLENGTH(3)" };
template RSL_IE_ActivationType t_RSL_IE_ActType := {
const RSL_IE_ActivationType t_RSL_IE_ActType_IA := {
reactivation := false,
reserved := 0,
a_bits := 0 /* related to immediate assignment */
a_bits := ACT_REL_TO_IMM_ASSIGN
}
const RSL_IE_ActivationType t_RSL_IE_ActType_ASS := {
reactivation := false,
reserved := 0,
a_bits := ACT_REL_TO_NORM_ASSIGN
}
const RSL_IE_ActivationType t_RSL_IE_ActType_HO_ASYNC := {
reactivation := false,
reserved := 0,
a_bits := ACT_REL_TO_ASYNC_HANDOVER
}
const RSL_IE_ActivationType t_RSL_IE_ActType_HO_SYNC := {
reactivation := false,
reserved := 0,
a_bits := ACT_REL_TO_SYNC_HANDOVER
}
/* osmocom-style dynamic PDCH */
template RSL_IE_ActivationType t_RSL_IE_ActType_PDCH := {
const RSL_IE_ActivationType t_RSL_IE_ActType_PDCH := {
reactivation := false,
reserved := 1,
a_bits := 7 /* related to immediate assignment */
a_bits := ACT_REL_TO_OSMO_PDCH
}
/* 9.3.6 */
@ -1122,23 +1146,25 @@ template RSL_Message tr_RSL_MsgTypeDR(template RSL_MessageType msg_type) modifie
/* 8.4.1 BSC -> BTS */
template (value) RSL_Message ts_RSL_CHAN_ACT(template (value) RslChannelNr chan_nr,
template (value) RSL_IE_ChannelMode mode) := {
template (value) RSL_IE_ChannelMode mode,
template (value) RSL_IE_ActivationType at := t_RSL_IE_ActType_IA) := {
msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false),
msg_type := RSL_MT_CHAN_ACTIV,
ies :={
t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
t_RSL_IE(RSL_IE_ACT_TYPE, RSL_IE_Body:{act_type := t_RSL_IE_ActType}),
t_RSL_IE(RSL_IE_ACT_TYPE, RSL_IE_Body:{act_type := at}),
t_RSL_IE(RSL_IE_CHAN_MODE, RSL_IE_Body:{chan_mode := mode})
/* lots of optional IEs */
}
}
template RSL_Message tr_RSL_CHAN_ACT(template RslChannelNr chan_nr,
template RSL_IE_ChannelMode mode) := {
template RSL_IE_ChannelMode mode,
template (value) RSL_IE_ActivationType at := t_RSL_IE_ActType_IA) := {
msg_disc := tr_RSL_MsgDisc(RSL_MDISC_DCHAN, false),
msg_type := RSL_MT_CHAN_ACTIV,
ies :={
tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}),
tr_RSL_IE(RSL_IE_Body:{act_type := t_RSL_IE_ActType}),
tr_RSL_IE(RSL_IE_Body:{act_type := at}),
tr_RSL_IE(RSL_IE_Body:{chan_mode := mode}),
/* lots of optional IEs */
*