libosmogsm 1.13.1.1-afb4 Osmocom GSM library

Data Structures | Macros | Functions
gsm48_rest_octets.h File Reference
`#include <stdbool.h>`
`#include <osmocom/gsm/sysinfo.h>`
`#include <osmocom/gsm/protocol/gsm_44_060.h>`

Go to the source code of this file.

## Data Structures
struct | osmo_gsm48_si_pch_nch_info
struct | osmo_gsm48_si_vbs_vgcs_options
struct | osmo_gsm48_si_dtm_support
struct | osmo_gsm48_si_gprs_ms_txpwr_max_ccch
struct | osmo_gsm48_si6_ro_info
struct | osmo_gsm48_si_selection_params
struct | osmo_gsm48_si_power_offset
struct | osmo_gsm48_si3_gprs_ind
struct | osmo_gsm48_lsa_params
struct | osmo_gsm48_si_ro_info
struct | osmo_gsm48_si13_info

## Macros
#define | SI2Q_MAX_NUM 16
#define | SI2Q_MAX_LEN 160
#define | SI2Q_MIN_LEN 18

## 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. More...
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. More...
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)
int | osmo_gsm48_rest_octets_si6_encode (uint8_t *data, const struct osmo_gsm48_si6_ro_info *in)
int | osmo_gsm48_rest_octets_si3_encode (uint8_t *data, const struct osmo_gsm48_si_ro_info *si3)
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_si13_decode (struct osmo_gsm48_si13_info *si13, const uint8_t *data)
| Decode SI13 Rest Octests (04.08 Chapter 10.5.2.37b). More...
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). More...
void | osmo_gsm48_rest_octets_si4_decode (struct osmo_gsm48_si_ro_info *si4, const uint8_t *data, int len)

## Macro Definition Documentation

## ◆ SI2Q_MAX_LEN

#define SI2Q_MAX_LEN 160

## ◆ SI2Q_MAX_NUM

#define SI2Q_MAX_NUM 16

## ◆ SI2Q_MIN_LEN

#define SI2Q_MIN_LEN 18

## Function Documentation

## ◆ osmo_gsm48_rest_octets_si13_decode()

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).

Parameters

  [out] | si13 | decoded SI13 rest octets
  [in] | encoded | SI13 rest octets

Returns
  parsed bits on success, negative on error

References osmo_gsm48_si13_info::bcch_change_mark, bitvec_get_bit_high(), bitvec_get_uint(), osmo_gsm48_si13_info::cell_opts, bitvec::cur_bit, bitvec::data, data, bitvec::data_len, decode_gprs_cell_opt(), decode_gprs_pwr_ctrl_pars(), ENOTSUP, H, osmo_gsm48_si13_info::net_ctrl_ord, 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.

## ◆ osmo_gsm48_rest_octets_si13_encode()

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, bitvec_set_bit(), bitvec_set_uint(), bitvec_spare_padding(), osmo_gsm48_si13_info::cell_opts, bitvec::data, data, bitvec::data_len, H, L, osmo_gsm48_si13_info::net_ctrl_ord, 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.

## ◆ osmo_gsm48_rest_octets_si1_encode()

int osmo_gsm48_rest_octets_si1_encode | ( | uint8_t * | data,
|  | uint8_t * | nch_pos,
|  | int | is1800_net
| ) |  |

References bitvec_set_bit(), bitvec_set_uint(), bitvec_spare_padding(), bitvec::data, data, bitvec::data_len, H, and L.

## ◆ osmo_gsm48_rest_octets_si2quater_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
| ) |  |

References append_earfcn(), append_uarfcns(), bitvec_set_bit(), bitvec_set_uint(), bitvec_spare_padding(), bitvec_zero(), bitvec::cur_bit, bitvec::data, data, bitvec::data_len, L, si2q_earfcn_count(), and SI2Q_MAX_LEN.

## ◆ osmo_gsm48_rest_octets_si3_decode()

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).

Parameters

  [out] | si3 | decoded SI3 rest octets
  [in] | encoded | SI3 rest octets, 4 octets long

