Common library for all Osmocom projects (libosmocore, libosmogsm, libosmovty, libosmogb, libosmosim, libosmousb, ...) https://osmocom.org/projects/libosmocore
Go to file
Vadim Yanitskiy 7790459c8e coding: fix decoding of AHS_SID_UPDATE frames (BER ~50%)
As was demonstrated in [1], there is a TCH/AHS specific problem in
libosmocoding causing unexpected BER ~50% in decoded AHS_SID_UPDATE
frames.  The reason is that A[H]S_SID_UPDATE employs quite tricky
interleaving algorithm, which is different from the algorithm used
by normal TCH/AHS speech frames or A[F]S_SID_UPDATE frames.

An AHS_SID_UPDATE frame consists of two halves (228 bits each):

  +---------+--------------------|---------+--------------------+
  | in-band |     SID marker     | in-band |     coded data     |
  +---------+--------------------|---------+--------------------+
  | 16 bits |      212 bits      | 16 bits |      212 bits      |

The first half contains coded in-band signalling data (16 bits) and
the identification marker (212 bits), which allows to detect that
it's an AHS_SID_UPDATE.  This half is carried by even bits of the
first two bursts and odd bits of the last two bursts.

The other half also contains the in-band data (16 bits), while the
remaining 212 bits contain encoded SID_UPDATE (212 bits).  This
half is carried by even bits of the last two bursts and odd bits
of the first two bursts.

Current implementation does not use odd bits of the first two
bursts at all, so buffer cB[] in gsm0503_tch_ahs_decode_dtx()
contains only 114 out of 228 bits.

This patch changes the logic, so that gsm0503_tch_ahs_decode_dtx()
would not split AHS_SID_UPDATE onto two frames anymore like its
TCH/AFS equivalent does, but attempt to deinterleave the second
half and attempt to decode the payload immediately.

Change-Id: I8686d895e96fa0e606c1898b6574cc80a8f46983
Related: [1] I434157e2091a306c039123cea08d84bd8533c937
Related: SYS#5853
2022-05-25 13:34:31 +00:00
contrib jenkins: Validate gsm 08.58 IEs are added to tlv_definition 2022-04-05 17:38:25 +02:00
debian debian/control: libosmocore-dev must depend on libsctp-dev and libusb-1.0-0-dev 2022-03-25 10:39:39 +01:00
doc merge_doc.xsl: move to osmo-gsm-manuals.git 2018-11-12 14:07:05 +01:00
include stats: Functions with no arguments should specify(void) 2022-05-08 09:57:04 +02:00
m4 Add code coverage support 2019-11-30 02:17:23 +00:00
src coding: fix decoding of AHS_SID_UPDATE frames (BER ~50%) 2022-05-25 13:34:31 +00:00
tapset support for stats static userspace probes via systemtap 2021-02-22 09:58:00 +01:00
tests coding: fix decoding of AHS_SID_UPDATE frames (BER ~50%) 2022-05-25 13:34:31 +00:00
utils osmo-arfcn: Fix false positive in gcc 12.1.0 2022-05-13 13:20:48 +02:00
.gitignore .gitignore: add utils/osmo-aka-verify binary 2021-11-17 01:54:16 +03:00
.gitreview add .gitreview 2016-05-19 06:39:13 +00:00
.mailmap Add .mailmap file for mapping mail addresses in shortlog 2016-08-08 13:12:17 +02:00
COPYING add GPL to project source 2010-02-21 09:21:30 +01:00
Doxyfile.codec.in Set HTML_TIMESTAMP to NO to make build reproducible 2019-07-17 11:03:44 +00:00
Doxyfile.coding.in doxygen: enable cross referencing everywhere 2019-02-04 16:43:57 +00:00
Doxyfile.core.in Set HTML_TIMESTAMP to NO to make build reproducible 2019-07-17 11:03:44 +00:00
Doxyfile.ctrl.in doxygen: enable cross referencing everywhere 2019-02-04 16:43:57 +00:00
Doxyfile.gb.in doxygen: enable cross referencing everywhere 2019-02-04 16:43:57 +00:00
Doxyfile.gsm.in Set HTML_TIMESTAMP to NO to make build reproducible 2019-07-17 11:03:44 +00:00
Doxyfile.vty.in Set HTML_TIMESTAMP to NO to make build reproducible 2019-07-17 11:03:44 +00:00
Makefile.am initial support for static userspace probes via systemtap 2021-02-03 13:55:40 +00:00
README.md README.md: Use https everywhere 2021-02-11 11:57:13 +01:00
TODO-RELEASE gsm: Introduce helper rach_tx_integer_raw2val() 2022-04-26 17:47:57 +02:00
configure.ac build: Disable libusb and libmnl for embedded builds 2022-04-29 07:39:43 +00:00
git-version-gen add git-version-gen magic to automatically generate package version 2010-03-23 00:30:19 +08:00
libosmocodec.pc.in clean-up pkg-config files: Make use of "Requires" as documented 2022-03-24 14:57:22 +00:00
libosmocoding.pc.in clean-up pkg-config files: Make use of "Requires" as documented 2022-03-24 14:57:22 +00:00
libosmocore.pc.in configure: Support libsctp < 1.0.17 without libsctp.pc 2022-03-29 11:59:51 +02:00
libosmoctrl.pc.in clean-up pkg-config files: Make use of "Requires" as documented 2022-03-24 14:57:22 +00:00
libosmogb.pc.in libosmo{gb,vty}.pc.in: Add talloc to 'Requires' 2022-03-25 09:45:42 +00:00
libosmogsm.pc.in clean-up pkg-config files: Make use of "Requires" as documented 2022-03-24 14:57:22 +00:00
libosmosim.pc.in clean-up pkg-config files: Make use of "Requires" as documented 2022-03-24 14:57:22 +00:00
libosmousb.pc.in clean-up pkg-config files: Make use of "Requires" as documented 2022-03-24 14:57:22 +00:00
libosmovty.pc.in libosmo{gb,vty}.pc.in: Add talloc to 'Requires' 2022-03-25 09:45:42 +00:00
osmo-release.mk Fixup severe build performance issues 2017-10-04 16:26:37 +02:00
osmo-release.sh osmo-release.sh: Use variable containing bumpversion path everywhere 2022-01-05 23:09:17 +00:00

