mirror of
https://github.com/crosspoint-reader/crosspoint-reader.git
synced 2026-08-13 14:21:57 -07:00
## Summary Build action take too much time. Lets see if splitting it to two seperate action would speed things up. --- ### AI Usage While CrossPoint doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it helps set the right context for reviewers. Did you use AI tools to help write this code? _**< PARTIALLY >**_
227 lines
8.1 KiB
INI
227 lines
8.1 KiB
INI
[platformio]
|
|
default_envs = default
|
|
build_cache_dir = .cache
|
|
extra_configs = platformio.local.ini
|
|
|
|
[crosspoint]
|
|
version = 1.5.0
|
|
|
|
[base]
|
|
platform = https://github.com/pioarduino/platform-espressif32/releases/download/55.03.37/platform-espressif32.zip
|
|
board = esp32-c3-devkitm-1
|
|
framework = arduino
|
|
monitor_speed = 115200
|
|
upload_speed = 921600
|
|
check_tool = cppcheck
|
|
; missingInclude (project headers) is suppressed alongside missingIncludeSystem: on a
|
|
; fresh CI checkout cppcheck has no resolved include paths, so it reports every
|
|
; project header as missing (~400 information-level lines) and fails the job.
|
|
check_flags = --enable=all --suppress=missingIncludeSystem --suppress=missingInclude --suppress=unusedFunction --suppress=unmatchedSuppression --suppress=*:*/.pio/* --inline-suppr
|
|
check_skip_packages = yes
|
|
|
|
board_upload.flash_size = 16MB
|
|
board_upload.maximum_size = 16777216
|
|
board_upload.offset_address = 0x10000
|
|
|
|
build_flags =
|
|
-DARDUINO_USB_MODE=1
|
|
-DARDUINO_USB_CDC_ON_BOOT=1
|
|
-DEINK_DISPLAY_SINGLE_BUFFER_MODE=1
|
|
-DDISABLE_FS_H_WARNING=1
|
|
-DDESTRUCTOR_CLOSES_FILE=1
|
|
# https://libexpat.github.io/doc/api/latest/#XML_GE
|
|
-DXML_GE=0
|
|
-DXML_CONTEXT_BYTES=1024
|
|
-std=gnu++2a
|
|
# Enable UTF-8 long file names in SdFat
|
|
-DUSE_UTF8_LONG_NAMES=1
|
|
# Increase PNG scanline buffer to support up to 2048px wide images
|
|
# Default is (320*4+1)*2=2562, we need more for larger images
|
|
-DPNG_MAX_BUFFERED_PIXELS=16416
|
|
-DFREEINK_NET_WOLFSSL=1
|
|
-DWOLFSSL_USER_SETTINGS
|
|
-DWOLFSSL_OPTIONS_H
|
|
-DWOLFSSL_CLIENT_EXAMPLE
|
|
-DWOLFSSL_TLS13
|
|
# MEMFIX-PORT: single-precision ECC (sp_c32.c). Without it every P-256 operation
|
|
# (TLS 1.3 key_share keygen, ECDHE, ECDSA cert verify) runs on fast-math bignums
|
|
# that WOLFSSL_SMALL_STACK heap-allocates at FP_MAX_BITS size -- tens of KB of
|
|
# temporaries, which OOMs (MP_MEM) at the ~50KB free heap a reading session
|
|
# leaves. SP uses fixed 256-bit arrays: a few KB, and several times faster.
|
|
# SP_SMALL trades the large precomputed point tables for smaller flash.
|
|
-DWOLFSSL_HAVE_SP_ECC
|
|
-DWOLFSSL_SP_SMALL
|
|
# Arduino-wolfSSL's user_settings.h enables TLS extensions, supported curves,
|
|
# HKDF, and RSA-PSS when WOLFSSL_TLS13 is set. Do not repeat those defines here:
|
|
# GCC reports every library translation unit as a macro redefinition.
|
|
-DHAVE_FFDHE_2048
|
|
-DHAVE_CURVE25519
|
|
-DHAVE_SNI
|
|
-Wno-bidi-chars
|
|
-Wl,--wrap=panic_print_backtrace,--wrap=panic_abort,--wrap=bootloader_common_check_efuse_blk_validity
|
|
-fno-exceptions
|
|
|
|
build_unflags =
|
|
-std=gnu++11
|
|
-fexceptions
|
|
|
|
; Board configuration
|
|
board_build.flash_mode = dio
|
|
board_build.flash_size = 16MB
|
|
board_build.partitions = partitions.csv
|
|
|
|
; MEMFIX-PORT: custom_sdkconfig heap reclamation (~32-37 KB). Rebuilds the
|
|
; Arduino core libs on first build (slower once, cached after; needs the CMake
|
|
; pin in platformio.local.ini on macOS).
|
|
;
|
|
; If an interrupted rebuild fails with "multiple definition of 'app_main'"
|
|
; (stale generated scaffold), clean it up with:
|
|
; rm -rf .dummy CMakeLists.txt sdkconfig.default sdkconfig.defaults .pio/build/default
|
|
; Do NOT use `git clean -fdX` — it deletes platformio.local.ini.
|
|
custom_sdkconfig =
|
|
; Task stack right-sizing from measured high-water marks (heap block map +
|
|
; per-task stack audit, July 2026): esp_timer used ~0.8 KB of 8 KB across
|
|
; every capture; the FreeRTOS timer service used ~0.5 KB
|
|
; of 4 KB. Neither runs TLS or app code. ~7 KB back to the heap.
|
|
CONFIG_ESP_TIMER_TASK_STACK_SIZE=4096
|
|
CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2560
|
|
; Move the WiFi stack's non-critical hot paths out of IRAM into flash.
|
|
; On the C3, IRAM and DRAM share one SRAM pool, so the ~25-30 KB this
|
|
; frees lands directly in the heap — paid for with lower WiFi throughput
|
|
; during transfers (occasional sync/OTA use, not streaming: acceptable).
|
|
; IRAM cost is static, so the heap gain applies even with WiFi off.
|
|
CONFIG_ESP_WIFI_IRAM_OPT=n
|
|
CONFIG_ESP_WIFI_RX_IRAM_OPT=n
|
|
; Keep the Arduino wrappers for the removed cloud components (below) out of
|
|
; the core source list; all other bundled libraries default to enabled.
|
|
CONFIG_ARDUINO_SELECTIVE_COMPILATION=y
|
|
CONFIG_ARDUINO_SELECTIVE_RainMaker=n
|
|
CONFIG_ARDUINO_SELECTIVE_Insights=n
|
|
; ESP_SR (speech recognition) only exists in the S3 core; its wrapper includes
|
|
; ESP_I2S.h, which the isolated core rebuild can't resolve. Unused here anyway,
|
|
; so drop it or the sticky env fails to build.
|
|
CONFIG_ARDUINO_SELECTIVE_ESP_SR=n
|
|
|
|
; Drop unused cloud components from the core rebuild. esp_insights/rainmaker
|
|
; require embedded server certs the lib builder can't generate
|
|
; ("https_server.crt.S not found"); this firmware uses none of them.
|
|
custom_component_remove =
|
|
espressif/esp_insights
|
|
espressif/esp_rainmaker
|
|
espressif/esp_diagnostics
|
|
espressif/esp_diag_data_store
|
|
espressif/esp_schedule
|
|
espressif/esp_rcp_update
|
|
espressif/esp_secure_cert_mgr
|
|
espressif/cbor
|
|
|
|
extra_scripts =
|
|
pre:scripts/patch_wolfssl.py
|
|
pre:scripts/build_html.py
|
|
pre:scripts/gen_i18n.py
|
|
pre:scripts/git_branch.py
|
|
pre:scripts/patch_jpegdec.py
|
|
post:scripts/register_unit_tests_target.py
|
|
|
|
; Libraries
|
|
lib_deps =
|
|
BatteryMonitor=symlink://freeink-sdk/libs/hardware/BatteryMonitor
|
|
InputManager=symlink://freeink-sdk/libs/hardware/InputManager
|
|
EInkDisplay=symlink://freeink-sdk/libs/display/FreeInkDisplay
|
|
SDCardManager=symlink://freeink-sdk/libs/hardware/SDCardManager
|
|
BoardConfig=symlink://freeink-sdk/libs/hardware/BoardConfig
|
|
XteinkDetect=symlink://freeink-sdk/libs/hardware/XteinkDetect
|
|
PowerManager=symlink://freeink-sdk/libs/hardware/PowerManager
|
|
Rtc=symlink://freeink-sdk/libs/hardware/Rtc
|
|
Imu=symlink://freeink-sdk/libs/hardware/Imu
|
|
SecureNet=symlink://freeink-sdk/libs/network/SecureNet
|
|
FreeInkUI=symlink://freeink-sdk/libs/ui/FreeInkUI
|
|
Icons=symlink://freeink-sdk/libs/assets/Icons
|
|
bblanchon/ArduinoJson @ 7.4.2
|
|
ricmoo/QRCode @ 0.0.1
|
|
bitbank2/PNGdec @ 1.1.6
|
|
https://github.com/bitbank2/JPEGDEC.git#86282979224c8a32fd51e091ed5a35b0c699a52b
|
|
links2004/WebSockets @ 2.7.3
|
|
wolfssl/Arduino-wolfSSL @ 5.7.2
|
|
|
|
lib_ignore =
|
|
BLE
|
|
|
|
[env:default]
|
|
extends = base
|
|
build_flags =
|
|
${base.build_flags}
|
|
; CROSSPOINT_VERSION is set by scripts/git_branch.py (includes branch + short SHA)
|
|
-DFREEINK_DEVICE_X4=1
|
|
-DFREEINK_DEVICE_X3=1
|
|
-DENABLE_SERIAL_LOG
|
|
-DLOG_LEVEL=2 ; Set log level to debug for development builds
|
|
|
|
|
|
[env:gh_release]
|
|
extends = base
|
|
build_flags =
|
|
${base.build_flags}
|
|
-DFREEINK_DEVICE_X4=1
|
|
-DFREEINK_DEVICE_X3=1
|
|
-DCROSSPOINT_VERSION=\"${crosspoint.version}\"
|
|
-DENABLE_SERIAL_LOG
|
|
-DLOG_LEVEL=1 ; Set log level to info for release builds
|
|
|
|
[env:gh_release_rc]
|
|
extends = base
|
|
build_flags =
|
|
${base.build_flags}
|
|
-DFREEINK_DEVICE_X4=1
|
|
-DFREEINK_DEVICE_X3=1
|
|
-DCROSSPOINT_VERSION=\"${crosspoint.version}-rc+${sysenv.CROSSPOINT_RC_HASH}\"
|
|
-DENABLE_SERIAL_LOG
|
|
-DLOG_LEVEL=1 ; Set log level to info for release candidate builds
|
|
|
|
[env:slim]
|
|
extends = base
|
|
build_flags =
|
|
${base.build_flags}
|
|
-DFREEINK_DEVICE_X4=1
|
|
-DFREEINK_DEVICE_X3=1
|
|
-DCROSSPOINT_VERSION=\"${crosspoint.version}-slim\"
|
|
; serial output is disabled in slim builds to save space
|
|
-UENABLE_SERIAL_LOG
|
|
|
|
; --- Seeed Sticky — ESP32-S3R8, 3.97" 800x480 SSD1677 + GT911 touch -----------
|
|
; Different MCU family than the C3 envs (one binary per family). The SDK
|
|
; auto-enables CAP_TOUCH (GT911) and the BQ27220 gauge for this device; PSRAM is
|
|
; intentionally left off (48KB framebuffer fits in DRAM, same as X4).
|
|
; pio run -e sticky -t upload
|
|
[env:sticky]
|
|
extends = base
|
|
board = esp32-s3-devkitc1-n16r8
|
|
board_build.mcu = esp32s3
|
|
build_flags =
|
|
${base.build_flags}
|
|
-DFREEINK_DEVICE_STICKY=1
|
|
-DENABLE_SERIAL_LOG
|
|
-DLOG_LEVEL=2
|
|
|
|
[env:sticky-gh_release]
|
|
extends = base
|
|
board = esp32-s3-devkitc1-n16r8
|
|
board_build.mcu = esp32s3
|
|
build_flags =
|
|
${base.build_flags}
|
|
-DFREEINK_DEVICE_STICKY=1
|
|
-DCROSSPOINT_VERSION=\"${crosspoint.version}\"
|
|
-DENABLE_SERIAL_LOG
|
|
-DLOG_LEVEL=1 ; Set log level to info for release builds
|
|
|
|
[env:sticky-gh_release_rc]
|
|
extends = base
|
|
board = esp32-s3-devkitc1-n16r8
|
|
board_build.mcu = esp32s3
|
|
build_flags =
|
|
${base.build_flags}
|
|
-DFREEINK_DEVICE_STICKY=1
|
|
-DCROSSPOINT_VERSION=\"${crosspoint.version}-rc+${sysenv.CROSSPOINT_RC_HASH}\"
|
|
-DENABLE_SERIAL_LOG
|
|
-DLOG_LEVEL=1 ; Set log level to info for release candidate builds
|