osmo-qcdiag/src/protocol/diag_log_gprs_l1.h

109 lines
2.1 KiB
C

#pragma once
#include <stdint.h>
struct gprs_air_if_summary {
uint32_t fn;
uint8_t band_ind;
uint8_t dl_ts;
uint8_t ul_ts;
uint16_t rx_power;
uint8_t tx_power_ts[4];
uint8_t ta;
uint32_t rlc_dl_rx;
uint32_t rlc_ul_tx;
uint32_t rlc_ul_retx;
uint32_t llpdu_tx_sum;
uint32_t llpdu_retx;
uint32_t llpdu_rx_sum;
uint32_t llpdu_rx_err;
uint32_t user_oct_dl;
uint32_t user_oct_ul;
} __attribute__ ((packed));
struct gprs_rx_msg_metr_a_v2 {
uint32_t fn;
uint8_t tn;
uint8_t chan;
uint8_t cs;
uint16_t rx_qual;
uint8_t _res:2,
crc_passed:1,
egprs_msg1_crc_passed:1,
egprs_msg2_crc_passed:1,
usf_match:1,
dl_tfi_match:1;
uint16_t msg_len;
uint8_t usf;
/* EGPRS specifics below */
uint8_t ir_status;
uint8_t mod_detected;
uint16_t blk_mean_bep_tslot;
uint16_t blk_cv_bep_tslot;
uint16_t filtered_cv_bep_tslot;
uint16_t reliability;
} __attribute__ ((packed));
struct gprs_xfer_sum {
uint8_t band_ind;
uint8_t current_alloc;
uint8_t ul_ptcch_ts;
uint8_t dl_ptcch_ts;
uint8_t ta;
uint8_t usf_granularity;
uint8_t ul_bitmap_tn;
uint8_t dl_bitmap_tn;
} __attribute__ ((packed));
struct gprs_power_control {
uint8_t tx_channel;
uint8_t tx_tn;
uint16_t tx_pwr;
uint8_t cs;
uint8_t gamma_tn;
uint16_t gamma_band;
uint8_t alpha;
uint8_t derived_c;
uint8_t pmax;
} __attribute__ ((packed));
enum gprs_tx_ul_chan_t {
DIAG_TX_UL_CH_T_PRACH,
DIAG_TX_UL_CH_T_UL_PTCCH,
DIAG_TX_UL_CH_T_UL_PACCH_PDTCH,
};
extern const struct value_string gprs_tx_ul_chans[];
enum gprs_coding_scheme {
DIAG_GPRS_CS_CS1,
DIAG_GPRS_CS_CS2,
DIAG_GPRS_CS_CS3,
DIAG_GPRS_CS_CS4,
DIAG_GPRS_CS_ACCESS,
DIAG_GPRS_CS_EXT_ACCESS,
DIAG_GPRS_CS_MCS1,
DIAG_GPRS_CS_MCS2,
DIAG_GPRS_CS_MCS3,
DIAG_GPRS_CS_MCS4,
DIAG_GPRS_CS_MCS5,
DIAG_GPRS_CS_MCS6,
DIAG_GPRS_CS_MCS7,
DIAG_GPRS_CS_MCS8,
DIAG_GPRS_CS_MCS9,
};
extern const struct value_string gprs_coding_schemes[];
struct gprs_tx_sched_res {
uint32_t fn;
uint8_t num_msg_tx;
uint16_t arfcn[4];
struct {
uint8_t tn;
uint8_t chan_type; /* gprs_tx_ul_chan_t */
uint8_t dyn_alloc;
int16_t power_idx;
uint8_t ta;
uint8_t cs;
} msg_info[4];
} __attribute__ ((packed));