fw/layer1: Use dbm2rxlev instead of just '+110' so that overflows are handled
authorSylvain Munaut <tnt@246tNt.com>
Sun, 14 Nov 2010 15:08:08 +0000 (16:08 +0100)
committerSylvain Munaut <tnt@246tNt.com>
Sun, 14 Nov 2010 16:09:54 +0000 (17:09 +0100)
Without this, we would sometime get +143 dBm reported ... which is obviously
false.

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
src/target/firmware/layer1/prim_rx_nb.c
src/target/firmware/layer1/prim_tch.c

index e210d00..e3e808d 100644 (file)
@@ -133,7 +133,7 @@ static int l1s_nb_resp(__unused uint8_t p1, uint8_t burst_id, uint16_t p3)
                        avg_dbm8 += rxnb.meas[i].pm_dbm8;
                }
                rxnb.dl->snr = avg_snr / 4;
-               rxnb.dl->rx_level = (avg_dbm8 / (8*4)) + 110;
+               rxnb.dl->rx_level = dbm2rxlev(avg_dbm8 / (8*4));
 
                num_biterr = dsp_api.ndb->a_cd[2] & 0xffff;
                if (num_biterr > 0xff)
index d17ac55..4c08e3e 100644 (file)
@@ -223,7 +223,7 @@ static int l1s_tch_resp(__unused uint8_t p1, __unused uint8_t p2, uint16_t p3)
                }
 
                dl->snr = avg_snr / n;
-               dl->rx_level = (avg_dbm8 / (8*n)) + 110;
+               dl->rx_level = dbm2rxlev(avg_dbm8 / (8*n));
 
                /* Errors & CRC status */
                num_biterr = dsp_api.ndb->a_fd[2] & 0xffff;
@@ -518,7 +518,7 @@ static int l1s_tch_a_resp(__unused uint8_t p1, __unused uint8_t p2, uint16_t p3)
                        avg_dbm8 += rx_tch_a.meas[i].pm_dbm8;
                }
                rx_tch_a.dl->snr = avg_snr / 4;
-               rx_tch_a.dl->rx_level = (avg_dbm8 / (8*4)) + 110;
+               rx_tch_a.dl->rx_level = dbm2rxlev(avg_dbm8 / (8*4));
 
                num_biterr = dsp_api.ndb->a_cd[2];
                if (num_biterr > 0xff)