mirror of
https://github.com/justcallmekoko/ESP32Marauder.git
synced 2026-01-26 11:14:51 -08:00
Compare commits
30 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
78b73f4ca2 | ||
|
|
ef4ec4edad | ||
|
|
c6daeb5517 | ||
|
|
dcd493d474 | ||
|
|
68bd55b162 | ||
|
|
90db402b6b | ||
|
|
e064c3beed | ||
|
|
18d71769da | ||
|
|
a259cbcc6d | ||
|
|
482f4114e0 | ||
|
|
a917ff2211 | ||
|
|
92e1795ce5 | ||
|
|
605086ea59 | ||
|
|
554d358cba | ||
|
|
d131491bbf | ||
|
|
dcf3b13552 | ||
|
|
4b6cb6582d | ||
|
|
938a691010 | ||
|
|
3c61198d09 | ||
|
|
c51171df76 | ||
|
|
030035f68d | ||
|
|
9a265f805b | ||
|
|
6497e741d6 | ||
|
|
53613de14b | ||
|
|
3cf7702e23 | ||
|
|
e8f449ad01 | ||
|
|
b2ed6c70e1 | ||
|
|
d8b9e3b138 | ||
|
|
ba35343600 | ||
|
|
02f0ecf85b |
43
.github/workflows/build_parallel.yml
vendored
43
.github/workflows/build_parallel.yml
vendored
@@ -277,3 +277,46 @@ jobs:
|
||||
draft: true
|
||||
files: |
|
||||
esp32_marauder_v*.bin
|
||||
body: |
|
||||
[justcallmekokollc.com](https://justcallmekokollc.com)
|
||||
|
||||
### Please see [GPS Modification](https://github.com/justcallmekoko/ESP32Marauder/wiki/gps-modification) to find out how to add GPS capabilities to your Marauder.
|
||||
**Flipper Zero Marauder Companion App:**
|
||||
**Be sure to install the latest version of the [Marauder Companion](https://github.com/0xchocolate/flipperzero-wifi-marauder/releases/latest) to use these new features on your Flipper Zero**
|
||||
|
||||
**Additional Resources**
|
||||
**[Project Issues](https://github.com/justcallmekoko/ESP32Marauder/issues)**
|
||||
**[Install/Update Instructions](https://github.com/justcallmekoko/ESP32Marauder/wiki/update-firmware)**
|
||||
**[ESP32 Marauder companion app](https://github.com/0xchocolate/flipperzero-firmware-with-wifi-marauder-companion/releases/latest)**
|
||||
**[My Discord](https://discord.com/servers/willstunforfood-776211399918878760)**
|
||||
|
||||
**Flipper Zero Dev Board is NOT the same thing as Dev Board Pro. Don't get them confused.**
|
||||
|
||||
### MARAUDER V6/V6.X WARNING
|
||||
**Please check which Marauder you are using by looking at the front face of the PCB (side with the screen). If it says v6.1 (or .2), use the v6.1 bin. If it says v6, use the v6 bin.**
|
||||
|
||||
## ESP32-C5 (5GHz support)
|
||||
Please see our [installation guide](https://github.com/justcallmekoko/ESP32Marauder/wiki/ESP32%E2%80%90C5%E2%80%90DevKitC%E2%80%901) for installing the Marauder firmware on your ESP32-C5-DevKitC-1
|
||||
|
||||
| Hardware | Binary Version |
|
||||
| -------- | -------------- |
|
||||
| v4 (OG) | `_old_hardware.bin` |
|
||||
| v6 | `_new_hardware.bin`/`_v6.bin` |
|
||||
| v6.1/v6.2 | `_v6_1.bin` |
|
||||
| v7 | `_v7.bin` |
|
||||
| Kit | `_kit.bin` |
|
||||
| Mini | `_mini.bin` |
|
||||
| Flipper Zero | `_flipper.bin` |
|
||||
| MutliBoard S3 | `_multiboardS3.bin` |
|
||||
| LDDB/NodeMCU/Wemos | `_lddb.bin` |
|
||||
| Dev Board Pro | `_marauder_dev_board_pro.bin` |
|
||||
| BFFB | `_marauder_dev_board_pro.bin` |
|
||||
| ESP32-S2 Reverse Feather | `_rev_feather.bin` |
|
||||
| CYD 2432S028(R) | `_cyd_2432S028.bin` |
|
||||
| RL Phantom | `_cyd_2432S024_guition.bin` |
|
||||
| CYD 2432S028 2 USB | `_cyd_2432S028_2usb.bin` |
|
||||
| M5 Cardputer | `_m5cardputer.bin` (Available on M5 Burner) |
|
||||
| ESP32-C5 DevKit | [`_esp32c5_devkit.bin`](https://github.com/justcallmekoko/ESP32Marauder/wiki/ESP32%E2%80%90C5%E2%80%90DevKitC%E2%80%901) |
|
||||
| AWOK V2/V3 screen (white usb) | `_v6_1.bin` |
|
||||
| AWOK V2 flipper (orange usb) | `_flipper.bin` |
|
||||
| AWOK V3 flipper (orange usb) | `_marauder_dev_board_pro.bin` |
|
||||
|
||||
32
.github/workflows/close_stale.yml
vendored
Normal file
32
.github/workflows/close_stale.yml
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
name: Close stale issues
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: "0 3 * * *" # runs daily at 03:00 UTC
|
||||
workflow_dispatch: {}
|
||||
|
||||
permissions:
|
||||
issues: write
|
||||
pull-requests: write
|
||||
|
||||
jobs:
|
||||
stale:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/stale@v9
|
||||
with:
|
||||
days-before-stale: 132
|
||||
days-before-close: 7
|
||||
stale-issue-message: >
|
||||
This issue has been automatically marked as stale due to inactivity.
|
||||
It will be closed in 7 days unless there is further activity.
|
||||
close-issue-message: >
|
||||
Closing due to prolonged inactivity. If this is still relevant,
|
||||
please comment or open a new issue with updated details.
|
||||
stale-issue-label: "stale"
|
||||
exempt-issue-labels: "pinned,security,backlog,keep-open"
|
||||
remove-stale-when-updated: true
|
||||
operations-per-run: 2000
|
||||
# Optional: also handle PRs
|
||||
days-before-pr-stale: -1
|
||||
days-before-pr-close: -1
|
||||
Binary file not shown.
Binary file not shown.
BIN
C5_Py_Flasher/bins/esp32_marauder_v1_8_5_esp32c5devkitc1.bin
Normal file
BIN
C5_Py_Flasher/bins/esp32_marauder_v1_8_5_esp32c5devkitc1.bin
Normal file
Binary file not shown.
@@ -469,15 +469,37 @@ String GpsInterface::dt_string_from_gps(){
|
||||
String datetime = "";
|
||||
if (nmea.isValid() && nmea.getYear() > 0){
|
||||
datetime += nmea.getYear();
|
||||
|
||||
datetime += "-";
|
||||
datetime += nmea.getMonth();
|
||||
|
||||
uint8_t month = nmea.getMonth();
|
||||
if (month < 10)
|
||||
datetime += "0";
|
||||
datetime += month;
|
||||
|
||||
datetime += "-";
|
||||
datetime += nmea.getDay();
|
||||
|
||||
uint8_t day = nmea.getDay();
|
||||
if (day < 10)
|
||||
datetime += "0";
|
||||
datetime += day;
|
||||
|
||||
datetime += " ";
|
||||
datetime += nmea.getHour();
|
||||
|
||||
uint8_t hour = nmea.getHour();
|
||||
if (hour < 10)
|
||||
datetime += "0";
|
||||
datetime += hour;
|
||||
|
||||
datetime += ":";
|
||||
datetime += nmea.getMinute();
|
||||
|
||||
uint8_t minute = nmea.getMinute();
|
||||
if (minute < 10)
|
||||
datetime += "0";
|
||||
datetime += minute;
|
||||
|
||||
datetime += ":";
|
||||
|
||||
uint8_t seconds = nmea.getSecond();
|
||||
if (seconds < 10)
|
||||
datetime += "0";
|
||||
|
||||
@@ -911,8 +911,10 @@ void MenuFunctions::main(uint32_t currentTime)
|
||||
|
||||
#ifdef HAS_BUTTONS
|
||||
|
||||
#if (C_BTN >= 0)
|
||||
#if (C_BTN >= 0) && !defined(MARAUDER_CARDPUTER)
|
||||
bool c_btn_press = c_btn.justPressed();
|
||||
#elif defined(MARAUDER_CARDPUTER)
|
||||
bool c_btn_press = this->isKeyPressed('(');
|
||||
#endif
|
||||
|
||||
#ifndef HAS_ILI9341
|
||||
@@ -1175,6 +1177,7 @@ void MenuFunctions::main(uint32_t currentTime)
|
||||
|
||||
// Menu navigation and paging
|
||||
#ifdef HAS_BUTTONS
|
||||
// Don't do this for touch screens
|
||||
#if !(defined(MARAUDER_V6) || defined(MARAUDER_V6_1) || defined(MARAUDER_CYD_MICRO) || defined(MARAUDER_CYD_GUITION) || defined(MARAUDER_CYD_2USB))
|
||||
#if !defined(MARAUDER_M5STICKC) || defined(MARAUDER_M5STICKCP2)
|
||||
#if (U_BTN >= 0 || defined(MARAUDER_CARDPUTER))
|
||||
@@ -1223,6 +1226,7 @@ void MenuFunctions::main(uint32_t currentTime)
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if (D_BTN >= 0 || defined(MARAUDER_CARDPUTER))
|
||||
#if (D_BTN >= 0)
|
||||
if (d_btn.justPressed()){
|
||||
@@ -1273,9 +1277,41 @@ void MenuFunctions::main(uint32_t currentTime)
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#if (R_BTN >= 0 || defined(MARAUDER_CARDPUTER))
|
||||
#if (R_BTN >= 0)
|
||||
if (r_btn.justPressed()) {
|
||||
#elif defined(MARAUDER_CARDPUTER)
|
||||
if (this->isKeyPressed('/')) {
|
||||
#endif
|
||||
if (wifi_scan_obj.currentScanMode == WIFI_SCAN_OFF) {
|
||||
if (wifi_scan_obj.set_channel < 14)
|
||||
wifi_scan_obj.changeChannel(wifi_scan_obj.set_channel + 1);
|
||||
else
|
||||
wifi_scan_obj.changeChannel(1);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#if (L_BTN >= 0 || defined(MARAUDER_CARDPUTER))
|
||||
#if (L_BTN >= 0)
|
||||
if (l_btn.justPressed()) {
|
||||
#elif defined(MARAUDER_CARDPUTER)
|
||||
if (this->isKeyPressed(',')) {
|
||||
#endif
|
||||
if (wifi_scan_obj.currentScanMode == WIFI_SCAN_OFF) {
|
||||
if (wifi_scan_obj.set_channel > 1)
|
||||
wifi_scan_obj.changeChannel(wifi_scan_obj.set_channel - 1);
|
||||
else
|
||||
wifi_scan_obj.changeChannel(14);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if(c_btn_press){
|
||||
current_menu->list->get(current_menu->selected).callable();
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
@@ -1895,6 +1931,7 @@ void MenuFunctions::RunSetup()
|
||||
deviceMenu.list = new LinkedList<MenuNode>();
|
||||
#ifdef HAS_GPS
|
||||
if (gps_obj.getGpsModuleStatus()) {
|
||||
gpsMenu.list = new LinkedList<MenuNode>();
|
||||
gpsInfoMenu.list = new LinkedList<MenuNode>();
|
||||
}
|
||||
#endif
|
||||
@@ -2006,6 +2043,7 @@ void MenuFunctions::RunSetup()
|
||||
wifiStationMenu.name = "Select Stations";
|
||||
//#endif
|
||||
#ifdef HAS_GPS
|
||||
gpsMenu.name = "GPS";
|
||||
gpsInfoMenu.name = "GPS Data";
|
||||
wardrivingMenu.name = "Wardriving";
|
||||
#endif
|
||||
@@ -2032,6 +2070,11 @@ void MenuFunctions::RunSetup()
|
||||
this->addNodes(&mainMenu, text_table1[19], TFTCYAN, NULL, BLUETOOTH, [this]() {
|
||||
this->changeMenu(&bluetoothMenu);
|
||||
});
|
||||
#ifdef HAS_GPS
|
||||
this->addNodes(&mainMenu, text1_66, TFTRED, NULL, GPS_MENU, [this]() {
|
||||
this->changeMenu(&gpsMenu);
|
||||
});
|
||||
#endif
|
||||
this->addNodes(&mainMenu, text_table1[9], TFTBLUE, NULL, DEVICE, [this]() {
|
||||
this->changeMenu(&deviceMenu);
|
||||
});
|
||||
@@ -3131,7 +3174,11 @@ void MenuFunctions::RunSetup()
|
||||
this->displayCurrentMenu();
|
||||
}
|
||||
#endif
|
||||
if (c_btn.justPressed()) {
|
||||
#if (C_BTN >= 0) && !defined(MARAUDER_CARDPUTER)
|
||||
if(c_btn.justPressed()){
|
||||
#elif defined(MARAUDER_CARDPUTER)
|
||||
if (this->isKeyPressed('(')) {
|
||||
#endif
|
||||
if (sd_obj.sd_files->get(sd_file_index) != "Back") {
|
||||
if (sd_obj.removeFile("/" + sd_obj.sd_files->get(sd_file_index)))
|
||||
Serial.println("Successfully Removed File: /" + sd_obj.sd_files->get(sd_file_index));
|
||||
@@ -3307,32 +3354,38 @@ void MenuFunctions::RunSetup()
|
||||
// GPS Menu
|
||||
#ifdef HAS_GPS
|
||||
if (gps_obj.getGpsModuleStatus()) {
|
||||
this->addNodes(&deviceMenu, "GPS Data", TFTRED, NULL, GPS_MENU, [this]() {
|
||||
gpsMenu.parentMenu = &mainMenu; // Main Menu is second menu parent
|
||||
|
||||
this->addNodes(&gpsMenu, text09, TFTLIGHTGREY, NULL, 0, [this]() {
|
||||
this->changeMenu(gpsMenu.parentMenu);
|
||||
});
|
||||
|
||||
this->addNodes(&gpsMenu, "GPS Data", TFTRED, NULL, GPS_MENU, [this]() {
|
||||
wifi_scan_obj.currentScanMode = WIFI_SCAN_GPS_DATA;
|
||||
this->changeMenu(&gpsInfoMenu);
|
||||
wifi_scan_obj.StartScan(WIFI_SCAN_GPS_DATA, TFT_CYAN);
|
||||
});
|
||||
|
||||
this->addNodes(&deviceMenu, "NMEA Stream", TFTORANGE, NULL, GPS_MENU, [this]() {
|
||||
this->addNodes(&gpsMenu, "NMEA Stream", TFTORANGE, NULL, GPS_MENU, [this]() {
|
||||
wifi_scan_obj.currentScanMode = WIFI_SCAN_GPS_NMEA;
|
||||
this->changeMenu(&gpsInfoMenu);
|
||||
wifi_scan_obj.StartScan(WIFI_SCAN_GPS_NMEA, TFT_ORANGE);
|
||||
});
|
||||
|
||||
this->addNodes(&deviceMenu, "GPS Tracker", TFTGREEN, NULL, GPS_MENU, [this]() {
|
||||
this->addNodes(&gpsMenu, "GPS Tracker", TFTGREEN, NULL, GPS_MENU, [this]() {
|
||||
wifi_scan_obj.currentScanMode = GPS_TRACKER;
|
||||
this->changeMenu(&gpsInfoMenu);
|
||||
wifi_scan_obj.StartScan(GPS_TRACKER, TFT_CYAN);
|
||||
});
|
||||
|
||||
this->addNodes(&deviceMenu, "GPS POI", TFTCYAN, NULL, GPS_MENU, [this]() {
|
||||
this->addNodes(&gpsMenu, "GPS POI", TFTCYAN, NULL, GPS_MENU, [this]() {
|
||||
wifi_scan_obj.StartScan(GPS_POI, TFT_CYAN);
|
||||
wifi_scan_obj.currentScanMode = WIFI_SCAN_OFF;
|
||||
this->changeMenu(&gpsPOIMenu);
|
||||
});
|
||||
|
||||
// GPS POI Menu
|
||||
gpsPOIMenu.parentMenu = &deviceMenu;
|
||||
gpsPOIMenu.parentMenu = &gpsMenu;
|
||||
this->addNodes(&gpsPOIMenu, text09, TFTLIGHTGREY, NULL, 0, [this]() {
|
||||
wifi_scan_obj.currentScanMode = GPS_POI;
|
||||
wifi_scan_obj.StartScan(WIFI_SCAN_OFF);
|
||||
@@ -3346,7 +3399,7 @@ void MenuFunctions::RunSetup()
|
||||
wifi_scan_obj.currentScanMode = GPS_POI;
|
||||
display_obj.tft.setCursor(0, TFT_HEIGHT / 2);
|
||||
display_obj.clearScreen();
|
||||
if (wifi_scan_obj.RunGPSInfo(true, false))
|
||||
if (wifi_scan_obj.RunGPSInfo(true, false, true))
|
||||
display_obj.showCenterText("POI Logged", TFT_HEIGHT / 2);
|
||||
else
|
||||
display_obj.showCenterText("POI Log Failed", TFT_HEIGHT / 2);
|
||||
@@ -3357,7 +3410,7 @@ void MenuFunctions::RunSetup()
|
||||
});
|
||||
|
||||
// GPS Info Menu
|
||||
gpsInfoMenu.parentMenu = &deviceMenu;
|
||||
gpsInfoMenu.parentMenu = &gpsMenu;
|
||||
this->addNodes(&gpsInfoMenu, text09, TFTLIGHTGREY, NULL, 0, [this]() {
|
||||
if(wifi_scan_obj.currentScanMode != GPS_TRACKER)
|
||||
wifi_scan_obj.currentScanMode = WIFI_SCAN_OFF;
|
||||
@@ -3600,7 +3653,7 @@ void MenuFunctions::RunSetup()
|
||||
#endif
|
||||
|
||||
// Add SSID
|
||||
#ifdef HAS_C
|
||||
#ifdef HAS_C && !defined(MARAUDER_CARDPUTER)
|
||||
if (c_btn.justPressed()) {
|
||||
while (!c_btn.justReleased()) {
|
||||
c_btn.justPressed(); // Need to continue updating button hold status. My shitty library.
|
||||
@@ -3628,13 +3681,45 @@ void MenuFunctions::RunSetup()
|
||||
|
||||
#ifdef MARAUDER_CARDPUTER
|
||||
for (int i = 0; i < 95; i++) {
|
||||
if (this->isKeyPressed(M5CardputerKeyboard._ascii_list[i])) {
|
||||
pressed = true;
|
||||
wifi_scan_obj.current_mini_kb_ssid.concat(M5CardputerKeyboard._ascii_list[i]);
|
||||
if ((M5CardputerKeyboard._ascii_list[i] != '(') &&
|
||||
(M5CardputerKeyboard._ascii_list[i] != '`')) {
|
||||
if (this->isKeyPressed(M5CardputerKeyboard._ascii_list[i])) {
|
||||
pressed = true;
|
||||
wifi_scan_obj.current_mini_kb_ssid.concat(M5CardputerKeyboard._ascii_list[i]);
|
||||
}
|
||||
if (this->isKeyPressed(KEY_BACKSPACE)) {
|
||||
pressed = true;
|
||||
wifi_scan_obj.current_mini_kb_ssid.remove(wifi_scan_obj.current_mini_kb_ssid.length() - 1);
|
||||
}
|
||||
}
|
||||
if (this->isKeyPressed(KEY_BACKSPACE)) {
|
||||
pressed = true;
|
||||
wifi_scan_obj.current_mini_kb_ssid.remove(wifi_scan_obj.current_mini_kb_ssid.length() - 1);
|
||||
}
|
||||
|
||||
if (!do_pass) {
|
||||
if (this->isKeyPressed('`')) {
|
||||
this->changeMenu(targetMenu->parentMenu);
|
||||
return wifi_scan_obj.current_mini_kb_ssid;
|
||||
}
|
||||
|
||||
if (this->isKeyPressed('(')) {
|
||||
if (!do_pass) {
|
||||
if (wifi_scan_obj.current_mini_kb_ssid != "") {
|
||||
pressed = true;
|
||||
ssid s = {wifi_scan_obj.current_mini_kb_ssid, random(1, 12), {random(256), random(256), random(256), random(256), random(256), random(256)}, false};
|
||||
ssids->unshift(s);
|
||||
wifi_scan_obj.current_mini_kb_ssid = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (this->isKeyPressed('(')) {
|
||||
this->changeMenu(targetMenu->parentMenu);
|
||||
return wifi_scan_obj.current_mini_kb_ssid;
|
||||
}
|
||||
|
||||
if (this->isKeyPressed('`')) {
|
||||
this->changeMenu(targetMenu->parentMenu);
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3749,25 +3834,6 @@ void MenuFunctions::RunSetup()
|
||||
}
|
||||
#endif
|
||||
|
||||
// Add SSID
|
||||
/*#ifdef HAS_C
|
||||
if (menu_button == SELECT_BUTTON) {
|
||||
while (display_obj.updateTouch(&t_x, &t_y)) {
|
||||
///c_btn.justPressed(); // Need to continue updating button hold status. My shitty library.
|
||||
|
||||
delay(1);
|
||||
}
|
||||
// If we have a string, add it to list of SSIDs
|
||||
if (wifi_scan_obj.current_mini_kb_ssid != "") {
|
||||
pressed = true;
|
||||
ssid s = {wifi_scan_obj.current_mini_kb_ssid, random(1, 12), {random(256), random(256), random(256), random(256), random(256), random(256)}, false};
|
||||
ssids->unshift(s);
|
||||
wifi_scan_obj.current_mini_kb_ssid = "";
|
||||
}
|
||||
}
|
||||
|
||||
#endif*/
|
||||
|
||||
// Exit if UP button is held
|
||||
if ((display_obj.isTouchHeld()) && (display_obj.menuButton(&t_x, &t_y, touched, true) == UP_BUTTON)) {
|
||||
display_obj.clearScreen();
|
||||
@@ -3806,11 +3872,20 @@ void MenuFunctions::RunSetup()
|
||||
display_obj.tft.println("L/R - Prev/Nxt Char");
|
||||
#endif
|
||||
if (!do_pass) {
|
||||
display_obj.tft.println("C - Save");
|
||||
display_obj.tft.println("C(Hold) - Exit");
|
||||
#ifdef MARAUDER_CARDPUTER
|
||||
display_obj.tft.println("Enter - Save");
|
||||
display_obj.tft.println("Esc - Exit");
|
||||
#else
|
||||
display_obj.tft.println("C - Save");
|
||||
display_obj.tft.println("C(Hold) - Exit");
|
||||
#endif
|
||||
}
|
||||
else {
|
||||
display_obj.tft.println("C(Hold) - Enter");
|
||||
#ifdef MARAUDER_CARDPUTER
|
||||
display_obj.tft.println("Enter - Enter");
|
||||
#else
|
||||
display_obj.tft.println("C(Hold) - Enter");
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
@@ -165,6 +165,9 @@ class MenuFunctions
|
||||
|
||||
Menu wifiMenu;
|
||||
Menu bluetoothMenu;
|
||||
#ifdef HAS_GPS
|
||||
Menu gpsMenu; // H4W9 Added GPS Menu option to Main Menu
|
||||
#endif
|
||||
Menu badusbMenu;
|
||||
Menu deviceMenu;
|
||||
|
||||
|
||||
@@ -1248,7 +1248,7 @@ void WiFiScan::StopScan(uint8_t scan_mode)
|
||||
|
||||
else if ((currentScanMode == GPS_TRACKER) ||
|
||||
(currentScanMode == GPS_POI)) {
|
||||
this->writeFooter();
|
||||
this->writeFooter(currentScanMode == GPS_POI);
|
||||
}
|
||||
|
||||
|
||||
@@ -2218,30 +2218,40 @@ void WiFiScan::RunGenerateSSIDs(int count) {
|
||||
#endif
|
||||
}
|
||||
|
||||
void WiFiScan::logPoint(String lat, String lon, float alt, String datetime) {
|
||||
void WiFiScan::logPoint(String lat, String lon, float alt, String datetime, bool poi) {
|
||||
datetime.replace(" ", "T");
|
||||
datetime += "Z";
|
||||
|
||||
buffer_obj.append(" <trkpt lat=\"" + lat + "\" lon=\"" + lon + "\">\n");
|
||||
if (!poi)
|
||||
buffer_obj.append(" <trkpt lat=\"" + lat + "\" lon=\"" + lon + "\">\n");
|
||||
else
|
||||
buffer_obj.append(" <wpt lat=\"" + lat + "\" lon=\"" + lon + "\">\n");
|
||||
buffer_obj.append(" <ele>" + String(alt, 2) + "</ele>\n");
|
||||
buffer_obj.append(" <time>" + datetime + "</time>\n");
|
||||
buffer_obj.append(" </trkpt>\n");
|
||||
if (!poi)
|
||||
buffer_obj.append(" </trkpt>\n");
|
||||
else
|
||||
buffer_obj.append(" </wpt>\n");
|
||||
//gpxFile.flush();
|
||||
}
|
||||
|
||||
void WiFiScan::writeHeader() {
|
||||
void WiFiScan::writeHeader(bool poi) {
|
||||
Serial.println("Writing header to GPX file...");
|
||||
buffer_obj.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
|
||||
buffer_obj.append("<gpx version=\"1.1\" creator=\"ESP32 GPS Logger\" xmlns=\"http://www.topografix.com/GPX/1/1\">\n");
|
||||
buffer_obj.append(" <trk>\n");
|
||||
if (!poi)
|
||||
buffer_obj.append(" <trk>\n");
|
||||
buffer_obj.append(" <name>ESP32 Track</name>\n");
|
||||
buffer_obj.append(" <trkseg>\n");
|
||||
if (!poi)
|
||||
buffer_obj.append(" <trkseg>\n");
|
||||
}
|
||||
|
||||
void WiFiScan::writeFooter() {
|
||||
void WiFiScan::writeFooter(bool poi) {
|
||||
Serial.println("Writing footer to GPX file...\n");
|
||||
buffer_obj.append(" </trkseg>\n");
|
||||
buffer_obj.append(" </trk>\n");
|
||||
if (!poi) {
|
||||
buffer_obj.append(" </trkseg>\n");
|
||||
buffer_obj.append(" </trk>\n");
|
||||
}
|
||||
buffer_obj.append("</gpx>\n");
|
||||
}
|
||||
|
||||
@@ -2251,18 +2261,18 @@ void WiFiScan::RunSetupGPSTracker(uint8_t scan_mode) {
|
||||
else if (scan_mode == GPS_POI)
|
||||
this->startGPX("poi");
|
||||
|
||||
this->writeHeader();
|
||||
this->writeHeader(scan_mode == GPS_POI);
|
||||
initTime = millis();
|
||||
}
|
||||
|
||||
bool WiFiScan::RunGPSInfo(bool tracker, bool display) {
|
||||
bool WiFiScan::RunGPSInfo(bool tracker, bool display, bool poi) {
|
||||
bool return_val = true;
|
||||
#ifdef HAS_GPS
|
||||
String text=gps_obj.getText();
|
||||
|
||||
if (tracker) {
|
||||
if (gps_obj.getFixStatus()) {
|
||||
this->logPoint(gps_obj.getLat(), gps_obj.getLon(), gps_obj.getAlt(), gps_obj.getDatetime());
|
||||
this->logPoint(gps_obj.getLat(), gps_obj.getLon(), gps_obj.getAlt(), gps_obj.getDatetime(), poi);
|
||||
}
|
||||
else
|
||||
return_val = false;
|
||||
|
||||
@@ -563,8 +563,8 @@ class WiFiScan
|
||||
void RunPortScanAll(uint8_t scan_mode, uint16_t color);
|
||||
bool checkMem();
|
||||
void parseBSSID(const char* bssidStr, uint8_t* bssid);
|
||||
void writeHeader();
|
||||
void writeFooter();
|
||||
void writeHeader(bool poi = false);
|
||||
void writeFooter(bool poi = false);
|
||||
|
||||
|
||||
public:
|
||||
@@ -675,8 +675,8 @@ class WiFiScan
|
||||
#ifdef HAS_SCREEN
|
||||
int8_t checkAnalyzerButtons(uint32_t currentTime);
|
||||
#endif
|
||||
bool RunGPSInfo(bool tracker = false, bool display = true);
|
||||
void logPoint(String lat, String lon, float alt, String datetime);
|
||||
bool RunGPSInfo(bool tracker = false, bool display = true, bool poi = false);
|
||||
void logPoint(String lat, String lon, float alt, String datetime, bool poi = false);
|
||||
void setMac();
|
||||
void renderRawStats();
|
||||
void renderPacketRate();
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
//#define MARAUDER_CARDPUTER
|
||||
//// END BOARD TARGETS
|
||||
|
||||
#define MARAUDER_VERSION "v1.8.4"
|
||||
#define MARAUDER_VERSION "v1.8.5"
|
||||
|
||||
#define GRAPH_REFRESH 100
|
||||
|
||||
@@ -382,7 +382,7 @@
|
||||
//#define HAS_BATTERY
|
||||
//#define HAS_BT
|
||||
//#define HAS_BUTTONS
|
||||
//#define HAS_NEOPIXEL_LED
|
||||
#define HAS_NEOPIXEL_LED
|
||||
//#define HAS_PWR_MGMT
|
||||
//#define HAS_SCREEN
|
||||
#define HAS_GPS
|
||||
@@ -1976,6 +1976,8 @@
|
||||
#define PIN 4
|
||||
#elif defined(MARAUDER_CYD_2USB)
|
||||
#define PIN 4
|
||||
#elif defined(MARAUDER_C5)
|
||||
#define PIN 27
|
||||
#else
|
||||
#define PIN 25
|
||||
#endif
|
||||
|
||||
@@ -106,6 +106,7 @@ PROGMEM const char text1_62[] = "Deauth Targeted";
|
||||
PROGMEM const char text1_63[] = "Detect Pineapple";
|
||||
PROGMEM const char text1_64[] = "Detect MultiSSID";
|
||||
PROGMEM const char text1_65[] = "Select probe SSIDs";
|
||||
PROGMEM const char text1_66[] = "GPS"; // Text label for GPS Menu in Main Menu
|
||||
|
||||
//SDInterface.cpp texts
|
||||
PROGMEM const char text2_0[] = "Error, could not find update.bin";
|
||||
@@ -186,7 +187,7 @@ PROGMEM const char text4_49[] = " Detect MultiSSID ";
|
||||
|
||||
//Making tables
|
||||
PROGMEM const char *text_table0[] = {text0_0,text0_1, text0_2, text0_3, text0_4, text0_5, text0_6, text0_7, text0_8};
|
||||
PROGMEM const char *text_table1[] = {text1_0,text1_1,text1_2,text1_3,text1_4,text1_5,text1_6,text1_7,text1_8,text1_9,text1_10,text1_11,text1_12,text1_13,text1_14,text1_15,text1_16,text1_17,text1_18,text1_19,text1_20,text1_21,text1_22,text1_23,text1_24,text1_25,text1_26,text1_27,text1_28,text1_29,text1_30,text1_31,text1_32,text1_33,text1_34,text1_35,text1_36,text1_37,text1_38,text1_39,text1_40,text1_41,text1_42,text1_43,text1_44,text1_45,text1_46,text1_47,text1_48,text1_49,text1_50,text1_51,text1_52,text1_53,text1_54,text1_55,text1_56,text1_57,text1_58,text1_59,text1_60,text1_61,text1_62,text1_63,text1_64, text1_65};
|
||||
PROGMEM const char *text_table1[] = {text1_0,text1_1,text1_2,text1_3,text1_4,text1_5,text1_6,text1_7,text1_8,text1_9,text1_10,text1_11,text1_12,text1_13,text1_14,text1_15,text1_16,text1_17,text1_18,text1_19,text1_20,text1_21,text1_22,text1_23,text1_24,text1_25,text1_26,text1_27,text1_28,text1_29,text1_30,text1_31,text1_32,text1_33,text1_34,text1_35,text1_36,text1_37,text1_38,text1_39,text1_40,text1_41,text1_42,text1_43,text1_44,text1_45,text1_46,text1_47,text1_48,text1_49,text1_50,text1_51,text1_52,text1_53,text1_54,text1_55,text1_56,text1_57,text1_58,text1_59,text1_60,text1_61,text1_62,text1_63,text1_64, text1_65, text1_66};
|
||||
PROGMEM const char *text_table2[] = {text2_0,text2_1,text2_2,text2_3,text2_4,text2_5,text2_6,text2_7,text2_8,text2_9,text2_10,text2_11,text2_12,text2_13,text2_14};
|
||||
PROGMEM const char *text_table3[] = {text3_0,text3_1,text3_2,text3_3,text3_4,text3_5};
|
||||
PROGMEM const char *text_table4[] = {text4_0,text4_1,text4_2,text4_3,text4_4,text4_5,text4_6,text4_7,text1_54,text4_9,text4_10,text4_11,text4_12,text4_13,text4_14,text4_15,text4_16,text4_17,text4_18,text4_19,text4_20,text4_21,text4_22,text4_23,text4_24,text4_25,text4_26,text4_27,text4_28,text4_29,text4_30,text4_31,text4_32,text4_33,text4_34,text4_35,text4_36,text4_37,text4_38,text4_39,text4_40,text4_41,text4_42,text4_43,text4_44,text4_45,text4_46,text4_47,text4_48,text4_49};
|
||||
|
||||
BIN
mechanical/C5 Adapter/.DS_Store
vendored
Normal file
BIN
mechanical/C5 Adapter/.DS_Store
vendored
Normal file
Binary file not shown.
BIN
mechanical/C5 Adapter/Extra designs/.DS_Store
vendored
Normal file
BIN
mechanical/C5 Adapter/Extra designs/.DS_Store
vendored
Normal file
Binary file not shown.
BIN
mechanical/C5 Adapter/Extra designs/c5 adapter back - SMA.stl
Normal file
BIN
mechanical/C5 Adapter/Extra designs/c5 adapter back - SMA.stl
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
mechanical/C5 Adapter/Extra designs/c5 adapter front - SMA.stl
Normal file
BIN
mechanical/C5 Adapter/Extra designs/c5 adapter front - SMA.stl
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
mechanical/C5 Adapter/c5 adapter back.stl
Normal file
BIN
mechanical/C5 Adapter/c5 adapter back.stl
Normal file
Binary file not shown.
BIN
mechanical/C5 Adapter/c5 adapter front.stl
Normal file
BIN
mechanical/C5 Adapter/c5 adapter front.stl
Normal file
Binary file not shown.
BIN
mechanical/C5 Adapter/c5 adapter pin cover.stl
Normal file
BIN
mechanical/C5 Adapter/c5 adapter pin cover.stl
Normal file
Binary file not shown.
Reference in New Issue
Block a user