Skip to content

Commit c3a2db9

Browse files
Merge pull request #28 from jaylikesbunda/main
v1.1.8 "Polaris" 🛰️
2 parents 8ba9977 + 1667031 commit c3a2db9

File tree

14 files changed

+501
-36
lines changed

14 files changed

+501
-36
lines changed

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.1.8 Polaris 📡🌍
4+
- Added GPS Info command to view real-time GPS data
5+
- Added Stop GPS Info command
6+
- UART Initialisation tweaks
7+
- Add back EAPOL capture command
8+
- Added BLE Raw Capture command
9+
- Added Stop BLE Raw Capture command
10+
- Added BLE Skimmer Detection command
11+
- Expanded Stop on Back to include all stop commands
12+
- Added wrap-around scrolling in command menus
13+
- Add Scan Local command to scan for devices on connected network
14+
- Respect Momentum settings for ESP UART Channel
15+
- Added PCAP and Wardrive clearing options in Settings menu
16+
- Added BLE Wardriving command
17+
- Miscellaneous bug fixes and improvements
318

419
## v1.1.7
520
- added null checks before freeing resources

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ A Flipper Zero application for interfacing with the Ghost ESP32 firmware
2424
- **Raw Packet Capture**: Capture raw Bluetooth packets for analysis
2525

2626
### 🌍 GPS
27+
- **GPS Information**: View real-time GPS data including position, altitude, speed and signal quality
2728
- **Wardriving Capabilities**: Enable Wardriving for location-based data collection
2829

2930
### ⚙️ Configuration Options

