wifi_marauder_scene_script_settings.c 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. #include "../wifi_marauder_app_i.h"
  2. enum ScriptSettingsOption {
  3. ScriptSettingsOptionRepeat,
  4. ScriptSettingsOptionSavePcap,
  5. ScriptSettingsOptionEnableLed
  6. };
  7. const char* option_values[3] = {"No", "Yes", "Default"};
  8. static void wifi_marauder_scene_script_settings_enter_callback(void* context, uint32_t index) {
  9. WifiMarauderApp* app = context;
  10. // Accept script repeat value
  11. if(index == ScriptSettingsOptionRepeat) {
  12. scene_manager_set_scene_state(app->scene_manager, WifiMarauderSceneScriptSettings, index);
  13. app->user_input_type = WifiMarauderUserInputTypeNumber;
  14. app->user_input_number_reference = &app->script->repeat;
  15. scene_manager_next_scene(app->scene_manager, WifiMarauderSceneUserInput);
  16. }
  17. }
  18. static void wifi_marauder_scene_script_settings_change_callback(VariableItem* item) {
  19. WifiMarauderApp* app = variable_item_get_context(item);
  20. uint8_t current_option = variable_item_list_get_selected_item_index(app->var_item_list);
  21. uint8_t option_value_index = variable_item_get_current_value_index(item);
  22. switch(current_option) {
  23. case ScriptSettingsOptionSavePcap:
  24. variable_item_set_current_value_text(item, option_values[option_value_index]);
  25. app->script->save_pcap = option_value_index;
  26. break;
  27. case ScriptSettingsOptionEnableLed:
  28. variable_item_set_current_value_text(item, option_values[option_value_index]);
  29. app->script->enable_led = option_value_index;
  30. break;
  31. }
  32. }
  33. void wifi_marauder_scene_script_settings_on_enter(void* context) {
  34. WifiMarauderApp* app = context;
  35. VariableItemList* var_item_list = app->var_item_list;
  36. variable_item_list_set_enter_callback(
  37. app->var_item_list, wifi_marauder_scene_script_settings_enter_callback, app);
  38. // Script repeat option
  39. VariableItem* repeat_item = variable_item_list_add(app->var_item_list, "Repeat", 1, NULL, app);
  40. char repeat_str[32];
  41. snprintf(repeat_str, sizeof(repeat_str), "%d", app->script->repeat);
  42. variable_item_set_current_value_text(repeat_item, repeat_str);
  43. // Save PCAP option
  44. VariableItem* save_pcap_item = variable_item_list_add(
  45. app->var_item_list,
  46. "Save PCAP",
  47. 3,
  48. wifi_marauder_scene_script_settings_change_callback,
  49. app);
  50. variable_item_set_current_value_index(save_pcap_item, app->script->save_pcap);
  51. variable_item_set_current_value_text(save_pcap_item, option_values[app->script->save_pcap]);
  52. // Enable board LED option
  53. VariableItem* enable_led_item = variable_item_list_add(
  54. app->var_item_list,
  55. "Enable LED",
  56. 3,
  57. wifi_marauder_scene_script_settings_change_callback,
  58. app);
  59. variable_item_set_current_value_index(enable_led_item, app->script->enable_led);
  60. variable_item_set_current_value_text(enable_led_item, option_values[app->script->enable_led]);
  61. variable_item_list_set_selected_item(
  62. var_item_list,
  63. scene_manager_get_scene_state(app->scene_manager, WifiMarauderSceneScriptSettings));
  64. view_dispatcher_switch_to_view(app->view_dispatcher, WifiMarauderAppViewVarItemList);
  65. }
  66. bool wifi_marauder_scene_script_settings_on_event(void* context, SceneManagerEvent event) {
  67. UNUSED(context);
  68. UNUSED(event);
  69. return false;
  70. }
  71. void wifi_marauder_scene_script_settings_on_exit(void* context) {
  72. WifiMarauderApp* app = context;
  73. variable_item_list_reset(app->var_item_list);
  74. }