Beispiel #1
0
void load_tab(unsigned char tab)
{
    struct widget_config *w_cfg;

    DTABS("Loading tab %d\n", tab);
    
    /* stop rendering */
    video_pause();

    /* reset widgets module */
    widgets_reset();

    /* default video profile */
    video_apply_config(0);

    if (tab == 0) {
        w_cfg = (struct widget_config*) tab0_widgets;
    } else {
        w_cfg = config.widgets;
    }

    /* load widgets config */
    while (w_cfg->tab != TABS_END) {
        if (w_cfg->tab == tab)
            load_widget_config(w_cfg);
        w_cfg++;
    }
    
    load_widgets();

    /* resume video rendering */
    video_resume();
    active_tab = tab;
    DTABS("Loaded\n");
}
Beispiel #2
0
int main(void) {
    extern int __C30_UART; __C30_UART = 2;
    unsigned char i;
    unsigned char in_config = 0;
    char c;

    /* generic hw init */
    hw_init();
    
    /* real time clock init */
    clock_init();

    /* adc init */
    adc_init();

    /* init uart2 */
    uart_init2(UART_PORT_TELEMETRY);

    /* init video driver */
    init_video();

    /* try to load config from flash */
    load_config();

    /* video driver config */
    video_apply_config(&config.video);

    /* init widgets */
    widgets_init();

    /* enable all interrupts */
    SRbits.IPL = 0;
    CORCONbits.IPL3 = 1;

    /* TODO: rework config entry */
    /* check for config entry */
    for (i = 0; i < 8; i++) {
        while (uart_getc2(&c) == 0) {
            widgets_process();
            render_process();
            ClrWdt();
        }
        if (c != '!')
            break;
    }

    if (i == 8) {
        in_config = 1;
        while (in_config) {
            in_config = config_osd();
            widgets_process();
            render_process();
            ClrWdt();
        }
    }

    /* re-build tab list */
    build_tab_list();

    uart_set_baudrate2(config.baudrate);

    init_home_process();
    init_flight_stats_process();

    for (;;) {
        mavlink_process();
        widgets_process();
        render_process();
        clock_process();
        ClrWdt();
    }

    return 0;
}