summaryrefslogtreecommitdiffstats
path: root/src/coding/gsm0503_coding.c
Commit message (Collapse)AuthorAgeFilesLines
* coding: Always initialize bit counters in gsm0503_pdtch_egprs_decode().Alexander Chemeris2018-09-051-0/+5
| | | | | | | | Previsouly there were a lot of valid code paths which returned from the function before setting bit counters which led to bogus BER output in osmo-bts-trx logs when those code paths were hit. Change-Id: I4722cae3794ccbb12001113c991d9cf345a52a96
* coding: Correctly count bits when decoding EDGE bursts with MCS >= 7.Alexander Chemeris2018-09-051-1/+8
| | | | | | They consist of two blocks, so we should count both blocks. Change-Id: I560de192212dae4705054a1665726369b83d213a
* libosmocoding: clarify return values for TCH decoding functionsPau Espin Pedrol2018-07-191-4/+8
| | | | Change-Id: I7d6c61e6a1b5d1fae26f385b420ff55246c4b62f
* coding: Documentation typo fix.Alexander Chemeris2018-07-141-1/+1
| | | | Change-Id: I6ca873b3decaf50e7b79b5ab2269919c862a4fe0
* coding: Fix (E)GPRS BER calculation to correctly account for puncturing.Alexander Chemeris2018-07-141-5/+24
| | | | | | | | Previously we didn't take into account puncturing and BER was always around 30% for GPRS/EDGE bursts because of they use puncturing coding unlike "classical" GSM bursts. Change-Id: I9da22e7051522d06d923fcec3b63cbed8db93910
* coding: Add BER-reporting RACH decode functionsHarald Welte2018-02-261-4/+42
| | | | | | | | | | | | For all other decode operations we report the BER, but not for the RACH. This results in osmo-bts-trx not being able to report BER to the higher layers, which is possible on other BTS backends. Let's close this gap by introducing gsm0503_rach_ext_decode_ber() and gsm0503_rach_decode_ber() with the usual n_errors / n_bits_total arguments. Change-Id: I2b1926a37bde860dcfeb0d613eb55a71271928c5
* libosmocoding: use frame length definitions from codec.hVadim Yanitskiy2018-01-241-7/+0
| | | | | | | | Since commit e094157e125a70b9a384ba3cec01261624f4eb59, TCH frame length definitions were added to libosmocodec. No need to define them again. Change-Id: Id8c6132534e36ea1e368432bb259fd4f3a531f90
* libosmocoding: fix typo in library documentationVadim Yanitskiy2018-01-231-1/+1
| | | | Change-Id: I535d4eba5bad9094a1e9e662f32cd2bfac5b0cef
* Add functions for extended RACH codingMax2017-12-111-17/+63
| | | | | | | | | | | Add support for extended RACH (11 bit) according 3GPP TS 45.003 ยง5.3.2: * convolutional code with puncturing * encoding/decoding routines * corresponding tests Change-Id: I85a34a82d5cd39a594ee89d91a2338226066ab5d Related: OS#1548
* Fix/Update copyright notices; Add SPDX annotationHarald Welte2017-11-131-0/+2
| | | | | | | | Let's fix some erroneous/accidential references to wrong license, update copyright information where applicable and introduce a SPDX-License-Identifier to all files. Change-Id: I39af26c6aaaf5c926966391f6565fc5936be21af
* gsm0503_coding.c: Use majority vote in tch_efr_unreorder()Niro Mahasinghe2017-11-031-3/+3
| | | | | | | | | | | | The EFR coding contains some repeated bits. In case there are transmission errors, some bits may of course get corrupted. It looks like there's an improvement can be made by taking a majority vote on those "repetition bits", i.e. if 2 out of 3 bits are the same, then use that instead of expecting to match all 3 bits. See 3GPP TS 45.003 Section 3.1.1.3 for reference. Change-Id: I2a28a4d7fb82aed4d39fe8efeea702effdba3858
* gsm0503_coding.c: Fix tch_efr_unreorder() of one bitNiro Mahasinghe2017-11-031-1/+1
| | | | | | | | | | | | There's an error in tch_efr_unreorder() function in gsm0503_coding.c that results in increased RBER. One of the indices used by repetition bit recombining in this function doesn't match 3GPP TS 45.003 section 3.1.1.3, specifically "w(k) = s(223) for k = 231 and 232". This bug resulted in RBER even under ideal conditions, with no fading or AWGN present. Change-Id: I153da7bbc1bb3e01ed31eb5a7417e90841cfcde3
* doxygen: unify use of \file across the boardNeels Hofmeyr2017-06-231-3/+2
| | | | | | | | | | | | | | | | | Considering the various styles and implications found in the sources, edit scores of files to follow the same API doc guidelines around the doxygen grouping and the \file tag. Many files now show a short description in the generated API doc that was so far only available as C comment. The guidelines and reasoning behind it is documented at https://osmocom.org/projects/cellular-infrastructure/wiki/Guidelines_for_API_documentation In some instances, remove file comments and add to the corresponding group instead, to be shared among several files (e.g. bitvec). Change-Id: Ifa70e77e90462b5eb2b0457c70fd25275910c72b
* doxygen: enable AUTOBRIEF, drop \briefNeels Hofmeyr2017-06-231-38/+38
| | | | | | | | | | Especially for short descriptions, it is annoying to have to type \brief for every single API doc. Drop all \brief and enable the AUTOBRIEF feature of doxygen, which always takes the first sentence of an API doc as the brief description. Change-Id: I11a8a821b065a128108641a2a63fb5a2b1916e87
* Move NUM_BYTES macro to core libraryMax2017-06-191-1/+1
| | | | | | | | | It's universally useful so it make sense to have it in the shared core: * move macro from libosmocoding to libosmocore * add OSMO_ prefix * add doxygen docs Change-Id: I5386ba3e1f1cc153ba96c29dc71c9075a052aa02
* gsm0503_coding: Mark gsm0503_mcs_{ul,dl}_codes as constHarald Welte2017-06-121-6/+6
| | | | | | | The table describing the various MCS convolutional codes are constant data and should be marked as such. Change-Id: I4918521ee4572a67cbee5f9b49257fc5bfcde511
* Add doxygen documentation to libosmocodingHarald Welte2017-06-121-11/+249
| | | | | | | This adds the minimum amount of API documentation that we should have on all our code, particularly new code merged into a library. Change-Id: I526804f64313867913574e50e5b9e9205ad3aa74
* gsm0503_{coding,mapping}: Mark input arguments as 'const'Harald Welte2017-06-121-52/+51
| | | | | | | | It is generally our coding style to mark pointers to constant input data as 'const *'. For some reason the gsm0503 coding and mapping was not adhering to this, so let's bring it into compliance. Change-Id: Id8731d7ae6171dff94741b6ddbb95ab5f03bfd4e
* Distinguish between unsupported and invalid MCSMax2017-05-241-6/+9
| | | | | | | | | | | | | | | | | | Previously MCS0 was incorrectly set for some of type1 header values while according to 3GPP TS 44.060 it can only be set for type3. Fix this: * use EGPRS_MCS* constants instead of magic values * do not set MCS0 for reserved bits values in EGPRS header type1 * return different error codes for invalid and unsupported MCS as well as for other decoding errors Note: there's no need to adjust tests because MCS0 decoding is not supported but it's better to explicitly distinguish between unsupported and invalid values nevertheless. Change-Id: Id665d5c0cf50efa18b1bcbf4f17359418a380f9e Related: OS#1524
* libosmocoding: migrate transcoding routines from OsmoBTSVadim Yanitskiy2017-03-071-0/+2681
There are some projects, such as GR-GSM and OsmocomBB, which would benefit from using one shared implementation of GSM 05.03 code. So, this commit introduces a new sub-library called libosmocoding, which (for now) provides GSM, GPRS and EDGE transcoding routines, migrated from OsmoBTS. The original GSM 05.03 code from OsmoBTS was relicensed under GPLv2-or-later with permission of copyright holders (Andreas Eversberg, Alexander Chemeris and Tom Tsou). The following data types are currently supported: - xCCH - PDTCH (CS 1-4 and MCS 1-9) - TCH/FR - TCH/HR - TCH/AFS - RCH/AHS - RACH - SCH Change-Id: I0c3256b87686d878e4e716d12393cad5924fdfa1