libosmocoding
0.11.0-dirty
Osmocom GSM/GPRS/EGPRS L1 channel coding library
|
00001 00005 #pragma once 00006 00007 #include <stdint.h> 00008 00009 #include <osmocom/core/defs.h> 00010 #include <osmocom/core/bits.h> 00011 00016 #define GSM0503_GPRS_BURSTS_NBITS (116 * 4) 00017 #define GSM0503_EGPRS_BURSTS_NBITS (348 * 4) 00018 00019 enum gsm0503_egprs_mcs { 00020 EGPRS_MCS0, 00021 EGPRS_MCS1, 00022 EGPRS_MCS2, 00023 EGPRS_MCS3, 00024 EGPRS_MCS4, 00025 EGPRS_MCS5, 00026 EGPRS_MCS6, 00027 EGPRS_MCS7, 00028 EGPRS_MCS8, 00029 EGPRS_MCS9, 00030 EGPRS_NUM_MCS, 00031 }; 00032 00033 int gsm0503_xcch_encode(ubit_t *bursts, const uint8_t *l2_data); 00034 int gsm0503_xcch_decode(uint8_t *l2_data, const sbit_t *bursts, 00035 int *n_errors, int *n_bits_total); 00036 00037 int gsm0503_pdtch_encode(ubit_t *bursts, const uint8_t *l2_data, uint8_t l2_len); 00038 int gsm0503_pdtch_decode(uint8_t *l2_data, const sbit_t *bursts, uint8_t *usf_p, 00039 int *n_errors, int *n_bits_total); 00040 00041 int gsm0503_pdtch_egprs_encode(ubit_t *bursts, const uint8_t *l2_data, 00042 uint8_t l2_len); 00043 int gsm0503_pdtch_egprs_decode(uint8_t *l2_data, const sbit_t *bursts, 00044 uint16_t nbits, uint8_t *usf_p, int *n_errors, int *n_bits_total); 00045 00046 int gsm0503_tch_fr_encode(ubit_t *bursts, const uint8_t *tch_data, int len, 00047 int net_order); 00048 int gsm0503_tch_fr_decode(uint8_t *tch_data, const sbit_t *bursts, int net_order, 00049 int efr, int *n_errors, int *n_bits_total); 00050 00051 int gsm0503_tch_hr_encode(ubit_t *bursts, const uint8_t *tch_data, int len); 00052 int gsm0503_tch_hr_decode(uint8_t *tch_data, const sbit_t *bursts, int odd, 00053 int *n_errors, int *n_bits_total); 00054 00055 int gsm0503_tch_afs_encode(ubit_t *bursts, const uint8_t *tch_data, int len, 00056 int codec_mode_req, uint8_t *codec, int codecs, uint8_t ft, 00057 uint8_t cmr); 00058 int gsm0503_tch_afs_decode(uint8_t *tch_data, const sbit_t *bursts, 00059 int codec_mode_req, uint8_t *codec, int codecs, uint8_t *ft, 00060 uint8_t *cmr, int *n_errors, int *n_bits_total); 00061 00062 int gsm0503_tch_ahs_encode(ubit_t *bursts, const uint8_t *tch_data, int len, 00063 int codec_mode_req, uint8_t *codec, int codecs, uint8_t ft, uint8_t cmr); 00064 int gsm0503_tch_ahs_decode(uint8_t *tch_data, const sbit_t *bursts, int odd, 00065 int codec_mode_req, uint8_t *codec, int codecs, uint8_t *ft, 00066 uint8_t *cmr, int *n_errors, int *n_bits_total); 00067 00068 int gsm0503_rach_ext_encode(ubit_t *burst, uint16_t ra, uint8_t bsic, bool is_11bit); 00069 int gsm0503_rach_encode(ubit_t *burst, const uint8_t *ra, uint8_t bsic) OSMO_DEPRECATED("Use gsm0503_rach_ext_encode() instead"); 00070 00071 int gsm0503_rach_decode(uint8_t *ra, const sbit_t *burst, uint8_t bsic) 00072 OSMO_DEPRECATED("Use gsm0503_rach_decode_ber() instead"); 00073 int gsm0503_rach_decode_ber(uint8_t *ra, const sbit_t *burst, uint8_t bsic, 00074 int *n_errors, int *n_bits_total); 00075 int gsm0503_rach_ext_decode(uint16_t *ra, const sbit_t *burst, uint8_t bsic) 00076 OSMO_DEPRECATED("Use gsm0503_rach_ext_decode_ber() instead"); 00077 int gsm0503_rach_ext_decode_ber(uint16_t *ra, const sbit_t *burst, uint8_t bsic, 00078 int *n_errors, int *n_bits_total); 00079 00080 int gsm0503_sch_encode(ubit_t *burst, const uint8_t *sb_info); 00081 int gsm0503_sch_decode(uint8_t *sb_info, const sbit_t *burst); 00082