rtems_task Task_1( rtems_task_argument argument ) { Screen1(); rtems_test_pause_and_screen_number( 2 ); Screen2(); rtems_test_pause_and_screen_number( 3 ); Screen3(); rtems_test_pause_and_screen_number( 4 ); Screen4(); rtems_test_pause_and_screen_number( 5 ); Screen5(); rtems_test_pause_and_screen_number( 6 ); Screen6(); rtems_test_pause_and_screen_number( 7 ); Screen7(); rtems_test_pause_and_screen_number( 8 ); Screen8(); rtems_test_pause_and_screen_number( 9 ); Screen9(); rtems_test_pause_and_screen_number( 10 ); Screen10(); rtems_test_pause_and_screen_number( 11 ); Screen11(); rtems_test_pause_and_screen_number( 12 ); Screen12(); rtems_test_pause_and_screen_number( 13 ); Screen13(); rtems_test_pause_and_screen_number( 14 ); Screen14(); puts( "*** END OF TEST 9 ***" ); rtems_test_exit( 0 ); }
// Current settings // Saved as profile entry 0 (profile OFF) void getScreen3() { gv_sc4mode = SHOW_PSET; if (!gv_prof_set) { switch(gv_scr3npstate) { case SC3NPNULL: if (!gv_show3Aonce) { Screen3(SHOW_ALL); gv_show3Aonce = true; } if (gv_short_sw) { nextSC3NP(SC3NPTEMP); } break; case SC3NPTEMP: // Set target temp blinkCursor(0, 0, true); if (gv_rot_active) { gv_rot_active = false; if (gv_rot_pos) { gv_rot_pos = false; if (gv_curr_scale == SCALE_F) gv_temp_set += 0.59; else gv_temp_set += 1; } if (gv_rot_neg) { gv_rot_neg = false; if (gv_curr_scale == SCALE_F) gv_temp_set -= 0.59; else gv_temp_set -= 1; } lcd->setCursor(2, 0); lcd->print(convtemp(gv_temp_set)); } if (gv_short_sw) { nextSC3NP(SC3NPCYCL); } break; case SC3NPCYCL: // Set hyst range lcd->setCursor(0, 1); blinkCursor(0, 1, true); if (gv_rot_active) { gv_rot_active = false; if (gv_rot_pos) { gv_rot_pos = false; if (gv_curr_scale == SCALE_F) gv_hyst_set += 0.59; else gv_hyst_set += 1.0; } if (gv_rot_neg) { gv_rot_neg = false; if (gv_curr_scale == SCALE_F) gv_hyst_set -= 0.59; else gv_hyst_set -= 1.0; } if (gv_hyst_set == NULL) gv_hyst_set = 0.0; if (gv_hyst_set > 9.0) gv_hyst_set = 0.0; if (gv_hyst_set < 0.0) gv_hyst_set = 9.0; // gv_hyst_set = 4.0; lcd->setCursor(2, 1); lcd->print(convrange(gv_hyst_set)); } // lcd->setCursor(4, 1); // lcd->print(gv_hyst_set); if (gv_short_sw) { nextSC3NP(SC3NPTSCL); } break; case SC3NPTSCL: // Set display scale (C or F) blinkCursor(5, 0, true); if (gv_rot_active) { gv_rot_active = false; if (gv_rot_pos || gv_rot_neg) { gv_rot_pos = false; gv_rot_neg = false; if (gv_curr_scale == SCALE_F) gv_curr_scale = SCALE_C; else gv_curr_scale = SCALE_F; } lcd->setCursor(5,0); if (gv_curr_scale == SCALE_F) lcd->print("F"); else lcd->print("C"); } if (gv_short_sw) { nextSC3NP(SC3NPOVRT); } break; case SC3NPOVRT: blinkCursor(6, 1, true); if (gv_rot_active) { gv_rot_active = false; if (gv_rot_pos) { gv_rot_pos = false; gv_over_time++; } if (gv_rot_neg) { gv_rot_neg = false; gv_over_time--; } lcd->setCursor(8, 1); lcd->print(gv_over_time); } if (gv_short_sw) { nextSC3NP(SC3NPMODE); } break; case SC3NPMODE: // Set operation mode blinkCursor(13, 0, true); if (gv_rot_active) { gv_rot_active = false; if (gv_rot_pos) { gv_rot_pos = false; gv_mode_set++; } if (gv_rot_neg) { gv_rot_neg = false; gv_mode_set--; } if (gv_mode_set > MODE_AUTO) gv_mode_set = MODE_OFF; if (gv_mode_set < MODE_OFF) gv_mode_set = MODE_AUTO; showMode(8, 0); lcd->setCursor(15,0); lcd->print(gv_mode_set); } lcd->setCursor(15,0); lcd->print(gv_mode_set); lcd->setCursor(13,0); if (gv_short_sw) { nextSC3NP(SC3NPPROF); } break; case SC3NPPROF: // Set profile number blinkCursor(13, 1, true); if (gv_rot_active) { gv_rot_active = false; if (gv_rot_pos) { gv_rot_pos = false; gv_prof_set++; } if (gv_rot_neg) { gv_rot_neg = false; gv_prof_set--; } if (gv_prof_set > PROF_WKND) gv_prof_set = PROF_OFF; if (gv_prof_set < PROF_OFF) gv_prof_set = PROF_WKND; showProf(15, 1); if (gv_prof_set != PROF_OFF) { gv_show3Bonce = false; } } if (gv_short_sw) { nextSC3NP(SC3NPSET); } break; case SC3NPSET: if (gv_prof_set == PROF_OFF) { gv_profile[gv_prof_set].op_mode = gv_mode_set; gv_profile[gv_prof_set].start_hr = 0; gv_profile[gv_prof_set].start_min = 0; gv_profile[gv_prof_set].duration = gv_over_time; gv_profile[gv_prof_set].tset = gv_temp_set; gv_profile[gv_prof_set].hystrange = gv_hyst_set; lcd->clear(); lcd->setCursor(0,0); lcd->print("Settings saved"); saveProf(gv_prof_set); saveGVData(); gv_inputchange = true; delay(2000); } Screen3(SHOW_ALL); nextSC3NP(SC3NPNULL); break; } } else { // If any profile is active then only allow edit of the // temp units and the profile number if (!gv_show3Bonce) { Screen3(SHOW_SUB); gv_show3Bonce = true; } switch(gv_scr3prstate) { case SC3PRNULL: if (gv_short_sw) { nextSC3PR(SC3PRTSCL); } break; case SC3PRTSCL: // Set display scale (C or F) blinkCursor(5, 0, true); if (gv_rot_active) { gv_rot_active = false; if (gv_rot_pos || gv_rot_neg) { gv_rot_pos = false; gv_rot_neg = false; if (gv_curr_scale == SCALE_F) gv_curr_scale = SCALE_C; else gv_curr_scale = SCALE_F; } lcd->setCursor(5,0); if (gv_curr_scale == SCALE_F) lcd->print("F"); else lcd->print("C"); } if (gv_short_sw) { nextSC3PR(SC3PRPROF); } break; case SC3PRPROF: // Set profile number blinkCursor(13, 1, true); if (gv_rot_active) { gv_rot_active = false; if (gv_rot_pos) { gv_rot_pos = false; gv_prof_set++; } if (gv_rot_neg) { gv_rot_neg = false; gv_prof_set--; } if (gv_prof_set > PROF_WKND) gv_prof_set = PROF_OFF; if (gv_prof_set < PROF_OFF) gv_prof_set = PROF_WKND; showProf(15, 1); if (gv_prof_set == PROF_OFF) { gv_show3Aonce = false; } } if (gv_short_sw) { gv_inputchange = true; nextSC3PR(SC3PRNULL); } break; } } }
// Display control state machine // Uses decoded control input to manipulate the display screens and settings. // gv_input_active will remain true until screen 5 exit. bool processInput() { bool rc = false; switch(gv_dispstate) { case DS0: // The primary alternating status screens if (gv_long_sw && gv_saw_button) { nextLCDdisp(DS1); rc = true; } break; case DS1: // Screen 3 // Settings screen if (!gv_showscreen) { DispLED(true); Screen3(SHOW_ALL); gv_showscreen = true; gv_saw_button = false; } if (gv_dblclick && gv_saw_button) { gv_dblclick = false; nextLCDdisp(DS0); } else if (gv_long_sw && gv_saw_button) { nextLCDdisp(DS2); } else getScreen3(); rc = true; break; case DS2: // Screen 4 // Profile edit screen if (!gv_showscreen) { DispLED(true); Screen4(gv_sc4mode); gv_showscreen = true; gv_saw_button = false; } if (gv_dblclick && gv_saw_button) { gv_dblclick = false; nextLCDdisp(DS0); } else if (gv_long_sw && gv_saw_button) { nextLCDdisp(DS3); } else getScreen4(); rc = true; break; case DS3: // Screen 5 // Time/date setup screen if (!gv_showscreen) { DispLED(true); Screen5(); gv_showscreen = true; gv_saw_button = false; } if (gv_dblclick && gv_saw_button) { gv_dblclick = false; nextLCDdisp(DS0); } else if (gv_long_sw && gv_saw_button) { nextLCDdisp(DS0); rc = false; } else { rc = true; getScreen5(); } break; } return rc; }