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"); }
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; }