furi.c 747 B

123456789101112131415161718192021222324252627282930313233343536
  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. // FURI startup
  17. for(size_t i = 0; i < FLIPPER_SERVICES_size(); i++) {
  18. osThreadAttr_t* attr = furi_alloc(sizeof(osThreadAttr_t));
  19. attr->name = FLIPPER_SERVICES[i].name;
  20. attr->stack_size = 1024;
  21. osThreadNew(FLIPPER_SERVICES[i].app, NULL, attr);
  22. }
  23. while(1) {
  24. osThreadSuspend(osThreadGetId());
  25. }
  26. printf("\n=== Bye from Flipper Zero! ===\n\n");
  27. return (int)exitcode;
  28. }