dialogs.c 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. #include "dialogs-i.h"
  2. #include "dialogs-api-lock.h"
  3. #include "dialogs-module-file-select.h"
  4. #include "dialogs-module-message.h"
  5. static DialogsApp* dialogs_app_alloc() {
  6. DialogsApp* app = malloc(sizeof(DialogsApp));
  7. app->message_queue = osMessageQueueNew(8, sizeof(DialogsAppMessage), NULL);
  8. return app;
  9. }
  10. static void dialogs_app_process_message(DialogsApp* app, DialogsAppMessage* message) {
  11. switch(message->command) {
  12. case DialogsAppCommandFileOpen:
  13. message->return_data->bool_value =
  14. dialogs_app_process_module_file_select(&message->data->file_select);
  15. break;
  16. case DialogsAppCommandDialog:
  17. message->return_data->dialog_value =
  18. dialogs_app_process_module_message(&message->data->dialog);
  19. break;
  20. }
  21. API_LOCK_UNLOCK(message->lock);
  22. }
  23. int32_t dialogs_srv(void* p) {
  24. DialogsApp* app = dialogs_app_alloc();
  25. furi_record_create("dialogs", app);
  26. DialogsAppMessage message;
  27. while(1) {
  28. if(osMessageQueueGet(app->message_queue, &message, NULL, osWaitForever) == osOK) {
  29. dialogs_app_process_message(app, &message);
  30. }
  31. }
  32. return 0;
  33. }