libosmogsm
0.11.0-dirty
Osmocom GSM library
|
helper functions for (E)GPRS RLC according to 3GPP TS 44.060. More...
#include <errno.h>
#include <string.h>
#include <osmocom/core/utils.h>
#include <osmocom/gprs/gprs_rlc.h>
#include <osmocom/coding/gsm0503_coding.h>
#include <osmocom/gprs/protocol/gsm_04_60.h>
Data Structures | |
struct | gprs_cs_desc |
Defines | |
#define | EGPRS_CPS_TYPE1_TBL_SZ 29 |
#define | EGPRS_CPS_TYPE2_TBL_SZ 8 |
#define | EGPRS_CPS_TYPE3_TBL_SZ 16 |
Functions | |
int | egprs_get_cps (struct egprs_cps *cps, uint8_t type, uint8_t bits) |
int | osmo_gprs_ul_block_size_bits (enum osmo_gprs_cs cs) |
Return size of (E)GPRS uplink block for given coding scheme in bits. | |
int | osmo_gprs_dl_block_size_bits (enum osmo_gprs_cs cs) |
Return size of (E)GPRS downlink block for given coding scheme in bits. | |
int | osmo_gprs_ul_block_size_bytes (enum osmo_gprs_cs cs) |
Return size of (E)GPRS uplink block for given coding scheme in bytes. | |
int | osmo_gprs_dl_block_size_bytes (enum osmo_gprs_cs cs) |
Return size of (E)GPRS downlink block for given coding scheme in bytes. | |
enum osmo_gprs_cs | osmo_gprs_ul_cs_by_block_bytes (uint8_t block_size) |
Return coding scheme for given (E)GPRS uplink block size. | |
enum osmo_gprs_cs | osmo_gprs_dl_cs_by_block_bytes (uint8_t block_size) |
Return coding scheme for given (E)GPRS downlink block size. | |
Variables | |
static struct egprs_cps | egprs_cps_table_type1 [EGPRS_CPS_TYPE1_TBL_SZ] |
static struct egprs_cps | egprs_cps_table_type2 [EGPRS_CPS_TYPE2_TBL_SZ] |
static struct egprs_cps | egprs_cps_table_type3 [EGPRS_CPS_TYPE3_TBL_SZ] |
struct gprs_cs_desc | gprs_cs_desc [_NUM_OSMO_GPRS_CS] |
helper functions for (E)GPRS RLC according to 3GPP TS 44.060.
(C) 2016 by Thomas Thou (C) 2016-2017 by sysmocom - s.f.m.c. GmbH (C) 2017 by Harald Welte <laforge@gnumonks.org> All Rights Reserved.
SPDX-License-Identifier: GPL-2.0+
#define EGPRS_CPS_TYPE1_TBL_SZ 29 |
Referenced by egprs_get_cps().
#define EGPRS_CPS_TYPE2_TBL_SZ 8 |
Referenced by egprs_get_cps().
#define EGPRS_CPS_TYPE3_TBL_SZ 16 |
Referenced by egprs_get_cps().
int egprs_get_cps | ( | struct egprs_cps * | cps, |
uint8_t | type, | ||
uint8_t | bits | ||
) |
int osmo_gprs_dl_block_size_bits | ( | enum osmo_gprs_cs | cs | ) |
Return size of (E)GPRS downlink block for given coding scheme in bits.
References ARRAY_SIZE, gprs_cs_desc::bits, gprs_cs_desc::bytes, and gprs_cs_desc::downlink.
int osmo_gprs_dl_block_size_bytes | ( | enum osmo_gprs_cs | cs | ) |
Return size of (E)GPRS downlink block for given coding scheme in bytes.
References ARRAY_SIZE, gprs_cs_desc::bytes, and gprs_cs_desc::downlink.
Referenced by osmo_gprs_dl_cs_by_block_bytes().
enum osmo_gprs_cs osmo_gprs_dl_cs_by_block_bytes | ( | uint8_t | block_size | ) |
Return coding scheme for given (E)GPRS downlink block size.
References ARRAY_SIZE, and osmo_gprs_dl_block_size_bytes().
int osmo_gprs_ul_block_size_bits | ( | enum osmo_gprs_cs | cs | ) |
Return size of (E)GPRS uplink block for given coding scheme in bits.
References ARRAY_SIZE, gprs_cs_desc::bits, gprs_cs_desc::bytes, and gprs_cs_desc::uplink.
int osmo_gprs_ul_block_size_bytes | ( | enum osmo_gprs_cs | cs | ) |
Return size of (E)GPRS uplink block for given coding scheme in bytes.
References ARRAY_SIZE, gprs_cs_desc::bytes, and gprs_cs_desc::uplink.
Referenced by osmo_gprs_ul_cs_by_block_bytes().
enum osmo_gprs_cs osmo_gprs_ul_cs_by_block_bytes | ( | uint8_t | block_size | ) |
Return coding scheme for given (E)GPRS uplink block size.
References ARRAY_SIZE, and osmo_gprs_ul_block_size_bytes().
struct egprs_cps egprs_cps_table_type1[EGPRS_CPS_TYPE1_TBL_SZ] [static] |
Referenced by egprs_get_cps().
struct egprs_cps egprs_cps_table_type2[EGPRS_CPS_TYPE2_TBL_SZ] [static] |
{ { .bits = 0, .mcs = EGPRS_MCS6, .p = { EGPRS_CPS_P1, EGPRS_CPS_NONE } }, { .bits = 1, .mcs = EGPRS_MCS6, .p = { EGPRS_CPS_P2, EGPRS_CPS_NONE } }, { .bits = 2, .mcs = EGPRS_MCS6, .p = { EGPRS_CPS_P1, EGPRS_CPS_NONE } }, { .bits = 3, .mcs = EGPRS_MCS6, .p = { EGPRS_CPS_P2, EGPRS_CPS_NONE } }, { .bits = 4, .mcs = EGPRS_MCS5, .p = { EGPRS_CPS_P1, EGPRS_CPS_NONE } }, { .bits = 5, .mcs = EGPRS_MCS5, .p = { EGPRS_CPS_P2, EGPRS_CPS_NONE } }, { .bits = 6, .mcs = EGPRS_MCS6, .p = { EGPRS_CPS_P1, EGPRS_CPS_NONE } }, { .bits = 7, .mcs = EGPRS_MCS6, .p = { EGPRS_CPS_P2, EGPRS_CPS_NONE } }, }
Referenced by egprs_get_cps().
struct egprs_cps egprs_cps_table_type3[EGPRS_CPS_TYPE3_TBL_SZ] [static] |
{ { .bits = 0, .mcs = EGPRS_MCS4, .p = { EGPRS_CPS_P1, EGPRS_CPS_NONE } }, { .bits = 1, .mcs = EGPRS_MCS4, .p = { EGPRS_CPS_P2, EGPRS_CPS_NONE } }, { .bits = 2, .mcs = EGPRS_MCS4, .p = { EGPRS_CPS_P3, EGPRS_CPS_NONE } }, { .bits = 3, .mcs = EGPRS_MCS3, .p = { EGPRS_CPS_P1, EGPRS_CPS_NONE } }, { .bits = 4, .mcs = EGPRS_MCS3, .p = { EGPRS_CPS_P2, EGPRS_CPS_NONE } }, { .bits = 5, .mcs = EGPRS_MCS3, .p = { EGPRS_CPS_P3, EGPRS_CPS_NONE } }, { .bits = 6, .mcs = EGPRS_MCS3, .p = { EGPRS_CPS_P1, EGPRS_CPS_NONE } }, { .bits = 7, .mcs = EGPRS_MCS3, .p = { EGPRS_CPS_P2, EGPRS_CPS_NONE } }, { .bits = 8, .mcs = EGPRS_MCS3, .p = { EGPRS_CPS_P3, EGPRS_CPS_NONE } }, { .bits = 9, .mcs = EGPRS_MCS2, .p = { EGPRS_CPS_P1, EGPRS_CPS_NONE } }, { .bits = 10, .mcs = EGPRS_MCS2, .p = { EGPRS_CPS_P2, EGPRS_CPS_NONE } }, { .bits = 11, .mcs = EGPRS_MCS1, .p = { EGPRS_CPS_P1, EGPRS_CPS_NONE } }, { .bits = 12, .mcs = EGPRS_MCS1, .p = { EGPRS_CPS_P2, EGPRS_CPS_NONE } }, { .bits = 13, .mcs = EGPRS_MCS2, .p = { EGPRS_CPS_P1, EGPRS_CPS_NONE } }, { .bits = 14, .mcs = EGPRS_MCS2, .p = { EGPRS_CPS_P2, EGPRS_CPS_NONE } }, { .bits = 15, .mcs = EGPRS_MCS0, .p = { EGPRS_CPS_NONE, EGPRS_CPS_NONE } }, }
Referenced by egprs_get_cps().
struct gprs_cs_desc gprs_cs_desc[_NUM_OSMO_GPRS_CS] |
{ [OSMO_GPRS_CS1] = { {23, 0}, {23, 0} }, [OSMO_GPRS_CS2] = { {33, 7}, {33, 7} }, [OSMO_GPRS_CS3] = { {39, 3}, {39, 3} }, [OSMO_GPRS_CS4] = { {53, 7}, {53, 7} }, [OSMO_GPRS_MCS1] = { {26, 1}, {26, 1} }, [OSMO_GPRS_MCS2] = { {32, 1}, {32, 1} }, [OSMO_GPRS_MCS3] = { {41, 1}, {41, 1} }, [OSMO_GPRS_MCS4] = { {48, 1}, {48, 1} }, [OSMO_GPRS_MCS5] = { {60, 7}, {59, 6} }, [OSMO_GPRS_MCS6] = { {78, 7}, {77, 6} }, [OSMO_GPRS_MCS7] = { {118, 2}, {117, 4} }, [OSMO_GPRS_MCS8] = { {142, 2}, {141, 4} }, [OSMO_GPRS_MCS9] = { {154, 2}, {153, 4} }, }