summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Eversberg <jolly@eversberg.eu>2013-02-27 10:38:01 +0100
committerSteve Markgraf <steve@steve-m.de>2021-10-23 18:51:19 +0200
commit46647214763252b599084455df6645836f934d58 (patch)
tree81ac0723aef10c0a99f76f121478587cdd9dacea
parentad6a99f76cb6ea83e73de52575283ad62c8406e1 (diff)
Calypso BTS sends RSSI with each received bust
-rw-r--r--include/l1ctl_proto.h1
-rw-r--r--src/target/firmware/layer1/prim_bts.c7
2 files changed, 8 insertions, 0 deletions
diff --git a/include/l1ctl_proto.h b/include/l1ctl_proto.h
index 07d5c495..ddc83983 100644
--- a/include/l1ctl_proto.h
+++ b/include/l1ctl_proto.h
@@ -414,6 +414,7 @@ struct l1ctl_bts_burst_nb_ind {
uint32_t fn;
uint8_t tn;
uint8_t toa;
+ int8_t rssi;
uint8_t data[15];
} __attribute__((packed));
diff --git a/src/target/firmware/layer1/prim_bts.c b/src/target/firmware/layer1/prim_bts.c
index d02fa068..2f121bf9 100644
--- a/src/target/firmware/layer1/prim_bts.c
+++ b/src/target/firmware/layer1/prim_bts.c
@@ -171,6 +171,7 @@ l1s_bts_resp(uint8_t p1, uint8_t p2, uint16_t p3)
else if (db->rx[0].cmd == DSP_EXT_RX_CMD_NB)
{
uint16_t *d = &db->data[32];
+ int rssi = agc_inp_dbm8_by_pm(d[1] >> 3) / 8;
if (d[3] > 0x1000) {
struct msgb *msg;
@@ -195,6 +196,12 @@ l1s_bts_resp(uint8_t p1, uint8_t p2, uint16_t p3)
/* TOA */
bi->toa = d[0];
+ /* RSSI */
+ if (rssi < -110)
+ bi->rssi = -110;
+ else if (rssi < 0)
+ bi->rssi = rssi;
+
/* Pack bits */
memset(bi->data, 0x00, sizeof(bi->data));