Transceiver: use proper factor for amplitude scaling
In Transceiver::addRadioVector() we scale the I/Q samples by scaling the output voltage of the DAC. A relative factor/divisor/ration in the voltage domain cannot be used 1:1 in the power domain. There exist two similar formulas: a) X_dB = 10 * log10(X_lin / X_ref) b) Y_db = 20 * log10(Y_lin / Y_ref) both of them are correct, and according to [1]: a) If you convert a quantity X that relates to power or energy, => the factor is 10. b) If you convert a quantity Y that relates to amplitude, => the factor is 20. Therefore we should be using 20 instead of 10. This change makes osmo-trx apply per-lchan attenuation values correctly. Otherwise it would double the values indicated in TRXD messages. [1] https://dspillustrations.com/pages/posts/misc/decibel-conversion-factor-10-or-factor-20.html Change-Id: I98bc00bd25df4913d45e55eb008d715aca76fc7c Related: SYS#4918
This commit is contained in:
parent
819cad1776
commit
2a637a5c9c
|
@ -396,7 +396,7 @@ void Transceiver::addRadioVector(size_t chan, BitVector &bits,
|
|||
else
|
||||
burst = modulateBurst(bits, 8 + (wTime.TN() % 4 == 0), cfg->tx_sps);
|
||||
|
||||
scaleVector(*burst, txFullScale * pow(10, (double) -RSSI / 10));
|
||||
scaleVector(*burst, txFullScale * pow(10, (double) -RSSI / 20));
|
||||
|
||||
radio_burst = new radioVector(wTime, burst);
|
||||
|
||||
|
|
Loading…
Reference in New Issue