mirror of
https://github.com/SpacehuhnTech/esp8266_deauther.git
synced 2025-12-22 15:16:47 -08:00
Added fake clock feature for DSTIKE wristband
This commit is contained in:
@@ -31,12 +31,11 @@ void DisplayUI::configOff() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void DisplayUI::updatePrefix() {
|
void DisplayUI::updatePrefix() {
|
||||||
display.clear(); // clear display
|
display.clear();
|
||||||
display.setTextAlignment(TEXT_ALIGN_LEFT); // reset text alignment just in case ;)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DisplayUI::updateSuffix() {
|
void DisplayUI::updateSuffix() {
|
||||||
display.display(); // draw changes
|
display.display();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DisplayUI::drawString(int x, int y, String str) {
|
void DisplayUI::drawString(int x, int y, String str) {
|
||||||
@@ -64,6 +63,11 @@ void DisplayUI::setup() {
|
|||||||
setupButtons();
|
setupButtons();
|
||||||
buttonTime = currentTime;
|
buttonTime = currentTime;
|
||||||
|
|
||||||
|
#ifdef FAKE_CLOCK
|
||||||
|
clockHour = random(12);
|
||||||
|
clockMinute = random(60);
|
||||||
|
#endif // ifdef FAKE_CLOCK
|
||||||
|
|
||||||
// ===== MENUS ===== //
|
// ===== MENUS ===== //
|
||||||
|
|
||||||
// MAIN MENU
|
// MAIN MENU
|
||||||
@@ -75,6 +79,15 @@ void DisplayUI::setup() {
|
|||||||
scan.start(SCAN_MODE_SNIFFER, 0, SCAN_MODE_OFF, 0, false, wifi_channel);
|
scan.start(SCAN_MODE_SNIFFER, 0, SCAN_MODE_OFF, 0, false, wifi_channel);
|
||||||
mode = DISPLAY_MODE::PACKETMONITOR;
|
mode = DISPLAY_MODE::PACKETMONITOR;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
#ifdef FAKE_CLOCK
|
||||||
|
addMenuNode(&mainMenu, D_CLOCK, [this]() { // PACKET MONITOR
|
||||||
|
mode = DISPLAY_MODE::CLOCK;
|
||||||
|
display.setFont(ArialMT_Plain_24);
|
||||||
|
display.setTextAlignment(TEXT_ALIGN_CENTER);
|
||||||
|
});
|
||||||
|
#endif // ifdef FAKE_CLOCK
|
||||||
|
|
||||||
#ifdef HIGHLIGHT_LED
|
#ifdef HIGHLIGHT_LED
|
||||||
addMenuNode(&mainMenu, D_LED, [this]() { // LED
|
addMenuNode(&mainMenu, D_LED, [this]() { // LED
|
||||||
highlightLED = !highlightLED;
|
highlightLED = !highlightLED;
|
||||||
@@ -503,6 +516,8 @@ void DisplayUI::setupButtons() {
|
|||||||
else currentMenu->selected = currentMenu->list->size() - 1;
|
else currentMenu->selected = currentMenu->list->size() - 1;
|
||||||
} else if (mode == DISPLAY_MODE::PACKETMONITOR) { // when in packet monitor, change channel
|
} else if (mode == DISPLAY_MODE::PACKETMONITOR) { // when in packet monitor, change channel
|
||||||
scan.setChannel(wifi_channel + 1);
|
scan.setChannel(wifi_channel + 1);
|
||||||
|
} else if (mode == DISPLAY_MODE::CLOCK) { // when in packet monitor, change channel
|
||||||
|
setTime(clockHour, clockMinute + 1, clockSecond);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -516,6 +531,8 @@ void DisplayUI::setupButtons() {
|
|||||||
else currentMenu->selected = currentMenu->list->size() - 1;
|
else currentMenu->selected = currentMenu->list->size() - 1;
|
||||||
} else if (mode == DISPLAY_MODE::PACKETMONITOR) { // when in packet monitor, change channel
|
} else if (mode == DISPLAY_MODE::PACKETMONITOR) { // when in packet monitor, change channel
|
||||||
scan.setChannel(wifi_channel + 1);
|
scan.setChannel(wifi_channel + 1);
|
||||||
|
} else if (mode == DISPLAY_MODE::CLOCK) { // when in packet monitor, change channel
|
||||||
|
setTime(clockHour, clockMinute + 10, clockSecond);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, buttonDelay);
|
}, buttonDelay);
|
||||||
@@ -530,6 +547,8 @@ void DisplayUI::setupButtons() {
|
|||||||
else currentMenu->selected = 0;
|
else currentMenu->selected = 0;
|
||||||
} else if (mode == DISPLAY_MODE::PACKETMONITOR) { // when in packet monitor, change channel
|
} else if (mode == DISPLAY_MODE::PACKETMONITOR) { // when in packet monitor, change channel
|
||||||
scan.setChannel(wifi_channel - 1);
|
scan.setChannel(wifi_channel - 1);
|
||||||
|
} else if (mode == DISPLAY_MODE::CLOCK) { // when in packet monitor, change channel
|
||||||
|
setTime(clockHour, clockMinute - 1, clockSecond);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -543,6 +562,8 @@ void DisplayUI::setupButtons() {
|
|||||||
else currentMenu->selected = 0;
|
else currentMenu->selected = 0;
|
||||||
} else if (mode == DISPLAY_MODE::PACKETMONITOR) { // when in packet monitor, change channel
|
} else if (mode == DISPLAY_MODE::PACKETMONITOR) { // when in packet monitor, change channel
|
||||||
scan.setChannel(wifi_channel - 1);
|
scan.setChannel(wifi_channel - 1);
|
||||||
|
} else if (mode == DISPLAY_MODE::CLOCK) { // when in packet monitor, change channel
|
||||||
|
setTime(clockHour, clockMinute - 10, clockSecond);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, buttonDelay);
|
}, buttonDelay);
|
||||||
@@ -565,6 +586,12 @@ void DisplayUI::setupButtons() {
|
|||||||
scan.stop();
|
scan.stop();
|
||||||
mode = DISPLAY_MODE::MENU;
|
mode = DISPLAY_MODE::MENU;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case DISPLAY_MODE::CLOCK:
|
||||||
|
mode = DISPLAY_MODE::MENU;
|
||||||
|
display.setFont(DejaVu_Sans_Mono_12);
|
||||||
|
display.setTextAlignment(TEXT_ALIGN_LEFT);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -596,6 +623,10 @@ void DisplayUI::setupButtons() {
|
|||||||
scan.stop();
|
scan.stop();
|
||||||
mode = DISPLAY_MODE::MENU;
|
mode = DISPLAY_MODE::MENU;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case DISPLAY_MODE::CLOCK:
|
||||||
|
mode = DISPLAY_MODE::MENU;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -614,6 +645,13 @@ void DisplayUI::draw() {
|
|||||||
|
|
||||||
updatePrefix();
|
updatePrefix();
|
||||||
|
|
||||||
|
#ifdef FAKE_CLOCK
|
||||||
|
if (clockTime < currentTime - 1000) {
|
||||||
|
setTime(clockHour, clockMinute++, clockSecond + 1);
|
||||||
|
clockTime += 1000;
|
||||||
|
}
|
||||||
|
#endif // ifdef FAKE_CLOCK
|
||||||
|
|
||||||
switch (mode) {
|
switch (mode) {
|
||||||
case DISPLAY_MODE::BUTTON_TEST:
|
case DISPLAY_MODE::BUTTON_TEST:
|
||||||
drawButtonTest();
|
drawButtonTest();
|
||||||
@@ -637,6 +675,12 @@ void DisplayUI::draw() {
|
|||||||
}
|
}
|
||||||
drawIntro();
|
drawIntro();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
#ifdef FAKE_CLOCK
|
||||||
|
case DISPLAY_MODE::CLOCK:
|
||||||
|
drawClock();
|
||||||
|
break;
|
||||||
|
#endif // ifdef FAKE_CLOCK
|
||||||
}
|
}
|
||||||
|
|
||||||
updateSuffix();
|
updateSuffix();
|
||||||
@@ -709,13 +753,26 @@ void DisplayUI::drawPacketMonitor() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void DisplayUI::drawIntro() {
|
void DisplayUI::drawIntro() {
|
||||||
drawString(0, lineHeight * 0, center(String(F("")), maxLen));
|
drawString(0, center(String(D_INTRO_0), maxLen));
|
||||||
drawString(0, lineHeight * 1, center(String(F("ESP8266 Deauther")), maxLen));
|
drawString(1, center(String(D_INTRO_1), maxLen));
|
||||||
drawString(0, lineHeight * 2, center(String(F("by @Spacehuhn")), maxLen));
|
drawString(2, center(String(D_INTRO_2), maxLen));
|
||||||
drawString(0, lineHeight * 3, center(String(F("")), maxLen));
|
drawString(3, center(String(D_INTRO_3), maxLen));
|
||||||
drawString(0, lineHeight * 4, center(settings.getVersion(), maxLen));
|
drawString(4, center(settings.getVersion(), maxLen));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef FAKE_CLOCK
|
||||||
|
void DisplayUI::drawClock() {
|
||||||
|
String clockTime = String(clockHour);
|
||||||
|
|
||||||
|
clockTime += ':';
|
||||||
|
if (clockMinute < 10) clockTime += '0';
|
||||||
|
clockTime += String(clockMinute);
|
||||||
|
|
||||||
|
display.drawString(64, 20, clockTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // ifdef FAKE_CLOCK
|
||||||
|
|
||||||
void DisplayUI::clearMenu(Menu* menu) {
|
void DisplayUI::clearMenu(Menu* menu) {
|
||||||
while (menu->list->size() > 0) {
|
while (menu->list->size() > 0) {
|
||||||
menu->list->remove(0);
|
menu->list->remove(0);
|
||||||
@@ -784,3 +841,37 @@ void DisplayUI::addMenuNode(Menu* menu, const char* ptr, Menu* next) {
|
|||||||
return str(ptr);
|
return str(ptr);
|
||||||
}, next);
|
}, next);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DisplayUI::setTime(int h, int m, int s) {
|
||||||
|
if (s >= 60) {
|
||||||
|
s = 0;
|
||||||
|
m++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m >= 60) {
|
||||||
|
m = 0;
|
||||||
|
h++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (h >= 24) {
|
||||||
|
h = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (s < 0) {
|
||||||
|
s = 59;
|
||||||
|
m--;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m < 0) {
|
||||||
|
m = 59;
|
||||||
|
h--;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (h < 0) {
|
||||||
|
h = 23;
|
||||||
|
}
|
||||||
|
|
||||||
|
clockHour = h;
|
||||||
|
clockMinute = m;
|
||||||
|
clockSecond = s;
|
||||||
|
}
|
||||||
|
|||||||
@@ -29,6 +29,11 @@ extern String right(String a, int len);
|
|||||||
extern String leftRight(String a, String b, int len);
|
extern String leftRight(String a, String b, int len);
|
||||||
extern String replaceUtf8(String str, String r);
|
extern String replaceUtf8(String str, String r);
|
||||||
|
|
||||||
|
const char D_INTRO_0[] PROGMEM = "";
|
||||||
|
const char D_INTRO_1[] PROGMEM = "ESP8266 Deauther";
|
||||||
|
const char D_INTRO_2[] PROGMEM = "by @Spacehuhn";
|
||||||
|
const char D_INTRO_3[] PROGMEM = "";
|
||||||
|
|
||||||
// fallback for the buttons
|
// fallback for the buttons
|
||||||
#ifndef BUTTON_UP
|
#ifndef BUTTON_UP
|
||||||
#define BUTTON_UP 255
|
#define BUTTON_UP 255
|
||||||
@@ -61,7 +66,7 @@ struct Menu {
|
|||||||
|
|
||||||
class DisplayUI {
|
class DisplayUI {
|
||||||
public:
|
public:
|
||||||
enum DISPLAY_MODE { OFF = 0, BUTTON_TEST = 1, MENU = 2, LOADSCAN = 3, PACKETMONITOR = 4, INTRO = 5 };
|
enum DISPLAY_MODE { OFF = 0, BUTTON_TEST = 1, MENU = 2, LOADSCAN = 3, PACKETMONITOR = 4, INTRO = 5, CLOCK = 6 };
|
||||||
|
|
||||||
uint8_t mode = DISPLAY_MODE::MENU;
|
uint8_t mode = DISPLAY_MODE::MENU;
|
||||||
bool highlightLED = false;
|
bool highlightLED = false;
|
||||||
@@ -160,6 +165,17 @@ class DisplayUI {
|
|||||||
void addMenuNode(Menu* menu, std::function<String()>getStr, Menu* next);
|
void addMenuNode(Menu* menu, std::function<String()>getStr, Menu* next);
|
||||||
void addMenuNode(Menu* menu, const char* ptr, std::function<void()>click);
|
void addMenuNode(Menu* menu, const char* ptr, std::function<void()>click);
|
||||||
void addMenuNode(Menu* menu, const char* ptr, Menu* next);
|
void addMenuNode(Menu* menu, const char* ptr, Menu* next);
|
||||||
|
|
||||||
|
#ifdef FAKE_CLOCK
|
||||||
|
void drawClock();
|
||||||
|
void setTime(int h, int m, int s);
|
||||||
|
|
||||||
|
int clockHour = 6;
|
||||||
|
int clockMinute = 0;
|
||||||
|
int clockSecond = 0;
|
||||||
|
|
||||||
|
uint32_t clockTime = 0;
|
||||||
|
#endif // ifdef FAKE_CLOCK
|
||||||
};
|
};
|
||||||
|
|
||||||
// ===== FONT ===== //
|
// ===== FONT ===== //
|
||||||
|
|||||||
@@ -301,6 +301,7 @@ const char D_SCAN[] PROGMEM = "SCAN";
|
|||||||
const char D_SHOW[] PROGMEM = "SELECT";
|
const char D_SHOW[] PROGMEM = "SELECT";
|
||||||
const char D_ATTACK[] PROGMEM = "ATTACK";
|
const char D_ATTACK[] PROGMEM = "ATTACK";
|
||||||
const char D_PACKET_MONITOR[] PROGMEM = "PACKET MONITOR";
|
const char D_PACKET_MONITOR[] PROGMEM = "PACKET MONITOR";
|
||||||
|
const char D_CLOCK[] PROGMEM = "CLOCK";
|
||||||
|
|
||||||
// SCAN MENU
|
// SCAN MENU
|
||||||
const char D_SCAN_APST[] PROGMEM = "SCAN AP + ST";
|
const char D_SCAN_APST[] PROGMEM = "SCAN AP + ST";
|
||||||
|
|||||||
Reference in New Issue
Block a user