diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c89b737..4fa5175 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -45,13 +45,16 @@ jobs: path: | ~/.platformio/packages ~/.platformio/platforms + .ccache ${{ matrix.cache_extra }} key: pio-${{ matrix.group }}-${{ hashFiles('platformio.ini') }} restore-keys: | pio-${{ matrix.group }}- - - name: Install PlatformIO + esptool + - name: Install PlatformIO + esptool + ccache run: | + sudo apt update + sudo apt install ccache python -m pip install --upgrade pip pip install --upgrade platformio esptool @@ -62,7 +65,7 @@ jobs: for env in $ENVS; do CMD="$CMD -e $env" done - eval "$CMD" || (sleep 25 && echo "🔄 Retry for ${{ matrix.group }} (network?)" && eval "$CMD") + eval "$CMD" - name: "Upload Artifacts - ${{ matrix.group }}" uses: actions/upload-artifact@v7 diff --git a/.gitignore b/.gitignore index b5273f7..47f9315 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,7 @@ include/web_resources.h release/ managed_components/ sdkconfig* +ccache.exe +.ccache/ +CMakeLists.txt +dependencies.lock diff --git a/data/css/settings.css b/data/css/settings.css index 8ee7812..84ed4e8 100644 --- a/data/css/settings.css +++ b/data/css/settings.css @@ -125,3 +125,10 @@ details summary[role="button"]:focus { opacity: 0.6; transition: opacity 0.2s ease; } + +#btn-switch-ap { + background-color: #eab308; + border-color: #eab308; + color: #111111; + font-weight: bold; +} diff --git a/data/gpio.js b/data/gpio.js index e0e85f7..afc2fb4 100644 --- a/data/gpio.js +++ b/data/gpio.js @@ -1,14 +1,16 @@ function setupPinValidator() { const hardwareLimits = { - "ESP32-C6": { gpio: [0,1,2,3,4,5,6,7,8,10,15,18,19,20,21,22], spi: {6:5} }, - "ESP32-S3": { gpio: [1,2,4,5,6,7,8,10,16,17,18,48], spi: {11:12} }, // GPIO48 = built-in WS2812B + "ESP32-C6": { gpio: [0,1,2,3,4,5,6,7,8,10,15,18,19,20,21,22], spi: {5:4} }, + "ESP32-S3": { gpio: [1,2,4,5,6,7,8,10,16,17,18,48], spi: {5:4} }, // GPIO48 = built-in WS2812B "ESP32-C3": { gpio: [0,1,2,3,4,5,6,7,8,10,20,21], spi: {7:6} }, // GPIO08 = built-in WS2812B - "ESP8266": { gpio: [2], spi: {19:18} }, + "ESP8266": { gpio: [2], spi: {13:14} }, "ESP32": { gpio: null, spi: {23:18} }, - "ESP32-S2": { gpio: null, spi: {11:7} }, - "ESP32-ETH01": { gpio: [2,4,14], spi: {4:14} }, - "ESP32-C2": { gpio: [0,1,2,3,4,5,6,7,10], spi: {7:6} }, - "ESP32-C5": { gpio: [0,1,2,3,4,5,6,7,8,10,11,27], spi: {7:6} } // GPIO27 = built-in WS2812B + "ESP32-S2": { gpio: null, spi: {35:36} }, + "ESP32-ETH01": { gpio: [2,4], spi: {2:4} }, + "ESP32-C2": { gpio: [0,1,2,3,4,5,6,7,10], spi: {7:6} }, + "ESP32-C5": { gpio: [0,1,2,3,4,5,6,7,8,10,11,27], spi: {7:6} }, // GPIO27 = built-in WS2812B + "RP2040": { gpio: null, spi: {19:18} }, + "RP2350": { gpio: null, spi: {19:18} } }; const arch = (typeof cfgDeviceArchitecture !== 'undefined') ? cfgDeviceArchitecture : ""; diff --git a/data/network.js b/data/network.js new file mode 100644 index 0000000..c99b7be --- /dev/null +++ b/data/network.js @@ -0,0 +1,52 @@ +function promptSwitchToAP() { + const dialog = document.createElement('dialog'); + dialog.innerHTML = ` +
+

⚠️ Switch to AP Mode

+

This will reset Hyperk WiFi password and switch to AP after reboot. Are you sure?

+ +
+ `; + document.body.appendChild(dialog); + dialog.showModal(); + + dialog.querySelector('#ap-cancel').addEventListener('click', () => { + dialog.close(); + dialog.remove(); + }); + + dialog.querySelector('#ap-confirm').addEventListener('click', async (e) => { + const btn = e.target; + btn.setAttribute('aria-busy', 'true'); + + try { + const params = new URLSearchParams(); + params.append('reset_wifi', cfgSSID); + + const res = await fetch('/save_config', { + method: 'POST', + body: params + }); + + if (res.ok) { + const data = await res.json(); + showToast(data.status === 'reboot'); + } + } catch (err) { + alert("Error!"); + } finally { + dialog.close(); + dialog.remove(); + } + }); +} + +function setupNetwork() { + const apBtn = document.getElementById('btn-switch-ap'); + if (apBtn) { + apBtn.addEventListener('click', promptSwitchToAP); + } +} diff --git a/data/settings.html b/data/settings.html index 5261cf1..2a79ab7 100644 --- a/data/settings.html +++ b/data/settings.html @@ -110,7 +110,7 @@
White channel calibration
-
+
Network
+
+ +