brewco/brewco.c

changeset 454
78242696c15a
parent 453
76418c89b480
child 455
f84501d8dd87
equal deleted inserted replaced
453:76418c89b480 454:78242696c15a
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)

mercurial