Commit Graph

57 Commits

Author SHA1 Message Date
Andreas Eversberg 6e2fd793ac Increase compiler warnings and fix them 2024-04-05 21:51:41 +02:00
Andreas Eversberg a20637825a Audio rework, new jitter buffer
Jitter buffer is now based on packets, not on samples. The frames are
dejittered in received form. After reading from jitter buffer, they are
decoded in correct order. If a frame is missing, it is concealed by
repeating audio.
2024-03-30 23:28:05 +01:00
Andreas Eversberg 3158c48365 Move from local to external osmo* libraries
src/libdebug -> libosmocore
src/libselect -> libosmocore
src/libtimer -> libosmocore
src/libosmocc -> libosmo-cc
src/libg711 -> libosmo-cc
2024-02-18 16:23:29 +01:00
Andreas Eversberg 28a297f97d Generate compador table only once when the application starts 2023-03-18 19:49:56 +01:00
Andreas Eversberg fd3b4dae50 FSK modulator improvements
1. Phase is now changed proportional to the time of the bit change, if
   it happens somewhere between samples. The amount of phase change per
   bit is now the same for all bits, no matter how many samples
   currently lay inside this bit.

2. IIR filter is removed, because it causes distortions. A cosine shape
   is now used to transit between phase change of F0 to F1 and vice
   versa. This limits the spectrum. This filter is optional.
2022-12-16 12:43:19 +01:00
Andreas Eversberg b60c844b4f DTMF: Now allows to give duration and pause for digit
Also the dtmf encoder will return less samples, if the digit(+pause)
ends, so that the caller call set the next digit to play seamlessly.

A reset function allows to clear the decoder states, to prevent glitches
when re-attaching to an interrupted stream.
2022-10-23 16:56:36 +02:00
Andreas Eversberg 2b7efedc48 Refactoring jitter buffer
Features are:
 * Packet based buffer
 * Random in, first out
 * Adaptive delay compensation (voice)
 * Fixed delay (data, optionally MODEM/FAX)
 * Interpolation of missing frames
 * Any sample size
2022-10-23 16:56:27 +02:00
Andreas Eversberg dde4113e61 Improvement of Goertzel filter. Using Hamming window now. Add test routine. 2021-12-08 17:24:04 +01:00
Andreas Eversberg c2f14834e5 Rename dbm0 (level) to speech (level)
In mobile communications we use speech level instead of milliwatts.
The deviation (FM) is always based on speech level, not on 1 milliwatt.
2019-12-08 17:24:36 +01:00
Andreas Eversberg 445af0c0a2 Add filter switch to FSK modulator 2019-11-29 15:58:32 +01:00
Andreas Eversberg 6dcc8baad4 Split FSK modem code into separate modulator and demodulator 2019-11-29 15:58:32 +01:00
Andreas Eversberg af4bcb1522 Remove useless debug lines 2019-08-26 21:10:33 +02:00
Andreas Eversberg e9a7f610ee Compandor: Remove unused option for unaffected level 2018-10-14 13:07:25 +02:00
Andreas Eversberg 56d8df5351 Rework of displaying supervisory info: NMT and AMPS
Using lower rate to show debug info of supervisory signal.

Display supervisory info for NMT and AMPS at measurement display screen.
2018-08-31 20:05:38 +02:00
Andreas Eversberg 6277753574 Minor debug message corrections 2018-02-15 08:00:18 +01:00
Andreas Eversberg 0b129d3c7f libdisplay: Removing dependency from libmobile 2018-02-15 08:00:14 +01:00
Andreas Eversberg d3385b498d NMT: Fixes on channel coding/handling 2018-02-15 08:00:12 +01:00
Andreas Eversberg 1a341f6b4e Restructure: Move debug from common code to 'libdebug' 2017-12-03 08:45:58 +01:00
Andreas Eversberg ed31a26eba Restructure: Move sample from common code to 'libsample' 2017-12-03 08:45:48 +01:00
Andreas Eversberg fd3a4d7ac2 Restructure: Move dtmf from common code to 'libdtmf' 2017-11-25 19:23:46 +01:00
Andreas Eversberg b605da1aff Restructure: Move timer from common code to 'libtimer' 2017-11-13 20:00:52 +01:00
Andreas Eversberg 486d2d5dbe NMT: Fixup assign traffic channel
dms_call state now belongs to transaction, so it is kept while switching
to traffic channel.
2017-11-11 09:35:44 +01:00
Andreas Eversberg ee3fbeb03b Split call control from built-in call console by using MNCC layer 2017-11-05 16:58:31 +01:00
Andreas Eversberg b32e0ab602 Implementation of RX level squelch (for A-Netz and B-Netz)
Use -S <dB> for setting RF level or use -S auto for auto level.

