Skip to content

Commit d556cf1

Browse files
committed
add new commands
1 parent 8ee008e commit d556cf1

6 files changed

Lines changed: 1089 additions & 186 deletions

File tree

CHANGELOG.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,20 @@
11
# Changelog
22

3+
## v1.8.0
4+
5+
- Added NetBIOS Scan, HTTP Banner Scan, SNMP Probe, and WPA3 Compliance Check commands to WiFi Scanning menu
6+
- Added WiFi Status and WebUI AP commands to WiFi Network menu
7+
- Added Show Time, Coredump Dump, Erase Coredump, Load Config, Identify Device, and Force Crash commands to WiFi Settings menu
8+
- Added Scan Advertisers, List Advertisers, and BLE Bridge commands to BLE Scanning menu
9+
- Added Set GPS Baud, WiGLE Auto Upload, and WiGLE Donate commands to GPS menu
10+
- Reorganized WiFi Settings menu into 5 sub-category menus: LED & RGB, SD Card, Settings Mgmt, Device & Debug, Misc
11+
- Reorganized WiFi Network menu into 5 sub-category menus: Evil Portal, WiFi Connection, Network Scan, IoT Control, WebUI
12+
- Reorganized BLE Scanning menu into 4 sub-category menus: Flipper & Skimmer, AirTag, GATT, Advertisers & Traffic
13+
- Reorganized GPS menu into 2 sub-category menus: GPS Config, Wardriving
14+
- Moved network reconnaissance commands (Scan Local Network, Scan Ports, ARP Scan, Scan SSH, NetBIOS Scan, HTTP Banner Scan, SNMP Probe) from WiFi Scanning to WiFi Network > Network Scan sub-category
15+
- Removed duplicate Chip Info entry that appeared at both index 2 and index 23 in the old WiFi Settings flat menu
16+
- Added 16 new ViewId enums, Submenu pointers, and navigation logic to support the sub-category menu hierarchy
17+
318
## v1.7.0
419

520
- Fixed cancel button in confirmation dialogs returning to main menu instead of the correct sub-menu

application.fam

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ App(
99
fap_category="GPIO/ESP",
1010
# Optional values
1111
icon="A_GhostESP_14",
12-
fap_version="1.7.0",
12+
fap_version="1.8.0",
1313
fap_icon="ghost_esp.png", # 10x10 1-bit PNG
1414
fap_icon_assets="images", # Image assets to compile for this application
1515
)

src/app_state.h

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,26 @@ typedef enum {
3939
VIEW_IR_BUTTONS = 32,
4040
VIEW_IR_UNIVERSALS = 33,
4141
VIEW_STATUS_IDLE = 40,
42+
// WiFi Settings sub-categories
43+
VIEW_WIFI_SETTINGS_LED = 50,
44+
VIEW_WIFI_SETTINGS_SD = 51,
45+
VIEW_WIFI_SETTINGS_MGMT = 52,
46+
VIEW_WIFI_SETTINGS_DEVICE = 53,
47+
VIEW_WIFI_SETTINGS_MISC = 54,
48+
// WiFi Network sub-categories
49+
VIEW_WIFI_NETWORK_PORTAL = 55,
50+
VIEW_WIFI_NETWORK_CONN = 56,
51+
VIEW_WIFI_NETWORK_SCAN = 57,
52+
VIEW_WIFI_NETWORK_IOT = 58,
53+
VIEW_WIFI_NETWORK_WEBUI = 59,
54+
// BLE Scanning sub-categories
55+
VIEW_BLE_SCAN_DETECT = 60,
56+
VIEW_BLE_SCAN_AIRTAG = 61,
57+
VIEW_BLE_SCAN_GATT = 62,
58+
VIEW_BLE_SCAN_ADV = 63,
59+
// GPS sub-categories
60+
VIEW_GPS_CONFIG = 64,
61+
VIEW_GPS_WARDRIVE = 65,
4262
} ViewId;
4363

