scope_scene_setup.c 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. #include "../scope_app_i.h"
  2. void scope_scene_setup_widget_callback(GuiButtonType result, InputType type, void* context) {
  3. ScopeApp* app = context;
  4. if(type == InputTypeShort) {
  5. view_dispatcher_send_custom_event(app->view_dispatcher, result);
  6. }
  7. }
  8. static void timeperiod_cb(VariableItem* item) {
  9. ScopeApp* app = variable_item_get_context(item);
  10. furi_assert(app);
  11. uint8_t index = variable_item_get_current_value_index(item);
  12. variable_item_set_current_value_text(item, time_list[index].str);
  13. app->time = time_list[index].time;
  14. }
  15. static void scale_cb(VariableItem* item) {
  16. ScopeApp* app = variable_item_get_context(item);
  17. furi_assert(app);
  18. uint8_t index = variable_item_get_current_value_index(item);
  19. variable_item_set_current_value_text(item, scale_list[index].str);
  20. app->scale = scale_list[index].scale;
  21. }
  22. static void fft_cb(VariableItem* item) {
  23. ScopeApp* app = variable_item_get_context(item);
  24. furi_assert(app);
  25. uint8_t index = variable_item_get_current_value_index(item);
  26. variable_item_set_current_value_text(item, fft_list[index].str);
  27. app->fft = fft_list[index].window;
  28. }
  29. static void measurement_cb(VariableItem* item) {
  30. ScopeApp* app = variable_item_get_context(item);
  31. furi_assert(app);
  32. uint8_t index = variable_item_get_current_value_index(item);
  33. variable_item_set_current_value_text(item, measurement_list[index].str);
  34. app->measurement = measurement_list[index].type;
  35. }
  36. void scope_scene_setup_on_enter(void* context) {
  37. ScopeApp* app = context;
  38. VariableItemList* var_item_list = app->variable_item_list;
  39. VariableItem* item;
  40. item = variable_item_list_add(
  41. var_item_list, "Time period", COUNT_OF(time_list), timeperiod_cb, app);
  42. for(uint32_t i = 0; i < COUNT_OF(time_list); i++) {
  43. if(time_list[i].time == app->time) {
  44. variable_item_set_current_value_index(item, i);
  45. variable_item_set_current_value_text(item, time_list[i].str);
  46. break;
  47. }
  48. }
  49. item = variable_item_list_add(var_item_list, "FFT window", COUNT_OF(fft_list), fft_cb, app);
  50. for(uint32_t i = 0; i < COUNT_OF(fft_list); i++) {
  51. if(fft_list[i].window == app->fft) {
  52. variable_item_set_current_value_index(item, i);
  53. variable_item_set_current_value_text(item, fft_list[i].str);
  54. break;
  55. }
  56. }
  57. item = variable_item_list_add(var_item_list, "Scale", COUNT_OF(scale_list), scale_cb, app);
  58. for(uint32_t i = 0; i < COUNT_OF(scale_list); i++) {
  59. if(scale_list[i].scale == app->scale) {
  60. variable_item_set_current_value_index(item, i);
  61. variable_item_set_current_value_text(item, scale_list[i].str);
  62. break;
  63. }
  64. }
  65. item = variable_item_list_add(
  66. var_item_list, "Measurement", COUNT_OF(measurement_list), measurement_cb, app);
  67. for(uint32_t i = 0; i < COUNT_OF(measurement_list); i++) {
  68. if(measurement_list[i].type == app->measurement) {
  69. variable_item_set_current_value_index(item, i);
  70. variable_item_set_current_value_text(item, measurement_list[i].str);
  71. break;
  72. }
  73. }
  74. view_dispatcher_switch_to_view(app->view_dispatcher, ScopeViewVariableItemList);
  75. }
  76. bool scope_scene_setup_on_event(void* context, SceneManagerEvent event) {
  77. ScopeApp* app = context;
  78. bool consumed = false;
  79. UNUSED(app);
  80. UNUSED(event);
  81. return consumed;
  82. }
  83. void scope_scene_setup_on_exit(void* context) {
  84. ScopeApp* app = context;
  85. variable_item_list_reset(app->variable_item_list);
  86. // Clear views
  87. widget_reset(app->widget);
  88. }