aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/gsm_utils.c
diff options
context:
space:
mode:
authorHarald Welte <laforge@netfilter.org>2009-12-12 15:37:54 +0100
committerHarald Welte <laforge@netfilter.org>2009-12-12 15:37:54 +0100
commit4bb4738d217596582a689169d12fdd6eb1ed8785 (patch)
treebc7ebeffe4672ddfdfb7f0a84c2c77188d721c0e /openbsc/src/gsm_utils.c
parent854b9b33afc1b9719ef91624fbb1f4861bfdc1f1 (diff)
utility functions to convert RXLEV into dBm and vice versa
Diffstat (limited to 'openbsc/src/gsm_utils.c')
-rw-r--r--openbsc/src/gsm_utils.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/openbsc/src/gsm_utils.c b/openbsc/src/gsm_utils.c
index fe0b496bf..9439993db 100644
--- a/openbsc/src/gsm_utils.c
+++ b/openbsc/src/gsm_utils.c
@@ -160,6 +160,28 @@ int ms_pwr_dbm(enum gsm_band band, u_int8_t lvl)
return -EINVAL;
}
+/* According to TS 08.05 Chapter 8.1.4 */
+int rxlev2dbm(u_int8_t rxlev)
+{
+ if (rxlev > 63)
+ rxlev = 63;
+
+ return -110 + rxlev;
+}
+
+/* According to TS 08.05 Chapter 8.1.4 */
+u_int8_t dbm2rxlev(int dbm)
+{
+ int rxlev = dbm + 110;
+
+ if (rxlev > 63)
+ rxlev = 63;
+ else if (rxlev < 0)
+ rxlev = 0;
+
+ return rxlev;
+}
+
void generate_backtrace()
{
int i, nptrs;