diff --git a/.forgejo/workflows/push.yaml b/.forgejo/workflows/push.yaml deleted file mode 100644 index cabc4e2..0000000 --- a/.forgejo/workflows/push.yaml +++ /dev/null @@ -1,136 +0,0 @@ -name: "BTClock CI" - -on: - push: - tags: - - "*" - workflow_dispatch: - -jobs: - build: - runs-on: docker - container: - image: ghcr.io/catthehacker/ubuntu:js-22.04 - permissions: - contents: write - checks: write - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - - uses: actions/setup-node@v4 - with: - node-version: lts/* - cache: yarn - cache-dependency-path: "**/yarn.lock" - - uses: actions/cache@v4 - with: - path: | - ~/.cache/pip - ~/.platformio/.cache - ~/data/node_modules - .pio - data/node_modules - key: ${{ runner.os }}-pio - - uses: actions/setup-python@v5 - with: - python-version: "3.9" - cache: "pip" - - name: Get current date - id: dateAndTime - shell: bash - run: echo "dateAndTime=$(date +'%Y-%m-%d-%H:%M')" >> $GITHUB_OUTPUT - - name: Install PlatformIO Core - shell: bash - run: pip install --upgrade platformio - - name: Build BTClock firmware - shell: bash - run: pio run - - name: Build BTClock filesystem - shell: bash - run: pio run --target buildfs - - name: Copy bootloader to output folder - run: cp ~/.platformio/packages/framework-arduinoespressif32/tools/partitions/boot_app0.bin .pio - - name: Upload artifacts - uses: https://code.forgejo.org/forgejo/upload-artifact@v4 - with: - include-hidden-files: true - retention-days: 1 - name: prepared-outputs - path: .pio/**/*.bin - merge: - runs-on: docker - container: - image: ghcr.io/catthehacker/ubuntu:js-22.04 - permissions: - contents: write - checks: write - needs: build - continue-on-error: true - strategy: - matrix: - chip: - - name: lolin_s2_mini - version: esp32s2 - - name: lolin_s3_mini - version: esp32s3 - - name: orangeclock - version: esp32s3 - epd_variant: [213epd, 29epd] - exclude: - - chip: { name: orangeclock, version: esp32s3 } - epd_variant: 213epd - steps: - - uses: https://code.forgejo.org/forgejo/download-artifact@v4 - with: - name: prepared-outputs - path: .pio - - name: Install esptools.py - run: pip install --upgrade esptool - - name: Create merged firmware binary - run: mkdir -p ${{ matrix.chip.name }}_${{ matrix.epd_variant }} && esptool.py --chip ${{ matrix.chip.version }} merge_bin -o ${{ matrix.chip.name }}_${{ matrix.epd_variant }}/${{ matrix.chip.name }}_${{ matrix.epd_variant }}.bin --flash_mode dio 0x0000 .pio/build/${{ matrix.chip.name }}_${{ matrix.epd_variant }}/bootloader.bin 0x8000 .pio/build/${{ matrix.chip.name }}_${{ matrix.epd_variant }}/partitions.bin 0xe000 .pio/boot_app0.bin 0x10000 .pio/build/${{ matrix.chip.name }}_${{ matrix.epd_variant }}/firmware.bin 0x369000 .pio/build/${{ matrix.chip.name }}_${{ matrix.epd_variant }}/littlefs.bin - - - name: Create checksum for firmware - shell: bash - run: shasum -a 256 .pio/build/${{ matrix.chip.name }}_${{ matrix.epd_variant }}/firmware.bin | awk '{print $1}' > ${{ matrix.chip.name }}_${{ matrix.epd_variant }}/${{ matrix.chip.name }}_${{ matrix.epd_variant }}_firmware.bin.sha256 - - - name: Create checksum for merged binary - run: shasum -a 256 ${{ matrix.chip.name }}_${{ matrix.epd_variant }}/${{ matrix.chip.name }}_${{ matrix.epd_variant }}.bin | awk '{print $1}' > ${{ matrix.chip.name }}_${{ matrix.epd_variant }}/${{ matrix.chip.name }}_${{ matrix.epd_variant }}.sha256 - - - name: Upload artifacts - uses: https://code.forgejo.org/forgejo/upload-artifact@v4 - with: - name: build-${{ matrix.chip.name }}-${{ matrix.epd_variant }} - path: | - ${{ matrix.chip.name }}_${{ matrix.epd_variant }}/*.bin - ${{ matrix.chip.name }}_${{ matrix.epd_variant }}/*.sha256 - release: - runs-on: docker - permissions: - contents: write - checks: write - needs: merge - steps: - - name: Download matrix outputs - uses: https://code.forgejo.org/forgejo/download-artifact@v4 - with: - pattern: build-* - merge-multiple: false - path: temp - - name: Copy files - run: | - mkdir -p release - find temp -type f \( -name "*.bin" -o -name "*.sha256" \) -exec cp -f {} release/ \; - - name: Create release - uses: https://code.forgejo.org/actions/forgejo-release@v2.4.0 - with: - url: "https://git.btclock.dev" - repo: "${{ github.repository }}" - direction: upload - tag: "${{ github.ref_name }}" - sha: "${{ github.sha }}" - release-dir: release - token: ${{ secrets.TOKEN }} - override: ${{ github.ref_type != 'tag' && github.ref_name != 'main' }} - prerelease: ${{ github.ref_type != 'tag' && github.ref_name != 'main' }} - release-notes-assistant: false diff --git a/.github/actions/install-build/action.yml b/.github/actions/install-build/action.yml index 891a8a5..3850177 100644 --- a/.github/actions/install-build/action.yml +++ b/.github/actions/install-build/action.yml @@ -4,11 +4,11 @@ description: "Install and build" runs: using: "composite" steps: - - uses: actions/setup-node@v4 - with: - node-version: lts/* - cache: yarn - cache-dependency-path: '**/yarn.lock' + # - uses: actions/setup-node@v4 + # with: + # node-version: lts/* + # cache: yarn + # cache-dependency-path: '**/yarn.lock' - uses: actions/cache@v3 with: path: | diff --git a/.github/workflows/tagging.yml b/.github/workflows/tagging.yml index 5643d3b..29b4b62 100644 --- a/.github/workflows/tagging.yml +++ b/.github/workflows/tagging.yml @@ -31,17 +31,12 @@ jobs: continue-on-error: true strategy: matrix: + epd_variant: [213epd, 29epd] chip: - name: lolin_s2_mini version: esp32s2 - name: lolin_s3_mini version: esp32s3 - - name: orangeclock - version: esp32s3 - epd_variant: [213epd, 29epd] - exclude: - - chip: orangeclock - epd_variant: 213epd runs-on: ubuntu-latest permissions: contents: write diff --git a/.gitmodules b/.gitmodules index 55b6d4f..f9d84d8 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ [submodule "data"] path = data - url = https://git.btclock.dev/btclock/oc-webui.git + url = https://github.com/btclock/oc-webui.git diff --git a/README.md b/README.md deleted file mode 100644 index 1fb871f..0000000 --- a/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# OrangeBTClock (working title) - -[![BTClock CI](https://github.com/btclock/OrangeBTClock/actions/workflows/tagging.yml/badge.svg)](https://github.com/btclock/OrangeBTClock/actions/workflows/tagging.yml) - -Firmware for cheap ESP32-S2/S3 hardware combined with a eInk display - -See releases for prebuilt binaries, ready to flash (e.g. with the [esphome web flasher](https://web.esphome.io/)) - -## Development - -- [PlatformIO](https://platformio.org/platformio-ide). -- [Node.js](https://nodejs.org/en) and [yarn](https://yarnpkg.com/). - diff --git a/boards/orangeclock.json b/boards/orangeclock.json deleted file mode 100644 index 7ea7754..0000000 --- a/boards/orangeclock.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "build": { - "arduino":{ - "ldscript": "esp32s3_out.ld", - "partitions": "default_8MB.csv", - "memory_type": "qio_opi" - }, - "core": "esp32", - "extra_flags": [ - "-DBOARD_HAS_PSRAM", - "-DARDUINO_ORANGECLOCK", - "-DARDUINO_ESP32S3_DEV", - "-DIS_ORANGECLOCK", - "-DARDUINO_USB_MODE=0", - "-DARDUINO_RUNNING_CORE=1", - "-DARDUINO_EVENT_RUNNING_CORE=1", - "-DARDUINO_USB_CDC_ON_BOOT=1" - ], - "f_cpu": "240000000L", - "f_flash": "80000000L", - "flash_mode": "qio", - "psram_type": "opi", - "espidf": { - "sdkconfig_path": "boards" - }, - "hwids": [ - [ - "0x303A", - "0x1001" - ] - ], - "mcu": "esp32s3", - "variant": "esp32s3" - }, - "connectivity": [ - "bluetooth", - "wifi" - ], - "debug": { - "default_tool": "esp-builtin", - "onboard_tools": [ - "esp-builtin" - ], - "openocd_target": "esp32s3.cfg" - }, - "frameworks": [ - "arduino", - "espidf" - ], - "name": "OrangeClock", - "upload": { - "flash_size": "8MB", - "maximum_ram_size": 327680, - "maximum_size": 16777216, - "use_1200bps_touch": true, - "wait_for_upload_port": true, - "require_upload_port": true, - "speed": 460800 - }, - "url": "http://github.com/btclock", - "vendor": "BTClock" -} \ No newline at end of file diff --git a/data b/data index 8332fec..bd12ce4 160000 --- a/data +++ b/data @@ -1 +1 @@ -Subproject commit 8332fec4a1ec0045d91f063617bb441914e7b67a +Subproject commit bd12ce4362f0b665a33e1f637136870a667dbdfc diff --git a/platformio.ini b/platformio.ini index af5bf0f..d86dcf0 100644 --- a/platformio.ini +++ b/platformio.ini @@ -10,12 +10,11 @@ [platformio] data_dir = data/build_gz -default_envs = lolin_s2_mini_213epd, lolin_s2_mini_29epd, lolin_s3_mini_213epd, lolin_s3_mini_29epd, orangeclock_29epd +default_envs = lolin_s2_mini_213epd, lolin_s2_mini_29epd, lolin_s3_mini_213epd, lolin_s3_mini_29epd [btclock_base] platform = espressif32 framework = arduino -platform_packages = platformio/framework-arduinoespressif32 monitor_speed = 115200 monitor_filters = esp32_exception_decoder, colorize board_build.filesystem = littlefs @@ -25,11 +24,12 @@ build_flags = !python scripts/git_rev.py -DLAST_BUILD_TIME=$UNIX_TIME lib_deps = - zinggjm/GxEPD2@^1.6.1 + zinggjm/GxEPD2@^1.5.6 https://github.com/tzapu/WiFiManager.git#v2.0.17 - bblanchon/ArduinoJson@^7.2.1 - mathieucarbou/ESP Async WebServer@^3.0.6 - fastled/FastLED@^3.9.6 + bblanchon/ArduinoJson@^7.0.3 + mathieucarbou/ESP Async WebServer + gilmaimon/ArduinoWebsockets@^0.5.3 + [env:lolin_s2_mini] extends = btclock_base board = lolin_s2_mini @@ -60,15 +60,4 @@ build_flags = extends = env:lolin_s3_mini build_flags = ${btclock_base.build_flags} - -D VERSION_EPD_2_9 - - -[env:orangeclock_29epd] -extends = btclock_base -board = orangeclock -build_flags = - ${btclock_base.build_flags} - -D VERSION_EPD_2_9 - -D IS_ORANGECLOCK - -D BUTTON_PIN=45 - -D NUM_LEDS=2 \ No newline at end of file + -D VERSION_EPD_2_9 \ No newline at end of file diff --git a/src/bitmap.hpp b/src/bitmap.hpp deleted file mode 100644 index 72dbda9..0000000 --- a/src/bitmap.hpp +++ /dev/null @@ -1,81 +0,0 @@ -#pragma once - -#include -// 'oclogo', 250x37px -const unsigned char epd_bitmap_oclogo [] PROGMEM = { - 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x07, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1f, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x7f, 0xc3, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xfc, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0xf0, 0x0c, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0xe3, 0x9c, 0x07, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x07, 0xc7, 0x9c, 0x03, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0x00, 0x00, - 0x0f, 0x8f, 0x9c, 0x01, 0xe0, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0x00, 0x00, - 0x0f, 0x07, 0x9c, 0x00, 0xf0, 0x00, 0x1f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xc0, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0x00, 0x00, - 0x1e, 0x63, 0x9c, 0x00, 0x78, 0x00, 0x7f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xf0, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0x00, 0x00, - 0x1e, 0x71, 0x9c, 0x00, 0x78, 0x00, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0x00, 0x00, - 0x3c, 0xf8, 0x9c, 0x00, 0x38, 0x01, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0x00, 0x00, - 0x3c, 0xfc, 0x1c, 0x00, 0x3c, 0x01, 0xfc, 0x1f, 0xe1, 0xf3, 0xc3, 0xfc, 0x03, 0xe7, 0xe0, 0x03, - 0xf3, 0xe0, 0x1f, 0xc0, 0x3f, 0xc1, 0xf0, 0xf8, 0x07, 0xf0, 0x00, 0x7f, 0x03, 0xf0, 0x7e, 0x00, - 0x39, 0xfe, 0x1c, 0x00, 0x1c, 0x03, 0xf8, 0x07, 0xe1, 0xff, 0xdf, 0xff, 0x03, 0xff, 0xf0, 0x0f, - 0xff, 0xe0, 0x7f, 0xf0, 0x3f, 0x80, 0x40, 0xf8, 0x1f, 0xfc, 0x01, 0xff, 0xc3, 0xf0, 0xfe, 0x00, - 0x39, 0xff, 0x1c, 0x00, 0x1c, 0x03, 0xf0, 0x07, 0xf1, 0xff, 0xdf, 0xff, 0x83, 0xff, 0xf8, 0x1f, - 0xff, 0xe0, 0xff, 0xf8, 0x3f, 0x00, 0x00, 0xf8, 0x3f, 0xff, 0x03, 0xff, 0xe3, 0xf1, 0xfc, 0x00, - 0x39, 0xff, 0x9c, 0x00, 0x1c, 0x03, 0xf0, 0x03, 0xf1, 0xff, 0xcf, 0xff, 0x83, 0xff, 0xfc, 0x3f, - 0xff, 0xe1, 0xff, 0xfc, 0x7e, 0x00, 0x00, 0xf8, 0x7f, 0xff, 0x07, 0xff, 0xf3, 0xf3, 0xf8, 0x00, - 0x78, 0x00, 0x1c, 0x00, 0x1c, 0x07, 0xe0, 0x03, 0xf1, 0xff, 0xce, 0x1f, 0xc3, 0xff, 0xfc, 0x3f, - 0x8f, 0xe1, 0xf8, 0x7e, 0x7e, 0x00, 0x00, 0xf8, 0x7f, 0x3f, 0x8f, 0xe3, 0xe3, 0xf7, 0xf0, 0x00, - 0x78, 0x00, 0x1e, 0x00, 0x1c, 0x07, 0xe0, 0x03, 0xf1, 0xfc, 0x00, 0x0f, 0xc3, 0xf0, 0xfc, 0x7f, - 0x07, 0xe3, 0xf0, 0x3e, 0x7e, 0x00, 0x00, 0xf8, 0xfc, 0x1f, 0x8f, 0xc1, 0xc3, 0xff, 0xe0, 0x00, - 0x78, 0x00, 0x1f, 0x00, 0x1c, 0x07, 0xe0, 0x03, 0xf1, 0xf8, 0x00, 0x0f, 0xc3, 0xe0, 0x7c, 0x7e, - 0x03, 0xe3, 0xf0, 0x3e, 0x7e, 0x00, 0x00, 0xf8, 0xfc, 0x0f, 0xcf, 0x80, 0x03, 0xff, 0xc0, 0x00, - 0x39, 0xff, 0x0f, 0x80, 0x1c, 0x07, 0xe0, 0x03, 0xf1, 0xf8, 0x07, 0xff, 0xc3, 0xe0, 0x7e, 0x7e, - 0x03, 0xe3, 0xff, 0xfe, 0x7e, 0x00, 0x00, 0xf8, 0xfc, 0x0f, 0xdf, 0x80, 0x03, 0xff, 0xc0, 0x00, - 0x39, 0xff, 0x07, 0xc0, 0x1c, 0x03, 0xf0, 0x03, 0xf1, 0xf8, 0x1f, 0xff, 0xc3, 0xe0, 0x7e, 0x7e, - 0x03, 0xe3, 0xff, 0xfe, 0x7f, 0x00, 0x00, 0xf8, 0xf8, 0x0f, 0xdf, 0x80, 0x03, 0xff, 0xe0, 0x00, - 0x39, 0xfe, 0x23, 0xe0, 0x1c, 0x03, 0xf0, 0x07, 0xf1, 0xf8, 0x1f, 0xff, 0xc3, 0xe0, 0x7e, 0x7f, - 0x07, 0xe3, 0xf0, 0x00, 0x3f, 0x00, 0x40, 0xf8, 0xfc, 0x0f, 0xcf, 0x80, 0x03, 0xff, 0xe0, 0x00, - 0x3c, 0xfc, 0x61, 0xf0, 0x3c, 0x03, 0xf8, 0x0f, 0xe1, 0xf8, 0x3f, 0x0f, 0xc3, 0xe0, 0x7e, 0x3f, - 0x8f, 0xe3, 0xf0, 0x00, 0x3f, 0x80, 0xe0, 0xf8, 0xfc, 0x1f, 0x8f, 0xc1, 0x83, 0xff, 0xf0, 0x00, - 0x3c, 0xf8, 0xe0, 0xf8, 0x38, 0x01, 0xff, 0x3f, 0xe1, 0xf8, 0x3f, 0x0f, 0xc3, 0xe0, 0x7e, 0x3f, - 0xff, 0xe1, 0xf8, 0x30, 0x1f, 0xe3, 0xf0, 0xf8, 0x7e, 0x3f, 0x8f, 0xe3, 0xe3, 0xf3, 0xf8, 0x00, - 0x1e, 0x71, 0xe4, 0x7c, 0x78, 0x00, 0xff, 0xff, 0xc1, 0xf8, 0x3f, 0x1f, 0xc3, 0xe0, 0x7e, 0x1f, - 0xff, 0xe1, 0xff, 0xf8, 0x1f, 0xff, 0xf8, 0xf8, 0x7f, 0xff, 0x87, 0xff, 0xf3, 0xf1, 0xfc, 0x00, - 0x1e, 0x43, 0xe6, 0x3c, 0x78, 0x00, 0x7f, 0xff, 0x81, 0xf8, 0x1f, 0xff, 0xc3, 0xe0, 0x7e, 0x0f, - 0xff, 0xe0, 0xff, 0xfc, 0x0f, 0xff, 0xf0, 0xf8, 0x3f, 0xff, 0x03, 0xff, 0xe3, 0xf0, 0xfe, 0x00, - 0x0f, 0x07, 0xe7, 0x1c, 0xf0, 0x00, 0x3f, 0xff, 0x01, 0xf8, 0x1f, 0xff, 0xc3, 0xe0, 0x7e, 0x03, - 0xf3, 0xe0, 0x7f, 0xf8, 0x03, 0xff, 0xe0, 0xf8, 0x1f, 0xfe, 0x01, 0xff, 0xc3, 0xf0, 0x7e, 0x00, - 0x0f, 0x8f, 0xe7, 0x81, 0xe0, 0x00, 0x0f, 0xfc, 0x01, 0xf8, 0x07, 0xe7, 0xc3, 0xe0, 0x7e, 0x00, - 0x03, 0xe0, 0x1f, 0xf0, 0x01, 0xff, 0x80, 0xf8, 0x07, 0xf8, 0x00, 0x7f, 0x83, 0xf0, 0x7f, 0x00, - 0x07, 0xc7, 0xe7, 0xe3, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x07, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0xe3, 0xe7, 0x87, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, - 0x1f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0xf0, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, - 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xfc, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, - 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x7f, 0xc3, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, - 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1f, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, - 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x07, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; - diff --git a/src/config.cpp b/src/config.cpp index 3788a9a..5144416 100644 --- a/src/config.cpp +++ b/src/config.cpp @@ -6,9 +6,6 @@ const char *ntpServer = "pool.ntp.org"; // const long gmtOffset_sec = 0; const int daylightOffset_sec = 3600; TaskHandle_t OTAHandle = NULL; -SemaphoreHandle_t xButtonSemaphore = NULL; -const TickType_t debounceDelay = pdMS_TO_TICKS(500); -TickType_t lastButtonPressTime = 0; #define STA_SSID "" #define STA_PASS "" @@ -90,11 +87,11 @@ void setupWifi() randomSeed(seed); // WiFi.begin(, "); + WiFi.setAutoConnect(true); WiFi.setAutoReconnect(true); WiFiManager wm; -#ifndef ARDUINO_ORANGECLOCK // Touch pin 14 to reset if (touchRead(14) > 9000) { @@ -111,7 +108,6 @@ void setupWifi() wm.resetSettings(); } } -#endif String softAP_SSID = String("OrangeBTClock"); @@ -153,7 +149,6 @@ void setupWifi() Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); - epdShowIp(); // WiFi.setTxPower(WIFI_POWER_8_5dBm); // enableWiFi(); } @@ -180,6 +175,7 @@ void wakeModemSleep() void enableWiFi() { + adc_power_on(); delay(200); WiFi.disconnect(false); // Reconnect the network @@ -204,6 +200,7 @@ void enableWiFi() void disableWiFi() { + adc_power_off(); WiFi.disconnect(true); // Disconnect from the network WiFi.mode(WIFI_OFF); // Switch WiFi off Serial.println(""); @@ -265,44 +262,6 @@ void OTAUpdateTask(void *pvParameters) } } -void HandleButtonTask(void *pvParameters) -{ - for (;;) - { - if (xSemaphoreTake(xButtonSemaphore, portMAX_DELAY) == pdTRUE) - { - TickType_t currentTime = xTaskGetTickCount(); - if ((currentTime - lastButtonPressTime) >= debounceDelay) - { - lastButtonPressTime = currentTime; - - Serial.println("Button Pressed"); - - #ifdef NUM_LEDS - leds[0] = CRGB::SkyBlue; - leds[1] = CRGB::Black; - - FastLED.show(); - - vTaskDelay(100); - - leds[0] = CRGB::Black; - leds[1] = CRGB::DarkOrange; - - FastLED.show(); - - vTaskDelay(100); - - leds[0] = CRGB::Black; - leds[1] = CRGB::Black; - - FastLED.show(); - #endif - } - } - } -} - char getCurrencyIcon() { char ret; @@ -325,23 +284,4 @@ char getCurrencyIcon() } return ret; -} - -void IRAM_ATTR onButtonPress() -{ - xSemaphoreGiveFromISR(xButtonSemaphore, NULL); -} - -void setupButtonISR() -{ - xButtonSemaphore = xSemaphoreCreateBinary(); - - xTaskCreatePinnedToCore( - HandleButtonTask, // Task function - "Button Task", // Task name - 2048, // Stack size (bytes) - NULL, // Task parameters - 1, // Priority (1 is default) - NULL, // Task handle - 0); // Core to run the task (0 or 1) } \ No newline at end of file diff --git a/src/config.hpp b/src/config.hpp index 8a1aaa4..c4936e4 100644 --- a/src/config.hpp +++ b/src/config.hpp @@ -3,6 +3,7 @@ #include #include #include "shared.hpp" +#include "driver/adc.h" #include #include #include "epd.hpp" @@ -20,6 +21,4 @@ void wakeModemSleep(); void setModemSleep(); bool inPowerSaveMode(); -char getCurrencyIcon(); -void IRAM_ATTR onButtonPress(); -void setupButtonISR(); \ No newline at end of file +char getCurrencyIcon(); \ No newline at end of file diff --git a/src/epd.cpp b/src/epd.cpp index ec23ee6..10ad8d0 100644 --- a/src/epd.cpp +++ b/src/epd.cpp @@ -22,26 +22,17 @@ void setupDisplay() display.setRotation(1); display.setFont(&Antonio_SemiBold20pt7b); display.setTextColor(GxEPD_WHITE); - // int16_t tbx, tby; - // uint16_t tbw, tbh; - // display.getTextBounds("OrangeBTClock", 0, 0, &tbx, &tby, &tbw, &tbh); - // // center the bounding box by transposition of the origin: - // uint16_t x = ((display.width() - tbw) / 2) - tbx; - // uint16_t y = ((display.height() - tbh) / 2) - tby; + int16_t tbx, tby; + uint16_t tbw, tbh; + display.getTextBounds("OrangeBTClock", 0, 0, &tbx, &tby, &tbw, &tbh); + // center the bounding box by transposition of the origin: + uint16_t x = ((display.width() - tbw) / 2) - tbx; + uint16_t y = ((display.height() - tbh) / 2) - tby; display.fillScreen(GxEPD_BLACK); - // display.setCursor(x, y); -// display.print("OrangeBTClock"); - -// display.drawImage(epd_bitmap_allArray[0], GxEPD_WHITE, 0,0 250,37); - - int xPos = (display.width() - 250) / 2; - int yPos = (display.height() - 37) / 2; - display.drawBitmap(xPos,yPos, epd_bitmap_oclogo, 250, 37, GxEPD_WHITE); + display.setCursor(x, y); + display.print("OrangeBTClock"); display.display(false); - display.setCursor(0, 37); - - // display.fillScreen(GxEPD_WHITE); // display.drawLine(0, 10, display.width(), 10, GxEPD_BLACK); // display.drawLine(0, row2, display.width(), row2, GxEPD_BLACK); @@ -56,11 +47,11 @@ void setupDisplay() // display.display(true); - // display.setRotation(1); - // // display.fillRect(0, row1, display.width(), 54, GxEPD_BLACK); - // display.displayWindow(0, row1, display.width(), row2); + display.setRotation(1); + // display.fillRect(0, row1, display.width(), 54, GxEPD_BLACK); + display.displayWindow(0, row1, display.width(), row2); - // display.display(false); + display.display(true); // display.fillRect(0, row2, display.width(), 54, GxEPD_BLACK); // display.displayWindow(0, row2, display.width(), 54); @@ -73,22 +64,6 @@ void setupDisplay() // display.display(true); } -void epdShowIp() { - display.setRotation(1); - display.setFont(&LibreFranklin_SemiBold10pt7b); - display.setTextColor(GxEPD_WHITE); - String ipStr = WiFi.localIP().toString(); - int16_t tbx, tby; - uint16_t tbw, tbh; - display.getTextBounds(ipStr, 0, 0, &tbx, &tby, &tbw, &tbh); - // center the bounding box by transposition of the origin: - uint16_t x = ((display.width() - tbw) / 2) - tbx; - uint16_t y = ((display.height() - tbh) / 2) - tby + 37; - display.setCursor(x, y); - display.println(WiFi.localIP()); - display.display(true); -} - void updateRow2(String c, char icon) { if (c.equals(currentRow2) && icon == currentIcon2) diff --git a/src/epd.hpp b/src/epd.hpp index c566001..ab02ff1 100644 --- a/src/epd.hpp +++ b/src/epd.hpp @@ -2,12 +2,11 @@ #include "shared.hpp" #include "fonts/fonts.hpp" -#include "bitmap.hpp" + void setupDisplay(); void showSetupText(String t); void updateRow1(String c, char icon); void updateRow2(String c, char icon); void updateRow3(String c, char icon); -void updateRows(String row1Content, String row2Content, String row3Content); -void epdShowIp(); \ No newline at end of file +void updateRows(String row1Content, String row2Content, String row3Content); \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index 3cf7b1b..bb44a0a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -21,44 +21,23 @@ GxEPD2_BW display = EPD_CLASS(4, 2, 3, 1); GxEPD2_BW display = EPD_CLASS(5, 3, 2, 1); #endif -#ifdef ARDUINO_ORANGECLOCK -GxEPD2_BW display = EPD_CLASS(5, 3, 1, 2); -#endif - typedef void (*MethodPtr)(String, char); MethodPtr methods[] = {nullptr, updateRow1, updateRow2, updateRow3}; -WiFiClient client; +WiFiClientSecure client; uint currentPrice = 0; String currentBlock = ""; String currentFees = ""; -#ifdef NUM_LEDS -CRGB leds[NUM_LEDS]; -#endif - void setup() { // setCpuFrequencyMhz(40); Serial.begin(115200); - #ifndef IS_ORANGECLOCK + pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN, HIGH); - #else - - pinMode(BUTTON_PIN, INPUT_PULLUP); - attachInterrupt(BUTTON_PIN, onButtonPress, FALLING); - - FastLED.addLeds(leds, NUM_LEDS); - leds[0] = CRGB::GreenYellow; - leds[1] = CRGB::OrangeRed; - - FastLED.show(); - - setupButtonISR(); - #endif setupPreferences(); setupDisplay(); @@ -71,20 +50,9 @@ void setup() setupWebserver(); setupOTA(); } - // client.setInsecure(); + client.setInsecure(); - #ifndef IS_ORANGECLOCK digitalWrite(LED_BUILTIN, LOW); - #else - leds[0] = CRGB::Black; - leds[1] = CRGB::Black; - - FastLED.show(); - delay(100); - #endif - display.setFullWindow(); - display.clearScreen(GxEPD_WHITE); - display.display(true); } void loop() @@ -103,28 +71,28 @@ void loop() return; } - // client.setInsecure(); + client.setInsecure(); // - // IPAddress res; - // uint result = WiFi.hostByName("mempool.space", res); + IPAddress res; + uint result = WiFi.hostByName("mempool.space", res); - // if (result >= 0) - // { - // Serial.print("SUCCESS!"); - // Serial.println(res.toString()); - // } - // else - // { - // WiFi.reconnect(); + if (result >= 0) + { + Serial.print("SUCCESS!"); + Serial.println(res.toString()); + } + else + { + WiFi.reconnect(); - // while (WiFi.status() != WL_CONNECTED) - // { - // Serial.print('.'); - // delay(1000); - // } - // } + while (WiFi.status() != WL_CONNECTED) + { + Serial.print('.'); + delay(1000); + } + } for (uint i = 1; i <= 3; i++) { diff --git a/src/shared.cpp b/src/shared.cpp index a7dd264..2547a42 100644 --- a/src/shared.cpp +++ b/src/shared.cpp @@ -1,3 +1,2 @@ #include "shared.hpp" -volatile bool buttonPressed = false; diff --git a/src/shared.hpp b/src/shared.hpp index dd17f5b..ec281c6 100644 --- a/src/shared.hpp +++ b/src/shared.hpp @@ -1,16 +1,12 @@ #pragma once #include -#include +#include #include #include #include #include "utils.hpp" #include "fonts/fonts.hpp" -#include -#include -#include -#include #ifdef VERSION_EPD_2_13 #define EPD_CLASS GxEPD2_213_B74 @@ -92,7 +88,7 @@ const int LINE_DATE = 100; #define CURRENCY_AUD "AUD" #define CURRENCY_JPY "JPY" -extern WiFiClient client; +extern WiFiClientSecure client; extern GxEPD2_BW display; extern Preferences preferences; extern bool isUpdating; @@ -105,7 +101,3 @@ extern char currentIcon1; extern char currentIcon2; extern char currentIcon3; -#ifdef NUM_LEDS -extern CRGB leds[NUM_LEDS]; -#endif -extern volatile bool buttonPressed; \ No newline at end of file diff --git a/src/utils.hpp b/src/utils.hpp index 80419f0..8c32d47 100644 --- a/src/utils.hpp +++ b/src/utils.hpp @@ -4,7 +4,6 @@ #include #include #include "shared.hpp" -#include namespace ArduinoJson { template <>