static void setIdleValvePwm(int value) { // todo: change parameter type, maybe change parameter validation? if (value < 1 || value > 999) return; scheduleMsg(&logger, "setting idle valve PWM %d", value); /** * currently IDEL level is an integer per mil (0-1000 range), and PWM takes a fioat in the 0..1 range * todo: unify? */ setSimplePwmDutyCycle(&idleValve, 0.001 * value); }
static msg_t AltCtrlThread(int param) { chRegSetThreadName("AlternatorController"); int alternatorDutyCycle = 500; while (TRUE) { chThdSleepMilliseconds(10); if ( getVBatt() > 14.2 ) alternatorDutyCycle = alternatorDutyCycle + 1 ; else alternatorDutyCycle = alternatorDutyCycle - 1; if (alternatorDutyCycle < 150 ) alternatorDutyCycle = 150; if (alternatorDutyCycle > 950) alternatorDutyCycle = 950; setSimplePwmDutyCycle(&alternatorControl, 0.001 * alternatorDutyCycle); } #if defined __GNUC__ return -1; #endif }