When squelch closes, audio is muted. If squelch is closed for some
seconds (depending on network), call is released. (RF loss condition)

The previous loss detection has been removed
2017-10-22 19:23:08 +02:00
Andreas Eversberg ba036de226 Add function to display measurements on screen
Use 'm' key to toggle display.
2017-10-12 19:46:30 +02:00
Andreas Eversberg 743d147d16 SDR: Turn TX power off if requested by network
The power level is ramped smoothly within 1 ms up or down.

R2000, AMPS and C-Netz turn off power when voice channel is not i use.

C-Netz turns off power between OgK timeslots.
2017-09-01 18:42:46 +02:00
Andreas Eversberg 534411d660 New common FSK implementation, replaces all individual implementations 2017-08-09 17:27:13 +02:00
Andreas Eversberg 6c64025717 Move FFSK modem from NMT to common code, so it can be used by other networks 2017-08-08 12:53:34 +02:00
Andreas Eversberg cd9cb9a107 Minor fix for NMT debug output 2017-07-15 12:45:20 +02:00
Andreas Eversberg 19afb792b5 NMT: Fix and adjustements to supervisory signal detection 2017-06-10 17:11:47 +02:00
Andreas Eversberg 50b2021d21 NMT 450: Support for other European counties, like Belgium, Czech, Slovakia 2017-06-10 13:08:51 +02:00
Andreas Eversberg f72c53757d B-Netz, NMT: Improved check for minimum required sample rate 2017-02-18 21:01:15 +01:00
Andreas Eversberg 7e45f556ce Correcting all levels and move all remaining integer samples to sample_t
The leves are based on the standards of each mobile network. They
are adjusted to the specified frequency deviation now.
2017-02-18 21:01:13 +01:00
Andreas Eversberg 7ea3bc188d Move samples of int16_t format to sample_t, that is of type double
This prepares the correction of all levels
2017-02-18 21:01:08 +01:00
Andreas Eversberg 538a959128 Indexing tables by casting index to unsigned integer only 2017-02-18 21:01:06 +01:00
Andreas Eversberg c5cf88ce57 Prepare for SDR: Add bandwidth and deviation info to sender instance 2017-02-18 21:00:47 +01:00
Andreas Eversberg 9ff8c3bb25 Rework on audio interface
Sound instance is now called audio instance and uses funcation pointers.
This gives a clean interface to be exchanged with other technologies,
linke SDR.
2017-02-18 21:00:45 +01:00
Andreas Eversberg d447be5e26 NMT: Rework on FSK process, no more requirement for special sample rates 2017-01-07 06:28:20 +01:00
Andreas Eversberg 7585f9c22d Add function to change dsp state, more debug with channel info 2016-12-09 16:34:33 +01:00
Andreas Eversberg 8cecf13b1a NMT: Add transaction handling 2016-08-20 09:57:05 +02:00
Andreas Eversberg f15c0dfea3 NMT: Fixing audio level of supervisory signal to match 0.3 KHz deviation 2016-08-03 12:03:52 +02:00
Andreas Eversberg 28ae3e300f NMT: Fixed multi-transceiver mode and show channel in various logs 2016-08-03 12:03:51 +02:00
Andreas Eversberg 6a5af9aeac Typos: acknowledgement -> acknowledgment signalling -> signaling 2016-07-24 12:31:08 +02:00
Andreas Eversberg 4745b29115 NMT: Caller ID support 2016-07-24 12:31:07 +02:00
Andreas Eversberg 64c829909b NMT / DMS: User data facility support (required for SMS) 2016-07-09 11:27:24 +02:00
Andreas Eversberg 2ee51022f4 Rename 'compander' to 'compandor' 2016-06-20 19:37:56 +02:00
Andreas Eversberg 26593ed034 NMT: fix minor bug 2016-06-12 16:11:20 +02:00
Andreas Eversberg c933250685 Add dsp mode change fuction to A and B Netz, fixed NMT 2016-06-12 16:11:20 +02:00
Andreas Eversberg 7aa2445b47 Move amplitude (level) debugging to debug.c 2016-05-15 20:37:06 +02:00
Andreas Eversberg 69ccdb99b5 NMT: Calibration of tone levels on TX and RX side 2016-05-13 09:37:03 +02:00