mirror of
https://github.com/arendst/Tasmota.git
synced 2025-04-24 23:07:17 +00:00
Merge branch 'arendst:development' into development
This commit is contained in:
commit
406a1882c9
651
.github/workflows/CI_github.yml
vendored
651
.github/workflows/CI_github.yml
vendored
@ -1,651 +0,0 @@
|
||||
name: Tasmota CI
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
|
||||
jobs:
|
||||
tasmota:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: platformio run -e tasmota
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota-minimal:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: platformio run -e tasmota-minimal
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota-lite:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: platformio run -e tasmota-lite
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota-knx:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: platformio run -e tasmota-knx
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota-sensors:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: platformio run -e tasmota-sensors
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota-display:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: platformio run -e tasmota-display
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota-ir:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: platformio run -e tasmota-ir
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota-zbbridge:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: platformio run -e tasmota-zbbridge
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota-zigbee:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: platformio run -e tasmota-zigbee
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota-AF:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: platformio run -e tasmota-AF
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota-BG:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: platformio run -e tasmota-BG
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota-BR:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: platformio run -e tasmota-BR
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota-CN:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: platformio run -e tasmota-CN
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota-CZ:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: platformio run -e tasmota-CZ
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota-DE:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: platformio run -e tasmota-DE
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota-ES:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: platformio run -e tasmota-ES
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota-FR:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: platformio run -e tasmota-FR
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota-FY:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: platformio run -e tasmota-FY
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota-GR:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: platformio run -e tasmota-GR
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota-HE:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: platformio run -e tasmota-HE
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota-HU:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: platformio run -e tasmota-HU
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota-IT:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: platformio run -e tasmota-IT
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota-KO:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: platformio run -e tasmota-KO
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota-NL:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: platformio run -e tasmota-NL
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota-PL:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: platformio run -e tasmota-PL
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota-PT:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: platformio run -e tasmota-PT
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota-RO:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: platformio run -e tasmota-RO
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota-RU:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: platformio run -e tasmota-RU
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota-SE:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: platformio run -e tasmota-SE
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota-SK:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: platformio run -e tasmota-SK
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota-TR:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: platformio run -e tasmota-TR
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota-TW:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: platformio run -e tasmota-TW
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota-UK:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: platformio run -e tasmota-UK
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota-VN:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: platformio run -e tasmota-VN
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
705
.github/workflows/CI_github_ESP32.yml
vendored
705
.github/workflows/CI_github_ESP32.yml
vendored
@ -1,705 +0,0 @@
|
||||
name: Tasmota ESP32 CI
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
|
||||
jobs:
|
||||
tasmota32:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
platformio run -e tasmota32
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota32solo1:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
platformio run -e tasmota32solo1
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota32-webcam:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
platformio run -e tasmota32-webcam
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota32-odroidgo:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
platformio run -e tasmota32-odroidgo
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota32-core2:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
platformio run -e tasmota32-core2
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota32-bluetooth:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
platformio run -e tasmota32-bluetooth
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota32-display:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
platformio run -e tasmota32-display
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota32-lvgl:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
platformio run -e tasmota32-lvgl
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota32-ir:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
platformio run -e tasmota32-ir
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota32c3:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
platformio run -e tasmota32c3
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota32-AF:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
platformio run -e tasmota32-AF
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota32-BG:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
platformio run -e tasmota32-BG
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota32-BR:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
platformio run -e tasmota32-BR
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota32-CN:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
platformio run -e tasmota32-CN
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota32-CZ:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
platformio run -e tasmota32-CZ
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota32-DE:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
platformio run -e tasmota32-DE
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota32-ES:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
platformio run -e tasmota32-ES
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota32-FR:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
platformio run -e tasmota32-FR
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota32-FY:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
platformio run -e tasmota32-FY
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota32-GR:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
platformio run -e tasmota32-GR
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota32-HE:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
platformio run -e tasmota32-HE
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota32-HU:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
platformio run -e tasmota32-HU
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota32-IT:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
platformio run -e tasmota32-IT
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota32-KO:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
platformio run -e tasmota32-KO
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota32-NL:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
platformio run -e tasmota32-NL
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota32-PL:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
platformio run -e tasmota32-PL
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota32-PT:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
platformio run -e tasmota32-PT
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota32-RO:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
platformio run -e tasmota32-RO
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota32-RU:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
platformio run -e tasmota32-RU
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota32-SE:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
platformio run -e tasmota32-SE
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota32-SK:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
platformio run -e tasmota32-SK
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota32-TR:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
platformio run -e tasmota32-TR
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota32-TW:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
platformio run -e tasmota32-TW
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota32-UK:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
platformio run -e tasmota32-UK
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
tasmota32-VN:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: |
|
||||
platformio run -e tasmota32-VN
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
79
.github/workflows/build_all_the_things.yml
vendored
Normal file
79
.github/workflows/build_all_the_things.yml
vendored
Normal file
@ -0,0 +1,79 @@
|
||||
name: Tasmota CI
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
pull_request:
|
||||
paths:
|
||||
- '**.c'
|
||||
- '**.cpp'
|
||||
- '**.h'
|
||||
- '**.hpp'
|
||||
- '**.ino'
|
||||
- '**.json'
|
||||
- '**.properties'
|
||||
- 'pio-tools/*.py'
|
||||
- '**.ini'
|
||||
|
||||
jobs:
|
||||
base-images:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
variant:
|
||||
- tasmota
|
||||
- tasmota-display
|
||||
- tasmota-ir
|
||||
- tasmota-knx
|
||||
- tasmota-lite
|
||||
- tasmota-minimal
|
||||
- tasmota-sensors
|
||||
- tasmota-zbbridge
|
||||
- tasmota-zigbee
|
||||
- tasmota32
|
||||
- tasmota32-bluetooth
|
||||
- tasmota32-core2
|
||||
- tasmota32-display
|
||||
- tasmota32-ir
|
||||
- tasmota32-lvgl
|
||||
- tasmota32-odroidgo
|
||||
- tasmota32c3
|
||||
- tasmota32solo1
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: platformio run -e ${{ matrix.variant }}
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
||||
|
||||
language-images:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
variant: [ tasmota, tasmota32 ]
|
||||
language: [ AF, BG, BR, CN, CZ, DE, ES, FR, FY, GR, HE, HU, IT, KO, NL, PL, PT, RO, RU, SE, SK, TR, TW, UK, VN ]
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -U platformio
|
||||
platformio upgrade --dev
|
||||
platformio update
|
||||
- name: Run PlatformIO
|
||||
run: platformio run -e ${{ matrix.variant }}-${{ matrix.language }}
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: firmware
|
||||
path: ./build_output
|
@ -10,9 +10,13 @@ All notable changes to this project will be documented in this file.
|
||||
### Changed
|
||||
- File editor no-wrap (#13427)
|
||||
- ESP32 core library from v1.0.7.4 to v1.0.7.5
|
||||
- ESP32C3 core library from v2.0.0-post to v2.0.1-rc1
|
||||
|
||||
### Fixed
|
||||
- Initial reset RTC memory based variables like EnergyToday and EnergyTotal
|
||||
- ESP32 Telegram compile error (#13435)
|
||||
- SML compile error (#13441)
|
||||
- GUI checkbox MQTT TLS not saved regression from v9.2.0.3 (#13442)
|
||||
|
||||
## [Released]
|
||||
|
||||
|
@ -23,7 +23,7 @@ Easy initial installation of Tasmota can be performed using the [Tasmota WebInst
|
||||
|
||||
## Development
|
||||
|
||||
[](https://github.com/arendst/Tasmota)
|
||||
[](https://github.com/arendst/Tasmota)
|
||||
[](http://ota.tasmota.com/tasmota/)
|
||||
[](https://github.com/arendst/Tasmota/actions?query=workflow%3A%22Tasmota+CI%22)
|
||||
[](https://github.com/arendst/Tasmota/actions?query=workflow%3A%22Tasmota+ESP32+CI%22)
|
||||
|
@ -8,6 +8,8 @@
|
||||
|
||||
See [migration path](https://tasmota.github.io/docs/Upgrading#migration-path) for instructions how to migrate to a major version. Pay attention to the following version breaks due to dynamic settings updates:
|
||||
|
||||
**Do not upgrade from minimal to minimal version. It will most likely fail at some point and will require flashing via serial.** If you do have to use minimal versions, always OTA to a full version of the same release before applying next minimal version.
|
||||
|
||||
1. Migrate to **Sonoff-Tasmota 3.9.x**
|
||||
2. Migrate to **Sonoff-Tasmota 4.x**
|
||||
3. Migrate to **Sonoff-Tasmota 5.14**
|
||||
@ -107,6 +109,10 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo
|
||||
### Changed
|
||||
- File editor no-wrap [#13427](https://github.com/arendst/Tasmota/issues/13427)
|
||||
- ESP32 core library from v1.0.7.4 to v1.0.7.5
|
||||
- ESP32C3 core library from v2.0.0-post to v2.0.1-rc1
|
||||
|
||||
### Fixed
|
||||
- Initial reset RTC memory based variables like EnergyToday and EnergyTotal
|
||||
- ESP32 Telegram compile error [#13435](https://github.com/arendst/Tasmota/issues/13435)
|
||||
- SML compile error [#13441](https://github.com/arendst/Tasmota/issues/13441)
|
||||
- GUI checkbox MQTT TLS not saved regression from v9.2.0.3 [#13442](https://github.com/arendst/Tasmota/issues/13442)
|
||||
|
@ -38,9 +38,9 @@ class WiFiClientSecure_light : public WiFiClient {
|
||||
|
||||
void allocateBuffers(void);
|
||||
|
||||
#ifdef ESP32 // the method to override in ESP32 has timeout argument
|
||||
int connect(IPAddress ip, uint16_t port, int32_t timeout) override;
|
||||
int connect(const char* name, uint16_t port, int32_t timeout) override;
|
||||
#ifdef ESP32 // the method to override in ESP32 has timeout argument default #define WIFI_CLIENT_DEF_CONN_TIMEOUT_MS (3000)
|
||||
int connect(IPAddress ip, uint16_t port, int32_t timeout = 3000) override;
|
||||
int connect(const char* name, uint16_t port, int32_t timeout = 3000) override;
|
||||
#else
|
||||
int connect(IPAddress ip, uint16_t port) override;
|
||||
int connect(const char* name, uint16_t port) override;
|
||||
|
@ -10,6 +10,7 @@
|
||||
|
||||
#include "lvgl.h"
|
||||
#include "be_lvgl.h"
|
||||
#include "lv_theme_openhasp.h"
|
||||
|
||||
extern int lv0_member(bvm *vm); // resolve virtual members
|
||||
|
||||
@ -19,6 +20,7 @@ extern int lv0_register_button_encoder(bvm *vm); // add buttons with encoder lo
|
||||
|
||||
extern int lv0_load_montserrat_font(bvm *vm);
|
||||
extern int lv0_load_seg7_font(bvm *vm);
|
||||
extern int lv0_load_robotocondensed_latin1_font(bvm *vm);
|
||||
extern int lv0_load_font(bvm *vm);
|
||||
extern int lv0_load_freetype_font(bvm *vm);
|
||||
|
||||
@ -70,6 +72,7 @@ const lvbe_call_c_t lv_func[] = {
|
||||
{ "get_ver_res", (void*) &lv_get_ver_res, "i", "" },
|
||||
{ "group_get_default", (void*) &lv_group_get_default, "lv.lv_group", "" },
|
||||
{ "img_src_get_type", (void*) &lv_img_src_get_type, "i", "." },
|
||||
{ "indev_get_act", (void*) &lv_indev_get_act, "lv.lv_indev", "" },
|
||||
{ "indev_get_obj_act", (void*) &lv_indev_get_obj_act, "lv.lv_obj", "" },
|
||||
{ "indev_read_timer_cb", (void*) &lv_indev_read_timer_cb, "", "(lv.lv_timer)" },
|
||||
{ "layer_sys", (void*) &lv_layer_sys, "lv.lv_obj", "" },
|
||||
@ -81,18 +84,23 @@ const lvbe_call_c_t lv_func[] = {
|
||||
{ "obj_enable_style_refresh", (void*) &lv_obj_enable_style_refresh, "", "b" },
|
||||
{ "obj_event_base", (void*) &lv_obj_event_base, "i", "(lv.lv_obj_class)(lv.lv_event)" },
|
||||
{ "obj_report_style_change", (void*) &lv_obj_report_style_change, "", "(lv.lv_style)" },
|
||||
{ "obj_style_get_selector_part", (void*) &lv_obj_style_get_selector_part, "i", "(lv.lv_style_selector)" },
|
||||
{ "obj_style_get_selector_state", (void*) &lv_obj_style_get_selector_state, "i", "(lv.lv_style_selector)" },
|
||||
{ "obj_style_get_selector_part", (void*) &lv_obj_style_get_selector_part, "i", "i" },
|
||||
{ "obj_style_get_selector_state", (void*) &lv_obj_style_get_selector_state, "i", "i" },
|
||||
{ "refr_now", (void*) &lv_refr_now, "", "(lv.lv_disp)" },
|
||||
{ "scr_act", (void*) &lv_scr_act, "lv.lv_obj", "" },
|
||||
{ "scr_load", (void*) &lv_scr_load, "", "(lv.lv_obj)" },
|
||||
{ "scr_load_anim", (void*) &lv_scr_load_anim, "", "(lv.lv_obj)iiib" },
|
||||
{ "theme_apply", (void*) &lv_theme_apply, "", "(lv.lv_obj)" },
|
||||
{ "theme_default_init", (void*) &lv_theme_default_init, "lv.lv_theme", "(lv.lv_disp)(lv.lv_color)(lv.lv_color)b(lv.lv_font)" },
|
||||
{ "theme_default_is_inited", (void*) &lv_theme_default_is_inited, "b", "" },
|
||||
{ "theme_get_color_primary", (void*) &lv_theme_get_color_primary, "lv.lv_color", "(lv.lv_obj)" },
|
||||
{ "theme_get_color_secondary", (void*) &lv_theme_get_color_secondary, "lv.lv_color", "(lv.lv_obj)" },
|
||||
{ "theme_get_font_large", (void*) &lv_theme_get_font_large, "lv.lv_font", "(lv.lv_obj)" },
|
||||
{ "theme_get_font_normal", (void*) &lv_theme_get_font_normal, "lv.lv_font", "(lv.lv_obj)" },
|
||||
{ "theme_get_font_small", (void*) &lv_theme_get_font_small, "lv.lv_font", "(lv.lv_obj)" },
|
||||
{ "theme_get_from_obj", (void*) &lv_theme_get_from_obj, "lv.lv_theme", "(lv.lv_obj)" },
|
||||
{ "theme_openhasp_init", (void*) &lv_theme_openhasp_init, "lv.lv_theme", "(lv.lv_disp)(lv.lv_color)(lv.lv_color)b(lv.lv_font)" },
|
||||
{ "theme_openhasp_is_inited", (void*) &lv_theme_openhasp_is_inited, "b", "" },
|
||||
{ "theme_set_apply_cb", (void*) &lv_theme_set_apply_cb, "", "(lv.lv_theme)^lv_theme_apply_cb^" },
|
||||
{ "theme_set_parent", (void*) &lv_theme_set_parent, "", "(lv.lv_theme)(lv.lv_theme)" },
|
||||
|
||||
@ -653,6 +661,9 @@ const be_constint_t lv0_constants[] = {
|
||||
{ "TEXT_FLAG_FIT", LV_TEXT_FLAG_FIT },
|
||||
{ "TEXT_FLAG_NONE", LV_TEXT_FLAG_NONE },
|
||||
{ "TEXT_FLAG_RECOLOR", LV_TEXT_FLAG_RECOLOR },
|
||||
{ "&font_montserrat", (int32_t) &lv0_load_montserrat_font },
|
||||
{ "&font_robotocondensed_latin1", (int32_t) &lv0_load_robotocondensed_latin1_font },
|
||||
{ "&font_seg7", (int32_t) &lv0_load_seg7_font },
|
||||
{ "&load_font", (int32_t) &lv0_load_font },
|
||||
{ "&load_freetype_font", (int32_t) &lv0_load_freetype_font },
|
||||
{ "&montserrat_font", (int32_t) &lv0_load_montserrat_font },
|
||||
@ -673,7 +684,7 @@ be_local_module(lv,
|
||||
{ be_nested_key("start", 1697318111, 5, 0), be_const_func(lv0_start) },
|
||||
}))
|
||||
);
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(lv, NULL);
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(lv);
|
||||
|
||||
#endif // USE_LVGL
|
||||
|
||||
|
@ -28,6 +28,7 @@ extern int lvs_tostring(bvm *vm);
|
||||
BE_EXPORT_VARIABLE extern const bclass be_class_lv_obj;
|
||||
|
||||
extern int lvbe_font_create(bvm *vm);
|
||||
extern int lvbe_theme_create(bvm *vm);
|
||||
|
||||
|
||||
/* `lv_style` external functions definitions */
|
||||
@ -125,6 +126,8 @@ extern int lvbe_style_set_arc_img_src(bvm *vm);
|
||||
|
||||
/* `lv_color` external functions definitions */
|
||||
|
||||
/* `lv_theme` external functions definitions */
|
||||
|
||||
/* `lv_img` external functions definitions */
|
||||
extern int lvbe_img_set_tasmota_logo(bvm *vm);
|
||||
extern int lvbe_img_create(bvm *vm);
|
||||
@ -143,6 +146,22 @@ extern int lvbe_img_get_pivot(bvm *vm);
|
||||
extern int lvbe_img_get_zoom(bvm *vm);
|
||||
extern int lvbe_img_get_antialias(bvm *vm);
|
||||
|
||||
/* `lv_disp` external functions definitions */
|
||||
extern int lvbe_disp_get_scr_act(bvm *vm);
|
||||
extern int lvbe_disp_get_scr_prev(bvm *vm);
|
||||
extern int lvbe_disp_load_scr(bvm *vm);
|
||||
extern int lvbe_disp_get_layer_top(bvm *vm);
|
||||
extern int lvbe_disp_get_layer_sys(bvm *vm);
|
||||
extern int lvbe_disp_set_theme(bvm *vm);
|
||||
extern int lvbe_disp_get_theme(bvm *vm);
|
||||
extern int lvbe_disp_set_bg_color(bvm *vm);
|
||||
extern int lvbe_disp_set_bg_image(bvm *vm);
|
||||
extern int lvbe_disp_set_bg_opa(bvm *vm);
|
||||
extern int lvbe_disp_get_inactive_time(bvm *vm);
|
||||
extern int lvbe_disp_trig_activity(bvm *vm);
|
||||
extern int lvbe_disp_clean_dcache(bvm *vm);
|
||||
extern int lvbe_disp_dpx(bvm *vm);
|
||||
|
||||
/* `lv_obj` external functions definitions */
|
||||
extern int lvbe_obj_add_event_cb(bvm *vm);
|
||||
extern int lvbe_obj_remove_event_cb(bvm *vm);
|
||||
@ -439,6 +458,7 @@ extern int lvbe_obj_set_parent(bvm *vm);
|
||||
extern int lvbe_obj_move_foreground(bvm *vm);
|
||||
extern int lvbe_obj_move_background(bvm *vm);
|
||||
extern int lvbe_obj_get_screen(bvm *vm);
|
||||
extern int lvbe_obj_get_disp(bvm *vm);
|
||||
extern int lvbe_obj_get_parent(bvm *vm);
|
||||
extern int lvbe_obj_get_child(bvm *vm);
|
||||
extern int lvbe_obj_get_child_cnt(bvm *vm);
|
||||
@ -579,6 +599,9 @@ extern int lvbe_spinbox_step_prev(bvm *vm);
|
||||
extern int lvbe_spinbox_increment(bvm *vm);
|
||||
extern int lvbe_spinbox_decrement(bvm *vm);
|
||||
|
||||
/* `lv_spinner` external functions definitions */
|
||||
extern int lvbe_spinner_create(bvm *vm);
|
||||
|
||||
/* `lv_arc` external functions definitions */
|
||||
extern int lvbe_arc_create(bvm *vm);
|
||||
extern int lvbe_arc_set_start_angle(bvm *vm);
|
||||
@ -786,7 +809,9 @@ extern int lvbe_textarea_cursor_up(bvm *vm);
|
||||
extern int be_ntv_lv_style_init(bvm *vm);
|
||||
extern int be_ntv_lv_font_init(bvm *vm);
|
||||
extern int be_ntv_lv_color_init(bvm *vm);
|
||||
extern int be_ntv_lv_theme_init(bvm *vm);
|
||||
extern int be_ntv_lv_img_init(bvm *vm);
|
||||
extern int be_ntv_lv_disp_init(bvm *vm);
|
||||
extern int be_ntv_lv_obj_init(bvm *vm);
|
||||
extern int be_ntv_lv_group_init(bvm *vm);
|
||||
extern int be_ntv_lv_indev_init(bvm *vm);
|
||||
@ -797,6 +822,7 @@ extern int be_ntv_lv_led_init(bvm *vm);
|
||||
extern int be_ntv_lv_meter_init(bvm *vm);
|
||||
extern int be_ntv_lv_msgbox_init(bvm *vm);
|
||||
extern int be_ntv_lv_spinbox_init(bvm *vm);
|
||||
extern int be_ntv_lv_spinner_init(bvm *vm);
|
||||
extern int be_ntv_lv_arc_init(bvm *vm);
|
||||
extern int be_ntv_lv_bar_init(bvm *vm);
|
||||
extern int be_ntv_lv_btn_init(bvm *vm);
|
||||
@ -882,6 +908,23 @@ be_local_class(lv_indev,
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
/********************************************************************
|
||||
** Solidified class: lv_disp
|
||||
********************************************************************/
|
||||
be_local_class(lv_disp,
|
||||
1,
|
||||
NULL,
|
||||
be_nested_map(4,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_nested_key("init", 380752755, 4, -1), be_const_func(lv0_init) },
|
||||
{ be_nested_key("tostring", -1995258651, 8, -1), be_const_func(lvx_tostring) },
|
||||
{ be_nested_key("_p", 1594591802, 2, -1), be_const_var(0) },
|
||||
{ be_nested_key("member", 719708611, 6, 0), be_const_func(lvx_member) },
|
||||
})),
|
||||
(be_nested_const_str("lv_disp", 609712084, 8))
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
/********************************************************************
|
||||
** Solidified class: lv_font
|
||||
********************************************************************/
|
||||
@ -898,6 +941,22 @@ be_local_class(lv_font,
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
/********************************************************************
|
||||
** Solidified class: lv_theme
|
||||
********************************************************************/
|
||||
be_local_class(lv_theme,
|
||||
1,
|
||||
NULL,
|
||||
be_nested_map(3,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_nested_key("init", 380752755, 4, -1), be_const_func(lvbe_theme_create) },
|
||||
{ be_nested_key("tostring", -1995258651, 8, -1), be_const_func(lvx_tostring) },
|
||||
{ be_nested_key("_p", 1594591802, 2, -1), be_const_var(0) },
|
||||
})),
|
||||
(be_nested_const_str("lv_theme", 1550958453, 7))
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
/********************************************************************
|
||||
** Solidified class: lv_color
|
||||
********************************************************************/
|
||||
@ -933,6 +992,12 @@ void be_load_lv_color_class(bvm *vm) {
|
||||
be_pop(vm, 1);
|
||||
}
|
||||
|
||||
void be_load_lv_theme_class(bvm *vm) {
|
||||
be_pushntvclass(vm, &be_class_lv_theme);
|
||||
be_setglobal(vm, "lv_theme");
|
||||
be_pop(vm, 1);
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
** Solidified class: lv_img
|
||||
********************************************************************/
|
||||
@ -955,6 +1020,12 @@ void be_load_lv_img_class(bvm *vm) {
|
||||
be_pop(vm, 1);
|
||||
}
|
||||
|
||||
void be_load_lv_disp_class(bvm *vm) {
|
||||
be_pushntvclass(vm, &be_class_lv_disp);
|
||||
be_setglobal(vm, "lv_disp");
|
||||
be_pop(vm, 1);
|
||||
}
|
||||
|
||||
void be_load_lv_obj_class(bvm *vm) {
|
||||
be_pushntvclass(vm, &be_class_lv_obj);
|
||||
be_setglobal(vm, "lv_obj");
|
||||
@ -1127,6 +1198,28 @@ void be_load_lv_spinbox_class(bvm *vm) {
|
||||
be_pop(vm, 1);
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
** Solidified class: lv_spinner
|
||||
********************************************************************/
|
||||
extern const bclass be_class_lv_obj;
|
||||
be_local_class(lv_spinner,
|
||||
0,
|
||||
&be_class_lv_obj,
|
||||
be_nested_map(2,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_nested_key("_class", -1562820946, 6, -1), be_const_comptr(&lv_spinner_class) },
|
||||
{ be_nested_key("init", 380752755, 4, -1), be_const_func(be_ntv_lv_spinner_init) },
|
||||
})),
|
||||
(be_nested_const_str("lv_spinner", 1612829968, 6))
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
void be_load_lv_spinner_class(bvm *vm) {
|
||||
be_pushntvclass(vm, &be_class_lv_spinner);
|
||||
be_setglobal(vm, "lv_spinner");
|
||||
be_pop(vm, 1);
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
** Solidified class: lv_arc
|
||||
********************************************************************/
|
||||
|
@ -54,5 +54,5 @@ be_local_module(python_compat,
|
||||
{ be_nested_key("init", 380752755, 4, -1), be_const_closure(_anonymous__closure) },
|
||||
}))
|
||||
);
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(python_compat, NULL);
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(python_compat);
|
||||
/********************************************************************/
|
||||
|
@ -1,7 +1,67 @@
|
||||
|
||||
import string
|
||||
import json
|
||||
|
||||
# lv.start()
|
||||
# scr = lv.scr_act() # default screean object
|
||||
# scr.set_style_bg_color(lv.color(0x0000A0), lv.PART_MAIN | lv.STATE_DEFAULT)
|
||||
|
||||
lv.start()
|
||||
|
||||
hres = lv.get_hor_res() # should be 320
|
||||
vres = lv.get_ver_res() # should be 240
|
||||
|
||||
scr = lv.scr_act() # default screean object
|
||||
#f20 = lv.montserrat_font(20) # load embedded Montserrat 20
|
||||
r20 = lv.font_robotocondensed_latin1(20)
|
||||
r16 = lv.font_robotocondensed_latin1(16)
|
||||
|
||||
th2 = lv.theme_openhasp_init(0, lv.color(0xFF00FF), lv.color(0x303030), false, r16)
|
||||
scr.get_disp().set_theme(th2)
|
||||
# TODO
|
||||
scr.set_style_bg_color(lv.color(lv.COLOR_WHITE),0)
|
||||
|
||||
# apply theme to layer_top, but keep it transparent
|
||||
lv.theme_apply(lv.layer_top())
|
||||
lv.layer_top().set_style_bg_opa(0,0)
|
||||
|
||||
|
||||
# parse hex string
|
||||
def parse_hex(s)
|
||||
import string
|
||||
s = string.toupper(s) # turn to uppercase
|
||||
var val = 0
|
||||
for i:0..size(s)-1
|
||||
var c = s[i]
|
||||
# var c_int = string.byte(c)
|
||||
if c == "#" continue end # skip '#' prefix if any
|
||||
if c == "x" || c == "X" continue end # skip 'x' or 'X'
|
||||
|
||||
if c >= "A" && c <= "F"
|
||||
val = (val << 4) | string.byte(c) - 55
|
||||
elif c >= "0" && c <= "9"
|
||||
val = (val << 4) | string.byte(c) - 48
|
||||
end
|
||||
end
|
||||
return val
|
||||
end
|
||||
|
||||
def parse_color(s)
|
||||
s = str(s)
|
||||
if s[0] == '#'
|
||||
return lv.color(parse_hex(s))
|
||||
else
|
||||
import string
|
||||
import introspect
|
||||
var col_name = "COLOR_" + string.toupper(s)
|
||||
var col_try = introspect.get(lv, col_name)
|
||||
if col_try != nil
|
||||
return lv.color(col_try)
|
||||
end
|
||||
end
|
||||
# fail safe with black color
|
||||
return lv.color(0x000000)
|
||||
end
|
||||
|
||||
#- ------------------------------------------------------------
|
||||
Class `lvh_obj` encapsulating `lv_obj``
|
||||
|
||||
@ -11,7 +71,17 @@ import json
|
||||
Adds specific virtual members used by OpenHASP
|
||||
- ------------------------------------------------------------ -#
|
||||
class lvh_obj
|
||||
static _lv_class = lv_obj
|
||||
# _lv_class refers to the lvgl class encapsulated, and is overriden by subclasses
|
||||
static _lv_class = lv.obj
|
||||
static _lv_part2_selector # selector for secondary part (like knob of arc)
|
||||
|
||||
# attributes to ignore when set at object level (they are managed by page)
|
||||
static _attr_ignore = [
|
||||
"id",
|
||||
"obj",
|
||||
"page",
|
||||
"comment",
|
||||
]
|
||||
#- mapping from OpenHASP attribute to LVGL attribute -#
|
||||
#- if mapping is null, we use set_X and get_X from our own class -#
|
||||
static _attr_map = {
|
||||
@ -19,28 +89,79 @@ class lvh_obj
|
||||
"y": "y",
|
||||
"w": "width",
|
||||
"h": "height",
|
||||
"radius": "radius",
|
||||
"border_side": "border_side",
|
||||
"text": nil, # apply to self
|
||||
# arc
|
||||
"asjustable": nil,
|
||||
"mode": nil,
|
||||
"start_angle": "bg_start_angle",
|
||||
"start_angle1": "start_angle",
|
||||
"end_angle": "bg_end_angle",
|
||||
"end_angle1": "end_angle",
|
||||
"radius": "style_radius",
|
||||
"border_side": "style_border_side",
|
||||
"bg_opa": "style_bg_opa",
|
||||
"border_width": "style_border_width",
|
||||
"action": nil, # store the action in self._action
|
||||
"hidden": nil, # apply to self
|
||||
"enabled": nil, # apply to self
|
||||
"enabled": nil, # apply to self
|
||||
"click": nil, # synonym to enabled
|
||||
"toggle": nil,
|
||||
"bg_color": "style_bg_color",
|
||||
"bg_grad_color": "style_bg_grad_color",
|
||||
"type": nil,
|
||||
# below automatically create a sub-label
|
||||
"text": nil, # apply to self
|
||||
"value_str": nil, # synonym to 'text'
|
||||
"align": nil,
|
||||
"text_font": nil,
|
||||
"value_font": nil, # synonym to text_font
|
||||
"text_color": nil,
|
||||
"value_color": nil, # synonym to text_color
|
||||
"value_ofs_x": nil,
|
||||
"value_ofs_y": nil,
|
||||
#
|
||||
"min": nil,
|
||||
"max": nil,
|
||||
"val": "value",
|
||||
"rotation": "rotation",
|
||||
# img
|
||||
"src": "src",
|
||||
"image_recolor": "style_img_recolor",
|
||||
"image_recolor_opa": "style_img_recolor_opa",
|
||||
# padding of knob
|
||||
"pad_top2": nil,
|
||||
"pad_bottom2": nil,
|
||||
"pad_left2": nil,
|
||||
"pad_right2": nil,
|
||||
"pad_all2": nil,
|
||||
"radius2": nil,
|
||||
}
|
||||
|
||||
var _lv_obj # native lvgl object
|
||||
var _lv_label # sub-label if exists
|
||||
var _action # action for OpenHASP
|
||||
|
||||
# init
|
||||
# - create the LVGL encapsulated object
|
||||
def init(parent)
|
||||
var obj_class = self._lv_class # need to copy to a var to distinguish from method call
|
||||
self._lv_obj = obj_class(parent)
|
||||
var obj_class = self._lv_class # need to assign to a var to distinguish from method call
|
||||
self._lv_obj = obj_class(parent) # instanciate LVGL object
|
||||
self.post_init()
|
||||
end
|
||||
|
||||
def obj()
|
||||
# post-init, to be overriden
|
||||
def post_init()
|
||||
end
|
||||
|
||||
# get LVGL encapsulated object
|
||||
def get_obj()
|
||||
return self._lv_obj
|
||||
end
|
||||
|
||||
def tostring()
|
||||
return "<instance "+classname(self)+"()>"
|
||||
def set_action(t)
|
||||
self._action = str(t)
|
||||
end
|
||||
def get_action()
|
||||
return self._action()
|
||||
end
|
||||
|
||||
#- ------------------------------------------------------------
|
||||
@ -49,7 +170,7 @@ class lvh_obj
|
||||
- hidden
|
||||
- enabled
|
||||
- ------------------------------------------------------------ -#
|
||||
#- `hidden` attributes mapped to LV_OBJ_FLAG_HIDDEN -#
|
||||
#- `hidden` attributes mapped to OBJ_FLAG_HIDDEN -#
|
||||
def set_hidden(h)
|
||||
if h
|
||||
self._lv_obj.add_flag(lv.OBJ_FLAG_HIDDEN)
|
||||
@ -62,6 +183,7 @@ class lvh_obj
|
||||
return self._lv_obj.has_flag(lv.OBJ_FLAG_HIDDEN)
|
||||
end
|
||||
|
||||
#- `enabled` attributes mapped to OBJ_FLAG_CLICKABLE -#
|
||||
def set_enabled(h)
|
||||
if h
|
||||
self._lv_obj.add_flag(lv.OBJ_FLAG_CLICKABLE)
|
||||
@ -73,10 +195,14 @@ class lvh_obj
|
||||
def get_enabled()
|
||||
return self._lv_obj.has_flag(lv.OBJ_FLAG_CLICKABLE)
|
||||
end
|
||||
# click is synonym to enabled
|
||||
def set_click(t) self.set_enabled(t) end
|
||||
def get_click() return self.get_enabled() end
|
||||
|
||||
#- `toggle` attributes mapped to STATE_CHECKED -#
|
||||
def set_toggle(t)
|
||||
if t == "TRUE" t = true end
|
||||
if t == "FASLE" t = false end
|
||||
if t == "FALSE" t = false end
|
||||
if t
|
||||
self._lv_obj.add_state(lv.STATE_CHECKED)
|
||||
else
|
||||
@ -88,30 +214,178 @@ class lvh_obj
|
||||
return self._lv_obj.has_state(lv.STATE_CHECKED)
|
||||
end
|
||||
|
||||
#- set_text: create a `lv_label` sub object to the current object -#
|
||||
#- (default case, may be overriden by object that directly take text) -#
|
||||
def set_text(t)
|
||||
if self._lv_label == nil
|
||||
self._lv_label = lv_label(self.obj())
|
||||
def set_adjustable(t)
|
||||
if t
|
||||
self._lv_obj.add_flag(lv.OBJ_FLAG_CLICKABLE)
|
||||
else
|
||||
self._lv_obj.clear_flag(lv.OBJ_FLAG_CLICKABLE)
|
||||
end
|
||||
self._lv_label.set_text(t)
|
||||
end
|
||||
def get_adjustable()
|
||||
return self._lv_obj.has_flag(lv.OBJ_FLAG_CLICKABLE)
|
||||
end
|
||||
|
||||
def get_text()
|
||||
#- set_text: create a `lv_label` sub object to the current object -#
|
||||
#- (default case, may be overriden by object that directly take text) -#
|
||||
def check_label()
|
||||
if self._lv_label == nil
|
||||
self._lv_label = lv.label(self.get_obj())
|
||||
self._lv_label.set_align(lv.ALIGN_CENTER);
|
||||
end
|
||||
end
|
||||
|
||||
def set_text(t)
|
||||
self.check_label()
|
||||
self._lv_label.set_text(t)
|
||||
end
|
||||
def set_value_str(t) self.set_text(t) end
|
||||
|
||||
def get_text()
|
||||
if self._lv_label == nil return nil end
|
||||
return self._lv_label.get_text()
|
||||
end
|
||||
def get_value_str() return self.get_text() end
|
||||
|
||||
def set_align(t)
|
||||
var align
|
||||
self.check_label()
|
||||
if t == 0 || t == "left"
|
||||
align = lv.TEXT_ALIGN_LEFT
|
||||
elif t == 1 || t == "center"
|
||||
align = lv.TEXT_ALIGN_CENTER
|
||||
elif t == 2 || t == "right"
|
||||
align = lv.TEXT_ALIGN_RIGHT
|
||||
end
|
||||
self._lv_label.set_style_text_align(align, lv.PART_MAIN | lv.STATE_DEFAULT)
|
||||
end
|
||||
|
||||
def get_align()
|
||||
if self._lv_label == nil return nil end
|
||||
var align self._lv_label.get_style_text_align(lv.PART_MAIN | lv.STATE_DEFAULT)
|
||||
if align == lv.TEXT_ALIGN_LEFT
|
||||
return "left"
|
||||
elif align == lv.TEXT_ALIGN_CENTER
|
||||
return "center"
|
||||
elif align == lv.TEXT_ALIGN_RIGHT
|
||||
return "right"
|
||||
else
|
||||
return nil
|
||||
end
|
||||
return self._lv_label.get_text()
|
||||
end
|
||||
|
||||
def set_text_font(t)
|
||||
self.check_label()
|
||||
var f = lv.font_robotocondensed_latin1(int(t))
|
||||
if f != nil
|
||||
self._lv_label.set_style_text_font(f, lv.PART_MAIN | lv.STATE_DEFAULT)
|
||||
else
|
||||
print("HSP: Unsupported font size: robotocondensed-latin1", self._text_font)
|
||||
end
|
||||
end
|
||||
def get_text_font()
|
||||
return self._text_font
|
||||
end
|
||||
def set_value_font(t) self.set_text_font(t) end
|
||||
def get_value_font() return self.get_text_font() end
|
||||
|
||||
def set_text_color(t)
|
||||
self.check_label()
|
||||
self._lv_label.set_style_text_color(parse_color(t), lv.PART_MAIN | lv.STATE_DEFAULT)
|
||||
end
|
||||
def get_text_color()
|
||||
return self._text_color
|
||||
end
|
||||
def set_value_color(t) self.set_text_color(t) end
|
||||
def get_value_color() return self.get_value_color() end
|
||||
|
||||
def set_value_ofs_x(t)
|
||||
self.check_label()
|
||||
self._lv_label.set_x(int(t))
|
||||
end
|
||||
def get_value_ofs_x()
|
||||
return self._lv_label.get_x()
|
||||
end
|
||||
def set_value_ofs_y(t)
|
||||
self.check_label()
|
||||
self._lv_label.set_y(int(t))
|
||||
end
|
||||
def get_value_ofs_y()
|
||||
return self._lv_label.get_y()
|
||||
end
|
||||
|
||||
# secondary element
|
||||
def set_pad_top2(t)
|
||||
if self._lv_part2_selector != nil
|
||||
self._lv_obj.set_style_pad_top(int(t), self._lv_part2_selector | lv.STATE_DEFAULT)
|
||||
end
|
||||
end
|
||||
def set_pad_bottom2(t)
|
||||
if self._lv_part2_selector != nil
|
||||
self._lv_obj.set_style_pad_bottom(int(t), self._lv_part2_selector | lv.STATE_DEFAULT)
|
||||
end
|
||||
end
|
||||
def set_pad_left2(t)
|
||||
if self._lv_part2_selector != nil
|
||||
self._lv_obj.set_style_pad_left(int(t), self._lv_part2_selector | lv.STATE_DEFAULT)
|
||||
end
|
||||
end
|
||||
def set_pad_right2(t)
|
||||
if self._lv_part2_selector != nil
|
||||
self._lv_obj.set_style_pad_right(int(t), self._lv_part2_selector | lv.STATE_DEFAULT)
|
||||
end
|
||||
end
|
||||
def set_pad_all2(t)
|
||||
if self._lv_part2_selector != nil
|
||||
self._lv_obj.set_style_pad_all(int(t), self._lv_part2_selector | lv.STATE_DEFAULT)
|
||||
end
|
||||
end
|
||||
|
||||
def get_pad_top()
|
||||
if self._lv_part2_selector != nil
|
||||
return self._lv_obj.get_style_pad_top(self._lv_part2_selector | lv.STATE_DEFAULT)
|
||||
end
|
||||
end
|
||||
def get_pad_bottomo()
|
||||
if self._lv_part2_selector != nil
|
||||
return self._lv_obj.get_style_pad_bottom(self._lv_part2_selector | lv.STATE_DEFAULT)
|
||||
end
|
||||
end
|
||||
def get_pad_left()
|
||||
if self._lv_part2_selector != nil
|
||||
return self._lv_obj.get_style_pad_left(self._lv_part2_selector | lv.STATE_DEFAULT)
|
||||
end
|
||||
end
|
||||
def get_pad_right()
|
||||
if self._lv_part2_selector != nil
|
||||
return self._lv_obj.get_style_pad_right(self._lv_part2_selector | lv.STATE_DEFAULT)
|
||||
end
|
||||
end
|
||||
def get_pad_all()
|
||||
end
|
||||
|
||||
def set_radius2(t)
|
||||
if self._lv_part2_selector != nil
|
||||
self._lv_obj.set_style_radius(int(t), self._lv_part2_selector | lv.STATE_DEFAULT)
|
||||
end
|
||||
end
|
||||
def get_radius2()
|
||||
if self._lv_part2_selector != nil
|
||||
return self._lv_obj.get_style_radius(self._lv_part2_selector | lv.STATE_DEFAULT)
|
||||
end
|
||||
end
|
||||
|
||||
#- ------------------------------------------------------------
|
||||
Mapping of virtual attributes
|
||||
- ------------------------------------------------------------ -#
|
||||
def member(k)
|
||||
# tostring is a special case, we shouldn't raise an exception for it
|
||||
if k == 'tostring' return nil end
|
||||
#
|
||||
if self._attr_map.has(k)
|
||||
import introspect
|
||||
if self._attr_map[k]
|
||||
var f = introspect.get(self._lv_obj, "get_" + self._attr_map[k])
|
||||
var kv = self._attr_map[k]
|
||||
if kv
|
||||
var f = introspect.get(self._lv_obj, "get_" + kv)
|
||||
if type(f) == 'function'
|
||||
return f(self._lv_obj)
|
||||
end
|
||||
@ -127,16 +401,31 @@ class lvh_obj
|
||||
end
|
||||
|
||||
def setmember(k, v)
|
||||
import string
|
||||
# print(">> setmember", k, v)
|
||||
# print(">>", classname(self), self._attr_map)
|
||||
if self._attr_map.has(k)
|
||||
if self._attr_ignore.find(k) != nil
|
||||
return
|
||||
elif self._attr_map.has(k)
|
||||
import introspect
|
||||
if self._attr_map[k]
|
||||
var f = introspect.get(self._lv_obj, "set_" + self._attr_map[k])
|
||||
# print("f=", f)
|
||||
var kv = self._attr_map[k]
|
||||
if kv
|
||||
var f = introspect.get(self._lv_obj, "set_" + kv)
|
||||
# if the attribute contains 'color', convert to lv_color
|
||||
if type(kv) == 'string' && string.find(kv, "color") + 5 == size(kv) # endswith 'color'
|
||||
v = parse_color(v)
|
||||
end
|
||||
# print("f=", f, v, kv, self._lv_obj, self)
|
||||
if type(f) == 'function'
|
||||
f(self._lv_obj, v)
|
||||
if string.find(kv, "style_") == 0
|
||||
# style function need a selector as second parameter
|
||||
f(self._lv_obj, v, lv.PART_MAIN | lv.STATE_DEFAULT)
|
||||
else
|
||||
f(self._lv_obj, v)
|
||||
end
|
||||
return
|
||||
else
|
||||
print("HSP: Could not find function set_"+kv)
|
||||
end
|
||||
else
|
||||
# call self method
|
||||
@ -148,39 +437,98 @@ class lvh_obj
|
||||
end
|
||||
end
|
||||
|
||||
else
|
||||
print("HSP: unknown attribute:", k)
|
||||
end
|
||||
# silently ignore if the attribute name is not supported
|
||||
end
|
||||
end
|
||||
|
||||
#- creat sub-classes of lvh_obj and map the LVGL class in static '_lv_class' attribute -#
|
||||
class lvh_arc : lvh_obj static _lv_class = lv_arc end
|
||||
class lvh_bar : lvh_obj static _lv_class = lv_bar end
|
||||
class lvh_btn : lvh_obj static _lv_class = lv_btn end
|
||||
class lvh_btnmatrix : lvh_obj static _lv_class = lv_btnmatrix end
|
||||
class lvh_checkbox : lvh_obj static _lv_class = lv_checkbox end
|
||||
class lvh_dropdown : lvh_obj static _lv_class = lv_dropdown end
|
||||
class lvh_img : lvh_obj static _lv_class = lv_img end
|
||||
class lvh_label : lvh_obj static _lv_class = lv_label end
|
||||
class lvh_line : lvh_obj static _lv_class = lv_line end
|
||||
class lvh_roller : lvh_obj static _lv_class = lv_roller end
|
||||
class lvh_slider : lvh_obj static _lv_class = lv_slider end
|
||||
class lvh_slider : lvh_obj static _lv_class = lv_slider end
|
||||
class lvh_switch : lvh_obj static _lv_class = lv_switch end
|
||||
class lvh_textarea : lvh_obj static _lv_class = lv_textarea end
|
||||
class lvh_label : lvh_obj
|
||||
static _lv_class = lv.label
|
||||
# label do not need a sub-label
|
||||
def post_init()
|
||||
self._lv_label = self._lv_obj
|
||||
end
|
||||
end
|
||||
|
||||
#- ------------------------------------------------------------
|
||||
Class `lvh_page` encapsulating `lv_obj` as screen (created with lv_obj(0))
|
||||
- ------------------------------------------------------------ -#
|
||||
class lvh_arc : lvh_obj
|
||||
static _lv_class = lv.arc
|
||||
static _lv_part2_selector = lv.PART_KNOB
|
||||
|
||||
def set_min(t)
|
||||
self._lv_obj.set_range(int(t), self.get_max())
|
||||
end
|
||||
def set_max(t)
|
||||
self._lv_obj.set_range(self.get_min(), int(t))
|
||||
end
|
||||
def get_min()
|
||||
return self._lv_obj.get_min_value()
|
||||
end
|
||||
def get_max()
|
||||
return self._lv_obj.get_max_value()
|
||||
end
|
||||
def set_type(t)
|
||||
var mode
|
||||
if t == 0 mode = lv.ARC_MODE_NORMAL
|
||||
elif t == 1 mode = lv.ARC_MODE_REVERSE
|
||||
elif t == 2 mode = lv.ARC_MODE_SYMMETRICAL
|
||||
end
|
||||
if mode != nil
|
||||
self._lv_obj.set_mode(mode)
|
||||
end
|
||||
end
|
||||
def get_type()
|
||||
return self._lv_obj.get_mode()
|
||||
end
|
||||
# mode
|
||||
def set_mode(t)
|
||||
var mode
|
||||
if mode == "expand" self._lv_obj.set_width(lv.SIZE_CONTENT)
|
||||
elif mode == "break" mode = lv.LABEL_LONG_WRAP
|
||||
elif mode == "dots" mode = lv.LABEL_LONG_DOT
|
||||
elif mode == "scroll" mode = lv.LABEL_LONG_SCROLL
|
||||
elif mode == "loop" mode = lv.LABEL_LONG_SCROLL_CIRCULAR
|
||||
elif mode == "crop" mode = lv.LABEL_LONG_CLIP
|
||||
end
|
||||
if mode != nil
|
||||
self._lv_obj.lv_label_set_long_mode(mode)
|
||||
end
|
||||
end
|
||||
def get_mode()
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
class lvh_switch : lvh_obj
|
||||
static _lv_class = lv.switch
|
||||
static _lv_part2_selector = lv.PART_KNOB
|
||||
end
|
||||
|
||||
#- creat sub-classes of lvh_obj and map the LVGL class in static '_lv_class' attribute -#
|
||||
class lvh_bar : lvh_obj static _lv_class = lv.bar end
|
||||
class lvh_btn : lvh_obj static _lv_class = lv.btn end
|
||||
class lvh_btnmatrix : lvh_obj static _lv_class = lv.btnmatrix end
|
||||
class lvh_checkbox : lvh_obj static _lv_class = lv.checkbox end
|
||||
class lvh_dropdown : lvh_obj static _lv_class = lv.dropdown end
|
||||
class lvh_img : lvh_obj static _lv_class = lv.img end
|
||||
class lvh_line : lvh_obj static _lv_class = lv.line end
|
||||
class lvh_roller : lvh_obj static _lv_class = lv.roller end
|
||||
class lvh_slider : lvh_obj static _lv_class = lv.slider end
|
||||
class lvh_spinner : lvh_obj static _lv_class = lv.spinner end
|
||||
class lvh_textarea : lvh_obj static _lv_class = lv.textarea end
|
||||
|
||||
#- ----------------------------------------------------------------------------
|
||||
Class `lvh_page` encapsulating `lv_obj` as screen (created with lv.obj(0))
|
||||
- ----------------------------------------------------------------------------- -#
|
||||
# ex of transition: lv.scr_load_anim(scr, lv.SCR_LOAD_ANIM_MOVE_RIGHT, 500, 0, false)
|
||||
class lvh_page
|
||||
var _obj_id # list of objects by id numbers
|
||||
var _page_id
|
||||
var _lv_scr # lvgl screen object
|
||||
var _obj_id # (map) of objects by id numbers
|
||||
var _page_id # (int) id number of the page
|
||||
var _lv_scr # (lv_obj) lvgl screen object
|
||||
|
||||
#- init(page_number) -#
|
||||
def init(page_number)
|
||||
import string
|
||||
import global
|
||||
|
||||
# if no parameter, default to page #1
|
||||
@ -190,9 +538,11 @@ class lvh_page
|
||||
self._obj_id = {} # init list of objects
|
||||
if page_number == 1
|
||||
self._lv_scr = lv.scr_act() # default screen
|
||||
elif page_number == 0
|
||||
self._lv_scr = lv.layer_top() # top layer, visible over all screens
|
||||
else
|
||||
self._lv_scr = lv_obj(0) # allocate a new screen
|
||||
self._lv_scr.set_style_bg_color(lv_color(0x000000), lv.PART_MAIN | lv.STATE_DEFAULT) # set black background
|
||||
self._lv_scr = lv.obj(0) # allocate a new screen
|
||||
self._lv_scr.set_style_bg_color(lv.color(0x000000), lv.PART_MAIN | lv.STATE_DEFAULT) # set black background
|
||||
end
|
||||
|
||||
# create a global for this page of form p<page_number>, ex p1
|
||||
@ -209,6 +559,9 @@ class lvh_page
|
||||
def set_obj(id, o)
|
||||
self._obj_id[id] = o
|
||||
end
|
||||
def get_obj(id)
|
||||
return self._obj_id.find(id)
|
||||
end
|
||||
|
||||
#- return id of this page -#
|
||||
def id()
|
||||
@ -217,6 +570,8 @@ class lvh_page
|
||||
|
||||
#- show this page, with animation -#
|
||||
def show(anim, duration)
|
||||
# ignore if there is no screen, like for id 0
|
||||
if self._lv_scr == nil return nil end
|
||||
# ignore if the screen is already active
|
||||
if self._lv_scr._p == lv.scr_act()._p return end # do nothing
|
||||
|
||||
@ -278,6 +633,19 @@ def parse_obj(jline, page)
|
||||
# extract openhasp class, prefix with `lvh_`. Ex: `btn` becomes `lvh_btn`
|
||||
var obj_type = jline["obj"]
|
||||
|
||||
# extract parent
|
||||
var parent
|
||||
var parent_id = int(jline.find("parentid"))
|
||||
if parent_id != nil
|
||||
var parent_obj = lvh_page_cur.get_obj(parent_id)
|
||||
if parent_obj != nil
|
||||
parent = parent_obj._lv_obj
|
||||
end
|
||||
end
|
||||
if parent == nil
|
||||
parent = page.get_scr()
|
||||
end
|
||||
|
||||
# check if a class with the requested name exists
|
||||
var obj_class = introspect.get(global, "lvh_" + obj_type)
|
||||
if obj_class == nil
|
||||
@ -285,14 +653,14 @@ def parse_obj(jline, page)
|
||||
end
|
||||
|
||||
# instanciate the object, passing the lvgl screen as paren object
|
||||
var obj = obj_class(page.get_scr())
|
||||
var obj = obj_class(parent)
|
||||
|
||||
# add object to page object
|
||||
lvh_page_cur.set_obj(obj_id, obj)
|
||||
|
||||
# set attributes
|
||||
# try every attribute, if not supported it is silently ignored
|
||||
for k:jline.keys()
|
||||
# introspect.set(obj, k, jline[k])
|
||||
obj.(k) = jline[k]
|
||||
end
|
||||
|
||||
@ -314,8 +682,8 @@ for j:jsonl
|
||||
var jline = json.load(j)
|
||||
|
||||
# parse page first
|
||||
parse_page(jline)
|
||||
parse_obj(jline, lvh_page_cur)
|
||||
if type(jline) == 'instance'
|
||||
parse_page(jline)
|
||||
parse_obj(jline, lvh_page_cur)
|
||||
end
|
||||
end
|
||||
|
||||
print(lvh_pages[1]._obj_id)
|
||||
|
23
lib/libesp32/Berry/default/embedded/openhasp/demo1.jsonl
Normal file
23
lib/libesp32/Berry/default/embedded/openhasp/demo1.jsonl
Normal file
@ -0,0 +1,23 @@
|
||||
{"page":1,"comment":"---------- Page 1 ----------"}
|
||||
{"page":1,"id":0,"bg_color":"#FFFFFF","bg_grad_color":"#FFFFFF","text_color":"#000000","radius":0,"border_side":0}
|
||||
{"page":1,"id":1,"obj":"btn","x":0,"y":0,"w":240,"h":30,"text":"LIVING ROOM","value_font":22,"bg_color":"#2C3E50","bg_grad_color":"#2C3E50","text_color":"#FFFFFF","radius":0,"border_side":0}
|
||||
|
||||
{"page":1,"id":2,"obj":"arc","x":20,"y":65,"w":80,"h":100,"max":40,"border_side":0,"type":0,"rotation":0,"start_angle":180,"end_angle":0,"start_angle1":180,"value_font":12,"value_ofs_x":0,"value_ofs_y":-14,"bg_opa":0,"text":"21.2°C","min":-20,"max":50,"val":21}
|
||||
|
||||
{"page":1,"id":3,"obj":"arc","x":140,"y":65,"w":80,"h":100,"max":100,"border_side":0,"type":0,"start_angle":180,"end_angle":0,"start_angle1":180,"value_font":12,"value_color":"#000000","value_ofs_x":0,"value_ofs_y":-14,"bg_opa":0,"text":"44%","val":44}
|
||||
|
||||
{"page":1,"id":4,"obj":"label","x":0,"y":120,"w":240,"h":20,"text":"CO2 levels: 1483 ppm","radius":0,"border_side":0,"align":1}
|
||||
{"page":1,"id":5,"obj":"label","x":2,"y":35,"w":140,"text":"Temperature","align":1}
|
||||
{"page":1,"id":6,"obj":"label","x":140,"y":35,"w":95,"text":"Humidity","align":1}
|
||||
{"page":1,"id":7,"obj":"btn","x":0,"y":160,"w":240,"h":20,"text":"LIGHTS","bg_color":"#F1C40F","text_color":"#FFFFFF","radius":0,"border_side":0}
|
||||
{"page":1,"id":8,"obj":"label","x":20,"y":190,"w":140,"h":20,"text":"Ceiling Light"}
|
||||
{"page":1,"id":9,"obj":"switch","x":160,"y":190,"w":40,"h":20,"toggle":"TRUE"}
|
||||
{"page":1,"id":10,"obj":"label","x":20,"y":215,"w":140,"h":20,"text":"Wall Light"}
|
||||
{"page":1,"id":11,"obj":"switch","x":160,"y":215,"w":40,"h":20,"toggle":"TRUE"}
|
||||
{"page":1,"id":12,"obj":"label","x":20,"y":240,"w":200,"h":20,"text":"Ambient Light"}
|
||||
{"page":1,"id":13,"obj":"slider","x":30,"y":265,"w":200,"h":10}
|
||||
|
||||
{"page":0,"comment":"---------- All pages ----------"}
|
||||
{"page":0,"id":11,"obj":"btn","action":"prev","x":0,"y":290,"w":79,"h":32,"bg_color":"#34495E","text":"\uE141","text_color":"#CCCCCC","radius":0,"border_side":0,"text_font":32}
|
||||
{"page":0,"id":12,"obj":"btn","action":"back","x":80,"y":290,"w":80,"h":32,"bg_color":"#34495E","text":"\uE2DC","text_color":"#CCCCCC","radius":0,"border_side":0,"text_font":24}
|
||||
{"page":0,"id":13,"obj":"btn","action":"next","x":161,"y":290,"w":79,"h":32,"bg_color":"#34495E","text":"\uE142","text_color":"#CCCCCC","radius":0,"border_side":0,"text_font":32}
|
35
lib/libesp32/Berry/default/embedded/openhasp/demo2.jsonl
Normal file
35
lib/libesp32/Berry/default/embedded/openhasp/demo2.jsonl
Normal file
@ -0,0 +1,35 @@
|
||||
{"page":1,"id":1,"obj":"btn","x":0,"y":0,"w":240,"h":30,"text":"ENTITIES","value_font":22,"bg_color":"#2C3E50","text_color":"#FFFFFF","radius":0,"border_side":0,"click":0}
|
||||
{"page":1,"id":2,"obj":"obj","x":5,"y":35,"w":230,"h":250,"click":0}
|
||||
|
||||
{"page":1,"id":11,"obj":"label","x":8,"y":33,"w":35,"h":35,"text":"\uE004","align":1,"text_font":32,"text_color":"black"}
|
||||
{"page":1,"id":12,"obj":"label","x":48,"y":43,"w":130,"h":30,"text":"Presence override","align":0,"text_font":16,"text_color":"black"}
|
||||
{"page":1,"id":13,"obj":"switch","x":177,"y":40,"w":50,"h":25,"radius":25,"radius2":15}
|
||||
|
||||
{"page":1,"id":21,"obj":"label","x":8,"y":69,"w":35,"h":35,"text":"\uF020","align":1,"text_font":32,"text_color":"black"}
|
||||
{"page":1,"id":22,"obj":"label","x":48,"y":79,"w":130,"h":30,"text":"Front door light","align":0,"text_font":16,"text_color":"black"}
|
||||
{"page":1,"id":23,"obj":"switch","x":177,"y":74,"w":50,"h":25,"radius":25,"radius2":15}
|
||||
|
||||
{"page":1,"id":31,"obj":"label","x":8,"y":103,"w":35,"h":35,"text":"\uF054","align":1,"text_font":32,"text_color":"black"}
|
||||
{"page":1,"id":32,"obj":"label","x":48,"y":113,"w":130,"h":30,"text":"Back yard lights","align":0,"text_font":16,"text_color":"black"}
|
||||
{"page":1,"id":33,"obj":"switch","x":177,"y":110,"w":50,"h":25,"radius":25,"radius2":15}
|
||||
|
||||
{"page":1,"id":41,"obj":"label","x":8,"y":138,"w":35,"h":35,"text":"\uEA7A","align":1,"text_font":32,"text_color":"black"}
|
||||
{"page":1,"id":42,"obj":"label","x":48,"y":148,"w":130,"h":30,"text":"Trash service","align":0,"text_font":16,"text_color":"black"}
|
||||
{"page":1,"id":43,"obj":"label","x":97,"y":148,"w":130,"h":30,"text":"in 6 days","align":2,"text_color":"black"}
|
||||
|
||||
{"page":1,"id":51,"obj":"label","x":8,"y":173,"w":35,"h":35,"text":"\uF39D","align":1,"text_font":32,"text_color":"black"}
|
||||
{"page":1,"id":52,"obj":"label","x":48,"y":183,"w":130,"h":30,"text":"Selective trash","align":0,"text_font":16,"text_color":"black"}
|
||||
{"page":1,"id":53,"obj":"label","x":97,"y":183,"w":130,"h":30,"text":"in 10 days","align":2,"text_color":"black"}
|
||||
|
||||
{"page":1,"id":61,"obj":"label","x":8,"y":208,"w":35,"h":35,"text":"\uE32A","align":1,"text_font":32,"text_color":"black"}
|
||||
{"page":1,"id":62,"obj":"label","x":48,"y":218,"w":130,"h":30,"text":"Green energy active","align":0,"text_font":16,"text_color":"black"}
|
||||
{"page":1,"id":63,"obj":"label","x":97,"y":218,"w":130,"h":30,"text":"Yes :)","align":2,"text_color":"black"}
|
||||
|
||||
{"page":1,"id":71,"obj":"label","x":8,"y":243,"w":35,"h":35,"text":"\uE957","align":1,"text_font":32,"text_color":"black"}
|
||||
{"page":1,"id":72,"obj":"label","x":48,"y":253,"w":130,"h":30,"text":"Air quality","align":0,"text_font":16,"text_color":"black"}
|
||||
{"page":1,"id":73,"obj":"label","x":97,"y":253,"w":130,"h":30,"text":"OK (29.58 µg/m³)","align":2,"text_color":"black"}
|
||||
|
||||
{"page":0,"comment":"---------- All pages ----------"}
|
||||
{"page":0,"id":11,"obj":"btn","action":"prev","x":0,"y":290,"w":79,"h":32,"bg_color":"#34495E","text":"\uE141","text_color":"#CCCCCC","radius":0,"border_side":0,"text_font":32}
|
||||
{"page":0,"id":12,"obj":"btn","action":"back","x":80,"y":290,"w":80,"h":32,"bg_color":"#34495E","text":"\uE2DC","text_color":"#CCCCCC","radius":0,"border_side":0,"text_font":24}
|
||||
{"page":0,"id":13,"obj":"btn","action":"next","x":161,"y":290,"w":79,"h":32,"bg_color":"#34495E","text":"\uE142","text_color":"#CCCCCC","radius":0,"border_side":0,"text_font":32}
|
@ -19,4 +19,4 @@ static be_define_const_module(
|
||||
"debug"
|
||||
);
|
||||
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(debug, NULL);
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(debug);
|
||||
|
@ -18,4 +18,4 @@ static be_define_const_module(
|
||||
"energy"
|
||||
);
|
||||
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(energy, NULL);
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(energy);
|
||||
|
@ -16,4 +16,4 @@ static be_define_const_module(
|
||||
"flash"
|
||||
);
|
||||
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(flash, NULL);
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(flash);
|
||||
|
@ -15,4 +15,4 @@ static be_define_const_module(
|
||||
"gc"
|
||||
);
|
||||
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(gc, NULL);
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(gc);
|
||||
|
@ -16,4 +16,4 @@ static be_define_const_module(
|
||||
"global"
|
||||
);
|
||||
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(global, NULL);
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(global);
|
||||
|
@ -283,4 +283,4 @@ static be_define_const_module(
|
||||
"gpio"
|
||||
);
|
||||
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(gpio, NULL);
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(gpio);
|
||||
|
@ -18,4 +18,4 @@ static be_define_const_module(
|
||||
"introspect"
|
||||
);
|
||||
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(introspect, NULL);
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(introspect);
|
||||
|
@ -15,4 +15,4 @@ static be_define_const_module(
|
||||
"json"
|
||||
);
|
||||
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(json, NULL);
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(json);
|
||||
|
@ -18,4 +18,4 @@ static be_define_const_module(
|
||||
"light"
|
||||
);
|
||||
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(light, NULL);
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(light);
|
||||
|
@ -40,4 +40,4 @@ static be_define_const_module(
|
||||
"math"
|
||||
);
|
||||
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(math, NULL);
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(math);
|
||||
|
@ -14,4 +14,4 @@ static be_define_const_module(
|
||||
"persist"
|
||||
);
|
||||
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(persist, NULL);
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(persist);
|
||||
|
@ -14,4 +14,4 @@ static be_define_const_module(
|
||||
"solidify"
|
||||
);
|
||||
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(solidify, NULL);
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(solidify);
|
||||
|
@ -14,4 +14,4 @@ static be_define_const_module(
|
||||
"strict"
|
||||
);
|
||||
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(strict, NULL);
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(strict);
|
||||
|
@ -22,4 +22,4 @@ static be_define_const_module(
|
||||
"string"
|
||||
);
|
||||
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(string, NULL);
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(string);
|
||||
|
@ -15,4 +15,4 @@ static be_define_const_module(
|
||||
"path"
|
||||
);
|
||||
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(path, NULL);
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(path);
|
||||
|
@ -28,4 +28,4 @@ static be_define_const_module(
|
||||
"webserver"
|
||||
);
|
||||
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(webserver, NULL);
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(webserver);
|
||||
|
@ -138,13 +138,12 @@ const bvector _name = { \
|
||||
.end = (void*)(_data + (_size) - 1) \
|
||||
}
|
||||
|
||||
#define be_define_const_native_module(_module, _init) \
|
||||
#define be_define_const_native_module(_module) \
|
||||
const bntvmodule be_native_module(_module) = { \
|
||||
.name = #_module, \
|
||||
.attrs = NULL, \
|
||||
.size = 0, \
|
||||
.module = (bmodule*)&(m_lib##_module), \
|
||||
.init = _init \
|
||||
.module = (bmodule*)&(m_lib##_module) \
|
||||
}
|
||||
|
||||
/* defines needed for solidified classes */
|
||||
|
@ -297,6 +297,62 @@ static void m_solidify_class(bvm *vm, bclass *cl, int builtins)
|
||||
logfmt("}\n");
|
||||
}
|
||||
|
||||
static void m_solidify_module(bvm *vm, bmodule *ml, int builtins)
|
||||
{
|
||||
const char * module_name = ml->info.name;
|
||||
|
||||
/* iterate on members to dump closures */
|
||||
if (ml->table) {
|
||||
bmapnode *node;
|
||||
bmapiter iter = be_map_iter();
|
||||
while ((node = be_map_next(ml->table, &iter)) != NULL) {
|
||||
if (var_isstr(&node->key) && var_isclosure(&node->value)) {
|
||||
bclosure *f = var_toobj(&node->value);
|
||||
m_solidify_closure(vm, f, builtins);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
logfmt("\n");
|
||||
logfmt("/********************************************************************\n");
|
||||
logfmt("** Solidified module: %s\n", module_name);
|
||||
logfmt("********************************************************************/\n");
|
||||
|
||||
logfmt("be_local_module(%s,\n", module_name);
|
||||
logfmt(" \"%s\",\n", module_name);
|
||||
|
||||
if (ml->table) {
|
||||
logfmt(" be_nested_map(%i,\n", ml->table->count);
|
||||
|
||||
logfmt(" ( (struct bmapnode*) &(const bmapnode[]) {\n");
|
||||
for (int i = 0; i < ml->table->count; i++) {
|
||||
bmapnode * node = &ml->table->slots[i];
|
||||
if (node->key.type != BE_STRING) {
|
||||
char error[64];
|
||||
snprintf(error, sizeof(error), "Unsupported type in key: %i", node->key.type);
|
||||
be_raise(vm, "internal_error", error);
|
||||
}
|
||||
int key_next = node->key.next;
|
||||
size_t len = strlen(str(node->key.v.s));
|
||||
if (0xFFFFFF == key_next) {
|
||||
key_next = -1; /* more readable */
|
||||
}
|
||||
logfmt(" { be_nested_key(\"%s\", %i, %zu, %i), ", str(node->key.v.s), be_strhash(node->key.v.s), len >= 255 ? 255 : len, key_next);
|
||||
m_solidify_bvalue(vm, &node->value, module_name, str(node->key.v.s));
|
||||
|
||||
logfmt(" },\n");
|
||||
}
|
||||
logfmt(" }))\n");
|
||||
} else {
|
||||
logfmt(" NULL,\n");
|
||||
}
|
||||
logfmt(");\n");
|
||||
logfmt("BE_EXPORT_VARIABLE be_define_const_native_module(%s, NULL);\n", module_name);
|
||||
logfmt("/********************************************************************\n");
|
||||
|
||||
}
|
||||
|
||||
#define be_builtin_count(vm) \
|
||||
be_vector_count(&(vm)->gbldesc.builtin.vlist)
|
||||
|
||||
@ -308,6 +364,8 @@ static int m_dump(bvm *vm)
|
||||
m_solidify_closure(vm, var_toobj(v), be_builtin_count(vm));
|
||||
} else if (var_isclass(v)) {
|
||||
m_solidify_class(vm, var_toobj(v), be_builtin_count(vm));
|
||||
} else if (var_ismodule(v)) {
|
||||
m_solidify_module(vm, var_toobj(v), be_builtin_count(vm));
|
||||
}
|
||||
}
|
||||
be_return_nil(vm);
|
||||
|
@ -87,7 +87,7 @@
|
||||
res = ibinop(op, a, b); \
|
||||
} else if (var_isnumber(a) && var_isnumber(b)) { \
|
||||
res = var2real(a) op var2real(b); \
|
||||
} else if (var_isinstance(a)) { \
|
||||
} else if (var_isinstance(a) && !var_isnil(b)) { \
|
||||
res = object_eqop(vm, #op, iseq, a, b); \
|
||||
} else if (var_type(a) == var_type(b)) { /* same types */ \
|
||||
if (var_isnil(a)) { /* nil op nil */ \
|
||||
@ -882,28 +882,34 @@ newframe: /* a new call frame */
|
||||
binstance *obj = var_toobj(a);
|
||||
bstring *attr = var_tostr(b);
|
||||
if (!be_instance_setmember(vm, obj, attr, c)) {
|
||||
reg = vm->reg;
|
||||
vm_error(vm, "attribute_error",
|
||||
"class '%s' cannot assign to attribute '%s'",
|
||||
str(be_instance_name(obj)), str(attr));
|
||||
}
|
||||
reg = vm->reg;
|
||||
dispatch();
|
||||
}
|
||||
if (var_isclass(a) && var_isstr(b)) {
|
||||
bclass *obj = var_toobj(a);
|
||||
bstring *attr = var_tostr(b);
|
||||
if (!be_class_setmember(vm, obj, attr, c)) {
|
||||
reg = vm->reg;
|
||||
vm_error(vm, "attribute_error",
|
||||
"class '%s' cannot assign to static attribute '%s'",
|
||||
str(be_class_name(obj)), str(attr));
|
||||
}
|
||||
reg = vm->reg;
|
||||
dispatch();
|
||||
}
|
||||
if (var_ismodule(a) && var_isstr(b)) {
|
||||
bmodule *obj = var_toobj(a);
|
||||
bstring *attr = var_tostr(b);
|
||||
if (be_module_setmember(vm, obj, attr, c)) {
|
||||
reg = vm->reg;
|
||||
dispatch();
|
||||
} else {
|
||||
reg = vm->reg;
|
||||
// fall through exception below
|
||||
}
|
||||
}
|
||||
|
@ -18,7 +18,7 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
/* do not modify the version number! */
|
||||
#define BERRY_VERSION "0.1.10"
|
||||
#define BERRY_VERSION "1.0.0"
|
||||
|
||||
#if BE_STACK_TOTAL_MAX < BE_STACK_FREE_MIN * 2
|
||||
#error "The value of the macro BE_STACK_TOTAL_MAX is too small."
|
||||
@ -172,7 +172,6 @@ typedef struct bntvmodule {
|
||||
const bntvmodobj *attrs; /* native module attributes */
|
||||
size_t size; /* native module attribute count */
|
||||
const struct bmodule *module; /* const module object */
|
||||
bntvfunc init; /* initialization function */
|
||||
} bntvmodule;
|
||||
|
||||
/* native module node definition macro */
|
||||
|
@ -143,8 +143,7 @@ std::string block_builder::module_tostring(const block &block)
|
||||
if (scp != "static") { /* extern */
|
||||
ostr << "\n" << scp
|
||||
<< " be_define_const_native_module("
|
||||
<< block.name << ", "
|
||||
<< init(block) << ");" << std::endl;
|
||||
<< block.name << ");" << std::endl;
|
||||
}
|
||||
return ostr.str();
|
||||
}
|
||||
@ -168,12 +167,6 @@ std::string block_builder::name(const block &block)
|
||||
return it == block.attr.end() ? block.name : it->second;
|
||||
}
|
||||
|
||||
std::string block_builder::init(const block &block)
|
||||
{
|
||||
auto it = block.attr.find("init");
|
||||
return it == block.attr.end() ? "NULL" : it->second;
|
||||
}
|
||||
|
||||
void block_builder::writefile(const std::string &filename, const std::string &text)
|
||||
{
|
||||
std::string pathname(filename);
|
||||
|
@ -39,7 +39,6 @@ private:
|
||||
std::string scope(const block &block);
|
||||
std::string super(const block &block);
|
||||
std::string name(const block &block);
|
||||
std::string init(const block &block);
|
||||
void writefile(const std::string &filename, const std::string &text);
|
||||
|
||||
private:
|
||||
|
@ -137,7 +137,7 @@ e.g. "stm32f769xx.h" or "stm32f429xx.h"*/
|
||||
*-----------*/
|
||||
|
||||
/*Enable the log module*/
|
||||
#define LV_USE_LOG 0
|
||||
#define LV_USE_LOG 0 // change to 0 in normal conditions
|
||||
#if LV_USE_LOG
|
||||
|
||||
/*How important log should be added:
|
||||
|
201
lib/libesp32_lvgl/LVGL_assets/roboto/LICENSE
Normal file
201
lib/libesp32_lvgl/LVGL_assets/roboto/LICENSE
Normal file
@ -0,0 +1,201 @@
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
BIN
lib/libesp32_lvgl/LVGL_assets/roboto/RobotoCondensed-Regular.ttf
Normal file
BIN
lib/libesp32_lvgl/LVGL_assets/roboto/RobotoCondensed-Regular.ttf
Normal file
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
1069
lib/libesp32_lvgl/LVGL_assets/src/lv_theme_openhasp.c
Normal file
1069
lib/libesp32_lvgl/LVGL_assets/src/lv_theme_openhasp.c
Normal file
File diff suppressed because it is too large
Load Diff
55
lib/libesp32_lvgl/LVGL_assets/src/lv_theme_openhasp.h
Normal file
55
lib/libesp32_lvgl/LVGL_assets/src/lv_theme_openhasp.h
Normal file
@ -0,0 +1,55 @@
|
||||
/**
|
||||
* @file lv_theme_openhasp.h
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef LV_THEME_OPENHASP_H
|
||||
#define LV_THEME_OPENHASP_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* INCLUDES
|
||||
*********************/
|
||||
#include "core/lv_obj.h"
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
typedef enum {
|
||||
LV_THEME_HASP_FLAG_DARK = 0x01,
|
||||
LV_THEME_HASP_FLAG_LIGHT = 0x02,
|
||||
LV_THEME_HASP_FLAG_NO_TRANSITION = 0x10,
|
||||
LV_THEME_HASP_FLAG_NO_FOCUS = 0x20,
|
||||
} lv_theme_hasp_flag_t;
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
|
||||
/**
|
||||
* Initialize the theme
|
||||
* @param color_primary the primary color of the theme
|
||||
* @param color_secondary the secondary color for the theme
|
||||
* @param font pointer to a font to use.
|
||||
* @return a pointer to reference this theme later
|
||||
*/
|
||||
lv_theme_t * lv_theme_openhasp_init(lv_disp_t * disp, lv_color_t color_primary, lv_color_t color_secondary, bool dark, const lv_font_t * font);
|
||||
|
||||
bool lv_theme_openhasp_is_inited(void);
|
||||
|
||||
/**********************
|
||||
* MACROS
|
||||
**********************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /*extern "C"*/
|
||||
#endif
|
||||
|
||||
#endif /*LV_THEME_DEFAULT_H*/
|
@ -51,6 +51,17 @@ lib_extra_dirs =
|
||||
lib/lib_rf
|
||||
lib/lib_div
|
||||
|
||||
[tasmota]
|
||||
; *** Settings here do NOT affect firmware building ***
|
||||
; Uncomment if you do NOT want gzipped map file(s)
|
||||
;disable_map_gz = 1
|
||||
; Uncomment and specify a folder where to place the map file(s) (default set to folder build_output)
|
||||
;map_dir = /tmp/map_files/
|
||||
; Uncomment if you do NOT want additionally gzipped firmware file(s)
|
||||
;disable_bin_gz = 1
|
||||
; Uncomment and specify a folder where to place the firmware file(s) (default set to folder build_output)
|
||||
;bin_dir = /tmp/bin_files/
|
||||
|
||||
[scripts_defaults]
|
||||
extra_scripts = pio-tools/strip-floats.py
|
||||
pio-tools/name-firmware.py
|
||||
@ -76,7 +87,6 @@ build_flags = -DCORE_DEBUG_LEVEL=0
|
||||
-DUSE_CONFIG_OVERRIDE
|
||||
; *********************************************************************
|
||||
|
||||
|
||||
[esp82xx_defaults]
|
||||
build_flags = ${esp_defaults.build_flags}
|
||||
-DNDEBUG
|
||||
@ -98,6 +108,7 @@ build_flags = ${esp_defaults.build_flags}
|
||||
; *** Esp8266 Tasmota modified Arduino core based on core 2.7.4. Added Backport for PWM selection
|
||||
platform = espressif8266 @ 2.6.3
|
||||
platform_packages = tasmota/framework-arduinoespressif8266 @ ~2.7.4
|
||||
platformio/tool-esptoolpy @ ~1.30100
|
||||
build_unflags = ${esp_defaults.build_unflags}
|
||||
build_flags = ${esp82xx_defaults.build_flags}
|
||||
; *** Use ONE of the two PWM variants. Tasmota default is Locked PWM
|
||||
|
@ -40,9 +40,19 @@ default_envs =
|
||||
|
||||
|
||||
[env]
|
||||
framework = ${common.framework}
|
||||
platform = ${common.platform}
|
||||
platform_packages = ${common.platform_packages}
|
||||
; Activate Development core by removing ";" the next lines
|
||||
;platform = https://github.com/platformio/platform-espressif8266.git
|
||||
;platform_packages = ${common.platform_packages}
|
||||
; framework-arduinoespressif8266 @ https://github.com/esp8266/Arduino.git
|
||||
;build_unflags = ${common.build_unflags}
|
||||
; -Wswitch-unreachable
|
||||
;build_flags = ${common.build_flags}
|
||||
; -D PIO_FRAMEWORK_ARDUINO_MMU_CACHE16_IRAM48_SECHEAP_SHARED
|
||||
; -Wno-switch-unreachable
|
||||
; *** Optional Debug messages
|
||||
; -DDEBUG_TASMOTA_CORE
|
||||
; -DDEBUG_TASMOTA_DRIVER
|
||||
; -DDEBUG_TASMOTA_SENSOR
|
||||
; Build variant 1MB = 1MB firmware no filesystem (default)
|
||||
board = ${common.board}
|
||||
; Build variant 2MB = 1MB firmware, 1MB filesystem (most Shelly devices)
|
||||
@ -51,18 +61,9 @@ board = ${common.board}
|
||||
;board = esp8266_4M2M
|
||||
;board_build.f_cpu = 160000000L
|
||||
;board_build.f_flash = 40000000L
|
||||
board_build.filesystem = ${common.board_build.filesystem}
|
||||
build_unflags = ${common.build_unflags}
|
||||
build_flags = ${common.build_flags}
|
||||
; *** Optional Debug messages
|
||||
; -DDEBUG_TASMOTA_CORE
|
||||
; -DDEBUG_TASMOTA_DRIVER
|
||||
; -DDEBUG_TASMOTA_SENSOR
|
||||
monitor_speed = ${common.monitor_speed}
|
||||
;monitor_speed = 115200
|
||||
; *** Serial port used for erasing/flashing the ESP82xx
|
||||
;upload_port = ${common.upload_port}
|
||||
upload_port = COM5
|
||||
upload_resetmethod = ${common.upload_resetmethod}
|
||||
;upload_port = COM5
|
||||
extra_scripts = ${scripts_defaults.extra_scripts}
|
||||
; pio-tools/obj-dump.py
|
||||
lib_ldf_mode = ${common.lib_ldf_mode}
|
||||
@ -88,9 +89,13 @@ lib_extra_dirs = ${library.lib_extra_dirs}
|
||||
|
||||
|
||||
[env:tasmota32_base]
|
||||
framework = ${common.framework}
|
||||
platform = ${core32.platform}
|
||||
platform_packages = ${core32.platform_packages}
|
||||
; *** Uncomment next lines ";" to enable Beta Tasmota Arduino version ESP32 IDF4.4
|
||||
;platform = https://github.com/platformio/platform-espressif32.git#feature/arduino-idf-master
|
||||
;platform_packages = ${core32.platform_packages}
|
||||
; framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/2.0.1rc1/framework-arduinoespressif32-release_IDF4.4.tar.gz
|
||||
build_unflags = ${esp32_defaults.build_unflags}
|
||||
build_flags = ${esp32_defaults.build_flags}
|
||||
|
||||
; Build variant ESP32 4M Flash, Tasmota 1856k Code/OTA, 320k LITTLEFS (default)
|
||||
board = esp32_4M
|
||||
; Build variant ESP32 8M Flash, Tasmota 2944k Code/OTA, 2112k LITTLEFS
|
||||
@ -106,8 +111,6 @@ upload_port = COM4
|
||||
;upload_speed = 115200
|
||||
upload_resetmethod = ${common.upload_resetmethod}
|
||||
extra_scripts = ${common.extra_scripts}
|
||||
build_unflags = ${esp32_defaults.build_unflags}
|
||||
build_flags = ${esp32_defaults.build_flags}
|
||||
lib_ldf_mode = ${common.lib_ldf_mode}
|
||||
lib_compat_mode = ${common.lib_compat_mode}
|
||||
lib_ignore =
|
||||
|
@ -25,10 +25,10 @@ build_flags = ${esp_defaults.build_flags}
|
||||
; wrappers for the crash-recorder
|
||||
-Wl,--wrap=panicHandler -Wl,--wrap=xt_unhandled_exception
|
||||
|
||||
|
||||
[core32]
|
||||
platform = espressif32 @ 3.3.1
|
||||
platform_packages = framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/1.0.7.5/tasmota-arduinoespressif32-release_v3.3.5.tar.gz
|
||||
platformio/tool-esptoolpy @ ~1.30100
|
||||
platformio/tool-mklittlefs @ ~1.203.200522
|
||||
build_unflags = ${esp32_defaults.build_unflags}
|
||||
build_flags = ${esp32_defaults.build_flags}
|
@ -1,31 +1,12 @@
|
||||
[core]
|
||||
; Activate (by removing the ";" in the next lines) if you want to override the standard core defined in platformio.ini !!!
|
||||
;platform = ${core_dev.platform}
|
||||
;platform_packages = ${core_dev.platform_packages}
|
||||
;build_unflags = ${core_dev.build_unflags}
|
||||
;build_flags = ${core_dev.build_flags}
|
||||
|
||||
[core_dev]
|
||||
; *** Esp8266 core for Arduino 3.0.2
|
||||
platform = https://github.com/platformio/platform-espressif8266.git
|
||||
platform_packages =
|
||||
build_unflags = ${env.build_unflags}
|
||||
-Wswitch-unreachable
|
||||
build_flags = ${env.build_flags}
|
||||
; *** 16k extra heap https://github.com/esp8266/Arduino/pull/7060
|
||||
-D PIO_FRAMEWORK_ARDUINO_MMU_CACHE16_IRAM48_SECHEAP_SHARED
|
||||
-Wno-switch-unreachable
|
||||
|
||||
; Settings in [tasmota] do NOT affect firmware building
|
||||
[tasmota]
|
||||
; Uncomment next line if you do NOT want gzipped map file(s)
|
||||
;disable_map_gz = 1
|
||||
; Uncomment and specify a folder where to place the map file(s) (default set to folder build_output)
|
||||
;map_dir = /tmp/map_files/
|
||||
; Uncomment next line if you do NOT want additionally gzipped firmware file(s)
|
||||
;disable_bin_gz = 1
|
||||
; Uncomment and specify a folder where to place the firmware file(s) (default set to folder build_output)
|
||||
;bin_dir = /tmp/bin_files/
|
||||
; *** Tasmota development core version ESP32 IDF3.3.5 / Currently none, same as default
|
||||
[env:tasmota32idf3]
|
||||
extends = env:tasmota32_base
|
||||
platform = espressif32 @ 3.3.1
|
||||
platform_packages = ${core32.platform_packages}
|
||||
framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/1.0.7.5/tasmota-arduinoespressif32-release_v3.3.5.tar.gz
|
||||
build_unflags = ${env:tasmota32_base.build_unflags}
|
||||
build_flags = ${env:tasmota32_base.build_flags}
|
||||
;-DESP32_STAGE=true
|
||||
|
||||
[env:tasmota-rangeextender]
|
||||
build_flags = ${env.build_flags}
|
||||
@ -34,23 +15,38 @@ build_flags = ${env.build_flags}
|
||||
-D USE_WIFI_RANGE_EXTENDER
|
||||
-D USE_WIFI_RANGE_EXTENDER_NAPT
|
||||
|
||||
; *** Tasmota development core version ESP32 IDF3.3.5 / Currently none, same as default
|
||||
[env:tasmota32idf3]
|
||||
; *** Beta Tasmota version for ESP32 IDF4.4.
|
||||
[env:tasmota32idf4]
|
||||
extends = env:tasmota32_base
|
||||
platform = espressif32 @ 3.3.0
|
||||
platform_packages = framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/1.0.7.4/tasmota-arduinoespressif32-release_v3.3.5.tar.gz
|
||||
platformio/tool-mklittlefs @ ~1.203.200522
|
||||
platform = https://github.com/platformio/platform-espressif32.git#feature/arduino-idf-master
|
||||
platform_packages = ${core32.platform_packages}
|
||||
framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/2.0.1rc1/framework-arduinoespressif32-release_IDF4.4.tar.gz
|
||||
build_unflags = ${env:tasmota32_base.build_unflags}
|
||||
-Wswitch-unreachable
|
||||
-Wstringop-overflow
|
||||
-Wincompatible-pointer-types
|
||||
build_flags = ${env:tasmota32_base.build_flags}
|
||||
-Wno-switch-unreachable
|
||||
-Wno-stringop-overflow
|
||||
; ***Uncomment next two lines to enable BLE
|
||||
;-DUSE_BLE_ESP32
|
||||
;-DUSE_MI_ESP32
|
||||
;-DESP32_STAGE=true
|
||||
|
||||
[env:tasmota32-rangeextender]
|
||||
extends = env:tasmota32idf4
|
||||
build_flags = ${env:tasmota32idf4.build_flags}
|
||||
-D FIRMWARE_TASMOTA32
|
||||
-D USE_WIFI_RANGE_EXTENDER
|
||||
-D USE_WIFI_RANGE_EXTENDER_NAPT
|
||||
|
||||
;*** Beta Tasmota version for ESP32-S2
|
||||
[env:tasmota32s2]
|
||||
extends = env:tasmota32_base
|
||||
board = esp32s2
|
||||
platform = https://github.com/platformio/platform-espressif32.git#feature/arduino-idf-master
|
||||
platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/464/framework-arduinoespressif32-master-3dde75d58.tar.gz
|
||||
platformio/tool-mklittlefs @ ~1.203.200522
|
||||
platform_packages = ${core32.platform_packages}
|
||||
framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/2.0.1rc1/framework-arduinoespressif32-release_IDF4.4.tar.gz
|
||||
build_unflags = ${env:tasmota32_base.build_unflags}
|
||||
-Wswitch-unreachable
|
||||
-Wstringop-overflow
|
||||
@ -70,39 +66,6 @@ lib_ignore =
|
||||
ESP32-HomeKit
|
||||
Micro-RTSP
|
||||
|
||||
|
||||
; *** Beta Tasmota version for ESP32 IDF4.4.
|
||||
[env:tasmota32idf4]
|
||||
extends = env:tasmota32_base
|
||||
platform = https://github.com/platformio/platform-espressif32.git#feature/arduino-idf-master
|
||||
platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/464/framework-arduinoespressif32-master-3dde75d58.tar.gz
|
||||
platformio/tool-mklittlefs @ ~1.203.200522
|
||||
build_unflags = ${env:tasmota32_base.build_unflags}
|
||||
-Wswitch-unreachable
|
||||
-Wstringop-overflow
|
||||
-Wincompatible-pointer-types
|
||||
build_flags = ${env:tasmota32_base.build_flags}
|
||||
-Wno-switch-unreachable
|
||||
-Wno-stringop-overflow
|
||||
; ***Uncomment next two lines to enable BLE
|
||||
;-DUSE_BLE_ESP32
|
||||
;-DUSE_MI_ESP32
|
||||
;-DESP32_STAGE=true
|
||||
lib_extra_dirs = lib/libesp32
|
||||
lib/libesp32_div
|
||||
lib/libesp32_lvgl
|
||||
lib/lib_basic
|
||||
lib/lib_i2c
|
||||
lib/lib_ssl
|
||||
lib/lib_display
|
||||
|
||||
[env:tasmota32-rangeextender]
|
||||
extends = env:tasmota32idf4
|
||||
build_flags = ${env:tasmota32idf4.build_flags}
|
||||
-D FIRMWARE_TASMOTA32
|
||||
-D USE_WIFI_RANGE_EXTENDER
|
||||
-D USE_WIFI_RANGE_EXTENDER_NAPT
|
||||
|
||||
; *** Debug version used for PlatformIO Home Project Inspection
|
||||
[env:tasmota-debug]
|
||||
build_type = debug
|
||||
@ -132,9 +95,8 @@ build_flags = ${env:tasmota32_base.build_flags}
|
||||
[env:tasmota32solo1-ocd]
|
||||
;build_type = debug
|
||||
extends = env:tasmota32_base
|
||||
platform_packages = framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/1.0.7.4/tasmota-arduinoespressif32-solo1-release_v3.3.5.tar.gz
|
||||
platformio/tool-esptoolpy @ ~1.30100
|
||||
platformio/tool-mklittlefs @ ~1.203.200522
|
||||
platform_packages = ${core32.platform_packages}
|
||||
framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/1.0.7.5/tasmota-arduinoespressif32-solo1-release_v3.3.5.tar.gz
|
||||
board = esp32_solo1_4M
|
||||
debug_tool = esp-prog
|
||||
upload_protocol = esp-prog
|
||||
|
@ -9,8 +9,8 @@ monitor_speed = 115200
|
||||
upload_port = ${common.upload_port}
|
||||
upload_resetmethod = ${common.upload_resetmethod}
|
||||
extra_scripts = ${common.extra_scripts}
|
||||
build_unflags = ${esp32_defaults.build_unflags}
|
||||
build_flags = ${esp32_defaults.build_flags}
|
||||
build_unflags = ${core32.build_unflags}
|
||||
build_flags = ${core32.build_flags}
|
||||
lib_ldf_mode = ${common.lib_ldf_mode}
|
||||
lib_compat_mode = ${common.lib_compat_mode}
|
||||
lib_extra_dirs = ${common.lib_extra_dirs}
|
||||
@ -50,9 +50,8 @@ build_flags = ${env:tasmota32_base.build_flags} -DFIRMWARE_TASMOTA32
|
||||
|
||||
[env:tasmota32solo1]
|
||||
extends = env:tasmota32_base
|
||||
platform_packages = framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/1.0.7.5/tasmota-arduinoespressif32-solo1-release_v3.3.5.tar.gz
|
||||
platformio/tool-esptoolpy @ ~1.30100
|
||||
platformio/tool-mklittlefs @ ~1.203.200522
|
||||
platform_packages = ${core32.platform_packages}
|
||||
framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/1.0.7.5/tasmota-arduinoespressif32-solo1-release_v3.3.5.tar.gz
|
||||
build_flags = ${env:tasmota32_base.build_flags} -DFIRMWARE_TASMOTA32
|
||||
|
||||
[env:tasmota32-webcam]
|
||||
@ -98,8 +97,8 @@ lib_extra_dirs = lib/libesp32, lib/lib_basic
|
||||
extends = env:tasmota32_base
|
||||
board = esp32c3
|
||||
platform = https://github.com/platformio/platform-espressif32.git#feature/arduino-idf-master
|
||||
platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/464/framework-arduinoespressif32-master-3dde75d58.tar.gz
|
||||
platformio/tool-mklittlefs @ ~1.203.200522
|
||||
platform_packages = ${core32.platform_packages}
|
||||
framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/2.0.1rc1/framework-arduinoespressif32-release_IDF4.4.tar.gz
|
||||
build_unflags = ${env:tasmota32_base.build_unflags}
|
||||
-Wswitch-unreachable
|
||||
-Wstringop-overflow
|
||||
|
@ -110,6 +110,10 @@ const lvbe_call_c_t lv_font_func[] = {
|
||||
const lvbe_call_c_t lv_color_func[] = {
|
||||
};
|
||||
|
||||
/* `lv_theme` methods */
|
||||
const lvbe_call_c_t lv_theme_func[] = {
|
||||
};
|
||||
|
||||
/* `lv_img` methods */
|
||||
#ifdef BE_LV_WIDGET_IMG
|
||||
const lvbe_call_c_t lv_img_func[] = {
|
||||
@ -131,12 +135,30 @@ const lvbe_call_c_t lv_img_func[] = {
|
||||
};
|
||||
#endif // BE_LV_WIDGET_IMG
|
||||
|
||||
/* `lv_disp` methods */
|
||||
const lvbe_call_c_t lv_disp_func[] = {
|
||||
{ "clean_dcache", (void*) &lv_disp_clean_dcache, "", "(lv.lv_disp)" },
|
||||
{ "dpx", (void*) &lv_disp_dpx, "i", "(lv.lv_disp)i" },
|
||||
{ "get_inactive_time", (void*) &lv_disp_get_inactive_time, "i", "(lv.lv_disp)" },
|
||||
{ "get_layer_sys", (void*) &lv_disp_get_layer_sys, "lv.lv_obj", "(lv.lv_disp)" },
|
||||
{ "get_layer_top", (void*) &lv_disp_get_layer_top, "lv.lv_obj", "(lv.lv_disp)" },
|
||||
{ "get_scr_act", (void*) &lv_disp_get_scr_act, "lv.lv_obj", "(lv.lv_disp)" },
|
||||
{ "get_scr_prev", (void*) &lv_disp_get_scr_prev, "lv.lv_obj", "(lv.lv_disp)" },
|
||||
{ "get_theme", (void*) &lv_disp_get_theme, "lv.lv_theme", "(lv.lv_disp)" },
|
||||
{ "load_scr", (void*) &lv_disp_load_scr, "", "(lv.lv_obj)" },
|
||||
{ "set_bg_color", (void*) &lv_disp_set_bg_color, "", "(lv.lv_disp)(lv.lv_color)" },
|
||||
{ "set_bg_image", (void*) &lv_disp_set_bg_image, "", "(lv.lv_disp)." },
|
||||
{ "set_bg_opa", (void*) &lv_disp_set_bg_opa, "", "(lv.lv_disp)i" },
|
||||
{ "set_theme", (void*) &lv_disp_set_theme, "", "(lv.lv_disp)(lv.lv_theme)" },
|
||||
{ "trig_activity", (void*) &lv_disp_trig_activity, "", "(lv.lv_disp)" },
|
||||
};
|
||||
|
||||
/* `lv_obj` methods */
|
||||
const lvbe_call_c_t lv_obj_func[] = {
|
||||
{ "add_event_cb", (void*) &lv_obj_add_event_cb, "i", "(lv.lv_obj)^lv_event_cb^i." },
|
||||
{ "add_flag", (void*) &lv_obj_add_flag, "", "(lv.lv_obj)i" },
|
||||
{ "add_state", (void*) &lv_obj_add_state, "", "(lv.lv_obj)i" },
|
||||
{ "add_style", (void*) &lv_obj_add_style, "", "(lv.lv_obj)(lv.lv_style)(lv.lv_style_selector)" },
|
||||
{ "add_style", (void*) &lv_obj_add_style, "", "(lv.lv_obj)(lv.lv_style)i" },
|
||||
{ "align", (void*) &lv_obj_align, "", "(lv.lv_obj)iii" },
|
||||
{ "align_to", (void*) &lv_obj_align_to, "", "(lv.lv_obj)(lv.lv_obj)iii" },
|
||||
{ "allocate_spec_attr", (void*) &lv_obj_allocate_spec_attr, "", "(lv.lv_obj)" },
|
||||
@ -162,9 +184,10 @@ const lvbe_call_c_t lv_obj_func[] = {
|
||||
{ "get_content_height", (void*) &lv_obj_get_content_height, "i", "(lv.lv_obj)" },
|
||||
{ "get_content_width", (void*) &lv_obj_get_content_width, "i", "(lv.lv_obj)" },
|
||||
{ "get_coords", (void*) &lv_obj_get_coords, "", "(lv.lv_obj)(lv.lv_area)" },
|
||||
{ "get_disp", (void*) &lv_obj_get_disp, "lv.lv_disp", "(lv.lv_obj)" },
|
||||
{ "get_group", (void*) &lv_obj_get_group, ".", "(lv.lv_obj)" },
|
||||
{ "get_height", (void*) &lv_obj_get_height, "i", "(lv.lv_obj)" },
|
||||
{ "get_local_style_prop", (void*) &lv_obj_get_local_style_prop, "i", "(lv.lv_obj)(lv.lv_style_prop)(lv.lv_style_value)(lv.lv_style_selector)" },
|
||||
{ "get_local_style_prop", (void*) &lv_obj_get_local_style_prop, "i", "(lv.lv_obj)(lv.lv_style_prop)(lv.lv_style_value)i" },
|
||||
{ "get_parent", (void*) &lv_obj_get_parent, "lv.lv_obj", "(lv.lv_obj)" },
|
||||
{ "get_screen", (void*) &lv_obj_get_screen, "lv.lv_obj", "(lv.lv_obj)" },
|
||||
{ "get_scroll_bottom", (void*) &lv_obj_get_scroll_bottom, "i", "(lv.lv_obj)" },
|
||||
@ -307,8 +330,8 @@ const lvbe_call_c_t lv_obj_func[] = {
|
||||
{ "refresh_style", (void*) &lv_obj_refresh_style, "", "(lv.lv_obj)i(lv.lv_style_prop)" },
|
||||
{ "remove_event_cb", (void*) &lv_obj_remove_event_cb, "b", "(lv.lv_obj)^lv_event_cb^" },
|
||||
{ "remove_event_dsc", (void*) &lv_obj_remove_event_dsc, "b", "(lv.lv_obj)i" },
|
||||
{ "remove_local_style_prop", (void*) &lv_obj_remove_local_style_prop, "b", "(lv.lv_obj)(lv.lv_style_prop)(lv.lv_style_selector)" },
|
||||
{ "remove_style", (void*) &lv_obj_remove_style, "", "(lv.lv_obj)(lv.lv_style)(lv.lv_style_selector)" },
|
||||
{ "remove_local_style_prop", (void*) &lv_obj_remove_local_style_prop, "b", "(lv.lv_obj)(lv.lv_style_prop)i" },
|
||||
{ "remove_style", (void*) &lv_obj_remove_style, "", "(lv.lv_obj)(lv.lv_style)i" },
|
||||
{ "remove_style_all", (void*) &lv_obj_remove_style_all, "", "(lv.lv_obj)" },
|
||||
{ "scroll_by", (void*) &lv_obj_scroll_by, "", "(lv.lv_obj)ii(lv.lv_anim_enable)" },
|
||||
{ "scroll_to", (void*) &lv_obj_scroll_to, "", "(lv.lv_obj)ii(lv.lv_anim_enable)" },
|
||||
@ -323,7 +346,7 @@ const lvbe_call_c_t lv_obj_func[] = {
|
||||
{ "set_ext_click_area", (void*) &lv_obj_set_ext_click_area, "", "(lv.lv_obj)i" },
|
||||
{ "set_height", (void*) &lv_obj_set_height, "", "(lv.lv_obj)i" },
|
||||
{ "set_layout", (void*) &lv_obj_set_layout, "", "(lv.lv_obj)i" },
|
||||
{ "set_local_style_prop", (void*) &lv_obj_set_local_style_prop, "", "(lv.lv_obj)(lv.lv_style_prop)i(lv.lv_style_selector)" },
|
||||
{ "set_local_style_prop", (void*) &lv_obj_set_local_style_prop, "", "(lv.lv_obj)(lv.lv_style_prop)ii" },
|
||||
{ "set_parent", (void*) &lv_obj_set_parent, "", "(lv.lv_obj)(lv.lv_obj)" },
|
||||
{ "set_pos", (void*) &lv_obj_set_pos, "", "(lv.lv_obj)ii" },
|
||||
{ "set_scroll_dir", (void*) &lv_obj_set_scroll_dir, "", "(lv.lv_obj)i" },
|
||||
@ -331,100 +354,100 @@ const lvbe_call_c_t lv_obj_func[] = {
|
||||
{ "set_scroll_snap_y", (void*) &lv_obj_set_scroll_snap_y, "", "(lv.lv_obj)i" },
|
||||
{ "set_scrollbar_mode", (void*) &lv_obj_set_scrollbar_mode, "", "(lv.lv_obj)i" },
|
||||
{ "set_size", (void*) &lv_obj_set_size, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_align", (void*) &lv_obj_set_style_align, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_anim_speed", (void*) &lv_obj_set_style_anim_speed, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_anim_time", (void*) &lv_obj_set_style_anim_time, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_arc_color", (void*) &lv_obj_set_style_arc_color, "", "(lv.lv_obj)(lv.lv_color)(lv.lv_style_selector)" },
|
||||
{ "set_style_arc_color_filtered", (void*) &lv_obj_set_style_arc_color_filtered, "", "(lv.lv_obj)(lv.lv_color)(lv.lv_style_selector)" },
|
||||
{ "set_style_arc_img_src", (void*) &lv_obj_set_style_arc_img_src, "", "(lv.lv_obj).(lv.lv_style_selector)" },
|
||||
{ "set_style_arc_opa", (void*) &lv_obj_set_style_arc_opa, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_arc_rounded", (void*) &lv_obj_set_style_arc_rounded, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_arc_width", (void*) &lv_obj_set_style_arc_width, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_base_dir", (void*) &lv_obj_set_style_base_dir, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_bg_color", (void*) &lv_obj_set_style_bg_color, "", "(lv.lv_obj)(lv.lv_color)(lv.lv_style_selector)" },
|
||||
{ "set_style_bg_color_filtered", (void*) &lv_obj_set_style_bg_color_filtered, "", "(lv.lv_obj)(lv.lv_color)(lv.lv_style_selector)" },
|
||||
{ "set_style_bg_grad_color", (void*) &lv_obj_set_style_bg_grad_color, "", "(lv.lv_obj)(lv.lv_color)(lv.lv_style_selector)" },
|
||||
{ "set_style_bg_grad_color_filtered", (void*) &lv_obj_set_style_bg_grad_color_filtered, "", "(lv.lv_obj)(lv.lv_color)(lv.lv_style_selector)" },
|
||||
{ "set_style_bg_grad_dir", (void*) &lv_obj_set_style_bg_grad_dir, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_bg_grad_stop", (void*) &lv_obj_set_style_bg_grad_stop, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_bg_img_opa", (void*) &lv_obj_set_style_bg_img_opa, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_bg_img_recolor", (void*) &lv_obj_set_style_bg_img_recolor, "", "(lv.lv_obj)(lv.lv_color)(lv.lv_style_selector)" },
|
||||
{ "set_style_bg_img_recolor_filtered", (void*) &lv_obj_set_style_bg_img_recolor_filtered, "", "(lv.lv_obj)(lv.lv_color)(lv.lv_style_selector)" },
|
||||
{ "set_style_bg_img_recolor_opa", (void*) &lv_obj_set_style_bg_img_recolor_opa, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_bg_img_src", (void*) &lv_obj_set_style_bg_img_src, "", "(lv.lv_obj).(lv.lv_style_selector)" },
|
||||
{ "set_style_bg_img_tiled", (void*) &lv_obj_set_style_bg_img_tiled, "", "(lv.lv_obj)b(lv.lv_style_selector)" },
|
||||
{ "set_style_bg_main_stop", (void*) &lv_obj_set_style_bg_main_stop, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_bg_opa", (void*) &lv_obj_set_style_bg_opa, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_blend_mode", (void*) &lv_obj_set_style_blend_mode, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_border_color", (void*) &lv_obj_set_style_border_color, "", "(lv.lv_obj)(lv.lv_color)(lv.lv_style_selector)" },
|
||||
{ "set_style_border_color_filtered", (void*) &lv_obj_set_style_border_color_filtered, "", "(lv.lv_obj)(lv.lv_color)(lv.lv_style_selector)" },
|
||||
{ "set_style_border_opa", (void*) &lv_obj_set_style_border_opa, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_border_post", (void*) &lv_obj_set_style_border_post, "", "(lv.lv_obj)b(lv.lv_style_selector)" },
|
||||
{ "set_style_border_side", (void*) &lv_obj_set_style_border_side, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_border_width", (void*) &lv_obj_set_style_border_width, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_clip_corner", (void*) &lv_obj_set_style_clip_corner, "", "(lv.lv_obj)b(lv.lv_style_selector)" },
|
||||
{ "set_style_color_filter_dsc", (void*) &lv_obj_set_style_color_filter_dsc, "", "(lv.lv_obj)(lv.lv_color_filter_dsc)(lv.lv_style_selector)" },
|
||||
{ "set_style_color_filter_opa", (void*) &lv_obj_set_style_color_filter_opa, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_height", (void*) &lv_obj_set_style_height, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_img_opa", (void*) &lv_obj_set_style_img_opa, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_img_recolor", (void*) &lv_obj_set_style_img_recolor, "", "(lv.lv_obj)(lv.lv_color)(lv.lv_style_selector)" },
|
||||
{ "set_style_img_recolor_filtered", (void*) &lv_obj_set_style_img_recolor_filtered, "", "(lv.lv_obj)(lv.lv_color)(lv.lv_style_selector)" },
|
||||
{ "set_style_img_recolor_opa", (void*) &lv_obj_set_style_img_recolor_opa, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_layout", (void*) &lv_obj_set_style_layout, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_line_color", (void*) &lv_obj_set_style_line_color, "", "(lv.lv_obj)(lv.lv_color)(lv.lv_style_selector)" },
|
||||
{ "set_style_line_color_filtered", (void*) &lv_obj_set_style_line_color_filtered, "", "(lv.lv_obj)(lv.lv_color)(lv.lv_style_selector)" },
|
||||
{ "set_style_line_dash_gap", (void*) &lv_obj_set_style_line_dash_gap, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_line_dash_width", (void*) &lv_obj_set_style_line_dash_width, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_line_opa", (void*) &lv_obj_set_style_line_opa, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_line_rounded", (void*) &lv_obj_set_style_line_rounded, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_line_width", (void*) &lv_obj_set_style_line_width, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_max_height", (void*) &lv_obj_set_style_max_height, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_max_width", (void*) &lv_obj_set_style_max_width, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_min_height", (void*) &lv_obj_set_style_min_height, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_min_width", (void*) &lv_obj_set_style_min_width, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_opa", (void*) &lv_obj_set_style_opa, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_outline_color", (void*) &lv_obj_set_style_outline_color, "", "(lv.lv_obj)(lv.lv_color)(lv.lv_style_selector)" },
|
||||
{ "set_style_outline_color_filtered", (void*) &lv_obj_set_style_outline_color_filtered, "", "(lv.lv_obj)(lv.lv_color)(lv.lv_style_selector)" },
|
||||
{ "set_style_outline_opa", (void*) &lv_obj_set_style_outline_opa, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_outline_pad", (void*) &lv_obj_set_style_outline_pad, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_outline_width", (void*) &lv_obj_set_style_outline_width, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_pad_all", (void*) &lv_obj_set_style_pad_all, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_pad_bottom", (void*) &lv_obj_set_style_pad_bottom, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_pad_column", (void*) &lv_obj_set_style_pad_column, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_pad_gap", (void*) &lv_obj_set_style_pad_gap, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_pad_hor", (void*) &lv_obj_set_style_pad_hor, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_pad_left", (void*) &lv_obj_set_style_pad_left, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_pad_right", (void*) &lv_obj_set_style_pad_right, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_pad_row", (void*) &lv_obj_set_style_pad_row, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_pad_top", (void*) &lv_obj_set_style_pad_top, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_pad_ver", (void*) &lv_obj_set_style_pad_ver, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_radius", (void*) &lv_obj_set_style_radius, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_shadow_color", (void*) &lv_obj_set_style_shadow_color, "", "(lv.lv_obj)(lv.lv_color)(lv.lv_style_selector)" },
|
||||
{ "set_style_shadow_color_filtered", (void*) &lv_obj_set_style_shadow_color_filtered, "", "(lv.lv_obj)(lv.lv_color)(lv.lv_style_selector)" },
|
||||
{ "set_style_shadow_ofs_x", (void*) &lv_obj_set_style_shadow_ofs_x, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_shadow_ofs_y", (void*) &lv_obj_set_style_shadow_ofs_y, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_shadow_opa", (void*) &lv_obj_set_style_shadow_opa, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_shadow_spread", (void*) &lv_obj_set_style_shadow_spread, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_shadow_width", (void*) &lv_obj_set_style_shadow_width, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_size", (void*) &lv_obj_set_style_size, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_text_align", (void*) &lv_obj_set_style_text_align, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_text_color", (void*) &lv_obj_set_style_text_color, "", "(lv.lv_obj)(lv.lv_color)(lv.lv_style_selector)" },
|
||||
{ "set_style_text_color_filtered", (void*) &lv_obj_set_style_text_color_filtered, "", "(lv.lv_obj)(lv.lv_color)(lv.lv_style_selector)" },
|
||||
{ "set_style_text_decor", (void*) &lv_obj_set_style_text_decor, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_text_font", (void*) &lv_obj_set_style_text_font, "", "(lv.lv_obj)(lv.lv_font)(lv.lv_style_selector)" },
|
||||
{ "set_style_text_letter_space", (void*) &lv_obj_set_style_text_letter_space, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_text_line_space", (void*) &lv_obj_set_style_text_line_space, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_text_opa", (void*) &lv_obj_set_style_text_opa, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_transform_angle", (void*) &lv_obj_set_style_transform_angle, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_transform_height", (void*) &lv_obj_set_style_transform_height, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_transform_width", (void*) &lv_obj_set_style_transform_width, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_transform_zoom", (void*) &lv_obj_set_style_transform_zoom, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_transition", (void*) &lv_obj_set_style_transition, "", "(lv.lv_obj)(lv.lv_style_transition_dsc)(lv.lv_style_selector)" },
|
||||
{ "set_style_translate_x", (void*) &lv_obj_set_style_translate_x, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_translate_y", (void*) &lv_obj_set_style_translate_y, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_width", (void*) &lv_obj_set_style_width, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_x", (void*) &lv_obj_set_style_x, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_y", (void*) &lv_obj_set_style_y, "", "(lv.lv_obj)i(lv.lv_style_selector)" },
|
||||
{ "set_style_align", (void*) &lv_obj_set_style_align, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_anim_speed", (void*) &lv_obj_set_style_anim_speed, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_anim_time", (void*) &lv_obj_set_style_anim_time, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_arc_color", (void*) &lv_obj_set_style_arc_color, "", "(lv.lv_obj)(lv.lv_color)i" },
|
||||
{ "set_style_arc_color_filtered", (void*) &lv_obj_set_style_arc_color_filtered, "", "(lv.lv_obj)(lv.lv_color)i" },
|
||||
{ "set_style_arc_img_src", (void*) &lv_obj_set_style_arc_img_src, "", "(lv.lv_obj).i" },
|
||||
{ "set_style_arc_opa", (void*) &lv_obj_set_style_arc_opa, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_arc_rounded", (void*) &lv_obj_set_style_arc_rounded, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_arc_width", (void*) &lv_obj_set_style_arc_width, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_base_dir", (void*) &lv_obj_set_style_base_dir, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_bg_color", (void*) &lv_obj_set_style_bg_color, "", "(lv.lv_obj)(lv.lv_color)i" },
|
||||
{ "set_style_bg_color_filtered", (void*) &lv_obj_set_style_bg_color_filtered, "", "(lv.lv_obj)(lv.lv_color)i" },
|
||||
{ "set_style_bg_grad_color", (void*) &lv_obj_set_style_bg_grad_color, "", "(lv.lv_obj)(lv.lv_color)i" },
|
||||
{ "set_style_bg_grad_color_filtered", (void*) &lv_obj_set_style_bg_grad_color_filtered, "", "(lv.lv_obj)(lv.lv_color)i" },
|
||||
{ "set_style_bg_grad_dir", (void*) &lv_obj_set_style_bg_grad_dir, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_bg_grad_stop", (void*) &lv_obj_set_style_bg_grad_stop, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_bg_img_opa", (void*) &lv_obj_set_style_bg_img_opa, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_bg_img_recolor", (void*) &lv_obj_set_style_bg_img_recolor, "", "(lv.lv_obj)(lv.lv_color)i" },
|
||||
{ "set_style_bg_img_recolor_filtered", (void*) &lv_obj_set_style_bg_img_recolor_filtered, "", "(lv.lv_obj)(lv.lv_color)i" },
|
||||
{ "set_style_bg_img_recolor_opa", (void*) &lv_obj_set_style_bg_img_recolor_opa, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_bg_img_src", (void*) &lv_obj_set_style_bg_img_src, "", "(lv.lv_obj).i" },
|
||||
{ "set_style_bg_img_tiled", (void*) &lv_obj_set_style_bg_img_tiled, "", "(lv.lv_obj)bi" },
|
||||
{ "set_style_bg_main_stop", (void*) &lv_obj_set_style_bg_main_stop, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_bg_opa", (void*) &lv_obj_set_style_bg_opa, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_blend_mode", (void*) &lv_obj_set_style_blend_mode, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_border_color", (void*) &lv_obj_set_style_border_color, "", "(lv.lv_obj)(lv.lv_color)i" },
|
||||
{ "set_style_border_color_filtered", (void*) &lv_obj_set_style_border_color_filtered, "", "(lv.lv_obj)(lv.lv_color)i" },
|
||||
{ "set_style_border_opa", (void*) &lv_obj_set_style_border_opa, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_border_post", (void*) &lv_obj_set_style_border_post, "", "(lv.lv_obj)bi" },
|
||||
{ "set_style_border_side", (void*) &lv_obj_set_style_border_side, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_border_width", (void*) &lv_obj_set_style_border_width, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_clip_corner", (void*) &lv_obj_set_style_clip_corner, "", "(lv.lv_obj)bi" },
|
||||
{ "set_style_color_filter_dsc", (void*) &lv_obj_set_style_color_filter_dsc, "", "(lv.lv_obj)(lv.lv_color_filter_dsc)i" },
|
||||
{ "set_style_color_filter_opa", (void*) &lv_obj_set_style_color_filter_opa, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_height", (void*) &lv_obj_set_style_height, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_img_opa", (void*) &lv_obj_set_style_img_opa, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_img_recolor", (void*) &lv_obj_set_style_img_recolor, "", "(lv.lv_obj)(lv.lv_color)i" },
|
||||
{ "set_style_img_recolor_filtered", (void*) &lv_obj_set_style_img_recolor_filtered, "", "(lv.lv_obj)(lv.lv_color)i" },
|
||||
{ "set_style_img_recolor_opa", (void*) &lv_obj_set_style_img_recolor_opa, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_layout", (void*) &lv_obj_set_style_layout, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_line_color", (void*) &lv_obj_set_style_line_color, "", "(lv.lv_obj)(lv.lv_color)i" },
|
||||
{ "set_style_line_color_filtered", (void*) &lv_obj_set_style_line_color_filtered, "", "(lv.lv_obj)(lv.lv_color)i" },
|
||||
{ "set_style_line_dash_gap", (void*) &lv_obj_set_style_line_dash_gap, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_line_dash_width", (void*) &lv_obj_set_style_line_dash_width, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_line_opa", (void*) &lv_obj_set_style_line_opa, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_line_rounded", (void*) &lv_obj_set_style_line_rounded, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_line_width", (void*) &lv_obj_set_style_line_width, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_max_height", (void*) &lv_obj_set_style_max_height, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_max_width", (void*) &lv_obj_set_style_max_width, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_min_height", (void*) &lv_obj_set_style_min_height, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_min_width", (void*) &lv_obj_set_style_min_width, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_opa", (void*) &lv_obj_set_style_opa, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_outline_color", (void*) &lv_obj_set_style_outline_color, "", "(lv.lv_obj)(lv.lv_color)i" },
|
||||
{ "set_style_outline_color_filtered", (void*) &lv_obj_set_style_outline_color_filtered, "", "(lv.lv_obj)(lv.lv_color)i" },
|
||||
{ "set_style_outline_opa", (void*) &lv_obj_set_style_outline_opa, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_outline_pad", (void*) &lv_obj_set_style_outline_pad, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_outline_width", (void*) &lv_obj_set_style_outline_width, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_pad_all", (void*) &lv_obj_set_style_pad_all, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_pad_bottom", (void*) &lv_obj_set_style_pad_bottom, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_pad_column", (void*) &lv_obj_set_style_pad_column, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_pad_gap", (void*) &lv_obj_set_style_pad_gap, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_pad_hor", (void*) &lv_obj_set_style_pad_hor, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_pad_left", (void*) &lv_obj_set_style_pad_left, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_pad_right", (void*) &lv_obj_set_style_pad_right, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_pad_row", (void*) &lv_obj_set_style_pad_row, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_pad_top", (void*) &lv_obj_set_style_pad_top, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_pad_ver", (void*) &lv_obj_set_style_pad_ver, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_radius", (void*) &lv_obj_set_style_radius, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_shadow_color", (void*) &lv_obj_set_style_shadow_color, "", "(lv.lv_obj)(lv.lv_color)i" },
|
||||
{ "set_style_shadow_color_filtered", (void*) &lv_obj_set_style_shadow_color_filtered, "", "(lv.lv_obj)(lv.lv_color)i" },
|
||||
{ "set_style_shadow_ofs_x", (void*) &lv_obj_set_style_shadow_ofs_x, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_shadow_ofs_y", (void*) &lv_obj_set_style_shadow_ofs_y, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_shadow_opa", (void*) &lv_obj_set_style_shadow_opa, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_shadow_spread", (void*) &lv_obj_set_style_shadow_spread, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_shadow_width", (void*) &lv_obj_set_style_shadow_width, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_size", (void*) &lv_obj_set_style_size, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_text_align", (void*) &lv_obj_set_style_text_align, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_text_color", (void*) &lv_obj_set_style_text_color, "", "(lv.lv_obj)(lv.lv_color)i" },
|
||||
{ "set_style_text_color_filtered", (void*) &lv_obj_set_style_text_color_filtered, "", "(lv.lv_obj)(lv.lv_color)i" },
|
||||
{ "set_style_text_decor", (void*) &lv_obj_set_style_text_decor, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_text_font", (void*) &lv_obj_set_style_text_font, "", "(lv.lv_obj)(lv.lv_font)i" },
|
||||
{ "set_style_text_letter_space", (void*) &lv_obj_set_style_text_letter_space, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_text_line_space", (void*) &lv_obj_set_style_text_line_space, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_text_opa", (void*) &lv_obj_set_style_text_opa, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_transform_angle", (void*) &lv_obj_set_style_transform_angle, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_transform_height", (void*) &lv_obj_set_style_transform_height, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_transform_width", (void*) &lv_obj_set_style_transform_width, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_transform_zoom", (void*) &lv_obj_set_style_transform_zoom, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_transition", (void*) &lv_obj_set_style_transition, "", "(lv.lv_obj)(lv.lv_style_transition_dsc)i" },
|
||||
{ "set_style_translate_x", (void*) &lv_obj_set_style_translate_x, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_translate_y", (void*) &lv_obj_set_style_translate_y, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_width", (void*) &lv_obj_set_style_width, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_x", (void*) &lv_obj_set_style_x, "", "(lv.lv_obj)ii" },
|
||||
{ "set_style_y", (void*) &lv_obj_set_style_y, "", "(lv.lv_obj)ii" },
|
||||
{ "set_user_data", (void*) &lv_obj_set_user_data, "", "(lv.lv_obj)." },
|
||||
{ "set_width", (void*) &lv_obj_set_width, "", "(lv.lv_obj)i" },
|
||||
{ "set_x", (void*) &lv_obj_set_x, "", "(lv.lv_obj)i" },
|
||||
@ -592,6 +615,12 @@ const lvbe_call_c_t lv_spinbox_func[] = {
|
||||
};
|
||||
#endif // BE_LV_WIDGET_SPINBOX
|
||||
|
||||
/* `lv_spinner` methods */
|
||||
#ifdef BE_LV_WIDGET_SPINNER
|
||||
const lvbe_call_c_t lv_spinner_func[] = {
|
||||
};
|
||||
#endif // BE_LV_WIDGET_SPINNER
|
||||
|
||||
/* `lv_arc` methods */
|
||||
#ifdef BE_LV_WIDGET_ARC
|
||||
const lvbe_call_c_t lv_arc_func[] = {
|
||||
@ -847,6 +876,7 @@ extern const bclass be_class_lv_chart;
|
||||
extern const bclass be_class_lv_checkbox;
|
||||
extern const bclass be_class_lv_color;
|
||||
extern const bclass be_class_lv_colorwheel;
|
||||
extern const bclass be_class_lv_disp;
|
||||
extern const bclass be_class_lv_dropdown;
|
||||
extern const bclass be_class_lv_font;
|
||||
extern const bclass be_class_lv_group;
|
||||
@ -862,10 +892,12 @@ extern const bclass be_class_lv_obj;
|
||||
extern const bclass be_class_lv_roller;
|
||||
extern const bclass be_class_lv_slider;
|
||||
extern const bclass be_class_lv_spinbox;
|
||||
extern const bclass be_class_lv_spinner;
|
||||
extern const bclass be_class_lv_style;
|
||||
extern const bclass be_class_lv_switch;
|
||||
extern const bclass be_class_lv_table;
|
||||
extern const bclass be_class_lv_textarea;
|
||||
extern const bclass be_class_lv_theme;
|
||||
|
||||
|
||||
// map of clases
|
||||
@ -895,6 +927,7 @@ const lvbe_call_c_classes_t lv_classes[] = {
|
||||
#ifdef BE_LV_WIDGET_COLORWHEEL
|
||||
{ "lv_colorwheel", &be_class_lv_colorwheel, lv_colorwheel_func, sizeof(lv_colorwheel_func) / sizeof(lv_colorwheel_func[0]) },
|
||||
#endif // BE_LV_WIDGET_COLORWHEEL
|
||||
{ "lv_disp", &be_class_lv_disp, lv_disp_func, sizeof(lv_disp_func) / sizeof(lv_disp_func[0]) },
|
||||
#ifdef BE_LV_WIDGET_DROPDOWN
|
||||
{ "lv_dropdown", &be_class_lv_dropdown, lv_dropdown_func, sizeof(lv_dropdown_func) / sizeof(lv_dropdown_func[0]) },
|
||||
#endif // BE_LV_WIDGET_DROPDOWN
|
||||
@ -932,6 +965,9 @@ const lvbe_call_c_classes_t lv_classes[] = {
|
||||
#ifdef BE_LV_WIDGET_SPINBOX
|
||||
{ "lv_spinbox", &be_class_lv_spinbox, lv_spinbox_func, sizeof(lv_spinbox_func) / sizeof(lv_spinbox_func[0]) },
|
||||
#endif // BE_LV_WIDGET_SPINBOX
|
||||
#ifdef BE_LV_WIDGET_SPINNER
|
||||
{ "lv_spinner", &be_class_lv_spinner, lv_spinner_func, sizeof(lv_spinner_func) / sizeof(lv_spinner_func[0]) },
|
||||
#endif // BE_LV_WIDGET_SPINNER
|
||||
{ "lv_style", &be_class_lv_style, lv_style_func, sizeof(lv_style_func) / sizeof(lv_style_func[0]) },
|
||||
#ifdef BE_LV_WIDGET_SWITCH
|
||||
{ "lv_switch", &be_class_lv_switch, lv_switch_func, sizeof(lv_switch_func) / sizeof(lv_switch_func[0]) },
|
||||
@ -942,16 +978,19 @@ const lvbe_call_c_classes_t lv_classes[] = {
|
||||
#ifdef BE_LV_WIDGET_TEXTAREA
|
||||
{ "lv_textarea", &be_class_lv_textarea, lv_textarea_func, sizeof(lv_textarea_func) / sizeof(lv_textarea_func[0]) },
|
||||
#endif // BE_LV_WIDGET_TEXTAREA
|
||||
{ "lv_theme", &be_class_lv_theme, lv_theme_func, sizeof(lv_theme_func) / sizeof(lv_theme_func[0]) },
|
||||
};
|
||||
const size_t lv_classes_size = sizeof(lv_classes) / sizeof(lv_classes[0]);
|
||||
|
||||
/* `lv_style` methods */
|
||||
/* `lv_font` methods */
|
||||
/* `lv_color` methods */
|
||||
/* `lv_theme` methods */
|
||||
/* `lv_img` methods */
|
||||
#ifdef BE_LV_WIDGET_IMG
|
||||
int be_ntv_lv_img_init(bvm *vm) { return be_call_c_func(vm, (void*) &lv_img_create, "+lv.lv_img", "(lv.lv_obj)"); }
|
||||
#endif // BE_LV_WIDGET_IMG
|
||||
/* `lv_disp` methods */
|
||||
/* `lv_obj` methods */
|
||||
int be_ntv_lv_obj_init(bvm *vm) { return be_call_c_func(vm, (void*) &lv_obj_create, "+lv.lv_obj", "(lv.lv_obj)"); }
|
||||
/* `lv_group` methods */
|
||||
@ -985,6 +1024,10 @@ const size_t lv_classes_size = sizeof(lv_classes) / sizeof(lv_classes[0]);
|
||||
#ifdef BE_LV_WIDGET_SPINBOX
|
||||
int be_ntv_lv_spinbox_init(bvm *vm) { return be_call_c_func(vm, (void*) &lv_spinbox_create, "+lv.lv_spinbox", "(lv.lv_obj)"); }
|
||||
#endif // BE_LV_WIDGET_SPINBOX
|
||||
/* `lv_spinner` methods */
|
||||
#ifdef BE_LV_WIDGET_SPINNER
|
||||
int be_ntv_lv_spinner_init(bvm *vm) { return be_call_c_func(vm, (void*) &lv_spinner_create, "+lv.lv_spinner", "(lv.lv_obj)ii"); }
|
||||
#endif // BE_LV_WIDGET_SPINNER
|
||||
/* `lv_arc` methods */
|
||||
#ifdef BE_LV_WIDGET_ARC
|
||||
int be_ntv_lv_arc_init(bvm *vm) { return be_call_c_func(vm, (void*) &lv_arc_create, "+lv.lv_arc", "(lv.lv_obj)"); }
|
||||
@ -1043,7 +1086,8 @@ const size_t lv_classes_size = sizeof(lv_classes) / sizeof(lv_classes[0]);
|
||||
#endif // BE_LV_WIDGET_TEXTAREA
|
||||
|
||||
// create font either empty or from parameter on stack
|
||||
int lvbe_font_create(bvm *vm) { return be_call_c_func(vm, NULL, "+lv_group", ""); }
|
||||
int lvbe_font_create(bvm *vm) { return be_call_c_func(vm, NULL, "+lv_font", ""); }
|
||||
int lvbe_theme_create(bvm *vm) { return be_call_c_func(vm, NULL, "+lv_theme", ""); }
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
@ -138,7 +138,7 @@ e.g. "stm32f769xx.h" or "stm32f429xx.h"*/
|
||||
*-----------*/
|
||||
|
||||
/*Enable the log module*/
|
||||
#define LV_USE_LOG 1
|
||||
#define LV_USE_LOG 0
|
||||
#if LV_USE_LOG
|
||||
|
||||
/*How important log should be added:
|
||||
@ -148,7 +148,7 @@ e.g. "stm32f769xx.h" or "stm32f429xx.h"*/
|
||||
*LV_LOG_LEVEL_ERROR Only critical issue, when the system may fail
|
||||
*LV_LOG_LEVEL_USER Only logs added by the user
|
||||
*LV_LOG_LEVEL_NONE Do not log anything*/
|
||||
# define LV_LOG_LEVEL LV_LOG_LEVEL_ERROR
|
||||
# define LV_LOG_LEVEL LV_LOG_LEVEL_WARN
|
||||
|
||||
/*1: Print the log with 'printf';
|
||||
*0: User need to register a callback with `lv_log_register_print_cb()`*/
|
||||
@ -310,6 +310,33 @@ e.g. "stm32f769xx.h" or "stm32f429xx.h"*/
|
||||
LV_FONT_DECLARE(seg7_28) \
|
||||
LV_FONT_DECLARE(seg7_36) \
|
||||
LV_FONT_DECLARE(seg7_48) \
|
||||
LV_FONT_DECLARE(robotocondensed_regular_12_latin1) \
|
||||
LV_FONT_DECLARE(robotocondensed_regular_14_latin1) \
|
||||
LV_FONT_DECLARE(robotocondensed_regular_16_latin1) \
|
||||
LV_FONT_DECLARE(robotocondensed_regular_20_latin1) \
|
||||
LV_FONT_DECLARE(robotocondensed_regular_22_latin1) \
|
||||
LV_FONT_DECLARE(robotocondensed_regular_24_latin1) \
|
||||
LV_FONT_DECLARE(robotocondensed_regular_28_latin1) \
|
||||
LV_FONT_DECLARE(robotocondensed_regular_32_latin1) \
|
||||
LV_FONT_DECLARE(robotocondensed_regular_36_latin1) \
|
||||
LV_FONT_DECLARE(robotocondensed_regular_38_latin1) \
|
||||
LV_FONT_DECLARE(robotocondensed_regular_40_latin1) \
|
||||
LV_FONT_DECLARE(robotocondensed_regular_44_latin1) \
|
||||
LV_FONT_DECLARE(robotocondensed_regular_48_latin1) \
|
||||
|
||||
#define ROBOTOCONDENSED_REGULAR_12_LATIN1 1
|
||||
#define ROBOTOCONDENSED_REGULAR_14_LATIN1 1
|
||||
#define ROBOTOCONDENSED_REGULAR_16_LATIN1 1
|
||||
#define ROBOTOCONDENSED_REGULAR_20_LATIN1 0
|
||||
#define ROBOTOCONDENSED_REGULAR_22_LATIN1 0
|
||||
#define ROBOTOCONDENSED_REGULAR_24_LATIN1 1
|
||||
#define ROBOTOCONDENSED_REGULAR_28_LATIN1 0
|
||||
#define ROBOTOCONDENSED_REGULAR_32_LATIN1 1
|
||||
#define ROBOTOCONDENSED_REGULAR_36_LATIN1 0
|
||||
#define ROBOTOCONDENSED_REGULAR_38_LATIN1 0
|
||||
#define ROBOTOCONDENSED_REGULAR_40_LATIN1 0
|
||||
#define ROBOTOCONDENSED_REGULAR_44_LATIN1 0
|
||||
#define ROBOTOCONDENSED_REGULAR_48_LATIN1 0
|
||||
|
||||
/*Always set a default font*/
|
||||
#define LV_FONT_DEFAULT &lv_font_montserrat_14
|
||||
|
@ -1,524 +0,0 @@
|
||||
/**
|
||||
* @file lv_conf.h
|
||||
* Configuration file for v8.0.2
|
||||
*/
|
||||
|
||||
/*
|
||||
* COPY THIS FILE AS `lv_conf.h` NEXT TO the `lvgl` FOLDER
|
||||
*/
|
||||
|
||||
#if 0 /*Set it to "1" to enable content*/
|
||||
|
||||
#ifndef LV_CONF_H
|
||||
#define LV_CONF_H
|
||||
/*clang-format off*/
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
|
||||
/*====================
|
||||
COLOR SETTINGS
|
||||
*====================*/
|
||||
|
||||
/*Color depth: 1 (1 byte per pixel), 8 (RGB332), 16 (RGB565), 32 (ARGB8888)*/
|
||||
#define LV_COLOR_DEPTH 16
|
||||
|
||||
/*Swap the 2 bytes of RGB565 color. Useful if the display has a 8 bit interface (e.g. SPI)*/
|
||||
#define LV_COLOR_16_SWAP 1
|
||||
|
||||
/*Enable more complex drawing routines to manage screens transparency.
|
||||
*Can be used if the UI is above another layer, e.g. an OSD menu or video player.
|
||||
*Requires `LV_COLOR_DEPTH = 32` colors and the screen's `bg_opa` should be set to non LV_OPA_COVER value*/
|
||||
#define LV_COLOR_SCREEN_TRANSP 0
|
||||
|
||||
/*Images pixels with this color will not be drawn if they are chroma keyed)*/
|
||||
#define LV_COLOR_CHROMA_KEY lv_color_hex(0x00ff00) /*pure green*/
|
||||
|
||||
/*=========================
|
||||
MEMORY SETTINGS
|
||||
*=========================*/
|
||||
|
||||
/*1: use custom malloc/free, 0: use the built-in `lv_mem_alloc()` and `lv_mem_free()`*/
|
||||
#define LV_MEM_CUSTOM 1
|
||||
#if LV_MEM_CUSTOM == 0
|
||||
/*Size of the memory available for `lv_mem_alloc()` in bytes (>= 2kB)*/
|
||||
# define LV_MEM_SIZE (32U * 1024U) /*[bytes]*/
|
||||
|
||||
/*Set an address for the memory pool instead of allocating it as a normal array. Can be in external SRAM too.*/
|
||||
# define LV_MEM_ADR 0 /*0: unused*/
|
||||
#else /*LV_MEM_CUSTOM*/
|
||||
# define LV_MEM_CUSTOM_INCLUDE <tasmota_lv_stdlib.h> /*Header for the dynamic memory function*/
|
||||
# define LV_MEM_CUSTOM_ALLOC lvbe_malloc
|
||||
# define LV_MEM_CUSTOM_FREE lvbe_free
|
||||
# define LV_MEM_CUSTOM_REALLOC lvbe_realloc
|
||||
#endif /*LV_MEM_CUSTOM*/
|
||||
|
||||
/*Use the standard `memcpy` and `memset` instead of LVGL's own functions. (Might or might not be faster).*/
|
||||
#define LV_MEMCPY_MEMSET_STD 0
|
||||
|
||||
/*====================
|
||||
HAL SETTINGS
|
||||
*====================*/
|
||||
|
||||
/*Default display refresh period. LVG will redraw changed ares with this period time*/
|
||||
#define LV_DISP_DEF_REFR_PERIOD 30 /*[ms]*/
|
||||
|
||||
/*Input device read period in milliseconds*/
|
||||
#define LV_INDEV_DEF_READ_PERIOD 30 /*[ms]*/
|
||||
|
||||
/*Use a custom tick source that tells the elapsed time in milliseconds.
|
||||
*It removes the need to manually update the tick with `lv_tick_inc()`)*/
|
||||
#define LV_TICK_CUSTOM 0
|
||||
#if LV_TICK_CUSTOM
|
||||
#define LV_TICK_CUSTOM_INCLUDE "Arduino.h" /*Header for the system time function*/
|
||||
#define LV_TICK_CUSTOM_SYS_TIME_EXPR (millis()) /*Expression evaluating to current system time in ms*/
|
||||
#endif /*LV_TICK_CUSTOM*/
|
||||
|
||||
/*Default Dot Per Inch. Used to initialize default sizes such as widgets sized, style paddings.
|
||||
*(Not so important, you can adjust it to modify default sizes and spaces)*/
|
||||
#define LV_DPI_DEF 130 /*[px/inch]*/
|
||||
|
||||
/*=======================
|
||||
* FEATURE CONFIGURATION
|
||||
*=======================*/
|
||||
|
||||
/*-------------
|
||||
* Drawing
|
||||
*-----------*/
|
||||
|
||||
/*Enable complex draw engine.
|
||||
*Required to draw shadow, gradient, rounded corners, circles, arc, skew lines, image transformations or any masks*/
|
||||
#define LV_DRAW_COMPLEX 1
|
||||
#if LV_DRAW_COMPLEX != 0
|
||||
|
||||
/*Allow buffering some shadow calculation.
|
||||
*LV_SHADOW_CACHE_SIZE is the max. shadow size to buffer, where shadow size is `shadow_width + radius`
|
||||
*Caching has LV_SHADOW_CACHE_SIZE^2 RAM cost*/
|
||||
#define LV_SHADOW_CACHE_SIZE 0
|
||||
#endif /*LV_DRAW_COMPLEX*/
|
||||
|
||||
/*Default image cache size. Image caching keeps the images opened.
|
||||
*If only the built-in image formats are used there is no real advantage of caching. (I.e. if no new image decoder is added)
|
||||
*With complex image decoders (e.g. PNG or JPG) caching can save the continuous open/decode of images.
|
||||
*However the opened images might consume additional RAM.
|
||||
*0: to disable caching*/
|
||||
#define LV_IMG_CACHE_DEF_SIZE 1
|
||||
#define LV_IMG_CACHE_DEF_SIZE_PSRAM 20 // special Tasmota setting when PSRAM is used
|
||||
|
||||
/*Maximum buffer size to allocate for rotation. Only used if software rotation is enabled in the display driver.*/
|
||||
#define LV_DISP_ROT_MAX_BUF (10*1024)
|
||||
/*-------------
|
||||
* GPU
|
||||
*-----------*/
|
||||
|
||||
/*Use STM32's DMA2D (aka Chrom Art) GPU*/
|
||||
#define LV_USE_GPU_STM32_DMA2D 0
|
||||
#if LV_USE_GPU_STM32_DMA2D
|
||||
/*Must be defined to include path of CMSIS header of target processor
|
||||
e.g. "stm32f769xx.h" or "stm32f429xx.h"*/
|
||||
#define LV_GPU_DMA2D_CMSIS_INCLUDE
|
||||
#endif
|
||||
|
||||
/*Use NXP's PXP GPU iMX RTxxx platforms*/
|
||||
#define LV_USE_GPU_NXP_PXP 0
|
||||
#if LV_USE_GPU_NXP_PXP
|
||||
/*1: Add default bare metal and FreeRTOS interrupt handling routines for PXP (lv_gpu_nxp_pxp_osa.c)
|
||||
* and call lv_gpu_nxp_pxp_init() automatically during lv_init(). Note that symbol SDK_OS_FREE_RTOS
|
||||
* has to be defined in order to use FreeRTOS OSA, otherwise bare-metal implementation is selected.
|
||||
*0: lv_gpu_nxp_pxp_init() has to be called manually before lv_init()
|
||||
*/
|
||||
#define LV_USE_GPU_NXP_PXP_AUTO_INIT 0
|
||||
#endif
|
||||
|
||||
/*Use NXP's VG-Lite GPU iMX RTxxx platforms*/
|
||||
#define LV_USE_GPU_NXP_VG_LITE 0
|
||||
|
||||
/*-------------
|
||||
* Logging
|
||||
*-----------*/
|
||||
|
||||
/*Enable the log module*/
|
||||
#define LV_USE_LOG 1
|
||||
#if LV_USE_LOG
|
||||
|
||||
/*How important log should be added:
|
||||
*LV_LOG_LEVEL_TRACE A lot of logs to give detailed information
|
||||
*LV_LOG_LEVEL_INFO Log important events
|
||||
*LV_LOG_LEVEL_WARN Log if something unwanted happened but didn't cause a problem
|
||||
*LV_LOG_LEVEL_ERROR Only critical issue, when the system may fail
|
||||
*LV_LOG_LEVEL_USER Only logs added by the user
|
||||
*LV_LOG_LEVEL_NONE Do not log anything*/
|
||||
# define LV_LOG_LEVEL LV_LOG_LEVEL_ERROR
|
||||
|
||||
/*1: Print the log with 'printf';
|
||||
*0: User need to register a callback with `lv_log_register_print_cb()`*/
|
||||
# define LV_LOG_PRINTF 0
|
||||
|
||||
/*Enable/disable LV_LOG_TRACE in modules that produces a huge number of logs*/
|
||||
# define LV_LOG_TRACE_MEM 1
|
||||
# define LV_LOG_TRACE_TIMER 1
|
||||
# define LV_LOG_TRACE_INDEV 1
|
||||
# define LV_LOG_TRACE_DISP_REFR 1
|
||||
# define LV_LOG_TRACE_EVENT 1
|
||||
# define LV_LOG_TRACE_OBJ_CREATE 1
|
||||
# define LV_LOG_TRACE_LAYOUT 1
|
||||
# define LV_LOG_TRACE_ANIM 1
|
||||
|
||||
#endif /*LV_USE_LOG*/
|
||||
|
||||
/*-------------
|
||||
* Asserts
|
||||
*-----------*/
|
||||
|
||||
/*Enable asserts if an operation is failed or an invalid data is found.
|
||||
*If LV_USE_LOG is enabled an error message will be printed on failure*/
|
||||
#define LV_USE_ASSERT_NULL 1 /*Check if the parameter is NULL. (Very fast, recommended)*/
|
||||
#define LV_USE_ASSERT_MALLOC 1 /*Checks is the memory is successfully allocated or no. (Very fast, recommended)*/
|
||||
#define LV_USE_ASSERT_STYLE 0 /*Check if the styles are properly initialized. (Very fast, recommended)*/
|
||||
#define LV_USE_ASSERT_MEM_INTEGRITY 0 /*Check the integrity of `lv_mem` after critical operations. (Slow)*/
|
||||
#define LV_USE_ASSERT_OBJ 0 /*Check the object's type and existence (e.g. not deleted). (Slow)*/
|
||||
|
||||
/*Add a custom handler when assert happens e.g. to restart the MCU*/
|
||||
#define LV_ASSERT_HANDLER_INCLUDE <stdint.h>
|
||||
#define LV_ASSERT_HANDLER while(1); /*Halt by default*/
|
||||
|
||||
/*-------------
|
||||
* Others
|
||||
*-----------*/
|
||||
|
||||
/*1: Show CPU usage and FPS count in the right bottom corner*/
|
||||
#define LV_USE_PERF_MONITOR 0
|
||||
|
||||
/*1: Show the used memory and the memory fragmentation in the left bottom corner
|
||||
* Requires LV_MEM_CUSTOM = 0*/
|
||||
#define LV_USE_MEM_MONITOR 0
|
||||
|
||||
/*1: Draw random colored rectangles over the redrawn areas*/
|
||||
#define LV_USE_REFR_DEBUG 0
|
||||
|
||||
/*Change the built in (v)snprintf functions*/
|
||||
#define LV_SPRINTF_CUSTOM 0
|
||||
#if LV_SPRINTF_CUSTOM
|
||||
# define LV_SPRINTF_INCLUDE <stdio.h>
|
||||
# define lv_snprintf snprintf
|
||||
# define lv_vsnprintf vsnprintf
|
||||
#else /*LV_SPRINTF_CUSTOM*/
|
||||
# define LV_SPRINTF_USE_FLOAT 0
|
||||
#endif /*LV_SPRINTF_CUSTOM*/
|
||||
|
||||
#define LV_USE_USER_DATA 1
|
||||
|
||||
/*Garbage Collector settings
|
||||
*Used if lvgl is binded to higher level language and the memory is managed by that language*/
|
||||
#define LV_ENABLE_GC 0
|
||||
#if LV_ENABLE_GC != 0
|
||||
# define LV_GC_INCLUDE "gc.h" /*Include Garbage Collector related things*/
|
||||
#endif /*LV_ENABLE_GC*/
|
||||
|
||||
/*=====================
|
||||
* COMPILER SETTINGS
|
||||
*====================*/
|
||||
|
||||
/*For big endian systems set to 1*/
|
||||
#define LV_BIG_ENDIAN_SYSTEM 0
|
||||
|
||||
/*Define a custom attribute to `lv_tick_inc` function*/
|
||||
#define LV_ATTRIBUTE_TICK_INC
|
||||
|
||||
/*Define a custom attribute to `lv_timer_handler` function*/
|
||||
#define LV_ATTRIBUTE_TIMER_HANDLER
|
||||
|
||||
/*Define a custom attribute to `lv_disp_flush_ready` function*/
|
||||
#define LV_ATTRIBUTE_FLUSH_READY
|
||||
|
||||
/*Required alignment size for buffers*/
|
||||
#define LV_ATTRIBUTE_MEM_ALIGN_SIZE
|
||||
|
||||
/*Will be added where memories needs to be aligned (with -Os data might not be aligned to boundary by default).
|
||||
* E.g. __attribute__((aligned(4)))*/
|
||||
#define LV_ATTRIBUTE_MEM_ALIGN
|
||||
|
||||
/*Attribute to mark large constant arrays for example font's bitmaps*/
|
||||
#define LV_ATTRIBUTE_LARGE_CONST
|
||||
|
||||
/*Complier prefix for a big array declaration in RAM*/
|
||||
#define LV_ATTRIBUTE_LARGE_RAM_ARRAY
|
||||
|
||||
/*Place performance critical functions into a faster memory (e.g RAM)*/
|
||||
#define LV_ATTRIBUTE_FAST_MEM
|
||||
|
||||
/*Prefix variables that are used in GPU accelerated operations, often these need to be placed in RAM sections that are DMA accessible*/
|
||||
#define LV_ATTRIBUTE_DMA
|
||||
|
||||
/*Export integer constant to binding. This macro is used with constants in the form of LV_<CONST> that
|
||||
*should also appear on LVGL binding API such as Micropython.*/
|
||||
#define LV_EXPORT_CONST_INT(int_value) struct _silence_gcc_warning /*The default value just prevents GCC warning*/
|
||||
|
||||
/*Extend the default -32k..32k coordinate range to -4M..4M by using int32_t for coordinates instead of int16_t*/
|
||||
#define LV_USE_LARGE_COORD 0
|
||||
|
||||
/*==================
|
||||
* FONT USAGE
|
||||
*===================*/
|
||||
|
||||
/*Montserrat fonts with ASCII range and some symbols using bpp = 4
|
||||
*https://fonts.google.com/specimen/Montserrat*/
|
||||
#define LV_FONT_MONTSERRAT_8 0
|
||||
#define LV_FONT_MONTSERRAT_10 1
|
||||
#define LV_FONT_MONTSERRAT_12 0
|
||||
#define LV_FONT_MONTSERRAT_14 1
|
||||
#define LV_FONT_MONTSERRAT_16 0
|
||||
#define LV_FONT_MONTSERRAT_18 0
|
||||
#define LV_FONT_MONTSERRAT_20 1
|
||||
#define LV_FONT_MONTSERRAT_22 0
|
||||
#define LV_FONT_MONTSERRAT_24 0
|
||||
#define LV_FONT_MONTSERRAT_26 0
|
||||
#define LV_FONT_MONTSERRAT_28 0
|
||||
#define LV_FONT_MONTSERRAT_30 0
|
||||
#define LV_FONT_MONTSERRAT_32 0
|
||||
#define LV_FONT_MONTSERRAT_34 0
|
||||
#define LV_FONT_MONTSERRAT_36 0
|
||||
#define LV_FONT_MONTSERRAT_38 0
|
||||
#define LV_FONT_MONTSERRAT_40 0
|
||||
#define LV_FONT_MONTSERRAT_42 0
|
||||
#define LV_FONT_MONTSERRAT_44 0
|
||||
#define LV_FONT_MONTSERRAT_46 0
|
||||
#define LV_FONT_MONTSERRAT_48 0
|
||||
|
||||
/*Demonstrate special features*/
|
||||
#define LV_FONT_MONTSERRAT_12_SUBPX 0
|
||||
#define LV_FONT_MONTSERRAT_28_COMPRESSED 1 /*bpp = 3*/
|
||||
#define LV_FONT_DEJAVU_16_PERSIAN_HEBREW 0 /*Hebrew, Arabic, Perisan letters and all their forms*/
|
||||
#define LV_FONT_SIMSUN_16_CJK 0 /*1000 most common CJK radicals*/
|
||||
|
||||
/*Pixel perfect monospace fonts*/
|
||||
#define LV_FONT_UNSCII_8 1
|
||||
#define LV_FONT_UNSCII_16 1
|
||||
|
||||
/*Optionally declare custom fonts here.
|
||||
*You can use these fonts as default font too and they will be available globally.
|
||||
*E.g. #define LV_FONT_CUSTOM_DECLARE LV_FONT_DECLARE(my_font_1) LV_FONT_DECLARE(my_font_2)*/
|
||||
// Tasmota specific
|
||||
#define LV_FONT_CUSTOM_DECLARE LV_FONT_DECLARE(seg7_8) \
|
||||
LV_FONT_DECLARE(seg7_10) \
|
||||
LV_FONT_DECLARE(seg7_12) \
|
||||
LV_FONT_DECLARE(seg7_14) \
|
||||
LV_FONT_DECLARE(seg7_16) \
|
||||
LV_FONT_DECLARE(seg7_18) \
|
||||
LV_FONT_DECLARE(seg7_20) \
|
||||
LV_FONT_DECLARE(seg7_24) \
|
||||
LV_FONT_DECLARE(seg7_28) \
|
||||
LV_FONT_DECLARE(seg7_36) \
|
||||
LV_FONT_DECLARE(seg7_48) \
|
||||
|
||||
/*Always set a default font*/
|
||||
#define LV_FONT_DEFAULT &lv_font_montserrat_14
|
||||
|
||||
/*Enable handling large font and/or fonts with a lot of characters.
|
||||
*The limit depends on the font size, font face and bpp.
|
||||
*Compiler error will be triggered if a font needs it.*/
|
||||
#define LV_FONT_FMT_TXT_LARGE 0
|
||||
|
||||
/*Enables/disables support for compressed fonts.*/
|
||||
#define LV_USE_FONT_COMPRESSED 1
|
||||
|
||||
/*Enable subpixel rendering*/
|
||||
#define LV_USE_FONT_SUBPX 1
|
||||
#if LV_USE_FONT_SUBPX
|
||||
/*Set the pixel order of the display. Physical order of RGB channels. Doesn't matter with "normal" fonts.*/
|
||||
#define LV_FONT_SUBPX_BGR 0 /*0: RGB; 1:BGR order*/
|
||||
#endif
|
||||
|
||||
/*=================
|
||||
* TEXT SETTINGS
|
||||
*=================*/
|
||||
|
||||
/**
|
||||
* Select a character encoding for strings.
|
||||
* Your IDE or editor should have the same character encoding
|
||||
* - LV_TXT_ENC_UTF8
|
||||
* - LV_TXT_ENC_ASCII
|
||||
*/
|
||||
#define LV_TXT_ENC LV_TXT_ENC_UTF8
|
||||
|
||||
/*Can break (wrap) texts on these chars*/
|
||||
#define LV_TXT_BREAK_CHARS " ,.;:-_"
|
||||
|
||||
/*If a word is at least this long, will break wherever "prettiest"
|
||||
*To disable, set to a value <= 0*/
|
||||
#define LV_TXT_LINE_BREAK_LONG_LEN 0
|
||||
|
||||
/*Minimum number of characters in a long word to put on a line before a break.
|
||||
*Depends on LV_TXT_LINE_BREAK_LONG_LEN.*/
|
||||
#define LV_TXT_LINE_BREAK_LONG_PRE_MIN_LEN 3
|
||||
|
||||
/*Minimum number of characters in a long word to put on a line after a break.
|
||||
*Depends on LV_TXT_LINE_BREAK_LONG_LEN.*/
|
||||
#define LV_TXT_LINE_BREAK_LONG_POST_MIN_LEN 3
|
||||
|
||||
/*The control character to use for signalling text recoloring.*/
|
||||
#define LV_TXT_COLOR_CMD "#"
|
||||
|
||||
/*Support bidirectional texts. Allows mixing Left-to-Right and Right-to-Left texts.
|
||||
*The direction will be processed according to the Unicode Bidirectioanl Algorithm:
|
||||
*https://www.w3.org/International/articles/inline-bidi-markup/uba-basics*/
|
||||
#define LV_USE_BIDI 0
|
||||
#if LV_USE_BIDI
|
||||
/*Set the default direction. Supported values:
|
||||
*`LV_BASE_DIR_LTR` Left-to-Right
|
||||
*`LV_BASE_DIR_RTL` Right-to-Left
|
||||
*`LV_BASE_DIR_AUTO` detect texts base direction*/
|
||||
#define LV_BIDI_BASE_DIR_DEF LV_BASE_DIR_AUTO
|
||||
#endif
|
||||
|
||||
/*Enable Arabic/Persian processing
|
||||
*In these languages characters should be replaced with an other form based on their position in the text*/
|
||||
#define LV_USE_ARABIC_PERSIAN_CHARS 0
|
||||
|
||||
/*==================
|
||||
* WIDGET USAGE
|
||||
*================*/
|
||||
|
||||
/*Documentation of the widgets: https://docs.lvgl.io/latest/en/html/widgets/index.html*/
|
||||
|
||||
#define LV_USE_ARC 1
|
||||
|
||||
#define LV_USE_ANIMIMG 1
|
||||
|
||||
#define LV_USE_BAR 1
|
||||
|
||||
#define LV_USE_BTN 1
|
||||
|
||||
#define LV_USE_BTNMATRIX 1
|
||||
|
||||
#define LV_USE_CANVAS 1
|
||||
|
||||
#define LV_USE_CHECKBOX 1
|
||||
|
||||
|
||||
#define LV_USE_DROPDOWN 1 /*Requires: lv_label*/
|
||||
|
||||
#define LV_USE_IMG 1 /*Requires: lv_label*/
|
||||
|
||||
#define LV_USE_LABEL 1
|
||||
#if LV_USE_LABEL
|
||||
# define LV_LABEL_TEXT_SELECTION 1 /*Enable selecting text of the label*/
|
||||
# define LV_LABEL_LONG_TXT_HINT 1 /*Store some extra info in labels to speed up drawing of very long texts*/
|
||||
#endif
|
||||
|
||||
#define LV_USE_LINE 1
|
||||
|
||||
#define LV_USE_ROLLER 1 /*Requires: lv_label*/
|
||||
#if LV_USE_ROLLER
|
||||
# define LV_ROLLER_INF_PAGES 7 /*Number of extra "pages" when the roller is infinite*/
|
||||
#endif
|
||||
|
||||
#define LV_USE_SLIDER 1 /*Requires: lv_bar*/
|
||||
|
||||
#define LV_USE_SWITCH 1
|
||||
|
||||
#define LV_USE_TEXTAREA 1 /*Requires: lv_label*/
|
||||
#if LV_USE_TEXTAREA != 0
|
||||
# define LV_TEXTAREA_DEF_PWD_SHOW_TIME 1500 /*ms*/
|
||||
#endif
|
||||
|
||||
#define LV_USE_TABLE 1
|
||||
|
||||
/*==================
|
||||
* EXTRA COMPONENTS
|
||||
*==================*/
|
||||
|
||||
/*-----------
|
||||
* Widgets
|
||||
*----------*/
|
||||
#define LV_USE_CALENDAR 0
|
||||
#if LV_USE_CALENDAR
|
||||
# define LV_CALENDAR_WEEK_STARTS_MONDAY 0
|
||||
# if LV_CALENDAR_WEEK_STARTS_MONDAY
|
||||
# define LV_CALENDAR_DEFAULT_DAY_NAMES {"Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"}
|
||||
# else
|
||||
# define LV_CALENDAR_DEFAULT_DAY_NAMES {"Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"}
|
||||
# endif
|
||||
|
||||
# define LV_CALENDAR_DEFAULT_MONTH_NAMES {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}
|
||||
# define LV_USE_CALENDAR_HEADER_ARROW 1
|
||||
# define LV_USE_CALENDAR_HEADER_DROPDOWN 1
|
||||
#endif /*LV_USE_CALENDAR*/
|
||||
|
||||
#define LV_USE_CHART 1
|
||||
|
||||
#define LV_USE_COLORWHEEL 1
|
||||
|
||||
#define LV_USE_IMGBTN 1
|
||||
|
||||
#define LV_USE_KEYBOARD 0
|
||||
|
||||
#define LV_USE_LED 1
|
||||
|
||||
#define LV_USE_LIST 1
|
||||
|
||||
#define LV_USE_METER 1
|
||||
|
||||
#define LV_USE_MSGBOX 1
|
||||
|
||||
#define LV_USE_SPINBOX 1
|
||||
|
||||
#define LV_USE_SPINNER 1
|
||||
|
||||
#define LV_USE_TABVIEW 1
|
||||
|
||||
#define LV_USE_TILEVIEW 1
|
||||
|
||||
#define LV_USE_WIN 0
|
||||
|
||||
#define LV_USE_SPAN 1
|
||||
#if LV_USE_SPAN
|
||||
/*A line text can contain maximum num of span descriptor */
|
||||
# define LV_SPAN_SNIPPET_STACK_SIZE 64
|
||||
#endif
|
||||
|
||||
/*-----------
|
||||
* Themes
|
||||
*----------*/
|
||||
/*A simple, impressive and very complete theme*/
|
||||
#define LV_USE_THEME_DEFAULT 1
|
||||
#if LV_USE_THEME_DEFAULT
|
||||
|
||||
/*0: Light mode; 1: Dark mode*/
|
||||
# define LV_THEME_DEFAULT_DARK 0
|
||||
|
||||
/*1: Enable grow on press*/
|
||||
# define LV_THEME_DEFAULT_GROW 1
|
||||
|
||||
/*Default transition time in [ms]*/
|
||||
# define LV_THEME_DEFAULT_TRANSITON_TIME 80
|
||||
#endif /*LV_USE_THEME_DEFAULT*/
|
||||
|
||||
/*An very simple them that is a good starting point for a custom theme*/
|
||||
#define LV_USE_THEME_BASIC 1
|
||||
|
||||
/*A theme designed for monochrome displays*/
|
||||
#define LV_USE_THEME_MONO 1
|
||||
|
||||
/*-----------
|
||||
* Layouts
|
||||
*----------*/
|
||||
|
||||
/*A layout similar to Flexbox in CSS.*/
|
||||
#define LV_USE_FLEX 1
|
||||
|
||||
/*A layout similar to Grid in CSS.*/
|
||||
#define LV_USE_GRID 1
|
||||
|
||||
/*==================
|
||||
* EXAMPLES
|
||||
*==================*/
|
||||
|
||||
/*Enable the examples to be built with the library*/
|
||||
#define LV_BUILD_EXAMPLES 0
|
||||
|
||||
/*--END OF LV_CONF_H--*/
|
||||
|
||||
#endif /*LV_CONF_H*/
|
||||
|
||||
#endif /*End of "Content enable"*/
|
@ -1005,6 +1005,7 @@
|
||||
// -- LVGL Graphics Library ---------------------------------
|
||||
//#define USE_LVGL // LVGL Engine, requires Berry (+382KB)
|
||||
#define USE_LVGL_PSRAM // Allocate LVGL memory in PSRAM if PSRAM is connected - this might be slightly slower but leaves main memory intact
|
||||
#define USE_LVGL_OPENHASP // Enable OpenHASP template compatiblity (adds LVGL template and some fonts)
|
||||
#define USE_LVGL_MAX_SLEEP 10 // max sleep in ms when LVGL is enabled, more than 10ms will make display less responsive
|
||||
#define USE_LVGL_PNG_DECODER // include a PNG image decoder from file system (+16KB)
|
||||
//#define USE_LVGL_FREETYPE // Use the FreeType renderer to display fonts using native TTF files in file system (+77KB flash)
|
||||
@ -1039,6 +1040,7 @@
|
||||
#define BE_LV_WIDGET_METER
|
||||
#define BE_LV_WIDGET_MSGBOX
|
||||
#define BE_LV_WIDGET_SPINBOX
|
||||
#define BE_LV_WIDGET_SPINNER
|
||||
|
||||
#endif // ESP32
|
||||
|
||||
|
@ -1883,7 +1883,7 @@ void HandleMqttConfiguration(void)
|
||||
SettingsText(SET_MQTT_HOST),
|
||||
Settings->mqtt_port,
|
||||
#ifdef USE_MQTT_TLS
|
||||
Mqtt.mqtt_tls ? PSTR(" checked") : "", // SetOption102 - Enable MQTT TLS
|
||||
Mqtt.mqtt_tls ? PSTR(" checked") : "", // SetOption103 - Enable MQTT TLS
|
||||
#endif // USE_MQTT_TLS
|
||||
Format(str, PSTR(MQTT_CLIENT_ID), sizeof(str)), PSTR(MQTT_CLIENT_ID), SettingsText(SET_MQTT_CLIENT));
|
||||
WSContentSend_P(HTTP_FORM_MQTT2,
|
||||
@ -1905,8 +1905,8 @@ void MqttSaveSettings(void) {
|
||||
cmnd += AddWebCommand(PSTR(D_CMND_TOPIC), PSTR("mt"), PSTR("1"));
|
||||
cmnd += AddWebCommand(PSTR(D_CMND_FULLTOPIC), PSTR("mf"), PSTR("1"));
|
||||
#ifdef USE_MQTT_TLS
|
||||
cmnd += F(";" D_CMND_SO "102 ");
|
||||
cmnd += Webserver->hasArg(F("b3")); // SetOption102 - Enable MQTT TLS
|
||||
cmnd += F(";" D_CMND_SO "103 ");
|
||||
cmnd += Webserver->hasArg(F("b3")); // SetOption103 - Enable MQTT TLS
|
||||
#endif
|
||||
ExecuteWebCommand((char*)cmnd.c_str());
|
||||
}
|
||||
|
@ -163,7 +163,6 @@ void Script_ticker4_end(void) {
|
||||
|
||||
#if defined(USE_SML_M) && defined (USE_SML_SCRIPT_CMD)
|
||||
extern uint8_t sml_json_enable;
|
||||
extern uint8_t dvalid[SML_MAX_VARS];
|
||||
#endif
|
||||
|
||||
#if defined(EEP_SCRIPT_SIZE) && !defined(ESP32)
|
||||
@ -3171,15 +3170,7 @@ chknext:
|
||||
}
|
||||
if (!strncmp(vname, "smlv[", 5)) {
|
||||
lp = GetNumericArgument(lp + 5, OPER_EQU, &fvar, gv);
|
||||
if (!fvar) {
|
||||
for (uint8_t cnt = 0; cnt < SML_MAX_VARS; cnt++) {
|
||||
dvalid[cnt] = 0;
|
||||
}
|
||||
fvar = 0;
|
||||
} else {
|
||||
if (fvar < 1) fvar = 1;
|
||||
fvar = dvalid[(uint32_t)fvar - 1];
|
||||
}
|
||||
fvar = sml_getv(fvar);
|
||||
lp++;
|
||||
len = 0;
|
||||
goto exit;
|
||||
@ -5457,7 +5448,7 @@ void ScriptSaveSettings(void) {
|
||||
//
|
||||
uint32_t script_compress(char *dest, uint32_t size) {
|
||||
//AddLog(LOG_LEVEL_INFO,PSTR("in string: %s len = %d"),glob_script_mem.script_ram,strlen(glob_script_mem.script_ram));
|
||||
uint32_t len_compressed = SCRIPT_COMPRESS(glob_script_mem.script_ram, strlen(glob_script_mem.script_ram), dest, size);
|
||||
int32_t len_compressed = SCRIPT_COMPRESS(glob_script_mem.script_ram, strlen(glob_script_mem.script_ram), dest, size);
|
||||
if (len_compressed > 0) {
|
||||
dest[len_compressed] = 0;
|
||||
AddLog(LOG_LEVEL_INFO,PSTR("script compressed to %d bytes = %d %%"),len_compressed,len_compressed * 100 / strlen(glob_script_mem.script_ram));
|
||||
@ -8047,6 +8038,8 @@ int32_t lvgl_test(char **lpp, int32_t p) {
|
||||
lv_obj_t *obj;
|
||||
lv_obj_t *label;
|
||||
float xp, yp, xs, ys, min, max;
|
||||
lv_meter_scale_t * scale;
|
||||
lv_meter_indicator_t * indic;
|
||||
char str[SCRIPT_MAXSSIZE];
|
||||
int32_t res = 0;
|
||||
|
||||
@ -8119,6 +8112,10 @@ int32_t lvgl_test(char **lpp, int32_t p) {
|
||||
obj = lv_meter_create(lv_scr_act());
|
||||
lv_obj_set_pos(obj, xp, yp);
|
||||
lv_obj_set_size(obj, xs, ys);
|
||||
scale = lv_meter_add_scale(obj);
|
||||
/*Add a needle line indicator*/
|
||||
indic = lv_meter_add_needle_line(obj, scale, 4, lv_palette_main(LV_PALETTE_GREY), -10);
|
||||
|
||||
// lv_gauge_set_range(obj, min, max); // TODO LVGL8
|
||||
lvgl_StoreObj(obj);
|
||||
break;
|
||||
@ -8234,6 +8231,7 @@ void lvgl_setup(void) {
|
||||
lv_style_set_pad_right(&tab_background_style, 2);
|
||||
lv_style_set_pad_bottom(&tab_background_style, 0);
|
||||
// lv_obj_add_style(tabview, LV_TABVIEW_PART_TAB_BG, &tab_background_style); // LVGL8 TODO
|
||||
//lv_tabview_add_tab(tabview, LV_TABVIEW_PART_TAB_BG, &tab_background_style); // LVGL8 TODO
|
||||
|
||||
// Style for tabs. Active tab is white with opaque background, inactive
|
||||
// tabs are transparent so the background shows through (only the white
|
||||
|
@ -645,6 +645,70 @@ extern "C" {
|
||||
be_raise(vm, kTypeError, nullptr);
|
||||
}
|
||||
|
||||
int lv0_load_robotocondensed_latin1_font(bvm *vm) {
|
||||
#ifdef USE_LVGL_OPENHASP
|
||||
int argc = be_top(vm);
|
||||
if (argc == 1 && be_isint(vm, 1)) {
|
||||
const lv_font_t * font = nullptr;
|
||||
int32_t font_size = be_toindex(vm, 1);
|
||||
|
||||
switch (font_size) {
|
||||
#if ROBOTOCONDENSED_REGULAR_12_LATIN1
|
||||
case 12: font = &robotocondensed_regular_12_latin1; break;
|
||||
#endif
|
||||
#if ROBOTOCONDENSED_REGULAR_14_LATIN1
|
||||
case 14: font = &robotocondensed_regular_14_latin1; break;
|
||||
#endif
|
||||
#if ROBOTOCONDENSED_REGULAR_16_LATIN1
|
||||
case 16: font = &robotocondensed_regular_16_latin1; break;
|
||||
#endif
|
||||
#if ROBOTOCONDENSED_REGULAR_20_LATIN1
|
||||
case 20: font = &robotocondensed_regular_20_latin1; break;
|
||||
#endif
|
||||
#if ROBOTOCONDENSED_REGULAR_22_LATIN1
|
||||
case 22: font = &robotocondensed_regular_22_latin1; break;
|
||||
#endif
|
||||
#if ROBOTOCONDENSED_REGULAR_24_LATIN1
|
||||
case 24: font = &robotocondensed_regular_24_latin1; break;
|
||||
#endif
|
||||
#if ROBOTOCONDENSED_REGULAR_28_LATIN1
|
||||
case 28: font = &robotocondensed_regular_28_latin1; break;
|
||||
#endif
|
||||
#if ROBOTOCONDENSED_REGULAR_32_LATIN1
|
||||
case 32: font = &robotocondensed_regular_32_latin1; break;
|
||||
#endif
|
||||
#if ROBOTOCONDENSED_REGULAR_36_LATIN1
|
||||
case 36: font = &robotocondensed_regular_36_latin1; break;
|
||||
#endif
|
||||
#if ROBOTOCONDENSED_REGULAR_38_LATIN1
|
||||
case 38: font = &robotocondensed_regular_38_latin1; break;
|
||||
#endif
|
||||
#if ROBOTOCONDENSED_REGULAR_40_LATIN1
|
||||
case 40: font = &robotocondensed_regular_40_latin1; break;
|
||||
#endif
|
||||
#if ROBOTOCONDENSED_REGULAR_44_LATIN1
|
||||
case 44: font = &robotocondensed_regular_44_latin1; break;
|
||||
#endif
|
||||
#if ROBOTOCONDENSED_REGULAR_48_LATIN1
|
||||
case 48: font = &robotocondensed_regular_48_latin1; break;
|
||||
#endif
|
||||
default: break;
|
||||
}
|
||||
|
||||
if (font != nullptr) {
|
||||
be_find_class(vm, "lv.lv_font");
|
||||
be_pushcomptr(vm, (void*)font);
|
||||
be_call(vm, 1);
|
||||
be_pop(vm, 1);
|
||||
be_return(vm);
|
||||
} else {
|
||||
be_return_nil(vm);
|
||||
}
|
||||
}
|
||||
#endif // USE_LVGL_OPENHASP
|
||||
be_raise(vm, kTypeError, nullptr);
|
||||
}
|
||||
|
||||
#include "lvgl_berry/tasmota_logo_64_truecolor_alpha.h"
|
||||
|
||||
void lv_img_set_tasmota_logo(lv_obj_t * img) {
|
||||
|
@ -411,7 +411,7 @@ void start_lvgl(const char * uconfig) {
|
||||
|
||||
#ifdef USE_UFILESYS
|
||||
// Add file system mapping
|
||||
lv_fs_drv_t drv; // can be on heap, LVGL creates a copy
|
||||
static lv_fs_drv_t drv; // LVGL8, needs to be static and not on stack
|
||||
lv_fs_drv_init(&drv); /*Basic initialization*/
|
||||
|
||||
drv.letter = 'A'; /*An uppercase letter to identify the drive */
|
||||
|
@ -2620,6 +2620,18 @@ init10:
|
||||
|
||||
|
||||
#ifdef USE_SML_SCRIPT_CMD
|
||||
uint32_t sml_getv(uint32_t sel) {
|
||||
if (!sel) {
|
||||
for (uint8_t cnt = 0; cnt < SML_MAX_VARS; cnt++) {
|
||||
dvalid[cnt] = 0;
|
||||
}
|
||||
sel = 0;
|
||||
} else {
|
||||
if (sel < 1) sel = 1;
|
||||
sel = dvalid[sel - 1];
|
||||
}
|
||||
return sel;
|
||||
}
|
||||
uint32_t SML_SetBaud(uint32_t meter, uint32_t br) {
|
||||
if (meter<1 || meter>meters_used) return 0;
|
||||
meter--;
|
||||
|
@ -97,6 +97,7 @@ return_types = {
|
||||
"lv_img_src_t": "i",
|
||||
"lv_colorwheel_mode_t": "i",
|
||||
"lv_scr_load_anim_t": "i",
|
||||
"lv_style_selector_t": "i",
|
||||
|
||||
"_lv_event_dsc_t *": "i",
|
||||
|
||||
@ -117,6 +118,9 @@ return_types = {
|
||||
"lv_style_t *": "lv_style",
|
||||
"lv_group_t *": "lv_group",
|
||||
"lv_font_t *": "lv_font",
|
||||
"lv_theme_t *": "lv_theme",
|
||||
"lv_disp_t *": "lv_disp",
|
||||
"lv_indev_t *": "lv_indev",
|
||||
#"lv_disp_t*": "lv_disp",
|
||||
#"lv_style_list_t*": "",
|
||||
|
||||
@ -137,10 +141,11 @@ lv_cb_types = ['lv_group_focus_cb', 'lv_event_cb',
|
||||
]
|
||||
# list of callback types that will need each a separate C callback
|
||||
|
||||
# For LVGL8, need to add synthetic lv_style, lv_font, lv_color
|
||||
# For LVGL8, need to add synthetic lv_style, lv_font, lv_color, lv_theme
|
||||
lv['style'] = []
|
||||
lv['font'] = []
|
||||
lv['color'] = []
|
||||
lv['theme'] = []
|
||||
|
||||
# standard widgets
|
||||
lv_widgets = ['arc', 'bar', 'btn', 'btnmatrix', 'canvas', 'checkbox',
|
||||
@ -148,8 +153,8 @@ lv_widgets = ['arc', 'bar', 'btn', 'btnmatrix', 'canvas', 'checkbox',
|
||||
'switch', 'table', 'textarea' ]
|
||||
# extra widgets
|
||||
|
||||
lv_widgets = lv_widgets + [ 'chart', 'colorwheel', 'imgbtn', 'led', 'meter', 'msgbox', 'spinbox' ]
|
||||
lv_prefix = ['obj', 'group', 'style', 'indev', ] + lv_widgets
|
||||
lv_widgets = lv_widgets + [ 'chart', 'colorwheel', 'imgbtn', 'led', 'meter', 'msgbox', 'spinbox', 'spinner' ]
|
||||
lv_prefix = ['obj', 'group', 'style', 'indev', 'disp'] + lv_widgets
|
||||
|
||||
def try_int(s):
|
||||
try:
|
||||
@ -383,7 +388,8 @@ for subtype, flv in lv.items():
|
||||
|
||||
print("""
|
||||
// create font either empty or from parameter on stack
|
||||
int lvbe_font_create(bvm *vm) { return be_call_c_func(vm, NULL, "+lv_group", ""); }
|
||||
int lvbe_font_create(bvm *vm) { return be_call_c_func(vm, NULL, "+lv_font", ""); }
|
||||
int lvbe_theme_create(bvm *vm) { return be_call_c_func(vm, NULL, "+lv_theme", ""); }
|
||||
""")
|
||||
|
||||
print()
|
||||
@ -425,6 +431,7 @@ extern int lvs_tostring(bvm *vm);
|
||||
BE_EXPORT_VARIABLE extern const bclass be_class_lv_obj;
|
||||
|
||||
extern int lvbe_font_create(bvm *vm);
|
||||
extern int lvbe_theme_create(bvm *vm);
|
||||
|
||||
""")
|
||||
|
||||
@ -521,6 +528,23 @@ be_local_class(lv_indev,
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
/********************************************************************
|
||||
** Solidified class: lv_disp
|
||||
********************************************************************/
|
||||
be_local_class(lv_disp,
|
||||
1,
|
||||
NULL,
|
||||
be_nested_map(4,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_nested_key("init", 380752755, 4, -1), be_const_func(lv0_init) },
|
||||
{ be_nested_key("tostring", -1995258651, 8, -1), be_const_func(lvx_tostring) },
|
||||
{ be_nested_key("_p", 1594591802, 2, -1), be_const_var(0) },
|
||||
{ be_nested_key("member", 719708611, 6, 0), be_const_func(lvx_member) },
|
||||
})),
|
||||
(be_nested_const_str("lv_disp", 609712084, 8))
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
/********************************************************************
|
||||
** Solidified class: lv_font
|
||||
********************************************************************/
|
||||
@ -537,6 +561,22 @@ be_local_class(lv_font,
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
/********************************************************************
|
||||
** Solidified class: lv_theme
|
||||
********************************************************************/
|
||||
be_local_class(lv_theme,
|
||||
1,
|
||||
NULL,
|
||||
be_nested_map(3,
|
||||
( (struct bmapnode*) &(const bmapnode[]) {
|
||||
{ be_nested_key("init", 380752755, 4, -1), be_const_func(lvbe_theme_create) },
|
||||
{ be_nested_key("tostring", -1995258651, 8, -1), be_const_func(lvx_tostring) },
|
||||
{ be_nested_key("_p", 1594591802, 2, -1), be_const_var(0) },
|
||||
})),
|
||||
(be_nested_const_str("lv_theme", 1550958453, 7))
|
||||
);
|
||||
/*******************************************************************/
|
||||
|
||||
/********************************************************************
|
||||
** Solidified class: lv_color
|
||||
********************************************************************/
|
||||
@ -603,6 +643,7 @@ print("""/********************************************************************
|
||||
|
||||
#include "lvgl.h"
|
||||
#include "be_lvgl.h"
|
||||
#include "lv_theme_openhasp.h"
|
||||
|
||||
extern int lv0_member(bvm *vm); // resolve virtual members
|
||||
|
||||
@ -612,6 +653,7 @@ extern int lv0_register_button_encoder(bvm *vm); // add buttons with encoder lo
|
||||
|
||||
extern int lv0_load_montserrat_font(bvm *vm);
|
||||
extern int lv0_load_seg7_font(bvm *vm);
|
||||
extern int lv0_load_robotocondensed_latin1_font(bvm *vm);
|
||||
extern int lv0_load_font(bvm *vm);
|
||||
extern int lv0_load_freetype_font(bvm *vm);
|
||||
|
||||
@ -721,7 +763,7 @@ be_local_module(lv,
|
||||
{ be_nested_key("start", 1697318111, 5, 0), be_const_func(lv0_start) },
|
||||
}))
|
||||
);
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(lv, NULL);
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(lv);
|
||||
|
||||
#endif // USE_LVGL
|
||||
""")
|
||||
|
@ -6,6 +6,9 @@ register_button_encoder=&lv0_register_button_encoder
|
||||
|
||||
montserrat_font=&lv0_load_montserrat_font
|
||||
seg7_font=&lv0_load_seg7_font
|
||||
font_montserrat=&lv0_load_montserrat_font
|
||||
font_seg7=&lv0_load_seg7_font
|
||||
font_robotocondensed_latin1=&lv0_load_robotocondensed_latin1_font
|
||||
load_font=&lv0_load_font
|
||||
load_freetype_font=&lv0_load_freetype_font
|
||||
|
||||
|
@ -29,12 +29,26 @@ lv_coord_t lv_get_ver_res(void);
|
||||
|
||||
|
||||
// ../../lib/libesp32_lvgl/LVGL8/src/core/lv_disp.h
|
||||
lv_obj_t * lv_disp_get_scr_act(lv_disp_t * disp)
|
||||
lv_obj_t * lv_disp_get_scr_prev(lv_disp_t * disp)
|
||||
void lv_disp_load_scr(lv_obj_t * scr)
|
||||
lv_obj_t * lv_disp_get_layer_top(lv_disp_t * disp)
|
||||
lv_obj_t * lv_disp_get_layer_sys(lv_disp_t * disp)
|
||||
void lv_disp_set_theme(lv_disp_t * disp, lv_theme_t * th)
|
||||
lv_theme_t * lv_disp_get_theme(lv_disp_t * disp)
|
||||
void lv_disp_set_bg_color(lv_disp_t * disp, lv_color_t color)
|
||||
void lv_disp_set_bg_image(lv_disp_t * disp, const void * img_src)
|
||||
void lv_disp_set_bg_opa(lv_disp_t * disp, lv_opa_t opa)
|
||||
void lv_scr_load_anim(lv_obj_t * scr, lv_scr_load_anim_t anim_type, uint32_t time, uint32_t delay, bool auto_del)
|
||||
uint32_t lv_disp_get_inactive_time(const lv_disp_t * disp)
|
||||
void lv_disp_trig_activity(lv_disp_t * disp)
|
||||
void lv_disp_clean_dcache(lv_disp_t * disp)
|
||||
static inline lv_obj_t * lv_scr_act(void)
|
||||
static inline lv_obj_t * lv_layer_top(void)
|
||||
static inline lv_obj_t * lv_layer_sys(void)
|
||||
static inline void lv_scr_load(lv_obj_t * scr)
|
||||
static inline lv_coord_t lv_dpx(lv_coord_t n)
|
||||
static inline lv_coord_t lv_disp_dpx(const lv_disp_t * disp, lv_coord_t n)
|
||||
|
||||
// ../../lib/libesp32_lvgl/LVGL8/src/core/lv_event.h
|
||||
lv_res_t lv_event_send(struct _lv_obj_t * obj, lv_event_code_t event_code, void * param)
|
||||
@ -483,6 +497,10 @@ void lv_draw_polygon(const lv_point_t points[], uint16_t point_cnt, const lv_are
|
||||
|
||||
// ../../lib/libesp32_lvgl/LVGL8/src/draw/lv_img_decoder.h
|
||||
|
||||
// ../../lib/libesp32_lvgl/LVGL8/src/extra/themes/default/lv_theme_default.h
|
||||
lv_theme_t * lv_theme_default_init(lv_disp_t * disp, lv_color_t color_primary, lv_color_t color_secondary, bool dark, const lv_font_t * font)
|
||||
bool lv_theme_default_is_inited(void)
|
||||
|
||||
// ../../lib/libesp32_lvgl/LVGL8/src/extra/widgets/chart/lv_chart.h
|
||||
lv_obj_t * lv_chart_create(lv_obj_t * parent)
|
||||
void lv_chart_set_type(lv_obj_t * obj, lv_chart_type_t type)
|
||||
@ -583,6 +601,9 @@ void lv_spinbox_step_prev(lv_obj_t * obj)
|
||||
void lv_spinbox_increment(lv_obj_t * obj)
|
||||
void lv_spinbox_decrement(lv_obj_t * obj)
|
||||
|
||||
// ../../lib/libesp32_lvgl/LVGL8/src/extra/widgets/spinner/lv_spinner.h
|
||||
lv_obj_t * lv_spinner_create(lv_obj_t * parent, uint32_t time, uint32_t arc_length)
|
||||
|
||||
// ../../lib/libesp32_lvgl/LVGL8/src/misc/lv_style_gen.h
|
||||
void lv_style_set_width(lv_style_t * style, lv_coord_t value)
|
||||
void lv_style_set_min_width(lv_style_t * style, lv_coord_t value)
|
||||
@ -899,3 +920,7 @@ void lv_textarea_cursor_left(lv_obj_t * obj)
|
||||
void lv_textarea_cursor_down(lv_obj_t * obj)
|
||||
void lv_textarea_cursor_up(lv_obj_t * obj)
|
||||
|
||||
// ../../lib/libesp32_lvgl/LVGL_assets/src/lv_theme_openhasp.h
|
||||
lv_theme_t * lv_theme_openhasp_init(lv_disp_t * disp, lv_color_t color_primary, lv_color_t color_secondary, bool dark, const lv_font_t * font)
|
||||
bool lv_theme_openhasp_is_inited(void)
|
||||
|
||||
|
@ -59,6 +59,8 @@ lv_fun_globs = [
|
||||
"extra/widgets/meter/*.h",
|
||||
"extra/widgets/msgbox/*.h",
|
||||
"extra/widgets/spinbox/*.h",
|
||||
"extra/widgets/spinner/*.h",
|
||||
"extra/themes/default/*.h",
|
||||
"core/*.h",
|
||||
"draw/*.h",
|
||||
"misc/lv_style_gen.h",
|
||||
@ -66,6 +68,7 @@ lv_fun_globs = [
|
||||
#"**/*.h",
|
||||
]
|
||||
headers_names = list_files(lv_src_prefix, lv_fun_globs)
|
||||
headers_names += list_files("../../lib/libesp32_lvgl/LVGL_assets/src/", ["lv_theme_openhasp.h"])
|
||||
# headers_names += ["lv_pre_style.h"] # for LVGL v7, add pre-generated style functions from C preprocessor
|
||||
|
||||
# unit test
|
||||
@ -143,7 +146,7 @@ for header_name in headers_names:
|
||||
"^lv_templ_",
|
||||
"^lv_imgbtn_get_src_", # LV_IMGBTN_TILED == 0
|
||||
"^lv_imgbtn_set_src_tiled",# !LV_IMGBTN_TILED
|
||||
"^lv_disp_",
|
||||
#"^lv_disp_",
|
||||
"^lv_refr_get_fps_", # no LV_USE_PERF_MONITOR
|
||||
"^lv_img_cache_",
|
||||
"^lv_img_decoder_",
|
||||
@ -179,6 +182,9 @@ register_button_encoder=&lv0_register_button_encoder
|
||||
|
||||
montserrat_font=&lv0_load_montserrat_font
|
||||
seg7_font=&lv0_load_seg7_font
|
||||
font_montserrat=&lv0_load_montserrat_font
|
||||
font_seg7=&lv0_load_seg7_font
|
||||
font_robotocondensed_latin1=&lv0_load_robotocondensed_latin1_font
|
||||
load_font=&lv0_load_font
|
||||
load_freetype_font=&lv0_load_freetype_font
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user