4464
typedef struct {
@@ -90,6 +110,23 @@ struct AppState {
90110
Submenu* ir_remotes_menu;
91111
Submenu* ir_buttons_menu;
92112
Submenu* ir_universals_menu;
113+
// Sub-category submenus
114+
Submenu* wifi_settings_led_menu;
115+
Submenu* wifi_settings_sd_menu;
116+
Submenu* wifi_settings_mgmt_menu;
117+
Submenu* wifi_settings_device_menu;
118+
Submenu* wifi_settings_misc_menu;
119+
Submenu* wifi_network_portal_menu;
120+
Submenu* wifi_network_conn_menu;
121+
Submenu* wifi_network_scan_menu;
122+
Submenu* wifi_network_iot_menu;
123+
Submenu* wifi_network_webui_menu;
124+
Submenu* ble_scan_detect_menu;
125+
Submenu* ble_scan_airtag_menu;
126+
Submenu* ble_scan_gatt_menu;
127+
Submenu* ble_scan_adv_menu;
128+
Submenu* gps_config_menu;
129+
Submenu* gps_wardrive_menu;
93130
VariableItemList* settings_menu;
94131
TextBox* text_box;
95132
TextInput* text_input;
@@ -126,6 +163,23 @@ struct AppState {
126163
uint32_t last_aerial_category_index;
127164
uint32_t last_gps_index;
128165
uint32_t last_ir_index;
166+
// Sub-category last indices
167+
uint32_t last_wifi_settings_led_index;
168+
uint32_t last_wifi_settings_sd_index;
169+
uint32_t last_wifi_settings_mgmt_index;
170+
uint32_t last_wifi_settings_device_index;
171+
uint32_t last_wifi_settings_misc_index;
172+
uint32_t last_wifi_network_portal_index;
173+
uint32_t last_wifi_network_conn_index;
174+
uint32_t last_wifi_network_scan_index;
175+
uint32_t last_wifi_network_iot_index;
176+
uint32_t last_wifi_network_webui_index;
177+
uint32_t last_ble_scan_detect_index;
178+
uint32_t last_ble_scan_airtag_index;
179+
uint32_t last_ble_scan_gatt_index;
180+
uint32_t last_ble_scan_adv_index;
181+
uint32_t last_gps_config_index;
182+
uint32_t last_gps_wardrive_index;
129183
uint32_t ir_current_remote_index;
130184
IrRemoteEntry ir_remotes[32];
131185
size_t ir_remote_count;

src/main.c

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,23 @@ int32_t ghost_esp_app(void* p) {
120120
state->ir_remotes_menu = submenu_alloc();
121121
state->ir_buttons_menu = submenu_alloc();
122122
state->ir_universals_menu = submenu_alloc();
123+
// Sub-category submenus
124+
state->wifi_settings_led_menu = submenu_alloc();
125+
state->wifi_settings_sd_menu = submenu_alloc();
126+
state->wifi_settings_mgmt_menu = submenu_alloc();
127+
state->wifi_settings_device_menu = submenu_alloc();
128+
state->wifi_settings_misc_menu = submenu_alloc();
129+
state->wifi_network_portal_menu = submenu_alloc();
130+
state->wifi_network_conn_menu = submenu_alloc();
131+
state->wifi_network_scan_menu = submenu_alloc();
132+
state->wifi_network_iot_menu = submenu_alloc();
133+
state->wifi_network_webui_menu = submenu_alloc();
134+
state->ble_scan_detect_menu = submenu_alloc();
135+
state->ble_scan_airtag_menu = submenu_alloc();
136+
state->ble_scan_gatt_menu = submenu_alloc();
137+
state->ble_scan_adv_menu = submenu_alloc();
138+
state->gps_config_menu = submenu_alloc();
139+
state->gps_wardrive_menu = submenu_alloc();
123140
state->text_box = text_box_alloc();
124141
state->settings_menu = variable_item_list_alloc();
125142
state->text_input = text_input_alloc();
@@ -271,6 +288,39 @@ int32_t ghost_esp_app(void* p) {
271288
state->view_dispatcher,
272289
VIEW_IR_UNIVERSALS,
273290
submenu_get_view(state->ir_universals_menu));
291+
// Sub-category views
292+
if(state->wifi_settings_led_menu)
293+
view_dispatcher_add_view(state->view_dispatcher, VIEW_WIFI_SETTINGS_LED, submenu_get_view(state->wifi_settings_led_menu));
294+
if(state->wifi_settings_sd_menu)
295+
view_dispatcher_add_view(state->view_dispatcher, VIEW_WIFI_SETTINGS_SD, submenu_get_view(state->wifi_settings_sd_menu));
296+
if(state->wifi_settings_mgmt_menu)
297+
view_dispatcher_add_view(state->view_dispatcher, VIEW_WIFI_SETTINGS_MGMT, submenu_get_view(state->wifi_settings_mgmt_menu));
298+
if(state->wifi_settings_device_menu)
299+
view_dispatcher_add_view(state->view_dispatcher, VIEW_WIFI_SETTINGS_DEVICE, submenu_get_view(state->wifi_settings_device_menu));
300+
if(state->wifi_settings_misc_menu)
301+
view_dispatcher_add_view(state->view_dispatcher, VIEW_WIFI_SETTINGS_MISC, submenu_get_view(state->wifi_settings_misc_menu));
302+
if(state->wifi_network_portal_menu)
303+
view_dispatcher_add_view(state->view_dispatcher, VIEW_WIFI_NETWORK_PORTAL, submenu_get_view(state->wifi_network_portal_menu));
304+
if(state->wifi_network_conn_menu)
305+
view_dispatcher_add_view(state->view_dispatcher, VIEW_WIFI_NETWORK_CONN, submenu_get_view(state->wifi_network_conn_menu));
306+
if(state->wifi_network_scan_menu)
307+
view_dispatcher_add_view(state->view_dispatcher, VIEW_WIFI_NETWORK_SCAN, submenu_get_view(state->wifi_network_scan_menu));
308+
if(state->wifi_network_iot_menu)
309+
view_dispatcher_add_view(state->view_dispatcher, VIEW_WIFI_NETWORK_IOT, submenu_get_view(state->wifi_network_iot_menu));
310+
if(state->wifi_network_webui_menu)
311+
view_dispatcher_add_view(state->view_dispatcher, VIEW_WIFI_NETWORK_WEBUI, submenu_get_view(state->wifi_network_webui_menu));
312+
if(state->ble_scan_detect_menu)
313+
view_dispatcher_add_view(state->view_dispatcher, VIEW_BLE_SCAN_DETECT, submenu_get_view(state->ble_scan_detect_menu));
314+
if(state->ble_scan_airtag_menu)
315+
view_dispatcher_add_view(state->view_dispatcher, VIEW_BLE_SCAN_AIRTAG, submenu_get_view(state->ble_scan_airtag_menu));
316+
if(state->ble_scan_gatt_menu)
317+
view_dispatcher_add_view(state->view_dispatcher, VIEW_BLE_SCAN_GATT, submenu_get_view(state->ble_scan_gatt_menu));
318+
if(state->ble_scan_adv_menu)
319+
view_dispatcher_add_view(state->view_dispatcher, VIEW_BLE_SCAN_ADV, submenu_get_view(state->ble_scan_adv_menu));
320+
if(state->gps_config_menu)
321+
view_dispatcher_add_view(state->view_dispatcher, VIEW_GPS_CONFIG, submenu_get_view(state->gps_config_menu));
322+
if(state->gps_wardrive_menu)
323+
view_dispatcher_add_view(state->view_dispatcher, VIEW_GPS_WARDRIVE, submenu_get_view(state->gps_wardrive_menu));
274324

275325
view_dispatcher_set_custom_event_callback(
276326
state->view_dispatcher, settings_custom_event_callback);
@@ -369,6 +419,23 @@ int32_t ghost_esp_app(void* p) {
369419
view_dispatcher_remove_view(state->view_dispatcher, VIEW_IR_BUTTONS);
370420
if(state->ir_universals_menu)
371421
view_dispatcher_remove_view(state->view_dispatcher, VIEW_IR_UNIVERSALS);
422+
// Sub-category views
423+
if(state->wifi_settings_led_menu) view_dispatcher_remove_view(state->view_dispatcher, VIEW_WIFI_SETTINGS_LED);
424+
if(state->wifi_settings_sd_menu) view_dispatcher_remove_view(state->view_dispatcher, VIEW_WIFI_SETTINGS_SD);
425+
if(state->wifi_settings_mgmt_menu) view_dispatcher_remove_view(state->view_dispatcher, VIEW_WIFI_SETTINGS_MGMT);
426+
if(state->wifi_settings_device_menu) view_dispatcher_remove_view(state->view_dispatcher, VIEW_WIFI_SETTINGS_DEVICE);
427+
if(state->wifi_settings_misc_menu) view_dispatcher_remove_view(state->view_dispatcher, VIEW_WIFI_SETTINGS_MISC);
428+
if(state->wifi_network_portal_menu) view_dispatcher_remove_view(state->view_dispatcher, VIEW_WIFI_NETWORK_PORTAL);
429+
if(state->wifi_network_conn_menu) view_dispatcher_remove_view(state->view_dispatcher, VIEW_WIFI_NETWORK_CONN);
430+
if(state->wifi_network_scan_menu) view_dispatcher_remove_view(state->view_dispatcher, VIEW_WIFI_NETWORK_SCAN);
431+
if(state->wifi_network_iot_menu) view_dispatcher_remove_view(state->view_dispatcher, VIEW_WIFI_NETWORK_IOT);
432+
if(state->wifi_network_webui_menu) view_dispatcher_remove_view(state->view_dispatcher, VIEW_WIFI_NETWORK_WEBUI);
433+
if(state->ble_scan_detect_menu) view_dispatcher_remove_view(state->view_dispatcher, VIEW_BLE_SCAN_DETECT);
434+
if(state->ble_scan_airtag_menu) view_dispatcher_remove_view(state->view_dispatcher, VIEW_BLE_SCAN_AIRTAG);
435+
if(state->ble_scan_gatt_menu) view_dispatcher_remove_view(state->view_dispatcher, VIEW_BLE_SCAN_GATT);
436+
if(state->ble_scan_adv_menu) view_dispatcher_remove_view(state->view_dispatcher, VIEW_BLE_SCAN_ADV);
437+
if(state->gps_config_menu) view_dispatcher_remove_view(state->view_dispatcher, VIEW_GPS_CONFIG);
438+
if(state->gps_wardrive_menu) view_dispatcher_remove_view(state->view_dispatcher, VIEW_GPS_WARDRIVE);
372439
FURI_LOG_I("Ghost_ESP", "Views removed.");
373440
view_dispatcher_free(state->view_dispatcher);
374441
state->view_dispatcher = NULL;
@@ -404,6 +471,23 @@ int32_t ghost_esp_app(void* p) {
404471
if(state && state->ir_remotes_menu) submenu_free(state->ir_remotes_menu);
405472
if(state && state->ir_buttons_menu) submenu_free(state->ir_buttons_menu);
406473
if(state && state->ir_universals_menu) submenu_free(state->ir_universals_menu);
474+
// Sub-category submenus
475+
if(state && state->wifi_settings_led_menu) submenu_free(state->wifi_settings_led_menu);
476+
if(state && state->wifi_settings_sd_menu) submenu_free(state->wifi_settings_sd_menu);
477+
if(state && state->wifi_settings_mgmt_menu) submenu_free(state->wifi_settings_mgmt_menu);
478+
if(state && state->wifi_settings_device_menu) submenu_free(state->wifi_settings_device_menu);
479+
if(state && state->wifi_settings_misc_menu) submenu_free(state->wifi_settings_misc_menu);
480+
if(state && state->wifi_network_portal_menu) submenu_free(state->wifi_network_portal_menu);
481+
if(state && state->wifi_network_conn_menu) submenu_free(state->wifi_network_conn_menu);
482+
if(state && state->wifi_network_scan_menu) submenu_free(state->wifi_network_scan_menu);
483+
if(state && state->wifi_network_iot_menu) submenu_free(state->wifi_network_iot_menu);
484+
if(state && state->wifi_network_webui_menu) submenu_free(state->wifi_network_webui_menu);
485+
if(state && state->ble_scan_detect_menu) submenu_free(state->ble_scan_detect_menu);
486+
if(state && state->ble_scan_airtag_menu) submenu_free(state->ble_scan_airtag_menu);
487+
if(state && state->ble_scan_gatt_menu) submenu_free(state->ble_scan_gatt_menu);
488+
if(state && state->ble_scan_adv_menu) submenu_free(state->ble_scan_adv_menu);
489+
if(state && state->gps_config_menu) submenu_free(state->gps_config_menu);
490+
if(state && state->gps_wardrive_menu) submenu_free(state->gps_wardrive_menu);
407491
if(state && state->main_menu) main_menu_free(state->main_menu);
408492
FURI_LOG_I("Ghost_ESP", "UI components freed.");
409493
// Close GUI record after all GUI-related components are freed

0 commit comments

Comments
 (0)