avr_isp_scene_reader.c 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #include "../avr_isp_app_i.h"
  2. void avr_isp_scene_reader_callback(AvrIspCustomEvent event, void* context) {
  3. furi_assert(context);
  4. AvrIspApp* app = context;
  5. view_dispatcher_send_custom_event(app->view_dispatcher, event);
  6. }
  7. void avr_isp_scene_reader_on_enter(void* context) {
  8. furi_assert(context);
  9. AvrIspApp* app = context;
  10. avr_isp_reader_set_file_path(
  11. app->avr_isp_reader_view, furi_string_get_cstr(app->file_path), app->file_name_tmp);
  12. avr_isp_reader_view_set_callback(app->avr_isp_reader_view, avr_isp_scene_reader_callback, app);
  13. view_dispatcher_switch_to_view(app->view_dispatcher, AvrIspViewReader);
  14. }
  15. bool avr_isp_scene_reader_on_event(void* context, SceneManagerEvent event) {
  16. furi_assert(context);
  17. AvrIspApp* app = context;
  18. UNUSED(app);
  19. bool consumed = false;
  20. if(event.type == SceneManagerEventTypeBack) {
  21. //do not handle exit on "Back"
  22. consumed = true;
  23. } else if(event.type == SceneManagerEventTypeCustom) {
  24. switch(event.event) {
  25. case AvrIspCustomEventSceneReadingOk:
  26. scene_manager_next_scene(app->scene_manager, AvrIspSceneSuccess);
  27. consumed = true;
  28. break;
  29. case AvrIspCustomEventSceneExit:
  30. scene_manager_search_and_switch_to_previous_scene(
  31. app->scene_manager, AvrIspSceneChipDetect);
  32. consumed = true;
  33. break;
  34. case AvrIspCustomEventSceneErrorVerification:
  35. app->error = AvrIspErrorVerification;
  36. scene_manager_search_and_switch_to_previous_scene(
  37. app->scene_manager, AvrIspSceneChipDetect);
  38. consumed = true;
  39. break;
  40. case AvrIspCustomEventSceneErrorReading:
  41. app->error = AvrIspErrorReading;
  42. scene_manager_search_and_switch_to_previous_scene(
  43. app->scene_manager, AvrIspSceneChipDetect);
  44. consumed = true;
  45. break;
  46. default:
  47. break;
  48. }
  49. } else if(event.type == SceneManagerEventTypeTick) {
  50. avr_isp_reader_update_progress(app->avr_isp_reader_view);
  51. }
  52. return consumed;
  53. }
  54. void avr_isp_scene_reader_on_exit(void* context) {
  55. UNUSED(context);
  56. }