html/ 0000755 0001750 0001750 00000000000 15076777151 011022 5 ustar build build html/group__gsmtap.html 0000644 0001750 0001750 00000017314 15076777151 014564 0 ustar build build
|
osmo-gmr 0.2.104-2b98
Osmocom GMR-1
|
Files | |
| file | gsmtap.h |
| Osmocom GMR-1 GSMtap helpers header. | |
| file | gsmtap.c |
| Osmocom GMR-1 GSMtap helpers header. | |
Functions | |
| struct msgb * | gmr1_gsmtap_makemsg (uint8_t chan_type, uint32_t fn, uint8_t tn, const uint8_t *l2, int len) |
| Helper to build GSM tap message with GMR-1 payload. More... | |
| struct msgb * gmr1_gsmtap_makemsg | ( | uint8_t | chan_type, |
| uint32_t | fn, | ||
| uint8_t | tn, | ||
| const uint8_t * | l2, | ||
| int | len | ||
| ) |
Helper to build GSM tap message with GMR-1 payload.
| [in] | chan_type | Type of channel (one of GSMTAP_GMR1_xxx) |
| [in] | l2 | Packet of L2 data to encapsulate |
| [in] | len | Length of the l2 data in bytes |
|
osmo-gmr 0.2.104-2b98
Osmocom GMR-1
|
|
osmo-gmr 0.2.104-2b98
Osmocom GMR-1
|
Osmocom GMR-1 interleaving header. More...
Go to the source code of this file.
Data Structures | |
| struct | gmr1_interleaver |
| GMR1 inter-burst (de)interleaver state. More... | |
Functions | |
| void | gmr1_interleave_intra (void *out, const void *in, int N) |
| GMR-1 intra burst inteleaver. More... | |
| void | gmr1_deinterleave_intra (void *out, const void *in, int N) |
| GMR-1 intra burst de-interleaver. More... | |
| int | gmr1_interleaver_init (struct gmr1_interleaver *il, int N, int K) |
| GMR-1 inter burst interleaver initializer. More... | |
| void | gmr1_interleaver_fini (struct gmr1_interleaver *il) |
| GMR-1 inter burst interleaver cleanup. More... | |
| void | gmr1_interleave_inter (struct gmr1_interleaver *il, void *bits_epp, void *bits_ep) |
| GMR-1 inter burst interleaver. More... | |
| void | gmr1_deinterleave_inter (struct gmr1_interleaver *il, void *bits_ep, void *bits_epp) |
| GMR-1 inter burst de-interleaver. More... | |
Osmocom GMR-1 interleaving header.
|
osmo-gmr 0.2.104-2b98
Osmocom GMR-1
|
Osmocom GMR-1 GSMtap helpers header. More...
#include <stdint.h>Go to the source code of this file.
Functions | |
| struct msgb * | gmr1_gsmtap_makemsg (uint8_t chan_type, uint32_t fn, uint8_t tn, const uint8_t *l2, int len) |
| Helper to build GSM tap message with GMR-1 payload. More... | |
Osmocom GMR-1 GSMtap helpers header.
|
osmo-gmr 0.2.104-2b98
Osmocom GMR-1
|
Files | |
| file | dkab.h |
| Osmocom GMR-1 DKABs bursts header. | |
| file | dkab.c |
| Osmocom GMR-1 DKABs bursts implementation. | |
Macros | |
| #define | GMR1_DKAB_SYMS (39*3) |
| #define | DKAB_PWR_RATIO_THRESHOLD 10.0f |
| Ratio between peak power and valley power for DKAB detection. | |
Functions | |
| int | gmr1_dkab_demod (struct osmo_cxvec *burst_in, int sps, float freq_shift, int p, sbit_t *ebits, float *toa_p) |
| All-in-one finding and demodulation of DKAB bursts. More... | |
| int gmr1_dkab_demod | ( | struct osmo_cxvec * | burst_in, |
| int | sps, | ||
| float | freq_shift, | ||
| int | p, | ||
| sbit_t * | ebits, | ||
| float * | toa_p | ||
| ) |
All-in-one finding and demodulation of DKAB bursts.
| [in] | burst_in | Complex signal of the burst |
| [in] | sps | Oversampling used in the input complex signal |
| [in] | freq_shift | Frequency shift to pre-apply to burst_in (rad/sym) |
| [in] | p | DKAB position |
| [out] | ebits | Encoded soft bits return array |
| [out] | toa_p | Pointer to TOA return variable |
burst_in is expected to be longer than necessary. Any extra length will be used as 'search window' to find proper alignement. Good practice is to have a few samples too much in front and a few samples after the expected TOA.
References M_PIf, and osmo_cxvec_sig_normalize().
|
osmo-gmr 0.2.104-2b98
Osmocom GMR-1
|
Osmocom GMR-1 pi2-CBPSK, pi4-CBPSK and pi4-CQPSK modulation support implementation. More...
#include <complex.h>#include <math.h>#include <errno.h>#include <stdint.h>#include <stdlib.h>#include <stdio.h>#include <string.h>#include <osmocom/core/bits.h>#include <osmocom/dsp/cxvec.h>#include <osmocom/dsp/cxvec_math.h>#include <osmocom/gmr1/sdr/defs.h>#include <osmocom/gmr1/sdr/pi4cxpsk.h>Functions | |
| int | gmr1_pi4cxpsk_demod (struct gmr1_pi4cxpsk_burst *burst_type, struct osmo_cxvec *burst_in, int sps, float freq_shift, sbit_t *ebits, int *sync_id_p, float *toa_p, float *freq_err_p) |
| All-in-one pi4-CxPSK demodulation method. More... | |
| int | gmr1_pi4cxpsk_detect (struct gmr1_pi4cxpsk_burst **burst_types, float e_toa, struct osmo_cxvec *burst_in, int sps, float freq_shift, int *bt_id_p, int *sync_id_p, float *toa_p) |
| Try to identify burst type by matching training sequences. More... | |
| int | gmr1_pi4cxpsk_mod_order (struct osmo_cxvec *burst_in, int sps, float freq_shift) |
| Estimates modulation order by comparing power of x^2 vs x^4. More... | |
| int | gmr1_pi4cxpsk_mod (struct gmr1_pi4cxpsk_burst *burst_type, ubit_t *ebits, int sync_id, struct osmo_cxvec *burst_out) |
| Modulates (currently at 1 sps) More... | |
Variables | |
| struct gmr1_pi4cxpsk_modulation | gmr1_pi2cbpsk |
| pi2-CBPSK modulation description More... | |
| struct gmr1_pi4cxpsk_modulation | gmr1_pi4cbpsk |
| pi4-CBPSK modulation description More... | |
| struct gmr1_pi4cxpsk_modulation | gmr1_pi4cqpsk |
| pi4-CQPSK modulation description More... | |
Osmocom GMR-1 pi2-CBPSK, pi4-CBPSK and pi4-CQPSK modulation support implementation.
|
osmo-gmr 0.2.104-2b98
Osmocom GMR-1
|
pi4-CxPSK Data segment description More...
#include <pi4cxpsk.h>
Data Fields | |
| int | pos |
| Data chunk position | |
| int | len |
| Data chunk length | |
pi4-CxPSK Data segment description
|
osmo-gmr 0.2.104-2b98
Osmocom GMR-1
|
Files | |
| file | defs.h [code] |
| Osmocom GMR-1 SDR global definitions. | |
| file | dkab.h [code] |
| Osmocom GMR-1 DKABs bursts header. | |
| file | fcch.h [code] |
| Osmocom GMR-1 FCCH bursts header. | |
| file | nb.h [code] |
| Osmocom GMR-1 Normal bursts header. | |
| file | pi4cxpsk.h [code] |
| Osmocom GMR-1 pi2-CBPSK, pi4-CBPSK and pi4-CQPSK modulation support header. | |
|
osmo-gmr 0.2.104-2b98
Osmocom GMR-1
|
Osmocom GMR-1 pi2-CBPSK, pi4-CBPSK and pi4-CQPSK modulation support header. More...
Go to the source code of this file.
Data Structures | |
| struct | gmr1_pi4cxpsk_symbol |
| pi4-CxPSK symbol description More... | |
| struct | gmr1_pi4cxpsk_modulation |
| pi4-CxPSK modulation description More... | |
| struct | gmr1_pi4cxpsk_sync |
| pi4-CxPSK Synchronization sequence segment description More... | |
| struct | gmr1_pi4cxpsk_data |
| pi4-CxPSK Data segment description More... | |
| struct | gmr1_pi4cxpsk_burst |
| pi4-CxPSK Burst format description More... | |
Macros | |
| #define | GMR1_MAX_SYM_EBITS 2 |
| Max e bits in a symbol. | |
| #define | GMR1_MAX_SYNC 4 |
| Max diff. sync seqs | |
| #define | GMR1_MAX_SYNC_SYMS 32 |
| Max sym in a sync seq | |
Functions | |
| int | gmr1_pi4cxpsk_demod (struct gmr1_pi4cxpsk_burst *burst_type, struct osmo_cxvec *burst_in, int sps, float freq_shift, sbit_t *ebits, int *sync_id_p, float *toa_p, float *freq_err_p) |
| All-in-one pi4-CxPSK demodulation method. More... | |
| int | gmr1_pi4cxpsk_detect (struct gmr1_pi4cxpsk_burst **burst_types, float e_toa, struct osmo_cxvec *burst_in, int sps, float freq_shift, int *bt_id_p, int *sync_id_p, float *toa_p) |
| Try to identify burst type by matching training sequences. More... | |
| int | gmr1_pi4cxpsk_mod_order (struct osmo_cxvec *burst_in, int sps, float freq_shift) |
| Estimates modulation order by comparing power of x^2 vs x^4. More... | |
| int | gmr1_pi4cxpsk_mod (struct gmr1_pi4cxpsk_burst *burst_type, ubit_t *ebits, int sync_id, struct osmo_cxvec *burst_out) |
| Modulates (currently at 1 sps) More... | |
Variables | |
| struct gmr1_pi4cxpsk_modulation | gmr1_pi2cbpsk |
| pi2-CBPSK modulation description | |
| struct gmr1_pi4cxpsk_modulation | gmr1_pi4cbpsk |
| pi4-CBPSK modulation description | |
| struct gmr1_pi4cxpsk_modulation | gmr1_pi4cqpsk |
| pi4-CQPSK modulation description | |
Osmocom GMR-1 pi2-CBPSK, pi4-CBPSK and pi4-CQPSK modulation support header.
|
osmo-gmr 0.2.104-2b98
Osmocom GMR-1
|
|
osmo-gmr 0.2.104-2b98
Osmocom GMR-1
|
Osmocom GMR-1 FACCH9 channel coding implementation. More...
#include <stdint.h>#include <string.h>#include <osmocom/core/bits.h>#include <osmocom/core/conv.h>#include <osmocom/core/crc16gen.h>#include <osmocom/gmr1/l1/conv.h>#include <osmocom/gmr1/l1/crc.h>#include <osmocom/gmr1/l1/interleave.h>#include <osmocom/gmr1/l1/scramb.h>Functions | |
| void | gmr1_facch9_encode (ubit_t *bits_e, const uint8_t *l2, const ubit_t *bits_sacch, const ubit_t *bits_status, const ubit_t *ciph) |
| Stateless GMR-1 FACCH9 channel coder. More... | |
| int | gmr1_facch9_decode (uint8_t *l2, sbit_t *bits_sacch, sbit_t *bits_status, const sbit_t *bits_e, const ubit_t *ciph, int *conv_rv) |
| Stateless GMR-1 FACCH9 channel decoder. More... | |
Osmocom GMR-1 FACCH9 channel coding implementation.
|
osmo-gmr 0.2.104-2b98
Osmocom GMR-1
|
Osmocom GMR-1 A5 ciphering algorithm implementation. More...
#include <string.h>#include <stdint.h>#include <osmocom/core/bits.h>#include <osmocom/gmr1/l1/a5.h>Macros | |
| #define | A51_R1_LEN 19 |
| #define | A51_R2_LEN 22 |
| #define | A51_R3_LEN 23 |
| #define | A51_R4_LEN 17 |
| #define | A51_R1_MASK ((1<<A51_R1_LEN)-1) |
| #define | A51_R2_MASK ((1<<A51_R2_LEN)-1) |
| #define | A51_R3_MASK ((1<<A51_R3_LEN)-1) |
| #define | A51_R4_MASK ((1<<A51_R4_LEN)-1) |
| #define | A51_R1_TAPS 0x072000 /* x^19 + x^18 + x^17 + x^14 + 1 */ |
| #define | A51_R2_TAPS 0x311000 /* x^22 + x^21 + x^17 + x^13 + 1 */ |
| #define | A51_R3_TAPS 0x660000 /* x^23 + x^22 + x^19 + x^18 + 1 */ |
| #define | A51_R4_TAPS 0x013100 /* x^17 + x^14 + x^13 + x^9 + 1 */ |
| #define | A51_BIT(r, n) (1 << n) |
| #define | MAJ(rnum, rname, a, b, c) |
Functions | |
| void | gmr1_a5 (int n, uint8_t *key, uint32_t fn, int nbits, ubit_t *dl, ubit_t *ul) |
| Main method to generate a A5/x cipher stream. More... | |
| void | gmr1_a5_1 (uint8_t *key, uint32_t fn, int nbits, ubit_t *dl, ubit_t *ul) |
| Generate a GMR-1 A5/1 cipher stream. More... | |
Osmocom GMR-1 A5 ciphering algorithm implementation.
| #define MAJ | ( | rnum, | |
| rname, | |||
| a, | |||
| b, | |||
| c | |||
| ) |
|
osmo-gmr 0.2.104-2b98
Osmocom GMR-1
|
|
osmo-gmr 0.2.104-2b98
Osmocom GMR-1
|
Files | |
| file | a5.h [code] |
| Osmocom GMR-1 A5 ciphering algorithm header. | |
| file | bcch.h [code] |
| Osmocom GMR-1 BCCH channel coding header. | |
| file | ccch.h [code] |
| Osmocom GMR-1 CCCH (PCH/AGCH) channel coding header. | |
| file | conv.h [code] |
| Osmocom GMR-1 convolutional coding header. | |
| file | crc.h [code] |
| Osmocom GMR-1 CRC header. | |
| file | defs.h [code] |
| Osmocom GMR-1 L1 global definitions. | |
| file | facch3.h [code] |
| Osmocom GMR-1 FACCH3 channel coding header. | |
| file | facch9.h [code] |
| Osmocom GMR-1 FACCH9 channel coding header. | |
| file | interleave.h [code] |
| Osmocom GMR-1 interleaving header. | |
| file | punct.h [code] |
| Osmocom GMR-1 puncturing header. | |
| file | rach.h [code] |
| Osmocom GMR-1 RACH channel coding header. | |
| file | scramb.h [code] |
| Osmocom GMR-1 scrambling header. | |
| file | tch3.h [code] |
| Osmocom GMR-1 TCH3 channel coding header. | |
| file | tch9.h [code] |
| Osmocom GMR-1 TCH9 channel coding header. | |
| file | xch_dc12.h [code] |
| Osmocom GMR-1 xCH over DC12 channel coding header. | |
|
osmo-gmr 0.2.104-2b98
Osmocom GMR-1
|
Files | |
| file | ccch.h |
| Osmocom GMR-1 CCCH (PCH/AGCH) channel coding header. | |
| file | ccch.c |
| Osmocom GMR-1 CCCH (PCH/AGCH) channel coding implementation. | |
Functions | |
| void | gmr1_ccch_encode (ubit_t *bits_e, const uint8_t *l2) |
| Stateless GMR-1 CCCH channel coder. More... | |
| int | gmr1_ccch_decode (uint8_t *l2, const sbit_t *bits_e, int *conv_rv) |
| Stateless GMR-1 CCCH channel decoder. More... | |
| int gmr1_ccch_decode | ( | uint8_t * | l2, |
| const sbit_t * | bits_e, | ||
| int * | conv_rv | ||
| ) |
Stateless GMR-1 CCCH channel decoder.
| [out] | l2 | L2 packet data |
| [in] | bits_e | Data bits of a burst |
| [out] | conv_rv | Return of the convolutional decode (can be NULL) |
L2 data is 24 byte long, and bits_e is a 432 soft bit array unmapped from a burst.
References gmr1_deinterleave_intra(), and gmr1_scramble_sbit().
| void gmr1_ccch_encode | ( | ubit_t * | bits_e, |
| const uint8_t * | l2 | ||
| ) |
Stateless GMR-1 CCCH channel coder.
| [out] | bits_e | Data bits of a burst |
| [in] | l2 | L2 packet data |
L2 data is 24 byte long, and bits_e is a 432 hard bit array to be mapped on a burst.
References gmr1_crc16.
|
osmo-gmr 0.2.104-2b98
Osmocom GMR-1
|
Files | |
| file | ambe.c |
| Osmocom GMR-1 AMBE internal API. | |
| file | frame.c |
| Osmocom GMR-1 AMBE speech parameters to/from frame. | |
| file | math.c |
| Osmocom GMR-1 AMBE vocoder math functions. | |
| file | private.h |
| Osmocom GMR-1 AMBE vocoder private header. | |
| file | synth.c |
| Osmocom GMR-1 AMBE vocoder speech synthesis. | |
| file | tables.c |
| Osmocom GMR-1 AMBE vocoder tables. | |
| file | tone.c |
| Osmocom GMR-1 AMBE vocoder tone frames handling. | |
Data Structures | |
| struct | ambe_raw_params |
| AMBE encoded frame raw parameters. More... | |
| struct | ambe_subframe |
| AMBE subframe parameters. More... | |
| struct | ambe_synth |
| AMBE synthesizer state. More... | |
| struct | ambe_decoder |
| AMBE decoder state. More... | |
| struct | tone_desc |
| Structure describing a dual-frequency tone. More... | |
Macros | |
| #define | AMBE_RATE 8000 |
| AMBE sample rate (Hz) | |
| #define | M_PIf (3.141592653589793f) |
| Value of pi as a float. | |
Enumerations | |
| enum | ambe_frame_type { AMBE_SPEECH , AMBE_SILENCE , AMBE_TONE } |
| AMBE possible frame types. More... | |
Functions | |
| void | ambe_decode_init (struct ambe_decoder *dec) |
| Initializes decoder state. More... | |
| void | ambe_decode_fini (struct ambe_decoder *dec) |
| Release all resources associated with a decoder. More... | |
| int | ambe_decode_frame (struct ambe_decoder *dec, int16_t *audio, int N, const uint8_t *frame, int bad) |
| Decodes an AMBE frame to audio. More... | |
| int | ambe_decode_dtx (struct ambe_decoder *dec, int16_t *audio, int N) |
| Generates audio for DTX period. More... | |
| void | ambe_frame_unpack_raw (struct ambe_raw_params *rp, const uint8_t *frame) |
| Unpack a frame into its raw encoded parameters. More... | |
| void | ambe_frame_decode_params (struct ambe_subframe *sf, struct ambe_subframe *sf_prev, struct ambe_raw_params *rp) |
| Decodes the speech parameters for both subframes from raw params. More... | |
| void | ambe_subframe_expand (struct ambe_subframe *sf) |
| Expands the decoded subframe params to prepare for synthesis. More... | |
| float | cosf_fast (float angle) |
| Fast Cosinus approximation using a simple table. More... | |
| float | sinf_fast (float angle) |
| Fast Sinus approximation using a simple table. More... | |
| void | ambe_fdct (float *out, float *in, int N, int M) |
| Forward Discrete Cosine Transform (fDCT) More... | |
| void | ambe_idct (float *out, float *in, int N, int M) |
| Inverse Discrete Cosine Transform (iDCT) More... | |
| void | ambe_fdft_fc (float *out_i, float *out_q, float *in, int N, int M) |
| Forward Discrete Fourrier Transform (float->complex) More... | |
| void | ambe_idft_cf (float *out, float *in_i, float *in_q, int N, int M) |
| Inverse Discret Fourrier Transform (complex->float) More... | |
| void | ambe_synth_init (struct ambe_synth *synth) |
| Initialized Synthesizer state. More... | |
| void | ambe_synth_enhance (struct ambe_synth *synth, struct ambe_subframe *sf) |
| Apply the spectral magnitude enhancement on the subframe. More... | |
| void | ambe_synth_audio (struct ambe_synth *synth, int16_t *audio, struct ambe_subframe *sf, struct ambe_subframe *sf_prev) |
| Generate audio for a given subframe. More... | |
| int | ambe_decode_tone (struct ambe_decoder *dec, int16_t *audio, int N, const uint8_t *frame) |
| Decodes an AMBE tone frame. More... | |
Variables | |
| const uint8_t | ambe_hpg_tbl [48][4] |
| Number of harmonics per group for a given L (starts at L=9) | |
| const float | ambe_gain_tbl [256][2] |
| Gain (subframe 0, subframe 1) | |
| const uint16_t | ambe_v_uv_tbl [64] |
| V/UV decisions (subframe 0 = low byte. MSBs = low freq) | |
| const float | ambe_prba12_tbl [128][2] |
| PRBA[1:2]. | |
| const float | ambe_prba34_tbl [64][2] |
| PRBA[3:4]. | |
| const float | ambe_prba57_tbl [128][3] |
| PRBA[5:7]. | |
| const float | ambe_hoc0_tbl [128][4] |
| HOC for 1st frequency block. | |
| const float | ambe_hoc1_tbl [64][4] |
| HOC for 2nd frequency block. | |
| const float | ambe_hoc2_tbl [64][4] |
| HOC for 3rd frequency block. | |
| const float | ambe_hoc3_tbl [64][4] |
| HOC for last frequency block. | |
| const float | ambe_sf0_interp_tbl [4] |
| Interpolation ratios for subframe 0 magnitude prediction. | |
| const float | ambe_sf0_perr14_tbl [64][4] |
| Prediction Error [1:4] for subframe 0. | |
| const float | ambe_sf0_perr58_tbl [32][4] |
| Prediction Error [5:8] for subframe 0. | |
| const uint8_t | ambe_hpg_tbl [48][4] |
| Number of harmonics per group for a given L (starts at L=9) | |
| const float | ambe_gain_tbl [256][2] |
| Gain (subframe 0, subframe 1) | |
| const uint16_t | ambe_v_uv_tbl [64] |
| V/UV decisions (subframe 0 = low byte. MSBs = low freq) More... | |
| const float | ambe_prba12_tbl [128][2] |
| PRBA[1:2]. | |
| const float | ambe_prba34_tbl [64][2] |
| PRBA[3:4]. | |
| const float | ambe_prba57_tbl [128][3] |
| PRBA[5:7]. | |
| const float | ambe_hoc0_tbl [128][4] |
| HOC for 1st frequency block. | |
| const float | ambe_hoc1_tbl [64][4] |
| HOC for 2nd frequency block. | |
| const float | ambe_hoc2_tbl [64][4] |
| HOC for 3rd frequency block. | |
| const float | ambe_hoc3_tbl [64][4] |
| HOC for last frequency block. | |
| const float | ambe_sf0_interp_tbl [4] |
| Interpolation ratios for subframe 0 magnitude prediction. More... | |
| const float | ambe_sf0_perr14_tbl [64][4] |
| Prediction Error [1:4] for subframe 0. | |
| const float | ambe_sf0_perr58_tbl [32][4] |
| Prediction Error [5:8] for subframe 0. | |
| enum ambe_frame_type |
| int ambe_decode_dtx | ( | struct ambe_decoder * | dec, |
| int16_t * | audio, | ||
| int | N | ||
| ) |
Generates audio for DTX period.
| [in] | dec | Decoder state structure |
| [out] | audio | Output audio buffer |
| [in] | N | number of audio samples to produce (152..168) |
Referenced by gmr1_codec_decode_dtx().
| void ambe_decode_fini | ( | struct ambe_decoder * | dec | ) |
Release all resources associated with a decoder.
| [in] | dec | Decoder state structure |
Referenced by gmr1_codec_release().
| int ambe_decode_frame | ( | struct ambe_decoder * | dec, |
| int16_t * | audio, | ||
| int | N, | ||
| const uint8_t * | frame, | ||
| int | bad | ||
| ) |
Decodes an AMBE frame to audio.
| [in] | dec | Decoder state structure |
| [out] | audio | Output audio buffer |
| [in] | N | number of audio samples to produce (152..168) |
| [in] | frame | Frame data (10 bytes = 80 bits) |
| [in] | bad | Bad Frame Indicator. Set to 1 if frame is corrupt |
Referenced by gmr1_codec_decode_frame().
| void ambe_decode_init | ( | struct ambe_decoder * | dec | ) |
Initializes decoder state.
| [in] | dec | Decoder state structure |
References ambe_synth_init(), ambe_subframe::f0, ambe_subframe::L, M_PIf, ambe_decoder::sf_prev, ambe_decoder::synth, and ambe_subframe::w0.
Referenced by gmr1_codec_alloc().
| int ambe_decode_tone | ( | struct ambe_decoder * | dec, |
| int16_t * | audio, | ||
| int | N, | ||
| const uint8_t * | frame | ||
| ) |
Decodes an AMBE tone frame.
| [in] | dec | AMBE decoder state |
| [out] | audio | Output audio buffer |
| [in] | N | number of audio samples to produce (152..168) |
| [in] | frame | Frame data (10 bytes = 80 bits). Must be tone frame ! |
| void ambe_fdct | ( | float * | out, |
| float * | in, | ||
| int | N, | ||
| int | M | ||
| ) |
Forward Discrete Cosine Transform (fDCT)
| [out] | out | fDCT result buffer (freq domain, M elements) |
| [in] | in | fDCT input buffer (time domain, N elements) |
| [in] | N | Number of points of the DCT |
| [in] | M | Limit to the number of frequency components (M <= N) |
References cosf_fast(), and M_PIf.
| void ambe_fdft_fc | ( | float * | out_i, |
| float * | out_q, | ||
| float * | in, | ||
| int | N, | ||
| int | M | ||
| ) |
Forward Discrete Fourrier Transform (float->complex)
| [out] | out_i | Real component result buffer (freq domain, N/2+1 elements) |
| [out] | out_q | Imag component result buffer (freq domain, N/2+1 elements) |
| [in] | in | Input buffer (time domain, M elements) |
| [in] | N | Number of points of the DFT |
| [in] | M | Limit to to the number of available time domain elements |
Since the input is float, the result is symmetric and so only one side is computed. The output index 0 is DC.
References cosf_fast(), M_PIf, and sinf_fast().
| void ambe_frame_decode_params | ( | struct ambe_subframe * | sf, |
| struct ambe_subframe * | sf_prev, | ||
| struct ambe_raw_params * | rp | ||
| ) |
Decodes the speech parameters for both subframes from raw params.
| [out] | sf | Array of 2 subframes data to fill-in |
| [in] | sf_prev | Previous subframe 1 data |
| [in] | rp | Encoded frame raw parameters |
References ambe_subframe::f0, ambe_subframe::f0log, and ambe_raw_params::pitch.
| void ambe_frame_unpack_raw | ( | struct ambe_raw_params * | rp, |
| const uint8_t * | frame | ||
| ) |
Unpack a frame into its raw encoded parameters.
| [out] | rp | Encoded frame raw parameters to unpack into |
| [in] | frame | Frame data (10 bytes = 80 bits) |
References ambe_raw_params::pitch.
| void ambe_idct | ( | float * | out, |
| float * | in, | ||
| int | N, | ||
| int | M | ||
| ) |
Inverse Discrete Cosine Transform (iDCT)
| [out] | out | iDCT result buffer (time domain, N elements) |
| [in] | in | iDCT input buffer (freq domain, M elements) |
| [in] | N | Number of points of the DCT |
| [in] | M | Limit to the number of frequency components (M <= N) |
References cosf_fast(), and M_PIf.
| void ambe_idft_cf | ( | float * | out, |
| float * | in_i, | ||
| float * | in_q, | ||
| int | N, | ||
| int | M | ||
| ) |
Inverse Discret Fourrier Transform (complex->float)
| [out] | out | Result buffer (time domain, M |
| [in] | in_i | Real component input buffer (freq domain, N/2+1 elements) |
| [in] | in_q | Imag component input buffer (freq domain, N/2+1 elements) |
| [in] | N | Number of points of the DFT |
| [in] | M | Limit to the number of time domain elements to generate |
The input is assumed to be symmetric and so only N/2+1 inputs are needed. DC component must be input index 0.
References cosf_fast(), M_PIf, and sinf_fast().
| void ambe_subframe_expand | ( | struct ambe_subframe * | sf | ) |
Expands the decoded subframe params to prepare for synthesis.
| [in] | sf | The subframe to expand |
References ambe_subframe::f0, ambe_subframe::L, M_PIf, ambe_subframe::Ml, ambe_subframe::Mlog, ambe_subframe::v_uv, ambe_subframe::Vl, and ambe_subframe::w0.
| void ambe_synth_audio | ( | struct ambe_synth * | synth, |
| int16_t * | audio, | ||
| struct ambe_subframe * | sf, | ||
| struct ambe_subframe * | sf_prev | ||
| ) |
Generate audio for a given subframe.
| [in] | synth | Synthesizer state structure |
| [out] | audio | Result buffer (80 samples) |
| [in] | sf | Expanded subframe data for current subframe |
| [in] | sf_prev | Expanded subframe data for prevous subframe |
| void ambe_synth_enhance | ( | struct ambe_synth * | synth, |
| struct ambe_subframe * | sf | ||
| ) |
Apply the spectral magnitude enhancement on the subframe.
| [in] | synth | Synthesizer state structure |
| [in] | sf | Expanded subframe data for subframe to enhance |
References cosf_fast(), ambe_subframe::L, M_PIf, ambe_subframe::Ml, ambe_synth::SE, and ambe_subframe::w0.
| void ambe_synth_init | ( | struct ambe_synth * | synth | ) |
Initialized Synthesizer state.
| [out] | synth | The structure to reset |
References ambe_synth::u_prev.
Referenced by ambe_decode_init().
| float cosf_fast | ( | float | angle | ) |
Fast Cosinus approximation using a simple table.
| [in] | angle | The angle value |
References M_PIf.
Referenced by ambe_fdct(), ambe_fdft_fc(), ambe_idct(), ambe_idft_cf(), and ambe_synth_enhance().
| float sinf_fast | ( | float | angle | ) |
Fast Sinus approximation using a simple table.
| [in] | angle | The angle value |
References M_PIf.
Referenced by ambe_fdft_fc(), and ambe_idft_cf().
| const float ambe_sf0_interp_tbl[4] |
Interpolation ratios for subframe 0 magnitude prediction.
| const uint16_t ambe_v_uv_tbl[64] |
V/UV decisions (subframe 0 = low byte. MSBs = low freq)
|
osmo-gmr 0.2.104-2b98
Osmocom GMR-1
|
|
osmo-gmr 0.2.104-2b98
Osmocom GMR-1
|
AMBE synthesizer state. More...
#include <private.h>
AMBE synthesizer state.
|
osmo-gmr 0.2.104-2b98
Osmocom GMR-1
|
Osmocom GMR-1 puncturing implementation. More...
#include <osmocom/core/conv.h>#include <osmocom/gmr1/l1/punct.h>#include <errno.h>#include <stdlib.h>Functions | |
| int | gmr1_puncturer_generate (struct osmo_conv_code *code, const struct gmr1_puncturer *punct_pre, const struct gmr1_puncturer *punct_main, const struct gmr1_puncturer *punct_post, int repeat) |
| Generate convolutional code puncturing array for a osmo_conv_code. More... | |
Variables | |
| const struct gmr1_puncturer | gmr1_punct_k5_12_P23 |
| GMR-1 P(2;3) puncturing code for the K=5 rate 1/2 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k5_12_P25 |
| GMR-1 P(2;5) puncturing code for the K=5 rate 1/2 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k5_12_Ps25 |
| GMR-1 Ps(2;5) puncturing code for the K=5 rate 1/2 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k5_12_P311 |
| GMR-1 P(3;11) puncturing code for the K=5 rate 1/2 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k5_12_P412 |
| GMR-1 P(4;12) puncturing code for the K=5 rate 1/2 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k5_12_Ps412 |
| GMR-1 Ps(4;12) puncturing code for the K=5 rate 1/2 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k5_12_P12 |
| GMR-1 P(1;2) puncturing code for the K=5 rate 1/2 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k5_12_Ps12 |
| GMR-1 Ps(1;2) puncturing code for the K=5 rate 1/2 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k5_12_A |
| GMR-1 A puncturing code for the K=5 rate 1/2 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k5_12_B |
| GMR-1 B puncturing code for the K=5 rate 1/2 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k5_12_C |
| GMR-1 C puncturing code for the K=5 rate 1/2 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k5_12_D |
| GMR-1 D puncturing code for the K=5 rate 1/2 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k5_12_E |
| GMR-1 E puncturing code for the K=5 rate 1/2 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k5_12_P38 |
| GMR-1 P(3;8) puncturing code for the K=5 rate 1/2 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k5_12_P26 |
| GMR-1 P(2;6) puncturing code for the K=5 rate 1/2 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k5_12_P37 |
| GMR-1 P(3;7) puncturing code for the K=5 rate 1/2 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k5_13_P16 |
| GMR-1 P(1;6) puncturing code for the K=5 rate 1/3 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k5_13_P25 |
| GMR-1 P(2;5) puncturing code for the K=5 rate 1/3 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k5_13_P15 |
| GMR-1 P(1;5) puncturing code for the K=5 rate 1/3 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k5_13_Ps15 |
| GMR-1 Ps(1;5) puncturing code for the K=5 rate 1/3 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k5_13_P78 |
| GMR-1 P(7;8) puncturing code for the K=5 rate 1/3 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k5_15_P23 |
| GMR-1 P(2;3) puncturing code for the K=5 rate 1/5 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k5_15_P53 |
| GMR-1 P(5;3) puncturing code for the K=5 rate 1/5 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k5_15_Ps53 |
| GMR-1 Ps(5;3) puncturing code for the K=5 rate 1/5 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k7_12_P23 |
| GMR-1 P(2;3) puncturing code for the K=7 rate 1/2 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k7_12_P410 |
| GMR-1 P(4;10) puncturing code for the K=7 rate 1/2 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k7_12_P512 |
| GMR-1 P(5;12) puncturing code for the K=7 rate 1/2 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k7_12_P116 |
| GMR-1 P(1;16) puncturing code for the K=7 rate 1/2 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k7_12_P148 |
| GMR-1 P(1;48) puncturing code for the K=7 rate 1/2 conv coder. | |
| const struct gmr1_puncturer | gmr1_punct_k7_12_P184 |
| GMR-1 P(1;84) puncturing code for the K=7 rate 1/2 conv coder. | |
| const struct gmr1_puncturer | gmr1_punct_k7_12_P1152 |
| GMR-1 P(1;152) puncturing code for the K=7 rate 1/2 conv coder. | |
| const struct gmr1_puncturer | gmr1_punct_k7_12_P45 |
| GMR-1 P(4;5) puncturing code for the K=7 rate 1/2 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k7_12_P245 |
| GMR-1 P2(4;5) puncturing code for the K=7 rate 1/2 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k9_12_P13 |
| GMR-1 P(1;3) puncturing code for the K=9 rate 1/2 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k9_12_P47 |
| GMR-1 P(4;7) puncturing code for the K=9 rate 1/2 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k9_12_P34 |
| GMR-1 P(3;4) puncturing code for the K=9 rate 1/2 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k9_12_P17 |
| GMR-1 P(1;7) puncturing code for the K=9 rate 1/2 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k9_12_P19 |
| GMR-1 P(1;9) puncturing code for the K=9 rate 1/2 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k9_12_P26 |
| GMR-1 P(2;6) puncturing code for the K=9 rate 1/2 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k9_12_P110 |
| GMR-1 P(1;10) puncturing code for the K=9 rate 1/2 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k9_12_P14 |
| GMR-1 P(1;4) puncturing code for the K=9 rate 1/2 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k9_12_P45 |
| GMR-1 P(4;5) puncturing code for the K=9 rate 1/2 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k9_12_P234 |
| GMR-1 P2(3;4) puncturing code for the K=9 rate 1/2 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k6_14_P45 |
| GMR-1 P(4;5) puncturing code for the K=6 rate 1/4 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k9_14_P148 |
| GMR-1 P(14;8) puncturing code for the K=9 rate 1/4 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k9_14_P65 |
| GMR-1 P(6;5) puncturing code for the K=9 rate 1/4 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k9_13_P12 |
| GMR-1 P(1;2) puncturing code for the K=9 rate 1/3 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k9_13_P1213 |
| GMR-1 P(12;13) puncturing code for the K=9 rate 1/3 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k9_13_P44 |
| GMR-1 P(4;4) puncturing code for the K=9 rate 1/3 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k9_13_P33 |
| GMR-1 P(3;3) puncturing code for the K=9 rate 1/3 conv coder. More... | |
| const struct gmr1_puncturer | gmr1_punct_k9_13_P65 |
| GMR-1 P(6;5) puncturing code for the K=9 rate 1/3 conv coder. More... | |
Osmocom GMR-1 puncturing implementation.
|
osmo-gmr 0.2.104-2b98
Osmocom GMR-1
|
|
osmo-gmr 0.2.104-2b98
Osmocom GMR-1
|
AMBE subframe parameters. More...
#include <private.h>
AMBE subframe parameters.
|
osmo-gmr 0.2.104-2b98
Osmocom GMR-1
|
|
osmo-gmr 0.2.104-2b98
Osmocom GMR-1
|
|
osmo-gmr 0.2.104-2b98
Osmocom GMR-1
|
| Cambe_decoder | AMBE decoder state |
| Cambe_raw_params | AMBE encoded frame raw parameters |
| Cambe_subframe | AMBE subframe parameters |
| Cambe_synth | AMBE synthesizer state |
| Cchan_desc | |
| Cgmr1_codec | Structure for GMR1 codec state |
| Cgmr1_fcch_burst | |
| Cgmr1_interleaver | GMR1 inter-burst (de)interleaver state |
| Cgmr1_pi4cxpsk_burst | Pi4-CxPSK Burst format description |
| Cgmr1_pi4cxpsk_data | Pi4-CxPSK Data segment description |
| Cgmr1_pi4cxpsk_modulation | Pi4-CxPSK modulation description |
| Cgmr1_pi4cxpsk_symbol | Pi4-CxPSK symbol description |
| Cgmr1_pi4cxpsk_sync | Pi4-CxPSK Synchronization sequence segment description |
| Cgmr1_puncturer | Structure describing a puncturing code |
| Ctch3_state | |
| Ctch9_state | |
| Ctone_desc | Structure describing a dual-frequency tone |
|
osmo-gmr 0.2.104-2b98
Osmocom GMR-1
|
Osmocom GMR-1 AMBE vocoder math functions. More...
Functions | |
| float | cosf_fast (float angle) |
| Fast Cosinus approximation using a simple table. More... | |
| float | sinf_fast (float angle) |
| Fast Sinus approximation using a simple table. More... | |
| void | ambe_fdct (float *out, float *in, int N, int M) |
| Forward Discrete Cosine Transform (fDCT) More... | |
| void | ambe_idct (float *out, float *in, int N, int M) |
| Inverse Discrete Cosine Transform (iDCT) More... | |
| void | ambe_fdft_fc (float *out_i, float *out_q, float *in, int N, int M) |
| Forward Discrete Fourrier Transform (float->complex) More... | |
| void | ambe_idft_cf (float *out, float *in_i, float *in_q, int N, int M) |
| Inverse Discret Fourrier Transform (complex->float) More... | |
Osmocom GMR-1 AMBE vocoder math functions.
|
osmo-gmr 0.2.104-2b98
Osmocom GMR-1
|
Osmocom GMR-1 L1 global definitions. More...
Go to the source code of this file.
Osmocom GMR-1 L1 global definitions.
|
osmo-gmr 0.2.104-2b98
Osmocom GMR-1
|
Files | |
| file | crc.h |
| Osmocom GMR-1 CRC header. | |
| file | crc.c |
| Osmocom GMR-1 CRC implementation. | |
Variables | |
| const struct osmo_crc8gen_code | gmr1_crc8 |
| GMR-1 CRC8 g8(D) = D8 + D7 + D4 + D3 + D + 1. | |
| const struct osmo_crc16gen_code | gmr1_crc12 |
| GMR-1 CRC12 g12(D) = D12 + D11 + D3 + D2 + D + 1. | |
| const struct osmo_crc16gen_code | gmr1_crc16 |
| GMR-1 CRC16 g16(D) = D16 + D12 + D5 + 1. | |
| const struct osmo_crc8gen_code | gmr1_crc8 |
| GMR-1 CRC8 g8(D) = D8 + D7 + D4 + D3 + D + 1. More... | |
| const struct osmo_crc16gen_code | gmr1_crc12 |
| GMR-1 CRC12 g12(D) = D12 + D11 + D3 + D2 + D + 1. More... | |
| const struct osmo_crc16gen_code | gmr1_crc16 |
| GMR-1 CRC16 g16(D) = D16 + D12 + D5 + 1. More... | |
| const struct osmo_crc16gen_code gmr1_crc12 |
GMR-1 CRC12 g12(D) = D12 + D11 + D3 + D2 + D + 1.
Referenced by gmr1_rach_encode().
| const struct osmo_crc16gen_code gmr1_crc16 |
GMR-1 CRC16 g16(D) = D16 + D12 + D5 + 1.
Referenced by gmr1_bcch_encode(), gmr1_ccch_encode(), gmr1_facch3_encode(), gmr1_facch9_encode(), and gmr1_xch_dc12_encode().
| const struct osmo_crc8gen_code gmr1_crc8 |
GMR-1 CRC8 g8(D) = D8 + D7 + D4 + D3 + D + 1.
Referenced by gmr1_rach_encode().
|
osmo-gmr 0.2.104-2b98
Osmocom GMR-1
|
Osmocom GMR-1 A5 ciphering algorithm header. More...
#include <stdint.h>#include <osmocom/core/bits.h>Go to the source code of this file.
Functions | |
| void | gmr1_a5 (int n, uint8_t *key, uint32_t fn, int nbits, ubit_t *dl, ubit_t *ul) |
| Main method to generate a A5/x cipher stream. More... | |
| void | gmr1_a5_1 (uint8_t *key, uint32_t fn, int nbits, ubit_t *dl, ubit_t *ul) |
| Generate a GMR-1 A5/1 cipher stream. More... | |
Osmocom GMR-1 A5 ciphering algorithm header.
|
osmo-gmr 0.2.104-2b98
Osmocom GMR-1
|
Files | |
| file | dkab.c |
| Osmocom GMR-1 DKABs bursts implementation. | |
| file | fcch.c |
| Osmocom GMR-1 FCCH bursts implementation. | |
| file | nb.c |
| Osmocom GMR-1 Normal bursts descriptions. | |
| file | pi4cxpsk.c |
| Osmocom GMR-1 pi2-CBPSK, pi4-CBPSK and pi4-CQPSK modulation support implementation. | |
|
osmo-gmr 0.2.104-2b98
Osmocom GMR-1
|
|
osmo-gmr 0.2.104-2b98
Osmocom GMR-1
|
Osmocom GMR-1 TCH9 channel coding implementation. More...
#include <stdint.h>#include <string.h>#include <osmocom/core/bits.h>#include <osmocom/core/conv.h>#include <osmocom/core/crc16gen.h>#include <osmocom/gmr1/l1/conv.h>#include <osmocom/gmr1/l1/crc.h>#include <osmocom/gmr1/l1/interleave.h>#include <osmocom/gmr1/l1/punct.h>#include <osmocom/gmr1/l1/scramb.h>#include <osmocom/gmr1/l1/tch9.h>Functions | |
| void | gmr1_tch9_encode (ubit_t *bits_e, const uint8_t *l2, enum gmr1_tch9_mode mode, const ubit_t *bits_sacch, const ubit_t *bits_status, const ubit_t *ciph, struct gmr1_interleaver *il) |
| GMR-1 TCH9 channel coder. More... | |
| void | gmr1_tch9_decode (uint8_t *l2, sbit_t *bits_sacch, sbit_t *bits_status, const sbit_t *bits_e, enum gmr1_tch9_mode mode, const ubit_t *ciph, struct gmr1_interleaver *il, int *conv_rv) |
| GMR-1 TCH9 channel decoder. More... | |
Osmocom GMR-1 TCH9 channel coding implementation.
|
osmo-gmr 0.2.104-2b98
Osmocom GMR-1
|
Files | |
| file | interleave.h |
| Osmocom GMR-1 interleaving header. | |
| file | interleave.c |
| Osmocom GMR-1 interleaving implementation. | |
Data Structures | |
| struct | gmr1_interleaver |
| GMR1 inter-burst (de)interleaver state. More... | |
Functions | |
| void | gmr1_interleave_intra (void *out, const void *in, int N) |
| GMR-1 intra burst inteleaver. More... | |
| void | gmr1_deinterleave_intra (void *out, const void *in, int N) |
| GMR-1 intra burst de-interleaver. More... | |
| int | gmr1_interleaver_init (struct gmr1_interleaver *il, int N, int K) |
| GMR-1 inter burst interleaver initializer. More... | |
| void | gmr1_interleaver_fini (struct gmr1_interleaver *il) |
| GMR-1 inter burst interleaver cleanup. More... | |
| void | gmr1_interleave_inter (struct gmr1_interleaver *il, void *bits_epp, void *bits_ep) |
| GMR-1 inter burst interleaver. More... | |
| void | gmr1_deinterleave_inter (struct gmr1_interleaver *il, void *bits_ep, void *bits_epp) |
| GMR-1 inter burst de-interleaver. More... | |
| void gmr1_deinterleave_inter | ( | struct gmr1_interleaver * | il, |
| void * | bits_ep, | ||
| void * | bits_epp | ||
| ) |
GMR-1 inter burst de-interleaver.
| [in] | il | The interleaver object |
| [out] | bits_ep | N bits output from de-interleaver |
| [in] | bits_epp | N bits input to de-interleaver |
bits_ep and bits_epp can be equal for inplace processing
References gmr1_interleaver::bits_cpp, gmr1_interleaver::K, gmr1_interleaver::N, and gmr1_interleaver::n.
| void gmr1_deinterleave_intra | ( | void * | out, |
| const void * | in, | ||
| int | N | ||
| ) |
GMR-1 intra burst de-interleaver.
| [out] | out | Deinterleaved bit array to write to |
| [in] | in | Interleaved bit array to read from |
| [in] | N | Dimension of the interleaving matrix |
Both arrays need to have a length of (8*N). This routine works for any type that has the same size as uint8_t like sbit_t or ubit_t.
Referenced by gmr1_bcch_decode(), gmr1_ccch_decode(), gmr1_facch3_decode(), gmr1_facch9_decode(), gmr1_rach_decode(), and gmr1_xch_dc12_decode().
| void gmr1_interleave_inter | ( | struct gmr1_interleaver * | il, |
| void * | bits_epp, | ||
| void * | bits_ep | ||
| ) |
GMR-1 inter burst interleaver.
| [in] | il | The interleaver object |
| [out] | bits_epp | N bits output of interleaver |
| [in] | bits_ep | N bits input to interleaver |
bits_ep and bits_epp can be equal for inplace processing
References gmr1_interleaver::bits_cpp, gmr1_interleaver::K, gmr1_interleaver::N, and gmr1_interleaver::n.
| void gmr1_interleave_intra | ( | void * | out, |
| const void * | in, | ||
| int | N | ||
| ) |
GMR-1 intra burst inteleaver.
| [out] | out | Interleaved bit array to write to |
| [in] | in | Original bit array to read from |
| [in] | N | Dimension of the interleaving matrix |
Both arrays need to have a length of (8*N). This routine works for any type that has the same size as uint8_t like sbit_t or ubit_t.
| void gmr1_interleaver_fini | ( | struct gmr1_interleaver * | il | ) |
GMR-1 inter burst interleaver cleanup.
| [in] | il | The interleaver object to release |
References gmr1_interleaver::bits_cpp.
| int gmr1_interleaver_init | ( | struct gmr1_interleaver * | il, |
| int | N, | ||
| int | K | ||
| ) |
GMR-1 inter burst interleaver initializer.
| [in] | il | The interleaver object to init |
| [in] | N | The interleaving depth |
| [in] | K | The interleaving width |
References gmr1_interleaver::bits_cpp, gmr1_interleaver::K, and gmr1_interleaver::N.
|
osmo-gmr 0.2.104-2b98
Osmocom GMR-1
|
Osmocom GMR-1 TCH3 channel coding header. More...
#include <stdint.h>#include <osmocom/core/bits.h>Go to the source code of this file.
Functions | |
| void | gmr1_tch3_encode (ubit_t *bits_e, const uint8_t *frame0, const uint8_t *frame1, const ubit_t *bits_s, const ubit_t *ciph, int m) |
| Stateless GMR-1 TCH3 channel coder. More... | |
| void | gmr1_tch3_decode (uint8_t *frame0, uint8_t *frame1, ubit_t *bits_s, const sbit_t *bits_e, const ubit_t *ciph, int m, int *conv0_rv, int *conv1_rv) |
| Stateless GMR-1 TCH3 channel decoder. More... | |
Osmocom GMR-1 TCH3 channel coding header.
|
osmo-gmr 0.2.104-2b98
Osmocom GMR-1
|
Data Fields | |
| int | active |
| int | tn |
| struct gmr1_interleaver | il |