// ============================================================================================ void _getReading(void) { uint32_t temperature, output; // See if we have got a valid temperature temperature = sensorReturnReading(); // Only turn the LED off if we've got legal data, otherwise flash it if (temperature == TEMP_INVALID) { ledSetState(LEDFLASH_ERROR); heaterSetLevel(0, CYCLE_LEN); isErrored=TRUE; sensorRequestCallback(); // Get another reading as soon as we can return; } ledSetState(LEDFLASH_NORMAL); // ...otherwise we've got a valid temp, so do the business with it if (pidGetSetpoint(&pidInstance) == SETPOINT_IDLE) output = 0; else output=pidCalc(&pidInstance,temperature); heaterSetLevel(output, CYCLE_LEN); contribute_log_entry(temperature, heaterGetPercentage(), pidGetSetpoint(&pidInstance), CYCLE_LEN); // Now wait for a while before doing it all again timerAdd(&tstate, TIMER_ORIGIN_STATEMACHINE, 0, CYCLE_LEN); }
ZEND_METHOD( appnetServer , timerAdd ) { long ms; size_t len = 0; char* args; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l|s", &ms, &args , &len ) == FAILURE) { RETURN_FALSE; } timerArgs* timerArg = malloc( sizeof( timerArgs )); timerArg->ts = ms; timerArg->params = args; timerAdd( ms , onTimer , timerArg ); RETURN_TRUE; }
ZEND_METHOD( appnetServer , timerAdd ) { long ms; zval* callback; zval* args; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lz|z", &ms, &callback, &args ) == FAILURE) { RETURN_FALSE; } timerArgs* timerArg = malloc( sizeof( timerArgs )); timerArg->func = callback; timerArg->ts = ms; timerArg->params = args; timerAdd( ms , onTimer , timerArg ); RETURN_TRUE; }