aboutsummaryrefslogtreecommitdiffstats
path: root/include/osmo-bts/gsm_data_shared.h
AgeCommit message (Collapse)AuthorFilesLines
2020-06-17Merge gsm_data_shared.h into gsm_data.hPau Espin Pedrol1-769/+0
Old _shared one comes from time where we shared header with other componenets. It's no longer the case sine a logn time ago. The gsm_data_shared.h is only being included by gsm_data.h nowadays, so let's simply merge it to simplify header dependency and struct definitions. Similarly, gsm_data_shared.c is renamed to gsm_data.c Change-Id: Id60e7582e3a32dbc5e3531b87b2b49f07aee734d
2020-06-15A-bis/RSL: refactor handling of BS Power IE (power reduction)Vadim Yanitskiy1-4/+3
According to 3GPP TS 08.58, section 9.3.4, BS Power IE indicates the transmission power attenuation on a particular channel: +--------------+---------+-----------------+ | Reserved (3) | FPC (1) | Power level (4) | +--------------+---------+-----------------+ so let's change handling of this IE as follows: - s/bs_power/bs_power_red/g, so it reflects 'reduction'; - store power attenuation value in dB, not in 2 db steps; - get rid of ms_power_ctrl.bts_tx_pwr, it's always 0 anyway; - fix rsl_tx_meas_res(): use lchan->bs_power_red; - always check if FPC (Fast Power Control) flag is set; - we don't support it, so reject messages containing it; - fix rsl_rx_chan_activ(): properly apply the bitmask. Change-Id: I16cc50dfca102030380a06e16c234d5f6698f38f
2020-06-11Do not mix public and private BTS features, use libosmocore's APIVadim Yanitskiy1-43/+18
It was a very bad idea to mix "public" BTS features, that are reported to the BSC via OML, and those features, that are used locally (and exclusively) in osmo-bts. Why? At least because we already have the BTS feature manipulation API in libosmocore, that is used by osmo-bsc, but for some reason not by osmo-bts. New features added to libosmocore would clash with the existing "internal" ones like BTS_FEAT_MS_PWR_CTRL_DSP. So what this change does can be described as follows: - remove duplicate definition of the "public" features, - use libosmocore's API for the "public" features, - separate both "internal" and "public" features: - the "public" features continue to live in bitvec, - the "internal" features become flags, - s/BTS_FEAT/BTS_INTERNAL_FLAG/g. Change-Id: Icf792d02323bb73e3b8d46384c7890cb1eb4731e
2020-06-11gsm_data_shared: use bitvec API to allocate the feature vectorVadim Yanitskiy1-4/+3
Change-Id: I19ecfc619c0dc2bfd14f054d17e222c4e16f6238
2020-06-05rsl: refactor handling of RSL_IE_MR_CONFIGVadim Yanitskiy1-3/+0
- get rid of gsm_lchan::mr_bts_lv, it's never used anyway, - check IE length in amr_parse_mr_conf() before parsing, - check return code of amr_parse_mr_conf(). Change-Id: Ibfd5845ea429945b352dd14421e86562998d65ca
2020-06-05vty: fix bts_dump_vty(): properly print OML stream ID (TEI)Vadim Yanitskiy1-1/+0
Change-Id: I80ceba60e4b48d5bc68de71a2b2a2036b1e78f57
2020-06-05gsm_data_shared: drop force_combined_si & bcch_change_markVadim Yanitskiy1-4/+0
Change-Id: I997ab5e9801af50708ce6dc35004da5e11cb926b
2020-06-05gsm_data_shared: drop unused rach_b_thresh & rach_ldavg_slotsVadim Yanitskiy1-4/+0
Change-Id: I75ffc5c0c1f683adf0632bfe71ac51d1adfd97bd
2020-06-05gsm_data_shared: drop unused ctrl_ack_type_use_block & net_ctrl_ordVadim Yanitskiy1-2/+0
Change-Id: I7c8ddc4a9cfbbd1983e89fa261eaf4f32e15c6bd
2020-06-05gsm_data_shared: drop unused dtxu from struct gsm_btsVadim Yanitskiy1-1/+0
Change-Id: Ic2ddbf04bac7ced900a4e5e532206652dae64059
2020-06-05gsm_data_shared: drop unused *nmh from struct gsm_btsVadim Yanitskiy1-2/+0
Change-Id: I57e9146cfc3274847b50caa44b09b5f06f0cf00b
2020-06-05gsm_data_shared: drop forward declaration of struct vtyVadim Yanitskiy1-2/+0
Change-Id: I12b178d73e19761d16a6ef8e2a16243a23e1bf04
2020-06-05gsm_data_shared: drop unused sacch_deact from struct gsm_lchanVadim Yanitskiy1-3/+0
Change-Id: I93c6bebbf715076c774248596089c77511733acc
2020-06-05gsm_data_shared: drop meaningless commentsVadim Yanitskiy1-2/+0
Change-Id: I8bf88249ef88c283df16fd21a0ad5613801a826f
2020-06-05gsm_data_shared: drop unused struct bts_codec_confVadim Yanitskiy1-6/+0
Change-Id: Ic7187eeb252b327a4d8d1d593758587007d8b891
2020-06-05gsm_data_shared: drop unused LCHAN_SAPI_{UNUSED,MS,NET,REL}Vadim Yanitskiy1-6/+0
Change-Id: I431844fa69245fca43b1acdaf91229a172878db0
2020-06-05gsm_data_shared: drop unused MAX_EARFCN_LISTVadim Yanitskiy1-1/+0
Change-Id: I8927ee178fe204c3598d574391e1cabfe5d6334a
2020-06-05gsm_data_shared: drop unused A38_XOR_{MIN,MAX,COMP128}_KEY_LENVadim Yanitskiy1-3/+0
Change-Id: If4802d30f7c40a359c4d130a754dd762181f122e
2020-06-05gsm_data_shared: drop declaration of non-existing gsm_parse_reg()Vadim Yanitskiy1-7/+0
Change-Id: I2a53ec4b599a7845e49d484f4cd061d7e67c3a28
2020-06-05gsm_data_shared: get rid of unused enum gsm_hooksVadim Yanitskiy1-6/+0
Change-Id: Ib35fc7772babd3bf09dedf1a44e16a07bcc089f0
2020-06-05gsm_data_shared: get rid of unused HARDCODED_BTS{0,1,2}_TSVadim Yanitskiy1-5/+0
Change-Id: I8f91681d9102f9a2ab09e75c4f8b44c37dd8c0d4
2020-06-05gsm_data_shared: get rid of unused HARDCODED_{ARFCN,BSIC}Vadim Yanitskiy1-3/+0
Change-Id: I7e7298bc661d3d3160f03c32d36e98484c8aa79c
2020-06-05gsm_data_shared: drop unused channel request reason definitionsVadim Yanitskiy1-12/+0
Change-Id: I9a680d4a60dbdd82dc31fbd06c6ecd2240945c68
2020-06-05gsm_data_shared: drop unused enum bts_gprs_modeVadim Yanitskiy1-7/+0
Change-Id: Ied91acd3ae480c2e7c85f8d5436babf5a8329a04
2020-06-05gsm_data_shared: drop unused supports_egprs_11bit_rachVadim Yanitskiy1-1/+0
Change-Id: I5fa3aa1cb384f72a9deb3715ba78c199307dd6ec
2020-04-20fix compilation with gcc-10Harald Welte1-4/+4
/usr/bin/ld: /home/laforge/projects/git/osmo-bts/tests/sysmobts/../../src/osmo-bts-sysmo/tch.c:584: undefined reference to `femtobts_tch_pl_names' /usr/bin/ld: l1_transp_hw.o:/home/laforge/projects/git/osmo-bts/src/osmo-bts-sysmo/femtobts.h:108: multiple definition of `pdch_msu_size'; main.o:/home/laforge/projects/git/osmo-bts/src/osmo-bts-sysmo/femtobts.h:108: first defined here /usr/bin/ld: l1_transp_hw.o:/home/laforge/projects/git/osmo-bts/src/osmo-bts-sysmo/femtobts.h:71: multiple definition of `femtobts_l1prim_type'; main.o:/home/laforge/projects/git/osmo-bts/src/osmo-bts-sysmo/femtobts.h:71: first defined here see also: https://alioth-lists.debian.net/pipermail/debian-mobcom-maintainers/Week-of-Mon-20200413/000651.html Change-Id: I4a9896153876fcda496365776883827746205f00
2020-03-08rsl: make IP DSCP configurableOliver Smith1-0/+1
Related: OS#4438 Depends: libosmo-abis I41603db8c1286660ad57ac1c78a8fb393a2b080b Change-Id: Icdef5d40243fefdeae23f3bcf9c6702e8487928a
2020-01-20l1sap: merge MEAS IND into PRIM PH DATA / PRIM TCHPhilipp Maier1-0/+5
The MPH INFO MEAS IND indication, which contains the uplink measurement data is sent in parallel to the PH DATA and TCH indications as a separate indications. This makes the overall uplink measurement data processing unnecessarly complex. So lets put the data that is relevant for measurement into the PH DATA and TCH indications directly. This change only affects osmo-bts-trx at the moment. In order to keep the upper layers (l1sap.c) compatible we add an autodection to switch between separate measurement indications and included measurement data. Related: OS#2977 Depends: libosmocore I2c34b02d329f9df190c5035c396403ca0a4f9c42 Change-Id: I710d0b7cf193afa8515807836ee69b8b7db84a84
2019-11-20power_control.c: Don't use announced MS Power level as input for loop ↵Pau Espin Pedrol1-1/+0
calculations Use instead the received MS Power currently in use by the MS matching the measured signal. This way there's no need to wait for the MS to reach the announced MS power level or add checks in case the MS doesn't support that specific power level. Furthermore, more fine grained announced power level value can be obtained faster due to more input iterations not being dropped while waiting. osmo-bts-trx specific algo was not following this approach and using announced MS power instead because it's wowrking at a lower level and henche was not using the transmitted MS Power level value by the MS as input for the calculation. The "if (diff < 2 && diff > -2))" condition is dropped since equal signal strength may still result in a different MS power level announced (the one currently used by the MS during tx of last SACCH block). Related: OS#1851 Change-Id: I4494dc27a295a3dca1d3331d4ff712d486643e13
2019-11-14Introduce BTS feature BTS_FEAT_MS_PWR_CTRL_DSPPau Espin Pedrol1-0/+1
It indicates whether BTS model supports managing an MS Power Control Loop over HW/DSP instead of using the software based osmocom algorithm present in osmo-bts. osmo-bts-trx own loop implementation is considered to be a "DSP/HW" one since it acts on lower layers and interferes with osmocom algorithm since it controls the same end variable "lchan->ms_power_ctrl.current", this way we make sure both aren't enabled at the same time. Old behavior in kept: if common upper-layer algo is not enabled explicitly in VTY (ms-power-control osmo) and bts-trx specific lower layer algo is neither enabled (osmotrx ms-power-loop <xyz>), then no power control is done at all. Related: OS#1851 Change-Id: I49706926b1e962b18791174627bc3cc0cd0cd9d5
2019-11-14power_control.c: Fix ms pwr ctrl skipped if MS doesn't support announced MS ↵Pau Espin Pedrol1-0/+1
Power Level Related: OS#1851 Change-Id: I1a9c00fe4eb3fa1eaa7997a9ec20716ddfe180a7
2019-11-14Move and rename gsm_lchan.ms_power fieldPau Espin Pedrol1-3/+3
Make it clear that it contains the maximum MS power level (TS 05.05) and not the one to be used. The one aimed at is in ms_power_ctrl.current. Since it's used in related code, move it inside the ms_power_ctrl struct too. Related: OS#1851 Change-Id: Ib264ec7dac87355cef6415461ed74bd8e9c8ca52
2019-11-14Change gsm_lchan field fixed to boolPau Espin Pedrol1-1/+1
Change-Id: I715ef151b67a21e325c574585a257e71b4b0ce2a
2019-11-14Change gsm_bts_trx field to bool and rename itPau Espin Pedrol1-1/+1
Thies field is used to store and retrieve whether MS power needs to be calculated and updated by osmo-bts software or autonomously by lower layers. Previous name was not clear and may have been understood as indicating whether MS Power Control loop is done or not in general, and the responsible for that is located under lchan's ms_power_ctrl.fixed. Related: OS#1851 Change-Id: Ic690ab69866a7377f1597e24aa7b0214831c1cbe
2019-10-17Fix common misspellings and typosMartin Hauke1-4/+4
Change-Id: I403b9029f57fec3fdec2c1e2cbeac0f6eab53f24
2019-10-05struct gsm_bts: Add model_priv pointer handing bts_model specific dataPau Espin Pedrol1-13/+1
Currently there's bts-virtual specific fields in gsm_bts which is not used by other models and are always allocated. An alternative would be having a union with different structs inside, one per model, but since we already have the bts_model abstraction, in this case it makes more sense to use that abstraction instead of filling code with preprocessor ifdefs to guard against non-defined types, etc. Existing model specific data is moved there. This new infra will be user further in forthcoming commits. Related: OS#4215 Change-Id: Ib17a752cdbaa7d5eb8c5dfa0b197f80a4f38b38e
2019-09-10osmo-bts-trx: migrate to new generic ECU abstractionHarald Welte1-3/+3
libosmocodec has recently introduced a generic ECU abstraction layer which supports (pluggable) Error Concealment Units for not only the FR codec, but potentially any other codec, too. Change-Id: I001005aae6de76d4e045b8dc572239f057bb150d Depends: libosmocore I4d33c9c7c2d4c7462ff38a49c178b65accae1915
2019-09-05ETWS Primary Notification via P1 Rest OctetsHarald Welte1-0/+10
The ETWS (Earthquake and Tsunami Warning System) uses a so-called ETWS Primary Notification which is sent * to phones in dedicated mode (via DCCH from the BSC) * to phones in idle mode (via P1 Rest Octets on PCH/CCCH) This patch implements the second part of the functionality, i.e. transmitting the related ETWS Primary Notification via PCH. As 3GPP doesn't specify how this is communicated over Abis, we use a new, vendor-specific RSL message type. Closes: OS#4047 Depends: libosmocore I89c24a81ada6627694a9632e87485a61cbd3e680 Depends: libosmocore I36fc2ffc22728887d1cb8768c7fcd9739a8ec0fc Change-Id: I18c60cdb86b9c19e09f5ec06d66e9b91608880e6
2019-07-21Clarify and refactor link quality (C/I) handlingVadim Yanitskiy1-2/+2
The radio link quality is defined by C/I (Carrier-to-Interference ratio), which is computed from the training sequence of each received burst, by comparing the "ideal" training sequence with the actual (received) one. Link quality measurements are used by L1SAP to filter out "ghost" Access Bursts, and by the link quality adaptation algorithms. One can define minimum link quality values using the VTY interface. On the VTY interface we expect integer C/I values in centiBels (cB, 10e-2 B), while the internal structures are using float values in deciBels (dB, 10e-1 B). Some PHYs (sysmo, octphy, oc2g, and litecell15) expose C/I measurements in deciBels, while on the L1SAP interface we finally send then in centiBels. Let's avoid this confusion and stick to a single format, that will be used by the internal logic of OsmoBTS - integer values (int16_t) in centiBels. This will give us the range of: -32768 .. 32767 centiBels, or -3276.8 .. 3276.7 deciBels, which is certainly sufficient. Change-Id: If624d6fdc0270e6813af8700d95f1345903c8a01
2019-06-13gsm_data_shared.h: Remove unused loc_list from struct gsm_btsPau Espin Pedrol1-3/+0
Change-Id: I52880962dfb0399c613048aa7ddfd828d3c6c933
2019-06-13l1sap: Compute statistics on FN advance in PH-RTS.indHarald Welte1-0/+8
Let's keep some statistics about the min/max/average frame number advance that we're observing above L1SAP when comparing the time in the PH-RTS.ind and the frame number we observe in PH-DATA.ind of data that was received on the uplink. The statistics are currently only shown in the VTY, but this is a precursor to using them to correctly advance the LAPDm timers in a follow-up patch. Change-Id: I8f739fdb808a614f080afbc4654641ec3df19eb2 Related: OS#2294 Related: OS#3906
2019-05-28clear GPRS indicator in SI3 while PCU is disconnectedHarald Welte1-0/+5
osmo-bts cannot provide GPRS service while osmo-pcu is not connected. The BSC has no knowledge of the PCU connection state. Prevent MSs from trying to register for GPRS while the PCU is disconnected by erasing the GPRS Indicator in SI3. Change-Id: I1a6f5c636c0fe098ee31c280d4572a3f8122b44b Depends: I690cf308311f910005a325d50f5d5d825678d2b2 (libosmocore.git) Depends: I08e0ca9a8d13c7aa40b9d90f34f0e13adb87d4e0 (libosmocore.git) Depends: I8b1ee2405f6338507e9dfb5f1f437c4c2db2e330 (libosmocore.git) Related: OS#3075
2019-05-23cbch: Add counters; queue length limits and CBCH LOAD reportingHarald Welte1-0/+4
This adds the final missing part to full CBCH support: * keep a tab on the current queue length for basic + extended CBCH * keep rate counters about the number of sent / transmitted SMSCB * send CBCH LOAD information via RSL to the BSC Change-Id: I7068c7937a60a900c40439115bb84dc3ee0d061f
2019-05-21cbch: Keep SMSCB queue length counterHarald Welte1-0/+1
This avoids having to iterate the list to count the number of elements. Change-Id: I72c47affeb87c9b898bc2290dc7ed113945f1805
2019-05-21cbch: Support Extended CBCHHarald Welte1-5/+9
The logic for Extended CBCH are the same as for the Basic CBCH, we just need to * duplicate our related state * parse the optional RSL_IE_SMSCB_CHAN_INDICATOR IE * start to send data on the Extended CBCH (TB=4..7) Change-Id: If2c6dc7da1e2185ab75fc957f8d305ad8db22429 Closes: OS#3535
2019-05-21cbch: Implement support for DEFAULT messageHarald Welte1-0/+1
The BSC can not only send us each to-be-sent message separately, but it can also configure a DEFAULT message, which is then to be sent instead of the NULL message. Let's add support for this Change-Id: I65a79215b54155d128c26d2ca11ff9ff3ed2cdba Closes: OS#4013
2019-03-18Make gsm_pchan2chan_nr() staticMax1-2/+0
It's only used inside of gsm_data_shared.c so let's mark it as such. Change-Id: I83f1783efe9dc07c8bf9901ebc94774aef1cd472
2018-11-22Drop unused functionMax1-3/+0
Change-Id: Ib1ecc6dcb243da27976ca0e90a83aefa18a65b76
2018-10-27Add OC-2G BTS sourcesOmar Ramadan1-1/+14
Change-Id: I327384fe5ac944dc3996a3f00932d6f1a10d5a35
2018-08-20measurement: make sure measurement interval end is detectedPhilipp Maier1-0/+2
the measurement interval end is detected by using the measurement indication that is related to the SACCH block as a trigger to start the computation. If the measurement indication for the SACCH gets lost because the block could not be received then the processing is not executed. This may cause wrong results or when it happens condecutively an overflow of the measurement sample buffer. - Store the frame number of the last received measurement indication - Use the stored frame number to check if an interval was crossed when the next measurement indication is received. If we detect that we missed the interval, catch up by running the computation and start the next interval. Change-Id: I3a86cd8185cc6b94258373fe929f0c2f1cf27cfa Related: OS#2975