furi.c 955 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. #include "furi.h"
  2. #include <applications.h>
  3. // for testing purpose
  4. uint32_t exitcode = 0;
  5. void set_exitcode(uint32_t _exitcode) {
  6. exitcode = _exitcode;
  7. }
  8. void furi_init() {
  9. gpio_api_init();
  10. api_interrupt_init();
  11. furi_record_init();
  12. furi_stdglue_init();
  13. }
  14. int systemd() {
  15. furi_init();
  16. printf("[systemd] furi initialized\r\n");
  17. // FURI startup
  18. for(size_t i = 0; i < FLIPPER_SERVICES_size(); i++) {
  19. printf("[systemd] starting service %s\r\n", FLIPPER_SERVICES[i].name);
  20. osThreadAttr_t* attr = furi_alloc(sizeof(osThreadAttr_t));
  21. attr->name = FLIPPER_SERVICES[i].name;
  22. attr->stack_size = FLIPPER_SERVICES[i].stack_size;
  23. osThreadNew(FLIPPER_SERVICES[i].app, NULL, attr);
  24. }
  25. printf("[systemd] all services started\r\n");
  26. while(1) {
  27. osThreadSuspend(osThreadGetId());
  28. }
  29. printf("[systemd] === Bye from Flipper Zero! ===\r\n");
  30. return (int)exitcode;
  31. }