scope_scene_setup.c 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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 fft_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, fft_list[index].str);
  20. app->fft = fft_list[index].window;
  21. }
  22. static void measurement_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, measurement_list[index].str);
  27. app->measurement = measurement_list[index].type;
  28. }
  29. void scope_scene_setup_on_enter(void* context) {
  30. ScopeApp* app = context;
  31. VariableItemList* var_item_list = app->variable_item_list;
  32. VariableItem* item;
  33. item = variable_item_list_add(
  34. var_item_list, "Time period", COUNT_OF(time_list), timeperiod_cb, app);
  35. for(uint32_t i = 0; i < COUNT_OF(time_list); i++) {
  36. if(time_list[i].time == app->time) {
  37. variable_item_set_current_value_index(item, i);
  38. variable_item_set_current_value_text(item, time_list[i].str);
  39. break;
  40. }
  41. }
  42. item = variable_item_list_add(
  43. var_item_list, "FFT window", COUNT_OF(fft_list), fft_cb, app);
  44. for(uint32_t i = 0; i < COUNT_OF(fft_list); i++) {
  45. if(fft_list[i].window == app->fft) {
  46. variable_item_set_current_value_index(item, i);
  47. variable_item_set_current_value_text(item, fft_list[i].str);
  48. break;
  49. }
  50. }
  51. item = variable_item_list_add(
  52. var_item_list, "Measurement", COUNT_OF(measurement_list), measurement_cb, app);
  53. for(uint32_t i = 0; i < COUNT_OF(measurement_list); i++) {
  54. if(measurement_list[i].type == app->measurement) {
  55. variable_item_set_current_value_index(item, i);
  56. variable_item_set_current_value_text(item, measurement_list[i].str);
  57. break;
  58. }
  59. }
  60. view_dispatcher_switch_to_view(app->view_dispatcher, ScopeViewVariableItemList);
  61. }
  62. bool scope_scene_setup_on_event(void* context, SceneManagerEvent event) {
  63. ScopeApp* app = context;
  64. bool consumed = false;
  65. UNUSED(app);
  66. UNUSED(event);
  67. return consumed;
  68. }
  69. void scope_scene_setup_on_exit(void* context) {
  70. ScopeApp* app = context;
  71. variable_item_list_reset(app->variable_item_list);
  72. // Clear views
  73. widget_reset(app->widget);
  74. }