#include "flipper.h" #include extern "C" { #include "furi.h" #include "log.h" #include "startup.h" #include "tty_uart.h" } extern "C" void app() { register_tty_uart(); FuriRecordSubscriber* log = get_default_log(); fuprintf(log, "\n=== Welcome to Flipper Zero! ===\n\n"); // FURI startup const size_t flipper_app_count = sizeof(FLIPPER_STARTUP) / sizeof(FLIPPER_STARTUP[0]); FuriApp* handlers[flipper_app_count]; for(size_t i = 0; i < flipper_app_count; i++) { // TODO create a dependency tree and run tasks in the desired order furiac_wait_libs(FLIPPER_STARTUP[i].libs); handlers[i] = furiac_start(FLIPPER_STARTUP[i].app, FLIPPER_STARTUP[i].name, NULL); } bool is_alive = false; do { is_alive = false; for(size_t i = 0; i < flipper_app_count; i++) { if(handlers[i]->handler != NULL) { is_alive = true; } } delay(500); // TODO add deferred event queue here } while(is_alive); fuprintf(log, "\n=== Bye from Flipper Zero! ===\n\n"); }