libosmogsm  0.9.6.256-2956
Osmocom GSM library
 All Data Structures Files Functions Variables Enumerations Enumerator Modules Pages
RSL

Files

file  rsl.h
 
file  rsl.c
 

Macros

#define rsl_tlv_parse(dec, buf, len)   tlv_parse(dec, &rsl_att_tlvdef, buf, len, 0, 0)
 Parse RSL TLV structure using tlv_parse.
 
#define rsl_ipac_eie_tlv_parse(dec, buf, len)   tlv_parse(dec, &rsl_ipac_eie_tlvdef, buf, len, 0, 0)
 Parse RSL IPAC EIE TLV structure using tlv_parse.
 
#define RSL_ALLOC_SIZE   200
 Size for RSL msgb_alloc.
 
#define RSL_ALLOC_HEADROOM   56
 Headroom size for RSL msgb_alloc.
 

Functions

void rsl_init_rll_hdr (struct abis_rsl_rll_hdr *dh, uint8_t msg_type)
 Initialize a RSL RLL header.
 
void rsl_init_cchan_hdr (struct abis_rsl_cchan_hdr *ch, uint8_t msg_type)
 Initialize a RSL Common Channel header.
 
uint8_t rsl_enc_chan_nr (uint8_t type, uint8_t subch, uint8_t timeslot)
 Encode channel number as per Section 9.3.1.
 
int rsl_dec_chan_nr (uint8_t chan_nr, uint8_t *type, uint8_t *subch, uint8_t *timeslot)
 Decode RSL channel number. More...
 
const char * rsl_chan_nr_str (uint8_t chan_nr)
 Get human-readable string for RSL channel number.
 
const char * rsl_err_name (uint8_t err)
 Get human-readable name for RSL Error.
 
const char * rsl_rlm_cause_name (uint8_t err)
 Get human-readable string for RLM cause.
 
const char * rsl_msg_name (uint8_t msg_type)
 Get human-readable string for RSL Message Type.
 
const char * rsl_ipac_msg_name (uint8_t msg_type)
 Get human-readable name of ip.access RSL msg type.
 
const char * rsl_or_ipac_msg_name (uint8_t msg_type)
 Get human-readable name of standard or ip.access RSL msg type. If msg_type is a standard RSL message type, return its human-readable name. Otherwise return rsl_ipac_msg_name(msg_type).
 
int rsl_ccch_conf_to_bs_cc_chans (int ccch_conf)
 
void rsl_rll_push_hdr (struct msgb *msg, uint8_t msg_type, uint8_t chan_nr, uint8_t link_id, int transparent)
 Push a RSL RLL header onto an existing msgb.
 
void rsl_rll_push_l3 (struct msgb *msg, uint8_t msg_type, uint8_t chan_nr, uint8_t link_id, int transparent)
 Push a RSL RLL header with L3_INFO IE.
 
struct msgb * rsl_rll_simple (uint8_t msg_type, uint8_t chan_nr, uint8_t link_id, int transparent)
 Create msgb with RSL RLL header.
 
static const char * rsl_act_type_name (uint8_t act_type)
 Return a human readable name for GSM 08.58 RSL_ACT_* constants.
 
int rsl_ccch_conf_to_bs_ccch_sdcch_comb (int ccch_conf)
 

Variables

const struct tlv_definition rsl_att_tlvdef
 
const struct tlv_definition rsl_ipac_eie_tlvdef
 
const struct value_string rsl_act_type_names []
 
const struct tlv_definition rsl_att_tlvdef
 
static const struct value_string rsl_err_vals []
 
static const struct value_string rsl_msgt_names []
 
static const struct value_string rsl_ipac_msgt_names []
 ip.access specific More...
 
static const struct value_string rsl_rlm_cause_strs []
 
const struct tlv_definition rsl_ipac_eie_tlvdef
 
const struct value_string rsl_act_type_names []
 

Detailed Description

Function Documentation

