lists.osmocom.org
Sign In Sign Up
Manage this list Sign In Sign Up

Keyboard Shortcuts

Thread View

  • j: Next unread message
  • k: Previous unread message
  • j a: Jump to all threads
  • j l: Jump to MailingList overview

gerrit-log

Thread Start a new thread
Download
Threads by month
  • ----- 2026 -----
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2025 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2024 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2023 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2022 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
gerrit-log@lists.osmocom.org

March 2023

  • 1 participants
  • 3642 discussions
[L] Change in osmo-ttcn3-hacks[master]: library: L1CTL: rework GPRS related message definitions
by fixeria 21 Mar '23

21 Mar '23
fixeria has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/31974 ) Change subject: library: L1CTL: rework GPRS related message definitions ...................................................................... library: L1CTL: rework GPRS related message definitions The old GPRS related messages are no longer valid. Use the new message definitions supported by both trxcon and virtphy since recently. Comment out lines referencing the old definitions in LAPDm_RAW_PT.ttcn. This module contains an implementation of the RLC/MAC abstraction layer, which is currently not used anywhere. Change-Id: Ib8f4459480bbe12584a6fa71882f745f03c5055d Related: osmocom-bb.git I9567d64f9d00262e36147e8d7e541e5e246bda5f Related: OS#5500 --- M bts/BTS_Tests.ttcn M library/L1CTL_PortType.ttcn M library/L1CTL_Types.ttcn M library/LAPDm_RAW_PT.ttcn 4 files changed, 272 insertions(+), 250 deletions(-) Approvals: Jenkins Builder: Verified pespin: Looks good to me, but someone else must approve laforge: Looks good to me, approved diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn index e08f243..d901664 100644 --- a/bts/BTS_Tests.ttcn +++ b/bts/BTS_Tests.ttcn @@ -5303,6 +5303,14 @@ * PCU Socket related tests ***********************************************************************/ +/* Tune the L1 to PDCH on the given timeslot number */ +private function f_TC_pcu_l1ctl_est_pdch(uint3_t tn) runs on test_CT { + var ConnHdlrPars pars := valueof(t_Pars(ts_RslChanNr_PDCH(tn), ts_RSL_ChanMode_SIGN)); + if (mp_freq_hop_enabled and mp_transceiver_num > 1) + { f_resolve_fh_params(pars.fhp, tn); } + f_l1ctl_est_dchan(L1CTL, pars); +} + /* Verify no RTS before ACT_REQ; verify RTS after ACT_REQ */ friend function f_TC_pcu_act_req(uint8_t bts_nr, uint8_t trx_nr, uint8_t ts_nr, boolean exp_success) runs on test_CT { @@ -5499,60 +5507,53 @@ /* Send DATA.req on invalid BTS */ testcase TC_pcu_data_req_wrong_bts() runs on test_CT { - var TfiUsfArr tua := f_TfiUsfArrInit(); var octetstring data := '0000'O & f_rnd_octstring(21); f_virtphy_common(); f_TC_pcu_act_req(0, 0, 7, true); - f_TfiUsfArrSet(tua, 7, 0); - f_L1CTL_TBF_CFG(L1CTL, false, tua); - f_sleep(1.0); + f_TC_pcu_l1ctl_est_pdch(7); + L1CTL.send(ts_L1CTL_GPRS_DL_TBF_CFG_REQ(0, '00000001'B)); f_pcu_to_l1(23, 0, 7, PCU_IF_SAPI_PDTCH, data, false, false); } /* Send DATA.req on invalid TRX */ testcase TC_pcu_data_req_wrong_trx() runs on test_CT { - var TfiUsfArr tua := f_TfiUsfArrInit(); var octetstring data := '0000'O & f_rnd_octstring(21); f_virtphy_common(); f_TC_pcu_act_req(0, 0, 7, true); - f_TfiUsfArrSet(tua, 7, 0); - f_L1CTL_TBF_CFG(L1CTL, false, tua); - f_sleep(1.0); + f_TC_pcu_l1ctl_est_pdch(7); + L1CTL.send(ts_L1CTL_GPRS_DL_TBF_CFG_REQ(0, '00000001'B)); f_pcu_to_l1(0, 100, 7, PCU_IF_SAPI_PDTCH, data, false, false); } /* Send DATA.req on invalid timeslot */ testcase TC_pcu_data_req_wrong_ts() runs on test_CT { - var TfiUsfArr tua := f_TfiUsfArrInit(); var octetstring data := '0000'O & f_rnd_octstring(21); f_virtphy_common(); f_TC_pcu_act_req(0, 0, 7, true); - f_TfiUsfArrSet(tua, 7, 0); - f_L1CTL_TBF_CFG(L1CTL, false, tua); - f_sleep(1.0); + f_TC_pcu_l1ctl_est_pdch(7); + L1CTL.send(ts_L1CTL_GPRS_DL_TBF_CFG_REQ(0, '00000001'B)); f_pcu_to_l1(0, 0, 70, PCU_IF_SAPI_PDTCH, data, false, false); } /* Send DATA.req on timeslot that hasn't been activated */ testcase TC_pcu_data_req_ts_inactive() runs on test_CT { - var TfiUsfArr tua := f_TfiUsfArrInit(); var octetstring data := '0000'O & f_rnd_octstring(21); f_virtphy_common(); - f_TfiUsfArrSet(tua, 7, 0); - f_L1CTL_TBF_CFG(L1CTL, false, tua); - f_sleep(1.0); + /* intentionally not calling f_TC_pcu_act_req() */ + f_TC_pcu_l1ctl_est_pdch(7); + L1CTL.send(ts_L1CTL_GPRS_DL_TBF_CFG_REQ(0, '00000001'B)); f_pcu_to_l1(0, 0, 7, PCU_IF_SAPI_PDTCH, data, false, false); } @@ -5572,11 +5573,11 @@ T.start; alt { - [expect_data] L1CTL.receive(tr_L1CTL_DATA_IND(t_RslChanNr_PDCH(ts_nr), ?, data)) { - /* FIXME: why is fn of DATA_IND different to fn of RTS / DATA_REQ above? */ + [expect_data] L1CTL.receive(tr_L1CTL_GPRS_DL_BLOCK_IND(tn := ts_nr, data := data)) { + /* FIXME: why is fn of DL BLOCK.ind different to fn of RTS / DATA_REQ above? */ setverdict(pass); } - [not expect_data] L1CTL.receive(tr_L1CTL_DATA_IND(t_RslChanNr_PDCH(ts_nr), ?, data)) -> value rx_dl { + [not expect_data] L1CTL.receive(tr_L1CTL_GPRS_DL_BLOCK_IND(tn := ts_nr, data := data)) -> value rx_dl { setverdict(fail, "Received unexpected ", rx_dl); } [] L1CTL.receive { @@ -5608,31 +5609,26 @@ } testcase TC_pcu_data_req_pdtch() runs on test_CT { - var TfiUsfArr tua := f_TfiUsfArrInit(); var octetstring data := '0000'O & f_rnd_octstring(21); f_virtphy_common(); f_TC_pcu_act_req(0, 0, 7, true); - f_TfiUsfArrSet(tua, 7, 0); - f_L1CTL_TBF_CFG(L1CTL, false, tua); - f_sleep(1.0); + f_TC_pcu_l1ctl_est_pdch(7); + L1CTL.send(ts_L1CTL_GPRS_DL_TBF_CFG_REQ(0, '00000001'B)); f_pcu_to_l1(0, 0, 7, PCU_IF_SAPI_PDTCH, data); //c_PCU_DATA); } -/* FIXME: PTTCH has nothing to do with TBFs */ testcase TC_pcu_data_req_ptcch() runs on test_CT { - var TfiUsfArr tua := f_TfiUsfArrInit(); var octetstring data := '0000'O & f_rnd_octstring(21); f_virtphy_common(); f_TC_pcu_act_req(0, 0, 7, true); - f_TfiUsfArrSet(tua, 7, 0); - f_L1CTL_TBF_CFG(L1CTL, false, tua); - f_sleep(1.0); + f_TC_pcu_l1ctl_est_pdch(7); + L1CTL.send(ts_L1CTL_GPRS_DL_TBF_CFG_REQ(0, '00000001'B)); f_pcu_to_l1(0, 0, 7, PCU_IF_SAPI_PTCCH, data); } @@ -5679,11 +5675,9 @@ /* Activate PDCH channel on TS7 */ f_TC_pcu_act_req(0, 0, 7, true); - /* Tune trxcon to that PDCH channel */ - var ConnHdlrPars pars := valueof(t_Pars(ts_RslChanNr_PDCH(7), ts_RSL_ChanMode_SIGN)); - if (mp_freq_hop_enabled and mp_transceiver_num > 1) - { f_resolve_fh_params(pars.fhp, pars.chan_nr.tn); } - f_l1ctl_est_dchan(L1CTL, pars); + /* Tune the L1 to that PDCH channel */ + f_TC_pcu_l1ctl_est_pdch(7); + L1CTL.send(ts_L1CTL_GPRS_DL_TBF_CFG_REQ(0, '00000001'B)); /* Verify PTCCH/U: send several access bursts, make sure they're received */ for (var integer i := 0; i < 16; i := i + 1) { @@ -5702,25 +5696,13 @@ * let's give it more time in case if we miss the beginning. */ T.start(2.0 * 2.0 * 52.0 * 4.615 / 1000.0); alt { - /* PDCH is considered as traffic in trxcon => expect TRAFFIC.ind */ - [] L1CTL.receive(tr_L1CTL_TRAFFIC_IND(chan_nr := t_RslChanNr_PDCH(7), - link_id := tr_RslLinkID_OSMO_PTCCH(?), - frame := data)) -> value dl { - log("Rx PTCCH/D data (traffic) block on L1CTL: ", dl); - setverdict(pass); - T.stop; - } - /* Other PHYs (e.g. virt_phy) may consider PDCH as data => expect DATA.ind */ - [] L1CTL.receive(tr_L1CTL_DATA_IND(chan_nr := t_RslChanNr_PDCH(7), - link_id := tr_RslLinkID_OSMO_PTCCH(?), - l2_data := data)) -> value dl { - log("Rx PTCCH/D data block on L1CTL: ", dl); + [] L1CTL.receive(tr_L1CTL_GPRS_DL_BLOCK_IND(fn := ?, tn := 7, data := data)) { setverdict(pass); T.stop; } [] L1CTL.receive { repeat; } [] T.timeout { - setverdict(fail, "Timeout waiting for DATA.ind on L1CTL"); + setverdict(fail, "Timeout waiting DL BLOCK.ind with PTCCH/D"); } } } @@ -5895,9 +5877,9 @@ /* PCUIF_DATA.ind is encapsulated into a supplementary record */ sdt := t_SD_PCUIF_MSGT(g_pcu_conn_id, PCU_IF_MSG_DATA_IND); - /* Send a random PDTCH frame over Um */ - L1CTL.send(ts_L1CTL_TRAFFIC_REQ(ts_RslChanNr_PDCH(7), ts_RslLinkID_DCCH(0), - '0000'O & f_rnd_octstring(21))); + /* Send a random PDTCH frame over Um + * FIXME: we need to wait for a DL block and user Fn from there. */ + L1CTL.send(ts_L1CTL_GPRS_UL_BLOCK_REQ(0, 7, '0000'O & f_rnd_octstring(21))); T.start; alt { @@ -5944,10 +5926,8 @@ f_TC_pcu_act_req(0, 0, 7, true); /* Tune trxcon to that PDCH channel on TS7 */ - var ConnHdlrPars pars := valueof(t_Pars(ts_RslChanNr_PDCH(7), ts_RSL_ChanMode_SIGN)); - if (mp_freq_hop_enabled and mp_transceiver_num > 1) - { f_resolve_fh_params(pars.fhp, pars.chan_nr.tn); } - f_l1ctl_est_dchan(L1CTL, pars); + f_TC_pcu_l1ctl_est_pdch(7); + L1CTL.send(ts_L1CTL_GPRS_UL_TBF_CFG_REQ(0, '00000001'B)); /* C/I in centiBels, test range: -256 .. +1280, step 128 */ for (var int16_t i := -256; i <= 1280; i := i + 128) { diff --git a/library/L1CTL_PortType.ttcn b/library/L1CTL_PortType.ttcn index d84cee4..07c536c 100644 --- a/library/L1CTL_PortType.ttcn +++ b/library/L1CTL_PortType.ttcn @@ -229,21 +229,6 @@ 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(ts_L1CTL_TBF_CFG_REQ(is_uplink, tfi_usf)); - alt { - [] pt.receive(tr_L1CTL_TBF_CFG_CONF(is_uplink)) {} - [] pt.receive { repeat }; - [] T.timeout { - setverdict(fail, "Timeout waiting for L1CTL_TBF_CFG_CONF"); - mtc.stop; - }; - } - T.stop; - } - /* Send DM_EST_REQ from parameters derived from IMM ASS */ function f_L1CTL_DM_EST_REQ_IA(L1CTL_PT pt, ImmediateAssignment imm_ass, L1ctlMA ma := {}) { /* FIXME: handle Packet Channel Description */ diff --git a/library/L1CTL_Types.ttcn b/library/L1CTL_Types.ttcn index 9162eea..192091e 100644 --- a/library/L1CTL_Types.ttcn +++ b/library/L1CTL_Types.ttcn @@ -16,8 +16,6 @@ import from GSM_RR_Types all; import from Osmocom_Types all; - type uint32_t uint32_le with { variant "BYTEORDER(first)" }; - type enumerated L1ctlMsgType { L1CTL_NONE, L1CTL_FBSB_REQ, @@ -51,12 +49,11 @@ L1CTL_TRAFFIC_CONF, L1CTL_TRAFFIC_IND, L1CTL_BURST_IND, - L1CTL_TBF_CFG_REQ, - L1CTL_TBF_CFG_CONF, - L1CTL_DATA_TBF_REQ, - L1CTL_DATA_TBF_CONF, - L1CTL_EXT_RACH_REQ, - L1CTL_DATA_ABS_REQ /*!< FIXME: no such message in OsmocomBB */ + L1CTL_GPRS_UL_TBF_CFG_REQ, + L1CTL_GPRS_DL_TBF_CFG_REQ, + L1CTL_GPRS_UL_BLOCK_REQ, + L1CTL_GPRS_DL_BLOCK_IND, + L1CTL_EXT_RACH_REQ } with { variant "FIELDLENGTH(8)" }; type enumerated L1ctlCcchMode { @@ -72,22 +69,6 @@ NEIGH_MODE_SB } with { variant "FIELDLENGTH(8)" }; - type enumerated L1ctlGprsCs { - L1CTL_CS1 (1), - L1CTL_CS2, - L1CTL_CS3, - L1CTL_CS4, - L1CTL_MCS1, - L1CTL_MCS2, - L1CTL_MCS3, - L1CTL_MCS4, - L1CTL_MCS5, - L1CTL_MCS6, - L1CTL_MCS7, - L1CTL_MCS8, - L1CTL_MCS9 - } with { variant "FIELDLENGTH(8)" }; - type enumerated L1ctlResetType { L1CTL_RES_T_BOOT (0), L1CTL_RES_T_FULL, @@ -200,22 +181,6 @@ OCT2 padding } with { variant "" }; - type record L1ctlUlTbfInfo { - uint8_t tbf_nr, - L1ctlGprsCs cs, - OCT2 padding - } with { variant "" }; - - type record L1ctlUlAbsInfo { - uint8_t tbf_nr, - L1ctlGprsCs cs, - uint8_t ts_nr, - OCT1 padding, - uint32_le fn, - GsmBandArfcn arfcn, - OCT2 padding2 - } with { variant "" }; - type record L1ctlFbsbFlags { BIT5 padding, boolean sb, @@ -342,14 +307,47 @@ variant (data) "BYTEORDER(first)" } - type record length(8) of uint8_t TfiUsfArr; - type record L1ctlTbfCfgReq { - uint8_t tbf_nr, - boolean is_uplink, - OCT2 padding, - TfiUsfArr tfi_usf - } with { variant (is_uplink) "FIELDLENGTH(8)" }; + /* payload of L1CTL_GPRS_UL_TBF_CFG_REQ */ + type record L1ctlGprsUlTbfCfgReq { + uint8_t tbf_ref, + BIT8 slotmask, + OCT2 pad ('0000'O) + } with { variant (slotmask) "BITORDER(msb)" }; + + /* payload of L1CTL_GPRS_DL_TBF_CFG_REQ */ + type record L1ctlGprsDlTbfCfgReq { + uint8_t tbf_ref, + BIT8 slotmask, + uint8_t dl_tfi, + OCT1 pad ('00'O) + } with { variant (slotmask) "BITORDER(msb)" }; + + /* part of L1CTL_GPRS_{UL,DL}_BLOCK_{REQ,IND} */ + type record L1ctlGprsBlockHdr { + uint32_t fn, + uint8_t tn, + OCT3 pad ('000000'O) + } with { variant "" }; + + /* payload of L1CTL_GPRS_UL_BLOCK_REQ */ + type record L1ctlGprsUlBlockReq { + L1ctlGprsBlockHdr hdr, + octetstring data + } with { variant (data) "BYTEORDER(first)" }; + + /* payload of L1CTL_GPRS_DL_BLOCK_IND */ + type record L1ctlGprsDlBlockInd { + L1ctlGprsBlockHdr hdr, + record { + uint16_t ber10k, /* Bit Error Rate */ + int16_t ci_cb, /* C/I in centiBels */ + uint8_t rx_level /* RxLev 0..63 */ + } meas, + uint8_t usf, + octetstring data + } with { variant (data) "BYTEORDER(first)" }; + type union L1ctlMsgPayload { L1ctlFbsbReq fbsb_req, @@ -376,8 +374,10 @@ L1ctlTrafficReq traffic_req, L1ctlTrafficReq traffic_ind, /* TODO: L1CTL_BURST_IND */ - L1ctlTbfCfgReq tbf_cfg_req, - L1ctlTbfCfgReq tbf_cfg_conf, + L1ctlGprsUlTbfCfgReq ul_tbf_cfg_req, + L1ctlGprsDlTbfCfgReq dl_tbf_cfg_req, + L1ctlGprsUlBlockReq ul_block_req, + L1ctlGprsDlBlockInd dl_block_ind, L1ctlExtRachReq ext_rach_req, octetstring other } with { @@ -388,8 +388,6 @@ L1ctlHeader header, L1ctlUlInfo ul_info optional, L1ctlDlInfo dl_info optional, - L1ctlUlTbfInfo ul_info_tbf optional, - L1ctlUlAbsInfo ul_info_abs optional, L1ctlMsgPayload payload optional } with { variant (ul_info) "PRESENCE(header.msg_type = L1CTL_RACH_REQ, header.msg_type = L1CTL_EXT_RACH_REQ, @@ -406,8 +404,6 @@ header.msg_type = L1CTL_DATA_CONF, header.msg_type = L1CTL_TRAFFIC_IND, header.msg_type = L1CTL_TRAFFIC_CONF)" - variant (ul_info_tbf) "PRESENCE(header.msg_type = L1CTL_DATA_TBF_REQ)" - variant (ul_info_abs) "PRESENCE(header.msg_type = L1CTL_DATA_ABS_REQ)" variant (payload) "CROSSTAG(fbsb_req, header.msg_type = L1CTL_FBSB_REQ; fbsb_conf, header.msg_type = L1CTL_FBSB_CONF; data_ind, header.msg_type = L1CTL_DATA_IND; @@ -432,8 +428,10 @@ traffic_req, header.msg_type = L1CTL_TRAFFIC_REQ; traffic_ind, header.msg_type = L1CTL_TRAFFIC_IND; /* TODO: burst_ind, header.msg_type = L1CTL_BURST_IND */ - tbf_cfg_req, header.msg_type = L1CTL_TBF_CFG_REQ; - tbf_cfg_conf, header.msg_type = L1CTL_TBF_CFG_CONF; + ul_tbf_cfg_req, header.msg_type = L1CTL_GPRS_UL_TBF_CFG_REQ; + dl_tbf_cfg_req, header.msg_type = L1CTL_GPRS_DL_TBF_CFG_REQ; + ul_block_req, header.msg_type = L1CTL_GPRS_UL_BLOCK_REQ; + dl_block_ind, header.msg_type = L1CTL_GPRS_DL_BLOCK_IND; ext_rach_req, header.msg_type = L1CTL_EXT_RACH_REQ; other, OTHERWISE; )" }; @@ -455,15 +453,12 @@ - /* for generating RESET_REQ */ template (value) L1ctlMessage t_L1ctlResetReq(template (value) L1ctlResetType rst_type) := { header := ts_L1ctlHeader(L1CTL_RESET_REQ), ul_info := omit, dl_info := omit, - ul_info_tbf := omit, - ul_info_abs := omit, payload := { reset_req := { reset_type := rst_type, @@ -482,8 +477,6 @@ header := ts_L1ctlHeader(L1CTL_FBSB_REQ), ul_info := omit, dl_info := omit, - ul_info_tbf := omit, - ul_info_abs := omit, payload := { fbsb_req := { arfcn := arfcn, @@ -505,8 +498,6 @@ header := tr_L1ctlHeader(L1CTL_FBSB_CONF), ul_info := omit, dl_info := ?, - ul_info_tbf := omit, - ul_info_abs := omit, payload := { fbsb_conf := { initial_freq_err := ?, @@ -521,8 +512,6 @@ header := ts_L1ctlHeader(L1CTL_CCCH_MODE_REQ), ul_info := omit, dl_info := omit, - ul_info_tbf := omit, - ul_info_abs := omit, payload := { ccch_mode_req := { ccch_mode := ccch_mode, @@ -540,8 +529,6 @@ header := ts_L1ctlHeader(L1CTL_TCH_MODE_REQ), ul_info := omit, dl_info := omit, - ul_info_tbf := omit, - ul_info_abs := omit, payload := { tch_mode_req := { tch_mode := tch_mode, @@ -561,8 +548,6 @@ header := tr_L1ctlHeader(msg_type), ul_info := *, dl_info := *, - ul_info_tbf := *, - ul_info_abs := *, payload := * } @@ -581,8 +566,6 @@ padding := '0000'O }, dl_info := omit, - ul_info_tbf := omit, - ul_info_abs := omit, payload := { rach_req := { ra := ra, @@ -605,8 +588,6 @@ padding := '0000'O }, dl_info := omit, - ul_info_tbf := omit, - ul_info_abs := omit, payload := { ext_rach_req := { ra11 := ra11, @@ -627,8 +608,6 @@ padding := '0000'O }, dl_info := omit, - ul_info_tbf := omit, - ul_info_abs := omit, payload := { par_req := { ta := ta, @@ -649,8 +628,6 @@ padding := '0000'O }, dl_info := omit, - ul_info_tbf := omit, - ul_info_abs := omit, payload := { dm_est_req := { tsc := tsc, @@ -713,8 +690,6 @@ padding := '0000'O }, dl_info := omit, - ul_info_tbf := omit, - ul_info_abs := omit, payload := omit } @@ -729,8 +704,6 @@ padding := '0000'O }, dl_info := omit, - ul_info_tbf := omit, - ul_info_abs := omit, payload := { data_req := { l1header := omit, @@ -751,8 +724,6 @@ padding := '0000'O }, dl_info := omit, - ul_info_tbf := omit, - ul_info_abs := omit, payload := { data_req := { l1header := l1h, @@ -772,8 +743,6 @@ padding := '0000'O }, dl_info := omit, - ul_info_tbf := omit, - ul_info_abs := omit, payload := { traffic_req := { data := frame @@ -781,92 +750,11 @@ } }; - template (value) L1ctlMessage - ts_L1CTL_TBF_CFG_REQ(template (value) boolean is_uplink, - template (value) TfiUsfArr tfi_usf) := { - header := ts_L1ctlHeader(L1CTL_TBF_CFG_REQ), - ul_info := omit, - dl_info := omit, - ul_info_tbf := omit, - ul_info_abs := omit, - payload := { - tbf_cfg_req := { - tbf_nr := 0, - is_uplink := is_uplink, - padding := '0000'O, - tfi_usf := tfi_usf - } - } - }; - - template L1ctlMessage - tr_L1CTL_TBF_CFG_CONF(template (present) boolean is_uplink) := { - header := tr_L1ctlHeader(L1CTL_TBF_CFG_CONF), - ul_info := omit, - dl_info := omit, - ul_info_tbf := omit, - ul_info_abs := omit, - payload := { - tbf_cfg_conf := { - tbf_nr := 0, - is_uplink := is_uplink, - padding := ?, - tfi_usf := ? - } - } - }; - - template (value) L1ctlMessage - ts_L1CTL_DATA_TBF_REQ(octetstring l2_data, - template (value) L1ctlGprsCs cs := L1CTL_CS1, - template (value) uint8_t tbf_nr := 0) := { - header := ts_L1ctlHeader(L1CTL_DATA_TBF_REQ), - ul_info := omit, - dl_info := omit, - ul_info_tbf := { - tbf_nr := tbf_nr, - cs := cs, - padding := '0000'O - }, - ul_info_abs := omit, - payload := { - other := l2_data - } - } - - template (value) L1ctlMessage - ts_L1CTL_DATA_ABS_REQ(octetstring l2_data, - template (value) GsmBandArfcn arfcn, - template (value) uint8_t ts, - template (value) GsmFrameNumber fn, - template (value) L1ctlGprsCs cs := L1CTL_CS1, - template (value) uint8_t tbf_nr := 0) := { - header := ts_L1ctlHeader(L1CTL_DATA_ABS_REQ), - ul_info := omit, - dl_info := omit, - ul_info_tbf := omit, - ul_info_abs := { - tbf_nr := tbf_nr, - cs := cs, - ts_nr := ts, - padding := '00'O, - fn := fn, - arfcn := arfcn, - padding2 := '0000'O - }, - payload := { - other := l2_data - } - } - - /* for matching against incoming RACH_CONF */ template L1ctlMessage tr_L1CTL_RACH_CONF := { header := tr_L1ctlHeader(L1CTL_RACH_CONF), ul_info := omit, dl_info := ?, - ul_info_tbf := omit, - ul_info_abs := omit, payload := * }; @@ -892,8 +780,6 @@ num_biterr := num_biterr, fire_crc := fire_crc }, - ul_info_tbf := omit, - ul_info_abs := omit, payload := { data_ind := { payload := l2_data @@ -918,8 +804,6 @@ num_biterr := num_biterr, fire_crc := fire_crc }, - ul_info_tbf := omit, - ul_info_abs := omit, payload := { data_ind := { payload := l2_data @@ -946,8 +830,6 @@ num_biterr := num_biterr, fire_crc := fire_crc }, - ul_info_tbf := omit, - ul_info_abs := omit, payload := { traffic_ind := { data := frame @@ -966,8 +848,6 @@ padding := '0000'O }, dl_info := omit, - ul_info_tbf := omit, - ul_info_abs := omit, payload := { crypto_req := { algo := algo, @@ -977,6 +857,163 @@ } }; + + template (value) L1ctlMessage + ts_L1CTL_GPRS_UL_TBF_CFG_REQ(template (value) uint8_t tbf_ref, + template (value) BIT8 slotmask := '00000000'B) := { + header := ts_L1ctlHeader(L1CTL_GPRS_UL_TBF_CFG_REQ), + ul_info := omit, + dl_info := omit, + payload := { + ul_tbf_cfg_req := { + tbf_ref := tbf_ref, + slotmask := slotmask, + pad := '0000'O + } + } + }; + template L1ctlMessage + tr_L1CTL_GPRS_UL_TBF_CFG_REQ(template (present) uint8_t tbf_ref := ?, + template (present) BIT8 slotmask := ?) := { + header := tr_L1ctlHeader(L1CTL_GPRS_UL_TBF_CFG_REQ), + ul_info := omit, + dl_info := omit, + payload := { + ul_tbf_cfg_req := { + tbf_ref := tbf_ref, + slotmask := slotmask, + pad := ? + } + } + }; + + template (value) L1ctlMessage + ts_L1CTL_GPRS_DL_TBF_CFG_REQ(template (value) uint8_t tbf_ref, + template (value) BIT8 slotmask := '00000000'B, + template (value) uint5_t dl_tfi := 0) := { + header := ts_L1ctlHeader(L1CTL_GPRS_DL_TBF_CFG_REQ), + ul_info := omit, + dl_info := omit, + payload := { + dl_tbf_cfg_req := { + tbf_ref := tbf_ref, + slotmask := slotmask, + dl_tfi := dl_tfi, + pad := '00'O + } + } + }; + template L1ctlMessage + tr_L1CTL_GPRS_DL_TBF_CFG_REQ(template (present) uint8_t tbf_ref := ?, + template (present) BIT8 slotmask := ?, + template (present) uint5_t dl_tfi := ?) := { + header := tr_L1ctlHeader(L1CTL_GPRS_DL_TBF_CFG_REQ), + ul_info := omit, + dl_info := omit, + payload := { + dl_tbf_cfg_req := { + tbf_ref := tbf_ref, + slotmask := slotmask, + dl_tfi := dl_tfi, + pad := ? + } + } + }; + + template (value) L1ctlMessage + ts_L1CTL_GPRS_UL_BLOCK_REQ(template (value) GsmFrameNumber fn, + template (value) uint3_t tn, + template (value) octetstring data) := { + header := ts_L1ctlHeader(L1CTL_GPRS_UL_BLOCK_REQ), + ul_info := omit, + dl_info := omit, + payload := { + ul_block_req := { + hdr := { + fn := fn, + tn := tn, + pad := '000000'O + }, + data := data + } + } + }; + template L1ctlMessage + tr_L1CTL_GPRS_UL_BLOCK_REQ(template (present) GsmFrameNumber fn := ?, + template (present) uint3_t tn := ?, + template (present) octetstring data := ?) := { + header := tr_L1ctlHeader(L1CTL_GPRS_UL_BLOCK_REQ), + ul_info := omit, + dl_info := omit, + payload := { + ul_block_req := { + hdr := { + fn := fn, + tn := tn, + pad := ? + }, + data := data + } + } + }; + + template (value) L1ctlMessage + ts_L1CTL_GPRS_DL_BLOCK_IND(template (value) GsmFrameNumber fn, + template (value) uint3_t tn, + template (value) uint3_t usf, + template (value) octetstring data, + template (value) uint16_t ber10k := 0, + template (value) int16_t ci_cb := 180 /* 18 dB */, + template (value) GsmRxLev rx_level := 63) := { + header := ts_L1ctlHeader(L1CTL_GPRS_DL_BLOCK_IND), + ul_info := omit, + dl_info := omit, + payload := { + dl_block_ind := { + hdr := { + fn := fn, + tn := tn, + pad := '000000'O + }, + meas := { + ber10k := ber10k, + ci_cb := ci_cb, + rx_level := rx_level + }, + usf := usf, + data := data + } + } + }; + template L1ctlMessage + tr_L1CTL_GPRS_DL_BLOCK_IND(template (present) GsmFrameNumber fn := ?, + template (present) uint3_t tn := ?, + template (present) uint3_t usf := ?, + template (present) octetstring data := ?, + template (present) uint16_t ber10k := ?, + template (present) int16_t ci_cb := ?, + template (present) GsmRxLev rx_level := ?) := { + header := tr_L1ctlHeader(L1CTL_GPRS_DL_BLOCK_IND), + ul_info := omit, + dl_info := omit, + payload := { + dl_block_ind := { + hdr := { + fn := fn, + tn := tn, + pad := ? + }, + meas := { + ber10k := ber10k, + ci_cb := ci_cb, + rx_level := rx_level + }, + usf := usf, + data := data + } + } + }; + const octetstring c_DummyUI := '0303012B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B'O; /* We use "BYTEORDER(last)" so we get little-endian integers. Unfortuantely, this also diff --git a/library/LAPDm_RAW_PT.ttcn b/library/LAPDm_RAW_PT.ttcn index 643b7e5..f7c18b5 100644 --- a/library/LAPDm_RAW_PT.ttcn +++ b/library/LAPDm_RAW_PT.ttcn @@ -21,6 +21,8 @@ import from LAPDm_Types all; import from RLCMAC_Types all; + type record length(8) of uint8_t TfiUsfArr; + /* request to tune to a given ARFCN and start BCCH decoding */ type record BCCH_tune_req { GsmBandArfcn arfcn, @@ -322,7 +324,7 @@ /* Important: ARFCN, TN, TSC, USF, USF_GRANULARITY, CH_CODING_CMD */ f_TfiUsfArrSet(tua, imm_ass.pkt_chan_desc.tn, pkt_ul_ass.dynamic.usf); - f_L1CTL_TBF_CFG(L1CTL, true, tua); + // FIXME: f_L1CTL_TBF_CFG(L1CTL, true, tua); return true; /* FIXME: Single Block Allocation */ } else if (match(pkt_ul_ass, tr_PacketUlSglAssign)) { @@ -337,8 +339,8 @@ private function f_release_tbf() runs on lapdm_CT { var TfiUsfArr tua := f_TfiUsfArrInit(); /* send "all timeslots unused" for both UL and DL */ - f_L1CTL_TBF_CFG(L1CTL, true, tua); - f_L1CTL_TBF_CFG(L1CTL, false, tua); + // FIXME: f_L1CTL_TBF_CFG(L1CTL, true, tua); + // FIXME: f_L1CTL_TBF_CFG(L1CTL, false, tua); /* L1 will then fall back to BCCH/CCCH */ set_ph_state(PH_STATE_BCH); } @@ -374,7 +376,7 @@ mtc.stop; } g_tbf_dl[tbf_nr] := tbf_dl_req.pars; - f_L1CTL_TBF_CFG(L1CTL, false, tbf_dl_req.pars.tfi); + // FIXME: f_L1CTL_TBF_CFG(L1CTL, false, tbf_dl_req.pars.tfi); set_ph_state(PH_STATE_TBF); log("Established DL TBF ", tbf_nr, ": ", tbf_dl_req.pars); } @@ -537,12 +539,12 @@ var octetstring buf; if (ischosen(rpdr.dyn)) { buf := enc_RlcmacUlBlock(rpdr.dyn.block); - L1CTL.send(ts_L1CTL_DATA_TBF_REQ(buf, L1CTL_CS1, rpdr.dyn.tbf_id)); + // FIXME: L1CTL.send(ts_L1CTL_DATA_TBF_REQ(buf, L1CTL_CS1, rpdr.dyn.tbf_id)); } else { buf := enc_RlcmacUlBlock(rpdr.abs.block); - L1CTL.send(ts_L1CTL_DATA_ABS_REQ(buf, rpdr.abs.arfcn, - rpdr.abs.ts_nr, rpdr.abs.fn, - L1CTL_CS1, rpdr.abs.tbf_id)); + // FIXME: L1CTL.send(ts_L1CTL_DATA_ABS_REQ(buf, rpdr.abs.arfcn, + // rpdr.abs.ts_nr, rpdr.abs.fn, + // L1CTL_CS1, rpdr.abs.tbf_id)); } } -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/31974 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: Ib8f4459480bbe12584a6fa71882f745f03c5055d Gerrit-Change-Number: 31974 Gerrit-PatchSet: 1 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: merged
1 0
0 0
[L] Change in osmo-ttcn3-hacks[master]: library: L1CTL: merge L1ctl{Ul,Dl}Message into L1ctlMessage
by fixeria 21 Mar '23

