/*! \file gsm_04_08.h
* GSM TS 04.08 definitions. */
#pragma once
#include <stdint.h>
#include <stdbool.h>
#include <osmocom/core/utils.h>
#include <osmocom/core/endian.h>
struct gsm_lchan;
/* Chapter 10.5.1.5 */
struct gsm48_classmark1 {
uint8_t pwr_lev:3,
a5_1:1,
es_ind:1,
rev_lev:2,
spare:1;
} __attribute__ ((packed));
/* Chapter 10.5.1.6 */
struct gsm48_classmark2 {
uint8_t pwr_lev:3,
a5_1:1,
es_ind:1,
rev_lev:2,
spare:1;
uint8_t fc:1,
vgcs:1,
vbs:1,
sm_cap:1,
ss_scr:2,
ps_cap:1,
spare2:1;
uint8_t a5_2:1,
a5_3:1,
cmsp:1,
solsa:1,
spare3:1,
lcsva_cap:1,
spare4:1,
cm3:1;
} __attribute__ ((packed));
/* Chapter 10.5.2.1b.3 */
#if OSMO_IS_LITTLE_ENDIAN == 1
struct gsm48_range_1024 {
uint8_t w1_hi:2,
f0:1,
form_id:5;
uint8_t w1_lo;
uint8_t w2_hi;
uint8_t w3_hi:7,
w2_lo:1;
uint8_t w4_hi:6,
w3_lo:2;
uint8_t w5_hi:6,
w4_lo:2;
uint8_t w6_hi:6,
w5_lo:2;
uint8_t w7_hi:6,
w6_lo:2;
uint8_t w8_hi:6,
w7_lo:2;
uint8_t w9:7,
w8_lo:1;
uint8_t w11_hi:1,
w10:7;
|