added rotor grace timer calculation code with checks for missing info.

This commit is contained in:
Gary The Brown 2014-08-04 16:56:59 +01:00 committed by Jaroslav Kysela
parent 09606dda4b
commit 11b2136c99

View file

@ -129,6 +129,27 @@ const idclass_t linuxdvb_rotor_usals_class =
* Class methods
* *************************************************************************/
static int
linuxdvb_rotor_grace
( linuxdvb_diseqc_t *ld, dvb_mux_t *lm )
{
if (ld->ld_satconf->lse_parent->ls_orbital_pos == 0)
{
if (lr->lr_rate != 0)
return (120 * 500 + 999)/1000;
else
return 120;
}
linuxdvb_rotor_t *lr = (linuxdvb_rotor_t*)ld;
int curpos = ld->ld_satconf->lse_parent->ls_orbital_pos;
if (ld->ld_satconf->lse_parent->ls_orbital_dir == 'W')
curpos = -(curpos);
return (lr->lr_rate*(abs(curpos - lr->lr_position))+999)/1000;
}
static int
linuxdvb_rotor_check_orbital_pos
( dvb_mux_t *lm, linuxdvb_satconf_ele_t *ls )
@ -170,7 +191,9 @@ linuxdvb_rotor_gotox_tune
}
tvhdebug("diseqc", "rotor GOTOX pos %d sent", lr->lr_position);
return 120; // TODO: calculate period (2 min hardcoded)
linuxdvb_diseqc_t *ld = (linuxdvb_diseqc_t*)lr;
return linuxdvb_rotor_grace(ld,lm);
}
/* USALS */
@ -240,7 +263,8 @@ linuxdvb_rotor_usals_tune
usleep(25000);
}
return 120; // TODO: calculate period (2 min hardcoded)
linuxdvb_diseqc_t *ld = (linuxdvb_diseqc_t*)lr;
return linuxdvb_rotor_grace(ld,lm);
#undef TO_RAD
#undef TO_DEG
@ -267,13 +291,6 @@ linuxdvb_rotor_tune
return linuxdvb_rotor_usals_tune(lr, lm, ls, fd);
}
static int
linuxdvb_rotor_grace
( linuxdvb_diseqc_t *ld, dvb_mux_t *lm )
{
return 120; // TODO: calculate approx period
}
/* **************************************************************************
* Create / Config
* *************************************************************************/