int rsl_dec_chan_nr ( uint8_t  chan_nr,
uint8_t *  type,
uint8_t *  subch,
uint8_t *  timeslot 
)

Decode RSL channel number.

Parameters
[in]chan_nrChannel Number
[out]typeChannel Type
[out]subchSub-channel Number
[out]timeslotTimeslot

Variable Documentation

const struct value_string rsl_act_type_names[]
Initial value:
= {
{ RSL_ACT_TYPE_INITIAL, "INITIAL" },
{ RSL_ACT_TYPE_REACT, "REACT" },
{ RSL_ACT_INTRA_IMM_ASS, "INTRA_IMM_ASS" },
{ RSL_ACT_INTRA_NORM_ASS, "INTRA_NORM_ASS" },
{ RSL_ACT_INTER_ASYNC, "INTER_ASYNC" },
{ RSL_ACT_INTER_SYNC, "INTER_SYNC" },
{ RSL_ACT_SECOND_ADD, "SECOND_ADD" },
{ RSL_ACT_SECOND_MULTI, "SECOND_MULTI" },
{ RSL_ACT_OSMO_PDCH, "OSMO_PDCH" },
{ 0, NULL }
}
const struct tlv_definition rsl_ipac_eie_tlvdef
Initial value:
= {
.def = {
[RSL_IPAC_EIE_RXLEV] = { TLV_TYPE_TV },
[RSL_IPAC_EIE_RXQUAL] = { TLV_TYPE_TV },
[RSL_IPAC_EIE_FREQ_ERR] = { TLV_TYPE_FIXED, 2 },
[RSL_IPAC_EIE_TIMING_ERR] = { TLV_TYPE_TV },
[RSL_IPAC_EIE_MEAS_AVG_CFG] = { TLV_TYPE_TLV },
[RSL_IPAC_EIE_BS_PWR_CTL] = { TLV_TYPE_FIXED, 3 },
[RSL_IPAC_EIE_MS_PWR_CTL] = { TLV_TYPE_FIXED, 3 },
[RSL_IPAC_EIE_HANDO_THRESH] = { TLV_TYPE_FIXED, 6 },
[RSL_IPAC_EIE_NCELL_DEFAULTS] = { TLV_TYPE_FIXED, 3 },
[RSL_IPAC_EIE_NCELL_LIST] = { TLV_TYPE_TLV },
[RSL_IPAC_EIE_PC_THRESH_COMP] = { TLV_TYPE_FIXED, 10 },
[RSL_IPAC_EIE_HO_THRESH_COMP] = { TLV_TYPE_FIXED, 10 },
[RSL_IPAC_EIE_HO_CAUSE] = { TLV_TYPE_TLV },
[RSL_IPAC_EIE_HO_CANDIDATES] = { TLV_TYPE_TLV },
[RSL_IPAC_EIE_NCELL_BA_CHG_LIST]= { TLV_TYPE_TLV },
[RSL_IPAC_EIE_NUM_OF_MS] = { TLV_TYPE_TV },
[RSL_IPAC_EIE_HO_CAND_EXT] = { TLV_TYPE_TLV },
[RSL_IPAC_EIE_NCELL_DEF_EXT] = { TLV_TYPE_TLV },
[RSL_IPAC_EIE_NCELL_LIST_EXT] = { TLV_TYPE_TLV },
[RSL_IPAC_EIE_MASTER_KEY] = { TLV_TYPE_TLV },
[RSL_IPAC_EIE_MASTER_SALT] = { TLV_TYPE_TLV },
},
}
tag-value (8bit)
Definition: tlv.h:375
tag-length-value
Definition: tlv.h:376
fixed-length value-only
Definition: tlv.h:373
const struct value_string rsl_ipac_msgt_names[]
static
Initial value:
= {
{ RSL_MT_IPAC_PDCH_ACT, "IPAC_PDCH_ACT" },
{ RSL_MT_IPAC_PDCH_ACT_ACK, "IPAC_PDCH_ACT_ACK" },
{ RSL_MT_IPAC_PDCH_ACT_NACK, "IPAC_PDCH_ACT_NACK" },
{ RSL_MT_IPAC_PDCH_DEACT, "IPAC_PDCH_DEACT" },
{ RSL_MT_IPAC_PDCH_DEACT_ACK, "IPAC_PDCH_DEACT_ACK" },
{ RSL_MT_IPAC_PDCH_DEACT_NACK, "IPAC_PDCH_DEACT_NACK" },
{ RSL_MT_IPAC_CONNECT_MUX, "IPAC_CONNECT_MUX" },
{ RSL_MT_IPAC_CONNECT_MUX_ACK, "IPAC_CONNECT_MUX_ACK" },
{ RSL_MT_IPAC_CONNECT_MUX_NACK, "IPAC_CONNECT_MUX_NACK" },
{ RSL_MT_IPAC_BIND_MUX, "IPAC_BIND_MUX" },
{ RSL_MT_IPAC_BIND_MUX_ACK, "IPAC_BIND_MUX_ACK" },
{ RSL_MT_IPAC_BIND_MUX_NACK, "IPAC_BIND_MUX_NACK" },
{ RSL_MT_IPAC_DISC_MUX, "IPAC_DISC_MUX" },
{ RSL_MT_IPAC_DISC_MUX_ACK, "IPAC_DISC_MUX_ACK" },
{ RSL_MT_IPAC_DISC_MUX_NACK, "IPAC_DISC_MUX_NACK" },
{ RSL_MT_IPAC_CRCX, "IPAC_CRCX" },
{ RSL_MT_IPAC_CRCX_ACK, "IPAC_CRCX_ACK" },
{ RSL_MT_IPAC_CRCX_NACK, "IPAC_CRCX_NACK" },
{ RSL_MT_IPAC_MDCX, "IPAC_MDCX" },
{ RSL_MT_IPAC_MDCX_ACK, "IPAC_MDCX_ACK" },
{ RSL_MT_IPAC_MDCX_NACK, "IPAC_MDCX_NACK" },
{ RSL_MT_IPAC_DLCX_IND, "IPAC_DLCX_IND" },
{ RSL_MT_IPAC_DLCX, "IPAC_DLCX" },
{ RSL_MT_IPAC_DLCX_ACK, "IPAC_DLCX_ACK" },
{ RSL_MT_IPAC_DLCX_NACK, "IPAC_DLCX_NACK" },
{ 0, NULL }
}

