dialogs.c 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #include "dialogs/dialogs_message.h"
  2. #include "dialogs_i.h"
  3. #include "dialogs_api_lock.h"
  4. #include "dialogs_module_file_browser.h"
  5. #include "dialogs_module_message.h"
  6. static DialogsApp* dialogs_app_alloc() {
  7. DialogsApp* app = malloc(sizeof(DialogsApp));
  8. app->message_queue = furi_message_queue_alloc(8, sizeof(DialogsAppMessage));
  9. return app;
  10. }
  11. static void dialogs_app_process_message(DialogsApp* app, DialogsAppMessage* message) {
  12. UNUSED(app);
  13. switch(message->command) {
  14. case DialogsAppCommandFileBrowser:
  15. message->return_data->bool_value =
  16. dialogs_app_process_module_file_browser(&message->data->file_browser);
  17. break;
  18. case DialogsAppCommandDialog:
  19. message->return_data->dialog_value =
  20. dialogs_app_process_module_message(&message->data->dialog);
  21. break;
  22. }
  23. API_LOCK_UNLOCK(message->lock);
  24. }
  25. int32_t dialogs_srv(void* p) {
  26. UNUSED(p);
  27. DialogsApp* app = dialogs_app_alloc();
  28. furi_record_create(RECORD_DIALOGS, app);
  29. DialogsAppMessage message;
  30. while(1) {
  31. if(furi_message_queue_get(app->message_queue, &message, FuriWaitForever) == FuriStatusOk) {
  32. dialogs_app_process_message(app, &message);
  33. }
  34. }
  35. return 0;
  36. }