libosmocoding
0.12.0
Osmocom GSM/GPRS/EGPRS L1 channel coding library
|
#include <stdint.h>
#include <osmocom/core/defs.h>
#include <osmocom/core/bits.h>
Go to the source code of this file.
|
enum | gsm0503_egprs_mcs {
EGPRS_MCS0,
EGPRS_MCS1,
EGPRS_MCS2,
EGPRS_MCS3,
EGPRS_MCS4,
EGPRS_MCS5,
EGPRS_MCS6,
EGPRS_MCS7,
EGPRS_MCS8,
EGPRS_MCS9,
EGPRS_NUM_MCS
} |
|
|
int | gsm0503_xcch_encode (ubit_t *bursts, const uint8_t *l2_data) |
| Encoding of xCCH data from L2 frame to bursts. More...
|
|
int | gsm0503_xcch_decode (uint8_t *l2_data, const sbit_t *bursts, int *n_errors, int *n_bits_total) |
| Decoding of xCCH data from bursts to L2 frame. More...
|
|
int | gsm0503_pdtch_encode (ubit_t *bursts, const uint8_t *l2_data, uint8_t l2_len) |
| GPRS DL message encoding. More...
|
|
int | gsm0503_pdtch_decode (uint8_t *l2_data, const sbit_t *bursts, uint8_t *usf_p, int *n_errors, int *n_bits_total) |
| Decode GPRS PDTCH. More...
|
|
int | gsm0503_pdtch_egprs_encode (ubit_t *bursts, const uint8_t *l2_data, uint8_t l2_len) |
| EGPRS DL message encoding. More...
|
|
int | gsm0503_pdtch_egprs_decode (uint8_t *l2_data, const sbit_t *bursts, uint16_t nbits, uint8_t *usf_p, int *n_errors, int *n_bits_total) |
| Decode EGPRS UL message. More...
|
|
int | gsm0503_tch_fr_encode (ubit_t *bursts, const uint8_t *tch_data, int len, int net_order) |
| Perform channel encoding on a TCH/FS channel according to TS 05.03. More...
|
|
int | gsm0503_tch_fr_decode (uint8_t *tch_data, const sbit_t *bursts, int net_order, int efr, int *n_errors, int *n_bits_total) |
| Perform channel decoding of a FR/EFR channel according TS 05.03. More...
|
|
int | gsm0503_tch_hr_encode (ubit_t *bursts, const uint8_t *tch_data, int len) |
| Perform channel encoding on a TCH/HS channel according to TS 05.03. More...
|
|
int | gsm0503_tch_hr_decode (uint8_t *tch_data, const sbit_t *bursts, int odd, int *n_errors, int *n_bits_total) |
| Perform channel decoding of a HR(v1) channel according TS 05.03. More...
|
|
int | gsm0503_tch_afs_encode (ubit_t *bursts, const uint8_t *tch_data, int len, int codec_mode_req, uint8_t *codec, int codecs, uint8_t ft, uint8_t cmr) |
| Perform channel encoding on a TCH/AFS channel according to TS 05.03. More...
|
|
int | gsm0503_tch_afs_decode (uint8_t *tch_data, const sbit_t *bursts, int codec_mode_req, uint8_t *codec, int codecs, uint8_t *ft, uint8_t *cmr, int *n_errors, int *n_bits_total) |
| Perform channel decoding of a TCH/AFS channel according TS 05.03. More...
|
|
int | gsm0503_tch_ahs_encode (ubit_t *bursts, const uint8_t *tch_data, int len, int codec_mode_req, uint8_t *codec, int codecs, uint8_t ft, uint8_t cmr) |
| Perform channel encoding on a TCH/AHS channel according to TS 05.03. More...
|
|
int | gsm0503_tch_ahs_decode (uint8_t *tch_data, const sbit_t *bursts, int odd, int codec_mode_req, uint8_t *codec, int codecs, uint8_t *ft, uint8_t *cmr, int *n_errors, int *n_bits_total) |
| Perform channel decoding of a TCH/AFS channel according TS 05.03. More...
|
|
int | gsm0503_rach_ext_encode (ubit_t *burst, uint16_t ra11, uint8_t bsic, bool is_11bit) |
| Encode the Extended (11-bit) or regular (8-bit) RACH according to 3GPP TS 45.003. More...
|
|
int | gsm0503_rach_encode (ubit_t *burst, const uint8_t *ra, uint8_t bsic) |
| Encode the (8-bit) RACH according to TS 05.03. More...
|
|
int | gsm0503_rach_decode (uint8_t *ra, const sbit_t *burst, uint8_t bsic) |
| Decode the (8-bit) RACH according to TS 05.03. More...
|
|
int | gsm0503_rach_decode_ber (uint8_t *ra, const sbit_t *burst, uint8_t bsic, int *n_errors, int *n_bits_total) |
| Decode the (8-bit) RACH according to TS 05.03. More...
|
|
int | gsm0503_rach_ext_decode (uint16_t *ra, const sbit_t *burst, uint8_t bsic) |
| Decode the Extended (11-bit) RACH according to 3GPP TS 45.003. More...
|
|
int | gsm0503_rach_ext_decode_ber (uint16_t *ra, const sbit_t *burst, uint8_t bsic, int *n_errors, int *n_bits_total) |
| Decode the Extended (11-bit) RACH according to 3GPP TS 45.003. More...
|
|
int | gsm0503_sch_encode (ubit_t *burst, const uint8_t *sb_info) |
| Encode the SCH according to TS 05.03. More...
|
|
int | gsm0503_sch_decode (uint8_t *sb_info, const sbit_t *burst) |
| Decode the SCH according to TS 05.03. More...
|
|
void gsm0503_xcch_deinterleave(sbit_t *cB, const sbit_t *iB)
De-Interleave burst bits according to TS 05.03 4.1.4.
Definition: gsm0503_interleaving.c:86
static void tch_fr_disassemble(ubit_t *b_bits, const uint8_t *tch_data, int net_order)
Definition: gsm0503_coding.c:1539
@ EGPRS_MCS8
Definition: gsm0503_coding.h:28
void gsm0503_mcs5_dl_burst_map(const ubit_t *di, ubit_t *eB, const ubit_t *hi, const ubit_t *up, int B)
Definition: gsm0503_mapping.c:100
static int egprs_type1_unmap(const sbit_t *bursts, sbit_t *hc, sbit_t *c1, sbit_t *c2, int msc)
Definition: gsm0503_coding.c:722
static int egprs_type3_map(ubit_t *bursts, const ubit_t *hc, const ubit_t *dc, int usf)
Definition: gsm0503_coding.c:1161
const uint8_t gsm0503_tch_hr_interleaving[228][2]
Definition: gsm0503_tables.c:1692
const uint8_t gsm0503_puncture_mcs3_p1[948]
Definition: gsm0503_tables.c:285
void gsm0503_mcs8_ul_deinterleave(sbit_t *hc, sbit_t *c1, sbit_t *c2, const sbit_t *hi, const sbit_t *di)
De-Interleave MCS8 UL burst bits according to TS 05.03 5.1.12.2.4.
Definition: gsm0503_interleaving.c:516
uint8_t hdr_len
Length of header (bits)
Definition: gsm0503_coding.c:157
const uint8_t gsm0503_puncture_mcs1_p1[588]
Definition: gsm0503_tables.c:167
const uint8_t gsm0503_puncture_mcs5_p1[1404]
Definition: gsm0503_tables.c:576
static void tch_amr_unmerge(ubit_t *d, ubit_t *p, const ubit_t *u, int len, int prot)
Definition: gsm0503_coding.c:1781
static void tch_efr_reassemble(uint8_t *tch_data, const ubit_t *b_bits)
Definition: gsm0503_coding.c:1588
int gsm0503_sch_encode(ubit_t *burst, const uint8_t *sb_info)
Encode the SCH according to TS 05.03.
Definition: gsm0503_coding.c:3009
const uint8_t gsm0503_puncture_mcs7_dl_hdr[135]
Definition: gsm0503_tables.c:816
const struct osmo_crc8gen_code gsm0503_mcs_crc8_hdr
EDGE MCS header parity.
Definition: gsm0503_parity.c:65
static void tch_efr_disassemble(ubit_t *b_bits, const uint8_t *tch_data)
Definition: gsm0503_coding.c:1599
#define EGPRS_DATA_C2
Definition: gsm0503_coding.c:132
static void tch_hr_b_to_d(ubit_t *d_bits, const ubit_t *b_bits)
Definition: gsm0503_coding.c:1661
const sbit_t gsm0503_ahs_ic_sbit[4][4]
Definition: gsm0503_tables.c:1685
#define EGPRS_DATA_U_MAX
Definition: gsm0503_coding.c:122
const uint8_t gsm0503_puncture_mcs7_ul_hdr[162]
Definition: gsm0503_tables.c:833
const ubit_t gsm0503_pdtch_edge_hl_hn_ubit[3][8]
Definition: gsm0503_tables.c:47
#define GSM0503_EGPRS_BURSTS_NBITS
Definition: gsm0503_coding.h:17
static int osmo_conv_decode_ber(const struct osmo_conv_code *code, const sbit_t *input, ubit_t *output, int *n_errors, int *n_bits_total)
Convolutional Decode + compute BER for non-punctured codes.
Definition: gsm0503_coding.c:578
const struct osmo_crc8gen_code gsm0503_tch_fr_crc3
GSM TCH FR/HR/EFR parity.
Definition: gsm0503_parity.c:108
const uint8_t gsm0503_puncture_mcs9_p3[1836]
Definition: gsm0503_tables.c:1456
void gsm0503_mcs5_dl_interleave(const ubit_t *hc, const ubit_t *dc, ubit_t *hi, ubit_t *di)
Interleave MCS5 DL burst bits according to TS 05.03 5.1.9.1.5.
Definition: gsm0503_interleaving.c:312
int gsm0503_pdtch_decode(uint8_t *l2_data, const sbit_t *bursts, uint8_t *usf_p, int *n_errors, int *n_bits_total)
Decode GPRS PDTCH.
Definition: gsm0503_coding.c:1009
@ EGPRS_MCS4
Definition: gsm0503_coding.h:24
void gsm0503_xcch_burst_map(const ubit_t *iB, ubit_t *eB, const ubit_t *hl, const ubit_t *hn)
Definition: gsm0503_mapping.c:53
struct gprs_rlc_dl_header_egprs_2 type2
Definition: gsm0503_coding.c:144
static void tch_fr_unreorder(ubit_t *d, ubit_t *p, const ubit_t *u)
Definition: gsm0503_coding.c:1702
int gsm0503_tch_ahs_encode(ubit_t *bursts, const uint8_t *tch_data, int len, int codec_mode_req, uint8_t *codec, int codecs, uint8_t ft, uint8_t cmr)
Perform channel encoding on a TCH/AHS channel according to TS 05.03.
Definition: gsm0503_coding.c:2680
void gsm0503_mcs1_ul_deinterleave(sbit_t *hc, sbit_t *dc, const sbit_t *iB)
Interleave MCS1 UL burst bits according to TS 05.03 5.1.5.2.4.
Definition: gsm0503_interleaving.c:194
const uint8_t gsm0503_puncture_mcs2_p2[732]
Definition: gsm0503_tables.c:257
void gsm0503_tch_fr_interleave(const ubit_t *cB, ubit_t *iB)
GSM TCH FR/EFR/AFS Interleaving and burst mapping.
Definition: gsm0503_interleaving.c:646
uint16_t data_code_len
length of data convolutional code
Definition: gsm0503_coding.c:171
const uint8_t * data_punc[3]
data puncturing sequences
Definition: gsm0503_coding.c:177
int gsm0503_rach_ext_decode(uint16_t *ra, const sbit_t *burst, uint8_t bsic) OSMO_DEPRECATED("Use gsm0503_rach_ext_decode_ber() instead")
Decode the Extended (11-bit) RACH according to 3GPP TS 45.003.
Definition: gsm0503_coding.c:2878
const uint8_t gsm0503_puncture_mcs1_dl_hdr[108]
Definition: gsm0503_tables.c:147
void gsm0503_mcs5_ul_burst_map(const ubit_t *di, ubit_t *eB, const ubit_t *hi, int B)
Definition: gsm0503_mapping.c:142
int gsm0503_rach_ext_decode_ber(uint16_t *ra, const sbit_t *burst, uint8_t bsic, int *n_errors, int *n_bits_total)
Decode the Extended (11-bit) RACH according to 3GPP TS 45.003.
Definition: gsm0503_coding.c:2912
int gsm0503_rach_ext_encode(ubit_t *burst, uint16_t ra, uint8_t bsic, bool is_11bit)
Encode the Extended (11-bit) or regular (8-bit) RACH according to 3GPP TS 45.003.
Definition: gsm0503_coding.c:2959
void gsm0503_mcs5_ul_deinterleave(sbit_t *hc, sbit_t *dc, const sbit_t *hi, const sbit_t *di)
De-Interleave MCS5 UL burst bits according to TS 05.03 5.1.9.2.4.
Definition: gsm0503_interleaving.c:285
#define EGPRS_DATA_C_MAX
Definition: gsm0503_coding.c:125
void gsm0503_mcs1_dl_deinterleave(sbit_t *u, sbit_t *hc, sbit_t *dc, const sbit_t *iB)
De-Interleave MCS1 DL burst bits according to TS 05.03 5.1.5.1.5.
Definition: gsm0503_interleaving.c:116
void gsm0503_mcs8_ul_interleave(const ubit_t *hc, const ubit_t *c1, const ubit_t *c2, ubit_t *hi, ubit_t *di)
Interleave MCS8 UL burst bits according to TS 05.03 5.1.12.2.4.
Definition: gsm0503_interleaving.c:486
const struct osmo_crc16gen_code gsm0503_sch_crc10
GSM SCH parity.
Definition: gsm0503_parity.c:97
static int egprs_parse_ul_cps(struct egprs_cps *cps, union gprs_rlc_ul_hdr_egprs *hdr, int type)
Definition: gsm0503_coding.c:836
void gsm0503_tch_hr_deinterleave(sbit_t *cB, const sbit_t *iB)
GSM TCH HR/AHS De-Interleaving and burst mapping.
Definition: gsm0503_interleaving.c:660
const uint8_t gsm0503_puncture_mcs8_p2[1692]
Definition: gsm0503_tables.c:1146
@ EGPRS_MCS7
Definition: gsm0503_coding.h:27
uint16_t data_len
length of data (bits)
Definition: gsm0503_coding.c:169
const uint8_t gsm0503_puncture_mcs3_p3[948]
Definition: gsm0503_tables.c:397
struct gprs_rlc_dl_header_egprs_3 type3
Definition: gsm0503_coding.c:145
void gsm0503_mcs7_ul_burst_map(const ubit_t *di, ubit_t *eB, const ubit_t *hi, int B)
Definition: gsm0503_mapping.c:216
const ubit_t gsm0503_mcs5_usf_precode_table[8][36]
Definition: gsm0503_tables.c:1736
const uint8_t gsm0503_puncture_mcs4_p3[1116]
Definition: gsm0503_tables.c:535
const uint8_t gsm0503_puncture_mcs9_p1[1836]
Definition: gsm0503_tables.c:1246
#define GSM0503_GPRS_BURSTS_NBITS
Definition: gsm0503_coding.h:16
const uint8_t gsm0503_puncture_mcs5_p2[1404]
Definition: gsm0503_tables.c:631
const uint16_t gsm0503_interleave_mcs5[1248]
Definition: gsm0503_tables.c:1561
#define EGPRS_HDR_UPP_MAX
Definition: gsm0503_coding.c:113
const uint8_t gsm0503_puncture_mcs3_p2[948]
Definition: gsm0503_tables.c:341
const uint8_t gsm0503_puncture_cs3[676]
Definition: gsm0503_tables.c:121
static void tch_efr_reorder(ubit_t *w, const ubit_t *s, const ubit_t *p)
Definition: gsm0503_coding.c:1740
static int _xcch_encode_cB(ubit_t *cB, const uint8_t *l2_data)
convenience wrapper for encoding to coded bits
Definition: gsm0503_coding.c:615
void gsm0503_tch_fr_deinterleave(sbit_t *cB, const sbit_t *iB)
GSM TCH FR/EFR/AFS De-Interleaving and burst mapping.
Definition: gsm0503_interleaving.c:632
const uint8_t gsm0503_puncture_mcs8_p3[1692]
Definition: gsm0503_tables.c:1196
int gsm0503_tch_hr_decode(uint8_t *tch_data, const sbit_t *bursts, int odd, int *n_errors, int *n_bits_total)
Perform channel decoding of a HR(v1) channel according TS 05.03.
Definition: gsm0503_coding.c:1945
const uint8_t gsm0503_gsm_efr_protected_bits[65]
Definition: gsm0503_tables.c:1653
void gsm0503_mcs5_dl_burst_unmap(sbit_t *di, const sbit_t *eB, sbit_t *hi, sbit_t *up, int B)
Definition: gsm0503_mapping.c:122
@ EGPRS_MCS2
Definition: gsm0503_coding.h:22
#define EGPRS_HDR_C_MAX
Definition: gsm0503_coding.c:116
uint16_t data_punc_len
length of data code puncturing sequence
Definition: gsm0503_coding.c:173
@ EGPRS_MCS6
Definition: gsm0503_coding.h:26
static int egprs_decode_hdr(union gprs_rlc_ul_hdr_egprs *hdr, const sbit_t *bursts, uint16_t nbits)
Definition: gsm0503_coding.c:800
const ubit_t gsm0503_ahs_ic_ubit[4][4]
Definition: gsm0503_tables.c:1678
const uint8_t gsm0503_puncture_mcs6_p2[1836]
Definition: gsm0503_tables.c:751
static int egprs_encode_data(ubit_t *c, const uint8_t *l2_data, int mcs, int p, int blk)
Definition: gsm0503_coding.c:1252
const uint8_t gsm0503_puncture_mcs6_p1[1836]
Definition: gsm0503_tables.c:686
union across the three different EGPRS Downlink header types
Definition: gsm0503_coding.c:142
int gsm0503_sch_decode(uint8_t *sb_info, const sbit_t *burst)
Decode the SCH according to TS 05.03.
Definition: gsm0503_coding.c:2989
const sbit_t gsm0503_usf2twelve_sbit[8][12]
Definition: gsm0503_tables.c:88
uint8_t usf_len
Length of Uplink Stealing Flag (USF) in bits.
Definition: gsm0503_coding.c:153
static void tch_efr_w_to_d(ubit_t *d_bits, const ubit_t *b_bits)
Definition: gsm0503_coding.c:1685
const struct osmo_crc8gen_code gsm0503_rach_crc6
GSM RACH parity.
Definition: gsm0503_parity.c:86
static void tch_hr_reorder(ubit_t *u, const ubit_t *d, const ubit_t *p)
Definition: gsm0503_coding.c:1734
int gsm0503_pdtch_encode(ubit_t *bursts, const uint8_t *l2_data, uint8_t l2_len)
GPRS DL message encoding.
Definition: gsm0503_coding.c:1419
void gsm0503_xcch_interleave(const ubit_t *cB, ubit_t *iB)
Interleave burst bits according to TS 05.03 4.1.4.
Definition: gsm0503_interleaving.c:100
Structure describing a Modulation and Coding Scheme.
Definition: gsm0503_coding.c:149
struct gprs_rlc_ul_header_egprs_3 type3
Definition: gsm0503_coding.c:138
static void tch_amr_reassemble(uint8_t *tch_data, const ubit_t *d_bits, int len)
Definition: gsm0503_coding.c:1608
static int egprs_type1_map(ubit_t *bursts, const ubit_t *hc, const ubit_t *c1, const ubit_t *c2, int usf, int mcs)
Definition: gsm0503_coding.c:1195
void gsm0503_mcs5_burst_swap(sbit_t *eB)
Definition: gsm0503_mapping.c:250
static void tch_efr_protected(const ubit_t *s_bits, ubit_t *b_bits)
Definition: gsm0503_coding.c:1694
static void tch_amr_merge(ubit_t *u, const ubit_t *d, const ubit_t *p, int len, int prot)
Definition: gsm0503_coding.c:1774
struct gprs_rlc_dl_header_egprs_1 type1
Definition: gsm0503_coding.c:143
static void tch_fr_reassemble(uint8_t *tch_data, const ubit_t *b_bits, int net_order)
assemble a FR codec frame in format as used inside RTP
Definition: gsm0503_coding.c:1507
static int osmo_conv_decode_ber_punctured(const struct osmo_conv_code *code, const sbit_t *input, ubit_t *output, int *n_errors, int *n_bits_total, const uint8_t *data_punc)
Convolutional Decode + compute BER for punctured codes.
Definition: gsm0503_coding.c:539
const uint8_t gsm0503_puncture_mcs4_p1[1116]
Definition: gsm0503_tables.c:453
static void rach_apply_bsic(ubit_t *d, uint8_t bsic, uint8_t start)
Definition: gsm0503_coding.c:2843
int gsm0503_tch_fr_encode(ubit_t *bursts, const uint8_t *tch_data, int len, int net_order)
Perform channel encoding on a TCH/FS channel according to TS 05.03.
Definition: gsm0503_coding.c:1880
static int _xcch_decode_cB(uint8_t *l2_data, const sbit_t *cB, int *n_errors, int *n_bits_total)
convenience wrapper for decoding coded bits
Definition: gsm0503_coding.c:592
void gsm0503_mcs7_dl_interleave(const ubit_t *hc, const ubit_t *c1, const ubit_t *c2, ubit_t *hi, ubit_t *di)
Interleave MCS7 DL burst bits according to TS 05.03 5.1.11.1.5.
Definition: gsm0503_interleaving.c:362
const struct osmo_conv_code * data_conv
data convolutional code
Definition: gsm0503_coding.c:175
const struct osmo_crc8gen_code gsm0503_amr_crc6
GSM AMR parity.
Definition: gsm0503_parity.c:130
const struct osmo_crc8gen_code gsm0503_tch_efr_crc8
GSM TCH EFR parity.
Definition: gsm0503_parity.c:119
int gsm0503_pdtch_egprs_decode(uint8_t *l2_data, const sbit_t *bursts, uint16_t nbits, uint8_t *usf_p, int *n_errors, int *n_bits_total)
Decode EGPRS UL message.
Definition: gsm0503_coding.c:932
const struct gsm0503_mcs_code gsm0503_mcs_dl_codes[EGPRS_NUM_MCS]
Definition: gsm0503_coding.c:354
struct gprs_rlc_ul_header_egprs_2 type2
Definition: gsm0503_coding.c:137
const ubit_t gsm0503_afs_ic_ubit[4][8]
Definition: gsm0503_tables.c:1664
static int egprs_type2_map(ubit_t *bursts, const ubit_t *hc, const ubit_t *dc, int usf)
Definition: gsm0503_coding.c:1177
const uint8_t gsm0503_puncture_mcs2_p1[732]
Definition: gsm0503_tables.c:229
int gsm0503_xcch_decode(uint8_t *l2_data, const sbit_t *bursts, int *n_errors, int *n_bits_total)
Decoding of xCCH data from bursts to L2 frame.
Definition: gsm0503_coding.c:638
const uint8_t gsm0503_puncture_mcs1_p2[588]
Definition: gsm0503_tables.c:198
static void tch_efr_unreorder(ubit_t *s, ubit_t *p, const ubit_t *w)
Definition: gsm0503_coding.c:1754
@ EGPRS_MCS9
Definition: gsm0503_coding.h:29
static void tch_hr_d_to_b(ubit_t *b_bits, const ubit_t *d_bits)
Definition: gsm0503_coding.c:1645
int gsm0503_pdtch_egprs_encode(ubit_t *bursts, const uint8_t *l2_data, uint8_t l2_len)
EGPRS DL message encoding.
Definition: gsm0503_coding.c:1324
void gsm0503_mcs5_ul_burst_unmap(sbit_t *di, const sbit_t *eB, sbit_t *hi, int B)
Definition: gsm0503_mapping.c:159
void gsm0503_tch_burst_unmap(sbit_t *iB, const sbit_t *eB, sbit_t *h, int odd)
Definition: gsm0503_mapping.c:65
void gsm0503_tch_burst_map(const ubit_t *iB, ubit_t *eB, const ubit_t *h, int odd)
Definition: gsm0503_mapping.c:85
void gsm0503_mcs1_ul_interleave(const ubit_t *hc, const ubit_t *dc, ubit_t *iB)
Interleave MCS1 DL burst bits according to TS 05.03 5.1.5.2.4.
Definition: gsm0503_interleaving.c:228
const ubit_t gsm0503_usf2twelve_ubit[8][12]
Definition: gsm0503_tables.c:77
void gsm0503_mcs7_ul_deinterleave(sbit_t *hc, sbit_t *c1, sbit_t *c2, const sbit_t *hi, const sbit_t *di)
De-Interleave MCS7 UL burst bits according to TS 05.03 5.1.11.2.4.
Definition: gsm0503_interleaving.c:453
int gsm0503_rach_decode_ber(uint8_t *ra, const sbit_t *burst, uint8_t bsic, int *n_errors, int *n_bits_total)
Decode the (8-bit) RACH according to TS 05.03.
Definition: gsm0503_coding.c:2930
const uint8_t gsm0503_puncture_mcs9_p2[1836]
Definition: gsm0503_tables.c:1351
const uint8_t gsm0503_puncture_mcs8_p1[1692]
Definition: gsm0503_tables.c:1096
const struct osmo_crc16gen_code gsm0503_mcs_crc12
EDGE MCS data parity.
Definition: gsm0503_parity.c:75
const uint8_t * hdr_punc
header puncturing sequence
Definition: gsm0503_coding.c:165
const sbit_t gsm0503_afs_ic_sbit[4][8]
Definition: gsm0503_tables.c:1671
static void tch_fr_reorder(ubit_t *u, const ubit_t *d, const ubit_t *p)
Definition: gsm0503_coding.c:1715
@ EGPRS_MCS1
Definition: gsm0503_coding.h:21
static int egprs_type2_unmap(const sbit_t *bursts, sbit_t *hc, sbit_t *dc)
Definition: gsm0503_coding.c:699
const struct osmo_conv_code * hdr_conv
header convolutional code
Definition: gsm0503_coding.c:163
#define EGPRS_DATA_C1
Definition: gsm0503_coding.c:131
static void tch_hr_unreorder(ubit_t *d, ubit_t *p, const ubit_t *u)
Definition: gsm0503_coding.c:1728
static void tch_fr_b_to_d(ubit_t *d_bits, const ubit_t *b_bits)
Definition: gsm0503_coding.c:1636
const uint8_t gsm0503_gsm_fr_map[76]
Definition: gsm0503_tables.c:1644
const struct osmo_crc64gen_code gsm0503_fire_crc40
GSM (SACCH) parity (FIRE code)
Definition: gsm0503_parity.c:44
static int egprs_decode_data(uint8_t *l2_data, const sbit_t *c, int mcs, int p, int blk, int *n_errors, int *n_bits_total)
Definition: gsm0503_coding.c:866
const uint8_t gsm0503_puncture_mcs4_p2[1116]
Definition: gsm0503_tables.c:494
static int egprs_parse_dl_cps(struct egprs_cps *cps, const union gprs_rlc_dl_hdr_egprs *hdr, int type)
Definition: gsm0503_coding.c:1297
void gsm0503_mcs7_ul_interleave(const ubit_t *hc, const ubit_t *c1, const ubit_t *c2, ubit_t *hi, ubit_t *di)
Interleave MCS7 UL burst bits according to TS 05.03 5.1.11.2.4.
Definition: gsm0503_interleaving.c:424
static void tch_efr_d_to_w(ubit_t *b_bits, const ubit_t *d_bits)
Definition: gsm0503_coding.c:1676
@ EGPRS_MCS5
Definition: gsm0503_coding.h:25
int gsm0503_xcch_encode(ubit_t *bursts, const uint8_t *l2_data)
Encoding of xCCH data from L2 frame to bursts.
Definition: gsm0503_coding.c:657
const uint8_t gsm0503_puncture_mcs7_p1[1404]
Definition: gsm0503_tables.c:853
static void tch_hr_disassemble(ubit_t *b_bits, const uint8_t *tch_data)
Definition: gsm0503_coding.c:1579
int gsm0503_tch_afs_decode(uint8_t *tch_data, const sbit_t *bursts, int codec_mode_req, uint8_t *codec, int codecs, uint8_t *ft, uint8_t *cmr, int *n_errors, int *n_bits_total)
Perform channel decoding of a TCH/AFS channel according TS 05.03.
Definition: gsm0503_coding.c:2088
const struct osmo_crc16gen_code gsm0503_cs234_crc16
GSM PDTCH CS-2, CS-3, CS-4 parity.
Definition: gsm0503_parity.c:55
static int egprs_type3_unmap(const sbit_t *bursts, sbit_t *hc, sbit_t *dc)
Definition: gsm0503_coding.c:680
uint8_t hdr_code_len
Length of header convolutional code.
Definition: gsm0503_coding.c:159
const ubit_t gsm0503_pdtch_hl_hn_ubit[4][8]
Definition: gsm0503_tables.c:40
void gsm0503_mcs8_dl_deinterleave(sbit_t *hc, sbit_t *c1, sbit_t *c2, const sbit_t *hi, const sbit_t *di)
De-Interleave MCS8 DL burst bits according to TS 05.03 5.1.12.1.5.
Definition: gsm0503_interleaving.c:578
static void tch_hr_reassemble(uint8_t *tch_data, const ubit_t *b_bits)
Definition: gsm0503_coding.c:1568
void gsm0503_mcs8_dl_interleave(const ubit_t *hc, const ubit_t *c1, const ubit_t *c2, ubit_t *hi, ubit_t *di)
Interleave MCS8 DL burst bits according to TS 05.03 5.1.12.1.5.
Definition: gsm0503_interleaving.c:549
const sbit_t gsm0503_pdtch_edge_hl_hn_sbit[3][8]
Definition: gsm0503_tables.c:60
void gsm0503_mcs7_dl_burst_unmap(sbit_t *di, const sbit_t *eB, sbit_t *hi, sbit_t *up, int B)
Definition: gsm0503_mapping.c:196
void gsm0503_mcs7_ul_burst_unmap(sbit_t *di, const sbit_t *eB, sbit_t *hi, int B)
Definition: gsm0503_mapping.c:234
static void tch_fr_d_to_b(ubit_t *b_bits, const ubit_t *d_bits)
Definition: gsm0503_coding.c:1627
const sbit_t gsm0503_pdtch_hl_hn_sbit[4][8]
Definition: gsm0503_tables.c:53
void gsm0503_mcs1_dl_interleave(const ubit_t *up, const ubit_t *hc, const ubit_t *dc, ubit_t *iB)
Interleave MCS1 DL burst bits according to TS 05.03 5.1.5.1.5.
Definition: gsm0503_interleaving.c:157
static int _egprs_decode_hdr(const sbit_t *hc, int mcs, union gprs_rlc_ul_hdr_egprs *hdr)
Definition: gsm0503_coding.c:752
static int16_t rach_decode_ber(const sbit_t *burst, uint8_t bsic, bool is_11bit, int *n_errors, int *n_bits_total)
Definition: gsm0503_coding.c:2852
void gsm0503_mcs7_dl_burst_map(const ubit_t *di, ubit_t *eB, const ubit_t *hi, const ubit_t *up, int B)
Definition: gsm0503_mapping.c:174
int gsm0503_rach_decode(uint8_t *ra, const sbit_t *burst, uint8_t bsic) OSMO_DEPRECATED("Use gsm0503_rach_decode_ber() instead")
Decode the (8-bit) RACH according to TS 05.03.
Definition: gsm0503_coding.c:2895
@ EGPRS_MCS0
Definition: gsm0503_coding.h:20
int gsm0503_tch_afs_encode(ubit_t *bursts, const uint8_t *tch_data, int len, int codec_mode_req, uint8_t *codec, int codecs, uint8_t ft, uint8_t cmr)
Perform channel encoding on a TCH/AFS channel according to TS 05.03.
Definition: gsm0503_coding.c:2293
const uint8_t gsm0503_puncture_mcs7_p2[1404]
Definition: gsm0503_tables.c:934
static int egprs_encode_hdr(ubit_t *hc, const uint8_t *l2_data, int mcs)
Definition: gsm0503_coding.c:1218
const uint8_t gsm0503_puncture_mcs7_p3[1404]
Definition: gsm0503_tables.c:1015
#define EGPRS_HDR_HC_MAX
Definition: gsm0503_coding.c:119
const uint8_t gsm0503_puncture_cs2[588]
Definition: gsm0503_tables.c:99
int gsm0503_rach_encode(ubit_t *burst, const uint8_t *ra, uint8_t bsic) OSMO_DEPRECATED("Use gsm0503_rach_ext_encode() instead")
Encode the (8-bit) RACH according to TS 05.03.
Definition: gsm0503_coding.c:2948
void gsm0503_tch_hr_interleave(const ubit_t *cB, ubit_t *iB)
GSM TCH HR/AHS Interleaving and burst mapping.
Definition: gsm0503_interleaving.c:674
void gsm0503_mcs5_ul_interleave(const ubit_t *hc, const ubit_t *dc, ubit_t *hi, ubit_t *di)
Interleave MCS5 UL burst bits according to TS 05.03 5.1.9.2.4.
Definition: gsm0503_interleaving.c:263
union across the three different EGPRS Uplink header types
Definition: gsm0503_coding.c:135
#define EGPRS_DATA_DC_MAX
Definition: gsm0503_coding.c:128
void gsm0503_mcs7_dl_deinterleave(sbit_t *hc, sbit_t *c1, sbit_t *c2, const sbit_t *hi, const sbit_t *di)
De-Interleave MCS7 DL burst bits according to TS 05.03 5.1.11.1.5.
Definition: gsm0503_interleaving.c:391
const uint8_t gsm0503_puncture_mcs1_ul_hdr[117]
Definition: gsm0503_tables.c:154
const struct gsm0503_mcs_code gsm0503_mcs_ul_codes[EGPRS_NUM_MCS]
Definition: gsm0503_coding.c:183
const ubit_t gsm0503_usf2six[8][6]
Definition: gsm0503_tables.c:66
@ EGPRS_MCS3
Definition: gsm0503_coding.h:23
uint8_t hdr_punc_len
Length of header code puncturing sequence.
Definition: gsm0503_coding.c:161
int gsm0503_tch_fr_decode(uint8_t *tch_data, const sbit_t *bursts, int net_order, int efr, int *n_errors, int *n_bits_total)
Perform channel decoding of a FR/EFR channel according TS 05.03.
Definition: gsm0503_coding.c:1796
int gsm0503_tch_ahs_decode(uint8_t *tch_data, const sbit_t *bursts, int odd, int codec_mode_req, uint8_t *codec, int codecs, uint8_t *ft, uint8_t *cmr, int *n_errors, int *n_bits_total)
Perform channel decoding of a TCH/AFS channel according TS 05.03.
Definition: gsm0503_coding.c:2467
struct gprs_rlc_ul_header_egprs_1 type1
Definition: gsm0503_coding.c:136
uint8_t mcs
Modulation and Coding Scheme (MSC) number.
Definition: gsm0503_coding.c:151
void gsm0503_xcch_burst_unmap(sbit_t *iB, const sbit_t *eB, sbit_t *hl, sbit_t *hn)
Definition: gsm0503_mapping.c:40
static void tch_amr_disassemble(ubit_t *d_bits, const uint8_t *tch_data, int len)
Definition: gsm0503_coding.c:1618
void gsm0503_mcs5_dl_deinterleave(sbit_t *hc, sbit_t *dc, const sbit_t *hi, const sbit_t *di)
De-Interleave MCS5 UL burst bits according to TS 05.03 5.1.9.1.5.
Definition: gsm0503_interleaving.c:334
int gsm0503_tch_hr_encode(ubit_t *bursts, const uint8_t *tch_data, int len)
Perform channel encoding on a TCH/HS channel according to TS 05.03.
Definition: gsm0503_coding.c:2020
@ EGPRS_NUM_MCS
Definition: gsm0503_coding.h:30