ip.access specific

Referenced by rsl_ipac_msg_name().

const struct value_string rsl_rlm_cause_strs[]
static
Initial value:
= {
{ RLL_CAUSE_T200_EXPIRED, "Timer T200 expired (N200+1) times" },
{ RLL_CAUSE_REEST_REQ, "Re-establishment request" },
{ RLL_CAUSE_UNSOL_UA_RESP, "Unsolicited UA response" },
{ RLL_CAUSE_UNSOL_DM_RESP, "Unsolicited DM response" },
{ RLL_CAUSE_UNSOL_DM_RESP_MF, "Unsolicited DM response, multiple frame" },
{ RLL_CAUSE_UNSOL_SPRV_RESP, "Unsolicited supervisory response" },
{ RLL_CAUSE_SEQ_ERR, "Sequence Error" },
{ RLL_CAUSE_UFRM_INC_PARAM, "U-Frame with incorrect parameters" },
{ RLL_CAUSE_SFRM_INC_PARAM, "S-Frame with incorrect parameters" },
{ RLL_CAUSE_IFRM_INC_MBITS, "I-Frame with incorrect use of M bit" },
{ RLL_CAUSE_IFRM_INC_LEN, "I-Frame with incorrect length" },
{ RLL_CAUSE_FRM_UNIMPL, "Frame not implemented" },
{ RLL_CAUSE_SABM_MF, "SABM command, multiple frame established state" },
{ RLL_CAUSE_SABM_INFO_NOTALL, "SABM frame with information not allowed in this state" },
{ 0, NULL },
}