Example #1
0
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 );
}
Example #2
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;
        }
    }
}
Example #3
0
// 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;
}