References bitvec_get_bit_high(), bitvec_get_uint(), osmo_gsm48_si_selection_params::cbq, osmo_gsm48_si_selection_params::cell_resel_off, bitvec::data, 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, H, osmo_gsm48_si_selection_params::penalty_time, osmo_gsm48_si_power_offset::power_offset, osmo_gsm48_si_ro_info::power_offset, osmo_gsm48_si_selection_params::present, osmo_gsm48_si_power_offset::present, osmo_gsm48_si3_gprs_ind::present, osmo_gsm48_si_ro_info::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, osmo_gsm48_si_selection_params::temp_offs, and osmo_gsm48_si_ro_info::where.

## ◆ osmo_gsm48_rest_octets_si3_encode()

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_set_bit(), bitvec_set_uint(), bitvec_spare_padding(), bitvec::data, 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, H, L, osmo_gsm48_si_ro_info::power_offset, osmo_gsm48_si_ro_info::present, osmo_gsm48_si_ro_info::scheduling, osmo_gsm48_si_ro_info::selection_params, osmo_gsm48_si_ro_info::si2quater_indicator, osmo_gsm48_si_ro_info::si2ter_indicator, and osmo_gsm48_si_ro_info::where.

## ◆ osmo_gsm48_rest_octets_si4_decode()

void osmo_gsm48_rest_octets_si4_decode | ( | struct osmo_gsm48_si_ro_info * | si4,
|  | const uint8_t * | data,
|  | int | len
| ) |  |

References bitvec_get_bit_high(), bitvec_get_uint(), osmo_gsm48_si_selection_params::cbq, osmo_gsm48_si_selection_params::cell_resel_off, bitvec::data, data, bitvec::data_len, osmo_gsm48_si_ro_info::gprs_ind, H, len, osmo_gsm48_si_selection_params::penalty_time, osmo_gsm48_si_power_offset::power_offset, osmo_gsm48_si_ro_info::power_offset, osmo_gsm48_si_selection_params::present, osmo_gsm48_si_power_offset::present, osmo_gsm48_si3_gprs_ind::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.

## ◆ osmo_gsm48_rest_octets_si4_encode()

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(), bitvec_set_bit(), bitvec_set_uint(), osmo_gsm48_si_ro_info::break_ind, osmo_gsm48_si_ro_info::cell_id, bitvec::data, data, bitvec::data_len, osmo_gsm48_si_ro_info::gprs_ind, H, L, len, osmo_gsm48_si_ro_info::lsa_params, osmo_gsm48_si_ro_info::power_offset, osmo_gsm48_lsa_params::present, and osmo_gsm48_si_ro_info::selection_params.

## ◆ osmo_gsm48_rest_octets_si6_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, bitvec_set_bit(), bitvec_set_uint(), bitvec_spare_padding(), osmo_gsm48_si_pch_nch_info::call_priority, osmo_gsm48_si_pch_nch_info::call_priority_present, bitvec::data, data, bitvec::data_len, osmo_gsm48_si6_ro_info::dtm_support, osmo_gsm48_si6_ro_info::gprs_ms_txpwr_max_ccch, H, osmo_gsm48_si_vbs_vgcs_options::inband_notifications, osmo_gsm48_si_vbs_vgcs_options::inband_pagings, L, 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_si_pch_nch_info::paging_channel_restructuring, osmo_gsm48_si6_ro_info::pch_nch_info, osmo_gsm48_si_pch_nch_info::present, osmo_gsm48_si_vbs_vgcs_options::present, osmo_gsm48_si_dtm_support::present, osmo_gsm48_si_gprs_ms_txpwr_max_ccch::present, osmo_gsm48_si_dtm_support::rac, and osmo_gsm48_si6_ro_info::vbs_vgcs_options.

## ◆ osmo_gsm48_si1ro_nch_pos_decode()

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.

Parameters

  [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

Returns
  0 on success; negative in case of error

References ARRAY_SIZE, nch_pos::first_block, nch_pos::num_blocks, and si1ro_nch_positions.

## ◆ osmo_gsm48_si1ro_nch_pos_encode()

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.

Parameters

  [in] | num_blocks | Number of CCCH used for NCH
  [in] | first_block | First CCCH block used for NCH

Returns
  5-bit value for SI1 rest octets on success; negative in case of error

References ARRAY_SIZE, nch_pos::first_block, nch_pos::num_blocks, and si1ro_nch_positions.