From f9daf1868d31aa31e02f26e9a8a6a8ea6c7f93c2 Mon Sep 17 00:00:00 2001 From: RobotMan2412 Date: Wed, 8 Jun 2022 16:24:28 +0200 Subject: [PATCH] MORE DEMO APP --- Makefile | 8 +- README.md | 4 +- bootloader_components/appfs | 1 - bootloader_components/main | 1 - main/CMakeLists.txt | 76 +-- main/adc_test.c | 76 --- main/animation.c | 167 ------- main/appfs_wrapper.c | 103 ---- main/audio.c | 92 ---- main/bootscreen.c | 24 - main/button_test.c | 130 ----- main/factory_test.c | 192 -------- main/file_browser.c | 227 --------- main/fpga_download.c | 267 ---------- main/fpga_test.c | 509 -------------------- main/graphics_wrapper.c | 161 ------- main/include/adc_test.h | 9 - main/include/animation.h | 4 - main/include/appfs_wrapper.h | 17 - main/include/audio.h | 3 - main/include/bootscreen.h | 4 - main/include/button_test.h | 9 - main/include/factory_test.h | 10 - main/include/file_browser.h | 9 - main/include/fpga_download.h | 8 - main/include/fpga_test.h | 14 - main/include/graphics_wrapper.h | 16 - main/include/main.h | 0 main/include/menu.h | 65 --- main/include/rp2040_updater.h | 13 - main/include/settings.h | 11 - main/include/system_wrapper.h | 3 - main/include/test_common.h | 28 -- main/include/uninstall.h | 8 - main/include/webusb.h | 8 - main/include/wifi_connect.h | 5 - main/include/wifi_connection.h | 46 -- main/include/wifi_ota.h | 6 - main/main.c | 317 ++---------- main/menu.c | 296 ------------ main/menus/dev.c | 150 ------ main/menus/dev.h | 8 - main/menus/launcher.c | 134 ------ main/menus/launcher.h | 8 - main/menus/settings.c | 144 ------ main/menus/settings.h | 8 - main/menus/start.c | 186 ------- main/menus/start.h | 8 - main/menus/wifi.c | 535 --------------------- main/menus/wifi.h | 8 - main/rp2040_updater.c | 219 --------- main/settings.c | 84 ---- main/system_wrapper.c | 18 - main/test_common.c | 65 --- main/uninstall.c | 120 ----- main/webusb.c | 117 ----- main/wifi_connect.c | 104 ---- main/wifi_connection.c | 272 ----------- main/wifi_ota.c | 227 --------- resources/animation/animation_frame_1.png | Bin 4090 -> 0 bytes resources/animation/animation_frame_10.png | Bin 4390 -> 0 bytes resources/animation/animation_frame_11.png | Bin 4273 -> 0 bytes resources/animation/animation_frame_12.png | Bin 4085 -> 0 bytes resources/animation/animation_frame_13.png | Bin 3885 -> 0 bytes resources/animation/animation_frame_14.png | Bin 3860 -> 0 bytes resources/animation/animation_frame_15.png | Bin 2819 -> 0 bytes resources/animation/animation_frame_16.png | Bin 2763 -> 0 bytes resources/animation/animation_frame_17.png | Bin 2344 -> 0 bytes resources/animation/animation_frame_18.png | Bin 1892 -> 0 bytes resources/animation/animation_frame_19.png | Bin 1464 -> 0 bytes resources/animation/animation_frame_2.png | Bin 4092 -> 0 bytes resources/animation/animation_frame_20.png | Bin 1646 -> 0 bytes resources/animation/animation_frame_21.png | Bin 1740 -> 0 bytes resources/animation/animation_frame_22.png | Bin 1825 -> 0 bytes resources/animation/animation_frame_23.png | Bin 1836 -> 0 bytes resources/animation/animation_frame_24.png | Bin 1215 -> 0 bytes resources/animation/animation_frame_25.png | Bin 706 -> 0 bytes resources/animation/animation_frame_26.png | Bin 468 -> 0 bytes resources/animation/animation_frame_27.png | Bin 395 -> 0 bytes resources/animation/animation_frame_28.png | Bin 164 -> 0 bytes resources/animation/animation_frame_3.png | Bin 4090 -> 0 bytes resources/animation/animation_frame_4.png | Bin 4092 -> 0 bytes resources/animation/animation_frame_5.png | Bin 4090 -> 0 bytes resources/animation/animation_frame_6.png | Bin 4092 -> 0 bytes resources/animation/animation_frame_7.png | Bin 4083 -> 0 bytes resources/animation/animation_frame_8.png | Bin 4432 -> 0 bytes resources/animation/animation_frame_9.png | Bin 4476 -> 0 bytes resources/boot.snd | Bin 75368 -> 0 bytes resources/fpga_selftest.bin | Bin 104090 -> 0 bytes resources/icons/apps.png | Bin 700 -> 0 bytes resources/icons/dev.png | Bin 857 -> 0 bytes resources/icons/hatchery.png | Bin 725 -> 0 bytes resources/icons/home.png | Bin 439 -> 0 bytes resources/icons/settings.png | Bin 1050 -> 0 bytes resources/isrgrootx1.pem | 31 -- resources/logo_screen.png | Bin 25435 -> 0 bytes resources/mch2022_logo.png | Bin 24323 -> 0 bytes resources/rp2040_firmware.bin | Bin 39420 -> 0 bytes resources/wallpaper.png | Bin 190892 -> 0 bytes 99 files changed, 38 insertions(+), 5355 deletions(-) delete mode 120000 bootloader_components/appfs delete mode 120000 bootloader_components/main delete mode 100644 main/adc_test.c delete mode 100644 main/animation.c delete mode 100644 main/appfs_wrapper.c delete mode 100644 main/audio.c delete mode 100644 main/bootscreen.c delete mode 100644 main/button_test.c delete mode 100644 main/factory_test.c delete mode 100644 main/file_browser.c delete mode 100644 main/fpga_download.c delete mode 100644 main/fpga_test.c delete mode 100644 main/graphics_wrapper.c delete mode 100644 main/include/adc_test.h delete mode 100644 main/include/animation.h delete mode 100644 main/include/appfs_wrapper.h delete mode 100644 main/include/audio.h delete mode 100644 main/include/bootscreen.h delete mode 100644 main/include/button_test.h delete mode 100644 main/include/factory_test.h delete mode 100644 main/include/file_browser.h delete mode 100644 main/include/fpga_download.h delete mode 100644 main/include/fpga_test.h delete mode 100644 main/include/graphics_wrapper.h create mode 100644 main/include/main.h delete mode 100644 main/include/menu.h delete mode 100644 main/include/rp2040_updater.h delete mode 100644 main/include/settings.h delete mode 100644 main/include/system_wrapper.h delete mode 100644 main/include/test_common.h delete mode 100644 main/include/uninstall.h delete mode 100644 main/include/webusb.h delete mode 100644 main/include/wifi_connect.h delete mode 100644 main/include/wifi_connection.h delete mode 100644 main/include/wifi_ota.h delete mode 100644 main/menu.c delete mode 100644 main/menus/dev.c delete mode 100644 main/menus/dev.h delete mode 100644 main/menus/launcher.c delete mode 100644 main/menus/launcher.h delete mode 100644 main/menus/settings.c delete mode 100644 main/menus/settings.h delete mode 100644 main/menus/start.c delete mode 100644 main/menus/start.h delete mode 100644 main/menus/wifi.c delete mode 100644 main/menus/wifi.h delete mode 100644 main/rp2040_updater.c delete mode 100644 main/settings.c delete mode 100644 main/system_wrapper.c delete mode 100644 main/test_common.c delete mode 100644 main/uninstall.c delete mode 100644 main/webusb.c delete mode 100644 main/wifi_connect.c delete mode 100644 main/wifi_connection.c delete mode 100644 main/wifi_ota.c delete mode 100644 resources/animation/animation_frame_1.png delete mode 100644 resources/animation/animation_frame_10.png delete mode 100644 resources/animation/animation_frame_11.png delete mode 100644 resources/animation/animation_frame_12.png delete mode 100644 resources/animation/animation_frame_13.png delete mode 100644 resources/animation/animation_frame_14.png delete mode 100644 resources/animation/animation_frame_15.png delete mode 100644 resources/animation/animation_frame_16.png delete mode 100644 resources/animation/animation_frame_17.png delete mode 100644 resources/animation/animation_frame_18.png delete mode 100644 resources/animation/animation_frame_19.png delete mode 100644 resources/animation/animation_frame_2.png delete mode 100644 resources/animation/animation_frame_20.png delete mode 100644 resources/animation/animation_frame_21.png delete mode 100644 resources/animation/animation_frame_22.png delete mode 100644 resources/animation/animation_frame_23.png delete mode 100644 resources/animation/animation_frame_24.png delete mode 100644 resources/animation/animation_frame_25.png delete mode 100644 resources/animation/animation_frame_26.png delete mode 100644 resources/animation/animation_frame_27.png delete mode 100644 resources/animation/animation_frame_28.png delete mode 100644 resources/animation/animation_frame_3.png delete mode 100644 resources/animation/animation_frame_4.png delete mode 100644 resources/animation/animation_frame_5.png delete mode 100644 resources/animation/animation_frame_6.png delete mode 100644 resources/animation/animation_frame_7.png delete mode 100644 resources/animation/animation_frame_8.png delete mode 100644 resources/animation/animation_frame_9.png delete mode 100644 resources/boot.snd delete mode 100644 resources/fpga_selftest.bin delete mode 100644 resources/icons/apps.png delete mode 100644 resources/icons/dev.png delete mode 100644 resources/icons/hatchery.png delete mode 100644 resources/icons/home.png delete mode 100644 resources/icons/settings.png delete mode 100644 resources/isrgrootx1.pem delete mode 100644 resources/logo_screen.png delete mode 100644 resources/mch2022_logo.png delete mode 100755 resources/rp2040_firmware.bin delete mode 100644 resources/wallpaper.png diff --git a/Makefile b/Makefile index 8583a25..a253361 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,7 @@ IDF_PATH ?= $(shell pwd)/esp-idf IDF_EXPORT_QUIET ?= 0 SHELL := /usr/bin/env bash -.PHONY: prepare clean build flash erase monitor menuconfig image qemu install +.PHONY: prepare clean build flash erase monitor menuconfig image all: prepare build flash @@ -35,9 +35,3 @@ image: cd "$(BUILDDIR)"; dd if=bootloader/bootloader.bin bs=1 seek=4096 of=flash.bin conv=notrunc cd "$(BUILDDIR)"; dd if=partition_table/partition-table.bin bs=1 seek=36864 of=flash.bin conv=notrunc cd "$(BUILDDIR)"; dd if=main.bin bs=1 seek=65536 of=flash.bin conv=notrunc - -qemu: image - cd "$(BUILDDIR)"; qemu-system-xtensa -nographic -machine esp32 -drive 'file=flash.bin,if=mtd,format=raw' - -install: flash - diff --git a/README.md b/README.md index 55bf77b..bf0cde2 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# MCH2022 ESP32 firmware: Launcher +# MCH2022 template app -This repository contains the ESP32 part of the firmware for the MCH2022 badge. This firmware allows for device testing, setup, OTA updates and of course launching apps. +This repository contains a template app for the MCH2022 badge. ## License diff --git a/bootloader_components/appfs b/bootloader_components/appfs deleted file mode 120000 index 34b25e4..0000000 --- a/bootloader_components/appfs +++ /dev/null @@ -1 +0,0 @@ -../components/appfs \ No newline at end of file diff --git a/bootloader_components/main b/bootloader_components/main deleted file mode 120000 index d14493a..0000000 --- a/bootloader_components/main +++ /dev/null @@ -1 +0,0 @@ -../components/appfs/bootloader_main \ No newline at end of file diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index fd2f49b..8115b63 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -1,72 +1,6 @@ idf_component_register( - SRCS "main.c" - "appfs_wrapper.c" - "fpga_test.c" - "graphics_wrapper.c" - "menu.c" - "rp2040_updater.c" - "settings.c" - "system_wrapper.c" - "wifi_connection.c" - "wifi_connect.c" - "wifi_ota.c" - "fpga_download.c" - "audio.c" - "bootscreen.c" - "menus/launcher.c" - "menus/settings.c" - "menus/start.c" - "menus/dev.c" - "menus/wifi.c" - "uninstall.c" - "file_browser.c" - "test_common.c" - "factory_test.c" - "animation.c" - "button_test.c" - "adc_test.c" - "webusb.c" - INCLUDE_DIRS "." - "include" - "menus" - EMBED_TXTFILES ${project_dir}/resources/isrgrootx1.pem - EMBED_FILES ${project_dir}/resources/wallpaper.png - ${project_dir}/resources/fpga_selftest.bin - ${project_dir}/resources/rp2040_firmware.bin - ${project_dir}/resources/boot.snd - ${project_dir}/resources/mch2022_logo.png - ${project_dir}/resources/logo_screen.png - ${project_dir}/resources/icons/dev.png - ${project_dir}/resources/icons/home.png - ${project_dir}/resources/icons/settings.png - ${project_dir}/resources/icons/apps.png - ${project_dir}/resources/icons/hatchery.png - ${project_dir}/resources/animation/animation_frame_1.png - ${project_dir}/resources/animation/animation_frame_2.png - ${project_dir}/resources/animation/animation_frame_3.png - ${project_dir}/resources/animation/animation_frame_4.png - ${project_dir}/resources/animation/animation_frame_5.png - ${project_dir}/resources/animation/animation_frame_6.png - ${project_dir}/resources/animation/animation_frame_7.png - ${project_dir}/resources/animation/animation_frame_8.png - ${project_dir}/resources/animation/animation_frame_9.png - ${project_dir}/resources/animation/animation_frame_10.png - ${project_dir}/resources/animation/animation_frame_11.png - ${project_dir}/resources/animation/animation_frame_12.png - ${project_dir}/resources/animation/animation_frame_13.png - ${project_dir}/resources/animation/animation_frame_14.png - ${project_dir}/resources/animation/animation_frame_15.png - ${project_dir}/resources/animation/animation_frame_16.png - ${project_dir}/resources/animation/animation_frame_17.png - ${project_dir}/resources/animation/animation_frame_18.png - ${project_dir}/resources/animation/animation_frame_19.png - ${project_dir}/resources/animation/animation_frame_20.png - ${project_dir}/resources/animation/animation_frame_21.png - ${project_dir}/resources/animation/animation_frame_22.png - ${project_dir}/resources/animation/animation_frame_23.png - ${project_dir}/resources/animation/animation_frame_24.png - ${project_dir}/resources/animation/animation_frame_25.png - ${project_dir}/resources/animation/animation_frame_26.png - ${project_dir}/resources/animation/animation_frame_27.png - ${project_dir}/resources/animation/animation_frame_28.png -) + SRCS + "main.c" + INCLUDE_DIRS + "." "include" +) \ No newline at end of file diff --git a/main/adc_test.c b/main/adc_test.c deleted file mode 100644 index c5db933..0000000 --- a/main/adc_test.c +++ /dev/null @@ -1,76 +0,0 @@ -#include -#include -#include -#include -#include -#include "ili9341.h" -#include "pax_gfx.h" -#include "rp2040.h" -#include "hardware.h" - -void test_adc(xQueueHandle buttonQueue, pax_buf_t* pax_buffer, ILI9341* ili9341) { - bool quit = false; - - RP2040* rp2040 = get_rp2040(); - const pax_font_t* font = pax_get_font("saira regular"); - - while (!quit) { - bool error = false; - - float vbat = 0; - if (rp2040_read_vbat(rp2040, &vbat) != ESP_OK) { - error = true; - } - - float vusb = 0; - if (rp2040_read_vusb(rp2040, &vusb) != ESP_OK) { - error = true; - } - - /*uint16_t raw_temperature = 0; - if (rp2040_read_temp(rp2040, &raw_temperature) != ESP_OK) { - error = true; - } - - uint8_t charging = 0; - if (rp2040_get_charging(rp2040, &charging) != ESP_OK) { - error = true; - }*/ - - //const float conversion_factor = 3.3f / (1 << 12); // 12-bit ADC with 3.3v vref - //float vtemperature = raw_temperature * conversion_factor; // Inside of RP2040 chip - //float temperature = 27 - (vtemperature - 0.706) / 0.001721; // From https://raspberrypi.github.io/pico-sdk-doxygen/group__hardware__adc.html - - - pax_noclip(pax_buffer); - pax_background(pax_buffer, 0x325aa8); - pax_draw_text(pax_buffer, 0xFFFFFFFF, font, 18, 0, 20*0, "Analog inputs"); - char buffer[64]; - snprintf(buffer, sizeof(buffer), "Battery voltage %f v", vbat); - pax_draw_text(pax_buffer, 0xFFFFFFFF, font, 18, 0, 20*1, buffer); - snprintf(buffer, sizeof(buffer), "USB voltage %f v", vusb); - pax_draw_text(pax_buffer, 0xFFFFFFFF, font, 18, 0, 20*2, buffer); - /*snprintf(buffer, sizeof(buffer), "Temperature %f *c", temperature); - pax_draw_text(pax_buffer, 0xFFFFFFFF, font, 18, 0, 20*3, buffer); - snprintf(buffer, sizeof(buffer), "Charging %02X", charging); - pax_draw_text(pax_buffer, 0xFFFFFFFF, font, 18, 0, 20*4, buffer);*/ - pax_draw_text(pax_buffer, 0xFFFFFFFF, font, 18, 0, 20*5, (error ? "ERROR" : "")); - ili9341_write(ili9341, pax_buffer->buf); - - rp2040_input_message_t buttonMessage = {0}; - if (xQueueReceive(buttonQueue, &buttonMessage, 250 / portTICK_PERIOD_MS) == pdTRUE) { - uint8_t pin = buttonMessage.input; - bool value = buttonMessage.state; - if (value) { - switch(pin) { - case RP2040_INPUT_BUTTON_HOME: - case RP2040_INPUT_BUTTON_BACK: - quit = true; - default: - break; - } - } - } - } -} - diff --git a/main/animation.c b/main/animation.c deleted file mode 100644 index a3589db..0000000 --- a/main/animation.c +++ /dev/null @@ -1,167 +0,0 @@ -#include -#include -#include -#include -#include "pax_gfx.h" -#include "pax_codecs.h" -#include "ili9341.h" -#include "ws2812.h" -#include "hardware.h" - -extern const uint8_t animation_frame_1_start[] asm("_binary_animation_frame_1_png_start"); -extern const uint8_t animation_frame_1_end[] asm("_binary_animation_frame_1_png_end"); -extern const uint8_t animation_frame_2_start[] asm("_binary_animation_frame_2_png_start"); -extern const uint8_t animation_frame_2_end[] asm("_binary_animation_frame_2_png_end"); -extern const uint8_t animation_frame_3_start[] asm("_binary_animation_frame_3_png_start"); -extern const uint8_t animation_frame_3_end[] asm("_binary_animation_frame_3_png_end"); -extern const uint8_t animation_frame_4_start[] asm("_binary_animation_frame_4_png_start"); -extern const uint8_t animation_frame_4_end[] asm("_binary_animation_frame_4_png_end"); -extern const uint8_t animation_frame_5_start[] asm("_binary_animation_frame_5_png_start"); -extern const uint8_t animation_frame_5_end[] asm("_binary_animation_frame_5_png_end"); -extern const uint8_t animation_frame_6_start[] asm("_binary_animation_frame_6_png_start"); -extern const uint8_t animation_frame_6_end[] asm("_binary_animation_frame_6_png_end"); -extern const uint8_t animation_frame_7_start[] asm("_binary_animation_frame_7_png_start"); -extern const uint8_t animation_frame_7_end[] asm("_binary_animation_frame_7_png_end"); -extern const uint8_t animation_frame_8_start[] asm("_binary_animation_frame_8_png_start"); -extern const uint8_t animation_frame_8_end[] asm("_binary_animation_frame_8_png_end"); -extern const uint8_t animation_frame_9_start[] asm("_binary_animation_frame_9_png_start"); -extern const uint8_t animation_frame_9_end[] asm("_binary_animation_frame_9_png_end"); -extern const uint8_t animation_frame_10_start[] asm("_binary_animation_frame_10_png_start"); -extern const uint8_t animation_frame_10_end[] asm("_binary_animation_frame_10_png_end"); -extern const uint8_t animation_frame_11_start[] asm("_binary_animation_frame_11_png_start"); -extern const uint8_t animation_frame_11_end[] asm("_binary_animation_frame_11_png_end"); -extern const uint8_t animation_frame_12_start[] asm("_binary_animation_frame_12_png_start"); -extern const uint8_t animation_frame_12_end[] asm("_binary_animation_frame_12_png_end"); -extern const uint8_t animation_frame_13_start[] asm("_binary_animation_frame_13_png_start"); -extern const uint8_t animation_frame_13_end[] asm("_binary_animation_frame_13_png_end"); -extern const uint8_t animation_frame_14_start[] asm("_binary_animation_frame_14_png_start"); -extern const uint8_t animation_frame_14_end[] asm("_binary_animation_frame_14_png_end"); -extern const uint8_t animation_frame_15_start[] asm("_binary_animation_frame_15_png_start"); -extern const uint8_t animation_frame_15_end[] asm("_binary_animation_frame_15_png_end"); -extern const uint8_t animation_frame_16_start[] asm("_binary_animation_frame_16_png_start"); -extern const uint8_t animation_frame_16_end[] asm("_binary_animation_frame_16_png_end"); -extern const uint8_t animation_frame_17_start[] asm("_binary_animation_frame_17_png_start"); -extern const uint8_t animation_frame_17_end[] asm("_binary_animation_frame_17_png_end"); -extern const uint8_t animation_frame_18_start[] asm("_binary_animation_frame_18_png_start"); -extern const uint8_t animation_frame_18_end[] asm("_binary_animation_frame_18_png_end"); -extern const uint8_t animation_frame_19_start[] asm("_binary_animation_frame_19_png_start"); -extern const uint8_t animation_frame_19_end[] asm("_binary_animation_frame_19_png_end"); -extern const uint8_t animation_frame_20_start[] asm("_binary_animation_frame_20_png_start"); -extern const uint8_t animation_frame_20_end[] asm("_binary_animation_frame_20_png_end"); -extern const uint8_t animation_frame_21_start[] asm("_binary_animation_frame_21_png_start"); -extern const uint8_t animation_frame_21_end[] asm("_binary_animation_frame_21_png_end"); -extern const uint8_t animation_frame_22_start[] asm("_binary_animation_frame_22_png_start"); -extern const uint8_t animation_frame_22_end[] asm("_binary_animation_frame_22_png_end"); -extern const uint8_t animation_frame_23_start[] asm("_binary_animation_frame_23_png_start"); -extern const uint8_t animation_frame_23_end[] asm("_binary_animation_frame_23_png_end"); -extern const uint8_t animation_frame_24_start[] asm("_binary_animation_frame_24_png_start"); -extern const uint8_t animation_frame_24_end[] asm("_binary_animation_frame_24_png_end"); -extern const uint8_t animation_frame_25_start[] asm("_binary_animation_frame_25_png_start"); -extern const uint8_t animation_frame_25_end[] asm("_binary_animation_frame_25_png_end"); -extern const uint8_t animation_frame_26_start[] asm("_binary_animation_frame_26_png_start"); -extern const uint8_t animation_frame_26_end[] asm("_binary_animation_frame_26_png_end"); -extern const uint8_t animation_frame_27_start[] asm("_binary_animation_frame_27_png_start"); -extern const uint8_t animation_frame_27_end[] asm("_binary_animation_frame_27_png_end"); -extern const uint8_t animation_frame_28_start[] asm("_binary_animation_frame_28_png_start"); -extern const uint8_t animation_frame_28_end[] asm("_binary_animation_frame_28_png_end"); - -const uint8_t* animation_frames[] = { - animation_frame_1_start, - animation_frame_2_start, - animation_frame_3_start, - animation_frame_4_start, - animation_frame_5_start, - animation_frame_6_start, - animation_frame_7_start, - animation_frame_8_start, - animation_frame_9_start, - animation_frame_10_start, - animation_frame_11_start, - animation_frame_12_start, - animation_frame_13_start, - animation_frame_14_start, - animation_frame_15_start, - animation_frame_16_start, - animation_frame_17_start, - animation_frame_18_start, - animation_frame_19_start, - animation_frame_20_start, - animation_frame_21_start, - animation_frame_22_start, - animation_frame_23_start, - animation_frame_24_start, - animation_frame_25_start, - animation_frame_26_start, - animation_frame_27_start, - animation_frame_28_start -}; - -const uint8_t* animation_frames_end[] = { - animation_frame_1_end, - animation_frame_2_end, - animation_frame_3_end, - animation_frame_4_end, - animation_frame_5_end, - animation_frame_6_end, - animation_frame_7_end, - animation_frame_8_end, - animation_frame_9_end, - animation_frame_10_end, - animation_frame_11_end, - animation_frame_12_end, - animation_frame_13_end, - animation_frame_14_end, - animation_frame_15_end, - animation_frame_16_end, - animation_frame_17_end, - animation_frame_18_end, - animation_frame_19_end, - animation_frame_20_end, - animation_frame_21_end, - animation_frame_22_end, - animation_frame_23_end, - animation_frame_24_end, - animation_frame_25_end, - animation_frame_26_end, - animation_frame_27_end, - animation_frame_28_end -}; - -void display_animation(pax_buf_t* pax_buffer, ILI9341* ili9341) { - - gpio_set_direction(GPIO_SD_PWR, GPIO_MODE_OUTPUT); - gpio_set_level(GPIO_SD_PWR, 1); - ws2812_init(GPIO_LED_DATA); - uint8_t led_data[15] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - ws2812_send_data(led_data, sizeof(led_data)); - - pax_noclip(pax_buffer); - pax_background(pax_buffer, 0xFFFFFF); - - for (uint8_t frame = 0; frame < 28; frame++) { - pax_buf_t image; - pax_decode_png_buf(&image, (void*) animation_frames[frame], animation_frames_end[frame] - animation_frames[frame], PAX_BUF_16_565RGB, 0); - pax_draw_image(pax_buffer, &image, 0, 0); - pax_buf_destroy(&image); - ili9341_write(ili9341, pax_buffer->buf); - uint8_t brightness = (frame > 14) ? (frame - 14) : (0); - led_data[1] = brightness; - led_data[3] = brightness; - led_data[8] = brightness; - led_data[9] = brightness / 2; - led_data[10] = brightness / 2; - led_data[14] = brightness; - ws2812_send_data(led_data, sizeof(led_data)); - } - - for (uint8_t brightness = 14; brightness < 50; brightness++) { - led_data[1] = brightness; - led_data[3] = brightness; - led_data[8] = brightness; - led_data[9] = brightness / 2; - led_data[10] = brightness / 2; - led_data[14] = brightness; - ws2812_send_data(led_data, sizeof(led_data)); - vTaskDelay(50 / portTICK_PERIOD_MS); - } -} diff --git a/main/appfs_wrapper.c b/main/appfs_wrapper.c deleted file mode 100644 index c4c022d..0000000 --- a/main/appfs_wrapper.c +++ /dev/null @@ -1,103 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "appfs.h" -#include "ili9341.h" -#include "pax_gfx.h" -#include "menu.h" -#include "rp2040.h" -#include "appfs_wrapper.h" -#include "hardware.h" -#include "system_wrapper.h" -#include "bootscreen.h" -#include "esp_sleep.h" -#include "soc/rtc.h" -#include "soc/rtc_cntl_reg.h" - -static const char *TAG = "appfs wrapper"; - -esp_err_t appfs_init(void) { - return appfsInit(APPFS_PART_TYPE, APPFS_PART_SUBTYPE); -} - -uint8_t* load_file_to_ram(FILE* fd, size_t* fsize) { - fseek(fd, 0, SEEK_END); - *fsize = ftell(fd); - fseek(fd, 0, SEEK_SET); - uint8_t* file = malloc(*fsize); - if (file == NULL) return NULL; - fread(file, *fsize, 1, fd); - return file; -} - -void appfs_boot_app(int fd) { - if (fd<0 || fd>255) { - REG_WRITE(RTC_CNTL_STORE0_REG, 0); - } else { - REG_WRITE(RTC_CNTL_STORE0_REG, 0xA5000000|fd); - } - - esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_SLOW_MEM, ESP_PD_OPTION_ON); - esp_sleep_enable_timer_wakeup(10); - esp_deep_sleep_start(); -} - -void appfs_store_app(pax_buf_t* pax_buffer, ILI9341* ili9341, char* path, char* label) { - display_boot_screen(pax_buffer, ili9341, "Installing app..."); - esp_err_t res; - appfs_handle_t handle; - FILE* app_fd = fopen(path, "rb"); - if (app_fd == NULL) { - display_boot_screen(pax_buffer, ili9341, "Failed to open file"); - ESP_LOGE(TAG, "Failed to open file"); - vTaskDelay(100 / portTICK_PERIOD_MS); - return; - } - size_t app_size; - uint8_t* app = load_file_to_ram(app_fd, &app_size); - if (app == NULL) { - display_boot_screen(pax_buffer, ili9341, "Failed to load app to RAM"); - ESP_LOGE(TAG, "Failed to load application into RAM"); - vTaskDelay(100 / portTICK_PERIOD_MS); - return; - } - - ESP_LOGI(TAG, "Application size %d", app_size); - - res = appfsCreateFile(label, app_size, &handle); - if (res != ESP_OK) { - display_boot_screen(pax_buffer, ili9341, "Failed to create file"); - ESP_LOGE(TAG, "Failed to create file on AppFS (%d)", res); - vTaskDelay(100 / portTICK_PERIOD_MS); - free(app); - return; - } - int roundedSize=(app_size+(SPI_FLASH_MMU_PAGE_SIZE-1))&(~(SPI_FLASH_MMU_PAGE_SIZE-1)); - res = appfsErase(handle, 0, roundedSize); - if (res != ESP_OK) { - display_boot_screen(pax_buffer, ili9341, "Failed to erase file"); - ESP_LOGE(TAG, "Failed to erase file on AppFS (%d)", res); - vTaskDelay(100 / portTICK_PERIOD_MS); - free(app); - return; - } - res = appfsWrite(handle, 0, app, app_size); - if (res != ESP_OK) { - display_boot_screen(pax_buffer, ili9341, "Failed to write file"); - ESP_LOGE(TAG, "Failed to write to file on AppFS (%d)", res); - vTaskDelay(100 / portTICK_PERIOD_MS); - free(app); - return; - } - free(app); - ESP_LOGI(TAG, "Application is now stored in AppFS"); - display_boot_screen(pax_buffer, ili9341, "App installed!"); - vTaskDelay(100 / portTICK_PERIOD_MS); - return; -} diff --git a/main/audio.c b/main/audio.c deleted file mode 100644 index d40d2cb..0000000 --- a/main/audio.c +++ /dev/null @@ -1,92 +0,0 @@ -#include "audio.h" - -#include "freertos/FreeRTOS.h" -#include -#include "esp_system.h" -#include "driver/i2s.h" -#include "driver/rtc_io.h" - -#include -#include - -void _audio_init(int i2s_num) { - i2s_config_t i2s_config = { - .mode = I2S_MODE_MASTER | I2S_MODE_TX, - .sample_rate = 8000, - .bits_per_sample = I2S_BITS_PER_SAMPLE_16BIT, - .channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT, - .communication_format = I2S_COMM_FORMAT_I2S | I2S_COMM_FORMAT_I2S_MSB, - .dma_buf_count = 8, - .dma_buf_len = 256, - .intr_alloc_flags = 0, - .use_apll = false, - .bits_per_chan = I2S_BITS_PER_SAMPLE_16BIT - }; - - i2s_driver_install(i2s_num, &i2s_config, 0, NULL); - - i2s_pin_config_t pin_config = { - .mck_io_num = 0, - .bck_io_num = 4, - .ws_io_num = 12, - .data_out_num = 13, - .data_in_num = I2S_PIN_NO_CHANGE - }; - - i2s_set_pin(i2s_num, &pin_config); -} - -typedef struct _audio_player_cfg { - uint8_t* buffer; - size_t size; - bool free_buffer; -} audio_player_cfg_t; - -void audio_player_task(void* arg) { - audio_player_cfg_t* config = (audio_player_cfg_t*) arg; - size_t sample_length = config->size; - uint8_t* sample_buffer = config->buffer; - - size_t count; - size_t position = 0; - - while (position < sample_length) { - size_t length = sample_length - position; - if (length > 256) length = 256; - uint8_t buffer[256]; - memcpy(buffer, &sample_buffer[position], length); - for (size_t l = 0; l < length; l+=2) { - int16_t* sample = (int16_t*) &buffer[l]; - *sample *= 0.50; - } - i2s_write(0, buffer, length, &count, portMAX_DELAY); - if (count != length) { - printf("i2s_write_bytes: count (%d) != length (%d)\n", count, length); - abort(); - } - position += length; - } - - i2s_zero_dma_buffer(0); // Fill buffer with silence - if (config->free_buffer) free(sample_buffer); - vTaskDelete(NULL); // Tell FreeRTOS that the task is done -} - -void audio_init() { - _audio_init(0); -} - -extern const uint8_t boot_snd_start[] asm("_binary_boot_snd_start"); -extern const uint8_t boot_snd_end[] asm("_binary_boot_snd_end"); - -audio_player_cfg_t bootsound; - -void play_bootsound() { - TaskHandle_t handle; - - bootsound.buffer = boot_snd_start, - bootsound.size = boot_snd_end - boot_snd_start; - bootsound.free_buffer = false; - - xTaskCreate(&audio_player_task, "Audio player", 4096, (void*) &bootsound, 10, &handle); -} diff --git a/main/bootscreen.c b/main/bootscreen.c deleted file mode 100644 index c1fd43f..0000000 --- a/main/bootscreen.c +++ /dev/null @@ -1,24 +0,0 @@ -#include -#include -#include -#include "pax_gfx.h" -#include "pax_codecs.h" -#include "ili9341.h" - -extern const uint8_t mch2022_logo_png_start[] asm("_binary_mch2022_logo_png_start"); -extern const uint8_t mch2022_logo_png_end[] asm("_binary_mch2022_logo_png_end"); - -void display_boot_screen(pax_buf_t* pax_buffer, ILI9341* ili9341, const char* text) { - const pax_font_t *font = pax_get_font("saira regular"); - - pax_noclip(pax_buffer); - pax_background(pax_buffer, 0xFFFFFF); - pax_buf_t logo; - pax_decode_png_buf(&logo, (void*) mch2022_logo_png_start, mch2022_logo_png_end - mch2022_logo_png_start, PAX_BUF_16_565RGB, 0); - pax_draw_image(pax_buffer, &logo, (320 / 2) - (212 / 2), ((240 - 32 - 10) / 2) - (160 / 2)); - pax_buf_destroy(&logo); - - pax_vec1_t size = pax_text_size(font, 18, text); - pax_draw_text(pax_buffer, 0xFF000000, font, 18, (320 / 2) - (size.x / 2), 240 - 32, text); - ili9341_write(ili9341, pax_buffer->buf); -} diff --git a/main/button_test.c b/main/button_test.c deleted file mode 100644 index 43b7a1b..0000000 --- a/main/button_test.c +++ /dev/null @@ -1,130 +0,0 @@ -#include -#include -#include -#include -#include -#include "ili9341.h" -#include "pax_gfx.h" -#include "rp2040.h" - -void test_buttons(xQueueHandle buttonQueue, pax_buf_t* pax_buffer, ILI9341* ili9341) { - bool render = true; - bool quit = false; - - bool btn_joy_down = false; - bool btn_joy_up = false; - bool btn_joy_left = false; - bool btn_joy_right = false; - bool btn_joy_press = false; - bool btn_home = false; - bool btn_menu = false; - bool btn_select = false; - bool btn_start = false; - bool btn_accept = false; - bool btn_back = false; - - bool btn_joy_down_green = false; - bool btn_joy_up_green = false; - bool btn_joy_left_green = false; - bool btn_joy_right_green = false; - bool btn_joy_press_green = false; - bool btn_home_green = false; - bool btn_menu_green = false; - bool btn_select_green = false; - bool btn_start_green = false; - bool btn_accept_green = false; - bool btn_back_green = false; - - - while (!quit) { - rp2040_input_message_t buttonMessage = {0}; - if (xQueueReceive(buttonQueue, &buttonMessage, 16 / portTICK_PERIOD_MS) == pdTRUE) { - uint8_t pin = buttonMessage.input; - bool value = buttonMessage.state; - render = true; - switch(pin) { - case RP2040_INPUT_JOYSTICK_DOWN: - btn_joy_down = value; - if (value) btn_joy_down_green = true; - break; - case RP2040_INPUT_JOYSTICK_UP: - btn_joy_up = value; - if (value) btn_joy_up_green = true; - break; - case RP2040_INPUT_JOYSTICK_LEFT: - btn_joy_left = value; - if (value) btn_joy_left_green = true; - break; - case RP2040_INPUT_JOYSTICK_RIGHT: - btn_joy_right = value; - if (value) btn_joy_right_green = true; - break; - case RP2040_INPUT_JOYSTICK_PRESS: - btn_joy_press = value; - if (value) btn_joy_press_green = true; - break; - case RP2040_INPUT_BUTTON_HOME: - btn_home = value; - if (value) btn_home_green = true; - break; - case RP2040_INPUT_BUTTON_MENU: - btn_menu = value; - if (value) btn_menu_green = true; - break; - case RP2040_INPUT_BUTTON_SELECT: - btn_select = value; - if (value) btn_select_green = true; - break; - case RP2040_INPUT_BUTTON_START: - btn_start = value; - if (value) btn_start_green = true; - break; - case RP2040_INPUT_BUTTON_ACCEPT: - btn_accept = value; - if (value) btn_accept_green = true; - break; - case RP2040_INPUT_BUTTON_BACK: - btn_back = value; - if (value) btn_back_green = true; - default: - break; - } - } - - if (render) { - pax_noclip(pax_buffer); - pax_background(pax_buffer, 0x325aa8); - pax_draw_text(pax_buffer, 0xFFFFFFFF, NULL, 18, 0, 20*0, "Press HOME + START to exit"); - char buffer[64]; - snprintf(buffer, sizeof(buffer), "JOY DOWN %s", btn_joy_down ? "PRESSED" : "released"); - pax_draw_text(pax_buffer, btn_joy_down_green ? 0xFF00FF00 : 0xFFFFFFFF, NULL, 18, 0, 20*1, buffer); - snprintf(buffer, sizeof(buffer), "JOY UP %s", btn_joy_up ? "PRESSED" : "released"); - pax_draw_text(pax_buffer, btn_joy_up_green ? 0xFF00FF00 : 0xFFFFFFFF, NULL, 18, 0, 20*2, buffer); - snprintf(buffer, sizeof(buffer), "JOY LEFT %s", btn_joy_left ? "PRESSED" : "released"); - pax_draw_text(pax_buffer, btn_joy_right_green ? 0xFF00FF00 : 0xFFFFFFFF, NULL, 18, 0, 20*3, buffer); - snprintf(buffer, sizeof(buffer), "JOY RIGHT %s", btn_joy_right ? "PRESSED" : "released"); - pax_draw_text(pax_buffer, btn_joy_left_green ? 0xFF00FF00 : 0xFFFFFFFF, NULL, 18, 0, 20*4, buffer); - snprintf(buffer, sizeof(buffer), "JOY PRESS %s", btn_joy_press ? "PRESSED" : "released"); - pax_draw_text(pax_buffer, btn_joy_press_green ? 0xFF00FF00 : 0xFFFFFFFF, NULL, 18, 0, 20*5, buffer); - snprintf(buffer, sizeof(buffer), "BTN HOME %s", btn_home ? "PRESSED" : "released"); - pax_draw_text(pax_buffer, btn_home_green ? 0xFF00FF00 : 0xFFFFFFFF, NULL, 18, 0, 20*6, buffer); - snprintf(buffer, sizeof(buffer), "BTN MENU %s", btn_menu ? "PRESSED" : "released"); - pax_draw_text(pax_buffer, btn_menu_green ? 0xFF00FF00 : 0xFFFFFFFF, NULL, 18, 0, 20*7, buffer); - snprintf(buffer, sizeof(buffer), "BTN SELECT %s", btn_select ? "PRESSED" : "released"); - pax_draw_text(pax_buffer, btn_select_green ? 0xFF00FF00 : 0xFFFFFFFF, NULL, 18, 0, 20*8, buffer); - snprintf(buffer, sizeof(buffer), "BTN START %s", btn_start ? "PRESSED" : "released"); - pax_draw_text(pax_buffer, btn_start_green ? 0xFF00FF00 : 0xFFFFFFFF, NULL, 18, 0, 20*9, buffer); - snprintf(buffer, sizeof(buffer), "BTN A %s", btn_accept ? "PRESSED" : "released"); - pax_draw_text(pax_buffer, btn_accept_green ? 0xFF00FF00 : 0xFFFFFFFF, NULL, 18, 0, 20*10, buffer); - snprintf(buffer, sizeof(buffer), "BTN B %s", btn_back ? "PRESSED" : "released"); - pax_draw_text(pax_buffer, btn_back_green ? 0xFF00FF00 : 0xFFFFFFFF, NULL, 18, 0, 20*11, buffer); - ili9341_write(ili9341, pax_buffer->buf); - render = false; - } - - if (btn_home && btn_start) { - quit = true; - } - } -} - diff --git a/main/factory_test.c b/main/factory_test.c deleted file mode 100644 index 4e154c4..0000000 --- a/main/factory_test.c +++ /dev/null @@ -1,192 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include "hardware.h" -#include "ili9341.h" -#include "ice40.h" -#include "rp2040.h" -#include "fpga_test.h" -#include "pax_gfx.h" -#include "test_common.h" -#include "settings.h" -#include "ws2812.h" -#include "audio.h" - -static const char *TAG = "factory"; - -/* Test routines */ - -bool test_rp2040_init(uint32_t* rc) { - esp_err_t res = bsp_rp2040_init(); - *rc = (uint32_t) res; - return (res == ESP_OK); -} - -bool test_ice40_init(uint32_t* rc) { - esp_err_t res = bsp_ice40_init(); - *rc = (uint32_t) res; - return (res == ESP_OK); -} - -bool test_bno055_init(uint32_t* rc) { - esp_err_t res = bsp_bno055_init(); - *rc = (uint32_t) res; - return (res == ESP_OK); -} - -bool test_bme680_init(uint32_t* rc) { - esp_err_t res = bsp_bme680_init(); - *rc = (uint32_t) res; - return (res == ESP_OK); -} - -bool test_stuck_buttons(uint32_t* rc) { - RP2040* rp2040 = get_rp2040(); - uint16_t state; - esp_err_t res = rp2040_read_buttons(rp2040, &state); - if (res != ESP_OK) { - *rc = 0xFFFFFFFF; - return false; - } - - state &= ~(1 << RP2040_INPUT_FPGA_CDONE); // Ignore FPGA CDONE - - *rc = state; - - return (state == 0x0000); -} - -bool test_adc_vbat(uint32_t* rc) { - float value = 0; - esp_err_t res = rp2040_read_vbat(get_rp2040(), &value); - *rc = value * 100; - return ((res == ESP_OK) && (value < 4.3) && (value > 3.9)); -} - -bool test_adc_vusb(uint32_t* rc) { - float value = 0; - esp_err_t res = rp2040_read_vusb(get_rp2040(), &value); - *rc = value * 100; - return ((res == ESP_OK) && (value > 4.5)); -} - -bool test_sd_power(uint32_t* rc) { - *rc = 0x00000000; - // Init all GPIO pins for SD card and LED - if (gpio_reset_pin(GPIO_SD_PWR) != ESP_OK) return false; - if (gpio_set_direction(GPIO_SD_PWR, GPIO_MODE_INPUT) != ESP_OK) return false; - if (gpio_reset_pin(GPIO_SD_CMD) != ESP_OK) return false; - if (gpio_set_direction(GPIO_SD_CMD, GPIO_MODE_INPUT) != ESP_OK) return false; - if (gpio_reset_pin(GPIO_SD_CLK) != ESP_OK) return false; - if (gpio_set_direction(GPIO_SD_CLK, GPIO_MODE_INPUT) != ESP_OK) return false; - if (gpio_reset_pin(GPIO_SD_D0) != ESP_OK) return false; - if (gpio_set_direction(GPIO_SD_D0, GPIO_MODE_INPUT) != ESP_OK) return false; - if (gpio_reset_pin(GPIO_LED_DATA) != ESP_OK) return false; - if (gpio_set_direction(GPIO_LED_DATA, GPIO_MODE_INPUT) != ESP_OK) return false; - - if (gpio_get_level(GPIO_SD_PWR)) {*rc = 0x01; return false;} // Check that power enable is pulled low - - if (gpio_set_direction(GPIO_SD_PWR, GPIO_MODE_OUTPUT) != ESP_OK) return false; - if (gpio_set_level(GPIO_SD_PWR, 1) != ESP_OK) return false; - - vTaskDelay(10 / portTICK_PERIOD_MS); - - // SD pins should be pulled high - if (!gpio_get_level(GPIO_SD_CMD)) {*rc = 0x02; return false;} - if (!gpio_get_level(GPIO_SD_CLK)) {*rc = 0x04; return false;} - if (!gpio_get_level(GPIO_SD_D0)) {*rc = 0x08; return false;} - - return true; -} - -bool run_basic_tests(pax_buf_t* pax_buffer, ILI9341* ili9341) { - const pax_font_t *font; - int line = 0; - bool ok = true; - - /* Screen init */ - font = pax_get_font("sky mono"); - - pax_noclip(pax_buffer); - pax_background(pax_buffer, 0x8060f0); - ili9341_write(ili9341, pax_buffer->buf); - - /* Run mandatory tests */ - RUN_TEST_MANDATORY("RP2040", test_rp2040_init); - RUN_TEST_MANDATORY("ICE40", test_ice40_init); - RUN_TEST_MANDATORY("BNO055", test_bno055_init); - RUN_TEST_MANDATORY("BME680", test_bme680_init); - - /* Run tests */ - RUN_TEST("STUCK BUTTONS", test_stuck_buttons); - RUN_TEST("SD/LED POWER", test_sd_power); - RUN_TEST("Battery voltage", test_adc_vbat); - RUN_TEST("USB voltage", test_adc_vusb); - - -error: - /* Fail result on screen */ - if (!ok) pax_draw_text(pax_buffer, 0xffff0000, font, 36, 0, 20*line, "FAIL"); - ili9341_write(ili9341, pax_buffer->buf); - return ok; -} - -const uint8_t led_green[15] = {50, 0, 0, 50, 0, 0, 50, 0, 0, 50, 0, 0, 50, 0, 0}; -const uint8_t led_red[15] = {0, 50, 0, 0, 50, 0, 0, 50, 0, 0, 50, 0, 0, 50, 0}; -const uint8_t led_blue[15] = {0, 0, 50, 0, 0, 50, 0, 0, 50, 0, 0, 50, 0, 0, 50}; - -void factory_test(pax_buf_t* pax_buffer, ILI9341* ili9341) { - uint8_t factory_test_done = nvs_get_u8_default("system", "factory_test", 0); - if (!factory_test_done) { - bool result; - - ESP_LOGI(TAG, "Factory test start"); - - result = run_basic_tests(pax_buffer, ili9341); - - gpio_set_direction(GPIO_SD_PWR, GPIO_MODE_OUTPUT); - gpio_set_level(GPIO_SD_PWR, 1); - ws2812_init(GPIO_LED_DATA); - if (result) { - ws2812_send_data(led_blue, sizeof(led_blue)); - } else { - ws2812_send_data(led_red, sizeof(led_red)); - } - - if (!result) goto test_end; - - RP2040* rp2040 = get_rp2040(); - - result = run_fpga_tests(rp2040->queue, pax_buffer, ili9341); - if (!result) { - ws2812_send_data(led_red, sizeof(led_red)); - goto test_end; - } - - ws2812_send_data(led_green, sizeof(led_green)); - - // Wait for the operator to unplug the badge - test_end: - - if (result) { - esp_err_t res = nvs_set_u8_fixed("system", "factory_test", 1); - if (res != ESP_OK) { - ESP_LOGE(TAG, "Failed to store test result %d\n", res); - result = false; - ws2812_send_data(led_red, sizeof(led_red)); - pax_noclip(pax_buffer); - pax_background(pax_buffer, 0xa85a32); - ili9341_write(ili9341, pax_buffer->buf); - } - } - - while (true) { - if (result) play_bootsound(); - vTaskDelay(3000 / portTICK_PERIOD_MS); - } - } -} diff --git a/main/file_browser.c b/main/file_browser.c deleted file mode 100644 index 5adf658..0000000 --- a/main/file_browser.c +++ /dev/null @@ -1,227 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "esp_vfs.h" -#include "esp_vfs_fat.h" -#include "appfs.h" -#include "ili9341.h" -#include "pax_gfx.h" -#include "menu.h" -#include "rp2040.h" -#include "appfs_wrapper.h" -#include "bootscreen.h" - -static const char *TAG = "file browser"; - -void list_files_in_folder(const char* path) { - DIR* dir = opendir(path); - if (dir == NULL) { - ESP_LOGE(TAG, "Failed to open directory %s", path); - return; - } - - struct dirent *ent; - char type; - char size[12]; - char tpath[255]; - char tbuffer[80]; - struct stat sb; - struct tm *tm_info; - char *lpath = NULL; - int statok; - - uint64_t total = 0; - int nfiles = 0; - printf("T Size Date/Time Name\n"); - printf("-----------------------------------\n"); - while ((ent = readdir(dir)) != NULL) { - sprintf(tpath, path); - if (path[strlen(path)-1] != '/') { - strcat(tpath,"/"); - } - strcat(tpath,ent->d_name); - tbuffer[0] = '\0'; - - // Get file stat - statok = stat(tpath, &sb); - - if (statok == 0) { - tm_info = localtime(&sb.st_mtime); - strftime(tbuffer, 80, "%d/%m/%Y %R", tm_info); - } else { - sprintf(tbuffer, " "); - } - - if (ent->d_type == DT_REG) { - type = 'f'; - nfiles++; - if (statok) { - strcpy(size, " ?"); - } else { - total += sb.st_size; - if (sb.st_size < (1024*1024)) sprintf(size,"%8d", (int)sb.st_size); - else if ((sb.st_size/1024) < (1024*1024)) sprintf(size,"%6dKB", (int)(sb.st_size / 1024)); - else sprintf(size,"%6dMB", (int)(sb.st_size / (1024 * 1024))); - } - } else { - type = 'd'; - strcpy(size, " -"); - } - - printf("%c %s %s %s\r\n", type, size, tbuffer, ent->d_name); - } - - printf("-----------------------------------\n"); - if (total < (1024*1024)) printf(" %8d", (int)total); - else if ((total/1024) < (1024*1024)) printf(" %6dKB", (int)(total / 1024)); - else printf(" %6dMB", (int)(total / (1024 * 1024))); - printf(" in %d file(s)\n", nfiles); - printf("-----------------------------------\n"); - - closedir(dir); - free(lpath); -} - -typedef struct _file_browser_menu_args { - char type; - char path[512]; - char label[512]; -} file_browser_menu_args_t; - -void find_parent_dir(char* path, char* parent) { - size_t last_separator = 0; - for (size_t index = 0; index < strlen(path); index++) { - if (path[index] == '/') last_separator = index; - } - - strcpy(parent, path); - parent[last_separator] = '\0'; -} - -void file_browser(xQueueHandle buttonQueue, pax_buf_t* pax_buffer, ILI9341* ili9341, const char* initial_path) { - display_boot_screen(pax_buffer, ili9341, "Please wait..."); - char path[512] = {0}; - strncpy(path, initial_path, sizeof(path)); - while (true) { - menu_t* menu = menu_alloc(path, 20, 18); - DIR* dir = opendir(path); - if (dir == NULL) { - if (path[0] != 0) { - ESP_LOGE(TAG, "Failed to open directory %s", path); - display_boot_screen(pax_buffer, ili9341, "Failed to open directory"); - vTaskDelay(200 / portTICK_PERIOD_MS); - } - return; - } - struct dirent *ent; - file_browser_menu_args_t* pd_args = malloc(sizeof(file_browser_menu_args_t)); - pd_args->type = 'd'; - find_parent_dir(path, pd_args->path); - menu_insert_item(menu, "../", NULL, pd_args, -1); - - while ((ent = readdir(dir)) != NULL) { - file_browser_menu_args_t* args = malloc(sizeof(file_browser_menu_args_t)); - sprintf(args->path, path); - if (path[strlen(path)-1] != '/') { - strcat(args->path,"/"); - } - strcat(args->path,ent->d_name); - - if (ent->d_type == DT_REG) { - args->type = 'f'; - } else { - args->type = 'd'; - } - - snprintf(args->label, sizeof(args->label), "%s%s", ent->d_name, (args->type == 'd') ? "/" : ""); - menu_insert_item(menu, args->label, NULL, args, -1); - } - closedir(dir); - - bool render = true; - bool renderbg = true; - bool exit = false; - file_browser_menu_args_t* menuArgs = NULL; - - while (1) { - rp2040_input_message_t buttonMessage = {0}; - if (xQueueReceive(buttonQueue, &buttonMessage, 16 / portTICK_PERIOD_MS) == pdTRUE) { - uint8_t pin = buttonMessage.input; - bool value = buttonMessage.state; - switch(pin) { - case RP2040_INPUT_JOYSTICK_DOWN: - if (value) { - menu_navigate_next(menu); - render = true; - } - break; - case RP2040_INPUT_JOYSTICK_UP: - if (value) { - menu_navigate_previous(menu); - render = true; - } - break; - case RP2040_INPUT_BUTTON_BACK: - if (value) { - menuArgs = pd_args; - } - break; - case RP2040_INPUT_BUTTON_ACCEPT: - case RP2040_INPUT_JOYSTICK_PRESS: - if (value) { - menuArgs = menu_get_callback_args(menu, menu_get_position(menu)); - } - break; - case RP2040_INPUT_BUTTON_HOME: - if (value) exit = true; - break; - default: - break; - } - } - - if (renderbg) { - pax_background(pax_buffer, 0xFFFFFF); - pax_noclip(pax_buffer); - const pax_font_t *font = pax_get_font("saira regular"); - pax_draw_text(pax_buffer, 0xFF000000, font, 18, 5, 240 - 19, "[A] install [B] back"); - renderbg = false; - } - - if (render) { - menu_render(pax_buffer, menu, 0, 0, 320, 220, 0xFF000000); - ili9341_write(ili9341, pax_buffer->buf); - render = false; - } - - if (menuArgs != NULL) { - if (menuArgs->type == 'd') { - strcpy(path, menuArgs->path); - break; - } else { - printf("File selected: %s\n", menuArgs->path); - appfs_store_app(pax_buffer, ili9341, menuArgs->path, menuArgs->label); - } - menuArgs = NULL; - render = true; - renderbg = true; - } - - if (exit) { - break; - } - } - - for (size_t index = 0; index < menu_get_length(menu); index++) { - free(menu_get_callback_args(menu, index)); - } - - menu_free(menu); - } -} diff --git a/main/fpga_download.c b/main/fpga_download.c deleted file mode 100644 index 7a0550f..0000000 --- a/main/fpga_download.c +++ /dev/null @@ -1,267 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "driver/uart.h" -#include "hardware.h" -#include "managed_i2c.h" -#include "pax_gfx.h" -#include "ice40.h" -#include "system_wrapper.h" -#include "graphics_wrapper.h" -#include "esp32/rom/crc.h" - -void fpga_install_uart() { - fflush(stdout); - ESP_ERROR_CHECK(uart_driver_install(0, 2048, 0, 0, NULL, 0)); - uart_config_t uart_config = { - .baud_rate = 921600, - .data_bits = UART_DATA_8_BITS, - .parity = UART_PARITY_DISABLE, - .stop_bits = UART_STOP_BITS_1, - .flow_ctrl = UART_HW_FLOWCTRL_DISABLE, - .source_clk = UART_SCLK_APB, - }; - ESP_ERROR_CHECK(uart_param_config(0, &uart_config)); -} - -void fpga_uninstall_uart() { - uart_driver_delete(0); -} - -bool fpga_read_stdin(uint8_t* buffer, uint32_t len, uint32_t timeout) { - int read = uart_read_bytes(0, buffer, len, timeout / portTICK_PERIOD_MS); - return (read == len); -} - -bool fpga_uart_sync(uint32_t* length, uint32_t* crc) { - uint8_t data[256]; - uart_read_bytes(0, data, sizeof(data), 10 / portTICK_PERIOD_MS); - char command[] = "FPGA"; - uart_write_bytes(0, command, 4); - uint8_t rx_buffer[4 * 3]; - fpga_read_stdin(rx_buffer, sizeof(rx_buffer), 1000); - if (memcmp(rx_buffer, "FPGA", 4) != 0) return false; - memcpy((uint8_t*) length, &rx_buffer[4 * 1], 4); - memcpy((uint8_t*) crc, &rx_buffer[4 * 2], 4); - return true; -} - -bool fpga_uart_load(uint8_t* buffer, uint32_t length) { - return fpga_read_stdin(buffer, length, 3000); -} - -void fpga_uart_mess(const char *mess) { - uart_write_bytes(0, mess, strlen(mess)); -} - -esp_err_t fpga_process_events(xQueueHandle buttonQueue, ICE40* ice40, uint16_t *key_state, uint16_t *idle_count) -{ - rp2040_input_message_t buttonMessage = {0}; - while (xQueueReceive(buttonQueue, &buttonMessage, 0) == pdTRUE) { - uint8_t pin = buttonMessage.input; - bool value = buttonMessage.state; - uint16_t key_mask = 0; - switch(pin) { - case RP2040_INPUT_JOYSTICK_DOWN: - key_mask = 1 << 0; - break; - case RP2040_INPUT_JOYSTICK_UP: - key_mask = 1 << 1; - break; - case RP2040_INPUT_JOYSTICK_LEFT: - key_mask = 1 << 2; - break; - case RP2040_INPUT_JOYSTICK_RIGHT: - key_mask = 1 << 3; - break; - case RP2040_INPUT_JOYSTICK_PRESS: - key_mask = 1 << 4; - break; - case RP2040_INPUT_BUTTON_HOME: - key_mask = 1 << 5; - break; - case RP2040_INPUT_BUTTON_MENU: - key_mask = 1 << 6; - break; - case RP2040_INPUT_BUTTON_SELECT: - key_mask = 1 << 7; - break; - case RP2040_INPUT_BUTTON_START: - key_mask = 1 << 8; - break; - case RP2040_INPUT_BUTTON_ACCEPT: - key_mask = 1 << 9; - break; - case RP2040_INPUT_BUTTON_BACK: - key_mask = 1 << 10; - default: - break; - } - if (key_mask != 0) - { - if (value) { - *key_state |= key_mask; - } - else { - *key_state &= ~key_mask; - } - - uint8_t spi_message[5] = { 0xf4 }; - spi_message[1] = *key_state >> 8; - spi_message[2] = *key_state & 0xff; - spi_message[3] = key_mask >> 8; - spi_message[4] = key_mask & 0xff; - esp_err_t res = ice40_send(ice40, spi_message, 5); - if (res != ESP_OK) { - return res; - } - } - *idle_count = 0; - } - return ESP_OK; -} - -void fpga_download(xQueueHandle buttonQueue, ICE40* ice40, pax_buf_t* pax_buffer, ILI9341* ili9341) { - char message[64]; - - pax_noclip(pax_buffer); - pax_background(pax_buffer, 0x325aa8); - pax_draw_text(pax_buffer, 0xFFFFFFFF, NULL, 18, 0, 20*0, "FPGA download mode"); - pax_draw_text(pax_buffer, 0xFFFFFFFF, NULL, 18, 0, 20*1, "Preparing..."); - ili9341_write(ili9341, pax_buffer->buf); - - fpga_install_uart(); - - ice40_disable(ice40); - ili9341_init(ili9341); - - uint8_t counter = 0; - uint32_t length = 0; - uint32_t crc = 0; - while (!fpga_uart_sync(&length, &crc)) { - pax_noclip(pax_buffer); - pax_background(pax_buffer, 0x325aa8); - pax_draw_text(pax_buffer, 0xFFFFFFFF, NULL, 18, 0, 20*0, "FPGA download mode"); - snprintf(message, sizeof(message), "Waiting for bitstream%s%s%s", (counter > 0) ? "." : " ", (counter > 1) ? "." : " ", (counter > 2) ? "." : " "); - pax_draw_text(pax_buffer, 0xFFFFFFFF, NULL, 18, 0, 20*1, message); - ili9341_write(ili9341, pax_buffer->buf); - counter++; - if (counter > 3) counter = 0; - } - - while (true) { - pax_noclip(pax_buffer); - pax_background(pax_buffer, 0x325aa8); - pax_draw_text(pax_buffer, 0xFFFFFFFF, NULL, 18, 0, 20*0, "FPGA download mode"); - pax_draw_text(pax_buffer, 0xFFFFFFFF, NULL, 18, 0, 20*1, "Receiving bitstream..."); - ili9341_write(ili9341, pax_buffer->buf); - - uint8_t* buffer = malloc(length); - if (buffer == NULL) { - pax_noclip(pax_buffer); - pax_background(pax_buffer, 0xa85a32); - pax_draw_text(pax_buffer, 0xFFFFFFFF, NULL, 18, 0, 20*0, "FPGA download mode"); - pax_draw_text(pax_buffer, 0xFFFFFFFF, NULL, 18, 0, 20*1, "Malloc failed"); - ili9341_write(ili9341, pax_buffer->buf); - vTaskDelay(1000 / portTICK_PERIOD_MS); - fpga_uninstall_uart(); - return; - } - if (!fpga_uart_load(buffer, length)) { - free(buffer); - pax_noclip(pax_buffer); - pax_background(pax_buffer, 0xa85a32); - pax_draw_text(pax_buffer, 0xFFFFFFFF, NULL, 18, 0, 20*0, "FPGA download mode"); - pax_draw_text(pax_buffer, 0xFFFFFFFF, NULL, 18, 0, 20*1, "Timeout while loading"); - ili9341_write(ili9341, pax_buffer->buf); - vTaskDelay(1000 / portTICK_PERIOD_MS); - fpga_uninstall_uart(); - return; - } - - uint32_t checkCrc = crc32_le(0, buffer, length); - - if (checkCrc != crc) { - free(buffer); - pax_noclip(pax_buffer); - pax_background(pax_buffer, 0xa85a32); - pax_draw_text(pax_buffer, 0xFFFFFFFF, NULL, 18, 0, 20*0, "FPGA download mode"); - pax_draw_text(pax_buffer, 0xFFFFFFFF, NULL, 18, 0, 20*1, "CRC incorrect"); - snprintf(message, sizeof(message), "Provided CRC: %08X", crc); - pax_draw_text(pax_buffer, 0xFFFFFFFF, NULL, 18, 0, 20*2, message); - snprintf(message, sizeof(message), "Calculated CRC: %08X", checkCrc); - pax_draw_text(pax_buffer, 0xFFFFFFFF, NULL, 18, 0, 20*3, message); - ili9341_write(ili9341, pax_buffer->buf); - vTaskDelay(1000 / portTICK_PERIOD_MS); - snprintf(message, sizeof(message), "CRC incorrect %08X %08x\n", crc, checkCrc); - fpga_uart_mess(message); - fpga_uninstall_uart(); - return; - } - fpga_uart_mess("CRC correct\n"); - - ili9341_deinit(ili9341); - ili9341_select(ili9341, false); - vTaskDelay(200 / portTICK_PERIOD_MS); - ili9341_select(ili9341, true); - - esp_err_t res = ice40_load_bitstream(ice40, buffer, length); - free(buffer); - - if (res != ESP_OK) { - ice40_disable(ice40); - ili9341_init(ili9341); - pax_noclip(pax_buffer); - pax_background(pax_buffer, 0xa85a32); - pax_draw_text(pax_buffer, 0xFFFFFFFF, NULL, 18, 0, 20*0, "FPGA download mode"); - snprintf(message, sizeof(message), "Upload failed: %d", res); - pax_draw_text(pax_buffer, 0xFFFFFFFF, NULL, 18, 0, 20*1, message); - ili9341_write(ili9341, pax_buffer->buf); - vTaskDelay(1000 / portTICK_PERIOD_MS); - snprintf(message, sizeof(message), "uploading bitstream failed with %d\n", res); - fpga_uart_mess(message); - fpga_uninstall_uart(); - return; - } - snprintf(message, sizeof(message), "bitstream has uploaded\n"); - fpga_uart_mess(message); - - // Waiting for next download and sending key strokes to FPGA - uint16_t key_state = 0; - uint16_t idle_count = 0; - while (true) { - if (idle_count >= 200) { - if (fpga_uart_sync(&length, &crc)) { - break; - } - idle_count = 0; - } - esp_err_t res = fpga_process_events(buttonQueue, ice40, &key_state, &idle_count); - if (res != ESP_OK) { - ice40_disable(ice40); - ili9341_init(ili9341); - pax_noclip(pax_buffer); - pax_background(pax_buffer, 0xa85a32); - pax_draw_text(pax_buffer, 0xFFFFFFFF, NULL, 18, 0, 20*0, "FPGA download mode"); - snprintf(message, sizeof(message), "Error: %d", res); - pax_draw_text(pax_buffer, 0xFFFFFFFF, NULL, 18, 0, 20*1, message); - ili9341_write(ili9341, pax_buffer->buf); - vTaskDelay(1000 / portTICK_PERIOD_MS); - snprintf(message, sizeof(message), "processing events failed with %d\n", res); - fpga_uart_mess(message); - fpga_uninstall_uart(); - return; - } - vTaskDelay(10 / portTICK_PERIOD_MS); - idle_count++; - } - ice40_disable(ice40); - ili9341_init(ili9341); - } -} diff --git a/main/fpga_test.c b/main/fpga_test.c deleted file mode 100644 index 8808cc3..0000000 --- a/main/fpga_test.c +++ /dev/null @@ -1,509 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include "hardware.h" -#include "ili9341.h" -#include "ice40.h" -#include "rp2040.h" -#include "fpga_test.h" -#include "pax_gfx.h" -#include "test_common.h" - -extern const uint8_t fpga_selftest_bin_start[] asm("_binary_fpga_selftest_bin_start"); -extern const uint8_t fpga_selftest_bin_end[] asm("_binary_fpga_selftest_bin_end"); - - -static const char *TAG = "fpga_test"; - -/* SPI commands */ -#define SPI_CMD_NOP1 0x00 -#define SPI_CMD_SOC_MSG 0x10 -#define SPI_CMD_REG_ACCESS 0xf0 -#define SPI_CMD_LOOPBACK 0xf1 -#define SPI_CMD_LCD_PASSTHROUGH 0xf2 -#define SPI_CMD_BUTTON_REPORT 0xf4 -#define SPI_CMD_IRQ_ACK 0xfd -#define SPI_CMD_RESP_ACK 0xfe -#define SPI_CMD_NOP2 0xff - -/* Messages to self-test SoC */ -#define SOC_CMD_PING 0x00 -#define SOC_CMD_PING_PARAM 0xc0ffee -#define SOC_CMD_PING_RESP 0xcafebabe - -#define SOC_CMD_RGB_STATE_SET 0x10 -#define SOC_CMD_IRQN_SET 0x11 -#define SOC_CMD_LCD_RGB_CYCLE_SET 0x12 -#define SOC_CMD_PMOD_CYCLE_SET 0x13 -#define SOC_CMD_LCD_PASSTHROUGH_SET 0x14 - -#define SOC_CMD_PSRAM_TEST 0x20 -#define SOC_CMD_UART_LOOPBACK_TEST 0x21 -#define SOC_CMD_PMOD_OPEN_TEST 0x22 -#define SOC_CMD_PMOD_PLUG_TEST 0x23 -#define SOC_CMD_LCD_INIT_TEST 0x24 - -#define SOC_CMD_LCD_CHECK_MODE 0x30 - -#define SOC_RESP_OK 0x00000000 - - -/* SoC commands */ - -static bool soc_message(ICE40* ice40, uint8_t cmd, uint32_t param, uint32_t *resp, TickType_t ticks_to_wait) { - esp_err_t res; - uint8_t data_tx[6]; - uint8_t data_rx[6]; - - /* Default delay */ - ticks_to_wait /= 10; /* We do 10 retries */ - if (!ticks_to_wait) - ticks_to_wait = pdMS_TO_TICKS(50); - - /* Prepare message */ - data_tx[0] = SPI_CMD_SOC_MSG; - data_tx[1] = cmd; - data_tx[2] = (param >> 16) & 0xff; - data_tx[3] = (param >> 8) & 0xff; - data_tx[4] = (param ) & 0xff; - - /* Send message to PicoRV */ - res = ice40_send_turbo(ice40, data_tx, 5); - if (res != ESP_OK) { - ESP_LOGE(TAG, "SoC message TX failed"); - return false; - } - - /* Poll until we get a response */ - data_tx[0] = SPI_CMD_RESP_ACK; - - for (int i=0; i<10; i++) { - /* Poll */ - res = ice40_transaction(ice40, data_tx, 6, data_rx, 6); - if (res != ESP_OK) { - ESP_LOGE(TAG, "SoC response RX failed"); - return false; - } - - /* Was response valid ? */ - if (data_rx[1] & 0x80) - break; - - /* Wait before retry */ - vTaskDelay(ticks_to_wait); - } - - if (!(data_rx[1] & 0x80)) { - ESP_LOGE(TAG, "SoC response RX timeout"); - return false; - } - - /* Report response */ - if (resp) { - *resp = 0; - for (int i=0; i<4; i++) - *resp = (*resp << 8) | data_rx[2+i]; - } - - return true; -} - - -/* Test routines */ - -static bool test_bitstream_load(uint32_t *rc) { - ICE40* ice40 = get_ice40(); - esp_err_t res; - - res = ice40_load_bitstream(ice40, fpga_selftest_bin_start, fpga_selftest_bin_end - fpga_selftest_bin_start); - if (res != ESP_OK) { - *rc = res; - return false; - } - - *rc = 0; - return true; -} - -static bool _test_spi_loopback_one(ICE40* ice40) { - esp_err_t res; - uint8_t data_tx[257]; - uint8_t data_rx[258]; - - /* Generate pseudo random sequence */ - data_tx[1] = 1; - for (int i = 2; i < 257; i++) - data_tx[i] = (data_tx[i-1] << 1) ^ ((data_tx[i-1] & 0x80) ? 0x1d : 0x00); - - /* Send 256 bytes at high speed with echo command */ - data_tx[0] = SPI_CMD_LOOPBACK; - - res = ice40_send_turbo(ice40, data_tx, 257); - if (res != ESP_OK) { - ESP_LOGE(TAG, "SPI loopback transaction 1 failed (Turbo TX)"); - return false; - } - - /* Execute full duplex transaction with next 128 bytes */ - res = ice40_transaction(ice40, data_tx, 257, data_rx, 257); - if (res != ESP_OK) { - ESP_LOGE(TAG, "SPI loopback transaction 2 failed (Full Duplex)"); - return false; - } - - /* Validate response present */ - if ((data_rx[1] & 0x80) == 0) { - ESP_LOGE(TAG, "SPI loopback transaction 2 reports no response available\n"); - return false; - } - - /* Validate RX data (only 254 byte got read) */ - if (memcmp(&data_rx[2], &data_tx[1], 254)) { - ESP_LOGE(TAG, "SPI loopback transaction 1->2 integrity fail:\n"); - for (int i = 0; i < 254; i++) - printf("%02X%c", data_rx[i], ((i&0xf)==0xf) ? '\n' : ' '); - printf("\n"); - return false; - } - - /* Read two responses and ack them */ - for (int t = 0; t < 2; t++) { - /* Receive half duplex */ - res = ice40_receive(ice40, data_rx, 258); - if (res != ESP_OK) { - ESP_LOGE(TAG, "SPI loopback transaction 3.%d failed (Half Duplex RX)", t); - return false; - } - - /* Short acknowledge command */ - data_tx[0] = SPI_CMD_RESP_ACK; - - res = ice40_send_turbo(ice40, data_tx, 1); - if (res != ESP_OK) { - ESP_LOGE(TAG, "SPI loopback transaction 4.%d failed (Turbo ACK)", t); - return false; - } - - /* Validate response present */ - if ((data_rx[1] & 0x80) == 0) { - ESP_LOGE(TAG, "SPI loopback transaction 3.%d reports no response available\n", t); - return false; - } - - /* Validate RX data (only 254 byte got read) */ - if (memcmp(&data_rx[2], &data_tx[1], 254)) { - ESP_LOGE(TAG, "SPI loopback transaction %d->3.%d integrity fail:\n", 1+t, t); - for (int i = 0; i < 254; i++) - printf("%02X%c", data_rx[i], ((i&0xf)==0xf) ? '\n' : ' '); - printf("\n"); - return false; - } - } - - /* Check there is no more responses pending */ - data_tx[0] = SPI_CMD_NOP2; - - res = ice40_transaction(ice40, data_tx, 2, data_rx, 2); - if (res != ESP_OK) { - ESP_LOGE(TAG, "SPI loopback transaction 5 failed (Full Duplex)"); - return false; - } - - if ((data_rx[1] & 0x80) != 0) { - ESP_LOGE(TAG, "SPI loopback transaction 5 reports response available\n"); - return false; - } - - return true; -} - -static bool test_spi_loopback(uint32_t *rc) { - int i; - - ICE40* ice40 = get_ice40(); - - /* Run test 256 times */ - for (i=0; i<256; i++) { - if (!_test_spi_loopback_one(ice40)) - break; - } - - /* Failure ? */ - if (i != 256) { - *rc = i + 1; - return false; - } - - /* OK ! */ - *rc = 0; - return true; -} - -static bool test_soc_loopback(uint32_t *rc) { - ICE40* ice40 = get_ice40(); - - /* Execute command */ - if (!soc_message(ice40, SOC_CMD_PING, SOC_CMD_PING_PARAM, rc, 0)) { - *rc = -1; - return false; - } - - /* Check response */ - if (*rc != SOC_CMD_PING_RESP) - return false; - - /* Success */ - *rc = 0; - return true; -} - -static bool test_uart_loopback(uint32_t *rc) { - ICE40* ice40 = get_ice40(); - - /* Enable loopback mode of RP2040 */ - rp2040_set_fpga_loopback(get_rp2040(), true, true); - vTaskDelay(pdMS_TO_TICKS(10)); - - /* Execute command */ - if (!soc_message(ice40, SOC_CMD_UART_LOOPBACK_TEST, 0, rc, 0)) { - *rc = -1; - return false; - } - - /* Disable loopback mode of RP2040 */ - rp2040_set_fpga_loopback(get_rp2040(), true, false); - - /* Check response */ - return *rc == SOC_RESP_OK; -} - -static bool test_psram(uint32_t *rc) { - ICE40* ice40 = get_ice40(); - - /* Execute command */ - if (!soc_message(ice40, SOC_CMD_PSRAM_TEST, 0, rc, pdMS_TO_TICKS(1000))) { - *rc = -1; - return false; - } - - /* Check response */ - return *rc == SOC_RESP_OK; -} - -static bool test_irq_n(uint32_t *rc) { - ICE40* ice40 = get_ice40(); - - esp_err_t res; - - /* Set pin as input */ - res = gpio_set_direction(GPIO_INT_FPGA, GPIO_MODE_INPUT); - if (res != ESP_OK) { - *rc = 32; - return false; - } - - /* Assert interrupt line */ - if (!soc_message(ice40, SOC_CMD_IRQN_SET, 1, rc, 0)) { - *rc = -1; - return false; - } - - if (*rc != SOC_RESP_OK) - return false; - - /* Check level is 0 */ - if (gpio_get_level(GPIO_INT_FPGA) != 0) { - *rc = 16; - return false; - } - - /* Release interrupt line */ - if (!soc_message(ice40, SOC_CMD_IRQN_SET, 0, rc, 0)) { - *rc = -1; - return false; - } - - if (*rc != SOC_RESP_OK) - return false; - - /* Check level is 1 */ - if (gpio_get_level(GPIO_INT_FPGA) != 1) { - *rc = 16; - return false; - } - - return true; -} - -static bool test_lcd_mode(uint32_t *rc) { - ICE40* ice40 = get_ice40(); - esp_err_t res; - bool ok; - - /* Defaults */ - ok = true; - *rc = 0; - - /* Check state is 0 */ - if (!soc_message(ice40, SOC_CMD_LCD_CHECK_MODE, 0, rc, 0)) { - *rc = 16; - return false; - } - - if (*rc != SOC_RESP_OK) - return false; - - /* Set LCD mode to 1 */ - res = gpio_set_level(GPIO_LCD_MODE, 1); - if (res != ESP_OK) { - *rc = 32; - return false; - } - - /* Check state is 1 */ - if (!soc_message(ice40, SOC_CMD_LCD_CHECK_MODE, 1, rc, 0)) { - *rc = 17; - ok = false; - } - - if (*rc != SOC_RESP_OK) - ok = false; - - /* Set LCD mode back to 0 */ - res = gpio_set_level(GPIO_LCD_MODE, 0); - if (res != ESP_OK) { - *rc = 33; - return false; - } - - /* All good */ - return ok; -} - -static bool test_pmod_open(uint32_t *rc) { - ICE40* ice40 = get_ice40(); - /* Execute command */ - if (!soc_message(ice40, SOC_CMD_PMOD_OPEN_TEST, 0, rc, 0)) { - *rc = -1; - return false; - } - - /* Check response */ - return *rc == SOC_RESP_OK; -} - -static bool test_pmod_plug(uint32_t *rc) { - ICE40* ice40 = get_ice40(); - - /* Execute command */ - if (!soc_message(ice40, SOC_CMD_PMOD_PLUG_TEST, 0, rc, 0)) { - *rc = -1; - return false; - } - - /* Check response */ - return *rc == SOC_RESP_OK; -} - -static bool test_lcd_init(uint32_t *rc) { - ICE40* ice40 = get_ice40(); - - /* Execute command */ - if (!soc_message(ice40, SOC_CMD_LCD_INIT_TEST, 0, rc, 0)) { - *rc = -1; - return false; - } - - /* Check response */ - return *rc == SOC_RESP_OK; -} - -bool run_fpga_tests(xQueueHandle buttonQueue, pax_buf_t* pax_buffer, ILI9341* ili9341) { - ICE40* ice40 = get_ice40(); - const pax_font_t *font; - int line = 0; - bool ok = true; - - /* Screen init */ - font = pax_get_font("sky mono"); - - pax_noclip(pax_buffer); - pax_background(pax_buffer, 0x8060f0); - ili9341_write(ili9341, pax_buffer->buf); - - /* Run mandatory tests */ - RUN_TEST_MANDATORY("Bitstream load", test_bitstream_load); - RUN_TEST_MANDATORY("SPI loopback", test_spi_loopback); - RUN_TEST_MANDATORY("SoC loopback", test_soc_loopback); - - /* Set indicator to "in-progress" */ - soc_message(ice40, SOC_CMD_RGB_STATE_SET, 1, NULL, 0); - - /* Run non-interactive tests */ - RUN_TEST("UART loopback", test_uart_loopback); - RUN_TEST("PSRAM", test_psram); - RUN_TEST("IRQ_n signal", test_irq_n); - RUN_TEST("LCD_MODE signal", test_lcd_mode); - RUN_TEST("PMOD open", test_pmod_open); - - /* Show instructions for interactive test */ - /*pax_draw_text(pax_buffer, 0xffc0c0c0, font, 9, 25, 20*line+ 0, "Insert PMOD plug"); - pax_draw_text(pax_buffer, 0xffc0c0c0, font, 9, 25, 20*line+10, "Then press button for interactive test"); - pax_draw_text(pax_buffer, 0xffc0c0c0, font, 9, 25, 20*line+20, " - Check LCD color bars"); - pax_draw_text(pax_buffer, 0xffc0c0c0, font, 9, 25, 20*line+30, " - Then LCD & RGB led color cycling"); - ili9341_write(ili9341, pax_buffer->buf);*/ - - /* Wait for button */ - //wait_button(buttonQueue); - - /* Clear the instructions from buffer */ - //pax_draw_rect(pax_buffer, 0xff8060f0, 0, 20*line, 320, 240-20*line); - - /* Handover LCD to FPGA */ - ili9341_deinit(ili9341); - - /* Run interactive tests */ - //RUN_TEST("PMOD plug", test_pmod_plug); - RUN_TEST("LCD init", test_lcd_init); - - /* Wait a second (for user to see color bars) */ - vTaskDelay(pdMS_TO_TICKS(1000)); - - /* Start LCD / RGB cycling */ - soc_message(ice40, SOC_CMD_LCD_RGB_CYCLE_SET, 1, NULL, 0); - - /* Wait for button */ - RUN_TEST("LCD control", test_wait_for_response); - - /* Stop LCD / RGB cycling */ - soc_message(ice40, SOC_CMD_LCD_RGB_CYCLE_SET, 0, NULL, 0); - - /* Take control of the LCD back and refresh screen */ - ili9341_init(ili9341); - -error: - /* Update indicator */ - soc_message(ice40, SOC_CMD_RGB_STATE_SET, ok ? 2 : 3, NULL, 0); - - /* Pass / Fail result on screen */ - if (ok) - pax_draw_text(pax_buffer, 0xff00ff00, font, 36, 0, 20*line, "PASS"); - else - pax_draw_text(pax_buffer, 0xffff0000, font, 36, 0, 20*line, "FAIL"); - - ili9341_write(ili9341, pax_buffer->buf); - - /* Cleanup */ - ice40_disable(ice40); - - return ok; -} - -void fpga_test(xQueueHandle buttonQueue, pax_buf_t* pax_buffer, ILI9341* ili9341) { - run_fpga_tests(buttonQueue, pax_buffer, ili9341); - test_wait_for_response(NULL); -} diff --git a/main/graphics_wrapper.c b/main/graphics_wrapper.c deleted file mode 100644 index 9192935..0000000 --- a/main/graphics_wrapper.c +++ /dev/null @@ -1,161 +0,0 @@ -#include -#include "graphics_wrapper.h" -#include "hardware.h" -#include "pax_keyboard.h" -#include "rp2040.h" - -void render_message(pax_buf_t *pax_buffer, char* message, float aPosX, float aPosY, float aWidth, float aHeight) { - pax_col_t fgColor = 0xFFFF0000; - pax_col_t bgColor = 0xFFFFD4D4; - pax_clip(pax_buffer, aPosX, aPosY, aWidth, aHeight); - pax_simple_rect(pax_buffer, bgColor, aPosX, aPosY, aWidth, aHeight); - pax_outline_rect(pax_buffer, fgColor, aPosX, aPosY, aWidth, aHeight); - pax_clip(pax_buffer, aPosX + 1, aPosY + 1, aWidth - 2, aHeight - 2); - pax_draw_text(pax_buffer, fgColor, NULL, 18, aPosX + 1, aPosY + 1, message); - pax_noclip(pax_buffer); -} - -esp_err_t graphics_task(pax_buf_t* pax_buffer, ILI9341* ili9341, menu_t* menu, char* message) { - pax_background(pax_buffer, 0xCCCCCC); - if (menu != NULL) { - menu_render(pax_buffer, menu, 10, 10, 320-20, 240-20, 0xFF000000); - } - - if (message != NULL) { - render_message(pax_buffer, message, 20, 110, 320-40, 20); - } - - return ili9341_write(ili9341, pax_buffer->buf); -} - -bool keyboard(xQueueHandle buttonQueue, pax_buf_t* pax_buffer, ILI9341* ili9341, float aPosX, float aPosY, float aWidth, float aHeight, const char* aTitle, const char* aHint, char* aOutput, size_t aOutputSize) { - const pax_font_t *font = pax_get_font("saira regular"); - bool accepted = false; - pkb_ctx_t kb_ctx; - pkb_init(pax_buffer, &kb_ctx, 1024); - pkb_set_content(&kb_ctx, aOutput); - kb_ctx.kb_font = font; - kb_ctx.text_font = font; - - pax_col_t fgColor = 0xFF000000; - pax_col_t bgColor = 0xFFFFFFFF; - pax_col_t shadowColor = 0xFFC0C3C8; - pax_col_t borderColor = 0xFF0000AA; - pax_col_t titleBgColor = 0xFF080764; - pax_col_t titleColor = 0xFFFFFFFF; - pax_col_t selColor = 0xff007fff; - - kb_ctx.text_col = borderColor; - kb_ctx.sel_text_col = bgColor; - kb_ctx.sel_col = selColor; - kb_ctx.bg_col = bgColor; - - kb_ctx.kb_font_size = 18; - - float titleHeight = 20; - float hintHeight = 14; - - pax_noclip(pax_buffer); - pax_simple_rect(pax_buffer, shadowColor, aPosX+5, aPosY+5, aWidth, aHeight); - pax_simple_rect(pax_buffer, bgColor, aPosX, aPosY, aWidth, aHeight); - pax_outline_rect(pax_buffer, borderColor, aPosX, aPosY, aWidth, aHeight); - pax_simple_rect(pax_buffer, titleBgColor, aPosX, aPosY, aWidth, titleHeight); - pax_simple_line(pax_buffer, titleColor, aPosX + 1, aPosY + titleHeight, aPosX + aWidth - 2, aPosY + titleHeight - 1); - pax_clip(pax_buffer, aPosX + 1, aPosY + 1, aWidth - 2, titleHeight - 2); - pax_draw_text(pax_buffer, titleColor, font, titleHeight - 2, aPosX + 1, aPosY + 1, aTitle); - pax_clip(pax_buffer, aPosX + 1, aPosY + aHeight - hintHeight, aWidth - 2, hintHeight); - pax_draw_text(pax_buffer, borderColor, font, hintHeight - 2, aPosX + 1, aPosY + aHeight - hintHeight, aHint); - pax_noclip(pax_buffer); - - kb_ctx.x = aPosX + 1; - kb_ctx.y = aPosY + titleHeight + 1 ; - kb_ctx.width = aWidth - 2; - kb_ctx.height = aHeight - 3 - titleHeight - hintHeight; - - bool running = true; - while (running) { - rp2040_input_message_t buttonMessage = {0}; - if (xQueueReceive(buttonQueue, &buttonMessage, 16 / portTICK_PERIOD_MS) == pdTRUE) { - uint8_t pin = buttonMessage.input; - bool value = buttonMessage.state; - switch(pin) { - case RP2040_INPUT_JOYSTICK_DOWN: - if (value) { - pkb_press(&kb_ctx, PKB_DOWN); - } else { - pkb_release(&kb_ctx, PKB_DOWN); - } - break; - case RP2040_INPUT_JOYSTICK_UP: - if (value) { - pkb_press(&kb_ctx, PKB_UP); - } else { - pkb_release(&kb_ctx, PKB_UP); - } - break; - case RP2040_INPUT_JOYSTICK_LEFT: - if (value) { - pkb_press(&kb_ctx, PKB_LEFT); - } else { - pkb_release(&kb_ctx, PKB_LEFT); - } - break; - case RP2040_INPUT_JOYSTICK_RIGHT: - if (value) { - pkb_press(&kb_ctx, PKB_RIGHT); - } else { - pkb_release(&kb_ctx, PKB_RIGHT); - } - break; - case RP2040_INPUT_JOYSTICK_PRESS: - if (value) { - pkb_press(&kb_ctx, PKB_SHIFT); - } else { - pkb_release(&kb_ctx, PKB_SHIFT); - } - break; - case RP2040_INPUT_BUTTON_ACCEPT: - if (value) { - pkb_press(&kb_ctx, PKB_CHARSELECT); - } else { - pkb_release(&kb_ctx, PKB_CHARSELECT); - } - break; - case RP2040_INPUT_BUTTON_BACK: - if (value) { - pkb_press(&kb_ctx, PKB_DELETE_BEFORE); - } else { - pkb_release(&kb_ctx, PKB_DELETE_BEFORE); - } - break; - case RP2040_INPUT_BUTTON_SELECT: - if (value) { - pkb_press(&kb_ctx, PKB_MODESELECT); - } else { - pkb_release(&kb_ctx, PKB_MODESELECT); - } - break; - case RP2040_INPUT_BUTTON_HOME: - if (value) { - running = false; - } - break; - default: - break; - } - } - pkb_loop(&kb_ctx); - if (kb_ctx.dirty) { - pkb_redraw(pax_buffer, &kb_ctx); - ili9341_write(ili9341, pax_buffer->buf); - } - if (kb_ctx.input_accepted) { - memset(aOutput, 0, aOutputSize); - strncpy(aOutput, kb_ctx.content, aOutputSize - 1); - running = false; - accepted = true; - } - } - pkb_destroy(&kb_ctx); - return accepted; -} diff --git a/main/include/adc_test.h b/main/include/adc_test.h deleted file mode 100644 index 1a6e19d..0000000 --- a/main/include/adc_test.h +++ /dev/null @@ -1,9 +0,0 @@ -#include -#include -#include -#include -#include -#include "ili9341.h" -#include "pax_gfx.h" - -void test_adc(xQueueHandle buttonQueue, pax_buf_t* pax_buffer, ILI9341* ili9341); diff --git a/main/include/animation.h b/main/include/animation.h deleted file mode 100644 index 2f9bc39..0000000 --- a/main/include/animation.h +++ /dev/null @@ -1,4 +0,0 @@ -#include "pax_gfx.h" -#include "ili9341.h" - -void display_animation(pax_buf_t* pax_buffer, ILI9341* ili9341); diff --git a/main/include/appfs_wrapper.h b/main/include/appfs_wrapper.h deleted file mode 100644 index e9f4c48..0000000 --- a/main/include/appfs_wrapper.h +++ /dev/null @@ -1,17 +0,0 @@ -#pragma once - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "appfs.h" - -esp_err_t appfs_init(void); -uint8_t* load_file_to_ram(FILE* fd, size_t* fsize); -void appfs_boot_app(int fd); -void appfs_store_app(pax_buf_t* pax_buffer, ILI9341* ili9341, char* path, char* label); diff --git a/main/include/audio.h b/main/include/audio.h deleted file mode 100644 index a711982..0000000 --- a/main/include/audio.h +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once -void audio_init(); -void play_bootsound(); diff --git a/main/include/bootscreen.h b/main/include/bootscreen.h deleted file mode 100644 index 9e3fac6..0000000 --- a/main/include/bootscreen.h +++ /dev/null @@ -1,4 +0,0 @@ -#include "pax_gfx.h" -#include "ili9341.h" - -void display_boot_screen(pax_buf_t* pax_buffer, ILI9341* ili9341, const char* text); diff --git a/main/include/button_test.h b/main/include/button_test.h deleted file mode 100644 index 6b16506..0000000 --- a/main/include/button_test.h +++ /dev/null @@ -1,9 +0,0 @@ -#include -#include -#include -#include -#include -#include "ili9341.h" -#include "pax_gfx.h" - -void test_buttons(xQueueHandle buttonQueue, pax_buf_t* pax_buffer, ILI9341* ili9341); diff --git a/main/include/factory_test.h b/main/include/factory_test.h deleted file mode 100644 index 5a33254..0000000 --- a/main/include/factory_test.h +++ /dev/null @@ -1,10 +0,0 @@ -#pragma once - -#include -#include -#include -#include -#include "ili9341.h" -#include "pax_gfx.h" - -void factory_test(pax_buf_t* pax_buffer, ILI9341* ili9341); diff --git a/main/include/file_browser.h b/main/include/file_browser.h deleted file mode 100644 index 6afd69e..0000000 --- a/main/include/file_browser.h +++ /dev/null @@ -1,9 +0,0 @@ -#include -#include -#include -#include -#include "ili9341.h" -#include "pax_gfx.h" - -void list_files_in_folder(const char* path); -void file_browser(xQueueHandle buttonQueue, pax_buf_t* pax_buffer, ILI9341* ili9341, const char* initial_path); diff --git a/main/include/fpga_download.h b/main/include/fpga_download.h deleted file mode 100644 index a10f8f0..0000000 --- a/main/include/fpga_download.h +++ /dev/null @@ -1,8 +0,0 @@ -#pragma once - -#include "ice40.h" -#include "pax_gfx.h" -#include "ili9341.h" -#include - -void fpga_download(xQueueHandle buttonQueue, ICE40* ice40, pax_buf_t* pax_buffer, ILI9341* ili9341); diff --git a/main/include/fpga_test.h b/main/include/fpga_test.h deleted file mode 100644 index d49c36e..0000000 --- a/main/include/fpga_test.h +++ /dev/null @@ -1,14 +0,0 @@ -#pragma once - -#include -#include -#include -#include -#include "hardware.h" -#include "rp2040.h" -#include "ili9341.h" -#include "ice40.h" -#include "pax_gfx.h" - -void fpga_test(xQueueHandle buttonQueue, pax_buf_t* pax_buffer, ILI9341* ili9341); -bool run_fpga_tests(xQueueHandle buttonQueue, pax_buf_t* pax_buffer, ILI9341* ili9341); diff --git a/main/include/graphics_wrapper.h b/main/include/graphics_wrapper.h deleted file mode 100644 index e34d852..0000000 --- a/main/include/graphics_wrapper.h +++ /dev/null @@ -1,16 +0,0 @@ -#pragma once - -#include -#include -#include -#include -#include -#include - -#include "pax_gfx.h" -#include "ili9341.h" -#include "menu.h" - - -esp_err_t graphics_task(pax_buf_t* pax_buffer, ILI9341* ili9341, menu_t* menu, char* message); -bool keyboard(xQueueHandle buttonQueue, pax_buf_t* aBuffer, ILI9341* ili9341, float aPosX, float aPosY, float aWidth, float aHeight, const char* aTitle, const char* aHint, char* aOutput, size_t aOutputSize); diff --git a/main/include/main.h b/main/include/main.h new file mode 100644 index 0000000..e69de29 diff --git a/main/include/menu.h b/main/include/menu.h deleted file mode 100644 index 887bffd..0000000 --- a/main/include/menu.h +++ /dev/null @@ -1,65 +0,0 @@ -#pragma once - -#ifdef __cplusplus -extern "C" { -#endif //__cplusplus - -#include -#include -#include - -#include "pax_gfx.h" - -typedef bool (*menu_callback_t)(); - -typedef struct _menu_item { - char* label; - menu_callback_t callback; - void* callbackArgs; - - pax_buf_t* icon; - - // Linked list - struct _menu_item* previousItem; - struct _menu_item* nextItem; -} menu_item_t; - -typedef struct menu { - char* title; - menu_item_t* firstItem; - size_t length; - size_t position; - float entry_height; - float text_height; - pax_buf_t* icon; - - pax_col_t fgColor; - pax_col_t bgColor; - pax_col_t selectedItemColor; - pax_col_t bgTextColor; - pax_col_t borderColor; - pax_col_t titleColor; - pax_col_t titleBgColor; - pax_col_t scrollbarBgColor; - pax_col_t scrollbarFgColor; - -} menu_t; - -menu_t* menu_alloc(const char* aTitle, float arg_entry_height, float arg_text_height); -void menu_free(menu_t* aMenu); -void menu_set_icon(menu_t* aMenu, pax_buf_t* icon); -bool menu_insert_item(menu_t* aMenu, const char* aLabel, menu_callback_t aCallback, void* aCallbackArgs, size_t aPosition); -bool menu_insert_item_icon(menu_t* aMenu, const char* aLabel, menu_callback_t aCallback, void* aCallbackArgs, size_t aPosition, pax_buf_t* icon); -bool menu_remove_item(menu_t* aMenu, size_t aPosition); -bool menu_navigate_to(menu_t* aMenu, size_t aPosition); -void menu_navigate_previous(menu_t* aMenu); -void menu_navigate_next(menu_t* aMenu); -size_t menu_get_position(menu_t* aMenu); -size_t menu_get_length(menu_t* aMenu); -void* menu_get_callback_args(menu_t* aMenu, size_t aPosition); -void menu_debug(menu_t* aMenu); -void menu_render(pax_buf_t *aBuffer, menu_t *aMenu, float aPosX, float aPosY, float aWidth, float aHeight, pax_col_t aColor); - -#ifdef __cplusplus -} -#endif //__cplusplus diff --git a/main/include/rp2040_updater.h b/main/include/rp2040_updater.h deleted file mode 100644 index bc16ffe..0000000 --- a/main/include/rp2040_updater.h +++ /dev/null @@ -1,13 +0,0 @@ -#pragma once - -#include -#include -#include -#include -#include -#include -#include "pax_gfx.h" -#include "ili9341.h" - - -void rp2040_updater(RP2040* rp2040, pax_buf_t* pax_buffer, ILI9341* ili9341); diff --git a/main/include/settings.h b/main/include/settings.h deleted file mode 100644 index 7581831..0000000 --- a/main/include/settings.h +++ /dev/null @@ -1,11 +0,0 @@ -#pragma once - -#include "hardware.h" -#include "rp2040.h" -#include "ili9341.h" -#include "ice40.h" - -esp_err_t nvs_init(); -esp_err_t nvs_get_str_fixed(const char* nvs_namespace, const char* key, char* target, size_t target_size, size_t* size); -uint8_t nvs_get_u8_default(const char* nvs_namespace, const char* key, uint8_t default_value); -esp_err_t nvs_set_u8_fixed(const char* nvs_namespace, const char* key, uint8_t value); diff --git a/main/include/system_wrapper.h b/main/include/system_wrapper.h deleted file mode 100644 index a29f052..0000000 --- a/main/include/system_wrapper.h +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void restart(); diff --git a/main/include/test_common.h b/main/include/test_common.h deleted file mode 100644 index a679df6..0000000 --- a/main/include/test_common.h +++ /dev/null @@ -1,28 +0,0 @@ -#pragma once - -#include -#include -#include "ili9341.h" -#include "pax_gfx.h" - -typedef bool (*test_fn)(uint32_t *rc); - -bool test_wait_for_response(uint32_t *rc); -bool run_test(pax_buf_t* pax_buffer, const pax_font_t *font, ILI9341* ili9341, int line, const char *test_name, test_fn fn); - -#define RUN_TEST(name, fn) do {\ - ok &= run_test(pax_buffer, font, ili9341, line++, name, fn); \ -} while (0) - -#define RUN_TEST_MANDATORY(name, fn) do {\ - if (!run_test(pax_buffer, font, ili9341, line++, name, fn)) { \ - pax_draw_text(pax_buffer, 0xffff0000, font, 18, 0, 20*line, "Aborted"); \ - ili9341_write(ili9341, pax_buffer->buf); \ - ok = false; \ - goto error; \ - } \ -} while (0) - -#define RUN_TEST_BLIND(name, fn) do {\ - ok &= run_test(pax_buffer, font, NULL, line++, name, fn); \ -} while (0) diff --git a/main/include/uninstall.h b/main/include/uninstall.h deleted file mode 100644 index 56e4646..0000000 --- a/main/include/uninstall.h +++ /dev/null @@ -1,8 +0,0 @@ -#include -#include -#include -#include -#include "pax_gfx.h" -#include "ili9341.h" - -void uninstall_browser(xQueueHandle buttonQueue, pax_buf_t* pax_buffer, ILI9341* ili9341); diff --git a/main/include/webusb.h b/main/include/webusb.h deleted file mode 100644 index 2cd234c..0000000 --- a/main/include/webusb.h +++ /dev/null @@ -1,8 +0,0 @@ -#pragma once - -#include "ice40.h" -#include "pax_gfx.h" -#include "ili9341.h" -#include - -void webusb_main(xQueueHandle buttonQueue, pax_buf_t* pax_buffer, ILI9341* ili9341); diff --git a/main/include/wifi_connect.h b/main/include/wifi_connect.h deleted file mode 100644 index ade165c..0000000 --- a/main/include/wifi_connect.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once - -#include - -bool wifi_connect_to_stored(); diff --git a/main/include/wifi_connection.h b/main/include/wifi_connection.h deleted file mode 100644 index 12ac8fd..0000000 --- a/main/include/wifi_connection.h +++ /dev/null @@ -1,46 +0,0 @@ -#pragma once - -#include -#include -#include - -#include "esp_wifi.h" -#include "esp_wifi_types.h" -#include "esp_wpa2.h" - -#define WIFI_MCH2022_SSID "MCH2022" -#define WIFI_MCH2022_USER "mch2022" -#define WIFI_MCH2022_IDENT "mch2022" -#define WIFI_MCH2022_PASSWORD "mch2022" -#define WIFI_MCH2022_AUTH WIFI_AUTH_WPA2_ENTERPRISE -#define WIFI_MCH2022_PHASE2 ESP_EAP_TTLS_PHASE2_MSCHAPV2 - -// Simpler interpretation of WiFi signal strength. -typedef enum { - WIFI_STRENGTH_VERY_BAD, - WIFI_STRENGTH_BAD, - WIFI_STRENGTH_GOOD, - WIFI_STRENGTH_VERY_GOOD, -} wifi_strength_t; - -// Thresholds for aforementioned signal strength definitions. -#define WIFI_THRESH_BAD -80 -#define WIFI_THRESH_GOOD -70 -#define WIFI_THRESH_VERY_GOOD -67 - -// Firt time initialisation of the WiFi stack. -void wifi_init(); - -// Connect to a traditional username/password WiFi network. -bool wifi_connect(const char* aSsid, const char* aPassword, wifi_auth_mode_t aAuthmode, uint8_t aRetryMax); - -// Connect to a WPA2 enterprise WiFi network. -bool wifi_connect_ent(const char* aSsid, const char *aIdent, const char *aAnonIdent, const char* aPassword, esp_eap_ttls_phase2_types phase2, uint8_t aRetryMax); - -// Scan for WiFi networks. -// Updates the APs pointer if non-null. -// Returns the number of APs found. -size_t wifi_scan(wifi_ap_record_t **aps); - -// Get the strength value for a given RSSI. -wifi_strength_t wifi_rssi_to_strength(int8_t rssi); diff --git a/main/include/wifi_ota.h b/main/include/wifi_ota.h deleted file mode 100644 index 48fa9e7..0000000 --- a/main/include/wifi_ota.h +++ /dev/null @@ -1,6 +0,0 @@ -#pragma once - -#include "pax_gfx.h" -#include "ili9341.h" - -void ota_update(pax_buf_t* pax_buffer, ILI9341* ili9341); diff --git a/main/main.c b/main/main.c index 1b3dab4..73c24e9 100644 --- a/main/main.c +++ b/main/main.c @@ -1,295 +1,38 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "driver/uart.h" + +// This file contains a simple hello world app which you can base you own apps on. + +#include "main.h" #include "hardware.h" -#include "managed_i2c.h" #include "pax_gfx.h" -#include "sdcard.h" -#include "appfs.h" -#include "esp_ota_ops.h" -#include "rp2040.h" -#include "rp2040bl.h" +#include "pax_codecs.h" +#include "ili9341.h" +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "freertos/queue.h" +#include "esp_system.h" -#include "fpga_test.h" +pax_buf_t buf; +xQueueHandle buttonQueue; -#include "menu.h" -#include "system_wrapper.h" -#include "graphics_wrapper.h" -#include "appfs_wrapper.h" -#include "settings.h" -#include "wifi_connection.h" -#include "rp2040_updater.h" +static const char *TAG = "mch2022-demo-app"; -#include "ws2812.h" - -#include "esp32/rom/crc.h" - -#include "efuse.h" - -#include "wifi_ota.h" - -#include "esp_vfs.h" -#include "esp_vfs_fat.h" - -#include - -#include "audio.h" - -#include "bootscreen.h" - -#include "menus/start.h" - -#include "factory_test.h" -#include "fpga_download.h" -#include "webusb.h" - -extern const uint8_t wallpaper_png_start[] asm("_binary_wallpaper_png_start"); -extern const uint8_t wallpaper_png_end[] asm("_binary_wallpaper_png_end"); - -extern const uint8_t logo_screen_png_start[] asm("_binary_logo_screen_png_start"); -extern const uint8_t logo_screen_png_end[] asm("_binary_logo_screen_png_end"); - - -static const char *TAG = "main"; - -void display_fatal_error(pax_buf_t* pax_buffer, ILI9341* ili9341, const char* line0, const char* line1, const char* line2, const char* line3) { - pax_noclip(pax_buffer); - pax_background(pax_buffer, 0xa85a32); - if (line0 != NULL) pax_draw_text(pax_buffer, 0xFFFFFFFF, NULL, 18, 0, 20*0, line0); - if (line1 != NULL) pax_draw_text(pax_buffer, 0xFFFFFFFF, NULL, 12, 0, 20*1, line1); - if (line2 != NULL) pax_draw_text(pax_buffer, 0xFFFFFFFF, NULL, 12, 0, 20*2, line2); - if (line3 != NULL) pax_draw_text(pax_buffer, 0xFFFFFFFF, NULL, 12, 0, 20*3, line3); - ili9341_write(ili9341, pax_buffer->buf); +void disp_flush() { + ili9341_write(get_ili9341(), buf.buf); } -void stop() { - ESP_LOGW(TAG, "*** HALTED ***"); - gpio_set_direction(GPIO_SD_PWR, GPIO_MODE_OUTPUT); - gpio_set_level(GPIO_SD_PWR, 1); - ws2812_init(GPIO_LED_DATA); - uint8_t led_off[15] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - uint8_t led_red[15] = {0, 50, 0, 0, 50, 0, 0, 50, 0, 0, 50, 0, 0, 50, 0}; - uint8_t led_red2[15] = {0, 0xFF, 0, 0, 0xFF, 0, 0, 0xFF, 0, 0, 0xFF, 0, 0, 0xFF, 0}; - while (true) { - ws2812_send_data(led_red2, sizeof(led_red2)); - vTaskDelay(pdMS_TO_TICKS(200)); - ws2812_send_data(led_red, sizeof(led_red)); - vTaskDelay(pdMS_TO_TICKS(200)); - ws2812_send_data(led_off, sizeof(led_off)); - vTaskDelay(pdMS_TO_TICKS(200)); - } -} - -void app_main(void) { - esp_err_t res; - - audio_init(); - - const esp_app_desc_t *app_description = esp_ota_get_app_description(); - ESP_LOGI(TAG, "App version: %s", app_description->version); - //ESP_LOGI(TAG, "Project name: %s", app_description->project_name); - - /* Initialize memory */ - uint8_t* framebuffer = heap_caps_malloc(ILI9341_BUFFER_SIZE, MALLOC_CAP_8BIT); - if (framebuffer == NULL) { - ESP_LOGE(TAG, "Failed to allocate framebuffer"); - esp_restart(); - } - memset(framebuffer, 0, ILI9341_BUFFER_SIZE); - - pax_buf_t* pax_buffer = malloc(sizeof(pax_buf_t)); - if (framebuffer == NULL) { - ESP_LOGE(TAG, "Failed to allocate buffer for PAX graphics library"); - esp_restart(); - } - memset(pax_buffer, 0, sizeof(pax_buf_t)); - - pax_buf_init(pax_buffer, framebuffer, ILI9341_WIDTH, ILI9341_HEIGHT, PAX_BUF_16_565RGB); - - /* Initialize hardware */ - - efuse_protect(); - - if (bsp_init() != ESP_OK) { - ESP_LOGE(TAG, "Failed to initialize basic board support functions"); - esp_restart(); - } - - ILI9341* ili9341 = get_ili9341(); - if (ili9341 == NULL) { - ESP_LOGE(TAG, "ili9341 is NULL"); - esp_restart(); - } - - /* Start NVS */ - res = nvs_init(); - if (res != ESP_OK) { - ESP_LOGE(TAG, "NVS init failed: %d", res); - display_fatal_error(pax_buffer, ili9341, "Failed to initialize", "NVS failed to initialize", "Flash may be corrupted", NULL); - stop(); - } - - display_boot_screen(pax_buffer, ili9341, "Starting..."); - - if (bsp_rp2040_init() != ESP_OK) { - ESP_LOGE(TAG, "Failed to initialize the RP2040 co-processor"); - display_fatal_error(pax_buffer, ili9341, "Failed to initialize", "RP2040 co-processor error", NULL, NULL); - stop(); - } - - RP2040* rp2040 = get_rp2040(); - if (rp2040 == NULL) { - ESP_LOGE(TAG, "rp2040 is NULL"); - stop(); - } - - rp2040_updater(rp2040, pax_buffer, ili9341); // Handle RP2040 firmware update & bootloader mode - - factory_test(pax_buffer, ili9341); - - /*uint8_t rp2040_uid[8]; - if (rp2040_get_uid(rp2040, rp2040_uid) != ESP_OK) { - ESP_LOGE(TAG, "Failed to get RP2040 UID"); - display_fatal_error(pax_buffer, ili9341, "Failed to initialize", "Failed to read UID", NULL, NULL); - stop(); - } - - printf("RP2040 UID: %02X%02X%02X%02X%02X%02X%02X%02X\n", rp2040_uid[0], rp2040_uid[1], rp2040_uid[2], rp2040_uid[3], rp2040_uid[4], rp2040_uid[5], rp2040_uid[6], rp2040_uid[7]);*/ - - if (bsp_ice40_init() != ESP_OK) { - ESP_LOGE(TAG, "Failed to initialize the ICE40 FPGA"); - display_fatal_error(pax_buffer, ili9341, "Failed to initialize", "ICE40 FPGA error", NULL, NULL); - stop(); - } - - ICE40* ice40 = get_ice40(); - if (ice40 == NULL) { - ESP_LOGE(TAG, "ice40 is NULL"); - stop(); - } - - /*display_boot_screen(pax_buffer, ili9341, "Initializing BNO055..."); - - if (bsp_bno055_init() != ESP_OK) { - ESP_LOGE(TAG, "Failed to initialize the BNO055 position sensor"); - display_fatal_error(pax_buffer, ili9341, "Failed to initialize", "BNO055 sensor error", "Check I2C bus", "Remove SAO and try again"); - stop(); - } - - BNO055* bno055 = get_bno055(); - if (bno055 == NULL) { - ESP_LOGE(TAG, "bno055 is NULL"); - stop(); - }*/ - - /*display_boot_screen(pax_buffer, ili9341, "Initializing BME680..."); - - if (bsp_bme680_init() != ESP_OK) { - ESP_LOGE(TAG, "Failed to initialize the BME680 position sensor"); - display_fatal_error(pax_buffer, ili9341, "Failed to initialize", "BME680 sensor error", "Check I2C bus", "Remove SAO and try again"); - stop(); - } - - BME680* bme680 = get_bme680(); - if (bme680 == NULL) { - ESP_LOGE(TAG, "bme680 is NULL"); - stop(); - }*/ - - //display_boot_screen(pax_buffer, ili9341, "Initializing AppFS..."); - - /* Start AppFS */ - res = appfs_init(); - if (res != ESP_OK) { - ESP_LOGE(TAG, "AppFS init failed: %d", res); - display_fatal_error(pax_buffer, ili9341, "Failed to initialize", "AppFS failed to initialize", "Flash may be corrupted", NULL); - stop(); - } - - //display_boot_screen(pax_buffer, ili9341, "Initializing filesystem..."); - - /* Start internal filesystem */ - const esp_partition_t* fs_partition = esp_partition_find_first(ESP_PARTITION_TYPE_DATA, ESP_PARTITION_SUBTYPE_DATA_FAT, "locfd"); - - wl_handle_t s_wl_handle = WL_INVALID_HANDLE; - - if (fs_partition != NULL) { - const esp_vfs_fat_mount_config_t mount_config = { - .format_if_mount_failed = true, - .max_files = 5, - .allocation_unit_size = 0, - }; - esp_err_t res = esp_vfs_fat_spiflash_mount("/internal", "locfd", &mount_config, &s_wl_handle); - if (res != ESP_OK) { - ESP_LOGE(TAG, "failed to mount locfd (%d)", res); - } else { - ESP_LOGI(TAG, "Internal filesystem mounted"); - } - } else { - ESP_LOGE(TAG, "locfd partition not found"); - } - - /* Start SD card filesystem */ - res = mount_sd(GPIO_SD_CMD, GPIO_SD_CLK, GPIO_SD_D0, GPIO_SD_PWR, "/sd", false, 5); - bool sdcard_ready = (res == ESP_OK); - if (sdcard_ready) { - ESP_LOGI(TAG, "SD card filesystem mounted"); - - /* LED power is on: start LED driver and turn LEDs off */ - ws2812_init(GPIO_LED_DATA); - const uint8_t led_off[15] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - ws2812_send_data(led_off, sizeof(led_off)); - } else { - gpio_set_level(GPIO_SD_PWR, 0); // Disable power to LEDs and SD card - } - - /* Start WiFi */ - wifi_init(); - - /* Check WebUSB mode */ - - uint8_t webusb_mode; - res = rp2040_get_webusb_mode(rp2040, &webusb_mode); - if (res != ESP_OK) { - ESP_LOGE(TAG, "Failed to read WebUSB mode: %d", res); - display_fatal_error(pax_buffer, ili9341, "Failed to initialize", "Failed to read WebUSB mode", NULL, NULL); - stop(); - } - - ESP_LOGI(TAG, "WebUSB mode 0x%02X", webusb_mode); - - if (webusb_mode == 0x00) { // Normal boot - /* Rick that roll */ - play_bootsound(); - - /* Launcher menu */ - while (true) { - menu_start(rp2040->queue, pax_buffer, ili9341, app_description->version); - } - } else if (webusb_mode == 0x01) { - display_boot_screen(pax_buffer, ili9341, "WebUSB mode"); - while (true) { - webusb_main(rp2040->queue, pax_buffer, ili9341); - } - } else if (webusb_mode == 0x02) { - display_boot_screen(pax_buffer, ili9341, "FPGA download mode"); - while (true) { - fpga_download(rp2040->queue, get_ice40(), pax_buffer, ili9341); - } - } else { - char buffer[64]; - snprintf(buffer, sizeof(buffer), "Invalid mode 0x%02X", webusb_mode); - display_boot_screen(pax_buffer, ili9341, buffer); - } - - free(framebuffer); +void app_main() { + // Init HW. + bsp_init(); + bsp_rp2040_init(); + buttonQueue = get_rp2040()->queue; + + // Init GFX. + pax_buf_init(&buf, NULL, 320, 240, PAX_BUF_16_565RGB); + + // Show some hello world. + pax_background(&buf, 0xffff00ff); + disp_flush(); + + // Just wait. + while (1) vTaskDelay(10000); } diff --git a/main/menu.c b/main/menu.c deleted file mode 100644 index 2deba87..0000000 --- a/main/menu.c +++ /dev/null @@ -1,296 +0,0 @@ -#include -#include -#include "pax_gfx.h" -#include "pax_codecs.h" -#include "menu.h" - -menu_t* menu_alloc(const char* aTitle, float arg_entry_height, float arg_text_height) { - if (aTitle == NULL) return NULL; - menu_t* menu = malloc(sizeof(menu_t)); - if (menu == NULL) return NULL; - size_t titleSize = strlen(aTitle) + 1; - menu->title = malloc(titleSize); - if (menu->title == NULL) { - free(menu); - return NULL; - } - memcpy(menu->title, aTitle, titleSize); - menu->firstItem = NULL; - menu->length = 0; - menu->position = 0; - menu->entry_height = (arg_entry_height > 0) ? arg_entry_height : 20; - menu->text_height = (arg_text_height > 0) ? arg_text_height : (arg_entry_height - 2); - menu->icon = NULL; - - menu->fgColor = 0xFF000000; - menu->bgColor = 0xFFFFFFFF; - menu->bgTextColor = 0xFFFFFFFF; - menu->selectedItemColor = 0xFF000000; - menu->borderColor = 0x88000000; - menu->titleColor = 0xFFFFFFFF; - menu->titleBgColor = 0xFF000000; - menu->scrollbarBgColor = 0xFFCCCCCC; - menu->scrollbarFgColor = 0xFF555555; - - return menu; -} - -void _menu_free_item(menu_item_t* aMenuItem) { - free(aMenuItem->label); - free(aMenuItem); -} - -void menu_free(menu_t* aMenu) { - if (aMenu == NULL) return; - free(aMenu->title); - menu_item_t* currentItem = aMenu->firstItem; - while (currentItem != NULL) { - menu_item_t* nextItem = currentItem->nextItem; - _menu_free_item(currentItem); - currentItem = nextItem; - } - free(aMenu); -} - -void menu_set_icon(menu_t* aMenu, pax_buf_t* icon) { - aMenu->icon = icon; -} - -menu_item_t* _menu_find_item(menu_t* aMenu, size_t aPosition) { - menu_item_t* currentItem = aMenu->firstItem; - if (currentItem == NULL) return NULL; - size_t index = 0; - while (index < aPosition) { - if (currentItem->nextItem == NULL) break; - currentItem = currentItem->nextItem; - index++; - } - return currentItem; -} - -menu_item_t* _menu_find_last_item(menu_t* aMenu) { - menu_item_t* lastItem = aMenu->firstItem; - if (lastItem == NULL) return NULL; - while (lastItem->nextItem != NULL) { - lastItem = lastItem->nextItem; - } - return lastItem; -} - -bool menu_insert_item(menu_t* aMenu, const char* aLabel, menu_callback_t aCallback, void* aCallbackArgs, size_t aPosition) { - if (aMenu == NULL) return false; - menu_item_t* newItem = malloc(sizeof(menu_item_t)); - if (newItem == NULL) return false; - size_t labelSize = strlen(aLabel) + 1; - newItem->label = malloc(labelSize); - if (newItem->label == NULL) { - free(newItem); - return false; - } - memcpy(newItem->label, aLabel, labelSize); - newItem->callback = aCallback; - newItem->callbackArgs = aCallbackArgs; - newItem->icon = NULL; - if (aMenu->firstItem == NULL) { - newItem->nextItem = NULL; - newItem->previousItem = NULL; - aMenu->firstItem = newItem; - } else { - if (aPosition >= aMenu->length) { - newItem->previousItem = _menu_find_last_item(aMenu); - newItem->nextItem = NULL; - newItem->previousItem->nextItem = newItem; - } else { - newItem->nextItem = _menu_find_item(aMenu, aPosition); - newItem->previousItem = newItem->nextItem->previousItem; // Copy pointer to previous item to new item - if (newItem->nextItem != NULL) newItem->nextItem->previousItem = newItem; // Replace pointer to previous item with new item - if (newItem->previousItem != NULL) newItem->previousItem->nextItem = newItem; // Replace pointer to next item in previous item - } - } - aMenu->length++; - return true; -} - -bool menu_insert_item_icon(menu_t* aMenu, const char* aLabel, menu_callback_t aCallback, void* aCallbackArgs, size_t aPosition, pax_buf_t* icon) { - if (!menu_insert_item(aMenu, aLabel, aCallback, aCallbackArgs, aPosition)) { - return false; - } - menu_item_t* item; - if (aPosition >= aMenu->length - 1) { - item = _menu_find_last_item(aMenu); - } else { - item = _menu_find_item(aMenu, aPosition); - } - - item->icon = icon; - return true; -} - -bool menu_remove_item(menu_t* aMenu, size_t aPosition) { - if (aMenu == NULL) return false; // Can't delete an item from a menu that doesn't exist - if (aMenu->length <= aPosition) return false; // Can't delete an item that doesn't exist - menu_item_t* item; - - if (aPosition == 0) { - item = aMenu->firstItem; - if (item == NULL) return false; // Can't delete if no linked list is allocated - if (item->nextItem != NULL) { - aMenu->firstItem = item->nextItem; - aMenu->firstItem->previousItem = NULL; - } else { - aMenu->firstItem = NULL; - } - } else { - item = _menu_find_item(aMenu, aPosition); - if (item == NULL) return false; - if (item->previousItem != NULL) item->previousItem->nextItem = item->nextItem; - if (item->nextItem != NULL) item->nextItem->previousItem = item->previousItem; - } - free(item->label); - free(item); - aMenu->length--; - return true; -} - -bool menu_navigate_to(menu_t* aMenu, size_t aPosition) { - if (aMenu == NULL) return false; - if (aMenu->length < 1) return false; - aMenu->position = aPosition; - if (aMenu->position >= aMenu->length) aMenu->position = aMenu->length - 1; - return true; -} - -void menu_navigate_previous(menu_t* aMenu) { - if (aMenu == NULL) return; - if (aMenu->length < 1) return; - aMenu->position--; - if (aMenu->position > aMenu->length) { - aMenu->position = aMenu->length - 1; - } -} - -void menu_navigate_next(menu_t* aMenu) { - if (aMenu == NULL) return; - if (aMenu->length < 1) return; - aMenu->position = (aMenu->position + 1) % aMenu->length; -} - -size_t menu_get_position(menu_t* aMenu) { - return aMenu->position; -} - -size_t menu_get_length(menu_t* aMenu) { - return aMenu->length; -} - -void* menu_get_callback_args(menu_t* aMenu, size_t aPosition) { - menu_item_t* item = _menu_find_item(aMenu, aPosition); - if (item == NULL) return NULL; - return item->callbackArgs; -} - -void menu_debug(menu_t* aMenu) { - if (aMenu == NULL) { - printf("Menu pointer is NULL\n"); - return; - } - printf("Title: %s\n", aMenu->title); - printf("Length: %u\n", aMenu->length); - printf("Position: %u\n", aMenu->position); - menu_item_t* item = aMenu->firstItem; - if (item == NULL) { - printf("Menu contains no items\n"); - } else { - while (item != NULL) { - printf("> %s\n", item->label); - item = item->nextItem; - } - } - printf("------\n"); -} - -void menu_render(pax_buf_t *aBuffer, menu_t* aMenu, float aPosX, float aPosY, float aWidth, float aHeight, pax_col_t aColor) { - const pax_font_t *font = pax_get_font("saira regular"); - - float entry_height = aMenu->entry_height;//18 + 2; - float text_height = aMenu->text_height; - float text_offset = ((entry_height - text_height) / 2) + 1; - size_t maxItems = aHeight / entry_height; - - float posY = aPosY; - - pax_noclip(aBuffer); - - if (maxItems > 1) { - float offsetX = 0; - if (aMenu->icon != NULL) { - offsetX = aMenu->icon->width; - } - - maxItems--; - pax_simple_rect(aBuffer, aMenu->titleBgColor, aPosX, posY, aWidth, entry_height); - //pax_simple_line(aBuffer, aMenu->titleColor, aPosX + 1, aPosY + entry_height, aPosX + aWidth - 2, aPosY + entry_height - 1); - pax_clip(aBuffer, aPosX + 1, posY + text_offset, aWidth - 2, text_height); - pax_draw_text(aBuffer, aMenu->titleColor, font, text_height, aPosX + offsetX + 1, posY + text_offset, aMenu->title); - pax_noclip(aBuffer); - if (aMenu->icon != NULL) { - pax_draw_image(aBuffer, aMenu->icon, aPosX, posY); - } - posY += entry_height; - } - - size_t itemOffset = 0; - if (aMenu->position >= maxItems) { - itemOffset = aMenu->position - maxItems + 1; - } - - pax_outline_rect(aBuffer, aMenu->borderColor, aPosX, aPosY, aWidth, aHeight); - pax_simple_rect(aBuffer, aMenu->bgColor, aPosX, posY, aWidth, aHeight - posY + aPosY); - - for (size_t index = itemOffset; (index < itemOffset + maxItems) && (index < aMenu->length); index++) { - menu_item_t* item = _menu_find_item(aMenu, index); - if (item == NULL) { - printf("Render error: item is NULL at %u\n", index); - break; - } - - float iconWidth = 0; - if (item->icon != NULL) { - iconWidth = item->icon->width + 1; - } - - if (index == aMenu->position) { - pax_simple_rect(aBuffer, aMenu->selectedItemColor, aPosX + 1, posY, aWidth - 2, entry_height); - pax_clip(aBuffer, aPosX + 1, posY + text_offset, aWidth - 4, text_height); - pax_draw_text(aBuffer, aMenu->bgTextColor, font, text_height, aPosX + iconWidth + 1, posY + text_offset, item->label); - pax_noclip(aBuffer); - } else { - pax_simple_rect(aBuffer, aMenu->bgColor, aPosX + 1, posY, aWidth - 2, entry_height); - pax_clip(aBuffer, aPosX + 1, posY + text_offset, aWidth - 4, text_height); - pax_draw_text(aBuffer, aMenu->fgColor, font, text_height, aPosX + iconWidth + 1, posY + text_offset, item->label); - pax_noclip(aBuffer); - } - - if (item->icon != NULL) { - pax_draw_image(aBuffer, item->icon, aPosX + 1, posY); - } - - posY += entry_height; - } - - pax_clip(aBuffer, aPosX + aWidth - 5, aPosY + entry_height, 4, aHeight - 1 - entry_height); - - float fractionStart = itemOffset / (aMenu->length * 1.0); - float fractionSelected = aMenu->position / (aMenu->length * 1.0); - float fractionEnd = (itemOffset + maxItems) / (aMenu->length * 1.0); - if (fractionEnd > 1.0) fractionEnd = 1.0; - - float scrollbarHeight = aHeight - entry_height; - float scrollbarStart = scrollbarHeight * fractionStart; - float scrollbarEnd = scrollbarHeight * fractionEnd; - - pax_simple_rect(aBuffer, aMenu->scrollbarBgColor, aPosX + aWidth - 5, aPosY + entry_height - 1, 4, scrollbarHeight); - pax_simple_rect(aBuffer, aMenu->scrollbarFgColor, aPosX + aWidth - 5, aPosY + entry_height - 1 + scrollbarStart, 4, scrollbarEnd - scrollbarStart); - - pax_noclip(aBuffer); -} diff --git a/main/menus/dev.c b/main/menus/dev.c deleted file mode 100644 index 25e6126..0000000 --- a/main/menus/dev.c +++ /dev/null @@ -1,150 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "appfs.h" -#include "ili9341.h" -#include "pax_gfx.h" -#include "pax_codecs.h" -#include "menu.h" -#include "rp2040.h" -#include "launcher.h" -#include "settings.h" -#include "dev.h" -#include "fpga_download.h" -#include "hardware.h" -#include "file_browser.h" -#include "fpga_test.h" -#include "animation.h" -#include "button_test.h" -#include "adc_test.h" - -extern const uint8_t dev_png_start[] asm("_binary_dev_png_start"); -extern const uint8_t dev_png_end[] asm("_binary_dev_png_end"); - -typedef enum action { - ACTION_NONE, - ACTION_BACK, - ACTION_FPGA_DL, - ACTION_FPGA_TEST, - ACTION_FILE_BROWSER, - ACTION_FILE_BROWSER_INT, - ACTION_ANIMATION, - ACTION_BUTTON_TEST, - ACTION_ADC_TEST -} menu_dev_action_t; - -void render_dev_help(pax_buf_t* pax_buffer) { - const pax_font_t *font = pax_get_font("saira regular"); - pax_background(pax_buffer, 0xFFFFFF); - pax_noclip(pax_buffer); - pax_draw_text(pax_buffer, 0xFF000000, font, 18, 5, 240 - 18, "[A] accept [B] back"); -} - -void menu_dev(xQueueHandle buttonQueue, pax_buf_t* pax_buffer, ILI9341* ili9341) { - menu_t* menu = menu_alloc("Development tools", 34, 18); - - menu->fgColor = 0xFF000000; - menu->bgColor = 0xFFFFFFFF; - menu->bgTextColor = 0xFF000000; - menu->selectedItemColor = 0xFFfec859; - menu->borderColor = 0xFFfa448c; - menu->titleColor = 0xFFfec859; - menu->titleBgColor = 0xFFfa448c; - menu->scrollbarBgColor = 0xFFCCCCCC; - menu->scrollbarFgColor = 0xFF555555; - - pax_buf_t icon_dev; - pax_decode_png_buf(&icon_dev, (void*) dev_png_start, dev_png_end - dev_png_start, PAX_BUF_32_8888ARGB, 0); - - menu_set_icon(menu, &icon_dev); - - menu_insert_item(menu, "FPGA download mode", NULL, (void*) ACTION_FPGA_DL, -1); - menu_insert_item(menu, "FPGA selftest", NULL, (void*) ACTION_FPGA_TEST, -1); - menu_insert_item(menu, "File browser (SD card)", NULL, (void*) ACTION_FILE_BROWSER, -1); - menu_insert_item(menu, "File browser (internal)", NULL, (void*) ACTION_FILE_BROWSER_INT, -1); - menu_insert_item(menu, "Animation", NULL, (void*) ACTION_ANIMATION, -1); - menu_insert_item(menu, "Button test", NULL, (void*) ACTION_BUTTON_TEST, -1); - menu_insert_item(menu, "Analog inputs", NULL, (void*) ACTION_ADC_TEST, -1); - - bool render = true; - menu_dev_action_t action = ACTION_NONE; - - render_dev_help(pax_buffer); - - while (1) { - rp2040_input_message_t buttonMessage = {0}; - if (xQueueReceive(buttonQueue, &buttonMessage, 16 / portTICK_PERIOD_MS) == pdTRUE) { - uint8_t pin = buttonMessage.input; - bool value = buttonMessage.state; - switch(pin) { - case RP2040_INPUT_JOYSTICK_DOWN: - if (value) { - menu_navigate_next(menu); - render = true; - } - break; - case RP2040_INPUT_JOYSTICK_UP: - if (value) { - menu_navigate_previous(menu); - render = true; - } - break; - case RP2040_INPUT_BUTTON_HOME: - case RP2040_INPUT_BUTTON_BACK: - if (value) { - action = ACTION_BACK; - } - break; - case RP2040_INPUT_BUTTON_ACCEPT: - case RP2040_INPUT_JOYSTICK_PRESS: - case RP2040_INPUT_BUTTON_SELECT: - case RP2040_INPUT_BUTTON_START: - if (value) { - action = (menu_dev_action_t) menu_get_callback_args(menu, menu_get_position(menu)); - } - break; - default: - break; - } - } - - if (render) { - menu_render(pax_buffer, menu, 0, 0, 320, 220, 0xFF491d88); - ili9341_write(ili9341, pax_buffer->buf); - render = false; - } - - if (action != ACTION_NONE) { - if (action == ACTION_FPGA_DL) { - fpga_download(buttonQueue, get_ice40(), pax_buffer, ili9341); - } else if (action == ACTION_FPGA_TEST) { - fpga_test(buttonQueue, pax_buffer, ili9341); - } else if (action == ACTION_FILE_BROWSER) { - file_browser(buttonQueue, pax_buffer, ili9341, "/sd"); - } else if (action == ACTION_FILE_BROWSER_INT) { - file_browser(buttonQueue, pax_buffer, ili9341, "/internal"); - } else if (action == ACTION_ANIMATION) { - display_animation(pax_buffer, ili9341); - } else if (action == ACTION_BUTTON_TEST) { - test_buttons(buttonQueue, pax_buffer, ili9341); - } else if (action == ACTION_ADC_TEST) { - test_adc(buttonQueue, pax_buffer, ili9341); - } else if (action == ACTION_BACK) { - break; - } - action = ACTION_NONE; - render = true; - render_dev_help(pax_buffer); - } - } - - menu_free(menu); - - pax_buf_destroy(&icon_dev); -} diff --git a/main/menus/dev.h b/main/menus/dev.h deleted file mode 100644 index 4a93d42..0000000 --- a/main/menus/dev.h +++ /dev/null @@ -1,8 +0,0 @@ -#include -#include -#include -#include -#include "pax_gfx.h" -#include "ili9341.h" - -void menu_dev(xQueueHandle buttonQueue, pax_buf_t* pax_buffer, ILI9341* ili9341); diff --git a/main/menus/launcher.c b/main/menus/launcher.c deleted file mode 100644 index b9f204e..0000000 --- a/main/menus/launcher.c +++ /dev/null @@ -1,134 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "appfs.h" -#include "ili9341.h" -#include "pax_gfx.h" -#include "pax_codecs.h" -#include "menu.h" -#include "rp2040.h" -#include "appfs_wrapper.h" - -extern const uint8_t apps_png_start[] asm("_binary_apps_png_start"); -extern const uint8_t apps_png_end[] asm("_binary_apps_png_end"); - -typedef enum { - ACTION_NONE, - ACTION_APPFS, - ACTION_BACK -} menu_launcher_action_t; - -typedef struct { - appfs_handle_t fd; - menu_launcher_action_t action; -} menu_launcher_args_t; - -void menu_launcher(xQueueHandle buttonQueue, pax_buf_t* pax_buffer, ILI9341* ili9341) { - menu_t* menu = menu_alloc("Apps", 34, 18); - - menu->fgColor = 0xFF000000; - menu->bgColor = 0xFFFFFFFF; - menu->bgTextColor = 0xFFFFFFFF; - menu->selectedItemColor = 0xFFfa448c; - menu->borderColor = 0xFF491d88; - menu->titleColor = 0xFFfa448c; - menu->titleBgColor = 0xFF491d88; - menu->scrollbarBgColor = 0xFFCCCCCC; - menu->scrollbarFgColor = 0xFF555555; - - pax_buf_t icon_apps; - pax_decode_png_buf(&icon_apps, (void*) apps_png_start, apps_png_end - apps_png_start, PAX_BUF_32_8888ARGB, 0); - - menu_set_icon(menu, &icon_apps); - - const pax_font_t *font = pax_get_font("saira regular"); - - appfs_handle_t appfs_fd = APPFS_INVALID_FD; - while (1) { - appfs_fd = appfsNextEntry(appfs_fd); - if (appfs_fd == APPFS_INVALID_FD) break; - const char* name = NULL; - appfsEntryInfo(appfs_fd, &name, NULL); - menu_launcher_args_t* args = malloc(sizeof(menu_launcher_args_t)); - args->fd = appfs_fd; - args->action = ACTION_APPFS; - menu_insert_item(menu, name, NULL, (void*) args, -1); - } - - bool render = true; - menu_launcher_args_t* menuArgs = NULL; - - pax_background(pax_buffer, 0xFFFFFF); - pax_noclip(pax_buffer); - pax_draw_text(pax_buffer, 0xFF000000, font, 18, 5, 240 - 18, "[A] start app [B] back"); - - bool quit = false; - - while (1) { - rp2040_input_message_t buttonMessage = {0}; - if (xQueueReceive(buttonQueue, &buttonMessage, 16 / portTICK_PERIOD_MS) == pdTRUE) { - uint8_t pin = buttonMessage.input; - bool value = buttonMessage.state; - switch(pin) { - case RP2040_INPUT_JOYSTICK_DOWN: - if (value) { - menu_navigate_next(menu); - render = true; - } - break; - case RP2040_INPUT_JOYSTICK_UP: - if (value) { - menu_navigate_previous(menu); - render = true; - } - break; - case RP2040_INPUT_BUTTON_HOME: - case RP2040_INPUT_BUTTON_BACK: - if (value) { - quit = true; - } - break; - case RP2040_INPUT_BUTTON_ACCEPT: - case RP2040_INPUT_JOYSTICK_PRESS: - case RP2040_INPUT_BUTTON_SELECT: - case RP2040_INPUT_BUTTON_START: - if (value) { - menuArgs = menu_get_callback_args(menu, menu_get_position(menu)); - } - break; - default: - break; - } - } - - if (render) { - menu_render(pax_buffer, menu, 0, 0, 320, 220, 0xFF491d88); - ili9341_write(ili9341, pax_buffer->buf); - render = false; - } - - if (menuArgs != NULL) { - if (menuArgs->action == ACTION_APPFS) { - appfs_boot_app(menuArgs->fd); - } - break; - } - - if (quit) { - break; - } - } - - for (size_t index = 0; index < menu_get_length(menu); index++) { - free(menu_get_callback_args(menu, index)); - } - - menu_free(menu); - pax_buf_destroy(&icon_apps); -} diff --git a/main/menus/launcher.h b/main/menus/launcher.h deleted file mode 100644 index 993c706..0000000 --- a/main/menus/launcher.h +++ /dev/null @@ -1,8 +0,0 @@ -#include -#include -#include -#include -#include "pax_gfx.h" -#include "ili9341.h" - -void menu_launcher(xQueueHandle buttonQueue, pax_buf_t* pax_buffer, ILI9341* ili9341); diff --git a/main/menus/settings.c b/main/menus/settings.c deleted file mode 100644 index 2057e65..0000000 --- a/main/menus/settings.c +++ /dev/null @@ -1,144 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "appfs.h" -#include "ili9341.h" -#include "pax_gfx.h" -#include "pax_codecs.h" -#include "menu.h" -#include "rp2040.h" -#include "appfs_wrapper.h" -#include "hardware.h" -#include "system_wrapper.h" -#include "bootscreen.h" -#include "wifi_connect.h" -#include "wifi_ota.h" -#include "wifi.h" -#include "uninstall.h" - -extern const uint8_t settings_png_start[] asm("_binary_settings_png_start"); -extern const uint8_t settings_png_end[] asm("_binary_settings_png_end"); - -typedef enum action { - ACTION_NONE, - ACTION_BACK, - ACTION_WIFI, - ACTION_OTA, - ACTION_RP2040_BL, - ACTION_UNINSTALL -} menu_settings_action_t; - -void render_settings_help(pax_buf_t* pax_buffer) { - const pax_font_t *font = pax_get_font("saira regular"); - pax_background(pax_buffer, 0xFFFFFF); - pax_noclip(pax_buffer); - pax_draw_text(pax_buffer, 0xFF000000, font, 18, 5, 240 - 18, "[A] accept [B] back"); -} - -void menu_settings(xQueueHandle buttonQueue, pax_buf_t* pax_buffer, ILI9341* ili9341) { - menu_t* menu = menu_alloc("Settings", 34, 18); - - menu->fgColor = 0xFF000000; - menu->bgColor = 0xFFFFFFFF; - menu->bgTextColor = 0xFFFFFFFF; - menu->selectedItemColor = 0xFF491d88; - menu->borderColor = 0xFF43b5a0; - menu->titleColor = 0xFF491d88; - menu->titleBgColor = 0xFF43b5a0; - menu->scrollbarBgColor = 0xFFCCCCCC; - menu->scrollbarFgColor = 0xFF555555; - - pax_buf_t icon_settings; - pax_decode_png_buf(&icon_settings, (void*) settings_png_start, settings_png_end - settings_png_start, PAX_BUF_32_8888ARGB, 0); - - menu_set_icon(menu, &icon_settings); - - menu_insert_item(menu, "WiFi configuration", NULL, (void*) ACTION_WIFI, -1); - menu_insert_item(menu, "Firmware update", NULL, (void*) ACTION_OTA, -1); - menu_insert_item(menu, "Flash RP2040 firmware", NULL, (void*) ACTION_RP2040_BL, -1); - menu_insert_item(menu, "Uninstall app", NULL, (void*) ACTION_UNINSTALL, -1); - - bool render = true; - menu_settings_action_t action = ACTION_NONE; - - render_settings_help(pax_buffer); - - while (1) { - rp2040_input_message_t buttonMessage = {0}; - if (xQueueReceive(buttonQueue, &buttonMessage, 16 / portTICK_PERIOD_MS) == pdTRUE) { - uint8_t pin = buttonMessage.input; - bool value = buttonMessage.state; - switch(pin) { - case RP2040_INPUT_JOYSTICK_DOWN: - if (value) { - menu_navigate_next(menu); - render = true; - } - break; - case RP2040_INPUT_JOYSTICK_UP: - if (value) { - menu_navigate_previous(menu); - render = true; - } - break; - case RP2040_INPUT_BUTTON_HOME: - case RP2040_INPUT_BUTTON_BACK: - if (value) { - action = ACTION_BACK; - } - break; - case RP2040_INPUT_BUTTON_ACCEPT: - case RP2040_INPUT_JOYSTICK_PRESS: - case RP2040_INPUT_BUTTON_SELECT: - case RP2040_INPUT_BUTTON_START: - if (value) { - action = (menu_settings_action_t) menu_get_callback_args(menu, menu_get_position(menu)); - } - break; - default: - break; - } - } - - if (render) { - menu_render(pax_buffer, menu, 0, 0, 320, 220, 0xFF491d88); - ili9341_write(ili9341, pax_buffer->buf); - render = false; - } - - if (action != ACTION_NONE) { - if (action == ACTION_RP2040_BL) { - display_boot_screen(pax_buffer, ili9341, "Please wait..."); - rp2040_reboot_to_bootloader(get_rp2040()); - esp_restart(); - } else if (action == ACTION_OTA) { - display_boot_screen(pax_buffer, ili9341, "Connecting to WiFi..."); - if (wifi_connect_to_stored()) { - display_boot_screen(pax_buffer, ili9341, "Starting firmware update..."); - ota_update(pax_buffer, ili9341); - } else { - display_boot_screen(pax_buffer, ili9341, "Failed to connect to WiFi"); - vTaskDelay(500 / portTICK_PERIOD_MS); - } - } else if (action == ACTION_WIFI) { - menu_wifi(buttonQueue, pax_buffer, ili9341); - } else if (action == ACTION_UNINSTALL) { - uninstall_browser(buttonQueue, pax_buffer, ili9341); - } else if (action == ACTION_BACK) { - break; - } - render = true; - action = ACTION_NONE; - render_settings_help(pax_buffer); - } - } - - menu_free(menu); - pax_buf_destroy(&icon_settings); -} diff --git a/main/menus/settings.h b/main/menus/settings.h deleted file mode 100644 index baedbc1..0000000 --- a/main/menus/settings.h +++ /dev/null @@ -1,8 +0,0 @@ -#include -#include -#include -#include -#include "pax_gfx.h" -#include "ili9341.h" - -void menu_settings(xQueueHandle buttonQueue, pax_buf_t* pax_buffer, ILI9341* ili9341); diff --git a/main/menus/start.c b/main/menus/start.c deleted file mode 100644 index ce2b703..0000000 --- a/main/menus/start.c +++ /dev/null @@ -1,186 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "appfs.h" -#include "ili9341.h" -#include "pax_gfx.h" -#include "pax_codecs.h" -#include "menu.h" -#include "rp2040.h" -#include "launcher.h" -#include "settings.h" -#include "dev.h" -#include "bootscreen.h" -#include "hardware.h" -#include "math.h" - -extern const uint8_t home_png_start[] asm("_binary_home_png_start"); -extern const uint8_t home_png_end[] asm("_binary_home_png_end"); - -extern const uint8_t apps_png_start[] asm("_binary_apps_png_start"); -extern const uint8_t apps_png_end[] asm("_binary_apps_png_end"); - -extern const uint8_t hatchery_png_start[] asm("_binary_hatchery_png_start"); -extern const uint8_t hatchery_png_end[] asm("_binary_hatchery_png_end"); - -extern const uint8_t dev_png_start[] asm("_binary_dev_png_start"); -extern const uint8_t dev_png_end[] asm("_binary_dev_png_end"); - -extern const uint8_t settings_png_start[] asm("_binary_settings_png_start"); -extern const uint8_t settings_png_end[] asm("_binary_settings_png_end"); - -typedef enum action { - ACTION_NONE, - ACTION_APPS, - ACTION_HATCHERY, - ACTION_DEV, - ACTION_SETTINGS -} menu_start_action_t; - -void render_start_help(pax_buf_t* pax_buffer, const char* text) { - const pax_font_t *font = pax_get_font("saira regular"); - pax_background(pax_buffer, 0xFFFFFF); - pax_noclip(pax_buffer); - pax_draw_text(pax_buffer, 0xFF491d88, font, 18, 5, 240 - 18, "[A] accept"); - pax_vec1_t version_size = pax_text_size(font, 18, text); - pax_draw_text(pax_buffer, 0xFF491d88, font, 18, 320 - 5 - version_size.x, 240 - 18, text); -} - -void menu_start(xQueueHandle buttonQueue, pax_buf_t* pax_buffer, ILI9341* ili9341, const char* version) { - menu_t* menu = menu_alloc("Main menu", 34, 18); - - menu->fgColor = 0xFF000000; - menu->bgColor = 0xFFFFFFFF; - menu->bgTextColor = 0xFF000000; - menu->selectedItemColor = 0xFFfec859; - menu->borderColor = 0xFF491d88; - menu->titleColor = 0xFFfec859; - menu->titleBgColor = 0xFF491d88; - menu->scrollbarBgColor = 0xFFCCCCCC; - menu->scrollbarFgColor = 0xFF555555; - - pax_buf_t icon_home; - pax_decode_png_buf(&icon_home, (void*) home_png_start, home_png_end - home_png_start, PAX_BUF_32_8888ARGB, 0); - pax_buf_t icon_apps; - pax_decode_png_buf(&icon_apps, (void*) apps_png_start, apps_png_end - apps_png_start, PAX_BUF_32_8888ARGB, 0); - pax_buf_t icon_hatchery; - pax_decode_png_buf(&icon_hatchery, (void*) hatchery_png_start, hatchery_png_end - hatchery_png_start, PAX_BUF_32_8888ARGB, 0); - pax_buf_t icon_dev; - pax_decode_png_buf(&icon_dev, (void*) dev_png_start, dev_png_end - dev_png_start, PAX_BUF_32_8888ARGB, 0); - pax_buf_t icon_settings; - pax_decode_png_buf(&icon_settings, (void*) settings_png_start, settings_png_end - settings_png_start, PAX_BUF_32_8888ARGB, 0); - - menu_set_icon(menu, &icon_home); - - menu_insert_item_icon(menu, "Apps", NULL, (void*) ACTION_APPS, -1, &icon_apps); - menu_insert_item_icon(menu, "Hatchery", NULL, (void*) ACTION_HATCHERY, -1, &icon_hatchery); - menu_insert_item_icon(menu, "Development tools", NULL, (void*) ACTION_DEV, -1, &icon_dev); - menu_insert_item_icon(menu, "Settings", NULL, (void*) ACTION_SETTINGS, -1, &icon_settings); - - - bool render = true; - menu_start_action_t action = ACTION_NONE; - - uint8_t analogReadTimer = 0; - float battery_voltage = 0; - float usb_voltage = 0; - //uint8_t rp2040_usb = 0; - - // Calculated: - uint8_t battery_percent = 0; - bool battery_charging = false; - - RP2040* rp2040 = get_rp2040(); - - while (1) { - rp2040_input_message_t buttonMessage = {0}; - if (xQueueReceive(buttonQueue, &buttonMessage, 100 / portTICK_PERIOD_MS) == pdTRUE) { - uint8_t pin = buttonMessage.input; - bool value = buttonMessage.state; - switch(pin) { - case RP2040_INPUT_JOYSTICK_DOWN: - if (value) { - menu_navigate_next(menu); - render = true; - } - break; - case RP2040_INPUT_JOYSTICK_UP: - if (value) { - menu_navigate_previous(menu); - render = true; - } - break; - case RP2040_INPUT_BUTTON_ACCEPT: - case RP2040_INPUT_JOYSTICK_PRESS: - case RP2040_INPUT_BUTTON_SELECT: - case RP2040_INPUT_BUTTON_START: - if (value) { - action = (menu_start_action_t) menu_get_callback_args(menu, menu_get_position(menu)); - } - break; - default: - break; - } - } - - if (analogReadTimer > 0) { - analogReadTimer--; - } else { - analogReadTimer = 10; // No need to update these values really quickly - if (rp2040_read_vbat(rp2040, &battery_voltage) != ESP_OK) { - battery_voltage = 0; - } - if (rp2040_read_vusb(rp2040, &usb_voltage) != ESP_OK) { - usb_voltage = 0; - } - - if (battery_voltage >= 3.6) { - battery_percent = ((battery_voltage - 3.6) * 100) / (4.2 - 3.6); - if (battery_percent > 100) battery_percent = 100; - } else { - battery_percent = 0; - } - - battery_charging = (usb_voltage > 4.0) && (battery_percent < 100); - - render = true; - } - - if (render) { - char textBuffer[64]; - snprintf(textBuffer, sizeof(textBuffer), "B%1.1fv U%1.1fv %03u%%%c v%s", battery_voltage, usb_voltage, battery_percent, battery_charging ? '+' : ' ', version); - render_start_help(pax_buffer, textBuffer); - menu_render(pax_buffer, menu, 0, 0, 320, 220, 0xFF491d88); - ili9341_write(ili9341, pax_buffer->buf); - render = false; - } - - if (action != ACTION_NONE) { - if (action == ACTION_APPS) { - menu_launcher(buttonQueue, pax_buffer, ili9341); - } else if (action == ACTION_HATCHERY) { - // Not implemented - display_boot_screen(pax_buffer, ili9341, "Not implemented"); - } else if (action == ACTION_SETTINGS) { - menu_settings(buttonQueue, pax_buffer, ili9341); - } else if (action == ACTION_DEV) { - menu_dev(buttonQueue, pax_buffer, ili9341); - } - action = ACTION_NONE; - render = true; - } - } - - menu_free(menu); - pax_buf_destroy(&icon_home); - pax_buf_destroy(&icon_apps); - pax_buf_destroy(&icon_hatchery); - pax_buf_destroy(&icon_dev); - pax_buf_destroy(&icon_settings); -} diff --git a/main/menus/start.h b/main/menus/start.h deleted file mode 100644 index 88c8ab7..0000000 --- a/main/menus/start.h +++ /dev/null @@ -1,8 +0,0 @@ -#include -#include -#include -#include -#include "pax_gfx.h" -#include "ili9341.h" - -void menu_start(xQueueHandle buttonQueue, pax_buf_t* pax_buffer, ILI9341* ili9341, const char* version); diff --git a/main/menus/wifi.c b/main/menus/wifi.c deleted file mode 100644 index d612074..0000000 --- a/main/menus/wifi.c +++ /dev/null @@ -1,535 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "appfs.h" -#include "ili9341.h" -#include "pax_gfx.h" -#include "menu.h" -#include "rp2040.h" -#include "appfs_wrapper.h" -#include "hardware.h" -#include "system_wrapper.h" -#include "bootscreen.h" -#include "wifi_connect.h" -#include "wifi_connection.h" -#include "wifi_ota.h" -#include "graphics_wrapper.h" - -static const char *TAG = "wifi menu"; - -typedef enum action { - /* ==== GENERIC ACTIONS ==== */ - // Nothing happens. - ACTION_NONE, - // Go back to the parent menu. - ACTION_BACK, - - /* ==== MAIN MENU ACTIONS ==== */ - // Show the current WiFi settings. - ACTION_SHOW, - // Scan for networks and pick one to connect to. - ACTION_SCAN, - // Manually edit the current WiFi settings. - ACTION_MANUAL, - - /* ==== AUTH MODES ==== */ - ACTION_AUTH_OPEN, - ACTION_AUTH_WEP, - ACTION_AUTH_WPA_PSK, - ACTION_AUTH_WPA2_PSK, - ACTION_AUTH_WPA_WPA2_PSK, - ACTION_AUTH_WPA2_ENTERPRISE, - ACTION_AUTH_WPA3_PSK, - ACTION_AUTH_WPA2_WPA3_PSK, - ACTION_AUTH_WAPI_PSK, - - /* ==== PHASE2 AUTH MODES ==== */ - ACTION_PHASE2_EAP, - ACTION_PHASE2_MSCHAPV2, - ACTION_PHASE2_MSCHAP, - ACTION_PHASE2_PAP, - ACTION_PHASE2_CHAP, -} menu_wifi_action_t; - -void render_wifi_help(pax_buf_t* pax_buffer) { - const pax_font_t *font = pax_get_font("saira regular"); - pax_background(pax_buffer, 0xFFFFFF); - pax_noclip(pax_buffer); - pax_draw_text(pax_buffer, 0xFF000000, font, 18, 5, 240 - 18, "[A] accept [B] back"); -} - -void wifi_show(xQueueHandle buttonQueue, pax_buf_t* pax_buffer, ILI9341* ili9341); -void wifi_setup(xQueueHandle buttonQueue, pax_buf_t* pax_buffer, ILI9341* ili9341, bool scan); -wifi_ap_record_t *wifi_scan_results(xQueueHandle buttonQueue, pax_buf_t* pax_buffer, ILI9341* ili9341, size_t num_aps, wifi_ap_record_t *aps); -int wifi_auth_menu(xQueueHandle buttonQueue, pax_buf_t* pax_buffer, ILI9341* ili9341, wifi_auth_mode_t default_mode); -int wifi_phase2_menu(xQueueHandle buttonQueue, pax_buf_t* pax_buffer, ILI9341* ili9341, esp_eap_ttls_phase2_types default_mode); - -void menu_wifi(xQueueHandle buttonQueue, pax_buf_t* pax_buffer, ILI9341* ili9341) { - menu_t* menu = menu_alloc("WiFi configuration", 34, 18); - menu_insert_item(menu, "Show current settings", NULL, (void*) ACTION_SHOW, -1); - menu_insert_item(menu, "Scan for networks", NULL, (void*) ACTION_SCAN, -1); - menu_insert_item(menu, "Configure manually", NULL, (void*) ACTION_MANUAL, -1); - - bool render = true; - menu_wifi_action_t action = ACTION_NONE; - - render_wifi_help(pax_buffer); - - while (1) { - rp2040_input_message_t buttonMessage = {0}; - if (xQueueReceive(buttonQueue, &buttonMessage, 16 / portTICK_PERIOD_MS) == pdTRUE) { - uint8_t pin = buttonMessage.input; - bool value = buttonMessage.state; - switch(pin) { - case RP2040_INPUT_JOYSTICK_DOWN: - if (value) { - menu_navigate_next(menu); - render = true; - } - break; - case RP2040_INPUT_JOYSTICK_UP: - if (value) { - menu_navigate_previous(menu); - render = true; - } - break; - case RP2040_INPUT_BUTTON_HOME: - case RP2040_INPUT_BUTTON_BACK: - if (value) { - action = ACTION_BACK; - } - break; - case RP2040_INPUT_BUTTON_ACCEPT: - case RP2040_INPUT_JOYSTICK_PRESS: - case RP2040_INPUT_BUTTON_SELECT: - case RP2040_INPUT_BUTTON_START: - if (value) { - action = (menu_wifi_action_t) menu_get_callback_args(menu, menu_get_position(menu)); - } - break; - default: - break; - } - } - - if (render) { - menu_render(pax_buffer, menu, 0, 0, 320, 220, 0xFF491d88); - ili9341_write(ili9341, pax_buffer->buf); - render = false; - } - - if (action != ACTION_NONE) { - if (action == ACTION_SHOW) { - wifi_show(buttonQueue, pax_buffer, ili9341); - } else if (action == ACTION_SCAN) { - wifi_setup(buttonQueue, pax_buffer, ili9341, true); - } else if (action == ACTION_MANUAL) { - wifi_setup(buttonQueue, pax_buffer, ili9341, false); - } else if (action == ACTION_BACK) { - break; - } - render = true; - action = ACTION_NONE; - render_wifi_help(pax_buffer); - } - } - - menu_free(menu); -} - -void wifi_show(xQueueHandle buttonQueue, pax_buf_t* pax_buffer, ILI9341* ili9341) { - nvs_handle_t handle; - - nvs_open("system", NVS_READWRITE, &handle); - char ssid[33] = ""; - char password[33] = ""; - size_t requiredSize; - - esp_err_t res = nvs_get_str(handle, "wifi.ssid", NULL, &requiredSize); - if ((res == ESP_OK) && (requiredSize < sizeof(ssid))) { - res = nvs_get_str(handle, "wifi.ssid", ssid, &requiredSize); - } - - res = nvs_get_str(handle, "wifi.password", NULL, &requiredSize); - if ((res == ESP_OK) && (requiredSize < sizeof(password))) { - res = nvs_get_str(handle, "wifi.password", password, &requiredSize); - } - - nvs_close(handle); - - char buffer[300]; - pax_noclip(pax_buffer); - pax_background(pax_buffer, 0xFFFFFF); - snprintf(buffer, sizeof(buffer), "WiFi SSID:\n%s\nWiFi password:\n%s", ssid, password); - pax_draw_text(pax_buffer, 0xFF000000, NULL, 18, 0, 0, buffer); - ili9341_write(ili9341, pax_buffer->buf); - - bool quit = false; - while (!quit) { - rp2040_input_message_t buttonMessage = {0}; - if (xQueueReceive(buttonQueue, &buttonMessage, 16 / portTICK_PERIOD_MS) == pdTRUE) { - uint8_t pin = buttonMessage.input; - bool value = buttonMessage.state; - switch(pin) { - case RP2040_INPUT_BUTTON_HOME: - case RP2040_INPUT_BUTTON_BACK: - case RP2040_INPUT_BUTTON_ACCEPT: - case RP2040_INPUT_JOYSTICK_PRESS: - case RP2040_INPUT_BUTTON_SELECT: - case RP2040_INPUT_BUTTON_START: - if (value) quit = true; - break; - default: - break; - } - } - } -} - -wifi_ap_record_t *wifi_scan_results(xQueueHandle buttonQueue, pax_buf_t* pax_buffer, ILI9341* ili9341, size_t num_aps, wifi_ap_record_t *aps) { - menu_t *menu = menu_alloc("Select network", 20, 18); - wifi_ap_record_t *picked = NULL; - - render_wifi_help(pax_buffer); - - for (size_t i = 0; i < num_aps; i++) { - menu_insert_item(menu, (const char*) aps[i].ssid, NULL, (void *) (i + 1), -1); - } - - bool render = true; - size_t selection = 0; - while (1) { - rp2040_input_message_t buttonMessage = {0}; - selection = -1; - if (xQueueReceive(buttonQueue, &buttonMessage, 16 / portTICK_PERIOD_MS) == pdTRUE) { - uint8_t pin = buttonMessage.input; - bool value = buttonMessage.state; - switch(pin) { - case RP2040_INPUT_JOYSTICK_DOWN: - if (value) { - menu_navigate_next(menu); - render = true; - } - break; - case RP2040_INPUT_JOYSTICK_UP: - if (value) { - menu_navigate_previous(menu); - render = true; - } - break; - case RP2040_INPUT_BUTTON_HOME: - case RP2040_INPUT_BUTTON_BACK: - if (value) { - selection = 0; - } - break; - case RP2040_INPUT_BUTTON_ACCEPT: - case RP2040_INPUT_JOYSTICK_PRESS: - case RP2040_INPUT_BUTTON_SELECT: - case RP2040_INPUT_BUTTON_START: - if (value) { - selection = (size_t) menu_get_callback_args(menu, menu_get_position(menu)); - } - break; - default: - break; - } - } - - if (render) { - menu_render(pax_buffer, menu, 0, 0, 320, 220, 0xFF2f55a8); - ili9341_write(ili9341, pax_buffer->buf); - render = false; - } - - if (selection != (size_t) -1) { - if (selection == 0) { - break; - } else { - // You picked one, yay! - picked = &aps[selection-1]; - break; - } - render = true; - selection = -1; - render_wifi_help(pax_buffer); - } - } - - menu_free(menu); - return picked; -} - -int wifi_auth_menu(xQueueHandle buttonQueue, pax_buf_t* pax_buffer, ILI9341* ili9341, wifi_auth_mode_t default_mode) { - menu_t* menu = menu_alloc("Authentication mode", 20, 18); - menu_insert_item(menu, "Insecure", NULL, (void*) ACTION_AUTH_OPEN, -1); - menu_insert_item(menu, "WEP", NULL, (void*) ACTION_AUTH_WEP, -1); - menu_insert_item(menu, "WPA PSK", NULL, (void*) ACTION_AUTH_WPA_PSK, -1); - menu_insert_item(menu, "WPA2 PSK", NULL, (void*) ACTION_AUTH_WPA2_PSK, -1); - // menu_insert_item(menu, "QQQQQQQQQQQQ", NULL, (void*) ACTION_AUTH_WPA_WPA2_PSK, -1); - menu_insert_item(menu, "WPA2 Enterprise", NULL, (void*) ACTION_AUTH_WPA2_ENTERPRISE, -1); - menu_insert_item(menu, "WPA3 PSK", NULL, (void*) ACTION_AUTH_WPA3_PSK, -1); - // menu_insert_item(menu, "QQQQQQQQQQQQ", NULL, (void*) ACTION_AUTH_WPA2_WPA3_PSK, -1); - // menu_insert_item(menu, "WAPI PSK", NULL, (void*) ACTION_AUTH_WAPI_PSK, -1); - - bool render = true; - menu_wifi_action_t action = ACTION_NONE; - wifi_auth_mode_t pick = default_mode; - - render_wifi_help(pax_buffer); - - while (1) { - rp2040_input_message_t buttonMessage = {0}; - if (xQueueReceive(buttonQueue, &buttonMessage, 16 / portTICK_PERIOD_MS) == pdTRUE) { - uint8_t pin = buttonMessage.input; - bool value = buttonMessage.state; - switch(pin) { - case RP2040_INPUT_JOYSTICK_DOWN: - if (value) { - menu_navigate_next(menu); - render = true; - } - break; - case RP2040_INPUT_JOYSTICK_UP: - if (value) { - menu_navigate_previous(menu); - render = true; - } - break; - case RP2040_INPUT_BUTTON_HOME: - case RP2040_INPUT_BUTTON_BACK: - if (value) { - action = ACTION_BACK; - } - break; - case RP2040_INPUT_BUTTON_ACCEPT: - case RP2040_INPUT_JOYSTICK_PRESS: - case RP2040_INPUT_BUTTON_SELECT: - case RP2040_INPUT_BUTTON_START: - if (value) { - action = (menu_wifi_action_t) menu_get_callback_args(menu, menu_get_position(menu)); - } - break; - default: - break; - } - } - - if (render) { - menu_render(pax_buffer, menu, 0, 0, 320, 220, 0xFF2f55a8); - ili9341_write(ili9341, pax_buffer->buf); - render = false; - } - - if (action != ACTION_NONE) { - if (action == ACTION_BACK) { - break; - } else { - pick = (wifi_auth_mode_t) (action - ACTION_AUTH_OPEN); - break; - } - render = true; - action = ACTION_NONE; - render_wifi_help(pax_buffer); - } - } - - menu_free(menu); - return pick; -} - -int wifi_phase2_menu(xQueueHandle buttonQueue, pax_buf_t* pax_buffer, ILI9341* ili9341, esp_eap_ttls_phase2_types default_mode) { - menu_t* menu = menu_alloc("Phase 2 authentication mode", 20, 18); - menu_insert_item(menu, "ESP", NULL, (void*) ACTION_PHASE2_EAP, -1); - menu_insert_item(menu, "MSCHAPv2", NULL, (void*) ACTION_PHASE2_MSCHAPV2, -1); - menu_insert_item(menu, "MSCHAP", NULL, (void*) ACTION_PHASE2_MSCHAP, -1); - menu_insert_item(menu, "PAP", NULL, (void*) ACTION_PHASE2_PAP, -1); - menu_insert_item(menu, "CHAP", NULL, (void*) ACTION_PHASE2_CHAP, -1); - - bool render = true; - menu_wifi_action_t action = ACTION_NONE; - esp_eap_ttls_phase2_types pick = default_mode; - - render_wifi_help(pax_buffer); - - while (1) { - rp2040_input_message_t buttonMessage = {0}; - if (xQueueReceive(buttonQueue, &buttonMessage, 16 / portTICK_PERIOD_MS) == pdTRUE) { - uint8_t pin = buttonMessage.input; - bool value = buttonMessage.state; - switch(pin) { - case RP2040_INPUT_JOYSTICK_DOWN: - if (value) { - menu_navigate_next(menu); - render = true; - } - break; - case RP2040_INPUT_JOYSTICK_UP: - if (value) { - menu_navigate_previous(menu); - render = true; - } - break; - case RP2040_INPUT_BUTTON_HOME: - case RP2040_INPUT_BUTTON_BACK: - if (value) { - action = ACTION_BACK; - } - break; - case RP2040_INPUT_BUTTON_ACCEPT: - case RP2040_INPUT_JOYSTICK_PRESS: - case RP2040_INPUT_BUTTON_SELECT: - case RP2040_INPUT_BUTTON_START: - if (value) { - action = (menu_wifi_action_t) menu_get_callback_args(menu, menu_get_position(menu)); - } - break; - default: - break; - } - } - - if (render) { - menu_render(pax_buffer, menu, 0, 0, 320, 220, 0xFF2f55a8); - ili9341_write(ili9341, pax_buffer->buf); - render = false; - } - - if (action != ACTION_NONE) { - if (action == ACTION_BACK) { - break; - } else { - pick = (wifi_auth_mode_t) (action - ACTION_PHASE2_EAP); - break; - } - render = true; - action = ACTION_NONE; - render_wifi_help(pax_buffer); - } - } - - menu_free(menu); - return pick; -} - -// Sorts WiFi APs by RSSI (best RSSI first in the list). -static int wifi_ap_sorter(const void *a0, const void *b0) { - const wifi_ap_record_t *a = a0; - const wifi_ap_record_t *b = b0; - return b->rssi - a->rssi; -} - -void wifi_setup(xQueueHandle buttonQueue, pax_buf_t* pax_buffer, ILI9341* ili9341, bool scan) { - - char ssid[33] = {0}; - char username[33] = {0}; - char password[33] = {0}; - nvs_handle_t handle; - nvs_open("system", NVS_READWRITE, &handle); - bool accepted = true; - wifi_auth_mode_t authmode = WIFI_AUTH_WPA2_PSK; - esp_eap_ttls_phase2_types phase2 = ESP_EAP_TTLS_PHASE2_EAP; - - /* ==== scanning phase ==== */ - if (scan) { - // Show a little bit of text. - display_boot_screen(pax_buffer, ili9341, "Scanning WiFi networks..."); - - // Scan for networks. - wifi_ap_record_t *aps; - size_t n_aps = wifi_scan(&aps); - - // Sort them by RSSI. - qsort(aps, n_aps, sizeof(wifi_ap_record_t), wifi_ap_sorter); - - // Make a de-duplicated list. - wifi_ap_record_t *dedup = malloc(sizeof(wifi_ap_record_t) * n_aps); - size_t n_dedup = 0; - for (size_t i = 0; i < n_aps; ) { - for (size_t x = 0; x < n_dedup; x++) { - if (!strcmp((const char *) aps[i].ssid, (const char *) dedup[x].ssid)) goto cont; - } - dedup[n_dedup] = aps[i]; - n_dedup ++; - cont: - i++; - } - - // Open a little menu for picking a network. - wifi_ap_record_t *pick = wifi_scan_results(buttonQueue, pax_buffer, ili9341, n_dedup, dedup); - if (!pick) { - nvs_close(handle); - return; - } - // Copy the SSID in. - memcpy(ssid, pick->ssid, 33); - authmode = pick->authmode; - - // Free memories. - free(aps); - free(dedup); - } else { - size_t requiredSize; - esp_err_t res = nvs_get_str(handle, "wifi.ssid", NULL, &requiredSize); - if (res != ESP_OK) { - strcpy(ssid, ""); - strcpy(password, ""); - } else if (requiredSize < sizeof(ssid)) { - res = nvs_get_str(handle, "wifi.ssid", ssid, &requiredSize); - if (res != ESP_OK) strcpy(ssid, ""); - res = nvs_get_str(handle, "wifi.password", NULL, &requiredSize); - if (res != ESP_OK) { - strcpy(password, ""); - } else if (requiredSize < sizeof(password)) { - res = nvs_get_str(handle, "wifi.password", password, &requiredSize); - if (res != ESP_OK) strcpy(password, ""); - } - } - - // Select SSID. - accepted = keyboard(buttonQueue, pax_buffer, ili9341, 30, 30, pax_buffer->width - 60, pax_buffer->height - 60, "WiFi SSID", "Press HOME to cancel", ssid, sizeof(ssid)); - - // Select auth mode. - if (accepted) { - authmode = wifi_auth_menu(buttonQueue, pax_buffer, ili9341, -1); - accepted = authmode != -1; - } - } - - /* ==== manual entering phase ==== */ - if (authmode == WIFI_AUTH_WPA2_ENTERPRISE) { - if (accepted) { - // Phase2 method. - phase2 = wifi_phase2_menu(buttonQueue, pax_buffer, ili9341, -1); - accepted = phase2 != -1; - } - if (accepted) { - // Username. - accepted = keyboard(buttonQueue, pax_buffer, ili9341, 30, 30, pax_buffer->width - 60, pax_buffer->height - 60, "WiFi username", "Press HOME to cancel", username, sizeof(username)); - } - } - if (accepted) { - // Password. - accepted = keyboard(buttonQueue, pax_buffer, ili9341, 30, 30, pax_buffer->width - 60, pax_buffer->height - 60, "WiFi password", "Press HOME to cancel", password, sizeof(password)); - } - if (accepted) { - nvs_set_str(handle, "wifi.ssid", ssid); - nvs_set_str(handle, "wifi.password", password); - nvs_set_u8 (handle, "wifi.authmode", authmode); - if (authmode == WIFI_AUTH_WPA2_ENTERPRISE) { - nvs_set_str(handle, "wifi.username", username); - nvs_set_u8 (handle, "wifi.phase2", phase2); - } - display_boot_screen(pax_buffer, ili9341, "WiFi settings stored"); - } - nvs_close(handle); -} - diff --git a/main/menus/wifi.h b/main/menus/wifi.h deleted file mode 100644 index fa5d71c..0000000 --- a/main/menus/wifi.h +++ /dev/null @@ -1,8 +0,0 @@ -#include -#include -#include -#include -#include "pax_gfx.h" -#include "ili9341.h" - -void menu_wifi(xQueueHandle buttonQueue, pax_buf_t* pax_buffer, ILI9341* ili9341); diff --git a/main/rp2040_updater.c b/main/rp2040_updater.c deleted file mode 100644 index 41b8896..0000000 --- a/main/rp2040_updater.c +++ /dev/null @@ -1,219 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "driver/uart.h" -#include "hardware.h" -#include "managed_i2c.h" -#include "pax_gfx.h" -#include "rp2040.h" -#include "rp2040bl.h" -#include "system_wrapper.h" -#include "graphics_wrapper.h" -#include "esp32/rom/crc.h" - -extern const uint8_t rp2040_firmware_bin_start[] asm("_binary_rp2040_firmware_bin_start"); -extern const uint8_t rp2040_firmware_bin_end[] asm("_binary_rp2040_firmware_bin_end"); - -void display_rp2040_update_state(pax_buf_t* pax_buffer, ILI9341* ili9341, const char* text) { - pax_noclip(pax_buffer); - const pax_font_t* font = pax_get_font("sky mono"); - pax_background(pax_buffer, 0xFFFFFF); - pax_vec1_t title_size = pax_text_size(font, 18, "Co-processor update"); - pax_draw_text(pax_buffer, 0xFF000000, font, 18, (320 / 2) - (title_size.x / 2), 120 - 30, "Co-processor update"); - pax_vec1_t size = pax_text_size(font, 18, text); - pax_draw_text(pax_buffer, 0xFF000000, font, 18, (320 / 2) - (size.x / 2), 120 + 10, text); - ili9341_write(ili9341, pax_buffer->buf); -} - -void rp2040_updater(RP2040* rp2040, pax_buf_t* pax_buffer, ILI9341* ili9341) { - size_t firmware_size = rp2040_firmware_bin_end - rp2040_firmware_bin_start; - char message[64]; - - uint8_t fw_version; - if (rp2040_get_firmware_version(rp2040, &fw_version) != ESP_OK) { - pax_noclip(pax_buffer); - pax_background(pax_buffer, 0xa85a32); - snprintf(message, sizeof(message) - 1, "RP2040 error"); - pax_draw_text(pax_buffer, 0xFFFFFFFF, NULL, 18, 0, 20*0, message); - snprintf(message, sizeof(message) - 1, "Failed to read firmware version"); - pax_draw_text(pax_buffer, 0xFFFFFFFF, NULL, 13, 0, 20*1, message); - ili9341_write(ili9341, pax_buffer->buf); - restart(); - } - - if (fw_version < 0x03) { // Update required - display_rp2040_update_state(pax_buffer, ili9341, "Starting bootloader..."); - rp2040_reboot_to_bootloader(rp2040); - esp_restart(); - } - - if (fw_version == 0xFF) { // RP2040 is in bootloader mode - display_rp2040_update_state(pax_buffer, ili9341, "Starting update..."); - - uint8_t bl_version; - if (rp2040_get_bootloader_version(rp2040, &bl_version) != ESP_OK) { - pax_noclip(pax_buffer); - pax_background(pax_buffer, 0xa85a32); - snprintf(message, sizeof(message) - 1, "RP2040 update failed"); - pax_draw_text(pax_buffer, 0xFFFFFFFF, NULL, 18, 0, 20*0, message); - snprintf(message, sizeof(message) - 1, "Communication error (1)"); - pax_draw_text(pax_buffer, 0xFFFFFFFF, NULL, 13, 0, 20*1, message); - ili9341_write(ili9341, pax_buffer->buf); - restart(); - } - if (bl_version != 0x01) { - pax_background(pax_buffer, 0xa85a32); - snprintf(message, sizeof(message) - 1, "RP2040 update failed"); - pax_draw_text(pax_buffer, 0xFFFFFFFF, NULL, 18, 0, 20*0, message); - snprintf(message, sizeof(message) - 1, "Unsupported bootloader version"); - pax_draw_text(pax_buffer, 0xFFFFFFFF, NULL, 13, 0, 20*1, message); - ili9341_write(ili9341, pax_buffer->buf); - restart(); - } - - rp2040_bl_install_uart(); - - display_rp2040_update_state(pax_buffer, ili9341, "Preparing..."); - - while (true) { - vTaskDelay(1 / portTICK_PERIOD_MS); - uint8_t bl_state; - if (rp2040_get_bootloader_state(rp2040, &bl_state) != ESP_OK) { - pax_noclip(pax_buffer); - pax_background(pax_buffer, 0xa85a32); - snprintf(message, sizeof(message) - 1, "RP2040 update failed"); - pax_draw_text(pax_buffer, 0xFFFFFFFF, NULL, 18, 0, 20*0, message); - snprintf(message, sizeof(message) - 1, "Communication error (2)"); - pax_draw_text(pax_buffer, 0xFFFFFFFF, NULL, 13, 0, 20*1, message); - ili9341_write(ili9341, pax_buffer->buf); - restart(); - } - if (bl_state == 0xB0) { - break; - } - if (bl_state > 0xB0) { - pax_noclip(pax_buffer); - pax_background(pax_buffer, 0xa85a32); - snprintf(message, sizeof(message) - 1, "RP2040 update failed"); - pax_draw_text(pax_buffer, 0xFFFFFFFF, NULL, 18, 0, 20*0, message); - snprintf(message, sizeof(message) - 1, "Unknown bootloader state"); - pax_draw_text(pax_buffer, 0xFFFFFFFF, NULL, 13, 0, 20*1, message); - ili9341_write(ili9341, pax_buffer->buf); - restart(); - } - } - - display_rp2040_update_state(pax_buffer, ili9341, "Synchronizing..."); - - while (true) { - if (rp2040_bl_sync()) break; - vTaskDelay(100 / portTICK_PERIOD_MS); - } - - uint32_t flash_start = 0, flash_size = 0, erase_size = 0, write_size = 0, max_data_len = 0; - - bool success = rp2040_bl_get_info(&flash_start, &flash_size, &erase_size, &write_size, &max_data_len); - - if (!success) { - pax_noclip(pax_buffer); - pax_background(pax_buffer, 0xa85a32); - snprintf(message, sizeof(message) - 1, "RP2040 update failed"); - pax_draw_text(pax_buffer, 0xFFFFFFFF, NULL, 18, 0, 20*0, message); - snprintf(message, sizeof(message) - 1, "Failed to read information"); - pax_draw_text(pax_buffer, 0xFFFFFFFF, NULL, 13, 0, 20*1, message); - ili9341_write(ili9341, pax_buffer->buf); - restart(); - } - - display_rp2040_update_state(pax_buffer, ili9341, "Erasing..."); - - uint32_t erase_length = firmware_size; - erase_length = erase_length + erase_size - (erase_length % erase_size); // Round up to erase size - - if (erase_length > flash_size - erase_size) { - erase_length = flash_size - erase_size; - } - - bool eraseSuccess = rp2040_bl_erase(flash_start, flash_size - erase_size);//erase_length); < erase whole flash as workaround for a yet to be fixed bug in the calculation of erase_length - - if (!eraseSuccess) { - pax_noclip(pax_buffer); - pax_background(pax_buffer, 0xa85a32); - snprintf(message, sizeof(message) - 1, "RP2040 update failed"); - pax_draw_text(pax_buffer, 0xFFFFFFFF, NULL, 18, 0, 20*0, message); - snprintf(message, sizeof(message) - 1, "Failed to erase flash"); - pax_draw_text(pax_buffer, 0xFFFFFFFF, NULL, 13, 0, 20*1, message); - ili9341_write(ili9341, pax_buffer->buf); - vTaskDelay(1000 / portTICK_PERIOD_MS); - restart(); - } - - uint32_t position = 0; - uint32_t txSize = write_size; - uint8_t* txBuffer = malloc(write_size); - - uint32_t blockCrc = 0; - uint32_t totalCrc = 0; - uint32_t totalLength = 0; - - while (true) { - if ((firmware_size - position) < txSize) { - txSize = firmware_size - position; - } - - if (txSize == 0) break; - - uint8_t percentage = position * 100 / firmware_size; - - pax_noclip(pax_buffer); - pax_background(pax_buffer, 0x325aa8); - snprintf(message, sizeof(message) - 1, "Writing... %u%%", percentage); - display_rp2040_update_state(pax_buffer, ili9341, message); - - uint32_t checkCrc = 0; - memset(txBuffer, 0, write_size); - memcpy(txBuffer, &rp2040_firmware_bin_start[position], txSize); - blockCrc = crc32_le(0, txBuffer, write_size); - totalCrc = crc32_le(totalCrc, txBuffer, write_size); - totalLength += write_size; - bool writeSuccess = rp2040_bl_write(0x10010000 + position, write_size, txBuffer, &checkCrc); - if (writeSuccess && (blockCrc == checkCrc)) { - position += txSize; - } else { - display_rp2040_update_state(pax_buffer, ili9341, "CRC mismatch"); - while (!rp2040_bl_sync()) { - vTaskDelay(20 / portTICK_PERIOD_MS); - } - } - } - - free(txBuffer); - - display_rp2040_update_state(pax_buffer, ili9341, "Finalizing..."); - - bool sealRes = rp2040_bl_seal(0x10010000, 0x10010000, totalLength, totalCrc); - - if (sealRes) { - vTaskDelay(2000 / portTICK_PERIOD_MS); - pax_noclip(pax_buffer); - pax_background(pax_buffer, 0xCCCCCC); - memset(message, 0, sizeof(message)); - display_rp2040_update_state(pax_buffer, ili9341, "Update completed"); - rp2040_bl_go(0x10010000); - } else { - display_rp2040_update_state(pax_buffer, ili9341, "Update failed"); - vTaskDelay(1000 / portTICK_PERIOD_MS); - restart(); - } - - while (true) { - vTaskDelay(1000 / portTICK_PERIOD_MS); - } - } -} diff --git a/main/settings.c b/main/settings.c deleted file mode 100644 index 5d2eff1..0000000 --- a/main/settings.c +++ /dev/null @@ -1,84 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include "ili9341.h" -#include "ice40.h" -#include "hardware.h" - -static const char *TAG = "settings"; - -esp_err_t nvs_init() { - const esp_partition_t * nvs_partition = esp_partition_find_first(ESP_PARTITION_TYPE_DATA, ESP_PARTITION_SUBTYPE_DATA_NVS, NULL); - if (nvs_partition == NULL) return ESP_FAIL; - esp_err_t res = nvs_flash_init(); - if (res != ESP_OK) { - res = esp_partition_erase_range(nvs_partition, 0, nvs_partition->size); - if (res != ESP_OK) return res; - res = nvs_flash_init(); - if (res != ESP_OK) return res; - } - return ESP_OK; -} - -esp_err_t nvs_get_str_fixed(const char* nvs_namespace, const char* key, char* target, size_t target_size, size_t* size) { - nvs_handle_t handle; - esp_err_t res; - - res = nvs_open(nvs_namespace, NVS_READWRITE, &handle); - if (res != ESP_OK) return res; - - size_t required_size; - res = nvs_get_str(handle, key, NULL, &required_size); - if (res != ESP_OK) { - nvs_close(handle); - return res; - } - - if (required_size > target_size) { - nvs_close(handle); - return ESP_FAIL; - } - - res = nvs_get_str(handle, key, target, &required_size); - - if (size != NULL) *size = required_size; - - nvs_close(handle); - - return res; -} - -uint8_t nvs_get_u8_default(const char* nvs_namespace, const char* key, uint8_t default_value) { - nvs_handle_t handle; - esp_err_t res; - - res = nvs_open(nvs_namespace, NVS_READWRITE, &handle); - if (res != ESP_OK) return default_value; - - uint8_t target; - res = nvs_get_u8(handle, key, &target); - if (res != ESP_OK) { - nvs_close(handle); - return default_value; - } - - nvs_close(handle); - return target; -} - -esp_err_t nvs_set_u8_fixed(const char* nvs_namespace, const char* key, uint8_t value) { - nvs_handle_t handle; - esp_err_t res; - - res = nvs_open(nvs_namespace, NVS_READWRITE, &handle); - if (res != ESP_OK) return res; - - res = nvs_set_u8(handle, key, value); - nvs_close(handle); - - return res; -} diff --git a/main/system_wrapper.c b/main/system_wrapper.c deleted file mode 100644 index 30080ca..0000000 --- a/main/system_wrapper.c +++ /dev/null @@ -1,18 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include "system_wrapper.h" - -void restart() { - /*for (int i = 3; i >= 0; i--) { - printf("Restarting in %d seconds...\n", i); - vTaskDelay(1000 / portTICK_PERIOD_MS); - } - printf("Restarting now.\n");*/ - vTaskDelay(1000 / portTICK_PERIOD_MS); - fflush(stdout); - esp_restart(); -} diff --git a/main/test_common.c b/main/test_common.c deleted file mode 100644 index c074816..0000000 --- a/main/test_common.c +++ /dev/null @@ -1,65 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include "hardware.h" -#include "ili9341.h" -#include "ice40.h" -#include "rp2040.h" -#include "pax_gfx.h" - -typedef bool (*test_fn)(uint32_t *rc); - -bool test_wait_for_response(uint32_t *rc) { - RP2040* rp2040 = get_rp2040(); - rp2040_input_message_t button_message = {0}; - if (rc != NULL) *rc = 0; - while (1) { - if (xQueueReceive(rp2040->queue, &button_message, portMAX_DELAY) == pdTRUE) { - if (button_message.state) { - switch(button_message.input) { - case RP2040_INPUT_BUTTON_HOME: - case RP2040_INPUT_BUTTON_MENU: - case RP2040_INPUT_BUTTON_BACK: - return false; - case RP2040_INPUT_BUTTON_ACCEPT: - if (rc != NULL) *rc = 1; - return true; - default: - break; - } - } - } - } -} - -bool run_test(pax_buf_t* pax_buffer, const pax_font_t *font, ILI9341* ili9341, int line, const char *test_name, test_fn fn) { - bool test_result; - uint32_t rc; - - /* Test name */ - pax_draw_text(pax_buffer, 0xffffffff, font, 18, 0, 20*line, test_name); - if (ili9341) ili9341_write(ili9341, pax_buffer->buf); - - /* Run the test */ - test_result = fn(&rc); - - /* Display result */ - if (!test_result) { - /* Error */ - char buf[10]; - snprintf(buf, sizeof(buf), "%08x", rc); - pax_draw_text(pax_buffer, 0xffff0000, font, 18, 200, 20*line, buf); - } else { - /* OK ! */ - pax_draw_text(pax_buffer, 0xff00ff00, font, 18, 200, 20*line, " OK"); - } - - if (ili9341) ili9341_write(ili9341, pax_buffer->buf); - - /* Pass through the 'OK' status */ - return test_result; -} diff --git a/main/uninstall.c b/main/uninstall.c deleted file mode 100644 index b678f0a..0000000 --- a/main/uninstall.c +++ /dev/null @@ -1,120 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "appfs.h" -#include "ili9341.h" -#include "pax_gfx.h" -#include "menu.h" -#include "rp2040.h" -#include "appfs_wrapper.h" -#include "hardware.h" -#include "system_wrapper.h" -#include "bootscreen.h" -#include "uninstall.h" - -static const char *TAG = "uninstaller"; - -typedef struct _uninstall_menu_args { - appfs_handle_t fd; - char name[512]; -} uninstall_menu_args_t; - -void uninstall_browser(xQueueHandle buttonQueue, pax_buf_t* pax_buffer, ILI9341* ili9341) { - menu_t* menu = menu_alloc("Uninstall application", 20, 18); - const pax_font_t *font = pax_get_font("saira regular"); - - appfs_handle_t appfs_fd = APPFS_INVALID_FD; - while (1) { - appfs_fd = appfsNextEntry(appfs_fd); - if (appfs_fd == APPFS_INVALID_FD) break; - const char* name = NULL; - appfsEntryInfo(appfs_fd, &name, NULL); - uninstall_menu_args_t* args = malloc(sizeof(uninstall_menu_args_t)); - if (args == NULL) { - ESP_LOGE(TAG, "Failed to malloc() menu args"); - return; - } - args->fd = appfs_fd; - sprintf(args->name, name); - menu_insert_item(menu, name, NULL, (void*) args, -1); - } - - bool render = true; - uninstall_menu_args_t* menuArgs = NULL; - - pax_background(pax_buffer, 0xFFFFFF); - pax_noclip(pax_buffer); - pax_draw_text(pax_buffer, 0xFF000000, font, 18, 5, 240 - 18, "[A] uninstall app [B] back"); - - bool quit = false; - - while (1) { - rp2040_input_message_t buttonMessage = {0}; - if (xQueueReceive(buttonQueue, &buttonMessage, 16 / portTICK_PERIOD_MS) == pdTRUE) { - uint8_t pin = buttonMessage.input; - bool value = buttonMessage.state; - switch(pin) { - case RP2040_INPUT_JOYSTICK_DOWN: - if (value) { - menu_navigate_next(menu); - render = true; - } - break; - case RP2040_INPUT_JOYSTICK_UP: - if (value) { - menu_navigate_previous(menu); - render = true; - } - break; - case RP2040_INPUT_BUTTON_HOME: - case RP2040_INPUT_BUTTON_BACK: - if (value) { - quit = true; - } - break; - case RP2040_INPUT_BUTTON_ACCEPT: - case RP2040_INPUT_JOYSTICK_PRESS: - case RP2040_INPUT_BUTTON_SELECT: - case RP2040_INPUT_BUTTON_START: - if (value) { - menuArgs = menu_get_callback_args(menu, menu_get_position(menu)); - } - break; - default: - break; - } - } - - if (render) { - menu_render(pax_buffer, menu, 0, 0, 320, 220, 0xFF72008a); - ili9341_write(ili9341, pax_buffer->buf); - render = false; - } - - if (menuArgs != NULL) { - char message[1024]; - sprintf(message, "Uninstalling %s...", menuArgs->name); - printf("%s\n", message); - display_boot_screen(pax_buffer, ili9341, message); - appfsDeleteFile(menuArgs->name); - menuArgs = NULL; - break; - } - - if (quit) { - break; - } - } - - for (size_t index = 0; index < menu_get_length(menu); index++) { - free(menu_get_callback_args(menu, index)); - } - - menu_free(menu); -} diff --git a/main/webusb.c b/main/webusb.c deleted file mode 100644 index 995fe11..0000000 --- a/main/webusb.c +++ /dev/null @@ -1,117 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "driver/uart.h" -#include "hardware.h" -#include "managed_i2c.h" -#include "pax_gfx.h" -#include "ice40.h" -#include "system_wrapper.h" -#include "graphics_wrapper.h" -#include "esp32/rom/crc.h" - -void webusb_install_uart() { - fflush(stdout); - ESP_ERROR_CHECK(uart_driver_install(0, 2048, 0, 0, NULL, 0)); - uart_config_t uart_config = { - .baud_rate = 921600, - .data_bits = UART_DATA_8_BITS, - .parity = UART_PARITY_DISABLE, - .stop_bits = UART_STOP_BITS_1, - .flow_ctrl = UART_HW_FLOWCTRL_DISABLE, - .source_clk = UART_SCLK_APB, - }; - ESP_ERROR_CHECK(uart_param_config(0, &uart_config)); -} - -void webusb_uninstall_uart() { - uart_driver_delete(0); -} - -bool webusb_read_stdin(uint8_t* buffer, uint32_t len, uint32_t timeout) { - int read = uart_read_bytes(0, buffer, len, timeout / portTICK_PERIOD_MS); - return (read == len); -} - -bool webusb_uart_sync(uint32_t* length, uint32_t* crc) { - uint8_t rx_buffer[4*3]; - webusb_read_stdin(rx_buffer, sizeof(rx_buffer), 100); - if (memcmp(rx_buffer, "WUSB", 4) != 0) return false; - memcpy((uint8_t*) length, &rx_buffer[4 * 1], 4); - memcpy((uint8_t*) crc, &rx_buffer[4 * 2], 4); - return true; -} - -bool webusb_uart_load(uint8_t* buffer, uint32_t length) { - return webusb_read_stdin(buffer, length, 3000); -} - -void webusb_uart_mess(const char *mess) { - uart_write_bytes(0, mess, strlen(mess)); -} - -void webusb_print_status(pax_buf_t* pax_buffer, ILI9341* ili9341, char* message) { - pax_noclip(pax_buffer); - pax_background(pax_buffer, 0x325aa8); - pax_draw_text(pax_buffer, 0xFFFFFFFF, NULL, 18, 0, 20*0, "WebUSB mode"); - pax_draw_text(pax_buffer, 0xFFFFFFFF, NULL, 18, 0, 20*1, message); - ili9341_write(ili9341, pax_buffer->buf); -} - -void webusb_main(xQueueHandle buttonQueue, pax_buf_t* pax_buffer, ILI9341* ili9341) { - webusb_install_uart(); - - while (true) { - webusb_print_status(pax_buffer, ili9341, "Waiting..."); - - // 1) Wait for WUSB followed by data length as uint32 and CRC32 of the data as uint32 - uint32_t length, crc; - while (!webusb_uart_sync(&length, &crc)) { - webusb_uart_mess("WUSB"); - } - - webusb_print_status(pax_buffer, ili9341, "Receiving..."); - - // 2) Allocate RAM for the data to be received - uint8_t* buffer = malloc(length); - if (buffer == NULL) { - webusb_uart_mess("EMEM"); - webusb_print_status(pax_buffer, ili9341, "Error: malloc failed"); - vTaskDelay(100 / portTICK_PERIOD_MS); - continue; - } - - // 3) Receive data into the buffer - if (!webusb_uart_load(buffer, length)) { - free(buffer); - webusb_uart_mess("ERCV"); - webusb_print_status(pax_buffer, ili9341, "Error: receive failed"); - vTaskDelay(100 / portTICK_PERIOD_MS); - continue; - } - - // 4) Check CRC - uint32_t checkCrc = crc32_le(0, buffer, length); - - if (checkCrc != crc) { - free(buffer); - webusb_uart_mess("ECRC"); - webusb_print_status(pax_buffer, ili9341, "Error: CRC invalid"); - vTaskDelay(100 / portTICK_PERIOD_MS); - continue; - } - - webusb_uart_mess("OKOK"); - webusb_print_status(pax_buffer, ili9341, "Packet received"); - - // To-do: parse packet - } - - webusb_uninstall_uart(); -} diff --git a/main/wifi_connect.c b/main/wifi_connect.c deleted file mode 100644 index 29c20ed..0000000 --- a/main/wifi_connect.c +++ /dev/null @@ -1,104 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "pax_gfx.h" -#include "system_wrapper.h" -#include "settings.h" -#include "wifi_connection.h" - -static const char *TAG = "wifi_connect"; - -bool wifi_connect_to_stored() { - bool result = false; - // Open NVS. - nvs_handle_t handle; - nvs_open("system", NVS_READWRITE, &handle); - wifi_auth_mode_t authmode = 0; - esp_eap_ttls_phase2_types phase2 = 0; - char *ssid = NULL; - char *ident = NULL; - char *anon_ident = NULL; - char *password = NULL; - size_t len; - - // Read NVS. - esp_err_t res; - // Read SSID. - res = nvs_get_str(handle, "wifi.ssid", NULL, &len); - if (res) goto errcheck; - ssid = malloc(len); - res = nvs_get_str(handle, "wifi.ssid", ssid, &len); - if (res) goto errcheck; - - // Check whether connection is enterprise. - res = nvs_get_u8(handle, "wifi.authmode", &authmode); - bool use_ent = authmode == WIFI_AUTH_WPA2_ENTERPRISE; - if (res) goto errcheck; - - if (use_ent) { - // Read enterprise-specific parameters. - - // Read phase2 mode. - res = nvs_get_u8(handle, "wifi.phase2", &phase2); - if (res) goto errcheck; - - // Read identity. - res = nvs_get_str(handle, "wifi.username", NULL, &len); - if (res) goto errcheck; - ident = malloc(len); - res = nvs_get_str(handle, "wifi.username", ident, &len); - - // Read anonymous identity. - res = nvs_get_str(handle, "wifi.anon_ident", NULL, &len); - if (res == ESP_ERR_NVS_NOT_FOUND) { - // Default is use the same thing. - anon_ident = strdup(ident); - } else { - if (res) goto errcheck; - anon_ident = malloc(len); - res = nvs_get_str(handle, "wifi.anon_ident", anon_ident, &len); - if (res) goto errcheck; - } - } - // Read password. - res = nvs_get_str(handle, "wifi.password", NULL, &len); - if (res) goto errcheck; - password = malloc(len); - res = nvs_get_str(handle, "wifi.password", password, &len); - if (res) goto errcheck; - - // Close NVS. - nvs_close(handle); - - // Open the appropriate connection. - if (use_ent) { - result = wifi_connect_ent(ssid, ident, anon_ident, password, phase2, 3); - } else { - result = wifi_connect(ssid, password, authmode, 3); - } - - errcheck: - if (res == ESP_ERR_NVS_NOT_FOUND || res == ESP_ERR_NVS_NOT_INITIALIZED) { - // When NVS is not initialised. - ESP_LOGI(TAG, "WiFi settings not stored in NVS."); - } else if (res) { - // Other errors. - ESP_LOGE(TAG, "Error connecting to WiFi: %s", esp_err_to_name(res)); - } - - // Free memory. - if (ssid) free(ssid); - if (ident) free(ident); - if (anon_ident) free(anon_ident); - if (password) free(password); - - return result; -} diff --git a/main/wifi_connection.c b/main/wifi_connection.c deleted file mode 100644 index 207069a..0000000 --- a/main/wifi_connection.c +++ /dev/null @@ -1,272 +0,0 @@ -#include -#include "freertos/FreeRTOS.h" -#include "freertos/task.h" -#include "freertos/event_groups.h" -#include "esp_system.h" -#include "esp_event.h" -#include "esp_log.h" -#include "lwip/err.h" -#include "lwip/sys.h" - -#include "wifi_connection.h" - -static const char *TAG = "wifi_connection"; - -#define WIFI_CONNECTED_BIT BIT0 -#define WIFI_FAIL_BIT BIT1 -#define WIFI_STARTED_BIT BIT2 - -static EventGroupHandle_t wifiEventGroup; - -static uint8_t retryCount = 0; -static uint8_t maxRetries = 3; -static bool isScanning = false; - -static void event_handler(void* arg, esp_event_base_t event_base, int32_t event_id, void* event_data) { - if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_START) { - xEventGroupSetBits(wifiEventGroup, WIFI_STARTED_BIT); - if (!isScanning) { - // Connect only if we're not scanning the WiFi. - esp_wifi_connect(); - } - ESP_LOGI(TAG, "WiFi station start."); - } else if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_STOP) { - xEventGroupClearBits(wifiEventGroup, WIFI_STARTED_BIT); - ESP_LOGI(TAG, "WiFi station stop."); - } else if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_DISCONNECTED) { - if (retryCount < 3) { - esp_wifi_connect(); - retryCount++; - ESP_LOGI(TAG, "Retrying connection"); - } else { - ESP_LOGI(TAG, "Connection failed"); - xEventGroupSetBits(wifiEventGroup, WIFI_FAIL_BIT); - } - } else if (event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP) { - ip_event_got_ip_t* event = (ip_event_got_ip_t*) event_data; - ESP_LOGI(TAG, "Got ip:" IPSTR, IP2STR(&event->ip_info.ip)); - retryCount = 0; - xEventGroupSetBits(wifiEventGroup, WIFI_CONNECTED_BIT); - } -} - -void wifi_init() { - // Create an event group for WiFi things. - wifiEventGroup = xEventGroupCreate(); - - // Initialise WiFi stack. - ESP_ERROR_CHECK(esp_netif_init()); - - ESP_ERROR_CHECK(esp_event_loop_create_default()); - esp_netif_create_default_wifi_sta(); - - wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); - ESP_ERROR_CHECK(esp_wifi_init(&cfg)); - - // Register event handlers for WiFi. - esp_event_handler_instance_t instance_any_id; - esp_event_handler_instance_t instance_got_ip; - ESP_ERROR_CHECK(esp_event_handler_instance_register(WIFI_EVENT, ESP_EVENT_ANY_ID, &event_handler, NULL, &instance_any_id)); - ESP_ERROR_CHECK(esp_event_handler_instance_register(IP_EVENT, IP_EVENT_STA_GOT_IP, &event_handler, NULL, &instance_got_ip)); - - // Turn off WiFi hardware. - ESP_ERROR_CHECK(esp_wifi_stop()); -} - -bool wifi_connect(const char* aSsid, const char* aPassword, wifi_auth_mode_t aAuthmode, uint8_t aRetryMax) { - // Set the retry counts. - retryCount = 0; - maxRetries = aRetryMax; - - // Create a config. - wifi_config_t wifi_config = {0}; - strcpy((char*) wifi_config.sta.ssid, aSsid); - strcpy((char*) wifi_config.sta.password, aPassword); - wifi_config.sta.threshold.authmode = aAuthmode; - - // Set WiFi config. - ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA)); - ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &wifi_config)); - // Disable 11b as NOC asked. - esp_wifi_config_11b_rate(WIFI_IF_STA, true); - // Start WiFi. - ESP_ERROR_CHECK(esp_wifi_start()); - - ESP_LOGI(TAG, "Connecting to WiFi..."); - - /* Waiting until either the connection is established (WIFI_CONNECTED_BIT) or connection failed for the maximum - * number of re-tries (WIFI_FAIL_BIT). The bits are set by event_handler() (see above) */ - EventBits_t bits = xEventGroupWaitBits(wifiEventGroup, WIFI_CONNECTED_BIT | WIFI_FAIL_BIT, pdFALSE, pdFALSE, portMAX_DELAY); - /* xEventGroupWaitBits() returns the bits before the call returned, hence we can test which event actually happened. */ - if (bits & WIFI_CONNECTED_BIT) { - ESP_LOGI(TAG, "Connected to WiFi"); - return true; - } else if (bits & WIFI_FAIL_BIT) { - ESP_LOGE(TAG, "Failed to connect"); - ESP_ERROR_CHECK(esp_wifi_stop()); - } else { - ESP_LOGE(TAG, "Unknown event received while waiting on connection"); - ESP_ERROR_CHECK(esp_wifi_stop()); - } - return false; -} - -bool wifi_connect_ent(const char* aSsid, const char *aIdent, const char *aAnonIdent, const char* aPassword, esp_eap_ttls_phase2_types phase2, uint8_t aRetryMax) { - retryCount = 0; - maxRetries = aRetryMax; - wifi_config_t wifi_config = {0}; - if (strlen(aSsid) > 32) { - ESP_LOGE(TAG, "SSID is too long (%zu > 32)!", strlen(aSsid)); - return false; - } - strncpy((char*) wifi_config.sta.ssid, aSsid, 32); - - // Set WiFi config. - ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA) ); - ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &wifi_config) ); - - // Set WPA2 ENT config. - esp_wifi_sta_wpa2_ent_set_identity((const uint8_t *) aAnonIdent, strlen(aAnonIdent)); - esp_wifi_sta_wpa2_ent_set_username((const uint8_t *) aIdent, strlen(aIdent)); - esp_wifi_sta_wpa2_ent_set_password((const uint8_t *) aPassword, strlen(aPassword)); - esp_wifi_sta_wpa2_ent_set_ttls_phase2_method(phase2); - // Enable enterprise auth. - esp_wifi_sta_wpa2_ent_enable(); - // Disable 11b as NOC asked. - esp_wifi_config_11b_rate(WIFI_IF_STA, true); - // Start the connection. - esp_wifi_start(); - - ESP_LOGI(TAG, "Connecting to '%s' as '%s'/'%s': %s", aSsid, aIdent, aAnonIdent, aPassword); - ESP_LOGI(TAG, "Phase2 mode: %d", phase2); - - /* Waiting until either the connection is established (WIFI_CONNECTED_BIT) or connection failed for the maximum - * number of re-tries (WIFI_FAIL_BIT). The bits are set by event_handler() (see above) */ - EventBits_t bits = xEventGroupWaitBits(wifiEventGroup, WIFI_CONNECTED_BIT | WIFI_FAIL_BIT, pdFALSE, pdFALSE, portMAX_DELAY); - /* xEventGroupWaitBits() returns the bits before the call returned, hence we can test which event actually happened. */ - if (bits & WIFI_CONNECTED_BIT) { - ESP_LOGI(TAG, "Connected to WiFi"); - return true; - } else if (bits & WIFI_FAIL_BIT) { - ESP_LOGE(TAG, "Failed to connect"); - ESP_ERROR_CHECK(esp_wifi_stop()); - } else { - ESP_LOGE(TAG, "Unknown event received while waiting on connection"); - ESP_ERROR_CHECK(esp_wifi_stop()); - } - return false; -} - -// Shows a nice info message describing an AP record. -static inline void wifi_desc_record(wifi_ap_record_t *record) { - // Make a string representation of BSSID. - char *bssid_str = malloc(3*6); - if (!bssid_str) return; - snprintf(bssid_str, 3*6, "%02X:%02X:%02X:%02X:%02X:%02X", - record->bssid[0], record->bssid[1], record->bssid[2], - record->bssid[3], record->bssid[4], record->bssid[5] - ); - - // Make a string representation of 11b/g/n modes. - char *phy_str = malloc(9); - if (!phy_str) { - free(bssid_str); - return; - } - *phy_str = 0; - if (record->phy_11b | record->phy_11g | record->phy_11n) { - strcpy(phy_str, " 1"); - } - if (record->phy_11b) { - strcat(phy_str, "/b"); - } - if (record->phy_11g) { - strcat(phy_str, "/g"); - } - if (record->phy_11n) { - strcat(phy_str, "/n"); - } - phy_str[2] = '1'; - - ESP_LOGI(TAG, "AP %s %s rssi=%hhd%s", bssid_str, record->ssid, record->rssi, phy_str); - free(bssid_str); - free(phy_str); -} - -// Scan for WiFi access points. -size_t wifi_scan(wifi_ap_record_t **aps_out) { - isScanning = true; - // Scan for any non-hidden APs on all channels. - wifi_scan_config_t cfg = { - .ssid = NULL, - .bssid = NULL, - .channel = 0, - .scan_type = WIFI_SCAN_TYPE_ACTIVE, - .scan_time = { .active={ 0, 0 } }, - }; - - // Start the scan now. - ESP_LOGI(TAG, "Starting scan..."); - esp_err_t res = esp_wifi_scan_start(&cfg, true); - // Whether to call esp_wifi_stop() on finish. - bool stopWhenDone = false; - if (res == ESP_ERR_WIFI_NOT_STARTED) { - // If it complains that the wifi wasn't started, then do so. - ESP_LOGI(TAG, "Starting WiFi for scan"); - - // Set to station but don't connect. - res = esp_wifi_set_mode(WIFI_MODE_STA); - if (res) goto ohno; - - // Start WiFi. - res = esp_wifi_start(); - if (res) goto ohno; - stopWhenDone = true; - - // Await the STA started bit. - xEventGroupWaitBits(wifiEventGroup, WIFI_STARTED_BIT, pdFALSE, pdFALSE, pdMS_TO_TICKS(2000)); - - // Try again. - res = esp_wifi_scan_start(&cfg, true); - } - if (res) { - ohno: - ESP_LOGE(TAG, "Error in WiFi scan: %s", esp_err_to_name(res)); - isScanning = false; - return 0; - } - - // Allocate memory for AP list. - uint16_t num_ap = 0; - esp_wifi_scan_get_ap_num(&num_ap); - wifi_ap_record_t *aps = malloc(sizeof(wifi_ap_record_t) * num_ap); - - // Collect APs and report findings. - esp_wifi_scan_get_ap_records(&num_ap, aps); - for (uint16_t i = 0; i < num_ap; i++) { - wifi_desc_record(&aps[i]); - } - - // Clean up. - if (aps_out) { - // Output pointer is non-null, return the APs list. - *aps_out = aps; - } else { - // Output pointer is null, free the APs list. - free(aps); - } - if (stopWhenDone) { - // Stop WiFi because it was started only for this scan. - esp_wifi_stop(); - } - isScanning = false; - return num_ap; -} - -// Get the strength value for a given RSSI. -wifi_strength_t wifi_rssi_to_strength(int8_t rssi) { - if (rssi > WIFI_THRESH_VERY_GOOD) return WIFI_STRENGTH_VERY_GOOD; - else if (rssi > WIFI_THRESH_GOOD) return WIFI_STRENGTH_GOOD; - else if (rssi > WIFI_THRESH_BAD) return WIFI_STRENGTH_BAD; - else return WIFI_STRENGTH_VERY_BAD; -} diff --git a/main/wifi_ota.c b/main/wifi_ota.c deleted file mode 100644 index e31383a..0000000 --- a/main/wifi_ota.c +++ /dev/null @@ -1,227 +0,0 @@ -#include "wifi_ota.h" - -#include "freertos/FreeRTOS.h" -#include "freertos/task.h" -#include "esp_system.h" -#include "esp_event.h" -#include "esp_log.h" -#include "esp_ota_ops.h" -#include "esp_http_client.h" -#include "esp_https_ota.h" -#include "string.h" -#include "esp_crt_bundle.h" -#include "nvs.h" -#include "nvs_flash.h" -#include -#include "esp_wifi.h" -#include "bootscreen.h" - -#define HASH_LEN 32 - -static const char *TAG = "OTA update"; - -extern const uint8_t server_cert_pem_start[] asm("_binary_isrgrootx1_pem_start"); -extern const uint8_t server_cert_pem_end[] asm("_binary_isrgrootx1_pem_end"); - -esp_err_t _http_event_handler(esp_http_client_event_t *evt) -{ - switch (evt->event_id) { - case HTTP_EVENT_ERROR: - ESP_LOGD(TAG, "HTTP_EVENT_ERROR"); - break; - case HTTP_EVENT_ON_CONNECTED: - ESP_LOGD(TAG, "HTTP_EVENT_ON_CONNECTED"); - break; - case HTTP_EVENT_HEADERS_SENT: - ESP_LOGD(TAG, "HTTP_EVENT_HEADERS_SENT"); - break; - case HTTP_EVENT_ON_HEADER: - ESP_LOGD(TAG, "HTTP_EVENT_ON_HEADER, key=%s, value=%s", evt->header_key, evt->header_value); - break; - case HTTP_EVENT_ON_DATA: - ESP_LOGD(TAG, "HTTP_EVENT_ON_DATA, len=%d", evt->data_len); - break; - case HTTP_EVENT_ON_FINISH: - ESP_LOGD(TAG, "HTTP_EVENT_ON_FINISH"); - break; - case HTTP_EVENT_DISCONNECTED: - ESP_LOGD(TAG, "HTTP_EVENT_DISCONNECTED"); - break; - } - return ESP_OK; -} - -static esp_err_t validate_image_header(esp_app_desc_t *new_app_info) { - if (new_app_info == NULL) { - return ESP_ERR_INVALID_ARG; - } - - const esp_partition_t *running = esp_ota_get_running_partition(); - esp_app_desc_t running_app_info; - if (esp_ota_get_partition_description(running, &running_app_info) == ESP_OK) { - ESP_LOGI(TAG, "Running firmware version: %s", running_app_info.version); - } - -/* - if (memcmp(new_app_info->version, running_app_info.version, sizeof(new_app_info->version)) == 0) { - ESP_LOGW(TAG, "Current running version is the same as a new. We will not continue the update."); - return ESP_FAIL; - } -*/ - - return ESP_OK; -} - -static esp_err_t _http_client_init_cb(esp_http_client_handle_t http_client) { - esp_err_t err = ESP_OK; - /* Uncomment to add custom headers to HTTP request */ - // err = esp_http_client_set_header(http_client, "Custom-Header", "Value"); - return err; -} - -static void print_sha256(const uint8_t *image_hash, const char *label) { - char hash_print[HASH_LEN * 2 + 1]; - hash_print[HASH_LEN * 2] = 0; - for (int i = 0; i < HASH_LEN; ++i) { - sprintf(&hash_print[i * 2], "%02x", image_hash[i]); - } - ESP_LOGI(TAG, "%s %s", label, hash_print); -} - -static void get_sha256_of_partitions(void) { - uint8_t sha_256[HASH_LEN] = { 0 }; - esp_partition_t partition; - - // get sha256 digest for bootloader - partition.address = ESP_BOOTLOADER_OFFSET; - partition.size = ESP_PARTITION_TABLE_OFFSET; - partition.type = ESP_PARTITION_TYPE_APP; - esp_partition_get_sha256(&partition, sha_256); - print_sha256(sha_256, "SHA-256 for bootloader: "); - - // get sha256 digest for running partition - esp_partition_get_sha256(esp_ota_get_running_partition(), sha_256); - print_sha256(sha_256, "SHA-256 for current firmware: "); -} - -void display_ota_state(pax_buf_t* pax_buffer, ILI9341* ili9341, const char* text) { - pax_noclip(pax_buffer); - const pax_font_t* font = pax_get_font("sky mono"); - pax_background(pax_buffer, 0xFFFFFF); - pax_vec1_t title_size = pax_text_size(font, 18, "Firmware update"); - pax_draw_text(pax_buffer, 0xFF000000, font, 18, (320 / 2) - (title_size.x / 2), 120 - 30, "Firmware update"); - pax_vec1_t size = pax_text_size(font, 18, text); - pax_draw_text(pax_buffer, 0xFF000000, font, 18, (320 / 2) - (size.x / 2), 120 + 10, text); - ili9341_write(ili9341, pax_buffer->buf); -} - - -void ota_update(pax_buf_t* pax_buffer, ILI9341* ili9341) { - esp_wifi_set_ps(WIFI_PS_NONE); // Disable any WiFi power save mode - - ESP_LOGI(TAG, "Starting OTA update"); - - esp_http_client_config_t config = { - .url = "https://ota.bodge.team/mch2022.bin", - .crt_bundle_attach = esp_crt_bundle_attach, - .cert_pem = (char *)server_cert_pem_start, - .event_handler = _http_event_handler, - .keep_alive_enable = true - }; - - esp_https_ota_config_t ota_config = { - .http_config = &config, - .http_client_init_cb = _http_client_init_cb, // Register a callback to be invoked after esp_http_client is initialized -#ifdef CONFIG_EXAMPLE_ENABLE_PARTIAL_HTTP_DOWNLOAD - .partial_http_download = true, - .max_http_request_size = CONFIG_EXAMPLE_HTTP_REQUEST_SIZE, -#endif - }; - - //config.skip_cert_common_name_check = true; - - ESP_LOGI(TAG, "Attempting to download update from %s", config.url); - - display_ota_state(pax_buffer, ili9341, "Starting download..."); - - esp_https_ota_handle_t https_ota_handle = NULL; - esp_err_t err = esp_https_ota_begin(&ota_config, &https_ota_handle); - if (err != ESP_OK) { - ESP_LOGE(TAG, "ESP HTTPS OTA Begin failed"); - display_ota_state(pax_buffer, ili9341, "Failed to start download"); - vTaskDelay(5000 / portTICK_PERIOD_MS); - esp_restart(); - } - - esp_app_desc_t app_desc; - err = esp_https_ota_get_img_desc(https_ota_handle, &app_desc); - if (err != ESP_OK) { - ESP_LOGE(TAG, "esp_https_ota_read_img_desc failed"); - esp_https_ota_abort(https_ota_handle); - display_ota_state(pax_buffer, ili9341, "Failed to read image desc"); - vTaskDelay(5000 / portTICK_PERIOD_MS); - esp_restart(); - } - err = validate_image_header(&app_desc); - if (err != ESP_OK) { - ESP_LOGE(TAG, "image header verification failed"); - esp_https_ota_abort(https_ota_handle); - display_ota_state(pax_buffer, ili9341, "Image header verification failed"); - vTaskDelay(5000 / portTICK_PERIOD_MS); - esp_restart(); - } - - esp_err_t ota_finish_err = ESP_OK; - int percent_shown = -1; - while (1) { - err = esp_https_ota_perform(https_ota_handle); - if (err != ESP_ERR_HTTPS_OTA_IN_PROGRESS) { - break; - } - - int len_total = esp_https_ota_get_image_size(https_ota_handle); - int len_read = esp_https_ota_get_image_len_read(https_ota_handle); - int percent = (len_read * 100) / len_total; - - if (percent != percent_shown) { - ESP_LOGI(TAG, "Downloading %d / %d (%d%%)", len_read, len_total, percent); - percent_shown = percent; - char buffer[128]; - snprintf(buffer, sizeof(buffer), "Updating... %d%%", percent); - display_ota_state(pax_buffer, ili9341, buffer); - } - } - - if (esp_https_ota_is_complete_data_received(https_ota_handle) != true) { - // the OTA image was not completely received and user can customise the response to this situation. - ESP_LOGE(TAG, "Complete data was not received."); - display_ota_state(pax_buffer, ili9341, "Download failed"); - vTaskDelay(5000 / portTICK_PERIOD_MS); - esp_restart(); - } else { - ota_finish_err = esp_https_ota_finish(https_ota_handle); - if ((err == ESP_OK) && (ota_finish_err == ESP_OK)) { - ESP_LOGI(TAG, "ESP_HTTPS_OTA upgrade successful. Rebooting ..."); - display_ota_state(pax_buffer, ili9341, "Update installed"); - vTaskDelay(1000 / portTICK_PERIOD_MS); - esp_restart(); - } else { - if (ota_finish_err == ESP_ERR_OTA_VALIDATE_FAILED) { - ESP_LOGE(TAG, "Image validation failed, image is corrupted"); - display_ota_state(pax_buffer, ili9341, "Image validation failed"); - } else { - display_ota_state(pax_buffer, ili9341, "Update failed"); - } - ESP_LOGE(TAG, "ESP_HTTPS_OTA upgrade failed 0x%x", ota_finish_err); - vTaskDelay(5000 / portTICK_PERIOD_MS); - esp_restart(); - } - } - - esp_https_ota_abort(https_ota_handle); - esp_restart(); - - while (1) { - vTaskDelay(1000 / portTICK_PERIOD_MS); - } -} diff --git a/resources/animation/animation_frame_1.png b/resources/animation/animation_frame_1.png deleted file mode 100644 index d55e776114180bbbe35711a0bb87fa69a0da6392..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4090 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 diff --git a/resources/animation/animation_frame_11.png b/resources/animation/animation_frame_11.png deleted file mode 100644 index 4e535736de0dc3d987aae4ced5f886096a213d9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4273 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 T*Msy&00000NkvXXu0mjf!%)08 diff --git a/resources/animation/animation_frame_12.png b/resources/animation/animation_frame_12.png deleted file mode 100644 index 5b9b57d1042da1488a44a7aa9d6252298757b580..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4085 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 diff --git a/resources/animation/animation_frame_13.png b/resources/animation/animation_frame_13.png deleted file mode 100644 index 17b6ec435eb6b68d2664da6dc9a00108e452fb09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3885 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 diff --git a/resources/animation/animation_frame_14.png b/resources/animation/animation_frame_14.png deleted file mode 100644 index 6b72f3f7b58d39640e70e86a6fe9e2eb6683e69b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3860 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 V*21o_BG>=`002ovPDHLkV1f##(K7%5 diff --git a/resources/animation/animation_frame_16.png b/resources/animation/animation_frame_16.png deleted file mode 100644 index 41d3952a0992e252b0e44322bd3753d41a305e28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2763 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 RzpDTM002ovPDHLkV1h=1z7hZc diff --git a/resources/animation/animation_frame_17.png b/resources/animation/animation_frame_17.png deleted file mode 100644 index 47f6323e56fcc19dbde077f61a1973ad0c382136..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2344 zcmZ8jc{r4N8~(ksFf$plQ?j=>(M(A=mNB;Mqv$lUO`{vJUez8(by1R7jiN#B~IHb zJ|Q?PO4~as>STM>C`&SC>FMU}pn3DLe#f-gE_u4wiEvhUY{Q;YsYN;DyScfA93iFB z@^$^)Hl8}Y?ek~BZNvG`lV7xA7Ta#D^_#4(ueZCVE(3szaJHvM3I}=-Owh_w^ z4ygsX+umqhf3&MbJ02_Jo5j5l9#P41r>4JuOxy1*(wo~2*v*lK924fWEH{r^ z*6t}5mjrmFfGixx>zsM~9@hSs;nS#-aWGT7ICN!Gwvj3-x_v-N8725$bv-q~%S$?P zL&iJB+mzMSRk!`yfZsIVLvZLJkC#!Yw;l9@@VX1%$2)c^J|Ku|3KcI^9;DD_%C!Jx z$H~Ai4coWTJ1gL0G?Q67)7)a&ka_(Xr6GiXo`|vY3^sRVArmD-; zu4XE}g1~QU>4U60a47P%tUt7@%4T$NdSoW~F*XHx4H4khRvIloE@>AzK|Hw`&O%f*?e1ZI_d*hn+9li=N{>iytbtz{f$21R^aT2!j z+1kLXeQdd@JAOQIg`ft$`V7DOX{=vI6a<6eLp`yC5xyjACO;=4= z6Z2GySw)UjAI+xg&Jz5zFHM08g!lsKZ- zN=AO=&hWChmko4)5qAfAA)P{mEo_rR_;dF`_FS=|AMHnsFTpmRKKM*S2b^bDN?TB! z^-a%+r{TR?{573cOD-Mboh`-e4UT2<*$hqcaFJW~hT?ZK=;Ja${D7$UV>YSP#%E=~ zpns$kxp&f>P>?@ZHqgsA1WpA-Bej@5z@`vl6=bEh&_id|0Ch2YP;?&;sYod)uCk&i!sFYue^sW zUW`%2V{n-+Iuv&Ty(2^?bIX0qgkBS??G{!ca`_u%u*ODZKMDSvsT zwjyvie`)Z{vbqsE1yrWfNuF+)u#DYXAeTb?^V;CXr&*5``%K`^I$PxU!o4@Qu9#D= zNy`kpS_c0r+N70~3(lR#2jkTo1ke%cGo~Y;bGS+C;kALc*ni1Z%$rN@#=W*W`>-}{ z%>?bV)rOX@i1?R87Bue|7a2C3Zke{tFt}pQ<=qmKUsP9EBa6oxA~rW%l|M`5Q;pcn=cAmF z`i41B3#s3smQx>RlonHF%s4>SZ%kfJBUnO*@hv^U?=D%jh+9&Eb!BvmGlr)2He_t|KLM4j8Li&f9;pc_BAJ@?C zD0#y@hvX_@j_A9i)=*moblDOTB^^@m+d>^6b#qnQPuGmN*n~lPlpfXmPvj`@LBo?T*Iq=E5l<|PbAJy<&Q&B`_U@#FF{RTv-i--$MF&Nrj$R6iQ0)8(>+ zLz$Y0)hUM0Hkoac_x|Opi$6W<7cB-QHJ|o%c)bvSUYhVOxD$SF=Lgz&ne?#Hogf#u uU|8AvtxQAEVQId3ds@?7--TY(vvr_uUF2)HeY#Qdz5r(j5BoY>2Kztp>>Jep diff --git a/resources/animation/animation_frame_18.png b/resources/animation/animation_frame_18.png deleted file mode 100644 index 5db8ed80401c8e618a845959d6b052d61e9e0457..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1892 zcma)+dpOkF8pqdfE||e_8@cChyA(sa$81{|w?l@AI{%a{Udu9J$rg#od%-kZo+qoipw8oag*|*7LmU`>yZ1)@QAM-j(I)@poywDjonJ z?dsxq6adIhlnW)$qS<-b-Cra)x{H4z0Fv_G1A0B4z9ll%lAQdKylD|hDb$2;;1C|0 zn3|~Nopkn8G)>EgMvLXuemF1MX6s4uaoT&UQ?F}|WGY8-v+(ndOt^26kyesPx2yPdEG-S**|)qj^HuZAYDf8Y|H0ke-4vx~l>ms{c6B8CFh&-} zM}6-SWnrq7*DR!XcX9Wgy}VYHYt(Ga#m^NvZC{dSpEgBa{} z%Qw#q(F`$R2yzS;FX`E+2`55NQEXSb_tm5saegeaoEpb`TC~+42^N=58+8?Sp_bO+c;+hnY8LX|%! zVQC?$WJNL4?d^Qv%d_f9h-0atV=)i4RTyO_qN^3HOU(%IdvwwCE0&zKM`RUh&<&Y- zrDR>&Kx{}BBNoEWo*9SVo5T5-Mx!WPbcbklz(iMP!&Dvm{Afw8yH!A}J z;eS493;k)NU}*=kI3a1Wz7-8@oqAp*GgZ{b2|MqrH_8C-&oB_17?yezRvz!0G* ztb?Uu&(4GmOtpKZ^e)#Uh>Ia&>#(}6Llvcf@kGD6OgYinet?P7h?R8&mS2X zGH-1uG3-YRMdvCzH)yjdd84xfspGSc-I3r;>r4$e%YIK8Yi|B@AuA4rA_c#=aQ?!& z|Io(Dk=sC6B%nn=q>Q9OhzsZw0>i##!vGtwsPp5IuYew+;kN2X0Fer%KxkvXft(9a z1&b9F(E8vSGaF+=v%L7XHb1Ya6EH$N&m@q;$T%xWE`#7BkJhrH#!< zwvTLPD#GBizNq70;!zU(`%Hj(d{2ZB!$4ym_;x+5yz~*z|5P~mI?!4yi^Ng7Ig%wS z2Yf6GnHaK@tKPFZAl}FV9*q{#p~3IF03%KwHIz}yE?~-a_JS$qo1;xC0m|{04khoHYLGl(@2-Iut;rQ7vSfb3W~ZrW2||rH1fUUAMenZ|e+i zF{PkMdo?VCXjM$rC1{}4kfx@kmMv3o8h14-es6@#+6R1ET<+vx$)d}U*>NP#d9ixC z+GI+rGFWXltAf>USa-h<5nFV)qECUc9SyGgnxC^P%hX0L{@!jFmcO0OIT2s3%?}Lh zthxNN{rDIK3X!^0Pc4FJ&*A_8OjmVngz~h>|-w!dC72VfoQloc{sA|Lz({ua`G=* diff --git a/resources/animation/animation_frame_19.png b/resources/animation/animation_frame_19.png deleted file mode 100644 index 3bd9465eefdec035ad34589ed38147bb140ec23d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1464 zcma)+X;70_6o&7Y1;V0+SY?x~z$g$ylqhQ;APA_1un1vMVp|Y}nn(a60>&W4;Gk_a z1Pdry77GGeN(lQ0SXvbnL=g;>AbV7nK}v=M=x1m8r_;{#$Gzvd?|siXGk4}50o~7g zgQkHd0APc!k7pnN5DnpZ92(j8FMbw=1P!)N7zY3?!p8+YA5K>xqG6&JBQb~-lX&J> zLNwSH9nU$-F%3#g`tk(JG?>MTZz~&3MQnTNhl0I~@3dQV$Q?*JhYs#e_-S`0xjOp? z(Ul>$QkT~aIj5TDW?S?btqTi1<;2B>sShTnms<-~pYCD!yUGB-LcX5v!Q9vHhX+5; zCx7A zX()tHJ^&%0fe_9VLI|?>r}=+a{-Yib|8L#ko#s*?=^^%Sexo7ta5FnHBiQQ?bTt7^!;$#UluUH+ZU@laN8%-DU0SPqC=(#Tj-M`dj4Cg*; zKkE)eE13jJYg(xl*BbVmH}~Rl;RY>6qg6n)B?0!r>WPZXt^<-4E#k~VIT4D)#D>0^ z?r0Q!Cyz`&X2VhT1Saf-XDNycCB;sXD3kk#-%9!?VJrQ|6*=$Z@z~gt_x;4L+6$y% z&PhCV+4ZP0iZH6L>E3N8Rb^E#(!DmvJHLe62dJaAeHcs%8y+y3TTQcSa_p=1_BM^BZOFiaspGFkQYb z8H94x2YxvxA1+Yz>rZi}I7aaF`8&mFMX9CraT$+R-sX(5UF~}!sg6ZHirL;H_oQFN zXtd1nIO`my_q?%Euzq#a08Z{&QU%+4X*$+wZntFYX6C6SnfNzIuO)|7zD?;QG8~F< z>66#uF3ArkCD<^~u{VcPO^(Lx*X2&c>huR_pkklCSmV-kwET>pLDQIMy{Coya(Zu& zokoa8j=Ta<3AR!i+nQdZri#8 zC67vQ94b&_&p+T!C$zz2@zpNyM|ea>on4?uW!YM;5&W~QU2=1Y^OY?lCB4;XKz<)5 z2xz0-1%}|-&Mr!kBSp+_Z}Ep!0P-XPK9vV?=)oQj$4{`KxJ-Des0Q njv1qY$_wLzm|WzD1k@TDp6UFM{o9~7GERZ7m!D^q2b2FNljvqg diff --git a/resources/animation/animation_frame_2.png b/resources/animation/animation_frame_2.png deleted file mode 100644 index ab8f15f90b6758a194c05c2f12311d5313f6a2a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4092 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 diff --git a/resources/animation/animation_frame_21.png b/resources/animation/animation_frame_21.png deleted file mode 100644 index 81a593788aac0170381e634c96cfac6e5458ae43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1740 zcmY*ac~q0v62D*ak;FjQmjnbt5Zn-uP4H1kKtv=U5~^&t6%++6kr&$2^UnKYW`1|h%^Fj8U&^NnT4hdW)qv#w_<(9?n)<&%Hi=Tq+% z=}<_0@PO(Z??+lf*ZjP;$>Y`h#DepY#V)!2k^jod%Cc(aFBGo|c7u5P85SMC@C;kMojn7-v#x6gk{7NL6?6f-Xy?pn9>eD96k zgUCMW4zSIOH9%uOp1X3r^>aM3rO`d<;%US-CoL~o*ZiL2UeP`D1|QX5b>a%WvR`_$ zwxg;K9O9Ti*nCpjLhzIHTf?7u=sl34XvJ9rsPUJhNQF#ijXAI=7#k!rT}jxUE(lSo zphSH8))StRevyPYvuu|*&NuIVyQz;@?j2q))?CDnX3-yuzVEk{Ea>b@*VL%pop z>hW?oH?(1(B#GHEoBjTK@km4kqcz|0VCp3b_Amar!_r}Av$5ur|Hfa{c>WFY4bb6bzI5YgxVQ6y^`ulR@2QUrR&Q1(E?LB_NK^@ickS~6-q|}S6Qja`HZ)YgU zJgMeIT~FKndVA&*&r>VKJ~O46+L(Ez4hIce=T~e8oK?kH{Z2zt9ZDoy|d)$vkY(7)H?(Dl?$+$(=eN}#DG8fb_12)BPa=BF@Dn;bs< zE4W1a=SFUaui`7HrH&*ujhIQ=1tX%94^3-k?PtEjEEW1r#)bS&T6qV%S*3?xyGzD` zk);b%WShmW`t2!G1ZXD1yK}GaLinXD z+PBYgl7N_gSSPvOk_9cDR2(D!yn|?XfMJpANmzqR$vbG$>dtP>57pS*gG9k!M7Ogs=cqzPa%G7k$AgbHdb^ z;+u37+_MQDSv1Z81!pl@*T}orZjLy-o#6d72}eRw{z`~bj}ksIq$c-d8U=eu0FK&L zy4Scc9)@6V9tBTAhU|CvVlEc2xw_rogpMA`p)vvVKxOrR4m%@={edCbFm?cARjr~H zbPv8#_%{(9O%(k_|37A1Kn+;ULi(x|uv)RYi4D4v1vs;CI4HfE_Geu_0KY4ij9ep; zArrgRqLX{#z^QP0xpi}Jmzy)tac?Yi9zyV%*V4Yt>$n5ScHin_Yg z@-cesd@EOd&}W0AHaRu`Gj%N!FjqDav<3SZPFm4EoMPfK%+!bt_hf>b4625-H_D*} zYgl{371kD{n_x`AAFrH%)VC1|zIhf}cwjgk$)!+|qJfTbeo;{*pxD$66q9j*2kzOc z!`|2ex!Fk58W*(21r`LI2Bq%sTple4gvG2`A&!j-C&kT?mknPGhzyU}*&K>U{tLCV B+qwV% diff --git a/resources/animation/animation_frame_22.png b/resources/animation/animation_frame_22.png deleted file mode 100644 index 59cfd17bc9e62bd348ff6feacaf81cac8e425e03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1825 zcmbVN`#;kQAOFsGGqc!;Hh1QBI0)_FI4;A)+#O}K6pm}T%w@!@oQ+YTQw~WU$?_z5 zdTb>Lu~~A+B@eR2mP?^$%%vWeGH+m^?uu}2!wM~CwTWHPxL*&}vG}Un} zrCTG6yRk9aWbtKV=|6gD+uWMHk)IBI=4=3fJe5RrJ8@x3D&}6Fwo`*sKkTB2(kWI> zsd7rO2=cMPz$5LGo<4p3j9RUuPGka?f{*WH`L^e*gurZq|lQ7F8n2oN11GMWpQJK|tAb!^Lq z!nO=0Xf7`q36*xTD)qNL1ON(DgDK6{!zPF87a`M~eQHoTX841D6y3x{i1Zh%%W+Zp z0jr@NOPfmCer*$;9KJKO(eM!xwrkkivNdx=NEq+)zckpgl9BcIf}&z-e@xHuozH{Y z?=XKIN4tzFA4bYnu+~9hU3}ESXwuoZ@T@+UlSYr%NJGHD6HNT&dSQUR0wB=F4#l;! zyb!SqV(30<@(S%13`9O*FRI~ohM6%iQ@HaCaZ&*ewnOseCFpFatg=u4F+uugtQ96y zK^*gpK~W{ZN}5iQ#QlrDxh%7Sj9+=GANh#e8jc+CKcSa1d1h26Cu)fh{IGnKw%T1+?^vf9_* z8Cr&Yx7Mus$L^n+Z|0tkr2g{vMr8_;=BOB8Q%}Ga_y&v;SL{ z@+Z^gt+S!Vn(J%#VBKHOe}QZ7bl6!zkc}7<%OLm;=iSOSuZiN_^jcL(s4)Gl`k#>Q zU;H@dFn``q&E(br-_YM43@^S}B5)N|&sE5N8I`&B|z zG1x`ymuioe-kfYCw{_d1<~1zqR<9O+yR2gDA33cdj-J!-uQMyx7PVRtO>1I0i&R&i z6-O0%k1yi`WRRY*~ zCoqPwoM?CmsL85f3a8DmX|vUsUPd%O+`mfNS>s6MD_Jw_2!Ywo2xv|71ar#WC7j8k z7duj)FtiUfnoOO?tYSe=-To_}Am5Q%J&tqNz3-;$Kw`R~3=L2<_r{no#d)3?PIebG z70Pt6jg4R+8_!~xdSPV~Ke*{!ILDlOBUYVYm>$PM4qO6Xa7zFuOFs7UI6}fJFCtZZ z*n{TGBFd{B;6~{Z-r>nTLmiu+UHIO-jaKVPgFE$xr7-QTRXu4{NPv!m9sdIS)q$)G zwT{zm9efD>6%i1v8|q}vui^#YDsSZ31Y+xJy@n5nr)i?YU0y^i#sSCgkH3eyZfzSB z3|HoY*OV=;fN*3z_%m&G^fpaKK1!AF7_T(v7Svzjh=6hl`opGP0j?KNE=DiF%sp_u z5Zig4fxW52TE7O`K$%KldZ%hg^bAxv`;)jw+xRpI@BJ%HsXzIWAraiVhDHf9s%E=} z9>w490k=xg8#L-3t{1vhj8+k*{%E# F|1Yu9K12Wj diff --git a/resources/animation/animation_frame_23.png b/resources/animation/animation_frame_23.png deleted file mode 100644 index 9d25bf6f4f2528d34f0e96c2ed47140e2a24b50e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1836 zcmZ9Ndpwl+9>;&r%riV@TxRSvqKij}%B>w@6U_{!nUcJ6IU}2NL~@tgi1_UjNg?M{ zn_^u`vQ~IGX;s!dbh1Q9F}W3+!%{SEWpmjx=XGAM^T+w)^ZmSE-_Pg!_cznsZJ!2R zj}8FP5R04-1Ay?9tiY(sDV#s(qcpWBkxvW&4DJ62=^0L0Q7$*cx=3O@B7+b65viVlC(UU1V3zqAFuOpH}PS<{&ZdIK# zw6|=}z@zMlMqP<)cDB31Y<_lPK|lJltYEd%##@gz3xJAL?9BI+4onYC$Nz>iRYtH~ zQv>CnQ|sFIiO9TC`c7^~dv#&m(PTn%Rjceh_{42 zTh`?{VPqGwspJ6_MpFGO`0j}=AO#IZwIV$CUT;UHtiQ`}k|T;=zC2a8Q3s8()FEo2 zn*Y0#QB*PkJgI@%#$jLyDIPqRpW=DUQwMGM6*`m@^?+omRRv`@*tf1w(6Y^3eW~Ll z;#+sqiN=$u>~=hB6Xvw^sy{1ULvafU4&kL@502HvOY8gSg+EL-tKAG&xkUMtaqQla zY7WC9y?c?oFD1KEUNm*oW)nG4K`MirbEKr{At$hm35hdXVVGgPjlXqf5`T3!{FeJV z?8C&?=vpJUD`f)4K57&_&-J(KLVo;y-9EyEtySJ@ z{oRv`3AOJ`RICZZznGTap*ngcy-1mTClrJ^X8pOVixK_Y`@qNrd1~+Sk0&A@*6Qa2 zVckW`qF?cf`;KglJlFb0^O2e!#X}zldKo-oRh;v2cIx+U&J5yi1#jlLyH(4P*VMIT zopD9t@jVCs+7Dl3d#VPXKSC{VX2MZnpdyJ&fDa$<8|zTys4ox_YDImaMB72yBn-Lm z)+OB!`t@hL#OB_*obGIH)SAkl+dkc9Mi;WKYOL2ZtjZEUCU(@}AfPFUF4Z`i-p`tT zbqg70Nli;%9^%k$W6x+=3oF7s;ToOV!l(EBdDjZZ%E)~bO>$%-zjWoo!O>@Ngq&FAx=lj4Y_)3PYIkGbxyiu19++DAK0Nj@ z?0xI*F1n7R{+%HhnJfU~5hfjPE$eOZW#+EsKd}ay8kpmhg4QzzMo93Xt7^5hAkqk zTpx5BrS>Au=lQWpvDW=e2v9tf54_b{MNAk+nPZ{;cVHNbNOs^ld_ZBsN*W@u#I^XK zPrY??6bs~Wl$GajBYKMJcNtVV5TJ5H?%KvOO_8G#H|93rAXK%~0wbr8Oa`SUg*QL| zHV_?QLT#{(F$avyFrF@qr6HzhZY92fSD}olBG25f@V3XoEO1JwBr)F`vT2EkHXAKA zgfS99^nw{mw1 zh664Q$=imJu6z(gr&xI~;f-}RfXl^5wqp7d=l|lE9V-93S<)|Ecca($_H3l`g#odP Kn{$=GpZGTb^AQXH diff --git a/resources/animation/animation_frame_24.png b/resources/animation/animation_frame_24.png deleted file mode 100644 index 47cecee08b7185386be3cfa583a9d4c9c8968e30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1215 zcmV;w1VHYAX9X8WNB|8RBvx=!KdMT0000R zP)t-s9-_h|!|FIL5ll-mZhUHmFt4UO+Q0Gf^YQ02>vhEd00bjRL_t(|+U?vsj@v*C z24Ev6h*G5tC^!eu6h1(T^a11p7+4=*X@GTZo?>@_B!J~1hmRkE)ou5Iui?mEALQR> zAzH5=&r0X(%PghO;lICmq2u~Da0LSjFSLFLUw$3&fWkz_^E;5}J04KlLhGB5i0Ft1 z6n<}%3r*962$V*2zFw~v`uck!MBuydLK7-bn2zVS6o0`4$}1h$3r*AX2^1)=3#~Lw zpJ9Q*M07YDaDmbm`gS-FE>L(OY@i4cVFMW*C=DGb3p$X|fwG_j867Cg2^`2z;NF4K zp1?ui4INlpgnIzWPjp~=0tbONbYN+h>;hQY#$CYn1P%f#i*P5v85~$ygnhspIVmz(HWypxF(uEXVr+R^@mV0xQqf$2Hc0@E8= z4{YGT><}7&GdM80kqtmb2j;#Hwg6MB&;-n^LJKf8gf?Je2u(oY`GgHjoP|bUUI>jq zX)`!5Ey-qJ)~GQ9Woh8Rq!8MHNg*5nGM%u2(i%80RFcRo8uS0psQL!Sf#$1lpkKv_nG(Lf%3 zu^9~2j5;N0LN~53Ba*CR0eQpT&Dm>PP`Q0$Xb&FWOU$wFbinzlO&+M zPqKjKQIiI=hA<6i4PhS8c;Mv$jUh|~+Nv-SXbWK`&{Tz)K-0IHQ-PKfITdKB!d#%? zhL;O8-0+ft`Ws#{P#?lQ3YepsJB8 zfU3Q)1gO~yOMn6oRQy~>5pV_vDke=4us?)F!2S?c0T~_GJ!#5-y*Vxe_O?kGus6qb zz|J-)1kT{V&Ne9o_Jyzz*w-eNz^)HzD}h}(t^{_qNhz==gtfqqmkg!Ao*dT#JMN#g zz>WjC82ETtR|6kbVKtD^fe&+B4tx~CCvY^!^}q)qtOq^_ApmfD6aoMl9k~7D#|S`% z2hQNY%{GAmZiNs6xHSqffEzi+0B(HY2LrefLJ;8nHUR>_aXoQ diff --git a/resources/animation/animation_frame_25.png b/resources/animation/animation_frame_25.png deleted file mode 100644 index 494a3cb84391a384a19771fc0a6dc5f2c77a7b22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 706 zcmeAS@N?(olHy`uVBq!ia0y~yU~~YoKQJ)^Ngn6WA3%z;z$3Dlfq`2Hgc&d0t@{HM zlrC|NC<)F_D=AMbN@Z|P%_*)dRtPRBP07qx2+7aSIk@~`4akT9pAc6IJwYFDqr94| z{U1L{@2^Qq8vDv+mQ&vf`9V2gCoyelfo!H+Lw9jtN z&8hcWtz1+ELNZnroZY`iDuholME-nD*<~f}-M_54P92)w&=eH0-~R1v$I`RAZ{Fe4 zTEAMtGaz=wDwn39j8`p9r*_X`O?_?4y{h`L)7Q*^-KsqM0x#6ag+w2I@HB?YL00c+ z5Yw}-lUT2wOT3^LQs}zi(`)BNJRzH#4(@4n+$zWxKlSy}1?RFKCVlwRxkzG*F3&50 zL<9YV0BNZlVV+w;Y+p?eKImq*W!hrNv&z$;!YZ9*3oFm7Cqf4s+C_QzxFu{V|E3+7 z{FkS3Ta)A6iw`EU6*oD$O1;Va;L+^dbnyAqj>hvV3m(Yw%4L4g6cva$xZvW0V69}f zev=uQ7cSj6_<#3Imfshf`GMRI6WMfoWkY0aZ}iL6EI8=X+;5V>$@Vq+JOot-b&xH|`UlsPN;9{;a(+xVZ`w=<73v;3chP1+LGBbF{a{ZrMd4?nKm+}7@O zS9C%9^+3Pxnft?nUvgde`Sgp=StHq3+DlJ6)_-Z=tz_%re&9p)f%paG_mke)yzr~C zs!h!6KU%z?e3FXk)OlC?w@*p_sFU&5_-@dx)OyPbPcQ5DPL9);y>fPZUUsj&N$;(V zSV?5*#s%&3^Ld!omUgk)>NGoUuQiA;JGkI}u)&P{CdYgr^*Z5#*TIB!&5rqt4ld+p zJFO(~#f-IiCm-A1PPW|{AB?3;6et4^?AiA-SRPCIYj(xS0vOZ`p00i_>zopr0Jxp6 AKmY&$ diff --git a/resources/animation/animation_frame_27.png b/resources/animation/animation_frame_27.png deleted file mode 100644 index 4ba0b0f962c53b7f580d18b998c7b7bcb14d80f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 395 zcmeAS@N?(olHy`uVBq!ia0y~yU~~YoKQJ)^Ngn6WA3%z;z$3Dlfq`2Hgc&d0t@{HM zlrC|NC<)F_D=AMbN@Z|P%_*)dRtPRBP07qx2+7aSIk@~`4akT9pAc6IJwYFDqr94| z{U1L{@2^P!ivRO;aSW-r_4cwN-=P2j*NakzgeJstuM)eguzSjWu0y*#eqHX}Qe@O2 zrZG!fp!`Y4Lpdfh!lmY96f8WbVPbJ0Axugp)8L<+k0S*j aYu?2Rb1fV*gp7e9!QkoY=d#Wzp$PymdWCNQ diff --git a/resources/animation/animation_frame_28.png b/resources/animation/animation_frame_28.png deleted file mode 100644 index e132200e7757d362f98fbd472b8e7b6fde2b7753..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 164 zcmeAS@N?(olHy`uVBq!ia0y~yU~~YoKQJ-_N$zopr0C#mQ4gdfE diff --git a/resources/animation/animation_frame_3.png b/resources/animation/animation_frame_3.png deleted file mode 100644 index d55e776114180bbbe35711a0bb87fa69a0da6392..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4090 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

