aboutsummaryrefslogtreecommitdiffstats
path: root/tests/meas
AgeCommit message (Collapse)AuthorFilesLines
2023-10-04meas: lchan_meas_check_compute(): fix -SUB frame substitutionVadim Yanitskiy1-546/+369
The current implementation does substitute all missing meas samples with dummy -SUB measurements and then complain about exceeding amount of -SUB samples. Change-Id: Iab84f4b64b645486e2f115b0f82ee2f27eb992bc Related: OS#6168
2023-10-04meas: lchan_meas_sub_num_expected(): proper cmode enforcementVadim Yanitskiy1-695/+695
3GPP TS 45.008, section 8.3 defines TDMA Fn subsets, which shall always be transmitted when DTX is employed, only for: * TCH/F in signalling mode (but not for TCH/H), * TCH/H and TCH/F in data mode (CSD) [*], * TCH/FS, TCH/EFS, and TCH/HS. For channel modes employing AMR codec, in particular: * TCH/AFS, TCH/WFS, O-TCH/WFS, * TCH/AHS, O-TCH/AHS, O-TCH/WHS, there exist no fixed TDMA Fn subsets, but DTX is still permitted. For those we expect at least one SACCH frame, plus a variable number of speech frames (0 or more). [*] Handling of data modes is fixed in a follow-up patch. Change-Id: Ied477528d77871dd7e3b5b7b433a4e33bca40011 Related: OS#6168
2023-10-04meas: also match stderr logging for meas_testVadim Yanitskiy3-2/+8426
Change-Id: Id1ce154a65b194ce5fd9257c9c1b26d62aad1e0d Related: OS#6168
2023-04-11Merge gsm_network into gsm_bts_sm and place gsm_bts under itPau Espin Pedrol1-1/+7
This way the data model in TS 12.21 (Figure 1) is followed, where there's a BTS Site Manager containing one or more BTS. In our case we only support 1 BTS (cell) so far. Change-Id: Ideb0d458ec631008223f861cf8b46d09524a1a21 Related: OS#5994
2023-03-14tests: use -no-install libtool flag to avoid ./lt-* scriptsVadim Yanitskiy1-0/+1
This option should be used for any executables which are used only for testing, or for generating other files and are consequently never installed. By specifying this option, we are telling Libtool that the executable it links will only ever be executed from where it is built in the build tree. Libtool is usually able to considerably speed up the link process for such executables. Change-Id: I06d3d5ab1dd21400a72f76eecc508886617ef4c6
2022-09-12tests/*/Makefile.am: Fix typo in LIBOSMONETIF_CFLAGSPau Espin Pedrol1-1/+1
Change-Id: I29d52bdacdebc0495d11425399e796fa7aef3ac4
2022-09-06Depend on libosmo-netifPau Espin Pedrol1-0/+2
This library will be used soon when adding Osmux support to osmo-bts. Furthermore, it nice to have it available to make use of other general interfaces to create connections, primitives, RTP and AMR related functionalities, etc. Related: SYS#5987 Change-Id: I49db4de715065c083e1249cbeae6298d6868e229
2022-08-11Clean up osmo-bts-*/Makefile.amPau Espin Pedrol1-2/+16
Make them more easy to read and edit by splitting to one element per line when several elements are present. Change-Id: I24ecfa1167b806dcb3a5a0c00343299df842a78b
2022-05-10measurement: fix matching of SUB frames by TDMA FNVadim Yanitskiy1-37/+10
3GPP TS 45.008, section 8.3 defines active TDMA frame subsets for TCH channels, which shall always be transmitted even during the silence periods in DTX mode of operation. Each frame number listed in this section corresponds to a single burst. The Uplink measurements always contain TDMA FN of the *first* burst of a block, so it does not make sense to match the given FN against all FNs in the respective subset. Instead, we should match only specific FNs in accordance with the block mapping rules defined in 3GPP TS 45.002, section 7, table 1. In the active subset for TCH/F there is only one *complete* block starting at FN=52. Incomplete blocks {52, 53, 54, 55} and {56, 57, 58, 59} contain only 50% of the useful bits (partial SID) and thus ~50% BER, so we don't treat them as SUB. In the active subsets for TCH/H there are two *complete* blocks for each sub-slot. Their respective first FNs can be efficiently defined in a lookup table (see ts45008_dtx_tchh_fn_map[]). Note that we can use a single lookup table for both sub-slots of TCH/H because their TDMA FNs do not overlap. This patch fixes unexpected SUB-RxQual values > 0 on TCH channels with DTXu enabled and other than AMR (HR, FR, EFR) codec in use. Change-Id: I8cc3a755a8ad4dc564439aab2298c1e97ac0592d Related: SYS#5853
2022-05-10measurement: move SACCH detection to process_l1sap_meas_data()Vadim Yanitskiy1-32/+3
SACCH detection can be simplified by checking the RSL Link ID in process_l1sap_meas_data(). This eliminates the need to lookup the multiframe position by calling trx_sched_is_sacch_fn(), which definitely takes more CPU time than just L1SAP_IS_LINK_SACCH(). Calling trx_sched_is_sacch_fn() is still required for BTS models reporting the measurements via PRIM_MPH_INFO (legacy way), separately from the related Uplink blocks. This patch can be summarized as follows: * detect SACCH and set .is_sub=1 in process_l1sap_meas_data(); ** for PRIM_MPH_INFO use trx_sched_is_sacch_fn(); ** for PRIM_PH_DATA use L1SAP_IS_LINK_SACCH(); * do not call trx_sched_is_sacch_fn() from ts45008_83_is_sub(); * modify the unit test - test_ts45008_83_is_sub_single(); ** remove test_ts45008_83_is_sub_is_sacch(). Change-Id: I507e96ee34ac0f8b7a2a6f16a8c7f92bc467df60 Related: SYS#5853
2022-05-10tests/meas: improve test_ts45008_83_is_sub_is_sub()Vadim Yanitskiy1-44/+47
This function should also take lchan type into account. Change-Id: I6920a04e0a6c846647fa1b6b3a3c80bbd6617b99 Related: SYS#5853
2022-05-10tests/meas: improve logging in test_ts45008_83_is_sub_single()Vadim Yanitskiy1-8/+3
* Print unexpected TDMA FNs, each on a separate new line. * Do not abort() on mismatch, keep running. Change-Id: I32c104b139f32a39c8347de19de6ad7caec811de Related: SYS#5853
2022-05-10struct bts_ul_meas: reflect C/I units in field name s/c_i/ci_cb/Vadim Yanitskiy2-2/+2
Change-Id: If07f7f2a3ea996cbfc6a9087fa34402e38a7fd9f Related: SYS#5853
2022-04-15tests: use 'check_PROGRAMS' instead of 'noinst_PROGRAMS'Vadim Yanitskiy1-1/+1
When using 'check_PROGRAMS', autoconf/automake generates smarter Makefiles, so that the test programs are not being compiled during the normal 'make all', but only during 'make check'. Change-Id: I18ebb7395024a490da743c0bcb20959e6e9c7017
2021-09-13MS Power Control Loop: Feed UL C/I from correct measurement periodPau Espin Pedrol1-1/+1
As per 3GPP TS 45.008 sec 4.2, the ms_pwr received in L1 SACCH Header is the value used over previous measurement period. Hence, we need to feed the algo with the measurements taken over that same period. Related: SYS#4917 Change-Id: I13c0014fdd73f823ae5b1256c35bfa7d97cfa334
2021-05-11[VAMOS] Merge bts_trx_init() into gsm_bts_trx_alloc()Vadim Yanitskiy1-4/+0
gsm_bts_trx_alloc() already does initialize some fields of the allocated 'struct gsm_bts_trx' instance, and having an additional function for initializing the other fields makes no sense. Note that I intentionally didn't merge a call to bts_model_trx_init() into gsm_bts_trx_alloc(), because this would break some assumptions regarding the order of initialization and cause regressions. This also allows us to not call bts_model_trx_init() from tests. Change-Id: I4aefaf47b05a67ec0c4774c1ee7abcc95e04cc13
2021-02-15ta_control: make 'struct bts_ul_meas' parameters constVadim Yanitskiy1-1/+1
The only reason why it was not 'const' is that in lchan_new_ul_meas() we may need to overwrite 'ulm->is_sub'. This can still be done after memcpy()ing a new set of samples to the destination buffer. Change-Id: I0cabf75f8e0bf793c01225a4a8433e994c93f562 Related: OS#5024
2020-10-26measurement: fix expected number of measurementsPhilipp Maier1-0/+1
The logic in measurement.c checks the amount of collected measurement values. This is done for the total amount of measurements and the amount of SUB blocks measurements. The functions that return the expected number of measurement values currently do not take into account that the mode of a TCH/F or TCH/H has an effect on the number of expected SUB blocks. (In signalling channels all blocks count as SUB). Also a TCH/H in signalling mode generates only half the amount of measurements because the blocks in signalling mode are sepreded over 6 bursts instead of 4. This also needs to be taken into account. Change-Id: I01c7b6cc908c647263ab88f6b6281c4732f88779 Related: OS#4799
2020-06-18meas_tests: Avoid redefining all bts_model stubsPau Espin Pedrol2-86/+1
Change-Id: I47755e354a8cbcf34406de8bfc3985c70076fbf2
2020-04-25measurement: remove unecessary is_amr_sid_update parameterPhilipp Maier1-1/+1
The function ts45008_83_is_sub rougly decides if a frame is a SUB frame or not. This works by checking the frame number against against lookup tables. This works fine for codecs where the occurrence of SUB frames is fixed. However for AMR this is not the case as the DTX periods are dynamic. Here it is the responsibility of the lower layers (phy, frame decoding) to tag SUB frames early since making the decision later based on the frame number is not possible. The parameter is_amr_sid_update was probably added as a placeholder. It is set to falls by the callers of the function. Lets remove this parameter as a late decision if an AMR frame is a SUB frame will never work. Change-Id: I125d5ff592218a9e98130a6a7b6bbc6378ce4132 Related: OS#2978
2020-01-20measurment: write irssi_full_sum variable correctlyPhilipp Maier2-4/+4
The variable irssi_full_sum is not populated with a dummy value when we are not able to compute irssi_full_sum. Instead we mistakenly write MEASUREMENT_DUMMY_IRSSI to ber_full_sum, which is wrong Change-Id: I44d7cb48e3c68ab1b48c78cceb9381ce3e39d7e8 Related: OS#2987
2019-10-17Fix common misspellings and typosMartin Hauke1-1/+1
Change-Id: I403b9029f57fec3fdec2c1e2cbeac0f6eab53f24
2018-11-26bts_model: Allow TS connect to be processed asynchronouslyPau Espin Pedrol1-2/+2
This commit doesn't change internal logic of any model, only the API to be able to return result of connect TS asyncrhonously since some models (like osmo-bts-trx) require some time to process the result. This way PDCH ACT/DEACT (N)ACK can be sent once the result of this long process is known. For instance, nowadays in osmo-bts-trx we PDCH (DE)ACT ACK before getting the result from SETSLOT on the TRX iface. With this new API, bts_model_ts_connect doesn't return any value synchronously. Instead, it is expected to always end up calling cb_ts_connected with the return code from the TS activation process. 0 is considered a successs, while any other value is considered an error. Change-Id: Ie073a4397dd2f1a691968d12b15b8b42f1e1b0cf
2018-11-18bts: Allocate TRX for BTS dynamically, deprecate -tPau Espin Pedrol1-4/+13
No need to pass -t num_trx anymore to specify number of TRX to use. It is calculated based on dynamic allocation from VTY config. Using parameter -t is flagged as deprecated and is transformed into a NOOP por backward compatibility. As a result, TRX now are allocated after the BTS is allocated and initial config (pre-VTY) is applied. A new function bts_trx_init() is added, to set default config on each TRX during allocation and before setting VTY config on it. A new per BTS model function bts_model_trx_init() is added, to allow per model specific default configuration of each TRX. Change-Id: Iab1a754ab12a626759f9f90aa66f87bdce65ac9c
2018-09-13measurement: fix unit-test test_lchan_meas_process_measurementPhilipp Maier1-2/+5
The unit test that tests lchan_meas_process_measurement() only inputs test data to lchan_meas_process_measurement() but it is not checked if the interval end could be detected or not. - Add a return code to lchan_meas_process_measurement() - Ensure that the return code is checked in the unit-test Change-Id: I9e00ce683e8c44528804f65181dbfed9e85e3aed Related: OS#2975
2018-09-13measurement: remove missed interval end detectionPhilipp Maier2-587/+0
The function is_meas_overdue() was introduced to allow lchan_meas_process_measurement() to detect when the end of a measurement interval has been missed. Interval ends may be missed when the SACCH block of the related measurement interval gets lost. This is due to the fact that the SACCH block is used as a trigger to start the measurement result computation. The idea behind is_meas_overdue() was to check the frame number of the current measurement against the frame number of the previous measurement in order to see if there was a measurement for SACCH in between or not. Unfortunately SACCH and TCH Voice data is not necessarly processed in order by each phy. Depending on the phy there may be a jitter between the timing of SACCH and TCH Voice. Depending on the phy this jitter may be enough to mess up the timing so that we see a SACCH block earlier than expected. So we can not use the current frame number of TCH Voice measurements to check for missed SACCH blocks. Change-Id: Idfdbf64c1f965f35c12559b3995e2b746c74ee9e Related: OS#3502 Related: OS#2975
2018-08-30measurement: add SUB measurements in test_lchan_meas_process_measurementPhilipp Maier2-417/+66
The unit-test function test_lchan_meas_process_measurement() does not tag measurements as SUB. Lets make the test function more realistic by setting the is_sub flag at the correct positions. - Add SUB-Measurements in the correct position - Print log lines when adding measurements for sub, also fix minor bugs in the log printing. Change-Id: I25c361b21a406c0017ee586f0492c38f2e737e57 Related: OS#3502 Related: OS#2975
2018-08-30measurement: substitue missing measurementsPhilipp Maier3-56/+633
At the moment the measurement calculation of osmo-bts works by collecting the measurement reports the phy emits during a measurement interval. Normally one would expect a well defind fixed number here, but some phys will not emit a measurement report for lost blocks. Also blocks and their reports may get lost because of cpu overload etc. The computation that is executed at the end of the measurement interval computes over all received measurement. This evenutally means that missing measurements will not taken into account and the result will look better than it is in reality. To fix this, the interval must be of a defined size and in cases where less measurements as expected were collected, the algorithm must assume they have been received with a 100%BER and take that into account. However, all RSSI and TA/TOA related computations should continue to rely on actual measurement data. - make sure the algorithm works over a fixed interval - replace missing measurements with 100%BER - fix and extend unit-tests Change-Id: Idd30fc07603ad7d042c1fb416e247c3bf7d35c8b Related: OS#2987
2018-08-29cosmetic: test_is_meas_overdue() does not test is_meas_complete()Philipp Maier2-2/+2
The function is_meas_overdue() does not use is_meas_complete() anymore and therefore the related log output is wrong. Lets correct this. Change-Id: I9b7aa2f7a7c75bc3eed0c94b6ef9d17e7e36ce96 Related: OS#2975
2018-08-29measurement: fix is_meas_overdue() and increase testcoveragePhilipp Maier1-0/+216
The tests TC_meas_res_sign_sdcch4 and TC_meas_res_sign_sdcch8 are failing mainly because lchan->ts->nr is confused with lchan->nr. There is also a small problem with one of the formulas that compute fn_missed_end. - Add explainatory comment to the lookup tables on what the index is refering to - use lchan-nr instead of lchan->ts->nr when dealing with SDCCH/4/8 - simplfy and fix the formula - increase the testcoverage of the unit tests, give SDCCH/4/8 also a thorough check. Change-Id: I5d555a21003943bf720c53f3a611029ba45339a9 Related: OS#2975
2018-08-29measurement: add unit tests for ts45008_83_is_sub()Philipp Maier2-0/+158
The function ts45008_83_is_sub() is an integral part of the measurement calculation as it automatically tags incoming measurements as SUB measurements. This is important in the context of DTX. Unfortunately there is no unit test for this function yet. - Add unit test for ts45008_83_is_sub() Change-Id: Ia26774859f4bf31baee075896905079368bddd42 Related: OS#3502
2018-08-29measurement: add unit tests for is_meas_complete()Philipp Maier2-0/+181
We do not test is_meas_complete() individually yet, but it is an integral part of the measurement processings since this function decides where a measurement interval ends. - Add unit tests that test TCH/F, TCH/H, SDCCH/4 and STDCH/8 Change-Id: I8f89d9e7092cd65ba4d5c5649140692dcc20bdd6 Related: OS#2987
2018-08-28cosmetic: remove wrong commentPhilipp Maier1-3/+0
is_meas_overdue() does not use is_meas_complete() anymore. Change-Id: I5925fad161843c06e76543d9098c598fe9e72d68 Related: OS#2975
2018-08-28cosmetic: fix sourcecode formattingPhilipp Maier1-12/+12
Change-Id: Ia112af0b63478bdcf3cfab2537dc1ba08e03dfb1 Related: OS#2975
2018-08-20measurement: make sure measurement interval end is detectedPhilipp Maier2-0/+918
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
2018-08-16cosmetic: separate measurement testcase definitionsPhilipp Maier3-156/+153
the testcase definitions in meas_test.c that define different test situations for uplink measurement are quite large. Lets have them in a separate file so that the code meas_test.c is easier to maintain. - Move all mtc* and ulm* structs as well as the struct definitions to meas_testcase.h. Change-Id: I90139ec535056d2cea6de10e77f435d807ce496e Related: OS#2987
2018-06-29Add min/max/std-dev measurement reporting for TOA256Harald Welte2-0/+249
This patch adds extended processing of the high-resolution TOA256 measurement values. It adds reporting of the following values for each RSL MEAS REP for uplink measurements: * minimum TOA256 value during reporting period * maximum TOA256 value during reporting period * standard deviation of TOA256 value during reporting period Change-Id: Iea4a4781481f77c6163d82dcd71a844a5be87bf2
2018-04-04use osmo_init_logging2() with proper talloc ctxNeels Hofmeyr1-1/+1
Completely drop bts_log_init(), call osmo_init_logging2() directly instead: all callers of bts_log_init() passed NULL as category string, so all it ever did was call osmo_init_logging(). The bts_log_info is already declared in the .h. Here and there also define a proper talloc root context instead of using NULL. Change-Id: Ic049f77bef74123b95350bcae182a468e0086b9c
2018-01-25various Makefile.am: add missing CFLAGSAlexander Huemer1-1/+1
Change-Id: I0717aaaf062a7c3c8b35520fa837b51fd6aed47f
2018-01-25cosmetic: Makefile.am whitespaceAlexander Huemer1-1/+1
Change-Id: I480fbf85912de2ea3518a906b9edf23b1485e936
2018-01-10meas_test: fix header file referencesPhilipp Maier1-26/+1
The unittest module meas_test.c contains a lot of unused header files as the result of a cut and paste error made earlier. Also the reference to stdio.h is missing. remove all header file references that are not needed. add missing header reference to stdio.h Change-Id: I167be096ed25a86b1114de1ada955822a0b42856
2017-12-07cosmetic: meas_test: fix section commentPhilipp Maier2-2/+2
Change-Id: Id228620ccf5a40c8089ae1914d59b19e808ea151
2017-10-08Remove build dependency on legacy OpenBSCMax1-1/+1
* copy-paste gsm_data_shared.* from OpenBSC master * remove corresponding configure check and option * remove .deb dependency Actual refactoring with removal of unnecessary structures/parts, moving common OpenBSC/OsmoBSC parts into libraries etc. are left for further patches. Current patch will make coexistence with *BSC easier and will simplify our build infrastructure. Change-Id: I9f004fb5c4c1db29d4792dfd281d388c7063da13 Related: OS#1923
2017-08-14Fix build after recent gsm_bts_alloc() changeHarald Welte1-1/+1
In openbsc.git Change-Id I61c18a7f021fcb1ec00d34a745f4e3ab03416c2d we changed the gsm_bts_alloc() function signature to include a second argument (the BTS number). This broke omso-bts, and this commit is intended to make it build again. Change-Id: I7ef7654d48c1cfc7e4ecb0b771553ec0740ce2bf
2017-07-10measurement: fix measurment reportPhilipp Maier4-0/+3374
The end of the measurement reporting period is not aligned with the SACCH block where the results are reported. The tables that are used to detect the end of the measurement period are therefore wrong. The frame number of the SACCH block must be used and not the TDMA frame number (modulo 104) of the measurement reporing interval. The tables are oriented to the frame number of the first SACCH block, at the beginning of an interval. However, when a SACCH block is received it will always contain the result of the recently passed measurement reporting period. To match the tables, introduce another lookup table to remap each SACCH block that ends to the matching beginning block number. Change-Id: I1eef894e6f15b4449fc8926bebb118624efc7924