diff options
| author | Sylvain Munaut <tnt@246tNt.com> | 2010-07-25 12:25:17 +0200 | 
|---|---|---|
| committer | Sylvain Munaut <tnt@246tNt.com> | 2010-07-25 12:27:44 +0200 | 
| commit | 27af075e1e93ba9cd69a345fa590c50e96f8d9c6 (patch) | |
| tree | 38722744d161607154833ffdf71d59a3815b0541 | |
| parent | 5e84a869376b9ece9ce385bf9a92ae8ba227b214 (diff) | |
osmocore: Add utility function rsl_chan_nr_str to RSL
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
| -rw-r--r-- | include/osmocore/rsl.h | 3 | ||||
| -rw-r--r-- | src/rsl.c | 26 | 
2 files changed, 29 insertions, 0 deletions
diff --git a/include/osmocore/rsl.h b/include/osmocore/rsl.h index cd84057b..54d67032 100644 --- a/include/osmocore/rsl.h +++ b/include/osmocore/rsl.h @@ -17,6 +17,9 @@ extern const struct tlv_definition rsl_att_tlvdef;  uint8_t rsl_enc_chan_nr(uint8_t type, uint8_t subch, uint8_t timeslot);  /* decode 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); +/* Turns channel number into a string */ +const char *rsl_chan_nr_str(uint8_t chan_nr); +  const char *rsl_err_name(uint8_t err);  const char *rsl_rlm_cause_name(uint8_t err); @@ -183,6 +183,32 @@ int rsl_dec_chan_nr(uint8_t chan_nr, uint8_t *type, uint8_t *subch, uint8_t *tim  	return 0;  } +const char *rsl_chan_nr_str(uint8_t chan_nr) +{ +	static char str[20]; +	int ts = chan_nr & 7; +	uint8_t cbits = chan_nr >> 3; + +	if (cbits == 0x01) +		sprintf(str, "TCH/F on TS%d", ts); +	else if ((cbits & 0x1e) == 0x02) +		sprintf(str, "TCH/H(%u) on TS%d", cbits & 0x01, ts); +	else if ((cbits & 0x1c) == 0x04) +		sprintf(str, "SDCCH/4(%u) on TS%d", cbits & 0x03, ts); +	else if ((cbits & 0x18) == 0x08) +		sprintf(str, "SDCCH/8(%u) on TS%d", cbits & 0x07, ts); +	else if (cbits == 0x10) +		sprintf(str, "BCCH on TS%d", ts); +	else if (cbits == 0x11) +		sprintf(str, "RACH on TS%d", ts); +	else if (cbits == 0x12) +		sprintf(str, "PCH/AGCH on TS%d", ts); +	else +		sprintf(str, "UNKNOWN on TS%d", ts); + +        return str; +} +  static const struct value_string rsl_err_vals[] = {  	{ RSL_ERR_RADIO_IF_FAIL,	"Radio Interface Failure" },  	{ RSL_ERR_RADIO_LINK_FAIL,	"Radio Link Failure" },  | 