aFJ=2Z2Px@?Fu&um<> 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 N002ovPDHLkV1hJL$3Fl7

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 WEx!dvGx(6Yr;n_aYpJxR$^QeR@i8j^ diff --git a/resources/fpga_selftest.bin b/resources/fpga_selftest.bin deleted file mode 100644 index a39be3646fcc771e100a930bba99bf42336040fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 104090 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 diff --git a/resources/icons/apps.png b/resources/icons/apps.png deleted file mode 100644 index 535f73c2fe4d5c5a5e7153ad908cb3ca99352546..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 700 zcmV;t0z>_YP)x*t{C1Y)Wc>_up!;qhYZ)7;mNn5pH-Fsm6e6@c^2w>?$y z-ATr~lT=MAXH!VqLWPSC2HG#+u#76!GuW@e7>N+ zt4+BsI$#Y@*YxR%4s#`ICfXcS##p7MmM6okch?nba2w#5K(;ckn3de(+fTK9Dpk*~ z7#9Fihqgq(gqG2BLX7=BLX7=KJW_|3v;E%e#6#d?boo- zbW?vGbl@Xf#WZKqQr%aeeCY$SvVZZQ8f!GtBF>VTt;);@b1Qjd4-DO;{Yo`kOH!rh zU6AA*jaPnkzS7wjr1bVq0x7*?y2eC&i%jpjZB>Gu>**1Cw`Tnq%NRpDcx&due``)% iXf3W80ExGQI-=hxklWaOAukvJ0000rUWv8s>fe@AJ(6o%j9Eh^pcR z0a5TK&SQ~@ ze`c*$e$NtMNN4)07AW=Pqh)C>B6=@x1EML@ThwK($WHJ4vvk2O+iFy}HD3b&nv#9p zdzw3PHn8dSr6on*m%anm9QzJoP|)_} ziNaIaTW)P=+Lq@@mf59TxKrUhivKgRB}lhM)hyh+Flm>Bo_K9^2P~u=h=-!voq@U3 zH5V-Wci_Oyn*~1uBWHjJ_&9{pn3w|-ZCIQLv}F#btbw6m@-!+Z{1%=BWwj!$L%}4# zNpO@vkqCflYHK_c6_kXJ!ijh&DqGSja+eCQbf!gt>c2wwrZc1NB%wZM5A z3O$oeOP`>Ad=CKhx#|3C!}MUt@-)?n$U#5U1u`GD({x?2afG^U%N06>7da8^d!F#>3I0pyzYf=3I9u z*5XC;G@zjIQ0!PrsRst;AU&X>b@6bt#h1V13?7A}_l8SG%LVoeTnFAe!tWKiCaR6Y jC8OotwXsgOJX7%(!*vf8fZnaz00000NkvXXu0mjf%4dlK diff --git a/resources/icons/hatchery.png b/resources/icons/hatchery.png deleted file mode 100644 index 7cf5a6a5a5a973af43f9f0c98612ba60439796fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 725 zcmV;`0xJE9P)&sPGI<#o1hyNqc-F<+2|$ES0AsmUT&!1fjdqp| z0N4dEpWQNAOc-47Qu#JgPJj@=`>B_6#e_rCL+N~5=%)Np%ZD&p-|p{0SYxFok^(-i z;d<33z$U zTMa@)%vjx*>#o)!b2c)GGuaW@r7<;fJbG>XU)nyF;0F)fOR4dOwx}d83^>oJq00000NkvXX Hu0mjf^j$uu diff --git a/resources/icons/home.png b/resources/icons/home.png deleted file mode 100644 index 03d2f3df15bbd4cef0f5df0d5b065af0e5f0db65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 439 zcmV;o0Z9IdP)H(6_XG@JC(9P9}7x5|gr%CYX@Bu`SolZpme79(v-8&EuJM`4e zf;j*Pbm^&kJRh%TK*8MUj&7tmz+&u0+Mr6KZwLdK0VJW%H5vV4K7;s3ua^f<7Q0Rs z&z1w2#r`Mh0ajqH2e8|@nUc^q18~{7fpS+=3s7zBg;z8Oz_z@q$b25+QVRf}SE2b- zTV((%R|C)hIDL`{a)9lNyIk?{Xh1Nso#mFmPjdk1pWV8Qs(l3wKm+ja044@Kamkr= hzuT|b5>@*Oz5w1Rbm)4hgh2oR002ovPDHLkV1k`DwGjXS diff --git a/resources/icons/settings.png b/resources/icons/settings.png deleted file mode 100644 index 2f4a61ce837f599d1f461d8668eeac1296572ed3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1050 zcmV+#1m*jQP)Ki|{B=r%*Pgc&bdekI1}cExV=)<7)NT@B)r0bYpn(nW=4i9@yv zTfNuGVp1K^1vDnp!JHTV2PVepForQ&6AfgWilHg2=kcQaXis}eOXzd?ect!^e$V^9 z&yOQBqgFe9e4^p;rH2WF!91d5CY_1>U}KMJjTNk!9XPV|V9e0DZN%OTh4-xj7ix{= z)ViTx(*e+Hr5?SW_w9iI2}RrEZQY%TX0LB0JU;-ml-bs@5?MIo1-m;F&C&LFn}o`8 zdEdZ^aN?MWFM%h4HQ*X@CuD)F;hqG=fCirrT1UL+VAox&3DYp>G|(txPRjLtn>v5n zSAc|~;l$hq`JS7MxtTvkpEhHQwCD<=;SW0MMGj!%sS}ZSdm&aNU|*o&KKWy>m#t-k zy6-FC>xDP|2K%Cp0PGMCBQI1^i1M$!a&?UPg1mjh5&*T)SlOAjvy&QiX@0r_K}O^rk= zk#AaWB=H@UuVWePaweU<7~JS;=PE1)z%jd84LN`rSEY&qT0rlF!c8G(yQS_F)%mqr z0SeeJRW2Q>xf|}O8RmeJRjrjhQ*B(CbF`|34oN4I&cwhj0n0l?t?sG-Y{#|Bl8qls zb(}9w!^pxJnO(sr4NcZRyBM3U6ge76ye#l5=WCK)J&3X3Ah$GTt{+%Mkg0ITnH2im`%TZ7x7yi1>Cu{_|`pN0cMzE zxl=OcHlQrnr?`67b(}8A#)0(;1Z$FwyN=UkuKOJD8QU}F9ar?3XWA*L1CSrjUucWB zDwusR^ZVGpg}!L(`$IBImSdMRcw=#-sB3n2CYpn;9lCihw&*4I6;R3gH68dbeD_aE zXNTp3>5eBhD_pf!b2rQr*kvy+*@v}~!!G}hGwJNbP`D`s3}F}!$pfj*OS_5nKNh8R UEz2+6WB>pF07*qoM6N<$f?Hkk>;M1& diff --git a/resources/isrgrootx1.pem b/resources/isrgrootx1.pem deleted file mode 100644 index b85c803..0000000 --- a/resources/isrgrootx1.pem +++ /dev/null @@ -1,31 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw -TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh -cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4 -WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu -ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY -MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc -h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+ -0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U -A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW -T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH -B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC -B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv -KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn -OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn -jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw -qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI -rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV -HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq -hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL -ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ -3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK -NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5 -ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur -TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC -jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc -oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq -4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA -mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d -emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc= ------END CERTIFICATE----- diff --git a/resources/logo_screen.png b/resources/logo_screen.png deleted file mode 100644 index 6a550ead7cca83d98cd8edca9956a3bf5de24b42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25435 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 diff --git a/resources/mch2022_logo.png b/resources/mch2022_logo.png deleted file mode 100644 index f8cc80c8fd4a29333ba19ff33f89ecbb2bddede7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24323 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 diff --git a/resources/wallpaper.png b/resources/wallpaper.png deleted file mode 100644 index 35c3b1ffbfd7819c849286cdba7f1d8f3bf65e5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 190892 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