21 Mar '23
fixeria has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/31973 ) Change subject: library: L1CTL: merge L1ctl{Ul,Dl}Message into L1ctlMessage ...................................................................... library: L1CTL: merge L1ctl{Ul,Dl}Message into L1ctlMessage Currently we have two variants of the L1CTL PDU: * L1ctlUlMessage: L23 -> L1 requests (*_REQ), * L1ctlDlMessage: L1 -> L23 responses (*_IND, *_CONF). The L1CTL_PT port is defined in a way that one can: * Tx L1ctl{Ul,Dl}Message PDUs, * Rx L1ctlDlMessage PDUs. This means that the testsuite can act as the L23 talking to the L1 (e.g. trxcon or virtphy), but not vice-versa. Adding an additional Rx `UD_send_data -> L1ctlUlMessage` mapping is not an option, because such a mapping would be ambiguous and would cause errors. By merging the two L1CTL PDU variants into the one, we can achieve the testsuite acting as the L1. This will be useful for testing the L23 applications in osmocom-bb.git, like the modem app. Take a chance to reorder fields to match the order in L1ctlMsgType. Change-Id: I1313068c5f02b65d3dbb05a1341a9d7286225f0c Related: OS#5500 --- M bts/BTS_Tests.ttcn M bts/BTS_Tests_SMSCB.ttcn M library/L1CTL_PortType.ttcn M library/L1CTL_Types.ttcn M library/LAPDm_RAW_PT.ttcn 5 files changed, 216 insertions(+), 168 deletions(-) Approvals: Jenkins Builder: Verified pespin: Looks good to me, but someone else must approve laforge: Looks good to me, but someone else must approve fixeria: Looks good to me, approved diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn index e1281bb..e08f243 100644 --- a/bts/BTS_Tests.ttcn +++ b/bts/BTS_Tests.ttcn @@ -929,7 +929,7 @@ /* This altstep triggers on receipt of a L1CTL DATA.ind matching the given * RSL chan_nr/link_id and data templates. Used as a base for other altsteps. */ -private altstep as_l1ctl_dl_msg(out L1ctlDlMessage msg, +private altstep as_l1ctl_dl_msg(out L1ctlMessage msg, template (present) octetstring tr_data := ?, template (present) RslChannelNr chan_nr := ?, template (present) RslLinkId link_id := ?) @@ -945,7 +945,7 @@ boolean do_repeat := true) runs on ConnHdlr { template (present) LapdmFrame tr_frame := tr_LAPDm_UI(sapi, true, ''O); - var L1ctlDlMessage dl_msg; + var L1ctlMessage dl_msg; [] as_l1ctl_dl_msg(dl_msg, decmatch tr_frame, chan_nr, link_id) { if (do_repeat) { @@ -960,7 +960,7 @@ template (present) LapdmFrameAB tr_frame := ?, template (present) RslLinkId link_id := ?) runs on ConnHdlr { - var L1ctlDlMessage dl_msg; + var L1ctlMessage dl_msg; [] as_l1ctl_dl_msg(dl_msg, decmatch tr_frame, g_chan_nr, link_id) { frame := dec_LapdmFrameAB(dl_msg.payload.data_ind.payload); @@ -974,7 +974,7 @@ template (present) SacchL1Header tr_l1h := ?, template (present) GsmSapi sapi := ?) runs on ConnHdlr { - var L1ctlDlMessage dl_msg; + var L1ctlMessage dl_msg; template (present) RslLinkId link_id := tr_RslLinkID_SACCH(sapi); template (present) L1ctlDataReq tr_data := { l1header := tr_l1h, @@ -1208,7 +1208,7 @@ private function f_sacch_present(template octetstring l3_exp, boolean do_fail := true) runs on ConnHdlr { - var L1ctlDlMessage dl; + var L1ctlMessage dl; timer T_sacch := 3.0; L1CTL.clear; T_sacch.start; @@ -1234,7 +1234,7 @@ /* verify that given SACCH payload is not present */ private function f_sacch_missing(template octetstring l3_exp) runs on ConnHdlr { - var L1ctlDlMessage dl; + var L1ctlMessage dl; timer T_sacch := 3.0; L1CTL.clear; T_sacch.start; @@ -2048,7 +2048,7 @@ private function f_TC_ho_physical_info(charstring id) runs on ConnHdlr { var PDU_ML3_NW_MS dcch_pdu; var integer count := 0; - var L1ctlDlMessage dl; + var L1ctlMessage dl; timer T; f_l1_tune(L1CTL); @@ -2162,7 +2162,7 @@ /* handle incoming downlink SACCH and respond with uplink SACCH (meas res) */ private altstep as_l1_sacch() runs on ConnHdlr { var template (value) LapdmFrameAB lb; - var L1ctlDlMessage l1_dl; + var L1ctlMessage l1_dl; [] L1CTL.receive(tr_L1CTL_DATA_IND(g_chan_nr, tr_RslLinkID_SACCH(?))) -> value l1_dl { log("SACCH received: ", l1_dl.payload.data_ind.payload); @@ -2191,7 +2191,7 @@ boolean do_apply := true) runs on ConnHdlr { - var L1ctlDlMessage l1_dl; + var L1ctlMessage l1_dl; [] L1CTL.receive(tr_L1CTL_DATA_IND(g_chan_nr, tr_RslLinkID_SACCH(?))) -> value l1_dl { /* Parse the L1 SACCH header (MS Power Level & Timing Advance) */ @@ -2206,7 +2206,7 @@ } private altstep as_l1_dcch_loop() runs on ConnHdlr { - var L1ctlDlMessage l1_dl; + var L1ctlMessage l1_dl; [] L1CTL.receive(tr_L1CTL_DATA_IND(g_chan_nr, tr_RslLinkID_DCCH(?))) -> value l1_dl { log("DCCH received: ", l1_dl.payload.data_ind.payload); var octetstring pl := '010301'O; @@ -2217,7 +2217,7 @@ } private altstep as_l1_tch_loop() runs on ConnHdlr { - var L1ctlDlMessage l1_dl; + var L1ctlMessage l1_dl; [] L1CTL.receive(tr_L1CTL_TRAFFIC_IND(g_chan_nr)) -> value l1_dl { log("TCH received: ", l1_dl.payload.traffic_ind.data); @@ -2773,7 +2773,7 @@ /* Wait until the BTS has reached full tx power (nominal tx power minus configured attenuation) */ private function f_wait_ramp_up() runs on ConnHdlr return integer { - var L1ctlDlMessage l1_dl; + var L1ctlMessage l1_dl; var integer max_rx_lvl := mp_bts_tx_nom_pwr_exp - mp_bts_tx_pwr_att_exp; timer Tup := 10.0; Tup.start; @@ -2798,7 +2798,7 @@ /* verify BTS ramps power up to full tx power (nominal tx power minus configured attenuation) */ private function f_verify_ramp_up() runs on ConnHdlr { - var L1ctlDlMessage l1_dl; + var L1ctlMessage l1_dl; var integer initial_rx_lvl := -1; var integer last_rx_lvl := -1; var integer max_rx_lvl := mp_bts_tx_nom_pwr_exp - mp_bts_tx_pwr_att_exp; @@ -2860,7 +2860,7 @@ /* verify BTS ramps power down to rx_level 0 */ private function f_verify_ramp_down(integer max_rx_lvl) runs on ConnHdlr { - var L1ctlDlMessage l1_dl; + var L1ctlMessage l1_dl; var integer last_rx_lvl := max_rx_lvl; timer Tdown := 5.0; @@ -2907,7 +2907,7 @@ /* verify BTS power down to rx_level 0 without ramping */ private function f_verify_power_down(integer max_rx_lvl) runs on ConnHdlr { - var L1ctlDlMessage l1_dl; + var L1ctlMessage l1_dl; var boolean first_data_ind := true; timer Tdown := 5.0; @@ -2997,7 +2997,7 @@ * + ramping up during ADM state LOCKED->UNLOCKED */ private function f_TC_tx_power_ramp_adm_state_change(charstring id) runs on ConnHdlr { - var L1ctlDlMessage l1_dl; + var L1ctlMessage l1_dl; var integer last_rx_lvl; f_connhdlr_init_vty_bsc(); @@ -4088,7 +4088,7 @@ inout integer num_paging_rcv_ids, PagingTestCfg cfg) runs on test_CT { - var L1ctlDlMessage dl; + var L1ctlMessage dl; [] L1CTL.receive(tr_L1CTL_DATA_IND(t_RslChanNr_PCH_AGCH(0), ?, c_DummyUI)) { repeat; } @@ -4468,7 +4468,7 @@ } private function f_TC_imm_ass(integer num_total, float sleep_s, float exp_pass) runs on test_CT { - var L1ctlDlMessage l1_dl; + var L1ctlMessage l1_dl; timer T := 10.0; var integer num_tx := 0; var integer num_rx := 0; @@ -4890,7 +4890,7 @@ return SystemInformationVectorPerTc { timer T := duration; var SystemInformationVectorPerTc si_per_tc; - var L1ctlDlMessage l1_dl; + var L1ctlMessage l1_dl; /* initialize all per-TC vectors empty */ for (var integer i:= 0; i < sizeof(si_per_tc); i := i+1) { @@ -5561,7 +5561,7 @@ boolean wait_rts := true) runs on test_CT { timer T := 5.0; - var L1ctlDlMessage rx_dl; + var L1ctlMessage rx_dl; PCU.clear; if (wait_rts) { @@ -5668,7 +5668,7 @@ } testcase TC_pcu_ptcch() runs on test_CT { - var L1ctlDlMessage dl; + var L1ctlMessage dl; var octetstring data; timer T; @@ -6266,7 +6266,7 @@ /* Ensure that GPRS capability is not advertised before PCU socket conncet */ private function f_get_si(L1CTL_PT pt, RrMessageType si_type) runs on test_CT return SystemInformation { - var L1ctlDlMessage l1_dl; + var L1ctlMessage l1_dl; var SystemInformation si; var integer rc; timer T := 5.0; @@ -7214,7 +7214,7 @@ /* test if RLL EST REQ trigeres SABM on Um; UA on Um triggers EST CONF (TS 48.058 3.2) */ private function f_TC_rll_est_req(charstring id) runs on ConnHdlr { var RllTestCase tc := g_pars.spec.rll; - var L1ctlDlMessage dl; + var L1ctlMessage dl; timer T := 3.0; f_l1_tune(L1CTL); @@ -7255,7 +7255,7 @@ /* altstep to receive a LAPDm frame matching the given template */ friend altstep as_l1_exp_lapdm(template LapdmFrame exp) runs on ConnHdlr { - var L1ctlDlMessage dl; + var L1ctlMessage dl; [] L1CTL.receive(tr_L1CTL_DATA_IND(g_chan_nr, ?)) -> value dl { var LapdmFrame lapdm; var octetstring l2 := dl.payload.data_ind.payload; @@ -7571,7 +7571,7 @@ f_est_dchan(true); /* now we actually need to transmit some data both ways to check if the encryption works */ - var L1ctlDlMessage dl; + var L1ctlMessage dl; var octetstring l3 := f_rnd_octstring(20); var RslLinkId link_id := valueof(ts_RslLinkID_DCCH(0)); @@ -7615,7 +7615,7 @@ f_est_dchan(true); /* now we actually need to transmit some data both ways to check if the encryption works */ - var L1ctlDlMessage dl; + var L1ctlMessage dl; var octetstring l3 := f_rnd_octstring(20); var RslLinkId link_id := valueof(ts_RslLinkID_DCCH(0)); @@ -7831,7 +7831,7 @@ * DTX Related (see GSM 05.08, section 8.3) ***********************************************************************/ private function f_TC_tch_sign_l2_fill_frame(charstring id) runs on ConnHdlr { - var L1ctlDlMessage dl; + var L1ctlMessage dl; var GsmFrameNumber first_fn; var boolean is_first_frame := true; var integer nfill_frames := 0; @@ -7853,7 +7853,7 @@ f_est_dchan(false); /* A template for matching dummy LAPDm func=UA frames */ - var template L1ctlDlMessage tr_fill_frame := tr_L1CTL_DATA_IND( + var template L1ctlMessage tr_fill_frame := tr_L1CTL_DATA_IND( chan_nr := g_chan_nr, link_id := tr_RslLinkID_DCCH(?), l2_data := f_pad_oct('030301'O, 23, '2B'O)); @@ -7990,7 +7990,7 @@ private altstep as_TC_ms_pwr_ctrl(f_TC_ms_pwr_ctrl_cb cb, inout integer num_blocks) runs on ConnHdlr { - var L1ctlDlMessage l1_dl; + var L1ctlMessage l1_dl; var SacchL1Header l1h; var octetstring l2; @@ -8179,8 +8179,8 @@ } private function f_TC_speech_no_rtp(charstring id) runs on ConnHdlr { - var template L1ctlDlMessage tr_bad_frame; - var L1ctlDlMessage l1_dl; + var template L1ctlMessage tr_bad_frame; + var L1ctlMessage l1_dl; timer T := 8.0; f_l1_tune(L1CTL); @@ -8241,7 +8241,7 @@ /* Verify handling of Downlink and Uplink speech frames */ private function f_TC_speech_rtp(charstring id) runs on ConnHdlr { - var L1ctlDlMessage l1_dl; + var L1ctlMessage l1_dl; var PDU_RTP rtp_pdu; var octetstring pl; timer Td, Tu; @@ -8348,7 +8348,7 @@ /* Verify handling of Downlink and Uplink Osmux speech frames */ private function f_TC_speech_osmux(charstring id) runs on ConnHdlr { - var L1ctlDlMessage l1_dl; + var L1ctlMessage l1_dl; var OSMUX_PDU osmux_pdu; var octetstring pl; var octetstring exp_rtp_pl; @@ -8484,7 +8484,7 @@ /* Do not expect the Immediate Assignment to show up on MS side yet. Even give it one second before the BSC * requests Chan Activ, to make sure the RR IMM ASS is held back. */ - var L1ctlDlMessage dl; + var L1ctlMessage dl; var GsmRrMessage rr; var template GsmRrMessage rr_imm_ass := tr_IMM_ASS(ra, fn); @@ -8601,7 +8601,7 @@ private function f_rxlev_match(template (present) RslLinkId link_id, template (present) GsmRxLev rxlev) runs on ConnHdlr { - var L1ctlDlMessage dl := f_L1CTL_rx_data(L1CTL, g_chan_nr, link_id); + var L1ctlMessage dl := f_L1CTL_rx_data(L1CTL, g_chan_nr, link_id); if (not match(dl.dl_info.rx_level, rxlev)) { setverdict(fail, "RxLev(", link_id, ") := ", dl.dl_info.rx_level, " does not match expected RxLev := ", rxlev); @@ -8612,7 +8612,7 @@ private function f_TC_acch_overpower(charstring id) runs on ConnHdlr { var TopTestCase tc := g_pars.spec.top; var GsmRxLev rxlev_dcch; - var L1ctlDlMessage dl; + var L1ctlMessage dl; /* Wait for Pau ramping to complete */ f_sleep(6.0); diff --git a/bts/BTS_Tests_SMSCB.ttcn b/bts/BTS_Tests_SMSCB.ttcn index 942bad3..3cd1919 100644 --- a/bts/BTS_Tests_SMSCB.ttcn +++ b/bts/BTS_Tests_SMSCB.ttcn @@ -365,7 +365,7 @@ /* shared function doing the heavy lifting for most CBCH tests */ private function f_TC_smscb(CbchTestPars pars) runs on test_CT { - var L1ctlDlMessage dl; + var L1ctlMessage dl; var integer msg_count; timer T; @@ -418,7 +418,7 @@ } private function f_TC_smscb_default_only(CbchTestPars pars) runs on test_CT { - var L1ctlDlMessage dl; + var L1ctlMessage dl; timer T := 5.0; f_smscb_setup(pars); @@ -697,7 +697,7 @@ basic := valueof(t_CbchPC(msgs_1m_3b_default)), extended := omit }; - var L1ctlDlMessage dl; + var L1ctlMessage dl; timer T := 5.0; f_TC_smscb_default_only(pars); @@ -922,7 +922,7 @@ * too much effort; instead simply do a binary compare to this constant */ const bitstring c_P1RO_hdr := '00101011101'B; var integer seg_received[4] := { 0, 0, 0, 0 }; - var L1ctlDlMessage dl; + var L1ctlMessage dl; timer T := 10.0; f_init(); @@ -1016,7 +1016,7 @@ /* decoding the actual entire P1 rest octets by manually generated code is * too much effort; instead simply do a binary compare to this constant */ const bitstring c_P1RO_hdr := '00101011101'B; - var L1ctlDlMessage dl; + var L1ctlMessage dl; timer T := 10.0; f_init(); diff --git a/library/L1CTL_PortType.ttcn b/library/L1CTL_PortType.ttcn index c44b2ae..d84cee4 100644 --- a/library/L1CTL_PortType.ttcn +++ b/library/L1CTL_PortType.ttcn @@ -46,8 +46,8 @@ function f_L1CTL_rx_data(L1CTL_PT pt, template (present) RslChannelNr chan_nr := ?, template (present) RslLinkId link_id := ?) - return L1ctlDlMessage { - var L1ctlDlMessage dl; + return L1ctlMessage { + var L1ctlMessage dl; timer T := 2.0; T.start; @@ -72,7 +72,7 @@ { timer T := 15.0; for (var integer i := 0; i < 10; i := i+1) { - var L1ctlDlMessage dl; + var L1ctlMessage dl; pt.send(ts_L1CTL_FBSB_REQ(arfcn, valueof(t_L1CTL_FBSB_F_ALL), 0, ccch_mode, rxlev_exp)); T.start alt { @@ -108,7 +108,7 @@ } function f_L1CTL_TCH_MODE(L1CTL_PT pt, - template (value) L1ctlUlMessage tch_mode_req_tmpl := ts_L1CTL_TCH_MODE_REQ) { + template (value) L1ctlMessage tch_mode_req_tmpl := ts_L1CTL_TCH_MODE_REQ) { timer T := 2.0; pt.send(tch_mode_req_tmpl); T.start; @@ -126,7 +126,7 @@ template (value) RslChannelNr chan_nr := ts_RslChanNr_RACH(0), template (value) RslLinkId link_id := ts_RslLinkID_DCCH(0)) return GsmFrameNumber { - var L1ctlDlMessage rc; + var L1ctlMessage rc; var GsmFrameNumber fn; timer T := 2.0; T.start @@ -146,7 +146,7 @@ L1CTL_PT pt, uint16_t ra11, L1ctlRachSynchSeq seq, uint8_t combined := 1, uint16_t offset := 0 ) return GsmFrameNumber { - var L1ctlDlMessage rc; + var L1ctlMessage rc; var GsmFrameNumber fn; timer T := 2.0; @@ -170,7 +170,7 @@ function f_L1CTL_WAIT_IMM_ASS(L1CTL_PT pt, uint8_t ra, GsmFrameNumber rach_fn) return ImmediateAssignment { var template GsmRrMessage rr_imm_ass; - var L1ctlDlMessage dl; + var L1ctlMessage dl; var GsmRrMessage rr; timer T := 10.0; @@ -204,7 +204,7 @@ function f_L1CTL_WAIT_IMM_ASS_TBF_DL(L1CTL_PT pt, GprsTlli tlli) return ImmediateAssignment { var template PacketDlAssign dl_ass := tr_PacketDlAssign(tlli); var template IaRestOctets rest := tr_IaRestOctets_DLAss(dl_ass); - var L1ctlDlMessage dl; + var L1ctlMessage dl; var GsmRrMessage rr; timer T := 10.0; T.start; @@ -310,36 +310,28 @@ pout.err := pin.result.err; } with { extension "prototype(fast)" } - private function L1CTL_to_UD_ul(in L1ctlUlMessage pin, out UD_send_data pout) { - var L1ctlUlMessageLV msg_lv := { msg := pin }; - pout.data := enc_L1ctlUlMessageLV(msg_lv); + private function L1CTL_to_UD(in L1ctlMessage pin, out UD_send_data pout) { + var L1ctlMessageLV msg_lv := { msg := pin }; + pout.data := enc_L1ctlMessageLV(msg_lv); pout.id := 0; } with { extension "prototype(fast)" } - private function L1CTL_to_UD_dl(in L1ctlDlMessage pin, out UD_send_data pout) { - var L1ctlDlMessageLV msg_lv := { msg := pin }; - pout.data := enc_L1ctlDlMessageLV(msg_lv); - pout.id := 0; - } with { extension "prototype(fast)" } - - private function UD_to_L1CTL_dl(in UD_send_data pin, out L1ctlDlMessage pout) { - var L1ctlDlMessageLV msg_lv := dec_L1ctlDlMessageLV(pin.data); + private function UD_to_L1CTL(in UD_send_data pin, out L1ctlMessage pout) { + var L1ctlMessageLV msg_lv := dec_L1ctlMessageLV(pin.data); pout:= msg_lv.msg; } with { extension "prototype(fast)" } type port L1CTL_PT message { - out L1ctlUlMessage - out L1ctlDlMessage + out L1ctlMessage out L1CTL_connect - in L1ctlDlMessage + in L1ctlMessage in L1CTL_connect_result in UD_listen_result in UD_connected } with { extension "user UD_PT - out(L1ctlUlMessage -> UD_send_data: function(L1CTL_to_UD_ul); - L1ctlDlMessage -> UD_send_data: function(L1CTL_to_UD_dl); + out(L1ctlMessage -> UD_send_data: function(L1CTL_to_UD); L1CTL_connect -> UD_connect: function(L1CTL_to_UD_connect)) - in(UD_send_data -> L1ctlDlMessage: function(UD_to_L1CTL_dl); + in(UD_send_data -> L1ctlMessage: function(UD_to_L1CTL); UD_connect_result -> L1CTL_connect_result: function(UD_to_L1CTL_connect_result); UD_listen_result -> UD_listen_result: simple; UD_connected -> UD_connected: simple diff --git a/library/L1CTL_Types.ttcn b/library/L1CTL_Types.ttcn index c8767e2..9162eea 100644 --- a/library/L1CTL_Types.ttcn +++ b/library/L1CTL_Types.ttcn @@ -193,42 +193,6 @@ variant (payload) "BYTEORDER(first)" }; - type union L1ctlDlPayload { - L1ctlFbsbConf fbsb_conf, - L1ctlCcchModeConf ccch_mode_conf, - L1ctlTchModeConf tch_mode_conf, - L1ctlDataInd data_ind, - L1ctlTrafficReq traffic_ind, - L1ctlTbfCfgReq tbf_cfg_conf, - octetstring other - } with { - variant (other) "BYTEORDER(first)" - }; - - type record L1ctlDlMessage { - L1ctlHeader header, - L1ctlDlInfo dl_info optional, - L1ctlDlPayload payload optional - } with { variant (dl_info) "PRESENCE(header.msg_type = L1CTL_FBSB_CONF, - header.msg_type = L1CTL_RACH_CONF, - header.msg_type = L1CTL_DATA_IND, - header.msg_type = L1CTL_DATA_CONF, - header.msg_type = L1CTL_TRAFFIC_IND, - header.msg_type = L1CTL_TRAFFIC_CONF)" - variant (payload) "CROSSTAG(fbsb_conf, header.msg_type = L1CTL_FBSB_CONF; - ccch_mode_conf, header.msg_type = L1CTL_CCCH_MODE_CONF; - tch_mode_conf, header.msg_type = L1CTL_TCH_MODE_CONF; - data_ind, header.msg_type = L1CTL_DATA_IND; - traffic_ind, header.msg_type = L1CTL_TRAFFIC_IND; - tbf_cfg_conf, header.msg_type = L1CTL_TBF_CFG_CONF; - other, OTHERWISE; - )" }; - - external function enc_L1ctlDlMessage(in L1ctlDlMessage msg) return octetstring - with { extension "prototype(convert) encode(RAW)" }; - external function dec_L1ctlDlMessage(in octetstring stream) return L1ctlDlMessage - with { extension "prototype(convert) decode(RAW)" }; - type record L1ctlUlInfo { RslChannelNr chan_nr, @@ -387,31 +351,46 @@ TfiUsfArr tfi_usf } with { variant (is_uplink) "FIELDLENGTH(8)" }; - type union L1ctlUlPayload { + type union L1ctlMsgPayload { L1ctlFbsbReq fbsb_req, - L1ctlCcchModeReq ccch_mode_req, - L1ctlTchModeReq tch_mode_req, + L1ctlFbsbConf fbsb_conf, + L1ctlDataInd data_ind, L1ctlRachReq rach_req, - L1ctlExtRachReq ext_rach_req, - L1ctlParReq par_req, L1ctlDmEstReq dm_est_req, - L1ctlReset reset_req, - //L1ctlNeighPmReq neigh_pm_req, - L1CtlCryptoReq crypto_req, - L1ctlTrafficReq traffic_req, - L1ctlTbfCfgReq tbf_cfg_req, L1ctlDataReq data_req, + /* TODO: L1CTL_RESET_IND */ + /* TODO: L1CTL_PM_REQ */ + /* TODO: L1CTL_PM_CONF */ + L1ctlReset reset_req, + L1ctlCcchModeReq ccch_mode_req, + L1ctlCcchModeConf ccch_mode_conf, + L1ctlParReq par_req, + /* TODO: L1CTL_DM_FREQ_REQ */ + L1CtlCryptoReq crypto_req, + /* TODO: L1CTL_SIM_REQ */ + /* TODO: L1CTL_SIM_CONF */ + L1ctlTchModeReq tch_mode_req, + L1ctlTchModeConf tch_mode_conf, + /* TODO: L1CTL_NEIGH_PM_REQ */ + /* TODO: L1CTL_NEIGH_PM_IND */ + L1ctlTrafficReq traffic_req, + L1ctlTrafficReq traffic_ind, + /* TODO: L1CTL_BURST_IND */ + L1ctlTbfCfgReq tbf_cfg_req, + L1ctlTbfCfgReq tbf_cfg_conf, + L1ctlExtRachReq ext_rach_req, octetstring other } with { variant (other) "BYTEORDER(first)" }; - type record L1ctlUlMessage { + type record L1ctlMessage { L1ctlHeader header, L1ctlUlInfo ul_info optional, + L1ctlDlInfo dl_info optional, L1ctlUlTbfInfo ul_info_tbf optional, L1ctlUlAbsInfo ul_info_abs optional, - L1ctlUlPayload payload + L1ctlMsgPayload payload optional } with { variant (ul_info) "PRESENCE(header.msg_type = L1CTL_RACH_REQ, header.msg_type = L1CTL_EXT_RACH_REQ, header.msg_type = L1CTL_PARAM_REQ, @@ -421,56 +400,68 @@ header.msg_type = L1CTL_DM_FREQ_REQ, header.msg_type = L1CTL_DM_REL_REQ, header.msg_type = L1CTL_TRAFFIC_REQ)" + variant (dl_info) "PRESENCE(header.msg_type = L1CTL_FBSB_CONF, + header.msg_type = L1CTL_RACH_CONF, + header.msg_type = L1CTL_DATA_IND, + header.msg_type = L1CTL_DATA_CONF, + header.msg_type = L1CTL_TRAFFIC_IND, + header.msg_type = L1CTL_TRAFFIC_CONF)" variant (ul_info_tbf) "PRESENCE(header.msg_type = L1CTL_DATA_TBF_REQ)" variant (ul_info_abs) "PRESENCE(header.msg_type = L1CTL_DATA_ABS_REQ)" variant (payload) "CROSSTAG(fbsb_req, header.msg_type = L1CTL_FBSB_REQ; - ccch_mode_req, header.msg_type = L1CTL_CCCH_MODE_REQ; - tch_mode_req, header.msg_type = L1CTL_TCH_MODE_REQ; + fbsb_conf, header.msg_type = L1CTL_FBSB_CONF; + data_ind, header.msg_type = L1CTL_DATA_IND; rach_req, header.msg_type = L1CTL_RACH_REQ; - ext_rach_req, header.msg_type = L1CTL_EXT_RACH_REQ; - par_req, header.msg_type = L1CTL_PARAM_REQ; dm_est_req, header.msg_type = L1CTL_DM_EST_REQ; - reset_req, header.msg_type = L1CTL_RESET_REQ; - crypto_req, header.msg_type = L1CTL_CRYPTO_REQ; - traffic_req, header.msg_type = L1CTL_TRAFFIC_REQ; - tbf_cfg_req, header.msg_type = L1CTL_TBF_CFG_REQ; data_req, header.msg_type = L1CTL_DATA_REQ; + /* TODO: reset_ind, header.msg_type = L1CTL_RESET_IND */ + /* TODO: pm_req, header.msg_type = L1CTL_PM_REQ */ + /* TODO: pm_conf, header.msg_type = L1CTL_PM_CONF */ + reset_req, header.msg_type = L1CTL_RESET_REQ; + ccch_mode_req, header.msg_type = L1CTL_CCCH_MODE_REQ; + ccch_mode_conf, header.msg_type = L1CTL_CCCH_MODE_CONF; + par_req, header.msg_type = L1CTL_PARAM_REQ; + /* TODO: freq_req, header.msg_type = L1CTL_DM_FREQ_REQ */ + crypto_req, header.msg_type = L1CTL_CRYPTO_REQ; + /* TODO: sim_req, header.msg_type = L1CTL_SIM_REQ */ + /* TODO: sim_conf, header.msg_type = L1CTL_SIM_CONF */ + tch_mode_req, header.msg_type = L1CTL_TCH_MODE_REQ; + tch_mode_conf, header.msg_type = L1CTL_TCH_MODE_CONF; + /* TODO: neigh_pm_req, header.msg_type = L1CTL_NEIGH_PM_REQ */ + /* TODO: neigh_pm_ind, header.msg_type = L1CTL_NEIGH_PM_IND */ + traffic_req, header.msg_type = L1CTL_TRAFFIC_REQ; + traffic_ind, header.msg_type = L1CTL_TRAFFIC_IND; + /* TODO: burst_ind, header.msg_type = L1CTL_BURST_IND */ + tbf_cfg_req, header.msg_type = L1CTL_TBF_CFG_REQ; + tbf_cfg_conf, header.msg_type = L1CTL_TBF_CFG_CONF; + ext_rach_req, header.msg_type = L1CTL_EXT_RACH_REQ; other, OTHERWISE; )" }; - external function enc_L1ctlUlMessage(in L1ctlUlMessage msg) return octetstring + external function enc_L1ctlMessage(in L1ctlMessage msg) return octetstring with { extension "prototype(convert) encode(RAW)" }; - external function dec_L1ctlUlMessage(in octetstring stream) return L1ctlUlMessage + external function dec_L1ctlMessage(in octetstring stream) return L1ctlMessage with { extension "prototype(convert) decode(RAW)" }; - type record L1ctlUlMessageLV { + type record L1ctlMessageLV { uint16_t len, - L1ctlUlMessage msg + L1ctlMessage msg } with { variant (len) "LENGTHTO(msg)" }; - external function enc_L1ctlUlMessageLV(in L1ctlUlMessageLV msg) return octetstring + external function enc_L1ctlMessageLV(in L1ctlMessageLV msg) return octetstring with { extension "prototype(convert) encode(RAW)" }; - external function dec_L1ctlUlMessageLV(in octetstring stream) return L1ctlUlMessageLV - with { extension "prototype(convert) decode(RAW)" }; - - type record L1ctlDlMessageLV { - uint16_t len, - L1ctlDlMessage msg - } with { variant (len) "LENGTHTO(msg)" }; - - external function enc_L1ctlDlMessageLV(in L1ctlDlMessageLV msg) return octetstring - with { extension "prototype(convert) encode(RAW)" }; - external function dec_L1ctlDlMessageLV(in octetstring stream) return L1ctlDlMessageLV + external function dec_L1ctlMessageLV(in octetstring stream) return L1ctlMessageLV with { extension "prototype(convert) decode(RAW)" }; /* for generating RESET_REQ */ - template (value) L1ctlUlMessage + template (value) L1ctlMessage t_L1ctlResetReq(template (value) L1ctlResetType rst_type) := { header := ts_L1ctlHeader(L1CTL_RESET_REQ), ul_info := omit, + dl_info := omit, ul_info_tbf := omit, ul_info_abs := omit, payload := { @@ -482,7 +473,7 @@ }; /* for generating FBSB_REQ */ - template (value) L1ctlUlMessage + template (value) L1ctlMessage ts_L1CTL_FBSB_REQ(template (value) GsmBandArfcn arfcn, template (value) L1ctlFbsbFlags flags, template (value) uint8_t sync_info_idx, @@ -490,6 +481,7 @@ template (value) GsmRxLev rxlev_exp) := { header := ts_L1ctlHeader(L1CTL_FBSB_REQ), ul_info := omit, + dl_info := omit, ul_info_tbf := omit, ul_info_abs := omit, payload := { @@ -508,10 +500,13 @@ }; /* for matching against incoming FBSB_CONF */ - template L1ctlDlMessage + template L1ctlMessage tr_L1CTL_FBSB_CONF(template (present) uint8_t result) := { header := tr_L1ctlHeader(L1CTL_FBSB_CONF), + ul_info := omit, dl_info := ?, + ul_info_tbf := omit, + ul_info_abs := omit, payload := { fbsb_conf := { initial_freq_err := ?, @@ -521,10 +516,11 @@ } }; - template (value) L1ctlUlMessage + template (value) L1ctlMessage ts_L1CTL_CCCH_MODE_REQ(template (value) L1ctlCcchMode ccch_mode) := { header := ts_L1ctlHeader(L1CTL_CCCH_MODE_REQ), ul_info := omit, + dl_info := omit, ul_info_tbf := omit, ul_info_abs := omit, payload := { @@ -535,7 +531,7 @@ } }; - template (value) L1ctlUlMessage + template (value) L1ctlMessage ts_L1CTL_TCH_MODE_REQ(template (value) L1ctlTchMode tch_mode := L1CTL_CHAN_MODE_SIGN, template (value) L1ctlAudioMode audio_mode := t_L1CTL_AudioModeFwd, template (value) L1ctlLoopMode loop_mode := L1CTL_LOOP_MODE_OPEN, @@ -543,6 +539,7 @@ template (value) BIT8 amr_codecs_bitmask := '00000000'B) := { header := ts_L1ctlHeader(L1CTL_TCH_MODE_REQ), ul_info := omit, + dl_info := omit, ul_info_tbf := omit, ul_info_abs := omit, payload := { @@ -559,16 +556,19 @@ }; - template L1ctlDlMessage + template L1ctlMessage tr_L1CTL_MsgType(template (present) L1ctlMsgType msg_type) := { header := tr_L1ctlHeader(msg_type), + ul_info := *, dl_info := *, + ul_info_tbf := *, + ul_info_abs := *, payload := * } - template L1ctlDlMessage tr_L1CTL_CCCH_MODE_CONF := tr_L1CTL_MsgType(L1CTL_CCCH_MODE_CONF); + template L1ctlMessage tr_L1CTL_CCCH_MODE_CONF := tr_L1CTL_MsgType(L1CTL_CCCH_MODE_CONF); - template (value) L1ctlUlMessage + template (value) L1ctlMessage ts_L1CTL_RACH_REQ(template (value) uint8_t ra, template (value) uint8_t combined, template (value) uint16_t offset, @@ -580,6 +580,7 @@ link_id := link_id, padding := '0000'O }, + dl_info := omit, ul_info_tbf := omit, ul_info_abs := omit, payload := { @@ -591,7 +592,7 @@ } } - template (value) L1ctlUlMessage + template (value) L1ctlMessage ts_L1CTL_EXT_RACH_REQ(template (value) uint16_t ra11, template (value) L1ctlRachSynchSeq seq, template (value) uint8_t combined, @@ -603,6 +604,7 @@ link_id := ts_RslLinkID_DCCH(0), padding := '0000'O }, + dl_info := omit, ul_info_tbf := omit, ul_info_abs := omit, payload := { @@ -615,7 +617,7 @@ } } - template (value) L1ctlUlMessage + template (value) L1ctlMessage ts_L1CTL_PAR_REQ(template (value) uint8_t ta, template (value) uint8_t tx_power) := { header := ts_L1ctlHeader(L1CTL_PARAM_REQ), @@ -624,6 +626,7 @@ link_id := ts_RslLinkID_DCCH(0), padding := '0000'O }, + dl_info := omit, ul_info_tbf := omit, ul_info_abs := omit, payload := { @@ -636,7 +639,7 @@ } /* Base template to be inherited by ts_L1CTL_DM_EST_REQ_H0 and ts_L1CTL_DM_EST_REQ_H1 */ - private template (value) L1ctlUlMessage + private template (value) L1ctlMessage ts_L1CTL_DM_EST_REQ(template (value) RslChannelNr chan_nr, template (value) GsmTsc tsc) := { header := ts_L1ctlHeader(L1CTL_DM_EST_REQ), @@ -645,6 +648,7 @@ link_id := ts_RslLinkID_DCCH(0), padding := '0000'O }, + dl_info := omit, ul_info_tbf := omit, ul_info_abs := omit, payload := { @@ -657,7 +661,7 @@ } } - template (value) L1ctlUlMessage + template (value) L1ctlMessage ts_L1CTL_DM_EST_REQ_H0(template (value) RslChannelNr chan_nr, template (value) GsmTsc tsc, template (value) GsmArfcn arfcn) @@ -675,7 +679,7 @@ } } - template (value) L1ctlUlMessage + template (value) L1ctlMessage ts_L1CTL_DM_EST_REQ_H1(template (value) RslChannelNr chan_nr, template (value) GsmTsc tsc, template (value) uint6_t hsn, @@ -700,7 +704,7 @@ } } - template (value) L1ctlUlMessage + template (value) L1ctlMessage ts_L1CTL_DM_REL_REQ(template (value) RslChannelNr chan_nr) := { header := ts_L1ctlHeader(L1CTL_DM_REL_REQ), ul_info := { @@ -708,14 +712,13 @@ link_id := ts_RslLinkID_DCCH(0), padding := '0000'O }, + dl_info := omit, ul_info_tbf := omit, ul_info_abs := omit, - payload := { - other := ''O - } + payload := omit } - template (value) L1ctlUlMessage + template (value) L1ctlMessage ts_L1CTL_DATA_REQ(template (value) RslChannelNr chan_nr, template (value) RslLinkId link_id, octetstring l2_data) := { @@ -725,6 +728,7 @@ link_id := link_id, padding := '0000'O }, + dl_info := omit, ul_info_tbf := omit, ul_info_abs := omit, payload := { @@ -735,7 +739,7 @@ } } - template (value) L1ctlUlMessage + template (value) L1ctlMessage ts_L1CTL_DATA_REQ_SACCH(template (value) RslChannelNr chan_nr, template (value) RslLinkId link_id, template (value) SacchL1Header l1h, @@ -746,6 +750,7 @@ link_id := link_id, padding := '0000'O }, + dl_info := omit, ul_info_tbf := omit, ul_info_abs := omit, payload := { @@ -756,7 +761,7 @@ } } - template (value) L1ctlUlMessage + template (value) L1ctlMessage ts_L1CTL_TRAFFIC_REQ(template (value) RslChannelNr chan_nr, template (value) RslLinkId link_id, octetstring frame) := { @@ -766,6 +771,7 @@ link_id := link_id, padding := '0000'O }, + dl_info := omit, ul_info_tbf := omit, ul_info_abs := omit, payload := { @@ -775,11 +781,12 @@ } }; - template (value) L1ctlUlMessage + template (value) L1ctlMessage ts_L1CTL_TBF_CFG_REQ(template (value) boolean is_uplink, template (value) TfiUsfArr tfi_usf) := { header := ts_L1ctlHeader(L1CTL_TBF_CFG_REQ), ul_info := omit, + dl_info := omit, ul_info_tbf := omit, ul_info_abs := omit, payload := { @@ -792,10 +799,13 @@ } }; - template L1ctlDlMessage + template L1ctlMessage tr_L1CTL_TBF_CFG_CONF(template (present) boolean is_uplink) := { header := tr_L1ctlHeader(L1CTL_TBF_CFG_CONF), + ul_info := omit, dl_info := omit, + ul_info_tbf := omit, + ul_info_abs := omit, payload := { tbf_cfg_conf := { tbf_nr := 0, @@ -806,12 +816,13 @@ } }; - template (value) L1ctlUlMessage + template (value) L1ctlMessage ts_L1CTL_DATA_TBF_REQ(octetstring l2_data, template (value) L1ctlGprsCs cs := L1CTL_CS1, template (value) uint8_t tbf_nr := 0) := { header := ts_L1ctlHeader(L1CTL_DATA_TBF_REQ), ul_info := omit, + dl_info := omit, ul_info_tbf := { tbf_nr := tbf_nr, cs := cs, @@ -823,7 +834,7 @@ } } - template (value) L1ctlUlMessage + template (value) L1ctlMessage ts_L1CTL_DATA_ABS_REQ(octetstring l2_data, template (value) GsmBandArfcn arfcn, template (value) uint8_t ts, @@ -832,6 +843,7 @@ template (value) uint8_t tbf_nr := 0) := { header := ts_L1ctlHeader(L1CTL_DATA_ABS_REQ), ul_info := omit, + dl_info := omit, ul_info_tbf := omit, ul_info_abs := { tbf_nr := tbf_nr, @@ -849,14 +861,17 @@ /* for matching against incoming RACH_CONF */ - template L1ctlDlMessage tr_L1CTL_RACH_CONF := { + template L1ctlMessage tr_L1CTL_RACH_CONF := { header := tr_L1ctlHeader(L1CTL_RACH_CONF), + ul_info := omit, dl_info := ?, + ul_info_tbf := omit, + ul_info_abs := omit, payload := * }; /* for sending and matching L1CTL_DATA_IND */ - template (value) L1ctlDlMessage + template (value) L1ctlMessage ts_L1CTL_DATA_IND(template (value) RslChannelNr chan_nr, template (value) RslLinkId link_id, template (value) octetstring l2_data, @@ -866,6 +881,7 @@ template (value) uint8_t num_biterr := 0, template (value) uint8_t fire_crc := 0) := { header := ts_L1ctlHeader(L1CTL_DATA_IND), + ul_info := omit, dl_info := { chan_nr := chan_nr, link_id := link_id, @@ -876,19 +892,22 @@ num_biterr := num_biterr, fire_crc := fire_crc }, + ul_info_tbf := omit, + ul_info_abs := omit, payload := { data_ind := { payload := l2_data } } }; - template L1ctlDlMessage + template L1ctlMessage tr_L1CTL_DATA_IND(template (present) RslChannelNr chan_nr, template (present) RslLinkId link_id := ?, template (present) octetstring l2_data := ?, template (present) uint8_t num_biterr := 0, template (present) uint8_t fire_crc := 0) := { header := tr_L1ctlHeader(L1CTL_DATA_IND), + ul_info := omit, dl_info := { chan_nr := chan_nr, link_id := link_id, @@ -899,6 +918,8 @@ num_biterr := num_biterr, fire_crc := fire_crc }, + ul_info_tbf := omit, + ul_info_abs := omit, payload := { data_ind := { payload := l2_data @@ -907,13 +928,14 @@ }; /* for matching against incoming TRAFFIC_IND */ - template L1ctlDlMessage + template L1ctlMessage tr_L1CTL_TRAFFIC_IND(template (present) RslChannelNr chan_nr, template (present) RslLinkId link_id := ?, template (present) octetstring frame := ?, template (present) uint8_t num_biterr := ?, template (present) uint8_t fire_crc := ?) := { header := tr_L1ctlHeader(L1CTL_TRAFFIC_IND), + ul_info := omit, dl_info := { chan_nr := chan_nr, link_id := link_id, @@ -924,6 +946,8 @@ num_biterr := num_biterr, fire_crc := fire_crc }, + ul_info_tbf := omit, + ul_info_abs := omit, payload := { traffic_ind := { data := frame @@ -931,7 +955,7 @@ } }; - template (value) L1ctlUlMessage + template (value) L1ctlMessage ts_L1CTL_CRYPTO_REQ(template (value) RslChannelNr chan_nr, template (value) uint8_t algo, template (value) octetstring key) := { @@ -941,6 +965,7 @@ link_id := ts_RslLinkID_DCCH(0), padding := '0000'O }, + dl_info := omit, ul_info_tbf := omit, ul_info_abs := omit, payload := { diff --git a/library/LAPDm_RAW_PT.ttcn b/library/LAPDm_RAW_PT.ttcn index 9630df0..643b7e5 100644 --- a/library/LAPDm_RAW_PT.ttcn +++ b/library/LAPDm_RAW_PT.ttcn @@ -389,7 +389,7 @@ } function ScanEvents() runs on lapdm_CT { - var L1ctlDlMessage dl; + var L1ctlMessage dl; var BCCH_tune_req bt; var LAPDm_ph_data lpd; var RLCMAC_ph_data_ind rpdi; -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/31973 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: I1313068c5f02b65d3dbb05a1341a9d7286225f0c Gerrit-Change-Number: 31973 Gerrit-PatchSet: 1 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: merged
1 0
0 0
[L] Change in osmo-ttcn3-hacks[master]: library: L1CTL: merge L1ctl{Ul,Dl}Message into L1ctlMessage
by fixeria 21 Mar '23