README.md

libosmocore - set of Osmocom core libraries

This repository contains a set of C-language libraries that form the core infrastructure of many Osmocom Open Source Mobile Communications projects.

Historically, a lot of this code was developed as part of the OpenBSC project, but which are of a more generic nature and thus useful to (at least) other programs that we develop in the sphere of Free Software / Open Source mobile communications.

There is no clear scope of it. We simply move all shared code between the various Osmocom projects in this library to avoid code duplication.

The libosmocore.git repository build multiple libraries:

  • libosmocore contains some general-purpose functions like select-loop abstraction, message buffers, timers, linked lists
  • libosmovty contains routines related to the interactive command-line interface called VTY
  • libosmogsm contains definitions and helper code related to GSM protocols
  • libosmoctrl contains a shared implementation of the Osmocom control interface
  • libosmogb contains an implementation of the Gb interface with its NS/BSSGP protocols
  • libosmocodec contains an implementation of GSM voice codecs
  • libosmocoding contains an implementation of GSM channel coding
  • libosmosim contains infrastructure to interface SIM/UICC/USIM cards

Homepage

The official homepage of the project is https://osmocom.org/projects/libosmocore/wiki/Libosmocore

GIT Repository

You can clone from the official libosmocore.git repository using

git clone git://git.osmocom.org/libosmocore.git

There is a cgit interface at https://git.osmocom.org/libosmocore/

Documentation

Doxygen-generated API documentation is generated during the build process, but also available online for each of the sub-libraries at https://ftp.osmocom.org/api/latest/libosmocore/

Mailing List

Discussions related to libosmocore are happening on the openbsc@lists.osmocom.org mailing list, please see https://lists.osmocom.org/mailman/listinfo/openbsc for subscription options and the list archive.

Please observe the Osmocom Mailing List Rules when posting.

Contributing

Our coding standards are described at https://osmocom.org/projects/cellular-infrastructure/wiki/Coding_standards

We us a gerrit based patch submission/review process for managing contributions. Please see https://osmocom.org/projects/cellular-infrastructure/wiki/Gerrit for more details

The current patch queue for libosmocore can be seen at https://gerrit.osmocom.org/#/q/project:libosmocore+status:open