summaryrefslogtreecommitdiffstats
path: root/src/target/firmware/layer1/prim_rx_nb.c
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <zecke@selfish.org>2012-11-24 19:36:19 +0100
committerHolger Hans Peter Freyther <zecke@selfish.org>2012-11-24 19:47:11 +0100
commit20971da499eafd11ce71f61a930ab0c1aa202fa8 (patch)
treefab87de1d3d82d0af3bb1348841235c708f77ded /src/target/firmware/layer1/prim_rx_nb.c
parent08bc45147bb58700236c4d455080cdeea9cc27a8 (diff)
rxqual: Begin to implement the rxqual calculationzecke/rxqual-full
* Make num_biterr 16bit because the API is 16bit. * Add the num_bits to count the bits transferred. * Re-order and add manual padding due the increase in size. * Add the bits to struct rx_meas_stat, increment and reset them. * Calculation for the sub_rxqual is missing, so is DTX code in general * Calculation for TCH/F, TCH/H in speech mode might be wrong
Diffstat (limited to 'src/target/firmware/layer1/prim_rx_nb.c')
-rw-r--r--src/target/firmware/layer1/prim_rx_nb.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/target/firmware/layer1/prim_rx_nb.c b/src/target/firmware/layer1/prim_rx_nb.c
index 38c7b53b..79e85a20 100644
--- a/src/target/firmware/layer1/prim_rx_nb.c
+++ b/src/target/firmware/layer1/prim_rx_nb.c
@@ -53,6 +53,9 @@
#include <l1ctl_proto.h>
+/* From GSM 05.01 7 Coding and interleaving. Coded bits per block */
+#define BIT_LEN_SDCCH 456 /* and for BIT_LEN_SACCH */
+
struct l1s_rxnb_state {
struct l1s_meas_hdr meas[4];
@@ -112,7 +115,6 @@ static int l1s_nb_resp(__unused uint8_t p1, uint8_t burst_id, uint16_t p3)
/* 4th burst, get frame data */
if (dsp_api.db_r->d_burst_d == 3) {
uint8_t i;
- uint16_t num_biterr;
uint32_t avg_snr = 0;
int32_t avg_dbm8 = 0;
@@ -141,11 +143,8 @@ static int l1s_nb_resp(__unused uint8_t p1, uint8_t burst_id, uint16_t p3)
rxnb.dl->snr = avg_snr / 4;
rxnb.dl->rx_level = dbm2rxlev(avg_dbm8 / (8*4));
- num_biterr = dsp_api.ndb->a_cd[2] & 0xffff;
- if (num_biterr > 0xff)
- rxnb.dl->num_biterr = 0xff;
- else
- rxnb.dl->num_biterr = num_biterr;
+ rxnb.dl->num_biterr = dsp_api.ndb->a_cd[2] & 0xffff;
+ rxnb.dl->num_bits = BIT_LEN_SDCCH;
rxnb.dl->fire_crc = ((dsp_api.ndb->a_cd[0] & 0xffff) & ((1 << B_FIRE1) | (1 << B_FIRE0))) >> B_FIRE0;