mirror of
https://github.com/suchmememanyskill/CYD-Klipper.git
synced 2026-03-21 05:33:24 +00:00
Initial Commit
This commit is contained in:
152
CYD-Klipper-Display/src/ui/wifi_setup.cpp
Normal file
152
CYD-Klipper-Display/src/ui/wifi_setup.cpp
Normal file
@@ -0,0 +1,152 @@
|
||||
#include "lvgl.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();
|
||||
}
|
||||
}
|
||||
1
CYD-Klipper-Display/src/ui/wifi_setup.h
Normal file
1
CYD-Klipper-Display/src/ui/wifi_setup.h
Normal file
@@ -0,0 +1 @@
|
||||
void wifi_init();
|
||||
Reference in New Issue
Block a user