libosmogsm
1.4.0.171-b3b83
Osmocom GSM library
|
#include <stdint.h>
#include <osmocom/gsm/protocol/gsm_04_08.h>
#include <osmocom/gsm/protocol/gsm_08_58.h>
Go to the source code of this file.
Macros | |
#define | GSM_TDMA_FN_DURATION_nS 4615384 /* in 1e−9 seconds (approx) */ |
#define | GSM_TDMA_FN_DURATION_uS 4615 /* in 1e-6 seconds (approx) */ |
#define | GSM_TDMA_SUPERFRAME (26 * 51) |
#define | GSM_TDMA_HYPERFRAME (2048 * GSM_TDMA_SUPERFRAME) |
#define | GSM_TDMA_FN_SUM(a, b) ((a + b) % GSM_TDMA_HYPERFRAME) |
Return the sum of two specified TDMA frame numbers (summation) More... | |
#define | GSM_TDMA_FN_SUB(a, b) ((a + GSM_TDMA_HYPERFRAME - b) % GSM_TDMA_HYPERFRAME) |
Return the difference of two specified TDMA frame numbers (subtraction) More... | |
#define | GSM_TDMA_FN_DIFF(a, b) OSMO_MIN(GSM_TDMA_FN_SUB(a, b), GSM_TDMA_FN_SUB(b, a)) |
Return the minimum difference of two specified TDMA frame numbers (distance) More... | |
#define | GSM_TDMA_FN_INC(fn) ((fn) = GSM_TDMA_FN_SUM((fn), 1)) |
Increment the given TDMA frame number by 1 and return the result (like ++fn) More... | |
#define | GSM_TDMA_FN_DEC(fn) ((fn) = GSM_TDMA_FN_SUB((fn), 1)) |
Decrement the given TDMA frame number by 1 and return the result (like –fn) More... | |
Enumerations | |
enum | gsm0502_fn_remap_channel { FN_REMAP_TCH_F, FN_REMAP_TCH_H0, FN_REMAP_TCH_H1, FN_REMAP_FACCH_F, FN_REMAP_FACCH_H0, FN_REMAP_FACCH_H1, FN_REMAP_MAX } |
Functions | |
static unsigned int | gsm0502_get_n_pag_blocks (struct gsm48_control_channel_descr *chan_desc) |
static unsigned int | gsm0502_get_ccch_group (uint64_t imsi, unsigned int bs_cc_chans, unsigned int n_pag_blocks) |
static unsigned int | gsm0502_get_paging_group (uint64_t imsi, unsigned int bs_cc_chans, int n_pag_blocks) |
unsigned int | gsm0502_calc_paging_group (struct gsm48_control_channel_descr *chan_desc, uint64_t imsi) |
uint32_t | gsm0502_fn_remap (uint32_t fn, enum gsm0502_fn_remap_channel channel) |
Calculate the frame number of the beginning of a block. More... | |
uint16_t | gsm0502_hop_seq_gen (const struct gsm_time *t, uint8_t hsn, uint8_t maio, size_t n, const uint16_t *ma) |
Hopping sequence generation as per 3GPP TS 45.002, section 6.2.3. More... | |
#define GSM_TDMA_FN_DEC | ( | fn | ) | ((fn) = GSM_TDMA_FN_SUB((fn), 1)) |
Decrement the given TDMA frame number by 1 and return the result (like –fn)
#define GSM_TDMA_FN_DIFF | ( | a, | |
b | |||
) | OSMO_MIN(GSM_TDMA_FN_SUB(a, b), GSM_TDMA_FN_SUB(b, a)) |
Return the minimum difference of two specified TDMA frame numbers (distance)
#define GSM_TDMA_FN_DURATION_nS 4615384 /* in 1e−9 seconds (approx) */ |
#define GSM_TDMA_FN_DURATION_uS 4615 /* in 1e-6 seconds (approx) */ |
#define GSM_TDMA_FN_INC | ( | fn | ) | ((fn) = GSM_TDMA_FN_SUM((fn), 1)) |
Increment the given TDMA frame number by 1 and return the result (like ++fn)
#define GSM_TDMA_FN_SUB | ( | a, | |
b | |||
) | ((a + GSM_TDMA_HYPERFRAME - b) % GSM_TDMA_HYPERFRAME) |
Return the difference of two specified TDMA frame numbers (subtraction)
#define GSM_TDMA_FN_SUM | ( | a, | |
b | |||
) | ((a + b) % GSM_TDMA_HYPERFRAME) |
Return the sum of two specified TDMA frame numbers (summation)
#define GSM_TDMA_HYPERFRAME (2048 * GSM_TDMA_SUPERFRAME) |
#define GSM_TDMA_SUPERFRAME (26 * 51) |
unsigned int gsm0502_calc_paging_group | ( | struct gsm48_control_channel_descr * | chan_desc, |
uint64_t | imsi | ||
) |
References gsm0502_get_paging_group(), gsm48_number_of_paging_subchannels(), and rsl_ccch_conf_to_bs_cc_chans().
Referenced by gsm0502_get_paging_group().
uint32_t gsm0502_fn_remap | ( | uint32_t | fn, |
enum gsm0502_fn_remap_channel | channel | ||
) |
Calculate the frame number of the beginning of a block.
[in] | fn | frame number of the block ending. |
[in] | channel | channel type (see also enum fn_remap_channel). |
References ARRAY_SIZE, fn_remap_table::blockend, fn_remap_table::cycle, fn_remap_table::distance, DLGLOBAL, GSM_MAX_FN, fn_remap_table::len, LOGL_ERROR, LOGP, and OSMO_ASSERT.
|
inlinestatic |
|
inlinestatic |
References RSL_BCCH_CCCH_CONF_1_C.
Referenced by gsm48_number_of_paging_subchannels().
|
inlinestatic |
References chan_desc, and gsm0502_calc_paging_group().
Referenced by gsm0502_calc_paging_group().
uint16_t gsm0502_hop_seq_gen | ( | const struct gsm_time * | t, |
uint8_t | hsn, | ||
uint8_t | maio, | ||
size_t | n, | ||
const uint16_t * | ma | ||
) |
Hopping sequence generation as per 3GPP TS 45.002, section 6.2.3.
[in] | t | GSM time (TDMA frame number, T1/T2/T3). |
[in] | hsn | Hopping Sequence Number. |
[in] | maio | Mobile Allocation Index Offset. |
[in] | n | number of entries in mobile allocation (arfcn table). |
[in] | ma | array of ARFCNs (sorted in ascending order) representing the Mobile Allocation. |
References gsm_time::fn, gsm_time::t1, gsm_time::t2, and gsm_time::t3.