Michel Verbraak wrote:
> I allready send this patch back in november 2006 but it is still not yet
> implemented into the hg tree at linuxtv.org.
>
> Following is a copy from my email from november 2006:
>
> I'm testing the dvbsec api for the Goto X part to control my rotor and
> found it did not respond as it should be.
>
> I pulled the DiseqC 1.2 spec from the Eutelsat website and found a bug
> in the dvbsec_api.c file. The first diff file solves the bug and makes
> the api follow the spec as it should be. But after testing I found out
> my rotor did not what it should do.
>
> I looked into the source for MythTV and found that the Angle part of the
> DiseqC command is build differently from the spec. So I changed the
> dvbsec_api.c file again to act like the MythTV source. See the second
> diff file.
>
> With the second diff file my rotor does what I tell it to do. When I say
> 15.2 Degrees it goes to 15.2 degrees East.
>
> I do not know why there is a difference to the Eutelsat Diseqc 1.2 specs
> for this. If somebody knows please tell?
Looking at the specs.
>
> Who is able to apply this patch to the hg repository on linuxtv.org.
>
> Regards,
>
> Michel Verbraak
>
> dvbsec_api.c2nd.diff Signed-off-by: Michel Verbraak <[EMAIL PROTECTED]>
You don't need a SOB for dvb-apps. But not a problem too
>
>
> ------------------------------------------------------------------------
>
> --- dvb-apps.orig/lib/libdvbsec/dvbsec_api.c 2006-11-25 15:44:50.000000000
> +0100
> +++ dvb-apps/lib/libdvbsec/dvbsec_api.c 2006-11-25 19:48:01.000000000
> +0100
> @@ -536,19 +536,12 @@ int dvbsec_diseqc_goto_rotator_bearing(s
> }
>
> // generate the command
> - if (integer < -256) {
> - return -EINVAL;
> - } else if (integer < 0) {
> - integer = -integer;
> - data[3] = 0xf0;
> - } else if (integer < 256) {
> - data[3] = 0x00;
> - } else if (integer < 512) {
> - integer -= 256;
> - data[3] = 0x10;
> - } else {
> - return -EINVAL;
> + if (integer < 0.0) {
> + data[3] = 0xD0; // West is a negative angle value
> + } else if (integer >= 0.0) {
> + data[3] = 0xE0; // East is a positive angle value
> }
> + integer = abs(integer);
> data[3] |= ((integer / 16) & 0x0f);
> integer = integer % 16;
> data[4] |= ((integer & 0x0f) << 4) | fraction;
>
>
> ------------------------------------------------------------------------
>
> --- dvbsec_api.c.orig 2006-11-25 15:44:50.000000000 +0100
> +++ dvbsec_api.c 2006-11-25 15:43:18.000000000 +0100
> @@ -539,7 +539,7 @@ int dvbsec_diseqc_goto_rotator_bearing(s
> if (integer < -256) {
> return -EINVAL;
> } else if (integer < 0) {
> - integer = -integer;
> + integer += 256;
> data[3] = 0xf0;
> } else if (integer < 256) {
> data[3] = 0x00;
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> linux-dvb mailing list
> [email protected]
> http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb
_______________________________________________
linux-dvb mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb