Esempio n. 1
0
void PAGE_ChangeByID(enum PageID id, s8 menuPage)
{
    if ( modal || GUI_IsModal())
        return;
    PAGE_SaveCurrentPos();
    page_scrollable = NULL;
    PAGE_Exit();
    GUI_SelectionNotify(NULL);
    cur_page = id;
    BUTTON_InterruptLongPress(); //Make sure button press is not passed to the new page
    if (pages[cur_page].init == PAGE_MainInit)
        quick_page_enabled = 1;
    else if (pages[cur_page].init == PAGE_MenuInit)
        quick_page_enabled = 0;
    PAGE_RemoveAllObjects();
    if (HAS_TOUCH) {
        GUI_ChangeSelectionOnTouch(1);
    }
    ActionCB = default_button_action_cb;
    pages[cur_page].init(menuPage);
    if (page_scrollable) {
        guiObject_t *obj = GUI_ShowScrollableRowOffset(page_scrollable, *current_selected);
        if(! HAS_TOUCH || ! GUI_InTouch())
            GUI_SetSelected(obj);
    }
}
Esempio n. 2
0
void PAGE_RemoveAllObjects()
{
    enter_cmd = NULL;
    exit_cmd = NULL;
    if(! GUI_IsEmpty()) {
        GUI_RemoveAllObjects();
        memset(&gui_objs, 0, sizeof(gui_objs));
        BUTTON_InterruptLongPress(); //Make sure button press is not passed to next page
    }
}
Esempio n. 3
0
unsigned MIXER_UpdateTrim(u32 buttons, unsigned flags, void *data)
{
#define TRIM_MUSIC_DURATION 100
#define START_TONE 1000
    (void)data;
    int i;
    int orig_step_size = 1;
    int tmp;
    unsigned reach_end = 0; // reach either 100 , 0, or -100
    if (flags & BUTTON_LONGPRESS) {
        if (orig_step_size == 1)
            orig_step_size = 9;
        else if (orig_step_size == 9)
            orig_step_size = 10;
    }
    if (! orig_step_size)
        return 1;
    unsigned volume = 10 * Transmitter.volume;
    for (i = 0; i < NUM_TRIMS; i++) {
        int step_size = orig_step_size;
        reach_end = 0;
        int neg_button = CHAN_ButtonIsPressed(buttons, Model.trims[i].neg);
        if (neg_button || CHAN_ButtonIsPressed(buttons, Model.trims[i].pos)) {
            if (Model.trims[i].step > 190) {
                _trim_as_switch(flags, i, neg_button);
                continue;
            }
            if (flags & BUTTON_RELEASE)
                continue;
            int max = 100;
            if (Model.trims[i].step >= 100) {
                step_size = Model.trims[i].step - 90;
            } else if (Model.trims[i].step > 10) {
                step_size = step_size * Model.trims[i].step / 10;
            }
            if (neg_button)
                step_size = -step_size;
            s8 *value = MIXER_GetTrim(i);
            tmp = (int)(*value) + step_size;
            //print_buttons(buttons);
            if ((int)*value > 0 && tmp <= 0) {
                *value = 0;
                reach_end = 1;
            } else if ((int)*value < 0 && tmp >= 0) {
                *value = 0;
                reach_end = 1;
            } else if (tmp > max) {
                *value = 100;
                reach_end = 1;
            } else if (tmp < -max) {
                *value = -100;
                reach_end = 1;
            } else {
                *value = tmp;
            }

            if (reach_end && (flags & BUTTON_LONGPRESS))
                BUTTON_InterruptLongPress();

            if (Model.trims[i].value[0] == 0) {
                SOUND_SetFrequency(3951, volume);
                SOUND_StartWithoutVibrating(TRIM_MUSIC_DURATION, NULL);
            }
            else if (CLOCK_getms()- last_trim_music_time > TRIM_MUSIC_DURATION + 50) {  // Do not beep too frequently
                last_trim_music_time = CLOCK_getms();
                tmp = (*value >= 0) ? *value : -*value;
                if (step_size >=9 || step_size <= -9)
                    SOUND_SetFrequency(START_TONE + tmp * 10, volume); // start from "c2" tone, frequence = 1000
                else  {  //  for small step change: generate 2 different tone for closing to/away from mid-point
                    if (*value < 0)
                        step_size = -step_size;
                    u16 tone = START_TONE + 300;
                    if (step_size < 0)
                        tone = START_TONE;
                    SOUND_SetFrequency(tone, volume);
                    //printf("tone: %d\n\n", tone);
                }

                SOUND_StartWithoutVibrating(TRIM_MUSIC_DURATION, NULL);
            }
        }
    }
    return 1;
}