|
libosmogsm UNKNOWN
Osmocom GSM library
|
#include <string.h>#include <stdlib.h>#include <errno.h>#include <stdbool.h>#include <osmocom/core/bitvec.h>#include <osmocom/gsm/bitvec_gsm.h>#include <osmocom/gsm/sysinfo.h>#include <osmocom/gsm/gsm48_arfcn_range_encode.h>#include <osmocom/gsm/gsm48_rest_octets.h>Data Structures | |
| struct | nch_pos |
Functions | |
| int | osmo_gsm48_rest_octets_si1_encode (uint8_t *data, uint8_t *nch_pos, int is1800_net) |
| int | osmo_gsm48_si1ro_nch_pos_decode (uint8_t value, uint8_t *num_blocks, uint8_t *first_block) |
| Decode the 5-bit 'NCH position' field within SI1 Rest Octets. | |
| int | osmo_gsm48_si1ro_nch_pos_encode (uint8_t num_blocks, uint8_t first_block) |
| Encode the 5-bit 'NCH position' field within SI1 Rest Octets. | |
| static bool | append_eutran_neib_cell (struct bitvec *bv, const struct osmo_earfcn_si2q *e, size_t *e_offset, uint8_t budget) |
| static void | append_earfcn (struct bitvec *bv, const struct osmo_earfcn_si2q *e, size_t *e_offset, uint8_t budget) |
| static int | range_encode (enum osmo_gsm48_range r, int *arfcns, int arfcns_used, int *w, int f0, uint8_t *chan_list) |
| static int | f0_helper (int *sc, size_t length, uint8_t *chan_list) |
| static unsigned | range1024_p (unsigned n) |
| static int | append_utran_fdd_length (uint16_t u, const int *sc, size_t sc_len, size_t length) |
| static int | append_utran_fdd (struct bitvec *bv, uint16_t u, int *sc, size_t length) |
| static int | try_adding_uarfcn (struct bitvec *bv, uint16_t *scramble_list, size_t uarfcn_length, size_t *u_offset, uint16_t uarfcn, uint8_t num_sc, uint8_t start_pos, uint8_t budget) |
| static void | append_uarfcns (struct bitvec *bv, const uint16_t *uarfcn_list, size_t *u_offset, size_t uarfcn_length, uint16_t *scramble_list, uint8_t budget) |
| static size_t | si2q_earfcn_count (const struct osmo_earfcn_si2q *e) |
| int | osmo_gsm48_rest_octets_si2quater_encode (uint8_t *data, uint8_t si2q_index, uint8_t si2q_count, const uint16_t *uarfcn_list, size_t *u_offset, size_t uarfcn_length, uint16_t *scramble_list, struct osmo_earfcn_si2q *si2quater_neigh_list, size_t *e_offset) |
| static void | append_selection_params (struct bitvec *bv, const struct osmo_gsm48_si_selection_params *sp) |
| static void | append_power_offset (struct bitvec *bv, const struct osmo_gsm48_si_power_offset *po) |
| static void | append_gprs_ind (struct bitvec *bv, const struct osmo_gsm48_si3_gprs_ind *gi) |
| int | osmo_gsm48_rest_octets_si3_encode (uint8_t *data, const struct osmo_gsm48_si_ro_info *si3) |
| static int | append_lsa_params (struct bitvec *bv, const struct osmo_gsm48_lsa_params *lsa_params) |
| int | osmo_gsm48_rest_octets_si4_encode (uint8_t *data, const struct osmo_gsm48_si_ro_info *si4, int len) |
| int | osmo_gsm48_rest_octets_si6_encode (uint8_t *data, const struct osmo_gsm48_si6_ro_info *in) |
| static unsigned int | decode_t3192 (unsigned int t3192) |
| static unsigned int | decode_drx_timer (unsigned int drx) |
| static int | decode_gprs_cell_opt (struct osmo_gprs_cell_options *gco, struct bitvec *bv) |
| static void | decode_gprs_pwr_ctrl_pars (struct osmo_gprs_power_ctrl_pars *pcp, struct bitvec *bv) |
| int | osmo_gsm48_rest_octets_si13_decode (struct osmo_gsm48_si13_info *si13, const uint8_t *data) |
| Decode SI13 Rest Octests (04.08 Chapter 10.5.2.37b). | |
| static int | append_gprs_mobile_alloc (struct bitvec *bv) |
| static int | encode_t3192 (unsigned int t3192) |
| static int | encode_drx_timer (unsigned int drx) |
| static int | append_gprs_cell_opt (struct bitvec *bv, const struct osmo_gprs_cell_options *gco) |
| static void | append_gprs_pwr_ctrl_pars (struct bitvec *bv, const struct osmo_gprs_power_ctrl_pars *pcp) |
| int | osmo_gsm48_rest_octets_si13_encode (uint8_t *data, const struct osmo_gsm48_si13_info *si13) |
| void | osmo_gsm48_rest_octets_si3_decode (struct osmo_gsm48_si_ro_info *si3, const uint8_t *data) |
| Decode SI3 Rest Octests (Chapter 10.5.2.34 / Table 10.4.72). | |
| void | osmo_gsm48_rest_octets_si4_decode (struct osmo_gsm48_si_ro_info *si4, const uint8_t *data, int len) |
Variables | |
| static const struct nch_pos | si1ro_nch_positions [] |
|
inlinestatic |
References append_earfcn(), append_eutran_neib_cell(), bitvec::cur_bit, and SI2Q_MAX_LEN.
Referenced by append_earfcn(), and osmo_gsm48_rest_octets_si2quater_encode().
|
inlinestatic |
References append_eutran_neib_cell(), osmo_earfcn_si2q::arfcn, osmo_earfcn_si2q::length, osmo_earfcn_si2q::meas_bw, OSMO_EARFCN_INVALID, OSMO_EARFCN_MEAS_INVALID, osmo_earfcn_si2q::prio, osmo_earfcn_si2q::prio_valid, osmo_earfcn_si2q::qrxlm, osmo_earfcn_si2q::qrxlm_valid, SI2Q_MAX_LEN, osmo_earfcn_si2q::thresh_hi, osmo_earfcn_si2q::thresh_lo, and osmo_earfcn_si2q::thresh_lo_valid.
Referenced by append_earfcn(), and append_eutran_neib_cell().
|
static |
References append_gprs_cell_opt(), osmo_gprs_cell_options::bs_cv_max, osmo_gprs_cell_options::ctrl_ack_type_use_block, osmo_gprs_cell_options::drx_timer_max, encode_drx_timer(), encode_t3192(), osmo_gprs_cell_options::ext_info, osmo_gprs_cell_options::ext_info_present, osmo_gprs_cell_options::nmo, osmo_gprs_cell_options::t3168, and osmo_gprs_cell_options::t3192.
Referenced by append_gprs_cell_opt(), and osmo_gsm48_rest_octets_si13_encode().
|
static |
|
static |
References append_gprs_mobile_alloc().
Referenced by append_gprs_mobile_alloc(), and osmo_gsm48_rest_octets_si13_encode().
|
static |
References osmo_gprs_power_ctrl_pars::alpha, append_gprs_pwr_ctrl_pars(), osmo_gprs_power_ctrl_pars::n_avg_i, osmo_gprs_power_ctrl_pars::pc_meas_chan, osmo_gprs_power_ctrl_pars::t_avg_t, and osmo_gprs_power_ctrl_pars::t_avg_w.
Referenced by append_gprs_pwr_ctrl_pars(), and osmo_gsm48_rest_octets_si13_encode().
|
static |
References append_lsa_params().
Referenced by append_lsa_params(), and osmo_gsm48_rest_octets_si4_encode().
|
static |
|
static |
References append_selection_params(), osmo_gsm48_si_selection_params::cbq, osmo_gsm48_si_selection_params::cell_resel_off, osmo_gsm48_si_selection_params::penalty_time, osmo_gsm48_si_selection_params::present, and osmo_gsm48_si_selection_params::temp_offs.
Referenced by append_selection_params(), osmo_gsm48_rest_octets_si3_encode(), and osmo_gsm48_rest_octets_si4_encode().
|
inlinestatic |
References append_uarfcns(), SI2Q_MAX_LEN, and try_adding_uarfcn().
Referenced by append_uarfcns(), and osmo_gsm48_rest_octets_si2quater_encode().
|
inlinestatic |
References append_utran_fdd(), bitvec_add_range1024(), bitvec::cur_bit, f0_helper(), length, and range1024_p().
Referenced by append_utran_fdd(), and try_adding_uarfcn().
|
inlinestatic |
References append_utran_fdd_length(), f0_helper(), length, and range1024_p().
Referenced by append_utran_fdd_length(), and try_adding_uarfcn().
|
static |
References decode_drx_timer().
Referenced by decode_drx_timer(), and decode_gprs_cell_opt().
|
static |
References osmo_gprs_cell_options::bs_cv_max, osmo_gprs_cell_options::ctrl_ack_type_use_block, bitvec::cur_bit, decode_drx_timer(), decode_gprs_cell_opt(), decode_t3192(), osmo_gprs_cell_options::drx_timer_max, osmo_gprs_cell_options::ext_info, osmo_gprs_cell_options::nmo, osmo_gprs_cell_options::t3168, and osmo_gprs_cell_options::t3192.
Referenced by decode_gprs_cell_opt(), and osmo_gsm48_rest_octets_si13_decode().
|
static |
References osmo_gprs_power_ctrl_pars::alpha, decode_gprs_pwr_ctrl_pars(), osmo_gprs_power_ctrl_pars::n_avg_i, osmo_gprs_power_ctrl_pars::pc_meas_chan, osmo_gprs_power_ctrl_pars::t_avg_t, and osmo_gprs_power_ctrl_pars::t_avg_w.
Referenced by decode_gprs_pwr_ctrl_pars(), and osmo_gsm48_rest_octets_si13_decode().
|
static |
References decode_t3192().
Referenced by decode_gprs_cell_opt(), and decode_t3192().
|
static |
References encode_drx_timer().
Referenced by append_gprs_cell_opt(), and encode_drx_timer().
|
static |
References encode_t3192().
Referenced by append_gprs_cell_opt(), and encode_t3192().
|
inlinestatic |
References f0_helper(), length, OSMO_GSM48_ARFCN_RANGE_1024, OSMO_GSM48_RANGE_ENC_MAX_ARFCNS, and range_encode().
Referenced by append_utran_fdd(), append_utran_fdd_length(), and f0_helper().
| int osmo_gsm48_rest_octets_si13_decode | ( | struct osmo_gsm48_si13_info * | si13, |
| const uint8_t * | data ) |
Decode SI13 Rest Octests (04.08 Chapter 10.5.2.37b).
| [out] | si13 | decoded SI13 rest octets |
| [in] | encoded | SI13 rest octets |
References osmo_gsm48_si13_info::bcch_change_mark, osmo_gsm48_si13_info::cell_opts, bitvec::cur_bit, bitvec::data, bitvec::data_len, decode_gprs_cell_opt(), decode_gprs_pwr_ctrl_pars(), ENOTSUP, osmo_gsm48_si13_info::net_ctrl_ord, osmo_gsm48_rest_octets_si13_decode(), osmo_gsm48_si13_info::prio_acc_thr, osmo_gsm48_si13_info::pwr_ctrl_pars, osmo_gsm48_si13_info::rac, osmo_gsm48_si13_info::si_change_field, and osmo_gsm48_si13_info::spgc_ccch_sup.
Referenced by osmo_gsm48_rest_octets_si13_decode().
| int osmo_gsm48_rest_octets_si13_encode | ( | uint8_t * | data, |
| const struct osmo_gsm48_si13_info * | si13 ) |
References append_gprs_cell_opt(), append_gprs_mobile_alloc(), append_gprs_pwr_ctrl_pars(), osmo_gsm48_si13_info::bcch_change_mark, osmo_gsm48_si13_info::cell_opts, bitvec::data, bitvec::data_len, osmo_gsm48_si13_info::net_ctrl_ord, osmo_gsm48_rest_octets_si13_encode(), osmo_gsm48_si13_info::prio_acc_thr, osmo_gsm48_si13_info::pwr_ctrl_pars, osmo_gsm48_si13_info::rac, osmo_gsm48_si13_info::si_change_field, and osmo_gsm48_si13_info::spgc_ccch_sup.
Referenced by osmo_gsm48_rest_octets_si13_encode().
| int osmo_gsm48_rest_octets_si1_encode | ( | uint8_t * | data, |
| uint8_t * | nch_pos, | ||
| int | is1800_net ) |
References bitvec::data, bitvec::data_len, and osmo_gsm48_rest_octets_si1_encode().
Referenced by osmo_gsm48_rest_octets_si1_encode().
| int osmo_gsm48_rest_octets_si2quater_encode | ( | uint8_t * | data, |
| uint8_t | si2q_index, | ||
| uint8_t | si2q_count, | ||
| const uint16_t * | uarfcn_list, | ||
| size_t * | u_offset, | ||
| size_t | uarfcn_length, | ||
| uint16_t * | scramble_list, | ||
| struct osmo_earfcn_si2q * | si2quater_neigh_list, | ||
| size_t * | e_offset ) |
| void osmo_gsm48_rest_octets_si3_decode | ( | struct osmo_gsm48_si_ro_info * | si3, |
| const uint8_t * | data ) |
Decode SI3 Rest Octests (Chapter 10.5.2.34 / Table 10.4.72).
| [out] | si3 | decoded SI3 rest octets |
| [in] | encoded | SI3 rest octets, 4 octets long |
References osmo_gsm48_si_selection_params::cbq, osmo_gsm48_si_selection_params::cell_resel_off, bitvec::data, bitvec::data_len, osmo_gsm48_si_ro_info::early_cm_ctrl, osmo_gsm48_si_ro_info::early_cm_restrict_3g, osmo_gsm48_si_ro_info::gprs_ind, osmo_gsm48_rest_octets_si3_decode(), osmo_gsm48_si_selection_params::penalty_time, osmo_gsm48_si_power_offset::power_offset, osmo_gsm48_si_ro_info::power_offset, osmo_gsm48_si3_gprs_ind::present, osmo_gsm48_si_power_offset::present, osmo_gsm48_si_selection_params::present, osmo_gsm48_si3_gprs_ind::ra_colour, osmo_gsm48_si_ro_info::scheduling, osmo_gsm48_si_ro_info::selection_params, osmo_gsm48_si3_gprs_ind::si13_position, osmo_gsm48_si_ro_info::si2quater_indicator, osmo_gsm48_si_ro_info::si2ter_indicator, and osmo_gsm48_si_selection_params::temp_offs.
Referenced by osmo_gsm48_rest_octets_si3_decode().
| int osmo_gsm48_rest_octets_si3_encode | ( | uint8_t * | data, |
| const struct osmo_gsm48_si_ro_info * | si3 ) |
References append_gprs_ind(), append_power_offset(), append_selection_params(), bitvec::data, bitvec::data_len, osmo_gsm48_si_ro_info::early_cm_ctrl, osmo_gsm48_si_ro_info::early_cm_restrict_3g, osmo_gsm48_si_ro_info::gprs_ind, osmo_gsm48_rest_octets_si3_encode(), osmo_gsm48_si_ro_info::power_offset, osmo_gsm48_si_ro_info::scheduling, osmo_gsm48_si_ro_info::selection_params, osmo_gsm48_si_ro_info::si2quater_indicator, and osmo_gsm48_si_ro_info::si2ter_indicator.
Referenced by osmo_gsm48_rest_octets_si3_encode().
| void osmo_gsm48_rest_octets_si4_decode | ( | struct osmo_gsm48_si_ro_info * | si4, |
| const uint8_t * | data, | ||
| int | len ) |
References osmo_gsm48_si_selection_params::cbq, osmo_gsm48_si_selection_params::cell_resel_off, bitvec::data, bitvec::data_len, osmo_gsm48_si_ro_info::gprs_ind, len, osmo_gsm48_rest_octets_si4_decode(), osmo_gsm48_si_selection_params::penalty_time, osmo_gsm48_si_power_offset::power_offset, osmo_gsm48_si_ro_info::power_offset, osmo_gsm48_si3_gprs_ind::present, osmo_gsm48_si_power_offset::present, osmo_gsm48_si_selection_params::present, osmo_gsm48_si3_gprs_ind::ra_colour, osmo_gsm48_si_ro_info::selection_params, osmo_gsm48_si3_gprs_ind::si13_position, and osmo_gsm48_si_selection_params::temp_offs.
Referenced by osmo_gsm48_rest_octets_si4_decode().
| int osmo_gsm48_rest_octets_si4_encode | ( | uint8_t * | data, |
| const struct osmo_gsm48_si_ro_info * | si4, | ||
| int | len ) |
References append_gprs_ind(), append_lsa_params(), append_power_offset(), append_selection_params(), osmo_gsm48_si_ro_info::break_ind, osmo_gsm48_si_ro_info::cell_id, bitvec::data, bitvec::data_len, osmo_gsm48_si_ro_info::gprs_ind, len, osmo_gsm48_si_ro_info::lsa_params, osmo_gsm48_rest_octets_si4_encode(), osmo_gsm48_si_ro_info::power_offset, osmo_gsm48_lsa_params::present, and osmo_gsm48_si_ro_info::selection_params.
Referenced by osmo_gsm48_rest_octets_si4_encode().
| int osmo_gsm48_rest_octets_si6_encode | ( | uint8_t * | data, |
| const struct osmo_gsm48_si6_ro_info * | in ) |
References osmo_gsm48_si6_ro_info::band_indicator_1900, osmo_gsm48_si_pch_nch_info::call_priority, osmo_gsm48_si_pch_nch_info::call_priority_present, bitvec::data, bitvec::data_len, osmo_gsm48_si6_ro_info::dtm_support, osmo_gsm48_si6_ro_info::gprs_ms_txpwr_max_ccch, osmo_gsm48_si_vbs_vgcs_options::inband_notifications, osmo_gsm48_si_vbs_vgcs_options::inband_pagings, osmo_gsm48_si_dtm_support::max_lapdm, osmo_gsm48_si_gprs_ms_txpwr_max_ccch::max_txpwr, osmo_gsm48_si_pch_nch_info::nln_sacch, osmo_gsm48_si_pch_nch_info::nln_status_sacch, osmo_gsm48_rest_octets_si6_encode(), osmo_gsm48_si_pch_nch_info::paging_channel_restructuring, osmo_gsm48_si6_ro_info::pch_nch_info, osmo_gsm48_si_dtm_support::present, osmo_gsm48_si_gprs_ms_txpwr_max_ccch::present, osmo_gsm48_si_pch_nch_info::present, osmo_gsm48_si_vbs_vgcs_options::present, osmo_gsm48_si_dtm_support::rac, and osmo_gsm48_si6_ro_info::vbs_vgcs_options.
Referenced by osmo_gsm48_rest_octets_si6_encode().
| int osmo_gsm48_si1ro_nch_pos_decode | ( | uint8_t | value, |
| uint8_t * | num_blocks, | ||
| uint8_t * | first_block ) |
Decode the 5-bit 'NCH position' field within SI1 Rest Octets.
| [in] | value | 5-bit value from SI1 rest octets |
| [out] | num_blocks | Number of CCCH used for NCH |
| [out] | first_block | First CCCH block used for NCH |
References nch_pos::first_block, nch_pos::num_blocks, osmo_gsm48_si1ro_nch_pos_decode(), and si1ro_nch_positions.
Referenced by osmo_gsm48_si1ro_nch_pos_decode().
| int osmo_gsm48_si1ro_nch_pos_encode | ( | uint8_t | num_blocks, |
| uint8_t | first_block ) |
Encode the 5-bit 'NCH position' field within SI1 Rest Octets.
| [in] | num_blocks | Number of CCCH used for NCH |
| [in] | first_block | First CCCH block used for NCH |
References nch_pos::first_block, nch_pos::num_blocks, osmo_gsm48_si1ro_nch_pos_encode(), and si1ro_nch_positions.
Referenced by osmo_gsm48_si1ro_nch_pos_encode().
|
static |
References range1024_p().
Referenced by append_utran_fdd(), append_utran_fdd_length(), and range1024_p().
|
static |
References OSMO_GSM48_ARFCN_RANGE_1024, OSMO_GSM48_ARFCN_RANGE_128, OSMO_GSM48_ARFCN_RANGE_256, OSMO_GSM48_ARFCN_RANGE_512, osmo_gsm48_range_enc_1024(), osmo_gsm48_range_enc_128(), osmo_gsm48_range_enc_256(), osmo_gsm48_range_enc_512(), osmo_gsm48_range_enc_arfcns(), osmo_gsm48_range_enc_filter_arfcns(), and range_encode().
Referenced by f0_helper(), and range_encode().
|
static |
References osmo_earfcn_si2q::arfcn, osmo_earfcn_si2q::length, OSMO_EARFCN_INVALID, and si2q_earfcn_count().
Referenced by osmo_gsm48_rest_octets_si2quater_encode(), and si2q_earfcn_count().
|
inlinestatic |
References append_utran_fdd(), append_utran_fdd_length(), and try_adding_uarfcn().
Referenced by append_uarfcns(), and try_adding_uarfcn().
|
static |
Referenced by osmo_gsm48_si1ro_nch_pos_decode(), and osmo_gsm48_si1ro_nch_pos_encode().