aboutsummaryrefslogtreecommitdiffstats
path: root/src/conv.c
AgeCommit message (Collapse)AuthorFilesLines
2017-11-13Fix/Update copyright notices; Add SPDX annotationHarald Welte1-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
2017-06-23doxygen: unify use of \file across the boardNeels Hofmeyr1-7/+5
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
2017-06-23doxygen: enable AUTOBRIEF, drop \briefNeels Hofmeyr1-4/+4
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
2017-06-13core/conv/conv.c: drop useless assignmentVadim Yanitskiy1-1/+1
Change-Id: I8c3aa5ec100abacf93da1493aa134e42bf612206
2017-06-12update/extend doxygen documentationHarald Welte1-3/+2
It's a pity that even with this patch we still are fare away from having the whole API documented. However, at least we have a more solid foundation. Updates not only extend the documentation, but also make sure it is rendered properly in the doxygen HTML. Change-Id: I1344bd1a6869fb00de7c1899a8db93bba9bafce3
2017-04-11core/conv: implement optimized Viterbi decoderTom Tsou1-0/+9
Add a separate, faster convolution decoding implementation for rates up to N=4 and constraint lengths of K=5 and K=7, which covers the most GSM code uses. The decoding algorithm exploits the symmetric structure of the Viterbi add-compare-select (ACS) operation - commonly known as the ACS butterfly. This shift-register optimization can be found in the well-known text by Dave Forney. Forney, G.D., "The Viterbi Algorithm," Proc. of the IEEE, March 1973. Implementation is non-architecture specific and improves performance on x86 as well as ARM processors. Existing API is unchanged with optimized code being called internally for supported codes. The original code was relicensed under GPLv2-or-later with permission of copyright holder - Tom Tsou. Change-Id: I74d355274b4176a7d924f91ef3c96912ce338fb2
2013-02-15misc: Doxygen tweaks: fixed some typos and minor errorsKaterina Barone-Adesi1-1/+1
Doxygen generates quite a lot of warnings on libosmocore. Some of them are obvious typos - this patch aims to fix such low-hanging fruit.
2012-04-18doc: Fix the Doxygen section endingsSylvain Munaut1-1/+1
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2011-11-24core/conv: Add utility methods to know length of coded/decoded vectorsSylvain Munaut1-0/+34
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2011-11-24core/conv: Add support for other termination types (trunc & tail biting)Sylvain Munaut1-32/+94
Note that this breaks the ABI and the low level API. But it shouldn't break the high level API, nor the conv code definitions (because fields default to 0, and for new fields '0' is the previous behavior) Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2011-11-24core/conv: Really only consider error for non-zero soft valuesSylvain Munaut1-3/+6
This should have been done with 1dd7c84733b20ba776510369e9daba1a822c5b44 but somehow was missed and only applied to the 'finish' method and not the 'scan' method. Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2011-11-24core/conv: Minor documentation improvementsSylvain Munaut1-0/+1
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2011-11-09freebsd: Fixes for the compilation of libosmocore on FreeBSDHolger Hans Peter Freyther1-1/+3
alloca.h is not available on FreeBSD, use the default autoconf function to check for it, there is a complete list[1] of what to do for using alloca but let us see how far we get with this test. Include netinet/in.h for the IPv4 and IPv6 socket address. Check for dlopen in libraries and use this instead of linking -dl. [1] http://www.gnu.org/s/hello/manual/autoconf/Particular-Functions.html
2011-08-17some more doxygen work (include the notion of modules)Harald Welte1-0/+33
2011-04-28core/conv: Only consider error for non-zero soft valuesSylvain Munaut1-3/+6
If the input value is '0' it should not really affect the error since it's just an indecisive bit. We accept this either an internal '0' (generated via puncture) or as an external '0' (generated via an external puncturing scheme). A real received bit should never be '0', it's always gonna be closer to 1 or the other value ... (thanks to mad@auth.se on the ML for the idea) Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2011-04-26core/conv: Add some generic code for convolutional coding/decodingSylvain Munaut1-0/+493
Far from perfect but suits our need thus far. The viterbi with softbit input is quite cpu-intensive. Since most received bursts are often mostly error free, you could use a less cpu intensive algorithm (Fano ?) and with hard bit input. Then only switch to viterbi soft bit input if the channel is bad enough to justify it. Soft output is not implemented as its usefulness for the block coding is limited. Signed-off-by: Sylvain Munaut <tnt@246tNt.com>