wifi_marauder_scene_script_settings.c 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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(app->var_item_list, wifi_marauder_scene_script_settings_enter_callback, app);
  37. // Script repeat option
  38. VariableItem* repeat_item = variable_item_list_add(app->var_item_list, "Repeat", 1, NULL, app);
  39. char repeat_str[32];
  40. snprintf(repeat_str, sizeof(repeat_str), "%d", app->script->repeat);
  41. variable_item_set_current_value_text(repeat_item, repeat_str);
  42. // Save PCAP option
  43. VariableItem* save_pcap_item = variable_item_list_add(app->var_item_list, "Save PCAP", 3, wifi_marauder_scene_script_settings_change_callback, app);
  44. variable_item_set_current_value_index(save_pcap_item, app->script->save_pcap);
  45. variable_item_set_current_value_text(save_pcap_item, option_values[app->script->save_pcap]);
  46. // Enable board LED option
  47. VariableItem* enable_led_item = variable_item_list_add(app->var_item_list, "Enable LED", 3, wifi_marauder_scene_script_settings_change_callback, app);
  48. variable_item_set_current_value_index(enable_led_item, app->script->enable_led);
  49. variable_item_set_current_value_text(enable_led_item, option_values[app->script->enable_led]);
  50. variable_item_list_set_selected_item(var_item_list, scene_manager_get_scene_state(app->scene_manager, WifiMarauderSceneScriptSettings));
  51. view_dispatcher_switch_to_view(app->view_dispatcher, WifiMarauderAppViewVarItemList);
  52. }
  53. bool wifi_marauder_scene_script_settings_on_event(void* context, SceneManagerEvent event) {
  54. UNUSED(context);
  55. UNUSED(event);
  56. return false;
  57. }
  58. void wifi_marauder_scene_script_settings_on_exit(void* context) {
  59. WifiMarauderApp* app = context;
  60. variable_item_list_reset(app->var_item_list);
  61. }