21 Mar '23
Attention is currently required from: pespin. fixeria has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/31973 ) Change subject: library: L1CTL: merge L1ctl{Ul,Dl}Message into L1ctlMessage ...................................................................... Patch Set 1: Code-Review+2 (1 comment) Patchset: PS1: > Maybe it would be great to have a union in L1CTLMessage separating between messages in one direction […] I think this would complicate the API, so I prefer having them all in one union. -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/31973 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: I1313068c5f02b65d3dbb05a1341a9d7286225f0c Gerrit-Change-Number: 31973 Gerrit-PatchSet: 1 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-Attention: pespin <pespin(a)sysmocom.de> Gerrit-Comment-Date: Tue, 21 Mar 2023 20:32:42 +0000 Gerrit-HasComments: Yes Gerrit-Has-Labels: Yes Comment-In-Reply-To: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: comment
1 0
0 0
[S] Change in osmo-gsm-manuals[master]: chapters/*: Fix typos
by laforge 21 Mar '23

21 Mar '23
laforge has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-gsm-manuals/+/32006 ) Change subject: chapters/*: Fix typos ...................................................................... Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/c/osmo-gsm-manuals/+/32006 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-gsm-manuals Gerrit-Branch: master Gerrit-Change-Id: I3c5cc64435c808f981d705d1d99c89fde2a6a74e Gerrit-Change-Number: 32006 Gerrit-PatchSet: 1 Gerrit-Owner: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Comment-Date: Tue, 21 Mar 2023 20:19:17 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
1 0
0 0
[S] Change in osmo-sip-connector[master]: doc: fix typo
by laforge 21 Mar '23

21 Mar '23
laforge has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-sip-connector/+/32001 ) Change subject: doc: fix typo ...................................................................... Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/c/osmo-sip-connector/+/32001 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-sip-connector Gerrit-Branch: master Gerrit-Change-Id: Ie001645e9b44cb5e16090813ca4f053118ac39a4 Gerrit-Change-Number: 32001 Gerrit-PatchSet: 1 Gerrit-Owner: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Comment-Date: Tue, 21 Mar 2023 20:18:28 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
1 0
0 0
[L] Change in osmo-ttcn3-hacks[master]: library: L1CTL: merge L1ctl{Ul,Dl}Message into L1ctlMessage
by laforge 21 Mar '23

21 Mar '23
Attention is currently required from: fixeria. laforge has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/31973 ) Change subject: library: L1CTL: merge L1ctl{Ul,Dl}Message into L1ctlMessage ...................................................................... Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/31973 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: I1313068c5f02b65d3dbb05a1341a9d7286225f0c Gerrit-Change-Number: 31973 Gerrit-PatchSet: 1 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Comment-Date: Tue, 21 Mar 2023 20:17:59 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
1 0
0 0
[L] Change in osmo-ttcn3-hacks[master]: library: L1CTL: rework GPRS related message definitions
by laforge 21 Mar '23

21 Mar '23
Attention is currently required from: fixeria. laforge has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/31974 ) Change subject: library: L1CTL: rework GPRS related message definitions ...................................................................... Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/31974 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: Ib8f4459480bbe12584a6fa71882f745f03c5055d Gerrit-Change-Number: 31974 Gerrit-PatchSet: 1 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Comment-Date: Tue, 21 Mar 2023 20:16:45 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
1 0
0 0
[S] Change in osmo-bsc[master]: gsm_bts_check_ny1: Prevent possible division by zero
by laforge 21 Mar '23

21 Mar '23
laforge has submitted this change. ( https://gerrit.osmocom.org/c/osmo-bsc/+/31972 ) Change subject: gsm_bts_check_ny1: Prevent possible division by zero ...................................................................... gsm_bts_check_ny1: Prevent possible division by zero Do this by setting the minimal value for T3105 to 1 in its timer definition. Fixes: Coverity scan CID#307389 Change-Id: I1fd0b92ab507a58fed6e9649eaa4770f1ad1cbad --- M src/osmo-bsc/net_init.c M tests/timer.vty 2 files changed, 15 insertions(+), 3 deletions(-) Approvals: laforge: Looks good to me, approved pespin: Looks good to me, but someone else must approve Jenkins Builder: Verified diff --git a/src/osmo-bsc/net_init.c b/src/osmo-bsc/net_init.c index 5a7422c..d97fd01 100644 --- a/src/osmo-bsc/net_init.c +++ b/src/osmo-bsc/net_init.c @@ -36,7 +36,7 @@ { .T = 101, .default_val = 10, .desc = "inter-BSC/MSC Handover incoming, BSSMAP HO Request to HO Accept" }, { .T = 3101, .default_val = 3, .desc = "RR Immediate Assignment" }, { .T = 3103, .default_val = 5, .desc = "Handover" }, - { .T = 3105, .default_val = GSM_T3105_DEFAULT, .unit = OSMO_TDEF_MS, .desc = "Physical Information" }, + { .T = 3105, .default_val = GSM_T3105_DEFAULT, .min_val = 1, .unit = OSMO_TDEF_MS, .desc = "Physical Information" }, { .T = 3107, .default_val = 5, .desc = "(unused)" }, { .T = 3109, .default_val = 5, .desc = "RSL SACCH deactivation" }, { .T = 3111, .default_val = 2, .desc = "Wait time before RSL RF Channel Release" }, diff --git a/tests/timer.vty b/tests/timer.vty index 6d6efe8..e418054 100644 --- a/tests/timer.vty +++ b/tests/timer.vty @@ -8,7 +8,7 @@ net: T101 = 10 s inter-BSC/MSC Handover incoming, BSSMAP HO Request to HO Accept (default: 10 s) net: T3101 = 3 s RR Immediate Assignment (default: 3 s) net: T3103 = 5 s Handover (default: 5 s) -net: T3105 = 100 ms Physical Information (default: 100 ms) +net: T3105 = 100 ms Physical Information (default: 100 ms, range: [1 .. inf]) net: T3107 = 5 s (unused) (default: 5 s) net: T3109 = 5 s RSL SACCH deactivation (default: 5 s) net: T3111 = 2 s Wait time before RSL RF Channel Release (default: 2 s) @@ -64,7 +64,7 @@ net: T101 = 10 s inter-BSC/MSC Handover incoming, BSSMAP HO Request to HO Accept (default: 10 s) net: T3101 = 3 s RR Immediate Assignment (default: 3 s) net: T3103 = 5 s Handover (default: 5 s) -net: T3105 = 100 ms Physical Information (default: 100 ms) +net: T3105 = 100 ms Physical Information (default: 100 ms, range: [1 .. inf]) net: T3107 = 5 s (unused) (default: 5 s) net: T3109 = 5 s RSL SACCH deactivation (default: 5 s) net: T3111 = 2 s Wait time before RSL RF Channel Release (default: 2 s) -- To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/31972 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Change-Id: I1fd0b92ab507a58fed6e9649eaa4770f1ad1cbad Gerrit-Change-Number: 31972 Gerrit-PatchSet: 4 Gerrit-Owner: arehbein <arehbein(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de> Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: merged
1 0
0 0
[S] Change in osmo-bsc[master]: gsm_bts_check_ny1: Prevent possible division by zero
by laforge 21 Mar '23

21 Mar '23
Attention is currently required from: arehbein. laforge has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-bsc/+/31972 ) Change subject: gsm_bts_check_ny1: Prevent possible division by zero ...................................................................... Patch Set 3: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/31972 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Change-Id: I1fd0b92ab507a58fed6e9649eaa4770f1ad1cbad Gerrit-Change-Number: 31972 Gerrit-PatchSet: 3 Gerrit-Owner: arehbein <arehbein(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de> Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-Attention: arehbein <arehbein(a)sysmocom.de> Gerrit-Comment-Date: Tue, 21 Mar 2023 20:16:12 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
1 0
0 0
[S] Change in osmo-bts[master]: osmo-bts-{sysmo,lc15,oc2g}: fix segfault in ph_tch_req()
by laforge 21 Mar '23

21 Mar '23
Attention is currently required from: fixeria. laforge has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-bts/+/31991 ) Change subject: osmo-bts-{sysmo,lc15,oc2g}: fix segfault in ph_tch_req() ...................................................................... Patch Set 1: Code-Review+1 (1 comment) Patchset: PS1: nice catch, thanks. I really didn't see the recursion. -- To view, visit https://gerrit.osmocom.org/c/osmo-bts/+/31991 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Change-Id: Ib349b74a9e4bd48c902286f872d3b0e9a068256c Gerrit-Change-Number: 31991 Gerrit-PatchSet: 1 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Comment-Date: Tue, 21 Mar 2023 20:15:47 +0000 Gerrit-HasComments: Yes Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
1 0
0 0
  • ← Newer
  • 1
  • ...
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • ...
  • 365
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.