mirror of
https://github.com/suchmememanyskill/CYD-Klipper.git
synced 2026-03-21 05:33:24 +00:00
159 lines
4.4 KiB
C++
159 lines
4.4 KiB
C++
#include "lvgl.h"
|
|
#include "wifi_setup.h"
|
|
#include "../conf/global_config.h"
|
|
|
|
#include "WiFi.h"
|
|
void wifi_init_inner();
|
|
|
|
static void reset_btn_event_handler(lv_event_t * e) {
|
|
lv_event_code_t code = lv_event_get_code(e);
|
|
|
|
if(code == LV_EVENT_CLICKED) {
|
|
global_config.wifiConfigured = false;
|
|
wifi_init_inner();
|
|
}
|
|
}
|
|
|
|
static void refresh_btn_event_handler(lv_event_t * e){
|
|
lv_event_code_t code = lv_event_get_code(e);
|
|
|
|
if(code == LV_EVENT_CLICKED) {
|
|
wifi_init_inner();
|
|
}
|
|
}
|
|
|
|
static void ta_event_cb(lv_event_t * e) {
|
|
lv_event_code_t code = lv_event_get_code(e);
|
|
lv_obj_t * ta = lv_event_get_target(e);
|
|
|
|
if (code == LV_EVENT_READY)
|
|
{
|
|
const char * txt = lv_textarea_get_text(ta);
|
|
int len = strlen(txt);
|
|
if (len > 0)
|
|
{
|
|
global_config.wifiConfigured = true;
|
|
strcpy(global_config.wifiPassword, txt);
|
|
WriteGlobalConfig();
|
|
wifi_init_inner();
|
|
}
|
|
}
|
|
else if (code == LV_EVENT_CANCEL)
|
|
{
|
|
wifi_init_inner();
|
|
}
|
|
}
|
|
|
|
void wifi_pass_entry(const char* ssid){
|
|
lv_obj_clean(lv_scr_act());
|
|
|
|
lv_obj_t * label = lv_label_create(lv_scr_act());
|
|
lv_label_set_text(label, "Enter WiFi Password");
|
|
lv_obj_align(label, LV_ALIGN_TOP_LEFT, 10, 10 + 2);
|
|
|
|
lv_obj_t * passEntry = lv_textarea_create(lv_scr_act());
|
|
lv_textarea_set_one_line(passEntry, true);
|
|
lv_textarea_set_text(passEntry, "");
|
|
lv_obj_align(passEntry, LV_ALIGN_TOP_LEFT, 10, 40);
|
|
lv_obj_add_event_cb(passEntry, ta_event_cb, LV_EVENT_ALL, NULL);
|
|
lv_obj_set_size(passEntry, TFT_HEIGHT - 20, 60);
|
|
|
|
lv_obj_t * keyboard = lv_keyboard_create(lv_scr_act());
|
|
lv_keyboard_set_textarea(keyboard, passEntry);
|
|
}
|
|
|
|
static void wifi_btn_event_handler(lv_event_t * e){
|
|
lv_event_code_t code = lv_event_get_code(e);
|
|
|
|
if(code == LV_EVENT_CLICKED) {
|
|
delay(100);
|
|
char* ssid = (char*)e->user_data;
|
|
strcpy(global_config.wifiSSID, ssid);
|
|
Serial.println(ssid);
|
|
wifi_pass_entry(ssid);
|
|
}
|
|
}
|
|
|
|
|
|
void wifi_init_inner(){
|
|
WiFi.disconnect();
|
|
|
|
if (global_config.wifiConfigured){
|
|
WiFi.begin(global_config.wifiSSID, global_config.wifiPassword);
|
|
|
|
lv_obj_clean(lv_scr_act());
|
|
|
|
lv_obj_t * label = lv_label_create(lv_scr_act());
|
|
lv_label_set_text(label, "Connecting to WiFi");
|
|
lv_obj_align(label, LV_ALIGN_CENTER, 0, 0);
|
|
|
|
lv_obj_t * resetBtn = lv_btn_create(lv_scr_act());
|
|
lv_obj_add_event_cb(resetBtn, reset_btn_event_handler, LV_EVENT_ALL, NULL);
|
|
lv_obj_align(resetBtn, LV_ALIGN_CENTER, 0, 40);
|
|
|
|
label = lv_label_create(resetBtn);
|
|
lv_label_set_text(label, "Reset");
|
|
lv_obj_center(label);
|
|
|
|
return;
|
|
}
|
|
|
|
lv_obj_clean(lv_scr_act());
|
|
|
|
lv_obj_t * label = lv_label_create(lv_scr_act());
|
|
lv_label_set_text(label, "Scanning for networks...");
|
|
lv_obj_align(label, LV_ALIGN_CENTER, 0, 0);
|
|
|
|
lv_timer_handler();
|
|
lv_task_handler();
|
|
lv_refr_now(NULL);
|
|
|
|
int n = WiFi.scanNetworks();
|
|
|
|
lv_obj_clean(lv_scr_act());
|
|
|
|
lv_obj_t * refreshBtn = lv_btn_create(lv_scr_act());
|
|
lv_obj_add_event_cb(refreshBtn, reset_btn_event_handler, LV_EVENT_ALL, NULL);
|
|
lv_obj_align(refreshBtn, LV_ALIGN_TOP_RIGHT, -5, 5 - 1);
|
|
|
|
label = lv_label_create(refreshBtn);
|
|
lv_label_set_text(label, LV_SYMBOL_REFRESH);
|
|
lv_obj_center(label);
|
|
|
|
label = lv_label_create(lv_scr_act());
|
|
lv_label_set_text(label, "Select a network");
|
|
lv_obj_align(label, LV_ALIGN_TOP_LEFT, 10, 10 + 2);
|
|
|
|
lv_obj_t * list = lv_list_create(lv_scr_act());
|
|
lv_obj_align(list, LV_ALIGN_TOP_LEFT, 10, 40);
|
|
lv_obj_set_size(list, TFT_HEIGHT - 20, TFT_WIDTH - 40 - 5);
|
|
|
|
for (int i = 0; i < n; ++i) {
|
|
const char* ssid = WiFi.SSID(i).c_str();
|
|
int len = strlen(ssid);
|
|
|
|
if (len == 0)
|
|
continue;
|
|
|
|
const char* ssid_copy = (const char*)malloc(len + 1);
|
|
strcpy((char*)ssid_copy, ssid);
|
|
lv_obj_t * btn = lv_list_add_btn(list, LV_SYMBOL_WIFI, ssid_copy);
|
|
lv_obj_add_event_cb(btn, wifi_btn_event_handler, LV_EVENT_ALL, (void*)ssid_copy);
|
|
}
|
|
}
|
|
|
|
void wifi_init(){
|
|
WiFi.mode(WIFI_STA);
|
|
wifi_init_inner();
|
|
|
|
while (!global_config.wifiConfigured || WiFi.status() != WL_CONNECTED){
|
|
lv_timer_handler();
|
|
lv_task_handler();
|
|
}
|
|
}
|
|
|
|
void wifi_ok(){
|
|
if (WiFi.status() != WL_CONNECTED){
|
|
ESP.restart();
|
|
}
|
|
} |