From 6ff82d7fe4fda121fc6979eb69cea04e0c6532f4 Mon Sep 17 00:00:00 2001 From: kerms Date: Mon, 15 Jul 2024 11:33:45 +0800 Subject: [PATCH] feat(wifi) static IP/DNS --- src/api/apiWifi.ts | 38 +++++++++ src/views/Wifi.vue | 190 ++++++++++++++++++++++++++++++++++++++------- 2 files changed, 199 insertions(+), 29 deletions(-) diff --git a/src/api/apiWifi.ts b/src/api/apiWifi.ts index 43e955f..e857a22 100644 --- a/src/api/apiWifi.ts +++ b/src/api/apiWifi.ts @@ -10,6 +10,8 @@ export enum WifiCmd { WIFI_API_JSON_GET_MODE = 6, WIFI_API_JSON_SET_MODE = 7, WIFI_API_JSON_AP_SET_CRED = 8, + WIFI_API_JSON_STA_GET_STATIC_INFO = 9, + WIFI_API_JSON_STA_SET_STATIC_CONF = 10, } export enum WifiMode { @@ -83,6 +85,8 @@ export interface WifiInfo extends ApiJsonMsg { ip: string; mac: string; netmask: string; + dns_main: string; + dns_backup: string; wifiLogo?: string; } @@ -146,3 +150,37 @@ export function wifi_ap_set_credential(ssid: string, password: string) { } sendJsonMsg(msg); } + +export interface IWifiStaStaticInfo { + static_ip_en: number; + static_dns_en: number; + ip: string; + gateway: string; + netmask: string; + dns_main: string; + dns_backup: string; +} +export function wifi_sta_get_static_info() { + const msg: ApiJsonMsg = { + module: WtModuleID.WIFI, + cmd: WifiCmd.WIFI_API_JSON_STA_GET_STATIC_INFO, + } + sendJsonMsg(msg); +} + +export function wifi_sta_set_static_conf(static_info: IWifiStaStaticInfo) { + const msg: IWifiStaStaticInfo & ApiJsonMsg = { + module: WtModuleID.WIFI, + cmd: WifiCmd.WIFI_API_JSON_STA_SET_STATIC_CONF, + static_dns_en: static_info.static_dns_en, + static_ip_en: static_info.static_ip_en, + ip: static_info.ip, + gateway: static_info.gateway, + netmask: static_info.netmask, + dns_main: static_info.dns_main, + dns_backup: static_info.dns_backup, + } + sendJsonMsg(msg); +} + + diff --git a/src/views/Wifi.vue b/src/views/Wifi.vue index 582d05a..1ceb0b1 100644 --- a/src/views/Wifi.vue +++ b/src/views/Wifi.vue @@ -63,7 +63,7 @@

热点+终端模式并存会影响稳定性。且保持热点开启会增加功耗。

智能模式: - 成功连接Wi-Fi,10秒后自动关闭热点;断开连接,5秒后自动打开热点 + 成功连接Wi-Fi,30秒后自动关闭热点;断开连接,5秒后自动打开热点

热点+终端共存模式: @@ -77,7 +77,7 @@ - + - + - + - {{ wifiStaApInfo.ssid }} +

{{ wifiStaApInfo.ssid }}

@@ -129,21 +129,19 @@ - - - {{ wifiStaApInfo.ip }} - - {{ wifiStaApInfo.mac }} +

{{ wifiStaApInfo.mac }}

+
+ + +

{{ wifiStaApInfo.ip }}

- {{ wifiStaApInfo.gateway }} +

{{ wifiStaApInfo.gateway }}

- - {{ wifiStaApInfo.netmask }} +

{{ wifiStaApInfo.netmask }}

+
+ + +

{{ wifiStaApInfo.dns_main }}

+
+ + +

{{ wifiStaApInfo.dns_backup }}

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 保存 +
({...defWifiInfo}); let wifiApInfo = reactive({...defWifiInfo}); +let wifiStaticInfo = reactive({ + dns_backup: "0.0.0.0", + dns_main: "0.0.0.0", + gateway: "0.0.0.0", + ip: "0.0.0.0", + netmask: "0.0.0.0", + static_dns_en: 0, + static_ip_en: 0, +}); let scanning = ref(false); let scan_cb: any; @@ -349,6 +464,7 @@ const onClientMsg = (msg: ApiJsonMsg) => { if (connectBtnClicked) { connectBtnClicked = 0; globalNotifyRightSide(wifiStaApInfo.ssid + " 连接成功", "success"); + wifi_sta_get_static_info(); } break; } @@ -409,7 +525,6 @@ const onClientMsg = (msg: ApiJsonMsg) => { wifiSta_On.value = false; } } - console.log("@@@", wifiAp_On.value); break; } case WifiCmd.WIFI_API_JSON_AP_SET_CRED: { @@ -423,6 +538,15 @@ const onClientMsg = (msg: ApiJsonMsg) => { break; } + case WifiCmd.WIFI_API_JSON_STA_GET_STATIC_INFO: { + const staticInfo = msg as IWifiStaStaticInfo & ApiJsonMsg; + console.log("@@@", staticInfo); + Object.assign(wifiStaticInfo, staticInfo); + break; + } + case WifiCmd.WIFI_API_JSON_STA_SET_STATIC_CONF: + wifiMode_loading.value = false; + break; default: if (isDevMode()) { console.log(msg); @@ -445,6 +569,7 @@ const onClientCtrl = (msg: ControlMsg) => { wifi_sta_get_ap_info(); wifi_ap_get_info(); wifi_get_mode(); + wifi_sta_get_static_info(); } }; @@ -476,6 +601,7 @@ function beforeWifiModeChange(ap_sta: "AP" | "STA" = "AP") { wifiMode_loading.value = true; wifi_set_mode(wifiSta_On.value ? WifiMode.WIFI_STA_STOP : WifiMode.WIFI_STA_START); } + wifi_sta_get_ap_info(); return false; } @@ -493,6 +619,12 @@ function wifiApChangeCredential() { wifi_ap_set_credential(wifiApInfo.ssid, wifiApInfo.password); } +function wifiStaSetStaticInfo() { + wifiMode_loading.value = true; + wifi_sta_set_static_conf(wifiStaticInfo); + wifi_sta_get_ap_info(); +} + onMounted(() => { registerModule(WtModuleID.WIFI, { ctrlCallback: onClientCtrl, @@ -502,13 +634,13 @@ onMounted(() => { wifi_sta_get_ap_info(); wifi_ap_get_info(); wifi_get_mode(); + wifi_sta_get_static_info(); }); onUnmounted(() => { unregisterModule(WtModuleID.WIFI); }); -