Harald Welte | f7c2b20 | 2020-03-29 17:34:11 +0200 | [diff] [blame] | 1 | module BSSLAP_Types { |
| 2 | |
| 3 | /* BSSLAP_Types, defining abstract TTCN-3 data types for the 3GPP BSSLAP protocol. |
| 4 | * |
| 5 | * BSSLAP is a 3GPP standard protocol used between BSC and SMLC in a GSM network. |
| 6 | * This file covers 3GPP TS 48.071 version 15.0.0 Release 15 |
| 7 | * |
| 8 | * (C) 2020 by Harald Welte <laforge@gnumonks.org> |
| 9 | * All rights reserved. |
| 10 | * |
| 11 | * Released under the terms of GNU General Public License, Version 2 or |
| 12 | * (at your option) any later version. |
| 13 | * |
| 14 | * SPDX-License-Identifier: GPL-2.0-or-later |
| 15 | */ |
| 16 | |
| 17 | import from General_Types all; |
| 18 | import from Osmocom_Types all; |
| 19 | |
| 20 | |
| 21 | /* 3GPP TS 48.071 Table 5.1 */ |
| 22 | type enumerated BSSLAP_IEI { |
| 23 | BSSLAP_IEI_TA ('00000001'B), |
| 24 | BSSLAP_IEI_CELL_ID ('00001001'B), |
| 25 | BSSLAP_IEI_CHAN_DESC ('00010000'B), |
| 26 | BSSLAP_IEI_MEAS_REP ('00010100'B), |
| 27 | BSSLAP_IEI_CAUSE ('00011000'B), |
| 28 | BSSLAP_IEI_RRLP_FLAG ('00011001'B), |
| 29 | BSSLAP_IEI_RRLP ('00011011'B), |
| 30 | BSSLAP_IEI_CELL_ID_LIST ('00011100'B), |
| 31 | BSSLAP_IEI_ENH_MEAS_REP ('00011101'B), |
| 32 | BSSLAP_IEI_LAC ('00011110'B), |
| 33 | BSSLAP_IEI_FREQ_LIST ('00100001'B), |
| 34 | BSSLAP_IEI_MS_POWER ('00100010'B), |
| 35 | BSSLAP_IEI_DELTA_TIMER ('00100011'B), |
| 36 | BSSLAP_IEI_SERVING_CELL_ID ('00100100'B), |
| 37 | BSSLAP_IEI_ENCR_KEY ('00100101'B), |
| 38 | BSSLAP_IEI_CIPH_MODE_SET ('00100110'B), |
| 39 | BSSLAP_IEI_CHAN_MODE ('00100111'B), |
| 40 | BSSLAP_IEI_MR_CONFIG ('00101000'B), |
| 41 | BSSLAP_IEI_POLLING_REPETITION ('00101001'B), |
| 42 | BSSLAP_IEI_PACKET_CHAN_DESC ('00101010'B), |
| 43 | BSSLAP_IEI_TLLI ('00101011'B), |
| 44 | BSSLAP_IEI_TFI ('00101100'B), |
| 45 | BSSLAP_IEI_TBF_START_TIME ('00101101'B), |
| 46 | BSSLAP_IEI_PWRUP_START_TIME ('00101110'B), |
| 47 | BSSLAP_IEI_LONG_ENCR_KEY ('00101111'B), |
| 48 | BSSLAP_IEI_CONCUR_POS_PROC_F ('00110000'B) |
| 49 | } with { variant "FIELDLENGTH(8)" }; |
| 50 | |
| 51 | /* 3GPP TS 48.071 Section 5.1 */ |
| 52 | type enumerated BSSLAP_MsgType { |
| 53 | BSSLAP_MSGT_TA_REQUEST ('00000001'B), |
| 54 | BSSLAP_MSGT_TA_RESPONSE ('00000010'B), |
| 55 | BSSLAP_MSGT_REJECT ('00001010'B), |
| 56 | BSSLAP_MSGT_RESET ('00001011'B), |
| 57 | BSSLAP_MSGT_ABORT ('00001100'B), |
| 58 | BSSLAP_MSGT_TA_LAYER3 ('00001101'B), |
| 59 | BSSLAP_MSGT_MS_POS_CMD ('00001111'B), |
| 60 | BSSLAP_MSGT_MS_POS_RESP ('00010000'B), |
| 61 | BSSLAP_MSGT_UTDOA_REQ ('00010001'B), |
| 62 | BSSLAP_MSGT_UTDOA_RESP ('00010010'B) |
| 63 | } with { variant "FIELDLENGTH(8)" }; |
| 64 | |
| 65 | |
| 66 | /* Section 4.2.1 */ |
| 67 | type record BSSLAP_TaRequest { |
| 68 | BSSLAP_MsgType msg_type |
| 69 | }; |
| 70 | |
| 71 | /* Section 4.2.2 */ |
| 72 | type record BSSLAP_TaResponse { |
| 73 | BSSLAP_MsgType msg_type, |
| 74 | BSSLAP_IE_CellId serving_cell_id, |
| 75 | BSSLAP_IE_TimingAdvance timing_advance, |
| 76 | BSSLAP_IE_MeasRep meas_rep optional, |
| 77 | BSSLAP_IE_EnhMeasRep enh_meas_rep optional, |
| 78 | BSSLAP_IE_CellIdList meas_cell_id_list optional, |
| 79 | BSSLAP_IE_ConcurMethodF concur_meth_flag optional |
| 80 | }; |
| 81 | |
| 82 | /* Section 4.2.5 */ |
| 83 | type record BSSLAP_Reject { |
| 84 | BSSLAP_MsgType msg_type, |
| 85 | BSSLAP_IE_Cause cause |
| 86 | }; |
| 87 | |
| 88 | /* Section 4.2.6 */ |
| 89 | type record BSSLAP_Reset { |
| 90 | BSSLAP_MsgType msg_type, |
| 91 | BSSLAP_IE_CellId cell_id, |
| 92 | BSSLAP_IE_TimingAdvance timing_advance, |
| 93 | BSSLAP_IE_ChanDesc chan_desc, |
| 94 | BSSLAP_IE_Cause cause, |
| 95 | BSSLAP_IE_MeasRep meas_rep optional, |
| 96 | BSSLAP_IE_EnhMeasRep enh_meas_rep optional, |
| 97 | BSSLAP_IE_CellIdList meas_cell_id_list optional, |
| 98 | BSSLAP_IE_LAC lac optional, |
| 99 | BSSLAP_IE_FreqList freq_list optional, |
| 100 | BSSLAP_IE_ChanMode chan_mode optional, |
| 101 | BSSLAP_IE_MultiRateConfig mr_config optional, |
| 102 | BSSLAP_IE_PacketChanDesc pkt_chan_desc optional, |
| 103 | BSSLAP_IE_TLLI tlli optional, |
| 104 | BSSLAP_IE_TFI tfi optional, |
| 105 | BSSLAP_IE_StartingTime tbf_start_time optional, |
| 106 | BSSLAP_IE_EncryptionKey encr_key optional, |
| 107 | BSSLAP_IE_CiphModeSet ciph_mode_set optional, |
| 108 | BSSLAP_IE_LongEncryptionKey long_encr_key optional |
| 109 | }; |
| 110 | |
| 111 | /* Section 4.2.7 */ |
| 112 | type record BSSLAP_Abort { |
| 113 | BSSLAP_MsgType msg_type, |
| 114 | BSSLAP_IE_Cause cause |
| 115 | }; |
| 116 | |
| 117 | /* Section 4.2.8 */ |
| 118 | type record BSSLAP_TA_Layer3 { |
| 119 | BSSLAP_MsgType msg_type, |
| 120 | BSSLAP_IE_TimingAdvance timing_advance, |
| 121 | BSSLAP_IE_MeasRep meas_rep optional, |
| 122 | BSSLAP_IE_EnhMeasRep enh_meas_rep optional, |
| 123 | BSSLAP_IE_CellIdList meas_cell_id_list optional |
| 124 | }; |
| 125 | |
| 126 | /* Section 4.2.9 */ |
| 127 | type record BSSLAP_MS_PosCmd { |
| 128 | BSSLAP_MsgType msg_type, |
| 129 | BSSLAP_IE_RrlpFlag flag, |
| 130 | BSSLAP_IE_Rrlp rrlp_info |
| 131 | }; |
| 132 | |
| 133 | /* Section 4.2.10 */ |
| 134 | type record BSSLAP_MS_PosResp { |
| 135 | BSSLAP_MsgType msg_type, |
| 136 | BSSLAP_IE_RrlpFlag flag, |
| 137 | BSSLAP_IE_Rrlp rrlp_info, |
| 138 | BSSLAP_IE_TimingAdvance timing_advance optional, |
| 139 | BSSLAP_IE_MeasRep meas_rep optional, |
| 140 | BSSLAP_IE_EnhMeasRep enh_meas_rep optional, |
| 141 | BSSLAP_IE_CellIdList meas_cell_id_list optional, |
| 142 | BSSLAP_IE_ConcurMethodF concur_meth_flag optional |
| 143 | }; |
| 144 | |
| 145 | /* Section 4.2.11 */ |
| 146 | type record BSSLAP_UTDOA_Req { |
| 147 | BSSLAP_MsgType msg_type, |
| 148 | BSSLAP_IE_DeltaTimer delta_timer optional, |
| 149 | BSSLAP_IE_PollingRep polling_repetition optional |
| 150 | }; |
| 151 | |
| 152 | type union BSSLAP_PDU { |
| 153 | BSSLAP_TaRequest ta_req, |
| 154 | BSSLAP_TaResponse ta_resp, |
| 155 | BSSLAP_Reject reject, |
| 156 | BSSLAP_Reset reset, |
| 157 | BSSLAP_Abort abort, |
| 158 | BSSLAP_TA_Layer3 ta_layer3, |
| 159 | BSSLAP_MS_PosCmd ms_pos_cmd, |
| 160 | BSSLAP_MS_PosResp ms_pos_resp, |
| 161 | BSSLAP_UTDOA_Req utdoa_req |
| 162 | // TODO: U-TDOA Resp |
| 163 | } with { variant "TAG( |
| 164 | ta_req, msg_type = BSSLAP_MSGT_TA_REQUEST; |
| 165 | ta_resp, msg_type = BSSLAP_MSGT_TA_RESPONSE; |
| 166 | reject, msg_type = BSSLAP_MSGT_REJECT; |
| 167 | reset, msg_type = BSSLAP_MSGT_RESET; |
| 168 | abort, msg_type = BSSLAP_MSGT_ABORT; |
| 169 | ta_layer3, msg_type = BSSLAP_MSGT_TA_LAYER3; |
| 170 | ms_pos_cmd, msg_type = BSSLAP_MSGT_MS_POS_CMD; |
| 171 | ms_pos_resp, msg_type = BSSLAP_MSGT_MS_POS_RESP; |
| 172 | utdoa_req, msg_type = BSSLAP_MSGT_UTDOA_REQ; |
| 173 | )" |
| 174 | }; |
| 175 | |
| 176 | |
| 177 | /* Section 5.2 */ |
| 178 | type record BSSLAP_IE_TimingAdvance { |
| 179 | BSSLAP_IEI iei, |
| 180 | uint8_t ta |
| 181 | } with { variant "PRESENCE(iei = BSSLAP_IEI_TA)" }; |
| 182 | |
| 183 | |
| 184 | /* Section 5.4 */ |
| 185 | type record BSSLAP_IE_CellId { |
| 186 | BSSLAP_IEI iei, |
| 187 | uint16_t cell_id |
| 188 | } with { variant "PRESENCE(iei = BSSLAP_IEI_CELL_ID)" }; |
| 189 | |
| 190 | /* Section 5.8 */ |
| 191 | type record BSSLAP_IE_ChanDesc { |
| 192 | BSSLAP_IEI iei, |
| 193 | OCT3 chan_desc |
| 194 | } with { variant "PRESENCE(iei = BSSLAP_IEI_CHAN_DESC)" }; |
| 195 | |
| 196 | |
| 197 | /* Section 5.12 */ |
| 198 | type record BSSLAP_IE_MeasRep { |
| 199 | BSSLAP_IEI iei, |
| 200 | uint8_t len, |
| 201 | octetstring meas_rep |
| 202 | } with { |
| 203 | variant "PRESENCE(iei = BSSLAP_IEI_MEAS_REP)" |
| 204 | variant (len) "LENGTHTO(meas_rep)" |
| 205 | }; |
| 206 | |
| 207 | /* Section 5.14 */ |
| 208 | type record BSSLAP_IE_Cause { |
| 209 | BSSLAP_IEI iei, |
| 210 | BSSLAP_Cause cause |
| 211 | } with { variant "PRESENCE(iei = BSSLAP_IEI_CAUSE)" }; |
| 212 | type enumerated BSSLAP_Cause { |
| 213 | BSSLAP_CAUSE_CONGESTION ('00000000'B), |
| 214 | BSSLAP_CAUSE_CHAN_MODE_NOT_SUPP ('00000001'B), |
| 215 | BSSLAP_CAUSE_POS_PROC_NOT_SUPP ('00000010'B), |
| 216 | BSSLAP_CAUSE_OTHER_RADIO_EVT_FAIL ('00000011'B), |
| 217 | BSSLAP_CAUSE_INTRA_BSS_HO ('00000100'B), |
| 218 | BSSLAP_CAUSE_SUPERV_TIMER_EXPIRED ('00000101'B), |
| 219 | BSSLAP_CAUSE_INTER_BSS_HO ('00000110'B), |
| 220 | BSSLAP_CAUSE_LOSS_SIG_CONN_MS ('00000111'B), |
| 221 | BSSLAP_CAUSE_INCORR_SERV_CELL_ID ('00001000'B), |
| 222 | BSSLAP_CAUSE_BSSAP_LE_SEGMENT_ERR ('00001001'B), |
| 223 | BSSLAP_CAUSE_CONCUR_POS_PROC_NOT_EN ('00001010'B) |
| 224 | }; |
| 225 | |
| 226 | /* Section 5.15 */ |
| 227 | type record BSSLAP_IE_RrlpFlag { |
| 228 | BSSLAP_IEI iei, |
| 229 | BIT7 spare, |
| 230 | boolean not_a_pos_cmd |
| 231 | } with { variant "PRESENCE(iei = BSSLAP_IEI_RRLP_FLAG)" }; |
| 232 | |
| 233 | /* Section 5.16 */ |
| 234 | type record BSSLAP_IE_Rrlp { |
| 235 | BSSLAP_IEI iei, |
| 236 | uint16_t len, |
| 237 | octetstring rrlp_apdu |
| 238 | } with { |
| 239 | variant "PRESENCE(iei = BSSLAP_IEI_RRLP)" |
| 240 | variant (len) "LENGTHTO(rrlp_apdu)" |
| 241 | }; |
| 242 | |
| 243 | /* Section 5.17 */ |
| 244 | type record BSSLAP_IE_CellIdList { |
| 245 | BSSLAP_IEI iei, |
| 246 | uint8_t len, |
| 247 | BSSLAP_CellIdList cell_id_list |
| 248 | } with { |
| 249 | variant "PRESENCE(iei = BSSLAP_IEI_CELL_ID_LIST)" |
| 250 | variant (len) "LENGTHTO(cell_id_list)" |
| 251 | }; |
| 252 | type record of BSSLAP_CellIdListEnt BSSLAP_CellIdList; |
| 253 | type union BSSLAP_CellIdListEnt { |
| 254 | BIT4 spare, |
| 255 | BSSLAP_CellIdDiscr discr, |
| 256 | BSSLAP_CellIdListEntU u |
| 257 | }// with { |
| 258 | //}; |
| 259 | type enumerated BSSLAP_CellIdDiscr { |
| 260 | BSSLAP_CIDL_DISC_CGI ('0000'B), |
| 261 | BSSLAP_CIDL_DISC_LAC_CI ('0001'B), |
| 262 | BSSLAP_CIDL_DISC_3G_1 ('0010'B), |
| 263 | BSSLAP_CIDL_DISC_3G_2 ('0011'B) |
| 264 | } with { variant "FIELDLENGTH(4)" }; |
| 265 | type union BSSLAP_CellIdListEntU { |
| 266 | BSSLAP_CellIdListEntCGI cgi, |
| 267 | BSSLAP_CellIdListEntLACCI lac_ci, |
| 268 | BSSLAP_CellIdListEnt3G1 umts_cont1, |
| 269 | BSSLAP_CellIdListEnt3G2 umts_cont2 |
| 270 | }; |
| 271 | type record BSSLAP_CellIdListEntCGI { |
| 272 | HEX6n mcc_mnc, |
| 273 | uint16_t lac, |
| 274 | uint16_t ci |
| 275 | }; |
| 276 | type record BSSLAP_CellIdListEntLACCI { |
| 277 | uint16_t lac, |
| 278 | uint16_t ci |
| 279 | }; |
| 280 | type record BSSLAP_CellIdListEnt3G1 { |
| 281 | OCT9 cont |
| 282 | }; |
| 283 | type record BSSLAP_CellIdListEnt3G2 { |
| 284 | OCT6 cont |
| 285 | }; |
| 286 | |
| 287 | /* Section 5.18 */ |
| 288 | type record BSSLAP_IE_EnhMeasRep { |
| 289 | BSSLAP_IEI iei, |
| 290 | uint8_t len, |
| 291 | octetstring meas_rep |
| 292 | } with { |
| 293 | variant "PRESENCE(iei = BSSLAP_IEI_ENH_MEAS_REP)" |
| 294 | variant (len) "LENGTHTO(meas_rep)" |
| 295 | }; |
| 296 | |
| 297 | /* Section 5.19 */ |
| 298 | type record BSSLAP_IE_LAC { |
| 299 | BSSLAP_IEI iei, |
| 300 | uint16_t lac |
| 301 | } with { variant "PRESENCE(iei = BSSLAP_IEI_LAC)" }; |
| 302 | |
| 303 | /* Section 5.20 */ |
| 304 | type record BSSLAP_IE_FreqList { |
| 305 | BSSLAP_IEI iei, |
| 306 | uint8_t len, |
| 307 | octetstring freq_list |
| 308 | } with { |
| 309 | variant "PRESENCE(iei = BSSLAP_IEI_FREQ_LIST)" |
| 310 | variant (len) "LENGTHTO(freq_list)" |
| 311 | }; |
| 312 | |
| 313 | /* Section 5.21 */ |
| 314 | type record BSSLAP_IE_MsPower { |
| 315 | BSSLAP_IEI iei, |
| 316 | uint8_t ms_pwr |
| 317 | } with { variant "PRESENCE(iei = BSSLAP_IEI_MS_POWER)" }; |
| 318 | |
| 319 | /* Section 5.22 */ |
| 320 | type record BSSLAP_IE_DeltaTimer { |
| 321 | BSSLAP_IEI iei, |
| 322 | uint8_t timer_val |
| 323 | } with { variant "PRESENCE(iei = BSSLAP_IEI_MS_POWER)" }; |
| 324 | |
| 325 | /* Section 5.23 */ |
| 326 | type record BSSLAP_IE_ServingCellId { |
| 327 | BSSLAP_IEI iei, |
| 328 | uint8_t len, |
| 329 | octetstring val // FIXME: like TS 08.08 |
| 330 | } with { |
| 331 | variant "PRESENCE(iei = BSSLAP_IEI_SERVING_CELL_ID)" |
| 332 | variant (len) "LENGTHTO(val)" |
| 333 | }; |
| 334 | |
| 335 | /* Section 5.24 */ |
| 336 | type record BSSLAP_IE_EncryptionKey { |
| 337 | BSSLAP_IEI iei, |
| 338 | OCT8 kc |
| 339 | } with { variant "PRESENCE(iei = BSSLAP_IEI_ENCR_KEY)" }; |
| 340 | |
| 341 | /* Section 5.25 */ |
| 342 | type record BSSLAP_IE_CiphModeSet { |
| 343 | BSSLAP_IEI iei, |
| 344 | BIT1 spare, |
| 345 | BIT3 iei2, |
| 346 | BIT3 algo_id, |
| 347 | boolean sc |
| 348 | } with { variant "PRESENCE(iei = BSSLAP_IEI_CIPH_MODE_SET)" }; |
| 349 | |
| 350 | /* Section 5.26 */ |
| 351 | type record BSSLAP_IE_ChanMode { |
| 352 | BSSLAP_IEI iei, |
| 353 | OCT1 mode |
| 354 | } with { variant "PRESENCE(iei = BSSLAP_IEI_CHAN_MODE)" }; |
| 355 | |
| 356 | /* Section 5.27 */ |
| 357 | type record BSSLAP_IE_MultiRateConfig { |
| 358 | BSSLAP_IEI iei, |
| 359 | uint8_t len, |
| 360 | /* TODO: Unify with TS 48.018 */ |
| 361 | uint3_t mr_speech_ver, |
| 362 | boolean nscb, |
| 363 | boolean icmi, |
| 364 | BIT1 spare, |
| 365 | uint2_t start_mode, |
| 366 | octetstring parameters |
| 367 | } with { |
| 368 | variant "PRESENCE(iei = BSSLAP_IEI_MR_CONFIG)" |
| 369 | variant (len) "LENGTHTO(mr_speech_ver,nscb,icmi,spare,start_mode,parameters)" |
| 370 | }; |
| 371 | |
| 372 | /* Section 5.28 */ |
| 373 | type record BSSLAP_IE_PollingRep { |
| 374 | BSSLAP_IEI iei, |
| 375 | BIT2 spare, |
| 376 | uint6_t num_rep |
| 377 | } with { variant "PRESENCE(iei = BSSLAP_IEI_MR_CONFIG)" }; |
| 378 | |
| 379 | /* Section 5.29 */ |
| 380 | type record BSSLAP_IE_PacketChanDesc { |
| 381 | BSSLAP_IEI iei, |
| 382 | OCT4 chan_desc |
| 383 | } with { variant "PRESENCE(iei = BSSLAP_IEI_PACKET_CHAN_DESC)" }; |
| 384 | |
| 385 | /* Section 5.30 */ |
| 386 | type record BSSLAP_IE_TLLI { |
| 387 | BSSLAP_IEI iei, |
| 388 | OCT4 tlli |
| 389 | } with { variant "PRESENCE(iei = BSSLAP_IEI_TLLI)" }; |
| 390 | |
| 391 | /* Section 5.31 */ |
| 392 | type record BSSLAP_IE_TFI { |
| 393 | BSSLAP_IEI iei, |
| 394 | BIT3 spare, |
| 395 | uint5_t tfi |
| 396 | } with { variant "PRESENCE(iei = BSSLAP_IEI_TFI)" }; |
| 397 | |
| 398 | /* Section 5.32 */ |
| 399 | type record BSSLAP_IE_StartingTime { |
| 400 | BSSLAP_IEI iei, |
| 401 | uint5_t t1_p, |
| 402 | uint6_t t3, |
| 403 | uint6_t t2 |
| 404 | } with { variant "PRESENCE(iei = BSSLAP_IEI_TBF_START_TIME)" }; |
| 405 | |
| 406 | /* Section 5.33 */ |
| 407 | type record BSSLAP_IE_LongEncryptionKey { |
| 408 | BSSLAP_IEI iei, |
| 409 | OCT16 kc |
| 410 | } with { variant "PRESENCE(iei = BSSLAP_IEI_LONG_ENCR_KEY)" }; |
| 411 | |
| 412 | /* Section 5.34 */ |
| 413 | type record BSSLAP_IE_ConcurMethodF { |
| 414 | BSSLAP_IEI iei, |
| 415 | BSSLAP_ConcurMethodF flag |
| 416 | } with { variant "PRESENCE(iei = BSSLAP_IEI_CONCUR_POS_PROC_F)" }; |
| 417 | type enumerated BSSLAP_ConcurMethodF { |
| 418 | BSSLAP_SECOND_CONCUR_ALLOWED ('00000000'B), |
| 419 | BSSLAP_SECOND_CONCUR_DISALLOWED ('11111111'B) |
| 420 | } with { variant "FIELDLENGTH(8)" }; |
| 421 | |
| 422 | |
| 423 | |
| 424 | external function enc_BSSLAP_PDU(in BSSLAP_PDU msg) return octetstring |
| 425 | with { extension "prototype(convert) encode(RAW)" }; |
| 426 | external function dec_BSSLAP_PDU(in octetstring stream) return BSSLAP_PDU |
| 427 | with { extension "prototype(convert) decode(RAW)" }; |
| 428 | |
| 429 | template (value) BSSLAP_PDU ts_BSSLAP_TA_Req := { |
| 430 | ta_req := { |
| 431 | msg_type := BSSLAP_MSGT_TA_REQUEST |
| 432 | } |
| 433 | } |
| 434 | template (present) BSSLAP_PDU tr_BSSLAP_TA_Req := { |
| 435 | ta_req := { |
| 436 | msg_type := BSSLAP_MSGT_TA_REQUEST |
| 437 | } |
| 438 | } |
| 439 | |
| 440 | template (value) BSSLAP_PDU |
| 441 | ts_BSSLAP_TA_Resp(uint16_t cell_id, uint8_t ta) := { |
| 442 | ta_resp := { |
| 443 | msg_type := BSSLAP_MSGT_TA_RESPONSE, |
| 444 | serving_cell_id := ts_BSSLAP_IE_CellId(cell_id), |
| 445 | timing_advance := ts_BSSLAP_IE_TA(ta), |
| 446 | meas_rep := omit, |
| 447 | enh_meas_rep := omit, |
| 448 | meas_cell_id_list := omit, |
| 449 | concur_meth_flag := omit |
| 450 | } |
| 451 | } |
| 452 | template (present) BSSLAP_PDU |
| 453 | tr_BSSLAP_TA_Resp(template (present) uint16_t cell_id, template (present) uint8_t ta) := { |
| 454 | ta_resp := { |
| 455 | msg_type := BSSLAP_MSGT_TA_RESPONSE, |
| 456 | serving_cell_id := tr_BSSLAP_IE_CellId(cell_id), |
| 457 | timing_advance := tr_BSSLAP_IE_TA(ta), |
| 458 | meas_rep := *, |
| 459 | enh_meas_rep := *, |
| 460 | meas_cell_id_list := *, |
| 461 | concur_meth_flag := * |
| 462 | } |
| 463 | } |
| 464 | |
| 465 | template (value) BSSLAP_PDU |
| 466 | ts_BSSLAP_Reject(BSSLAP_Cause cause) := { |
| 467 | reject := { |
| 468 | msg_type := BSSLAP_MSGT_REJECT, |
| 469 | cause := ts_BSSLAP_IE_Cause(cause) |
| 470 | } |
| 471 | } |
| 472 | template (present) BSSLAP_PDU |
| 473 | tr_BSSLAP_Reject(template (present) BSSLAP_Cause cause) := { |
| 474 | reject := { |
| 475 | msg_type := BSSLAP_MSGT_REJECT, |
| 476 | cause := tr_BSSLAP_IE_Cause(cause) |
| 477 | } |
| 478 | } |
| 479 | |
| 480 | |
| 481 | template (value) BSSLAP_PDU |
| 482 | ts_BSSLAP_Abort(BSSLAP_Cause cause) := { |
| 483 | abort := { |
| 484 | msg_type := BSSLAP_MSGT_ABORT, |
| 485 | cause := ts_BSSLAP_IE_Cause(cause) |
| 486 | } |
| 487 | } |
| 488 | template (present) BSSLAP_PDU |
| 489 | tr_BSSLAP_Abort(template (present) BSSLAP_Cause cause) := { |
| 490 | abort := { |
| 491 | msg_type := BSSLAP_MSGT_ABORT, |
| 492 | cause := tr_BSSLAP_IE_Cause(cause) |
| 493 | } |
| 494 | } |
| 495 | |
Neels Hofmeyr | 0d77465 | 2020-10-01 06:37:19 +0200 | [diff] [blame] | 496 | template (value) BSSLAP_PDU ts_BSSLAP_TA_Layer3(uint8_t ta) := { |
| 497 | ta_layer3 := { |
| 498 | msg_type := BSSLAP_MSGT_TA_LAYER3, |
| 499 | timing_advance := ts_BSSLAP_IE_TA(ta), |
| 500 | meas_rep := omit, |
| 501 | enh_meas_rep := omit, |
| 502 | meas_cell_id_list := omit |
| 503 | } |
| 504 | } |
Harald Welte | f7c2b20 | 2020-03-29 17:34:11 +0200 | [diff] [blame] | 505 | |
Neels Hofmeyr | 0d77465 | 2020-10-01 06:37:19 +0200 | [diff] [blame] | 506 | template (present) BSSLAP_PDU tr_BSSLAP_TA_Layer3(template BSSLAP_IE_TimingAdvance timing_advance := *) := { |
| 507 | ta_layer3 := { |
| 508 | msg_type := BSSLAP_MSGT_TA_LAYER3, |
| 509 | timing_advance := timing_advance, |
| 510 | meas_rep := *, |
| 511 | enh_meas_rep := *, |
| 512 | meas_cell_id_list := * |
| 513 | } |
| 514 | } |
| 515 | |
| 516 | template (value) BSSLAP_IE_ChanDesc ts_BSSLAP_IE_ChanDesc := { |
| 517 | iei := BSSLAP_IEI_CHAN_DESC, |
| 518 | chan_desc := '112233'O /* FIXME */ |
| 519 | } |
| 520 | |
| 521 | template (value) BSSLAP_PDU |
| 522 | ts_BSSLAP_Reset(uint16_t cell_id, |
| 523 | uint8_t ta, |
| 524 | BSSLAP_IE_ChanDesc chan_desc, |
| 525 | BSSLAP_Cause cause) := { |
| 526 | reset := { |
| 527 | msg_type := BSSLAP_MSGT_RESET, |
| 528 | cell_id := ts_BSSLAP_IE_CellId(cell_id), |
| 529 | timing_advance := ts_BSSLAP_IE_TA(ta), |
| 530 | chan_desc := chan_desc, |
| 531 | cause := tr_BSSLAP_IE_Cause(cause), |
| 532 | meas_rep := omit, |
| 533 | enh_meas_rep := omit, |
| 534 | meas_cell_id_list := omit, |
| 535 | lac := omit, |
| 536 | freq_list := omit, |
| 537 | chan_mode := omit, |
| 538 | mr_config := omit, |
| 539 | pkt_chan_desc := omit, |
| 540 | tlli := omit, |
| 541 | tfi := omit, |
| 542 | tbf_start_time := omit, |
| 543 | encr_key := omit, |
| 544 | ciph_mode_set := omit, |
| 545 | long_encr_key := omit |
| 546 | } |
| 547 | } |
| 548 | |
| 549 | template (present) BSSLAP_PDU |
| 550 | tr_BSSLAP_Reset(template (present) BSSLAP_Cause cause) := { |
| 551 | reset := { |
| 552 | msg_type := BSSLAP_MSGT_RESET, |
| 553 | cell_id := ?, |
| 554 | timing_advance := ?, |
| 555 | chan_desc := ?, |
| 556 | cause := tr_BSSLAP_IE_Cause(cause), |
| 557 | meas_rep := *, |
| 558 | enh_meas_rep := *, |
| 559 | meas_cell_id_list := *, |
| 560 | lac := *, |
| 561 | freq_list := *, |
| 562 | chan_mode := *, |
| 563 | mr_config := *, |
| 564 | pkt_chan_desc := *, |
| 565 | tlli := *, |
| 566 | tfi := *, |
| 567 | tbf_start_time := *, |
| 568 | encr_key := *, |
| 569 | ciph_mode_set := *, |
| 570 | long_encr_key := * |
| 571 | } |
| 572 | } |
Harald Welte | f7c2b20 | 2020-03-29 17:34:11 +0200 | [diff] [blame] | 573 | |
| 574 | template (value) BSSLAP_IE_TimingAdvance ts_BSSLAP_IE_TA(uint8_t ta) := { |
| 575 | iei := BSSLAP_IEI_TA, |
| 576 | ta := ta |
| 577 | } |
| 578 | template (present) BSSLAP_IE_TimingAdvance tr_BSSLAP_IE_TA(template (present) uint8_t ta) := { |
| 579 | iei := BSSLAP_IEI_TA, |
| 580 | ta := ta |
| 581 | } |
| 582 | |
| 583 | template (value) BSSLAP_IE_CellId ts_BSSLAP_IE_CellId(uint16_t cell_id) := { |
| 584 | iei := BSSLAP_IEI_CELL_ID, |
| 585 | cell_id := cell_id |
| 586 | } |
| 587 | template (present) BSSLAP_IE_CellId tr_BSSLAP_IE_CellId(template (present) uint16_t cell_id) := { |
| 588 | iei := BSSLAP_IEI_CELL_ID, |
| 589 | cell_id := cell_id |
| 590 | } |
| 591 | |
| 592 | template (value) BSSLAP_IE_Cause ts_BSSLAP_IE_Cause(BSSLAP_Cause cause) := { |
| 593 | iei := BSSLAP_IEI_CAUSE, |
| 594 | cause := cause |
| 595 | } |
| 596 | template (present) BSSLAP_IE_Cause tr_BSSLAP_IE_Cause(template (present) BSSLAP_Cause cause) := { |
| 597 | iei := BSSLAP_IEI_CAUSE, |
| 598 | cause := cause |
| 599 | } |
| 600 | |
| 601 | |
| 602 | |
| 603 | |
| 604 | |
| 605 | |
| 606 | } with { encode "RAW" }; |