[linux-dvb] SNR calculation in stv0299 driver

Johannes Stezenbach js at linuxtv.org
Thu Jul 21 11:45:44 CEST 2005


Hi,

Gill Robles-Thome wrote:
> Can anyone explain the algorithm used to calculate the SNR for the
> stv0299 driver? Ie
> 
> 
> 	case FE_READ_SNR:
> 	{
> 		s32 snr = 0xffff - ((stv0299_readreg (i2c, 0x24) << 8)
> 				   | stv0299_readreg (i2c, 0x25));
> 		snr = 3 * (snr - 0xa100);
> 		*((u16*) arg) = (snr > 0xffff) ? 0xffff :
> 				(snr < 0) ? 0 : snr;
> 		break;
> 	}
>  
> 
> I don't understand where the 0xa100 value comes from, or why the result
> is them multiplied by 3!  Registers 0x24 and 0x25 are apparently "Noise
> Indicator" registers, but the stv0299 specification doesn't explain very
> well how these registers should be used.

Me, I don't understand it either. The data sheet just says:
"A simple C/N estimator can be easily implemented by comparing the
current indications with a primarily-recorded look-up table", but
doesn't give more information about this.

You'll have to ask the original author of the driver, Peter Schildmann.

Greetings to JP.

Johannes




More information about the linux-dvb mailing list