libosmogsm 1.10.0.10-24ad1
Osmocom GSM library
|
Files | |
file | gsm0502.h |
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 int | gsm0502_fncmp (uint32_t fn1, uint32_t fn2) |
Compare the given TDMA FNs, taking the wrapping into account. More... | |
static unsigned int | gsm0502_get_n_pag_blocks (const 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 (const 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... | |
int | gsm0502_fn2ccch_block (uint32_t fn) |
Calculate CCCH block number from the given TDMA frame number. More... | |
#define GSM_NBITS_AB_GMSK_BURST GSM_NBITS_NB_GMSK_BURST |
#define GSM_NBITS_AB_GMSK_ETAIL 8 |
#define GSM_NBITS_AB_GMSK_PAYLOAD 36 |
#define GSM_NBITS_AB_GMSK_SYNCH_SEQ 41 |
#define GSM_NBITS_AB_GMSK_TAIL GSM_NBITS_NB_GMSK_TAIL |
#define GSM_NBITS_DB_GMSK_BURST GSM_NBITS_NB_GMSK_BURST |
#define GSM_NBITS_DB_GMSK_MIXED 142 |
#define GSM_NBITS_DB_GMSK_TAIL GSM_NBITS_NB_GMSK_TAIL |
#define GSM_NBITS_NB_8PSK_BURST (GSM_NBITS_NB_GMSK_BURST * 3) |
#define GSM_NBITS_NB_8PSK_PAYLOAD (GSM_NBITS_NB_GMSK_PAYLOAD * 3) |
#define GSM_NBITS_NB_8PSK_TAIL (GSM_NBITS_NB_GMSK_TAIL * 3) |
#define GSM_NBITS_NB_8PSK_TRAIN_SEQ (GSM_NBITS_NB_GMSK_TRAIN_SEQ * 3) |
#define GSM_NBITS_NB_GMSK_BURST 148 /* without guard period */ |
#define GSM_NBITS_NB_GMSK_PAYLOAD (2 * 58) |
#define GSM_NBITS_NB_GMSK_TAIL 3 |
#define GSM_NBITS_NB_GMSK_TRAIN_SEQ 26 |
#define GSM_NBITS_SB_GMSK_BURST GSM_NBITS_NB_GMSK_BURST |
#define GSM_NBITS_SB_GMSK_ETRAIN_SEQ 64 |
#define GSM_NBITS_SB_GMSK_PAYLOAD (2 * 39) |
#define GSM_NBITS_SB_GMSK_TAIL GSM_NBITS_NB_GMSK_TAIL |
#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 | ( | const struct gsm48_control_channel_descr * | chan_desc, |
uint64_t | imsi | ||
) |
int gsm0502_fn2ccch_block | ( | uint32_t | fn | ) |
Calculate CCCH block number from the given TDMA frame number.
[in] | fn | TDMA frame number (of first or last burst). |
References ARRAY_SIZE, and ccch_block_table.
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, fn_remap_table_ptr, GSM_TDMA_FN_SUB, fn_remap_table::len, LOGL_ERROR, LOGP, and OSMO_ASSERT.
|
inlinestatic |
Compare the given TDMA FNs, taking the wrapping into account.
[in] | fn1 | First TDMA Fn value to compare. |
[in] | fn2 | Second TDMA Fn value to compare. |
References GSM_TDMA_HYPERFRAME.
|
inlinestatic |
|
inlinestatic |
References chan_desc, and RSL_BCCH_CCCH_CONF_1_C.
Referenced by gsm48_number_of_paging_subchannels().
|
inlinestatic |
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, n, rn_table, gsm_time::t1, gsm_time::t2, and gsm_time::t3.