[mythtv] [PATCH] USALS array overflow problem

Yeasah Pell yeasah at schwide.com
Sat Apr 29 17:18:11 UTC 2006


There's a problem with the USALS code in libs/libmythtv/dvbdiseqc.cpp 
that causes the positioner gotox values to be calculated incorrectly for 
certain positions. The problem is caused by an overrun of a table. The 
index of a 10 element table is given by the following code:

    CMD2 +
Where in that context USALS is a floating point value which can range 
from 0.0 to 0.999999, which causes the resultant index to be from 0-10, 
and thus overruns the end of the table by 1 (returning bogus positioning 
data in this case). The simplest solution woud be to change the code to 
use floor():

    CMD2 +
However, the presence of the table is silly anyway -- the spec shows a 
lookup table as decimal only as a convenience, the encoding is actually 
as a fixed point fraction. As such, the correct value would most easily 
be calculated directly from the angle. Attached is a patch that 
eliminates the table overrun problem, and is also more accurate (and 
less complicated, too).

I would suggest that this be applied to 0.19-fixes as well as the trunk, 
since the problem really does cause issues with positioning. In the 
past, I've had to work around "bad" angles by adding some small value to 
the angle I actually wanted.

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: usals.diff
Url: http://mythtv.org/pipermail/mythtv-dev/attachments/20060429/c0e58420/attachment.diff 


More information about the mythtv-dev mailing list