scope_scene_setup.c 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  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(
  50. var_item_list, "FFT window", COUNT_OF(fft_list), fft_cb, app);
  51. for(uint32_t i = 0; i < COUNT_OF(fft_list); i++) {
  52. if(fft_list[i].window == app->fft) {
  53. variable_item_set_current_value_index(item, i);
  54. variable_item_set_current_value_text(item, fft_list[i].str);
  55. break;
  56. }
  57. }
  58. item = variable_item_list_add(
  59. var_item_list, "Scale", COUNT_OF(scale_list), scale_cb, app);
  60. for(uint32_t i = 0; i < COUNT_OF(scale_list); i++) {
  61. if(scale_list[i].scale == app->scale) {
  62. variable_item_set_current_value_index(item, i);
  63. variable_item_set_current_value_text(item, scale_list[i].str);
  64. break;
  65. }
  66. }
  67. item = variable_item_list_add(
  68. var_item_list, "Measurement", COUNT_OF(measurement_list), measurement_cb, app);
  69. for(uint32_t i = 0; i < COUNT_OF(measurement_list); i++) {
  70. if(measurement_list[i].type == app->measurement) {
  71. variable_item_set_current_value_index(item, i);
  72. variable_item_set_current_value_text(item, measurement_list[i].str);
  73. break;
  74. }
  75. }
  76. view_dispatcher_switch_to_view(app->view_dispatcher, ScopeViewVariableItemList);
  77. }
  78. bool scope_scene_setup_on_event(void* context, SceneManagerEvent event) {
  79. ScopeApp* app = context;
  80. bool consumed = false;
  81. UNUSED(app);
  82. UNUSED(event);
  83. return consumed;
  84. }
  85. void scope_scene_setup_on_exit(void* context) {
  86. ScopeApp* app = context;
  87. variable_item_list_reset(app->variable_item_list);
  88. // Clear views
  89. widget_reset(app->widget);
  90. }