Beispiel #1
0
static inline void OnBTNChange(bool btn_pressed, uint btn) {
    // Assumes btn 1..4

    // De-bouncing
    bool *state = &btn_state[btn];
    uint *tick = &btn_debounce_tick[btn];
    bool *debouncing = &btn_debouncing[btn];

    if (*debouncing && systick < *tick) {
        return; // Event occurred within debounce interval
    }

    // Change state
    *state = btn_pressed;
    *tick = systick + DEBOUNCE_INTERVAL;
    *debouncing = true;

    //printf("btn %d : %d\n", btn, btn_pressed);

    reset_auto_screen_off();

    // Event handling
    if (btn_pressed) {
        if (!displayOn) {
            ScreenOn();
        }
        else {
            switch (btn) {
                case 1:
                    break;
                case 2:
                    PrevApp();
                    break;
                case 3:
                    NextApp();
                    break;
                case 4:
                    ScreenOff();
                    break;
            }
        }

        AppForegroundEvent(evtBtnPress, btn);
    } else {
        AppForegroundEvent(evtBtnRelease, btn);
    }
}
Beispiel #2
0
/*---------------------------------------------------------------------------*/
void ScreenInit(void)
{
    T_uezDevice lcd;
    T_pixelColor *pixels;

    UEZLCDOpen("LCD", &lcd);
    UEZLCDGetFrame(lcd, 0, (void **)&pixels);
    UEZLCDBacklight(lcd, 0);
    UEZLCDOff(lcd);

    swim_window_open(&G_win, DISPLAY_WIDTH, DISPLAY_HEIGHT, pixels, 0, 0,
            DISPLAY_WIDTH - 1, DISPLAY_HEIGHT - 1, 1, WHITE, RGB(0, 0, 0),
            WHITE);

    swim_set_font(&G_win, &APP_DEMO_DEFAULT_FONT);

    print(PROJECT_NAME " " VERSION_AS_TEXT "\n\n"); // clear serial screen and put up banner
    
    ScreenOn();
}