diff --git a/esp32_marauder/Display.cpp b/esp32_marauder/Display.cpp index 62edffd..d9955de 100644 --- a/esp32_marauder/Display.cpp +++ b/esp32_marauder/Display.cpp @@ -11,7 +11,7 @@ Display::Display() { } -int8_t Display::menuButton(uint16_t *x, uint16_t *y, bool pressed) { +int8_t Display::menuButton(uint16_t *x, uint16_t *y, bool pressed, bool check_hold) { #ifdef HAS_ILI9341 for (uint8_t b = BUTTON_ARRAY_LEN; b < BUTTON_ARRAY_LEN + 3; b++) { if (pressed && this->key[b].contains(*x, *y)) { @@ -22,8 +22,15 @@ int8_t Display::menuButton(uint16_t *x, uint16_t *y, bool pressed) { } for (uint8_t b = BUTTON_ARRAY_LEN; b < BUTTON_ARRAY_LEN + 3; b++) { - if ((this->key[b].justReleased()) && (!pressed)) { - return b - BUTTON_ARRAY_LEN; + if (!check_hold) { + if ((this->key[b].justReleased()) && (!pressed)) { + return b - BUTTON_ARRAY_LEN; + } + } + else { + if ((this->key[b].isPressed())) { + return b - BUTTON_ARRAY_LEN; + } } } @@ -80,6 +87,28 @@ uint8_t Display::updateTouch(uint16_t *x, uint16_t *y, uint16_t threshold) { return 0; } +bool Display::isTouchHeld(uint16_t threshold) { + static unsigned long touchStartTime = 0; + static bool touchHeld = false; + uint16_t x, y; + + if (this->updateTouch(&x, &y, threshold)) { + // Touch detected + if (touchStartTime == 0) { + touchStartTime = millis(); // First touch timestamp + } else if (!touchHeld && millis() - touchStartTime >= 1000) { + touchHeld = true; // Held for at least 1000ms + return true; + } + } else { + // Touch released + touchStartTime = 0; + touchHeld = false; + } + + return false; +} + // Function to prepare the display and the menus void Display::RunSetup() { diff --git a/esp32_marauder/Display.h b/esp32_marauder/Display.h index 9cacb86..39e74a2 100644 --- a/esp32_marauder/Display.h +++ b/esp32_marauder/Display.h @@ -118,8 +118,9 @@ class Display // We can speed up scrolling of short text lines by just blanking the character we drew int blank[19]; // We keep all the strings pixel lengths to optimise the speed of the top line blanking - int8_t menuButton(uint16_t *x, uint16_t *y, bool pressed); + int8_t menuButton(uint16_t *x, uint16_t *y, bool pressed, bool check_hold = false); uint8_t updateTouch(uint16_t *x, uint16_t *y, uint16_t threshold = 600); + bool isTouchHeld(uint16_t threshold = 600); void tftDrawRedOnOffButton(); void tftDrawGreenOnOffButton(); void tftDrawGraphObjects(byte x_scale); diff --git a/esp32_marauder/MenuFunctions.cpp b/esp32_marauder/MenuFunctions.cpp index 7f4463f..4e7edd4 100644 --- a/esp32_marauder/MenuFunctions.cpp +++ b/esp32_marauder/MenuFunctions.cpp @@ -581,6 +581,67 @@ MenuFunctions::MenuFunctions() display_obj.exit_draw = true; // set everything back to normal } } + + void MenuFunctions::joinWiFiGFX(String essid){ + + // Create one text area + ta1 = lv_textarea_create(lv_scr_act(), NULL); + lv_textarea_set_one_line(ta1, true); + lv_obj_set_width(ta1, LV_HOR_RES / 2 - 20); + lv_obj_set_pos(ta1, 5, 20); + //lv_ta_set_cursor_type(ta, LV_CURSOR_BLOCK); + lv_textarea_set_text(ta1, essid.c_str()); + lv_obj_set_event_cb(ta1, ta_event_cb); + + // Create first label + lv_obj_t * ssid_label = lv_label_create(lv_scr_act(), NULL); + lv_label_set_text(ssid_label, "SSID:"); + lv_obj_align(ssid_label, ta1, LV_ALIGN_OUT_TOP_LEFT, 0, 0); + + // Create second text area + ta2 = lv_textarea_create(lv_scr_act(), ta1); + //lv_textarea_set_pwd_mode(ta2, true); // This shit makes it so backspace does not work + //lv_textarea_set_pwd_show_time(ta2, 1000); + lv_textarea_set_cursor_hidden(ta2, true); + lv_obj_align(ta2, NULL, LV_ALIGN_IN_TOP_RIGHT, -5, 20); + + // Create second label + lv_obj_t * pw_label = lv_label_create(lv_scr_act(), NULL); + lv_label_set_text(pw_label, "Password:"); + lv_obj_align(pw_label, ta2, LV_ALIGN_OUT_TOP_LEFT, 0, 0); + + // Create a keyboard and apply the styles + kb = lv_keyboard_create(lv_scr_act(), NULL); + lv_obj_set_size(kb, LV_HOR_RES, LV_VER_RES / 2); + lv_obj_set_event_cb(kb, join_wifi_keyboard_event_cb); + + // Focus it on one of the text areas to start + lv_keyboard_set_textarea(kb, ta1); + lv_keyboard_set_cursor_manage(kb, true); + + } + + void join_wifi_keyboard_event_cb(lv_obj_t * keyboard, lv_event_t event){ + extern Display display_obj; + extern MenuFunctions menu_function_obj; + extern WiFiScan wifi_scan_obj; + lv_keyboard_def_event_cb(kb, event); + if(event == LV_EVENT_APPLY){ + printf("LV_EVENT_APPLY\n"); + //String ta1_text = lv_textarea_get_text(lv_keyboard_get_textarea(kb)); + String ta1_text = lv_textarea_get_text(ta1); + String ta2_text = lv_textarea_get_text(ta2); + Serial.println(ta1_text); + Serial.println(ta2_text); + wifi_scan_obj.joinWiFi(ta1_text, ta2_text); + }else if(event == LV_EVENT_CANCEL){ + printf("LV_EVENT_CANCEL\n"); + //lv_textarea_set_text(lv_keyboard_get_textarea(kb), ""); + menu_function_obj.deinitLVGL(); + //wifi_scan_obj.StartScan(WIFI_SCAN_OFF); + display_obj.exit_draw = true; // set everything back to normal + } + } void ta_event_cb(lv_obj_t * ta, lv_event_t event) @@ -1652,9 +1713,9 @@ void MenuFunctions::RunSetup() // WiFi HTML menu stuff htmlMenu.list = new LinkedList(); - #if (!defined(HAS_ILI9341) && defined(HAS_BUTTONS)) + //#if (!defined(HAS_ILI9341) && defined(HAS_BUTTONS)) miniKbMenu.list = new LinkedList(); - #endif + //#endif //#ifndef HAS_ILI9341 // #ifdef HAS_BUTTONS #ifdef HAS_SD @@ -1723,9 +1784,9 @@ void MenuFunctions::RunSetup() wardrivingMenu.name = "Wardriving"; #endif htmlMenu.name = "EP HTML List"; - #if (!defined(HAS_ILI9341) && defined(HAS_BUTTONS)) + //#if (!defined(HAS_ILI9341) && defined(HAS_BUTTONS)) miniKbMenu.name = "Mini Keyboard"; - #endif + //#endif #ifdef HAS_SD // #ifndef HAS_ILI9341 sdDeleteMenu.name = "Delete SD Files"; @@ -2029,12 +2090,12 @@ void MenuFunctions::RunSetup() this->changeMenu(&htmlMenu); }); - #if (!defined(HAS_ILI9341) && defined(HAS_BUTTONS)) + //#if (!defined(HAS_ILI9341) && defined(HAS_BUTTONS)) miniKbMenu.parentMenu = &wifiGeneralMenu; this->addNodes(&miniKbMenu, "a", TFTCYAN, NULL, 0, [this]() { this->changeMenu(miniKbMenu.parentMenu); }); - #endif + //#endif htmlMenu.parentMenu = &wifiGeneralMenu; this->addNodes(&htmlMenu, text09, TFTLIGHTGREY, NULL, 0, [this]() { @@ -2153,6 +2214,29 @@ void MenuFunctions::RunSetup() this->changeMenu(&wifiAPMenu); }); + this->addNodes(&wifiGeneralMenu, "Join WiFi", TFTWHITE, NULL, KEYBOARD_ICO, [this](){ + // Add the back button + wifiAPMenu.list->clear(); + this->addNodes(&wifiAPMenu, text09, TFTLIGHTGREY, NULL, 0, [this]() { + this->changeMenu(wifiAPMenu.parentMenu); + }); + + // Populate the menu with buttons + for (int i = 0; i < access_points->size(); i++) { + // This is the menu node + this->addNodes(&wifiAPMenu, access_points->get(i).essid, TFTCYAN, NULL, 255, [this, i](){ + //this->changeMenu(&miniKbMenu); + //this->miniKeyboard(&miniKbMenu); + #ifdef HAS_TOUCH + wifi_scan_obj.currentScanMode = LV_JOIN_WIFI; + wifi_scan_obj.StartScan(LV_JOIN_WIFI, TFT_YELLOW); + joinWiFiGFX(access_points->get(i).essid); + #endif + }); + } + this->changeMenu(&wifiAPMenu); + }); + wifiStationMenu.parentMenu = &wifiAPMenu; this->addNodes(&wifiStationMenu, text09, TFTLIGHTGREY, NULL, 0, [this]() { this->changeMenu(wifiStationMenu.parentMenu); @@ -2172,6 +2256,11 @@ void MenuFunctions::RunSetup() this->changeMenu(&setMacMenu); }); + this->addNodes(&wifiGeneralMenu, "Shutdown WiFi", TFTRED, NULL, 0, [this]() { + wifi_scan_obj.StartScan(WIFI_SCAN_OFF, TFT_RED); + this->changeMenu(current_menu); + }); + // Menu for generating and setting MAC addrs for AP and STA setMacMenu.parentMenu = &wifiGeneralMenu; @@ -2763,7 +2852,7 @@ void MenuFunctions::RunSetup() this->initTime = millis(); } -#if (!defined(HAS_ILI9341) && defined(HAS_BUTTONS)) +//#if (!defined(HAS_ILI9341) && defined(HAS_BUTTONS)) void MenuFunctions::miniKeyboard(Menu * targetMenu) { // Prepare a char array and reset temp SSID string extern LinkedList* ssids; @@ -2772,10 +2861,12 @@ void MenuFunctions::RunSetup() wifi_scan_obj.current_mini_kb_ssid = ""; - if (c_btn.isHeld()) { - while (!c_btn.justReleased()) - delay(1); - } + #ifdef HAS_MINI_KB + if (c_btn.isHeld()) { + while (!c_btn.justReleased()) + delay(1); + } + #endif int str_len = wifi_scan_obj.alfa.length() + 1; @@ -2783,13 +2874,157 @@ void MenuFunctions::RunSetup() wifi_scan_obj.alfa.toCharArray(char_array, str_len); + #ifdef HAS_TOUCH + uint16_t t_x = 0, t_y = 0; + + #endif + // Button loop until hold center button #ifdef HAS_BUTTONS - #if !(defined(MARAUDER_V6) || defined(MARAUDER_V6_1) || defined(MARAUDER_CYD_MICRO)) + //#if !(defined(MARAUDER_V6) || defined(MARAUDER_V6_1) || defined(MARAUDER_CYD_MICRO)) while(true) { - // Cycle char previous - #ifdef HAS_L - if (l_btn.justPressed()) { + // Keyboard functions for switch hardware + #ifdef HAS_MINI_KB + // Cycle char previous + #ifdef HAS_L + if (l_btn.justPressed()) { + pressed = true; + if (this->mini_kb_index > 0) + this->mini_kb_index--; + else + this->mini_kb_index = str_len - 2; + + targetMenu->list->set(0, MenuNode{String(char_array[this->mini_kb_index]).c_str(), false, TFTCYAN, 0, NULL, true, NULL}); + this->buildButtons(targetMenu); + while (!l_btn.justReleased()) + delay(1); + } + #endif + + // Cycle char next + #ifdef HAS_R + if (r_btn.justPressed()) { + pressed = true; + if (this->mini_kb_index < str_len - 2) + this->mini_kb_index++; + else + this->mini_kb_index = 0; + + targetMenu->list->set(0, MenuNode{String(char_array[this->mini_kb_index]).c_str(), false, TFTCYAN, 0, NULL, true, NULL}); + this->buildButtons(targetMenu, 0, String(char_array[this->mini_kb_index]).c_str()); + while (!r_btn.justReleased()) + delay(1); + } + #endif + + //// 5-WAY SWITCH STUFF + // Add character + #if (defined(HAS_D) && defined(HAS_R)) + if (d_btn.justPressed()) { + pressed = true; + wifi_scan_obj.current_mini_kb_ssid.concat(String(char_array[this->mini_kb_index]).c_str()); + while (!d_btn.justReleased()) + delay(1); + } + #endif + + // Remove character + #if (defined(HAS_U) && defined(HAS_L)) + if (u_btn.justPressed()) { + pressed = true; + wifi_scan_obj.current_mini_kb_ssid.remove(wifi_scan_obj.current_mini_kb_ssid.length() - 1); + while (!u_btn.justReleased()) + delay(1); + } + #endif + + //// PARTIAL SWITCH STUFF + // Advance char or add char + #if (defined(HAS_D) && !defined(HAS_R)) + if (d_btn.justPressed()) { + bool was_held = false; + pressed = true; + while(!d_btn.justReleased()) { + d_btn.justPressed(); + + // Add letter to string + if (d_btn.isHeld()) { + wifi_scan_obj.current_mini_kb_ssid.concat(String(char_array[this->mini_kb_index]).c_str()); + was_held = true; + break; + } + } + if (!was_held) { + if (this->mini_kb_index < str_len - 2) + this->mini_kb_index++; + else + this->mini_kb_index = 0; + + targetMenu->list->set(0, MenuNode{String(char_array[this->mini_kb_index]).c_str(), false, TFTCYAN, 0, NULL, true, NULL}); + this->buildButtons(targetMenu, 0, String(char_array[this->mini_kb_index]).c_str()); + } + } + #endif + + // Prev char or remove char + #if (defined(HAS_U) && !defined(HAS_L)) + if (u_btn.justPressed()) { + bool was_held = false; + pressed = true; + while(!u_btn.justReleased()) { + u_btn.justPressed(); + + // Remove letter from string + if (u_btn.isHeld()) { + wifi_scan_obj.current_mini_kb_ssid.remove(wifi_scan_obj.current_mini_kb_ssid.length() - 1); + was_held = true; + break; + } + } + if (!was_held) { + if (this->mini_kb_index > 0) + this->mini_kb_index--; + else + this->mini_kb_index = str_len - 2; + + targetMenu->list->set(0, MenuNode{String(char_array[this->mini_kb_index]).c_str(), false, TFTCYAN, 0, NULL, true, NULL}); + this->buildButtons(targetMenu); + } + } + #endif + + // Add SSID + #ifdef HAS_C + if (c_btn.justPressed()) { + while (!c_btn.justReleased()) { + c_btn.justPressed(); // Need to continue updating button hold status. My shitty library. + + // Exit + if (c_btn.isHeld()) { + this->changeMenu(targetMenu->parentMenu); + return; + } + 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 + #endif + + // Keyboard functions for touch hardware + #ifdef HAS_TOUCH + bool touched = display_obj.updateTouch(&t_x, &t_y); + + uint8_t menu_button = display_obj.menuButton(&t_x, &t_y, touched); + + // Cycle char previous + if (menu_button == UP_BUTTON) { pressed = true; if (this->mini_kb_index > 0) this->mini_kb_index--; @@ -2798,14 +3033,13 @@ void MenuFunctions::RunSetup() targetMenu->list->set(0, MenuNode{String(char_array[this->mini_kb_index]).c_str(), false, TFTCYAN, 0, NULL, true, NULL}); this->buildButtons(targetMenu); - while (!l_btn.justReleased()) + while (display_obj.updateTouch(&t_x, &t_y) > 0) delay(1); + display_obj.menuButton(&t_x, &t_y, display_obj.updateTouch(&t_x, &t_y)); } - #endif - // Cycle char next - #ifdef HAS_R - if (r_btn.justPressed()) { + // Cycle char next + if (menu_button == DOWN_BUTTON) { pressed = true; if (this->mini_kb_index < str_len - 2) this->mini_kb_index++; @@ -2814,108 +3048,119 @@ void MenuFunctions::RunSetup() targetMenu->list->set(0, MenuNode{String(char_array[this->mini_kb_index]).c_str(), false, TFTCYAN, 0, NULL, true, NULL}); this->buildButtons(targetMenu, 0, String(char_array[this->mini_kb_index]).c_str()); - while (!r_btn.justReleased()) + while (display_obj.updateTouch(&t_x, &t_y) > 0) delay(1); + display_obj.menuButton(&t_x, &t_y, display_obj.updateTouch(&t_x, &t_y)); } - #endif - //// 5-WAY SWITCH STUFF - // Add character - #if (defined(HAS_D) && defined(HAS_R)) - if (d_btn.justPressed()) { + //// 5-WAY SWITCH STUFF + // Add character when select button is pressed + if (menu_button == SELECT_BUTTON) { pressed = true; wifi_scan_obj.current_mini_kb_ssid.concat(String(char_array[this->mini_kb_index]).c_str()); - while (!d_btn.justReleased()) + while (display_obj.updateTouch(&t_x, &t_y) > 0) delay(1); + display_obj.menuButton(&t_x, &t_y, display_obj.updateTouch(&t_x, &t_y)); } - #endif - // Remove character - #if (defined(HAS_U) && defined(HAS_L)) - if (u_btn.justPressed()) { + // Remove character when select button is held + if ((display_obj.isTouchHeld()) && (display_obj.menuButton(&t_x, &t_y, touched, true) == SELECT_BUTTON)) { pressed = true; wifi_scan_obj.current_mini_kb_ssid.remove(wifi_scan_obj.current_mini_kb_ssid.length() - 1); - while (!u_btn.justReleased()) + while (display_obj.menuButton(&t_x, &t_y, display_obj.updateTouch(&t_x, &t_y)) < 0) delay(1); } - #endif - //// PARTIAL SWITCH STUFF - // Advance char or add char - #if (defined(HAS_D) && !defined(HAS_R)) - if (d_btn.justPressed()) { - bool was_held = false; - pressed = true; - while(!d_btn.justReleased()) { - d_btn.justPressed(); - - // Add letter to string - if (d_btn.isHeld()) { - wifi_scan_obj.current_mini_kb_ssid.concat(String(char_array[this->mini_kb_index]).c_str()); - was_held = true; - break; - } - } - if (!was_held) { - if (this->mini_kb_index < str_len - 2) - this->mini_kb_index++; - else - this->mini_kb_index = 0; - - targetMenu->list->set(0, MenuNode{String(char_array[this->mini_kb_index]).c_str(), false, TFTCYAN, 0, NULL, true, NULL}); - this->buildButtons(targetMenu, 0, String(char_array[this->mini_kb_index]).c_str()); - } - } - #endif - - // Prev char or remove char - #if (defined(HAS_U) && !defined(HAS_L)) - if (u_btn.justPressed()) { - bool was_held = false; - pressed = true; - while(!u_btn.justReleased()) { - u_btn.justPressed(); - - // Remove letter from string - if (u_btn.isHeld()) { - wifi_scan_obj.current_mini_kb_ssid.remove(wifi_scan_obj.current_mini_kb_ssid.length() - 1); - was_held = true; - break; - } - } - if (!was_held) { - if (this->mini_kb_index > 0) - this->mini_kb_index--; - else - this->mini_kb_index = str_len - 2; - - targetMenu->list->set(0, MenuNode{String(char_array[this->mini_kb_index]).c_str(), false, TFTCYAN, 0, NULL, true, NULL}); - this->buildButtons(targetMenu); - } - } - #endif - - // Add SSID - #ifdef HAS_C - if (c_btn.justPressed()) { - while (!c_btn.justReleased()) { - c_btn.justPressed(); // Need to continue updating button hold status. My shitty library. - - // Exit - if (c_btn.isHeld()) { - this->changeMenu(targetMenu->parentMenu); - return; - } - delay(1); - } - // If we have a string, add it to list of SSIDs - if (wifi_scan_obj.current_mini_kb_ssid != "") { + //// PARTIAL SWITCH STUFF + // Advance char or add char + #if (defined(HAS_D) && !defined(HAS_R)) + if (d_btn.justPressed()) { + bool was_held = false; 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 = ""; + while(!d_btn.justReleased()) { + d_btn.justPressed(); + + // Add letter to string + if (d_btn.isHeld()) { + wifi_scan_obj.current_mini_kb_ssid.concat(String(char_array[this->mini_kb_index]).c_str()); + was_held = true; + break; + } + } + if (!was_held) { + if (this->mini_kb_index < str_len - 2) + this->mini_kb_index++; + else + this->mini_kb_index = 0; + + targetMenu->list->set(0, MenuNode{String(char_array[this->mini_kb_index]).c_str(), false, TFTCYAN, 0, NULL, true, NULL}); + this->buildButtons(targetMenu, 0, String(char_array[this->mini_kb_index]).c_str()); + } } + #endif + + // Prev char or remove char + #if (defined(HAS_U) && !defined(HAS_L)) + if (u_btn.justPressed()) { + bool was_held = false; + pressed = true; + while(!u_btn.justReleased()) { + u_btn.justPressed(); + + // Remove letter from string + if (u_btn.isHeld()) { + wifi_scan_obj.current_mini_kb_ssid.remove(wifi_scan_obj.current_mini_kb_ssid.length() - 1); + was_held = true; + break; + } + } + if (!was_held) { + if (this->mini_kb_index > 0) + this->mini_kb_index--; + else + this->mini_kb_index = str_len - 2; + + targetMenu->list->set(0, MenuNode{String(char_array[this->mini_kb_index]).c_str(), false, TFTCYAN, 0, NULL, true, NULL}); + this->buildButtons(targetMenu); + } + } + #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(); + while (display_obj.menuButton(&t_x, &t_y, display_obj.updateTouch(&t_x, &t_y)) < 0) + delay(1); + + // Reset the touch keys so we don't activate the keys when we go back + display_obj.menuButton(&t_x, &t_y, display_obj.updateTouch(&t_x, &t_y)); + this->changeMenu(targetMenu->parentMenu); + return; } + + // If the screen is touched but none of the keys are used, don't refresh display + if (menu_button < 0) + pressed = false; + #endif // Display info on screen @@ -2932,17 +3177,26 @@ void MenuFunctions::RunSetup() display_obj.tft.println(ssids->get(0).essid); display_obj.tft.setTextColor(TFT_ORANGE, TFT_BLACK); - display_obj.tft.println("U/D - Rem/Add Char"); - display_obj.tft.println("L/R - Prev/Nxt Char"); - display_obj.tft.println("C - Save"); - display_obj.tft.println("C(Hold) - Exit"); + #ifdef HAS_MINI_KB + display_obj.tft.println("U/D - Rem/Add Char"); + display_obj.tft.println("L/R - Prev/Nxt Char"); + display_obj.tft.println("C - Save"); + display_obj.tft.println("C(Hold) - Exit"); + #endif + + #ifdef HAS_TOUCH + display_obj.tft.println("U/D - Prev/Nxt Char"); + display_obj.tft.println("C - Add Char"); + display_obj.tft.println("C(Hold) - Rem Char"); + display_obj.tft.println("U(Hold) - Enter"); + #endif pressed = false; } } - #endif + //#endif #endif } -#endif +//#endif // Function to show all MenuNodes in a Menu void MenuFunctions::showMenuList(Menu * menu, int layer) diff --git a/esp32_marauder/MenuFunctions.h b/esp32_marauder/MenuFunctions.h index 4f6ea44..05fc55c 100644 --- a/esp32_marauder/MenuFunctions.h +++ b/esp32_marauder/MenuFunctions.h @@ -84,6 +84,7 @@ PROGMEM static lv_disp_buf_t disp_buf; PROGMEM static lv_color_t buf[LV_HOR_RES_MAX * 10]; PROGMEM static void ta_event_cb(lv_obj_t * ta, lv_event_t event); +PROGMEM static void join_wifi_keyboard_event_cb(lv_obj_t * keyboard, lv_event_t event); PROGMEM static void add_ssid_keyboard_event_cb(lv_obj_t * keyboard, lv_event_t event); PROGMEM static void html_list_cb(lv_obj_t * btn, lv_event_t event); PROGMEM static void ap_list_cb(lv_obj_t * btn, lv_event_t event); @@ -213,9 +214,9 @@ class MenuFunctions void displaySetting(String key, Menu* menu, int index); void buttonSelected(int b, int x = -1); void buttonNotSelected(int b, int x = -1); - #if (!defined(HAS_ILI9341) && defined(HAS_BUTTONS)) + //#if (!defined(HAS_ILI9341) && defined(HAS_BUTTONS)) void miniKeyboard(Menu * targetMenu); - #endif + //#endif public: MenuFunctions(); @@ -249,6 +250,7 @@ class MenuFunctions String loaded_file = ""; + void joinWiFiGFX(String essid); void setGraphScale(float scale); void initLVGL(); void deinitLVGL(); diff --git a/esp32_marauder/WiFiScan.cpp b/esp32_marauder/WiFiScan.cpp index 1b7fa09..ce14767 100644 --- a/esp32_marauder/WiFiScan.cpp +++ b/esp32_marauder/WiFiScan.cpp @@ -691,7 +691,7 @@ int WiFiScan::generateSSIDs(int count) { return num_gen; } -/*void WiFiScan::joinWiFi(String ssid, String password) +void WiFiScan::joinWiFi(String ssid, String password) { static const char * btns[] ={text16, ""}; int count = 0; @@ -712,10 +712,10 @@ int WiFiScan::generateSSIDs(int count) { WiFi.disconnect(); } - esp_wifi_init(&cfg); - esp_wifi_set_storage(WIFI_STORAGE_RAM); - esp_wifi_set_mode(WIFI_MODE_NULL); - esp_wifi_start(); + //esp_wifi_init(&cfg); + //esp_wifi_set_storage(WIFI_STORAGE_RAM); + //esp_wifi_set_mode(WIFI_MODE_NULL); + //esp_wifi_start(); WiFi.begin(ssid.c_str(), password.c_str()); @@ -724,7 +724,7 @@ int WiFiScan::generateSSIDs(int count) { delay(500); Serial.print("."); count++; - if (count == 10) + if (count == 20) { Serial.println("\nCould not connect to WiFi network"); #ifdef HAS_SCREEN @@ -753,7 +753,7 @@ int WiFiScan::generateSSIDs(int count) { Serial.print("IP address: "); Serial.println(WiFi.localIP()); this->wifi_initialized = true; -}*/ +} // Apply WiFi settings void WiFiScan::initWiFi(uint8_t scan_mode) { @@ -881,6 +881,11 @@ void WiFiScan::StartScan(uint8_t scan_mode, uint16_t color) RunLvJoinWiFi(scan_mode, color); #endif } + else if (scan_mode == LV_JOIN_WIFI) { + #ifdef HAS_SCREEN + RunLvJoinWiFi(scan_mode, color); + #endif + } else if (scan_mode == WIFI_SCAN_GPS_NMEA){ #ifdef HAS_GPS gps_obj.enable_queue(); @@ -1066,7 +1071,8 @@ void WiFiScan::StopScan(uint8_t scan_mode) (currentScanMode == WIFI_PACKET_MONITOR) || (currentScanMode == WIFI_SCAN_CHAN_ANALYZER) || (currentScanMode == WIFI_SCAN_PACKET_RATE) || - (currentScanMode == LV_JOIN_WIFI)) + (currentScanMode == LV_JOIN_WIFI) || + (this->wifi_initialized)) { this->shutdownWiFi(); diff --git a/esp32_marauder/WiFiScan.h b/esp32_marauder/WiFiScan.h index 13fb65d..2bc5b60 100644 --- a/esp32_marauder/WiFiScan.h +++ b/esp32_marauder/WiFiScan.h @@ -586,7 +586,7 @@ class WiFiScan bool shutdownWiFi(); bool shutdownBLE(); bool scanning(); - //void joinWiFi(String ssid, String password); + void joinWiFi(String ssid, String password); String getStaMAC(); String getApMAC(); String freeRAM(); diff --git a/esp32_marauder/configs.h b/esp32_marauder/configs.h index 64ddb1c..4a2917a 100644 --- a/esp32_marauder/configs.h +++ b/esp32_marauder/configs.h @@ -27,7 +27,7 @@ //#define MARAUDER_CYD_GUITION // ESP32-2432S024 GUITION //// END BOARD TARGETS - #define MARAUDER_VERSION "v1.6.2" + #define MARAUDER_VERSION "v1.7.0" #define GRAPH_REFRESH 100 @@ -75,6 +75,7 @@ //// BOARD FEATURES #if defined(MARAUDER_M5STICKC) || defined(MARAUDER_M5STICKCP2) //#define FLIPPER_ZERO_HAT + #define HAS_MINI_KB #define HAS_BATTERY #define HAS_BT #define HAS_BUTTONS @@ -91,6 +92,7 @@ #ifdef MARAUDER_MINI //#define FLIPPER_ZERO_HAT //#define HAS_BATTERY + #define HAS_MINI_KB #define HAS_BT #define HAS_BUTTONS #define HAS_NEOPIXEL_LED @@ -105,6 +107,7 @@ #ifdef MARAUDER_V7 //#define FLIPPER_ZERO_HAT + #define HAS_MINI_KB #define HAS_BATTERY #define HAS_BT #define HAS_BT_REMOTE @@ -121,6 +124,7 @@ #ifdef MARAUDER_V7_1 //#define FLIPPER_ZERO_HAT + #define HAS_MINI_KB #define HAS_BATTERY #define HAS_BT #define HAS_BT_REMOTE @@ -140,6 +144,7 @@ //#define FLIPPER_ZERO_HAT //#define HAS_BATTERY //#define HAS_BT + #define HAS_MINI_KB #define HAS_BUTTONS #define HAS_NEOPIXEL_LED //#define HAS_PWR_MGMT @@ -152,6 +157,7 @@ #endif #ifdef MARAUDER_V4 + #define HAS_TOUCH //#define FLIPPER_ZERO_HAT #define HAS_BATTERY #define HAS_BT @@ -167,6 +173,7 @@ #endif #if defined(MARAUDER_V6) || defined(MARAUDER_V6_1) + #define HAS_TOUCH //#define FLIPPER_ZERO_HAT #define HAS_BATTERY #define HAS_BT @@ -183,6 +190,7 @@ #endif #ifdef MARAUDER_CYD_MICRO + #define HAS_TOUCH #define HAS_FLIPPER_LED //#define FLIPPER_ZERO_HAT //#define HAS_BATTERY @@ -201,6 +209,7 @@ #endif #ifdef MARAUDER_CYD_2USB + #define HAS_TOUCH #define HAS_FLIPPER_LED //#define FLIPPER_ZERO_HAT //#define HAS_BATTERY @@ -220,6 +229,7 @@ #endif #ifdef MARAUDER_CYD_GUITION + #define HAS_TOUCH #define HAS_FLIPPER_LED //#define FLIPPER_ZERO_HAT //#define HAS_BATTERY @@ -238,6 +248,7 @@ #endif #ifdef MARAUDER_KIT + #define HAS_TOUCH //#define FLIPPER_ZERO_HAT #define HAS_BATTERY #define HAS_BT