src/callbacks.c

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,4 +268,139 @@ void app_info_ok_callback(void* context) {
268268
void app_info_cancel_callback(void* context) {
269269
// Use same callback as OK since both just return to previous view
270270
app_info_ok_callback(context);
271+
}
272+
273+
// Add these new callback declarations
274+
void wardrive_clear_confirmed_callback(void* context) {
275+
FURI_LOG_D("ClearWardrive", "Confirmed callback started, context: %p", context);
276+
277+
SettingsConfirmContext* ctx = context;
278+
if(!ctx) {
279+
FURI_LOG_E("ClearWardrive", "Null context");
280+
return;
281+
}
282+
283+
if(!ctx->state) {
284+
FURI_LOG_E("ClearWardrive", "Null state in context");
285+
free(ctx);
286+
return;
287+
}
288+
289+
AppState* app_state = ctx->state;
290+
uint32_t prev_view = app_state->previous_view;
291+
292+
FURI_LOG_D("ClearWardrive", "Previous view: %lu", prev_view);
293+
clear_wardrive_files(ctx->state);
294+
295+
// Reset callbacks
296+
confirmation_view_set_ok_callback(app_state->confirmation_view, NULL, NULL);
297+
confirmation_view_set_cancel_callback(app_state->confirmation_view, NULL, NULL);
298+
299+
free(ctx);
300+
301+
view_dispatcher_switch_to_view(app_state->view_dispatcher, prev_view);
302+
app_state->current_view = prev_view;
303+
}
304+
305+
void wardrive_clear_cancelled_callback(void* context) {
306+
// Similar to logs_clear_cancelled_callback
307+
SettingsConfirmContext* ctx = context;
308+
if(!ctx || !ctx->state) {
309+
FURI_LOG_E("ClearWardrive", "Invalid context");
310+
free(ctx);
311+
return;
312+
}
313+
314+
AppState* app_state = ctx->state;
315+
uint32_t prev_view = app_state->previous_view;
316+
317+
confirmation_view_set_ok_callback(app_state->confirmation_view, NULL, NULL);
318+
confirmation_view_set_cancel_callback(app_state->confirmation_view, NULL, NULL);
319+
320+
free(ctx);
321+
322+
view_dispatcher_switch_to_view(app_state->view_dispatcher, prev_view);
323+
app_state->current_view = prev_view;
324+
}
325+
326+
void pcap_clear_confirmed_callback(void* context) {
327+
FURI_LOG_D("ClearPCAP", "Confirmed callback started, context: %p", context);
328+
329+
SettingsConfirmContext* ctx = context;
330+
if(!ctx) {
331+
FURI_LOG_E("ClearPCAP", "Null context");
332+
return;
333+
}
334+
335+
if(!ctx->state) {
336+
FURI_LOG_E("ClearPCAP", "Null state in context");
337+
free(ctx);
338+
return;
339+
}
340+
341+
AppState* app_state = ctx->state;
342+
uint32_t prev_view = app_state->previous_view;
343+
344+
FURI_LOG_D("ClearPCAP", "Previous view: %lu", prev_view);
345+
clear_pcap_files(ctx->state);
346+
347+
confirmation_view_set_ok_callback(app_state->confirmation_view, NULL, NULL);
348+
confirmation_view_set_cancel_callback(app_state->confirmation_view, NULL, NULL);
349+
350+
free(ctx);
351+
352+
view_dispatcher_switch_to_view(app_state->view_dispatcher, prev_view);
353+
app_state->current_view = prev_view;
354+
}
355+
356+
void pcap_clear_cancelled_callback(void* context) {
357+
// Similar to logs_clear_cancelled_callback
358+
SettingsConfirmContext* ctx = context;
359+
if(!ctx || !ctx->state) {
360+
FURI_LOG_E("ClearPCAP", "Invalid context");
361+
free(ctx);
362+
return;
363+
}
364+
365+
AppState* app_state = ctx->state;
366+
uint32_t prev_view = app_state->previous_view;
367+
368+
confirmation_view_set_ok_callback(app_state->confirmation_view, NULL, NULL);
369+
confirmation_view_set_cancel_callback(app_state->confirmation_view, NULL, NULL);
370+
371+
free(ctx);
372+
373+
view_dispatcher_switch_to_view(app_state->view_dispatcher, prev_view);
374+
app_state->current_view = prev_view;
375+
}
376+
377+
// Add these variable item callbacks
378+
void on_clear_wardrive_changed(VariableItem* item) {
379+
AppState* app = variable_item_get_context(item);
380+
uint8_t index = variable_item_get_current_value_index(item);
381+
variable_item_set_current_value_text(item, SETTING_VALUE_NAMES_ACTION[index]);
382+
383+
if(index == 0) {
384+
show_confirmation_dialog_ex(
385+
app,
386+
"Clear Wardrives",
387+
"Are you sure you want to clear\nall wardrive files?\nThis action cannot be undone.",
388+
wardrive_clear_confirmed_callback,
389+
wardrive_clear_cancelled_callback);
390+
}
391+
}
392+
393+
void on_clear_pcaps_changed(VariableItem* item) {
394+
AppState* app = variable_item_get_context(item);
395+
uint8_t index = variable_item_get_current_value_index(item);
396+
variable_item_set_current_value_text(item, SETTING_VALUE_NAMES_ACTION[index]);
397+
398+
if(index == 0) {
399+
show_confirmation_dialog_ex(
400+
app,
401+
"Clear PCAPs",
402+
"Are you sure you want to clear\nall PCAP files?\nThis action cannot be undone.",
403+
pcap_clear_confirmed_callback,
404+
pcap_clear_cancelled_callback);
405+
}
271406
}

src/callbacks.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,8 @@ void nvs_clear_confirmed_callback(void* context);
2525
void nvs_clear_cancelled_callback(void* context);
2626
void show_app_info(void* context);
2727
void app_info_ok_callback(void* context);
28-
void app_info_cancel_callback(void* context);
28+
void app_info_cancel_callback(void* context);
29+
void wardrive_clear_confirmed_callback(void* context);
30+
void wardrive_clear_cancelled_callback(void* context);
31+
void pcap_clear_confirmed_callback(void* context);
32+
void pcap_clear_cancelled_callback(void* context);

src/main.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -287,4 +287,6 @@ int32_t ghost_esp_app(void* p) {
287287
}
288288

289289
return 0;
290-
}
290+
}
291+
292+
// 6675636B796F7564656B69

0 commit comments

Comments
 (0)