SOL_API void sol_shutdown(void) { if (_init_count == 0) { SOL_CRI("sol_init() was not called"); return; } _init_count--; if (_init_count > 0) return; SOL_DBG("shutdown"); sol_ipm_shutdown(); sol_update_shutdown(); sol_comms_shutdown(); sol_flow_shutdown(); sol_crypto_shutdown(); sol_blob_shutdown(); sol_pin_mux_shutdown(); sol_platform_shutdown(); mainloop_impl->shutdown(); sol_modules_clear_cache(); sol_log_shutdown(); }
SOL_API int sol_run(void) { if (_init_count == 0) { SOL_CRI("sol_init() was not called"); return EXIT_FAILURE; } if (mainloop_running) { SOL_CRI("Mainloop already running"); return EXIT_FAILURE; } SOL_DBG("run"); mainloop_running = true; mainloop_impl->run(); return mainloop_return_code; }
int sol_mainloop_impl_init(void) { loop = g_main_loop_new(NULL, false); if (!loop) { SOL_CRI("cannot create mainloop"); return errno ? -errno : -ENOENT; } g_unix_signal_add(SIGINT, on_signal, loop); g_unix_signal_add(SIGTERM, on_signal, loop); return 0; }
SOL_API void sol_quit_with_code(int return_code) { if (_init_count == 0) { SOL_CRI("sol_init() was not called"); return; } if (!mainloop_running) { SOL_DBG("Mainloop was not running"); return; } SOL_DBG("quit with code %d", return_code); mainloop_return_code = return_code; mainloop_running = false; mainloop_impl->quit(); }
int sol_platform_impl_set_target(const char *target) { if (!strncasecmp(target, SOL_PLATFORM_TARGET_POWEROFF, strlen(SOL_PLATFORM_TARGET_POWEROFF))) { lpm_set(LPM_POWERDOWN); return 0; } if (!strncasecmp(target, SOL_PLATFORM_TARGET_SUSPEND, strlen(SOL_PLATFORM_TARGET_SUSPEND))) { lpm_set(LPM_SLEEP); return 0; } if (!strncasecmp(target, SOL_PLATFORM_TARGET_DEFAULT, strlen(SOL_PLATFORM_TARGET_DEFAULT))) { lpm_set(LPM_ON); return 0; } SOL_CRI("Unsupported set target %s.", target); return -ENOTSUP; }
int main(int argc, char *argv[]) { int r; if (!parse_args(argc, argv)) { usage(argv[0]); return EXIT_FAILURE; } if (sol_init() < 0) { SOL_CRI("Cannot initialize soletta."); return EXIT_FAILURE; } sol_idle_add(startup, NULL); r = sol_run(); shutdown(); sol_shutdown(); return r; }
SOL_API void sol_shutdown(void) { if (_init_count == 0) { SOL_CRI("sol_init() was not called"); return; } _init_count--; if (_init_count > 0) return; SOL_DBG("shutdown"); #ifdef NETWORK sol_comms_shutdown(); #endif #ifdef FLOW_SUPPORT sol_flow_shutdown(); #endif sol_blob_shutdown(); sol_pin_mux_shutdown(); sol_platform_shutdown(); sol_mainloop_impl_shutdown(); sol_log_shutdown(); }
int sol_platform_impl_restart_service(const char *service) { SOL_CRI("Unsupported"); return -ENOTSUP; }
int sol_platform_impl_del_service_monitor(const char *service) { SOL_CRI("Unsupported"); return -ENOTSUP; }