224 |
224 |
225 int server(void); |
225 int server(void); |
226 int server(void) |
226 int server(void) |
227 { |
227 { |
228 int rc = 0, run = 1, key; |
228 int rc = 0, run = 1, key; |
229 int do_init = TRUE; |
229 int do_init = TRUE, seconds = 0, minutes = 0; |
230 units_list *unit; |
230 units_list *unit; |
231 brew_session *brew = NULL; |
231 brew_session *brew = NULL; |
232 #ifndef HAVE_WIRINGPI_H |
232 #ifndef HAVE_WIRINGPI_H |
233 long t = 0; |
233 long t = 0; |
234 #endif |
234 #endif |
235 double hltInput, hltOutput, hltSetpoint, mltInput, mltOutput, mltSetpoint; |
235 struct tm *tm; |
|
236 time_t now, last = (time_t)0; |
|
237 static double hltInput, hltOutput, hltSetpoint, mltInput, mltOutput, mltSetpoint; |
236 |
238 |
237 prompt(101, NULL); |
239 prompt(101, NULL); |
238 |
240 |
239 /* |
241 /* |
240 * Define special characters in the display CGRAM |
242 * Define special characters in the display CGRAM |
394 PID_setSampleTime(unit->PID_hlt, unit->PID_hlt->SampleTime); |
396 PID_setSampleTime(unit->PID_hlt, unit->PID_hlt->SampleTime); |
395 PID_init(unit->PID_mlt, &mltInput, &mltOutput, &mltSetpoint, unit->PID_mlt->dispKd, unit->PID_mlt->dispKi, unit->PID_mlt->dispKd, unit->PID_mlt->Direction); |
397 PID_init(unit->PID_mlt, &mltInput, &mltOutput, &mltSetpoint, unit->PID_mlt->dispKd, unit->PID_mlt->dispKi, unit->PID_mlt->dispKd, unit->PID_mlt->Direction); |
396 PID_setOutputLimits(unit->PID_mlt, 0, 5000); |
398 PID_setOutputLimits(unit->PID_mlt, 0, 5000); |
397 PID_setSampleTime(unit->PID_mlt, unit->PID_mlt->SampleTime); |
399 PID_setSampleTime(unit->PID_mlt, unit->PID_mlt->SampleTime); |
398 |
400 |
|
401 prompt(0, NULL); |
|
402 prompt(101, NULL); |
|
403 prompt(401, NULL); |
|
404 manual = MANUAL_NONE; |
|
405 |
399 do_init = FALSE; |
406 do_init = FALSE; |
400 } |
407 } |
401 |
408 |
402 /* run_pause code here */ |
409 /* run_pause code here */ |
|
410 |
|
411 /* |
|
412 * Update PID's, even if they are off. Both PID's will do |
|
413 * the scheduling by themselves. |
|
414 */ |
|
415 rc = PID_compute(unit->PID_hlt); |
|
416 // if (seconds < 3) |
|
417 // fprintf(stdout, "hlt rc=%d"); |
|
418 rc = PID_compute(unit->PID_mlt); |
|
419 // if (seconds < 3) |
|
420 // fprintf(stdout, " mlt rc=%d\n"); |
|
421 |
|
422 now = time(NULL); |
|
423 if (now != last) { |
|
424 /* |
|
425 * Each second |
|
426 */ |
|
427 last = now; |
|
428 seconds++; |
|
429 fprintf(stdout, "1 second %ld millis\n", millis()); |
|
430 if (debug && ((seconds % 10) == 1)) { |
|
431 fprintf(stdout, "MLT: In=%.2lf Out=%.2lf Set=%.2lf HLT: In=%.2lf Out=%.2lf Set=%.2lf\n", |
|
432 mltInput, mltOutput, mltSetpoint, hltInput, hltOutput, hltSetpoint); |
|
433 } |
|
434 |
|
435 } |
403 |
436 |
404 if (brew) { |
437 if (brew) { |
405 /* |
438 /* |
406 * Automate mode |
439 * Automate mode |
407 */ |
440 */ |
409 } else if (manual != MANUAL_NONE) { |
442 } else if (manual != MANUAL_NONE) { |
410 /* |
443 /* |
411 * Manual mode |
444 * Manual mode |
412 */ |
445 */ |
413 manual_menu(unit); |
446 manual_menu(unit); |
|
447 if (manual == MANUAL_NONE) { |
|
448 /* |
|
449 * Rewrite the display |
|
450 */ |
|
451 prompt(0, NULL); |
|
452 prompt(101, NULL); |
|
453 prompt(401, NULL); |
|
454 } |
414 } else { |
455 } else { |
415 /* |
456 /* |
416 * Not running. |
457 * Not running. |
417 */ |
458 */ |
418 prompt(0, NULL); |
|
419 prompt(101, NULL); |
|
420 prompt(401, NULL); |
|
421 tempstatus(120.3, 165.34); |
459 tempstatus(120.3, 165.34); |
422 key = keywait(); |
460 key = keycheck(); |
423 if (key == KEY_ENTER) |
461 if (key == KEY_ENTER) { |
424 setup(); |
462 setup(); |
425 else if (key == KEY_DOWN) { |
463 prompt(0, NULL); |
|
464 prompt(101, NULL); |
|
465 prompt(401, NULL); |
|
466 } else if (key == KEY_DOWN) { |
426 manual = MANUAL_SELHLT; |
467 manual = MANUAL_SELHLT; |
427 } |
468 } |
428 } |
469 } |
429 |
470 |
430 usleep(10000); /* 10 mSec */ |
471 usleep(5000); /* 5 mSec */ |
431 |
472 |
432 } while (run); |
473 } while (run); |
433 |
474 |
434 syslog(LOG_NOTICE, "Out of loop"); |
475 syslog(LOG_NOTICE, "Out of loop"); |
435 if (debug) |
476 if (debug) |