rsl: Add SMSCB related RSL types / templates

Change-Id: I203e72a203ffa7538aadc7b96e1ae7e21956c160
This commit is contained in:
Harald Welte 2018-09-10 10:28:21 +02:00
parent f50e3ae532
commit cc373205ad
1 changed files with 54 additions and 0 deletions

View File

@ -577,6 +577,28 @@ module RSL_Types {
RSL_ChanNeeded chan_needed
}
/* 9.3.41 CB Command Type */
type enumerated RSL_CbCommand {
RSL_CB_CMD_NORMAL ('0000'B),
RSL_CB_CMD_SCHEDULE ('1000'B),
RSL_CB_CMD_DEFAULT ('1110'B),
RSL_CB_CMD_NULL ('1111'B)
} with { variant "FIELDLENGTH(4)" };
type record RSL_IE_CbCommandType {
RSL_CbCommand command,
boolean default_bcast_null,
BIT1 spare,
uint2_t last_block
};
template (value) RSL_IE_CbCommandType ts_RSL_IE_CbCmdType(RSL_CbCommand cmd := RSL_CB_CMD_NORMAL,
uint2_t last_block := 1,
boolean def_bcast_null := true) := {
command := cmd,
default_bcast_null := def_bcast_null,
spare := '0'B,
last_block := last_block
}
/* 9.3.53 */
type record RSL_IE_MultirateCtrl {
uint3_t spare,
@ -678,6 +700,9 @@ module RSL_Types {
uint16_t paging_load,
uint8_t paging_group,
RSL_IE_ChanNeeded chan_needed,
RSL_IE_CbCommandType cb_cmd_type,
RSL_LV smscb_message,
RSL_IE_StartingTime starting_time,
RSL_IE_EncryptionInfo encr_info,
RSL_IE_RequestRef req_ref,
@ -726,6 +751,8 @@ module RSL_Types {
paging_load, iei = RSL_IE_PAGING_LOAD;
paging_group, iei = RSL_IE_PAGING_GROUP;
chan_needed, iei = RSL_IE_CHAN_NEEDED;
cb_cmd_type, iei = RSL_IE_CB_CMD_TYPE;
smscb_message, iei = RSL_IE_SMSCB_MSG;
starting_time, iei = RSL_IE_STARTNG_TIME;
encr_info, iei = RSL_IE_ENCR_INFO;
@ -1467,6 +1494,33 @@ template RSL_Message tr_RSL_MsgTypeDR(template RSL_MessageType msg_type) modifie
ies := *
}
/* 8.5.8 BTS <- BSC SMS BROADCAST COMMAND */
template RSL_Message tr_RSL_SMSCB_CMD(template RSL_IE_CbCommandType cb_cmd := ?,
template octetstring msg := ?,
template RslChannelNr chan_nr := ?) := {
msg_disc := tr_RSL_MsgDisc(RSL_MDISC_CCHAN, false),
msg_type := RSL_MT_SMS_BC_CMD,
ies := {
tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}),
tr_RSL_IE(RSL_IE_Body:{cb_cmd_type := cb_cmd}),
tr_RSL_IE(RSL_IE_Body:{smscb_message := tr_RSL_LV(msg)}),
*
}
}
template (value) RSL_Message ts_RSL_SMSCB_CMD(template (value) RSL_IE_CbCommandType cb_cmd,
template (value) octetstring msg,
template (value) RslChannelNr chan_nr :=
ts_RslChanNr_SDCCH4(0, 2)) := {
msg_disc := ts_RSL_MsgDisc(RSL_MDISC_CCHAN, false),
msg_type := RSL_MT_SMS_BC_CMD,
ies := {
t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
t_RSL_IE(RSL_IE_CB_CMD_TYPE, RSL_IE_Body:{cb_cmd_type := cb_cmd}),
t_RSL_IE(RSL_IE_SMSCB_MSG, RSL_IE_Body:{smscb_message := ts_RSL_LV(msg)})
/* optional channel type for extended CBCH */
}
}
/* 8.6.2 BTS <- BSC */
template (value) RSL_Message ts_RSL_SACCH_FILL(RSL_IE_SysinfoType si_type, octetstring l3_info) := {
msg_disc := ts_RSL_MsgDisc(RSL_MDISC_TRX_MGMT, false),