mirror of https://github.com/arendst/Tasmota.git
Merge branch 'development' into teleinfo
This commit is contained in:
commit
e842ae3fb2
25
CHANGELOG.md
25
CHANGELOG.md
|
@ -3,15 +3,34 @@ All notable changes to this project will be documented in this file.
|
|||
|
||||
## [Unreleased] - Development
|
||||
|
||||
## [9.4.0.1]
|
||||
|
||||
## [9.4.0.3]
|
||||
### Added
|
||||
- Make Telegram command ``TmState`` persistent (#11965)
|
||||
- Add Zigbee firmware for Tube's Zigbee coordinator based on EFR32 and ESP32
|
||||
- Add Zigbee firmware 6.7.9 for Sonoff ZBBridge
|
||||
|
||||
## [9.4.0.2] 20210430
|
||||
### Added
|
||||
- Initial support for optional ``Template`` JSON fieldpair ``"CMND":"<any template related command>|<any template related command>|..."`` (#11788)
|
||||
- ESP32 pulldown buttons ``Button_d`` and ``Button_id`` and switches ``Switch_d`` (#10814)
|
||||
- Support for MQTT using Azure IoT Hub by Kevin Saye (#11906)
|
||||
|
||||
## [Released]
|
||||
|
||||
## [9.4.0] 20210422
|
||||
## [9.4.0] 20210423
|
||||
- Release Leslie
|
||||
|
||||
## [9.4.0.1] 20210423
|
||||
### Added
|
||||
- Command ``Wifi 0/1`` for ESP8266 to turn wifi Off and On. When wifi is Off it is always returned On after a restart except for a wake-up from deepsleep (#11839)
|
||||
|
||||
### Changed
|
||||
- Zigbee refactored storage for device configuration and device last known data (#11838)
|
||||
|
||||
### Fixed
|
||||
- Command ``Power`` should not reset pulsetime (#11805)
|
||||
- Teleperiod rule handling regression from v9.3.1.2 (#11851)
|
||||
|
||||
## [9.3.1.4] 20210422
|
||||
### Added
|
||||
- Command ``TuyaTempSetRes 0..3`` to control Tuya Temperature Set Resolution (#11781)
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
Alternative firmware for [ESP8266](https://en.wikipedia.org/wiki/ESP8266) and [ESP32](https://en.wikipedia.org/wiki/ESP32) based devices with **easy configuration using webUI, OTA updates, automation using timers or rules, expandability and entirely local control over MQTT, HTTP, Serial or KNX**.
|
||||
_Written for PlatformIO with limited support for Arduino IDE._
|
||||
|
||||
[![GitHub version](https://img.shields.io/github/release/arendst/Tasmota.svg)](https://github.com/arendst/Tasmota/releases/latest)
|
||||
[![GitHub version](https://img.shields.io/github/release/arendst/Tasmota.svg)](http://ota.tasmota.com/tasmota/release)
|
||||
[![GitHub download](https://img.shields.io/github/downloads/arendst/Tasmota/total.svg)](https://github.com/arendst/Tasmota/releases/latest)
|
||||
[![License](https://img.shields.io/github/license/arendst/Tasmota.svg)](LICENSE.txt)
|
||||
[![Chat](https://img.shields.io/discord/479389167382691863.svg)](https://discord.gg/Ks2Kzd4)
|
||||
|
@ -17,7 +17,7 @@ If you like **Tasmota**, give it a star, or fork it and contribute!
|
|||
|
||||
See [RELEASENOTES.md](https://github.com/arendst/Tasmota/blob/master/RELEASENOTES.md) for release information.
|
||||
|
||||
In addition to the [release webpage](https://github.com/arendst/Tasmota/releases/latest) the binaries can also be downloaded from http://ota.tasmota.com/tasmota/release/
|
||||
Firmware binaries can be downloaded from http://ota.tasmota.com/tasmota/release/ or http://ota.tasmota.com/tasmota32/release/ for ESP32 binaries.
|
||||
|
||||
## Development
|
||||
|
||||
|
@ -45,10 +45,10 @@ We don't take any responsibility nor liability for using this software nor for t
|
|||
|
||||
## Note
|
||||
|
||||
Please do not ask to add new devices unless it requires additional code for new features. If the device is not listed as a module, try using [Templates](https://tasmota.github.io/docs/Templates) first. If it is not listed in the [Tasmota Device Templates Repository](http://blakadder.github.io/templates) create your own [Template](https://tasmota.github.io/docs/Templates#creating-your-template).
|
||||
Please do not ask to add new devices unless it requires additional code for new features. If the device is not listed as a module, try using [Templates](https://tasmota.github.io/docs/Templates) first. If it is not listed in the [Tasmota Device Templates Repository](http://templates.blakadder.com) create your own [Template](https://tasmota.github.io/docs/Templates#creating-your-template).
|
||||
|
||||
## Quick Install
|
||||
Download one of the released binaries from https://github.com/arendst/Tasmota/releases and flash it to your hardware [using our installation guide](https://tasmota.github.io/docs/Getting-Started).
|
||||
Download one of the released binaries from http://ota.tasmota.com/tasmota/release/ or http://ota.tasmota.com/tasmota32/release/ and flash it to your hardware [using our installation guide](https://tasmota.github.io/docs/Getting-Started).
|
||||
|
||||
## Important User Compilation Information
|
||||
If you want to compile Tasmota yourself keep in mind the following:
|
||||
|
|
|
@ -55,7 +55,7 @@ The following binary downloads have been compiled with ESP8266/Arduino library c
|
|||
|
||||
Above binaries are also available as gzipped version allowing faster uploads.
|
||||
|
||||
The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota/release. The links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmota.com/tasmota/release/tasmota.bin.gz``
|
||||
The binaries can be downloaded from either https://github.com/arendst/Tasmota/tree/release-firmware or http://ota.tasmota.com/tasmota/release. The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmota.com/tasmota/release/tasmota.bin.gz``
|
||||
|
||||
### ESP32 based
|
||||
The following binary downloads have been compiled with ESP32/Arduino library core version **1.0.6**.
|
||||
|
@ -70,81 +70,24 @@ The following binary downloads have been compiled with ESP32/Arduino library cor
|
|||
- **tasmota32-odroidgo.bin** = The Odroid-Go version is specifically tailored to Odroid_go hardware.
|
||||
- **tasmota32-core2.bin** = The Core2 version is specifically tailored to M5Stack Core2 hardware.
|
||||
|
||||
The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota32/release. The links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmota.com/tasmota32/release/tasmota32.bin``
|
||||
The binaries can be downloaded from either https://github.com/arendst/Tasmota/tree/release-firmware or http://ota.tasmota.com/tasmota32/release. The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmota.com/tasmota32/release/tasmota32.bin``
|
||||
|
||||
[List](MODULES.md) of embedded modules.
|
||||
|
||||
[Complete list](BUILDS.md) of available feature and sensors.
|
||||
|
||||
## Changelog v9.4.0 Leslie
|
||||
## Changelog v9.4.0.2
|
||||
### Added
|
||||
- Command ``Sensor80 1 <0..7>`` to control MFRC522 RFID antenna gain from 18dB (0) to 48dB (7) [#11073](https://github.com/arendst/Tasmota/issues/11073)
|
||||
- Command ``SerialBuffer 256..520`` to change hardware serial receive buffer size from default (256) to max local buffer size (520) [#11448](https://github.com/arendst/Tasmota/issues/11448)
|
||||
- Command ``SetOption126 1`` to enable DS18x20 arithmetic mean over teleperiod for JSON temperature based on [#11472](https://github.com/arendst/Tasmota/issues/11472)
|
||||
- Command ``Backlog0`` to allow execution of following commands without delay
|
||||
- Command ``TuyaTempSetRes 0..3`` to control Tuya Temperature Set Resolution [#11781](https://github.com/arendst/Tasmota/issues/11781)
|
||||
- Commands ``MqttKeepAlive 1..100`` to set Mqtt Keep Alive timer (default 30) and ``MqttTimeout 1..100`` to set Mqtt Socket Timeout (default 4) [#5341](https://github.com/arendst/Tasmota/issues/5341)
|
||||
- Commands ``DisplayType`` to select sub-modules where implemented and ``DisplayInvert`` to select inverted display where implemented
|
||||
- Support for SML VBUS [#11125](https://github.com/arendst/Tasmota/issues/11125)
|
||||
- Support for NEC and OPTOMA LCD/DLP Projector serial power control by Jan Bubík [#11145](https://github.com/arendst/Tasmota/issues/11145)
|
||||
- Support for XPT2046 touch screen digitizer on ILI9341 display by nonix [#11159](https://github.com/arendst/Tasmota/issues/11159)
|
||||
- Support for zigbee lumi.sensor_wleak [#11200](https://github.com/arendst/Tasmota/issues/11200)
|
||||
- Support for dummy energy monitor using user values set by commands ``VoltageSet``, ``CurrentSet``, ``PowerSet`` and ``FrequencySet``. Enable by selecting any GPIO as ``Option A2`` [#10640](https://github.com/arendst/Tasmota/issues/10640)
|
||||
- Support for CSE7761 energy monitor as used in ESP32 based Sonoff Dual R3 Pow [#10793](https://github.com/arendst/Tasmota/issues/10793)
|
||||
- Support for Frequency monitoring and zero-cross detection on CSE7761 (Sonoff Dual R3)
|
||||
- Support for TM1638 seven segment display by Ajith Vasudevan [#11031](https://github.com/arendst/Tasmota/issues/11031)
|
||||
- Support for MAX7219 seven segment display by Ajith Vasudevan [#11387](https://github.com/arendst/Tasmota/issues/11387)
|
||||
- Support for MPU6886 on primary or secondary I2C bus
|
||||
- Support for multiple CCS811 sensors with baseline control (USE_CCS811_V2) by clanganke [#10858](https://github.com/arendst/Tasmota/issues/10858)
|
||||
- Allow MCP230xx pinmode from output to input [#11104](https://github.com/arendst/Tasmota/issues/11104)
|
||||
- Berry improvements [#11163](https://github.com/arendst/Tasmota/issues/11163)
|
||||
- Extent compile time SetOptions support [#11204](https://github.com/arendst/Tasmota/issues/11204)
|
||||
- Tasmota discovery as alternative to Home Assistant discovery using define ``USE_TASMOTA_DISCOVERY``
|
||||
- Optional GUI file editor enabled with define ``GUI_EDIT_FILE`` by barbudor [#11668](https://github.com/arendst/Tasmota/issues/11668)
|
||||
- Initial support for universal display driver UDisplay by Gerhard Mutz. Enable by selecting any GPIO as ``Option A3`` [#11665](https://github.com/arendst/Tasmota/issues/11665)
|
||||
- ESP32 Extent BLE [#11212](https://github.com/arendst/Tasmota/issues/11212)
|
||||
- ESP32 support for WS2812 hardware driver via RMT or I2S
|
||||
- ESP32 support for secondary I2C controller
|
||||
- ESP32 support for internal Hall Effect sensor connected to both GPIO36 and GPIO39 only
|
||||
- ESP32 support for LVGL 7.11 with Berry binding by Stephan Hadinger [#11789](https://github.com/arendst/Tasmota/issues/11789)
|
||||
- Initial support for optional ``Template`` JSON fieldpair ``"CMND":"<any template related command>|<any template related command>|..."`` [#11788](https://github.com/arendst/Tasmota/issues/11788)
|
||||
- ESP32 pulldown buttons ``Button_d`` and ``Button_id`` and switches ``Switch_d`` [#10814](https://github.com/arendst/Tasmota/issues/10814)
|
||||
- Support for MQTT using Azure IoT Hub by Kevin Saye [#11906](https://github.com/arendst/Tasmota/issues/11906)
|
||||
- Make Telegram command ``TmState`` persistent [#11965](https://github.com/arendst/Tasmota/issues/11965)
|
||||
|
||||
### Breaking Changed
|
||||
- ESP32 partition layout changed to accomodate more file space on most and more code space on core2 and odroid-go [#11746](https://github.com/arendst/Tasmota/issues/11746)
|
||||
|
||||
### Changed
|
||||
- TasmotaSerial library from v3.2.0 to v3.3.0
|
||||
- PubSubClient library from EspEasy v2.7.12 to Tasmota v2.8.12
|
||||
- IRremoteESP8266 library from v2.7.15 to v2.7.16
|
||||
- ESP32 core library from v1.0.5-rc6 to v1.0.6
|
||||
- TuyaMcu dimmer timeout [#11121](https://github.com/arendst/Tasmota/issues/11121)
|
||||
- Rename epaper 42 commands [#11222](https://github.com/arendst/Tasmota/issues/11222)
|
||||
- DeepSleep announcement topic [#11223](https://github.com/arendst/Tasmota/issues/11223)
|
||||
- Limit number of relay/button columns in GUI to 8 [#11546](https://github.com/arendst/Tasmota/issues/11546)
|
||||
- ADC range result from int to float using command ``FreqRes`` for decimal resolution selection [#11545](https://github.com/arendst/Tasmota/issues/11545)
|
||||
- Removed overtemp detection on external energy monitoring devices [#11628](https://github.com/arendst/Tasmota/issues/11628)
|
||||
- Redesigned initial GUI wifi configuration by Adrian Scillato [#11693](https://github.com/arendst/Tasmota/issues/11693)
|
||||
- Redesigned GUI by moving non-configuration buttons from ``Configuration`` to new submenu ``Consoles``
|
||||
- In tasmota-sensors.bin enabled support for VL53L0X and disabled TSL2561 [#11711](https://github.com/arendst/Tasmota/issues/11711)
|
||||
- Add HLW8012/BL0937 average pulse calculation by Alex Lovett [#11722](https://github.com/arendst/Tasmota/issues/11722)
|
||||
- ESP32 **tasmota32-knx**, **tasmota32-sensors** and **tasmota32-lite** binaries consolidated in **tasmota32.bin** binary
|
||||
|
||||
### Fixed
|
||||
- PN532 on ESP32 Serial flush both Tx and Rx buffers [#10910](https://github.com/arendst/Tasmota/issues/10910)
|
||||
- Light scheme related color changes [#11041](https://github.com/arendst/Tasmota/issues/11041)
|
||||
- Refactor acceleration function for shutter stepper and servo [#11088](https://github.com/arendst/Tasmota/issues/11088)
|
||||
- LM75AD detection on different addresses [#11096](https://github.com/arendst/Tasmota/issues/11096)
|
||||
- Timer loop when console is scrolled up regression from v9.3.0 [#11108](https://github.com/arendst/Tasmota/issues/11108)
|
||||
- Display exception when no file system is present [#11125](https://github.com/arendst/Tasmota/issues/11125)
|
||||
- Scripter and SML fixes [#11150](https://github.com/arendst/Tasmota/issues/11150)
|
||||
- Zigbee exception when bad frame is received [#11192](https://github.com/arendst/Tasmota/issues/11192)
|
||||
- ESP32 flash script for Odroid and Core2 [#11227](https://github.com/arendst/Tasmota/issues/11227)
|
||||
- ESP32 WS2812 bitbang support [#11248](https://github.com/arendst/Tasmota/issues/11248)
|
||||
- DS18x20 driver timing issue [#11270](https://github.com/arendst/Tasmota/issues/11270)
|
||||
- Alexa discovery in hue emulation [#11415](https://github.com/arendst/Tasmota/issues/11415)
|
||||
- HC-SR04 on ESP32 release serial interface if not used [#11507](https://github.com/arendst/Tasmota/issues/11507)
|
||||
- Alexa discovery for ZBBridge [#11576](https://github.com/arendst/Tasmota/issues/11576)
|
||||
- Telegram chat id incorrect size [#11660](https://github.com/arendst/Tasmota/issues/11660)
|
||||
- KNX energy yesterday [#11718](https://github.com/arendst/Tasmota/issues/11718)
|
||||
|
||||
### Noted
|
||||
- ESP32 single core **tasmota32solo1.bin** binary can only be uploaded using the GUI as OTA upload will trigger the watchdog timer
|
|
@ -2139,6 +2139,7 @@ Y09 {"NAME":"Y09","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0
|
|||
|
||||
## Zigbee Bridge
|
||||
```
|
||||
Sonoff ZBBridge {"NAME":"Sonoff ZbBridge","GPIO":[320,3552,0,3584,5312,0,0,0,640,576,608,0,32,0],"FLAG":0,"BASE":75}
|
||||
Tube's CC2652P2 Ethernet to {"NAME":"Tube ZB CC2652","GPIO":[0,0,0,3840,0,3584,0,0,0,0,0,0,5536,3552,5600,0,0,0,0,5568,0,0,0,0,0,0,0,0,3840,5792,0,0,0,0,0,0],"FLAG":0,"BASE":1}
|
||||
Sonoff ZBBridge {"NAME":"Sonoff ZbBridge","GPIO":[320,3552,0,3584,5312,5313,0,0,640,576,608,0,32,0],"FLAG":0,"BASE":75}
|
||||
Tube's CC2652P2 Ethernet {"NAME":"Tube ZB CC2652","GPIO":[0,0,0,3840,0,3584,0,0,0,0,0,0,5536,3552,5600,0,0,0,0,5568,0,0,0,0,0,0,0,0,3840,5792,0,0,0,0,0,0],"FLAG":0,"BASE":1}
|
||||
Tube's EFR32 Ethernet {"NAME":"Tube ZB EFR32","GPIO":[0,0,0,3840,0,3552,1,0,0,0,0,0,5536,3584,5600,0,0,0,0,5568,0,0,0,0,0,0,0,0,5793,5792,0,0,0,0,0,0],"FLAG":0,"BASE":1}
|
||||
```
|
||||
|
|
|
@ -72,6 +72,8 @@ void Adafruit_SH1106::DisplayInit(int8_t p,int8_t size,int8_t rot,int8_t font) {
|
|||
//fillScreen(BLACK);
|
||||
fillScreen(BLACK);
|
||||
Updateframe();
|
||||
|
||||
disp_bpp = -1;
|
||||
//}
|
||||
}
|
||||
|
||||
|
|
|
@ -604,6 +604,8 @@ void Adafruit_SSD1306::DisplayInit(int8_t p,int8_t size,int8_t rot,int8_t font)
|
|||
setCursor(0,0);
|
||||
fillScreen(BLACK);
|
||||
Updateframe();
|
||||
|
||||
disp_bpp = -1;
|
||||
//}
|
||||
}
|
||||
|
||||
|
|
|
@ -27,11 +27,7 @@
|
|||
#include <pgmspace.h>
|
||||
#include "renderer.h"
|
||||
|
||||
#define USE_EPD_FONTS
|
||||
//#define USE_ALL_EPD_FONTS
|
||||
//#define USE_GFX_FONTS
|
||||
#define USE_TINY_FONT
|
||||
#define USE_7SEG_FONT
|
||||
|
||||
|
||||
uint8_t wr_redir=0;
|
||||
|
||||
|
@ -43,13 +39,17 @@ uint8_t wr_redir=0;
|
|||
#define OLED_FONT_HEIGTH 8
|
||||
#define BLACK 0
|
||||
|
||||
Renderer::Renderer(int16_t x, int16_t y) :
|
||||
Adafruit_GFX(x, y) {
|
||||
#ifdef USE_GFX
|
||||
Renderer::Renderer(int16_t x, int16_t y) : Adafruit_GFX(x, y) {
|
||||
#else
|
||||
Renderer::Renderer(int16_t x, int16_t y) {
|
||||
#endif
|
||||
|
||||
font=0;
|
||||
#ifdef USE_EPD_FONTS
|
||||
selected_font = &Font12;
|
||||
#endif
|
||||
|
||||
disp_bpp = 16;
|
||||
}
|
||||
|
||||
uint16_t Renderer::GetColorFromIndex(uint8_t index) {
|
||||
|
@ -153,6 +153,13 @@ void Renderer::DrawStringAt(int16_t x, int16_t y, const char* text, uint16_t col
|
|||
int refcolumn = x;
|
||||
sFONT *xfont = selected_font;
|
||||
|
||||
/*
|
||||
if (font == 5 && !drawmode) {
|
||||
// clear bckground
|
||||
int16_t x1,y1;
|
||||
uint16_t w,h;
|
||||
Adafruit_GFX::getTextBounds(text, 0, 0, &x1, &y1, &w, &h);
|
||||
}*/
|
||||
#ifndef USE_EPD_FONTS
|
||||
font=0;
|
||||
#endif
|
||||
|
@ -297,13 +304,15 @@ void Renderer::setTextFont(uint8_t f) {
|
|||
|
||||
|
||||
void Renderer::SetRamfont(uint8_t *font) {
|
||||
|
||||
ramfont = (GFXfont*)font;
|
||||
if (font) {
|
||||
uint32_t bitmap_offset = (uint32_t)ramfont->bitmap;
|
||||
uint32_t glyph_offset = (uint32_t)ramfont->glyph;
|
||||
|
||||
ramfont->bitmap = (uint8_t*)((uint32_t)font + bitmap_offset);
|
||||
ramfont->glyph = (GFXglyph*)((uint32_t)font + glyph_offset);
|
||||
|
||||
}
|
||||
setFont(ramfont);
|
||||
}
|
||||
|
||||
|
@ -588,6 +597,40 @@ void Renderer::scrollTo(uint16_t y) {
|
|||
|
||||
}
|
||||
|
||||
void Renderer::SetPwrCB(pwr_cb cb) {
|
||||
|
||||
}
|
||||
void Renderer::SetDimCB(dim_cb cb) {
|
||||
|
||||
}
|
||||
|
||||
uint16_t Renderer::fgcol(void) {
|
||||
return 0;
|
||||
}
|
||||
uint16_t Renderer::bgcol(void) {
|
||||
return 0;
|
||||
}
|
||||
int8_t Renderer::color_type(void) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
void Renderer::Splash(void) {
|
||||
|
||||
}
|
||||
|
||||
const char dname[1] = {0};
|
||||
|
||||
char *Renderer::devname(void) {
|
||||
return (char*)dname;
|
||||
}
|
||||
|
||||
LVGL_PARAMS *Renderer::lvgl_pars(void) {
|
||||
return &lvgl_param;
|
||||
}
|
||||
|
||||
|
||||
#ifndef LVGL_RENDERER
|
||||
|
||||
void VButton::xdrawButton(bool inverted) {
|
||||
wr_redir=1;
|
||||
drawButton(inverted);
|
||||
|
@ -683,7 +726,7 @@ uint16_t VButton::UpdateSlider(int16_t x, int16_t y) {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
#endif // LVGL_RENDERER
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -9,15 +9,53 @@
|
|||
#define WHITE 1
|
||||
#define INVERSE 2
|
||||
|
||||
#define USE_EPD_FONTS
|
||||
//#define USE_ALL_EPD_FONTS
|
||||
//#define USE_GFX_FONTS
|
||||
#define USE_TINY_FONT
|
||||
#define USE_7SEG_FONT
|
||||
|
||||
#define MAX_INDEXCOLORS 32
|
||||
|
||||
//#define LVGL_RENDERER
|
||||
|
||||
#ifdef LVGL_RENDERER
|
||||
#undef USE_EPD_FONTS
|
||||
#endif
|
||||
|
||||
// depends on GFX driver
|
||||
// GFX patched
|
||||
// a. in class GFX setCursor,setTextSize => virtual
|
||||
// b. textcolor,textbgcolor => public;
|
||||
|
||||
typedef struct LVGL_PARAMS {
|
||||
uint16_t fluslines;
|
||||
union {
|
||||
uint8_t data;
|
||||
struct {
|
||||
uint8_t resvd_0 : 1;
|
||||
uint8_t resvd_1 : 1;
|
||||
uint8_t resvd_2 : 1;
|
||||
uint8_t resvd_3 : 1;
|
||||
uint8_t resvd_4 : 1;
|
||||
uint8_t resvd_5 : 1;
|
||||
uint8_t resvd_6 : 1;
|
||||
uint8_t use_dma : 1;
|
||||
};
|
||||
};
|
||||
}LVGL_PARAMS;
|
||||
|
||||
typedef void (*pwr_cb)(uint8_t);
|
||||
typedef void (*dim_cb)(uint8_t);
|
||||
|
||||
#define USE_GFX
|
||||
|
||||
#ifdef USE_GFX
|
||||
class Renderer : public Adafruit_GFX {
|
||||
#else
|
||||
class Renderer {
|
||||
#endif
|
||||
|
||||
//Paint(unsigned char* image, int width, int height);
|
||||
//~Renderer();
|
||||
public:
|
||||
|
@ -42,12 +80,24 @@ public:
|
|||
virtual void setScrollMargins(uint16_t top, uint16_t bottom);
|
||||
virtual void scrollTo(uint16_t y);
|
||||
virtual void TS_RotConvert(int16_t *x, int16_t *y);
|
||||
virtual void SetPwrCB(pwr_cb cb);
|
||||
virtual void SetDimCB(dim_cb cb);
|
||||
virtual uint16_t fgcol(void);
|
||||
virtual uint16_t bgcol(void);
|
||||
virtual int8_t color_type(void);
|
||||
virtual void Splash(void);
|
||||
virtual char *devname(void);
|
||||
virtual LVGL_PARAMS *lvgl_pars(void);
|
||||
|
||||
void setDrawMode(uint8_t mode);
|
||||
uint8_t drawmode;
|
||||
virtual void FastString(uint16_t x,uint16_t y,uint16_t tcolor, const char* str);
|
||||
void setTextSize(uint8_t s);
|
||||
virtual uint8_t *allocate_framebuffer(uint32_t size);
|
||||
pwr_cb pwr_cbp = 0;
|
||||
dim_cb dim_cbp = 0;
|
||||
LVGL_PARAMS lvgl_param;
|
||||
int8_t disp_bpp;
|
||||
private:
|
||||
void DrawCharAt(int16_t x, int16_t y, char ascii_char,int16_t colored);
|
||||
inline void drawFastVLineInternal(int16_t x, int16_t y, int16_t h, uint16_t color) __attribute__((always_inline));
|
||||
|
@ -84,6 +134,7 @@ struct Slider {
|
|||
uint16_t barcol;
|
||||
};
|
||||
|
||||
#ifndef LVGL_RENDERER
|
||||
class VButton : public Adafruit_GFX_Button {
|
||||
public:
|
||||
TButton_State vpower;
|
||||
|
@ -94,6 +145,7 @@ class VButton : public Adafruit_GFX_Button {
|
|||
uint16_t UpdateSlider(int16_t x, int16_t y);
|
||||
void SliderInit(Renderer *rend, uint16_t xp, uint16_t yp, uint16_t xs, uint16_t ys, uint16_t nelem, uint16_t bgcol, uint16_t frcol, uint16_t barcol);
|
||||
};
|
||||
#endif // LVGL_RENDERER
|
||||
|
||||
|
||||
#endif
|
||||
|
|
|
@ -74,6 +74,8 @@ void Epd::DisplayInit(int8_t p,int8_t size,int8_t rot,int8_t font) {
|
|||
setTextColor(WHITE,BLACK);
|
||||
setCursor(0,0);
|
||||
fillScreen(BLACK);
|
||||
|
||||
disp_bpp = 1;
|
||||
}
|
||||
|
||||
void Epd::Begin(int16_t cs,int16_t mosi,int16_t sclk) {
|
||||
|
|
|
@ -86,6 +86,8 @@ void Epd42::DisplayInit(int8_t p,int8_t size,int8_t rot,int8_t font) {
|
|||
setTextColor(WHITE,BLACK);
|
||||
setCursor(0,0);
|
||||
fillScreen(BLACK);
|
||||
|
||||
disp_bpp = 1;
|
||||
}
|
||||
|
||||
void Epd42::Begin(int16_t cs,int16_t mosi,int16_t sclk) {
|
||||
|
|
|
@ -530,7 +530,10 @@ void ili9342_bpwr(uint8_t on);
|
|||
void ILI9341_2::DisplayOnff(int8_t on) {
|
||||
|
||||
if ((_hwspi >= 2) && (_bp < 0)) {
|
||||
ili9342_bpwr(on);
|
||||
//ili9342_bpwr(on);
|
||||
if (pwr_cbp) {
|
||||
pwr_cbp(on);
|
||||
}
|
||||
}
|
||||
|
||||
if (on) {
|
||||
|
@ -604,7 +607,10 @@ void ILI9341_2::dim(uint8_t dim) {
|
|||
ledcWrite(ESP32_PWM_CHANNEL,dimmer);
|
||||
} else {
|
||||
if (_hwspi>=2) {
|
||||
ili9342_dimm(dim);
|
||||
//ili9342_dimm(dim);
|
||||
if (dim_cbp) {
|
||||
dim_cbp(dim);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
#include <Arduino.h>
|
||||
#include "uDisplay.h"
|
||||
|
||||
#define UDSP_DEBUG
|
||||
//#define UDSP_DEBUG
|
||||
|
||||
const uint16_t udisp_colors[]={UDISP_BLACK,UDISP_WHITE,UDISP_RED,UDISP_GREEN,UDISP_BLUE,UDISP_CYAN,UDISP_MAGENTA,\
|
||||
UDISP_YELLOW,UDISP_NAVY,UDISP_DARKGREEN,UDISP_DARKCYAN,UDISP_MAROON,UDISP_PURPLE,UDISP_OLIVE,\
|
||||
|
@ -31,6 +31,17 @@ uint16_t uDisplay::GetColorFromIndex(uint8_t index) {
|
|||
return udisp_colors[index];
|
||||
}
|
||||
|
||||
uint16_t uDisplay::fgcol(void) {
|
||||
return fg_col;
|
||||
}
|
||||
uint16_t uDisplay::bgcol(void) {
|
||||
return bg_col;
|
||||
}
|
||||
|
||||
int8_t uDisplay::color_type(void) {
|
||||
return col_type;
|
||||
}
|
||||
|
||||
|
||||
uDisplay::~uDisplay(void) {
|
||||
if (framebuffer) {
|
||||
|
@ -40,6 +51,8 @@ uDisplay::~uDisplay(void) {
|
|||
|
||||
uDisplay::uDisplay(char *lp) : Renderer(800, 600) {
|
||||
// analyse decriptor
|
||||
pwr_cbp = 0;
|
||||
dim_cbp = 0;
|
||||
framebuffer = 0;
|
||||
col_mode = 16;
|
||||
sa_mode = 16;
|
||||
|
@ -53,6 +66,9 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) {
|
|||
lutftime = 350;
|
||||
lut3time = 10;
|
||||
ep_mode = 0;
|
||||
fg_col = 1;
|
||||
bg_col = 0;
|
||||
splash_font = -1;
|
||||
allcmd_mode = 0;
|
||||
startline = 0xA1;
|
||||
uint8_t section = 0;
|
||||
|
@ -95,7 +111,7 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) {
|
|||
}
|
||||
if (*lp1 == ',') lp1++;
|
||||
}
|
||||
if (*lp1 != ':' && *lp1 != '\n') {
|
||||
if (*lp1 != ':' && *lp1 != '\n' && *lp1 != ' ') { // Add space char
|
||||
switch (section) {
|
||||
case 'H':
|
||||
// header line
|
||||
|
@ -106,7 +122,8 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) {
|
|||
setwidth(gxs);
|
||||
gys = next_val(&lp1);
|
||||
setheight(gys);
|
||||
bpp = next_val(&lp1);
|
||||
disp_bpp = next_val(&lp1);
|
||||
bpp = abs(disp_bpp);
|
||||
if (bpp == 1) {
|
||||
col_type = uCOLOR_BW;
|
||||
} else {
|
||||
|
@ -269,14 +286,23 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) {
|
|||
lutptime = next_val(&lp1);
|
||||
lut3time = next_val(&lp1);
|
||||
break;
|
||||
case 'B':
|
||||
lvgl_param.fluslines = next_val(&lp1);
|
||||
lvgl_param.use_dma = next_val(&lp1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (*lp == '\n') {
|
||||
if (*lp == '\n' || *lp == ' ') { // Add space char
|
||||
lp++;
|
||||
} else {
|
||||
lp = strchr(lp, '\n');
|
||||
if (!lp) break;
|
||||
if (!lp) {
|
||||
lp = strchr(lp, ' ');
|
||||
if (!lp) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
lp++;
|
||||
}
|
||||
}
|
||||
|
@ -348,15 +374,7 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) {
|
|||
|
||||
Renderer *uDisplay::Init(void) {
|
||||
|
||||
if (reset >= 0) {
|
||||
pinMode(reset, OUTPUT);
|
||||
digitalWrite(reset, HIGH);
|
||||
delay(50);
|
||||
digitalWrite(reset, LOW);
|
||||
delay(50);
|
||||
digitalWrite(reset, HIGH);
|
||||
delay(200);
|
||||
}
|
||||
|
||||
|
||||
if (interface == _UDSP_I2C) {
|
||||
if (wire_n == 0) {
|
||||
|
@ -441,9 +459,18 @@ Renderer *uDisplay::Init(void) {
|
|||
if (spi_nr == 1) {
|
||||
uspi = &SPI;
|
||||
uspi->begin(spi_clk, spi_miso, spi_mosi, -1);
|
||||
if (lvgl_param.use_dma) {
|
||||
spi_host = VSPI_HOST;
|
||||
initDMA(spi_cs);
|
||||
}
|
||||
|
||||
} else if (spi_nr == 2) {
|
||||
uspi = new SPIClass(HSPI);
|
||||
uspi->begin(spi_clk, spi_miso, spi_mosi, -1);
|
||||
if (lvgl_param.use_dma) {
|
||||
spi_host = HSPI_HOST;
|
||||
initDMA(spi_cs);
|
||||
}
|
||||
} else {
|
||||
pinMode(spi_clk, OUTPUT);
|
||||
digitalWrite(spi_clk, LOW);
|
||||
|
@ -452,6 +479,16 @@ Renderer *uDisplay::Init(void) {
|
|||
}
|
||||
#endif // ESP32
|
||||
|
||||
if (reset >= 0) {
|
||||
pinMode(reset, OUTPUT);
|
||||
digitalWrite(reset, HIGH);
|
||||
delay(50);
|
||||
digitalWrite(reset, LOW);
|
||||
delay(50);
|
||||
digitalWrite(reset, HIGH);
|
||||
delay(200);
|
||||
}
|
||||
|
||||
spiSettings = SPISettings((uint32_t)spi_speed*1000000, MSBFIRST, SPI_MODE3);
|
||||
|
||||
uint16_t index = 0;
|
||||
|
@ -483,9 +520,20 @@ Renderer *uDisplay::Init(void) {
|
|||
#ifdef UDSP_DEBUG
|
||||
Serial.printf("\n");
|
||||
#endif
|
||||
if (args & 0x80) {
|
||||
if (args&0x60) delay(500);
|
||||
else delay(150);
|
||||
if (args & 0x80) { // delay after the command
|
||||
uint32_t delay_ms = 0;
|
||||
switch (args & 0xE0) {
|
||||
case 0x80: delay_ms = 150; break;
|
||||
case 0xA0: delay_ms = 10; break;
|
||||
case 0xE0: delay_ms = 500; break;
|
||||
}
|
||||
if (delay_ms > 0) {
|
||||
delay(delay_ms);
|
||||
#ifdef UDSP_DEBUG
|
||||
Serial.printf("delay %d ms\n", delay_ms);
|
||||
#endif
|
||||
}
|
||||
|
||||
}
|
||||
if (index >= dsp_ncmds) break;
|
||||
}
|
||||
|
@ -533,8 +581,10 @@ void uDisplay::DisplayInit(int8_t p, int8_t size, int8_t rot, int8_t font) {
|
|||
setTextSize(size);
|
||||
setTextColor(fg_col, bg_col);
|
||||
setCursor(0,0);
|
||||
if (splash_font >= 0) {
|
||||
fillScreen(bg_col);
|
||||
Updateframe();
|
||||
}
|
||||
|
||||
#ifdef UDSP_DEBUG
|
||||
Serial.printf("Dsp Init complete \n");
|
||||
|
@ -899,6 +949,9 @@ for(y=h; y>0; y--) {
|
|||
|
||||
|
||||
void uDisplay::Splash(void) {
|
||||
|
||||
if (splash_font < 0) return;
|
||||
|
||||
if (ep_mode) {
|
||||
Updateframe();
|
||||
delay(lut3time * 10);
|
||||
|
@ -911,12 +964,27 @@ void uDisplay::Splash(void) {
|
|||
|
||||
void uDisplay::setAddrWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) {
|
||||
|
||||
if (bpp != 16) {
|
||||
// just save params or update frame
|
||||
if (!x0 && !y0 && !x1 && !y1) {
|
||||
if (!ep_mode) {
|
||||
Updateframe();
|
||||
}
|
||||
} else {
|
||||
seta_xp1 = x0;
|
||||
seta_xp2 = x1;
|
||||
seta_yp1 = y0;
|
||||
seta_yp2 = y1;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (!x0 && !y0 && !x1 && !y1) {
|
||||
SPI_CS_HIGH
|
||||
SPI_END_TRANSACTION
|
||||
} else {
|
||||
SPI_CS_LOW
|
||||
SPI_BEGIN_TRANSACTION
|
||||
SPI_CS_LOW
|
||||
setAddrWindow_int(x0, y0, x1 - x0, y1 - y0 );
|
||||
}
|
||||
}
|
||||
|
@ -971,14 +1039,95 @@ void uDisplay::setAddrWindow_int(uint16_t x, uint16_t y, uint16_t w, uint16_t h)
|
|||
}
|
||||
|
||||
|
||||
void uDisplay::pushColors(uint16_t *data, uint16_t len, boolean first) {
|
||||
uint16_t color;
|
||||
|
||||
while (len--) {
|
||||
color = *data++;
|
||||
WriteColor(color);
|
||||
#define CNV_B1_OR ((0x10<<11) | (0x20<<5) | 0x10)
|
||||
static inline uint8_t ulv_color_to1(uint16_t color) {
|
||||
if (color & CNV_B1_OR) {
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
return 0;
|
||||
}
|
||||
/*
|
||||
// this needs optimization
|
||||
if (((color>>11) & 0x10) || ((color>>5) & 0x20) || (color & 0x10)) {
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
return 0;
|
||||
}*/
|
||||
}
|
||||
|
||||
// convert to mono, these are framebuffer based
|
||||
void uDisplay::pushColorsMono(uint16_t *data, uint16_t len) {
|
||||
for (uint32_t y = seta_yp1; y < seta_yp2; y++) {
|
||||
for (uint32_t x = seta_xp1; x < seta_xp2; x++) {
|
||||
uint16_t color = *data++;
|
||||
if (bpp == 1) color = ulv_color_to1(color);
|
||||
drawPixel(x, y, color);
|
||||
len--;
|
||||
if (!len) return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// swap high low byte
|
||||
static inline void lvgl_color_swap(uint16_t *data, uint16_t len) { for (uint32_t i = 0; i < len; i++) (data[i] = data[i] << 8 | data[i] >> 8); }
|
||||
|
||||
void uDisplay::pushColors(uint16_t *data, uint16_t len, boolean not_swapped) {
|
||||
uint16_t color;
|
||||
|
||||
//Serial.printf("push %x - %d\n", (uint32_t)data, len);
|
||||
if (not_swapped == false) {
|
||||
// called from LVGL bytes are swapped
|
||||
if (bpp != 16) {
|
||||
lvgl_color_swap(data, len);
|
||||
pushColorsMono(data, len);
|
||||
return;
|
||||
}
|
||||
|
||||
if ( (col_mode != 18) && (spi_dc >= 0) && (spi_nr <= 2) ) {
|
||||
// special version 8 bit spi I or II
|
||||
#ifdef ESP8266
|
||||
lvgl_color_swap(data, len);
|
||||
while (len--) {
|
||||
uspi->write(*data++);
|
||||
}
|
||||
#else
|
||||
if (lvgl_param.use_dma) {
|
||||
pushPixelsDMA(data, len );
|
||||
} else {
|
||||
uspi->writeBytes((uint8_t*)data, len * 2);
|
||||
}
|
||||
#endif
|
||||
} else {
|
||||
// 9 bit and others
|
||||
lvgl_color_swap(data, len);
|
||||
while (len--) {
|
||||
WriteColor(*data++);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// called from displaytext, no byte swap, currently no dma here
|
||||
if (bpp != 16) {
|
||||
pushColorsMono(data, len);
|
||||
return;
|
||||
}
|
||||
if ( (col_mode != 18) && (spi_dc >= 0) && (spi_nr <= 2) ) {
|
||||
// special version 8 bit spi I or II
|
||||
#ifdef ESP8266
|
||||
while (len--) {
|
||||
uspi->write(*data++);
|
||||
}
|
||||
#else
|
||||
uspi->writePixels(data, len * 2);
|
||||
#endif
|
||||
} else {
|
||||
// 9 bit and others
|
||||
while (len--) {
|
||||
WriteColor(*data++);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void uDisplay::WriteColor(uint16_t color) {
|
||||
|
@ -1092,7 +1241,11 @@ void uDisplay::DisplayOnff(int8_t on) {
|
|||
return;
|
||||
}
|
||||
|
||||
udisp_bpwr(on);
|
||||
if (pwr_cbp) {
|
||||
pwr_cbp(on);
|
||||
}
|
||||
|
||||
// udisp_bpwr(on);
|
||||
|
||||
if (interface == _UDSP_I2C) {
|
||||
if (on) {
|
||||
|
@ -1162,7 +1315,10 @@ void uDisplay::dim(uint8_t dim) {
|
|||
if (bpanel >= 0) {
|
||||
ledcWrite(ESP32_PWM_CHANNEL, dimmer);
|
||||
} else {
|
||||
udisp_dimm(dim);
|
||||
//udisp_dimm(dim);
|
||||
if (dim_cbp) {
|
||||
dim_cbp(dim);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -1203,7 +1359,7 @@ void uDisplay::TS_RotConvert(int16_t *x, int16_t *y) {
|
|||
|
||||
uint8_t uDisplay::strlen_ln(char *str) {
|
||||
for (uint32_t cnt = 0; cnt < 256; cnt++) {
|
||||
if (!str[cnt] || str[cnt] == '\n') return cnt;
|
||||
if (!str[cnt] || str[cnt] == '\n' || str[cnt] == ' ') return cnt;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -1684,3 +1840,159 @@ void uDisplay::drawFastHLine_EPD(int16_t x, int16_t y, int16_t w, uint16_t color
|
|||
x++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void uDisplay::beginTransaction(SPISettings s) {
|
||||
#ifdef ESP32
|
||||
if (lvgl_param.use_dma) {
|
||||
dmaWait();
|
||||
} else {
|
||||
uspi->beginTransaction(s);
|
||||
}
|
||||
#else
|
||||
uspi->beginTransaction(s);
|
||||
#endif
|
||||
}
|
||||
|
||||
void uDisplay::endTransaction(void) {
|
||||
#ifdef ESP32
|
||||
if (lvgl_param.use_dma) {
|
||||
dmaBusy();
|
||||
} else {
|
||||
uspi->endTransaction();
|
||||
}
|
||||
#else
|
||||
uspi->endTransaction();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
// ESP 32 DMA section , derived from TFT_eSPI
|
||||
#ifdef ESP32
|
||||
|
||||
/***************************************************************************************
|
||||
** Function name: initDMA
|
||||
** Description: Initialise the DMA engine - returns true if init OK
|
||||
***************************************************************************************/
|
||||
bool uDisplay::initDMA(bool ctrl_cs)
|
||||
{
|
||||
if (DMA_Enabled) return false;
|
||||
|
||||
esp_err_t ret;
|
||||
spi_bus_config_t buscfg = {
|
||||
.mosi_io_num = spi_mosi,
|
||||
.miso_io_num = -1,
|
||||
.sclk_io_num = spi_clk,
|
||||
.quadwp_io_num = -1,
|
||||
.quadhd_io_num = -1,
|
||||
.max_transfer_sz = width() * height() * 2 + 8, // TFT screen size
|
||||
.flags = 0,
|
||||
.intr_flags = 0
|
||||
};
|
||||
|
||||
int8_t pin = -1;
|
||||
if (ctrl_cs) pin = spi_cs;
|
||||
|
||||
spi_device_interface_config_t devcfg = {
|
||||
.command_bits = 0,
|
||||
.address_bits = 0,
|
||||
.dummy_bits = 0,
|
||||
.mode = SPI_MODE3,
|
||||
.duty_cycle_pos = 0,
|
||||
.cs_ena_pretrans = 0,
|
||||
.cs_ena_posttrans = 0,
|
||||
.clock_speed_hz = spi_speed*1000000,
|
||||
.input_delay_ns = 0,
|
||||
.spics_io_num = pin,
|
||||
.flags = SPI_DEVICE_NO_DUMMY, //0,
|
||||
.queue_size = 1,
|
||||
.pre_cb = 0, //dc_callback, //Callback to handle D/C line
|
||||
.post_cb = 0
|
||||
};
|
||||
ret = spi_bus_initialize(spi_host, &buscfg, 1);
|
||||
ESP_ERROR_CHECK(ret);
|
||||
ret = spi_bus_add_device(spi_host, &devcfg, &dmaHAL);
|
||||
ESP_ERROR_CHECK(ret);
|
||||
|
||||
DMA_Enabled = true;
|
||||
spiBusyCheck = 0;
|
||||
return true;
|
||||
}
|
||||
|
||||
/***************************************************************************************
|
||||
** Function name: deInitDMA
|
||||
** Description: Disconnect the DMA engine from SPI
|
||||
***************************************************************************************/
|
||||
void uDisplay::deInitDMA(void) {
|
||||
if (!DMA_Enabled) return;
|
||||
spi_bus_remove_device(dmaHAL);
|
||||
spi_bus_free(spi_host);
|
||||
DMA_Enabled = false;
|
||||
}
|
||||
|
||||
/***************************************************************************************
|
||||
** Function name: dmaBusy
|
||||
** Description: Check if DMA is busy
|
||||
***************************************************************************************/
|
||||
bool uDisplay::dmaBusy(void) {
|
||||
if (!DMA_Enabled || !spiBusyCheck) return false;
|
||||
|
||||
spi_transaction_t *rtrans;
|
||||
esp_err_t ret;
|
||||
uint8_t checks = spiBusyCheck;
|
||||
for (int i = 0; i < checks; ++i) {
|
||||
ret = spi_device_get_trans_result(dmaHAL, &rtrans, 0);
|
||||
if (ret == ESP_OK) spiBusyCheck--;
|
||||
}
|
||||
|
||||
//Serial.print("spiBusyCheck=");Serial.println(spiBusyCheck);
|
||||
if (spiBusyCheck == 0) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************************
|
||||
** Function name: dmaWait
|
||||
** Description: Wait until DMA is over (blocking!)
|
||||
***************************************************************************************/
|
||||
void uDisplay::dmaWait(void) {
|
||||
if (!DMA_Enabled || !spiBusyCheck) return;
|
||||
spi_transaction_t *rtrans;
|
||||
esp_err_t ret;
|
||||
for (int i = 0; i < spiBusyCheck; ++i) {
|
||||
ret = spi_device_get_trans_result(dmaHAL, &rtrans, portMAX_DELAY);
|
||||
assert(ret == ESP_OK);
|
||||
}
|
||||
spiBusyCheck = 0;
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************************
|
||||
** Function name: pushPixelsDMA
|
||||
** Description: Push pixels to TFT (len must be less than 32767)
|
||||
***************************************************************************************/
|
||||
// This will byte swap the original image if setSwapBytes(true) was called by sketch.
|
||||
void uDisplay::pushPixelsDMA(uint16_t* image, uint32_t len) {
|
||||
|
||||
if ((len == 0) || (!DMA_Enabled)) return;
|
||||
|
||||
dmaWait();
|
||||
|
||||
esp_err_t ret;
|
||||
|
||||
memset(&trans, 0, sizeof(spi_transaction_t));
|
||||
|
||||
trans.user = (void *)1;
|
||||
trans.tx_buffer = image; //finally send the line data
|
||||
trans.length = len * 16; //Data length, in bits
|
||||
trans.flags = 0; //SPI_TRANS_USE_TXDATA flag
|
||||
|
||||
ret = spi_device_queue_trans(dmaHAL, &trans, portMAX_DELAY);
|
||||
assert(ret == ESP_OK);
|
||||
|
||||
spiBusyCheck++;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endif // ESP32
|
||||
|
|
|
@ -5,6 +5,9 @@
|
|||
#include <renderer.h>
|
||||
#include <Wire.h>
|
||||
#include <SPI.h>
|
||||
#ifdef ESP32
|
||||
#include "driver/spi_master.h"
|
||||
#endif
|
||||
|
||||
#define _UDSP_I2C 1
|
||||
#define _UDSP_SPI 2
|
||||
|
@ -58,8 +61,8 @@ enum uColorType { uCOLOR_BW, uCOLOR_COLOR };
|
|||
|
||||
#endif
|
||||
|
||||
#define SPI_BEGIN_TRANSACTION if (spi_nr <= 2) uspi->beginTransaction(spiSettings);
|
||||
#define SPI_END_TRANSACTION if (spi_nr <= 2) uspi->endTransaction();
|
||||
#define SPI_BEGIN_TRANSACTION if (spi_nr <= 2) beginTransaction(spiSettings);
|
||||
#define SPI_END_TRANSACTION if (spi_nr <= 2) endTransaction();
|
||||
#define SPI_CS_LOW if (spi_cs >= 0) GPIO_CLR(spi_cs);
|
||||
#define SPI_CS_HIGH if (spi_cs >= 0) GPIO_SET(spi_cs);
|
||||
#define SPI_DC_LOW if (spi_dc >= 0) GPIO_CLR(spi_dc);
|
||||
|
@ -79,9 +82,9 @@ class uDisplay : public Renderer {
|
|||
void DisplayOnff(int8_t on);
|
||||
void Splash(void);
|
||||
char *devname(void);
|
||||
uint16_t fgcol(void) const { return fg_col; };
|
||||
uint16_t bgcol(void) const { return bg_col; };
|
||||
int8_t color_type(void) const { return col_type; };
|
||||
uint16_t fgcol(void);
|
||||
uint16_t bgcol(void);
|
||||
int8_t color_type(void);
|
||||
void dim(uint8_t dim);
|
||||
uint16_t GetColorFromIndex(uint8_t index);
|
||||
void setRotation(uint8_t m);
|
||||
|
@ -90,8 +93,12 @@ class uDisplay : public Renderer {
|
|||
void pushColors(uint16_t *data, uint16_t len, boolean first);
|
||||
void TS_RotConvert(int16_t *x, int16_t *y);
|
||||
void invertDisplay(boolean i);
|
||||
void SetPwrCB(pwr_cb cb) { pwr_cbp = cb; };
|
||||
void SetDimCB(dim_cb cb) { dim_cbp = cb; };
|
||||
|
||||
private:
|
||||
void beginTransaction(SPISettings s);
|
||||
void endTransaction(void);
|
||||
void setAddrWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1);
|
||||
void drawPixel(int16_t x, int16_t y, uint16_t color);
|
||||
void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color);
|
||||
|
@ -156,8 +163,8 @@ class uDisplay : public Renderer {
|
|||
uint8_t dsp_on;
|
||||
uint8_t dsp_off;
|
||||
uint8_t allcmd_mode;
|
||||
uint16_t splash_font;
|
||||
uint16_t splash_size;
|
||||
int8_t splash_font;
|
||||
uint8_t splash_size;
|
||||
uint16_t splash_xp;
|
||||
uint16_t splash_yp;
|
||||
uint16_t fg_col;
|
||||
|
@ -203,6 +210,25 @@ class uDisplay : public Renderer {
|
|||
uint8_t lut_array[LUTMAXSIZE][5];
|
||||
uint8_t lut_cnt[5];
|
||||
uint8_t lut_cmd[5];
|
||||
uint16_t seta_xp1;
|
||||
uint16_t seta_xp2;
|
||||
uint16_t seta_yp1;
|
||||
uint16_t seta_yp2;
|
||||
void pushColorsMono(uint16_t *data, uint16_t len);
|
||||
#ifdef ESP32
|
||||
// dma section
|
||||
bool DMA_Enabled = false;
|
||||
uint8_t spiBusyCheck = 0;
|
||||
spi_transaction_t trans;
|
||||
spi_device_handle_t dmaHAL;
|
||||
spi_host_device_t spi_host = VSPI_HOST;
|
||||
// spi_host_device_t spi_host = VSPI_HOST;
|
||||
bool initDMA(bool ctrl_cs);
|
||||
void deInitDMA(void);
|
||||
bool dmaBusy(void);
|
||||
void dmaWait(void);
|
||||
void pushPixelsDMA(uint16_t* image, uint32_t len);
|
||||
#endif // ESP32
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -25,6 +25,7 @@ SOFTWARE.
|
|||
#include "RA8876.h"
|
||||
#include <limits.h>
|
||||
|
||||
uint8_t initdone;
|
||||
/* TODO
|
||||
|
||||
font 0 x and y size with line,col cmd
|
||||
|
@ -123,6 +124,9 @@ uint8_t RA8876::readStatus(void) {
|
|||
void RA8876::writeReg(uint8_t reg, uint8_t x) {
|
||||
writeCmd(reg);
|
||||
writeData(x);
|
||||
if (!initdone) {
|
||||
// Serial.printf("%02x, %02x\n", reg, x);
|
||||
}
|
||||
}
|
||||
|
||||
// Like writeReg(), but does two successive register writes of a 16-bit value, low byte first.
|
||||
|
@ -481,6 +485,9 @@ void RA8876::DisplayInit(int8_t p,int8_t size,int8_t rot,int8_t font) {
|
|||
}
|
||||
|
||||
bool RA8876::initDisplay() {
|
||||
|
||||
lvgl_param.fluslines = 10;
|
||||
|
||||
SPI.beginTransaction(m_spiSettings);
|
||||
|
||||
// Set chip config register
|
||||
|
@ -590,7 +597,7 @@ bool RA8876::initDisplay() {
|
|||
// TODO: Track backlight pin and turn on backlight
|
||||
|
||||
SPI.endTransaction();
|
||||
|
||||
initdone = 1;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -932,7 +939,14 @@ void RA8876::setAddrWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) {
|
|||
SPI.endTransaction();
|
||||
}
|
||||
|
||||
void RA8876::pushColors(uint16_t *data, uint16_t len, boolean first) {
|
||||
static inline void lvgl_color_swap1(uint16_t *data, uint16_t len) { for (uint32_t i = 0; i < len; i++) (data[i] = data[i] << 8 | data[i] >> 8); }
|
||||
|
||||
void RA8876::pushColors(uint16_t *data, uint16_t len, boolean not_swapped) {
|
||||
|
||||
if (not_swapped == false) {
|
||||
lvgl_color_swap1(data, len);
|
||||
}
|
||||
|
||||
SPI.beginTransaction(m_spiSettings);
|
||||
//RA8876_CS_LOW
|
||||
while (len--) {
|
||||
|
@ -944,7 +958,6 @@ void RA8876::pushColors(uint16_t *data, uint16_t len, boolean first) {
|
|||
SPI.transfer(color&0xff);
|
||||
SPI.transfer(RA8876_DATA_WRITE);
|
||||
SPI.transfer(color>>8);
|
||||
|
||||
#else
|
||||
|
||||
//waitWriteFifo();
|
||||
|
@ -1453,3 +1466,128 @@ void RA8876::FastString(uint16_t x,uint16_t y,uint16_t tcolor, const char* str)
|
|||
setTextColor(tcolor,textbgcolor);
|
||||
xwrite((uint8_t*)str,strlen(str));
|
||||
}
|
||||
|
||||
// ESP 32 DMA section , derived from TFT_eSPI
|
||||
#ifdef ESP32
|
||||
|
||||
/***************************************************************************************
|
||||
** Function name: initDMA
|
||||
** Description: Initialise the DMA engine - returns true if init OK
|
||||
***************************************************************************************/
|
||||
bool RA8876::initDMA()
|
||||
{
|
||||
if (DMA_Enabled) return false;
|
||||
|
||||
esp_err_t ret;
|
||||
spi_bus_config_t buscfg = {
|
||||
.mosi_io_num = _mosi,
|
||||
.miso_io_num = _miso,
|
||||
.sclk_io_num = _sclk,
|
||||
.quadwp_io_num = -1,
|
||||
.quadhd_io_num = -1,
|
||||
.max_transfer_sz = width() * height() * 2 + 8, // TFT screen size
|
||||
.flags = 0,
|
||||
.intr_flags = 0
|
||||
};
|
||||
|
||||
|
||||
spi_device_interface_config_t devcfg = {
|
||||
.command_bits = 0,
|
||||
.address_bits = 0,
|
||||
.dummy_bits = 0,
|
||||
.mode = SPI_MODE3,
|
||||
.duty_cycle_pos = 0,
|
||||
.cs_ena_pretrans = 0,
|
||||
.cs_ena_posttrans = 0,
|
||||
.clock_speed_hz = RA8876_SPI_SPEED,
|
||||
.input_delay_ns = 0,
|
||||
.spics_io_num = m_csPin,
|
||||
.flags = SPI_DEVICE_NO_DUMMY, //0,
|
||||
.queue_size = 1,
|
||||
.pre_cb = 0, //dc_callback, //Callback to handle D/C line
|
||||
.post_cb = 0
|
||||
};
|
||||
ret = spi_bus_initialize(spi_host, &buscfg, 1);
|
||||
ESP_ERROR_CHECK(ret);
|
||||
ret = spi_bus_add_device(spi_host, &devcfg, &dmaHAL);
|
||||
ESP_ERROR_CHECK(ret);
|
||||
|
||||
DMA_Enabled = true;
|
||||
spiBusyCheck = 0;
|
||||
return true;
|
||||
}
|
||||
|
||||
/***************************************************************************************
|
||||
** Function name: deInitDMA
|
||||
** Description: Disconnect the DMA engine from SPI
|
||||
***************************************************************************************/
|
||||
void RA8876::deInitDMA(void) {
|
||||
if (!DMA_Enabled) return;
|
||||
spi_bus_remove_device(dmaHAL);
|
||||
spi_bus_free(spi_host);
|
||||
DMA_Enabled = false;
|
||||
}
|
||||
|
||||
/***************************************************************************************
|
||||
** Function name: dmaBusy
|
||||
** Description: Check if DMA is busy
|
||||
***************************************************************************************/
|
||||
bool RA8876::dmaBusy(void) {
|
||||
if (!DMA_Enabled || !spiBusyCheck) return false;
|
||||
|
||||
spi_transaction_t *rtrans;
|
||||
esp_err_t ret;
|
||||
uint8_t checks = spiBusyCheck;
|
||||
for (int i = 0; i < checks; ++i) {
|
||||
ret = spi_device_get_trans_result(dmaHAL, &rtrans, 0);
|
||||
if (ret == ESP_OK) spiBusyCheck--;
|
||||
}
|
||||
|
||||
//Serial.print("spiBusyCheck=");Serial.println(spiBusyCheck);
|
||||
if (spiBusyCheck == 0) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************************
|
||||
** Function name: dmaWait
|
||||
** Description: Wait until DMA is over (blocking!)
|
||||
***************************************************************************************/
|
||||
void RA8876::dmaWait(void) {
|
||||
if (!DMA_Enabled || !spiBusyCheck) return;
|
||||
spi_transaction_t *rtrans;
|
||||
esp_err_t ret;
|
||||
for (int i = 0; i < spiBusyCheck; ++i) {
|
||||
ret = spi_device_get_trans_result(dmaHAL, &rtrans, portMAX_DELAY);
|
||||
assert(ret == ESP_OK);
|
||||
}
|
||||
spiBusyCheck = 0;
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************************
|
||||
** Function name: pushPixelsDMA
|
||||
** Description: Push pixels to TFT (len must be less than 32767)
|
||||
***************************************************************************************/
|
||||
// This will byte swap the original image if setSwapBytes(true) was called by sketch.
|
||||
void RA8876::pushPixelsDMA(uint16_t* image, uint32_t len) {
|
||||
|
||||
if ((len == 0) || (!DMA_Enabled)) return;
|
||||
|
||||
dmaWait();
|
||||
|
||||
esp_err_t ret;
|
||||
|
||||
memset(&trans, 0, sizeof(spi_transaction_t));
|
||||
|
||||
trans.user = (void *)1;
|
||||
trans.tx_buffer = image; //finally send the line data
|
||||
trans.length = len * 16; //Data length, in bits
|
||||
trans.flags = 0; //SPI_TRANS_USE_TXDATA flag
|
||||
|
||||
ret = spi_device_queue_trans(dmaHAL, &trans, portMAX_DELAY);
|
||||
assert(ret == ESP_OK);
|
||||
|
||||
spiBusyCheck++;
|
||||
}
|
||||
#endif // ESP32
|
||||
|
|
|
@ -22,6 +22,9 @@
|
|||
#include "Arduino.h"
|
||||
#include <SPI.h>
|
||||
#include <renderer.h>
|
||||
#ifdef ESP32
|
||||
#include "driver/spi_master.h"
|
||||
#endif
|
||||
|
||||
#undef SPRINT
|
||||
#define SPRINT(A) {char str[32];sprintf(str,"val: %d ",A);Serial.println((char*)str);}
|
||||
|
@ -147,7 +150,7 @@ typedef uint8_t FontFlags;
|
|||
// 1MHz. TODO: Figure out actual speed to use
|
||||
// Data sheet section 5.2 says maximum SPI clock is 50MHz.
|
||||
//#define RA8876_SPI_SPEED 10000000
|
||||
#define RA8876_SPI_SPEED 20000000
|
||||
#define RA8876_SPI_SPEED 25000000
|
||||
|
||||
// With SPI, the RA8876 expects an initial byte where the top two bits are meaningful. Bit 7
|
||||
// is A0, bit 6 is WR#. See data sheet section 7.3.2 and section 19.
|
||||
|
@ -565,6 +568,21 @@ class RA8876 : public Renderer {
|
|||
enum FontSource m_fontSource;
|
||||
enum FontSize m_fontSize;
|
||||
FontFlags m_fontFlags;
|
||||
|
||||
#ifdef ESP32
|
||||
// dma section
|
||||
bool DMA_Enabled = false;
|
||||
uint8_t spiBusyCheck = 0;
|
||||
spi_transaction_t trans;
|
||||
spi_device_handle_t dmaHAL;
|
||||
spi_host_device_t spi_host = VSPI_HOST;
|
||||
// spi_host_device_t spi_host = VSPI_HOST;
|
||||
bool initDMA();
|
||||
void deInitDMA(void);
|
||||
bool dmaBusy(void);
|
||||
void dmaWait(void);
|
||||
void pushPixelsDMA(uint16_t* image, uint32_t len);
|
||||
#endif // ESP32
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
name=RA8876
|
||||
version=1.0.0
|
||||
author=Jaret Burkett / Gerhard Mutz
|
||||
maintainer=Gerhard Mutz
|
||||
sentence=Tasmota Library for RA8876 displays
|
||||
paragraph=Tasmota Library for RA8876 displays
|
||||
version=1.0.2
|
||||
author=Jaret Burkett
|
||||
maintainer=Jaret Burkett <jaretburkett@gmail.com>
|
||||
sentence=Library for RA8876 displays
|
||||
paragraph=Library for RA8876 displays
|
||||
category=Display
|
||||
url=https://github.com/arendst/Tasmota
|
||||
url=https://github.com/jaretburkett/ILI9488
|
||||
architectures=*
|
||||
|
|
|
@ -4,9 +4,7 @@
|
|||
* To use: `d = Driver()`
|
||||
*
|
||||
*******************************************************************/
|
||||
#include "be_object.h"
|
||||
#include "be_string.h"
|
||||
#include "be_gc.h"
|
||||
#include "be_constobj.h"
|
||||
|
||||
extern int d_getTasmotaGlob(bvm *vm);
|
||||
|
||||
|
@ -30,8 +28,8 @@ static const bupvaldesc add_cmd_0_upvals[2] = {
|
|||
be_local_const_upval(1, 0),
|
||||
};
|
||||
|
||||
be_define_local_const_str(add_cmd_0_str_name, "add_cmd_0", 607256038, 0, 8, 0);
|
||||
be_define_local_const_str(add_cmd_0_str_source, "input", -103256197, 0, 5, 0);
|
||||
be_define_local_const_str(add_cmd_0_str_name, "add_cmd_0", 607256038, 8);
|
||||
be_define_local_const_str(add_cmd_0_str_source, "input", -103256197, 5);
|
||||
|
||||
static const uint32_t add_cmd_0_code[8] = {
|
||||
0x68100000, // 0000 GETUPV R4 U0
|
||||
|
@ -51,10 +49,10 @@ static const bproto *add_cmd_subproto[1] = {
|
|||
&add_cmd_0_proto,
|
||||
};
|
||||
|
||||
be_define_local_const_str(add_cmd_str_name, "add_cmd", -933336417, 0, 7, 0);
|
||||
be_define_local_const_str(add_cmd_str_source, "input", -103256197, 0, 5, 0);
|
||||
be_define_local_const_str(add_cmd_str_0, "get_tasmota", 334356779, 0, 11, 0);
|
||||
be_define_local_const_str(add_cmd_str_1, "add_cmd", -933336417, 0, 7, 0);
|
||||
be_define_local_const_str(add_cmd_str_name, "add_cmd", -933336417, 7);
|
||||
be_define_local_const_str(add_cmd_str_source, "input", -103256197, 5);
|
||||
be_define_local_const_str(add_cmd_str_0, "get_tasmota", 334356779, 11);
|
||||
be_define_local_const_str(add_cmd_str_1, "add_cmd", -933336417, 7);
|
||||
|
||||
static const bvalue add_cmd_ktab[2] = {
|
||||
{ { .s=be_local_const_str(add_cmd_str_0) }, BE_STRING},
|
||||
|
@ -77,10 +75,14 @@ be_define_local_closure(add_cmd);
|
|||
|
||||
/*******************************************************************/
|
||||
|
||||
// #if !BE_USE_PRECOMPILED_OBJECT
|
||||
#if 1 // TODO we will do pre-compiled later
|
||||
void be_load_driverlib(bvm *vm)
|
||||
{
|
||||
|
||||
|
||||
#if BE_USE_PRECOMPILED_OBJECT
|
||||
#include "../generate/be_fixed_be_class_tasmota_driver.h"
|
||||
#endif
|
||||
|
||||
void be_load_driverlib(bvm *vm) {
|
||||
#if !BE_USE_PRECOMPILED_OBJECT
|
||||
static const bnfuncinfo members[] = {
|
||||
{ "every_second", NULL },
|
||||
{ "every_100ms", NULL },
|
||||
|
@ -99,12 +101,26 @@ void be_load_driverlib(bvm *vm)
|
|||
{ NULL, NULL }
|
||||
};
|
||||
be_regclass(vm, "Driver", members);
|
||||
}
|
||||
#else
|
||||
be_pushntvclass(vm, &be_class_tasmota_driver);
|
||||
be_setglobal(vm, "Driver");
|
||||
be_pop(vm, 1);
|
||||
#endif
|
||||
}
|
||||
/* @const_object_info_begin
|
||||
module tasmota (scope: global, depend: 1) {
|
||||
get_free_heap, func(l_getFreeHeap)
|
||||
|
||||
class be_class_tasmota_driver (scope: global, name: Driver) {
|
||||
every_second, var
|
||||
every_100ms, var
|
||||
web_add_button, var
|
||||
web_add_main_button, var
|
||||
save_before_restart, var
|
||||
web_sensor, var
|
||||
json_append, var
|
||||
button_pressed, var
|
||||
|
||||
get_tasmota, func(d_getTasmotaGlob)
|
||||
|
||||
add_cmd, closure(add_cmd_closure)
|
||||
}
|
||||
@const_object_info_end */
|
||||
#include "../generate/be_fixed_tasmota.h"
|
||||
#endif
|
||||
|
|
|
@ -5,12 +5,13 @@
|
|||
*
|
||||
* read power values
|
||||
*******************************************************************/
|
||||
#include "be_object.h"
|
||||
#include "be_constobj.h"
|
||||
|
||||
#ifdef USE_ENERGY_SENSOR
|
||||
|
||||
extern int b_nrg_read(bvm *vm);
|
||||
|
||||
// #if !BE_USE_PRECOMPILED_OBJECT
|
||||
#if 1 // TODO we will do pre-compiled later
|
||||
#if !BE_USE_PRECOMPILED_OBJECT
|
||||
be_native_module_attr_table(energy) {
|
||||
be_native_module_function("read", b_nrg_read),
|
||||
};
|
||||
|
@ -18,9 +19,11 @@ be_native_module_attr_table(energy) {
|
|||
be_define_native_module(energy, NULL);
|
||||
#else
|
||||
/* @const_object_info_begin
|
||||
module tasmota (scope: global, depend: 1) {
|
||||
get_free_heap, func(l_getFreeHeap)
|
||||
module energy (scope: global) {
|
||||
read, func(b_nrg_read)
|
||||
}
|
||||
@const_object_info_end */
|
||||
#include "../generate/be_fixed_tasmota.h"
|
||||
#include "../generate/be_fixed_energy.h"
|
||||
#endif
|
||||
|
||||
#endif // USE_ENERGY_SENSOR
|
|
@ -5,7 +5,7 @@
|
|||
*
|
||||
* read power values
|
||||
*******************************************************************/
|
||||
#include "be_object.h"
|
||||
#include "be_constobj.h"
|
||||
|
||||
// Tasmota specific
|
||||
|
||||
|
@ -17,7 +17,6 @@ extern int gp_pin_used(bvm *vm);
|
|||
extern int gp_pin(bvm *vm);
|
||||
|
||||
#if !BE_USE_PRECOMPILED_OBJECT
|
||||
// #if 1 // TODO we will do pre-compiled later
|
||||
be_native_module_attr_table(gpio) {
|
||||
// HIGH/LOW
|
||||
be_native_module_int("LOW", 0),
|
||||
|
@ -290,7 +289,7 @@ be_native_module_attr_table(gpio) {
|
|||
be_define_native_module(gpio, NULL);
|
||||
#else
|
||||
/* @const_object_info_begin
|
||||
module gpio (scope: global, depend: BE_USE_TASMOTA) {
|
||||
module gpio (scope: global) {
|
||||
LOW, int(0)
|
||||
HIGH, int(1)
|
||||
|
||||
|
|
|
@ -3,11 +3,9 @@
|
|||
*
|
||||
* To use: `import tasmota`
|
||||
*******************************************************************/
|
||||
#include "be_object.h"
|
||||
#include "be_string.h"
|
||||
#include "be_gc.h"
|
||||
|
||||
#include "be_constobj.h"
|
||||
|
||||
#ifdef USE_LIGHT
|
||||
extern int l_getlight(bvm *vm);
|
||||
extern int l_setlight(bvm *vm);
|
||||
|
||||
|
@ -15,8 +13,7 @@ extern int l_gamma8(bvm *vm);
|
|||
extern int l_gamma10(bvm *vm);
|
||||
extern int l_rev_gamma10(bvm *vm);
|
||||
|
||||
// #if !BE_USE_PRECOMPILED_OBJECT
|
||||
#if 1 // TODO we will do pre-compiled later
|
||||
#if !BE_USE_PRECOMPILED_OBJECT
|
||||
|
||||
be_native_module_attr_table(light) {
|
||||
|
||||
|
@ -33,9 +30,16 @@ be_define_native_module(light, NULL);
|
|||
|
||||
#else
|
||||
/* @const_object_info_begin
|
||||
module tasmota (scope: global, depend: 1) {
|
||||
get_free_heap, func(l_getFreeHeap)
|
||||
module light (scope: global) {
|
||||
get, func(l_getlight)
|
||||
set, func(l_setlight)
|
||||
|
||||
gamma8, func(l_gamma8)
|
||||
gamma10, func(l_gamma10)
|
||||
reverse_gamma10, func(l_rev_gamma10)
|
||||
}
|
||||
@const_object_info_end */
|
||||
#include "../generate/be_fixed_tasmota.h"
|
||||
#include "../generate/be_fixed_light.h"
|
||||
#endif
|
||||
|
||||
#endif // USE_LIGHT
|
|
@ -4,9 +4,7 @@
|
|||
/********************************************************************
|
||||
* LVGL Module
|
||||
*******************************************************************/
|
||||
#include "be_object.h"
|
||||
#include "be_string.h"
|
||||
#include "be_gc.h"
|
||||
#include "be_constobj.h"
|
||||
|
||||
#ifdef USE_LVGL
|
||||
|
||||
|
@ -14,6 +12,8 @@
|
|||
|
||||
extern int lv0_start(bvm *vm);
|
||||
extern int lv0_load_montserrat_font(bvm *vm);
|
||||
extern int lv0_load_seg7_font(bvm *vm);
|
||||
extern int lv0_load_font(bvm *vm);
|
||||
|
||||
extern int lv0_scr_act(bvm *vm);
|
||||
extern int lv0_layer_top(bvm *vm);
|
||||
|
@ -611,6 +611,9 @@ be_native_module_attr_table(lvgl) {
|
|||
|
||||
be_native_module_function("start", lv0_start),
|
||||
be_native_module_function("montserrat_font", lv0_load_montserrat_font),
|
||||
be_native_module_function("seg7_font", lv0_load_seg7_font),
|
||||
be_native_module_function("load_font", lv0_load_font),
|
||||
|
||||
|
||||
// screen and layers
|
||||
be_native_module_function("scr_act", lv0_scr_act),
|
||||
|
@ -627,67 +630,67 @@ be_define_native_module(lvgl, NULL);
|
|||
|
||||
#else
|
||||
|
||||
be_define_local_const_str(SYMBOL_AUDIO, "\xef\x80\x81", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_VIDEO, "\xef\x80\x88", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_LIST, "\xef\x80\x8b", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_OK, "\xef\x80\x8c", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_CLOSE, "\xef\x80\x8d", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_POWER, "\xef\x80\x91", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_SETTINGS, "\xef\x80\x93", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_HOME, "\xef\x80\x95", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_DOWNLOAD, "\xef\x80\x99", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_DRIVE, "\xef\x80\x9c", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_REFRESH, "\xef\x80\xa1", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_MUTE, "\xef\x80\xa6", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_VOLUME_MID, "\xef\x80\xa7", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_VOLUME_MAX, "\xef\x80\xa8", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_IMAGE, "\xef\x80\xbe", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_EDIT, "\xef\x8C\x84", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_PREV, "\xef\x81\x88", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_PLAY, "\xef\x81\x8b", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_PAUSE, "\xef\x81\x8c", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_STOP, "\xef\x81\x8d", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_NEXT, "\xef\x81\x91", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_EJECT, "\xef\x81\x92", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_LEFT, "\xef\x81\x93", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_RIGHT, "\xef\x81\x94", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_PLUS, "\xef\x81\xa7", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_MINUS, "\xef\x81\xa8", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_EYE_OPEN, "\xef\x81\xae", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_EYE_CLOSE, "\xef\x81\xb0", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_WARNING, "\xef\x81\xb1", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_SHUFFLE, "\xef\x81\xb4", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_UP, "\xef\x81\xb7", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_DOWN, "\xef\x81\xb8", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_LOOP, "\xef\x81\xb9", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_DIRECTORY, "\xef\x81\xbb", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_UPLOAD, "\xef\x82\x93", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_CALL, "\xef\x82\x95", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_CUT, "\xef\x83\x84", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_COPY, "\xef\x83\x85", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_SAVE, "\xef\x83\x87", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_CHARGE, "\xef\x83\xa7", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_PASTE, "\xef\x83\xAA", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_BELL, "\xef\x83\xb3", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_KEYBOARD, "\xef\x84\x9c", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_GPS, "\xef\x84\xa4", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_FILE, "\xef\x85\x9b", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_WIFI, "\xef\x87\xab", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_BATTERY_FULL, "\xef\x89\x80", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_BATTERY_3, "\xef\x89\x81", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_BATTERY_2, "\xef\x89\x82", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_BATTERY_1, "\xef\x89\x83", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_BATTERY_EMPTY, "\xef\x89\x84", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_USB, "\xef\x8a\x87", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_BLUETOOTH, "\xef\x8a\x93", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_TRASH, "\xef\x8B\xAD", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_BACKSPACE, "\xef\x95\x9A", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_SD_CARD, "\xef\x9F\x82", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_NEW_LINE, "\xef\xA2\xA2", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_AUDIO, "\xef\x80\x81", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_VIDEO, "\xef\x80\x88", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_LIST, "\xef\x80\x8b", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_OK, "\xef\x80\x8c", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_CLOSE, "\xef\x80\x8d", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_POWER, "\xef\x80\x91", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_SETTINGS, "\xef\x80\x93", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_HOME, "\xef\x80\x95", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_DOWNLOAD, "\xef\x80\x99", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_DRIVE, "\xef\x80\x9c", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_REFRESH, "\xef\x80\xa1", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_MUTE, "\xef\x80\xa6", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_VOLUME_MID, "\xef\x80\xa7", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_VOLUME_MAX, "\xef\x80\xa8", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_IMAGE, "\xef\x80\xbe", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_EDIT, "\xef\x8C\x84", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_PREV, "\xef\x81\x88", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_PLAY, "\xef\x81\x8b", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_PAUSE, "\xef\x81\x8c", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_STOP, "\xef\x81\x8d", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_NEXT, "\xef\x81\x91", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_EJECT, "\xef\x81\x92", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_LEFT, "\xef\x81\x93", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_RIGHT, "\xef\x81\x94", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_PLUS, "\xef\x81\xa7", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_MINUS, "\xef\x81\xa8", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_EYE_OPEN, "\xef\x81\xae", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_EYE_CLOSE, "\xef\x81\xb0", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_WARNING, "\xef\x81\xb1", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_SHUFFLE, "\xef\x81\xb4", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_UP, "\xef\x81\xb7", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_DOWN, "\xef\x81\xb8", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_LOOP, "\xef\x81\xb9", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_DIRECTORY, "\xef\x81\xbb", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_UPLOAD, "\xef\x82\x93", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_CALL, "\xef\x82\x95", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_CUT, "\xef\x83\x84", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_COPY, "\xef\x83\x85", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_SAVE, "\xef\x83\x87", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_CHARGE, "\xef\x83\xa7", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_PASTE, "\xef\x83\xAA", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_BELL, "\xef\x83\xb3", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_KEYBOARD, "\xef\x84\x9c", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_GPS, "\xef\x84\xa4", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_FILE, "\xef\x85\x9b", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_WIFI, "\xef\x87\xab", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_BATTERY_FULL, "\xef\x89\x80", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_BATTERY_3, "\xef\x89\x81", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_BATTERY_2, "\xef\x89\x82", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_BATTERY_1, "\xef\x89\x83", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_BATTERY_EMPTY, "\xef\x89\x84", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_USB, "\xef\x8a\x87", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_BLUETOOTH, "\xef\x8a\x93", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_TRASH, "\xef\x8B\xAD", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_BACKSPACE, "\xef\x95\x9A", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_SD_CARD, "\xef\x9F\x82", 0, 3);
|
||||
be_define_local_const_str(SYMBOL_NEW_LINE, "\xef\xA2\xA2", 0, 3);
|
||||
|
||||
be_define_local_const_str(SYMBOL_DUMMY, "\xEF\xA3\xBF", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_DUMMY, "\xEF\xA3\xBF", 0, 3);
|
||||
|
||||
be_define_local_const_str(SYMBOL_BULLET, "\xE2\x80\xA2", 0, 0, 3, 0);
|
||||
be_define_local_const_str(SYMBOL_BULLET, "\xE2\x80\xA2", 0, 3);
|
||||
|
||||
|
||||
/* @const_object_info_begin
|
||||
|
@ -1148,6 +1151,8 @@ module lvgl (scope: global) {
|
|||
|
||||
start, func(lv0_start)
|
||||
montserrat_font, func(lv0_load_montserrat_font)
|
||||
seg7_font, func(lv0_load_seg7_font)
|
||||
load_font, func(lv0_load_font)
|
||||
|
||||
scr_act, func(lv0_scr_act)
|
||||
layer_top, func(lv0_layer_top)
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
/********************************************************************
|
||||
* Tasmota LVGL Font class
|
||||
*******************************************************************/
|
||||
#include "be_object.h"
|
||||
#include "be_string.h"
|
||||
#include "be_constobj.h"
|
||||
|
||||
#ifdef USE_LVGL
|
||||
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
/********************************************************************
|
||||
* Tasmota LVGL Font class
|
||||
*******************************************************************/
|
||||
#include "be_object.h"
|
||||
#include "be_string.h"
|
||||
#include "be_constobj.h"
|
||||
|
||||
#ifdef USE_LVGL
|
||||
|
||||
|
|
|
@ -6,8 +6,7 @@
|
|||
/********************************************************************
|
||||
* Tasmota LVGL classes for widgets
|
||||
*******************************************************************/
|
||||
#include "be_object.h"
|
||||
#include "be_string.h"
|
||||
#include "be_constobj.h"
|
||||
|
||||
#ifdef USE_LVGL
|
||||
|
||||
|
|
|
@ -63,15 +63,19 @@ BERRY_LOCAL const bntvmodule* const be_module_table[] = {
|
|||
&be_native_module(solidify),
|
||||
#endif
|
||||
/* user-defined modules register start */
|
||||
#if BE_USE_TASMOTA
|
||||
|
||||
&be_native_module(gpio),
|
||||
#ifdef USE_LIGHT
|
||||
&be_native_module(light),
|
||||
#endif
|
||||
|
||||
#ifdef USE_LVGL
|
||||
&be_native_module(lvgl),
|
||||
#endif // USE_LVGL
|
||||
#ifdef USE_ENERGY_SENSOR
|
||||
&be_native_module(energy),
|
||||
#endif
|
||||
#endif // USE_ENERGY_SENSOR
|
||||
|
||||
|
||||
/* user-defined modules register end */
|
||||
NULL /* do not remove */
|
||||
|
@ -98,7 +102,9 @@ BERRY_API void be_load_custom_libs(bvm *vm)
|
|||
/* be_load_xxxlib(vm); */
|
||||
#endif
|
||||
be_load_tasmota_ntvlib(vm);
|
||||
#ifdef USE_I2C
|
||||
be_load_wirelib(vm);
|
||||
#endif // USE_I2C
|
||||
be_load_driverlib(vm);
|
||||
#ifdef USE_LVGL
|
||||
// LVGL
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -5,9 +5,9 @@
|
|||
*
|
||||
* 2 wire communication - I2C
|
||||
*******************************************************************/
|
||||
#include "be_object.h"
|
||||
#include "be_string.h"
|
||||
#include "be_gc.h"
|
||||
#include "be_constobj.h"
|
||||
|
||||
#ifdef USE_I2C
|
||||
|
||||
extern int b_wire_init(bvm *vm);
|
||||
|
||||
|
@ -41,14 +41,14 @@ extern int b_wire_detect(bvm *vm);
|
|||
** Solidified function: read_bytes
|
||||
********************************************************************/
|
||||
|
||||
be_define_local_const_str(read_bytes_str_name, "read_bytes", -718234123, 0, 10, 0);
|
||||
be_define_local_const_str(read_bytes_str_source, "string", 398550328, 0, 6, 0);
|
||||
be_define_local_const_str(read_bytes_str_0, "_begin_transmission", -1515506120, 0, 19, 0);
|
||||
be_define_local_const_str(read_bytes_str_1, "_write", -2079504471, 0, 6, 0);
|
||||
be_define_local_const_str(read_bytes_str_2, "_end_transmission", -1057486896, 0, 17, 0);
|
||||
be_define_local_const_str(read_bytes_str_3, "_request_from", -329818692, 0, 13, 0);
|
||||
be_define_local_const_str(read_bytes_str_4, "_available", 1306196581, 0, 10, 0);
|
||||
be_define_local_const_str(read_bytes_str_5, "_read", 346717030, 0, 5, 0);
|
||||
be_define_local_const_str(read_bytes_str_name, "read_bytes", -718234123, 10);
|
||||
be_define_local_const_str(read_bytes_str_source, "string", 398550328, 6);
|
||||
be_define_local_const_str(read_bytes_str_0, "_begin_transmission", -1515506120, 19);
|
||||
be_define_local_const_str(read_bytes_str_1, "_write", -2079504471, 6);
|
||||
be_define_local_const_str(read_bytes_str_2, "_end_transmission", -1057486896, 17);
|
||||
be_define_local_const_str(read_bytes_str_3, "_request_from", -329818692, 13);
|
||||
be_define_local_const_str(read_bytes_str_4, "_available", 1306196581, 10);
|
||||
be_define_local_const_str(read_bytes_str_5, "_read", 346717030, 5);
|
||||
|
||||
static const bvalue read_bytes_ktab[6] = {
|
||||
{ { .s=be_local_const_str(read_bytes_str_0) }, BE_STRING},
|
||||
|
@ -139,11 +139,11 @@ const bclosure read_bytes_closure = {
|
|||
** Solidified function: write_bytes
|
||||
********************************************************************/
|
||||
|
||||
be_define_local_const_str(write_bytes_str_name, "write_bytes", 1227543792, 0, 11, 0);
|
||||
be_define_local_const_str(write_bytes_str_source, "string", 398550328, 0, 6, 0);
|
||||
be_define_local_const_str(write_bytes_str_0, "_begin_transmission", -1515506120, 0, 19, 0);
|
||||
be_define_local_const_str(write_bytes_str_1, "_write", -2079504471, 0, 6, 0);
|
||||
be_define_local_const_str(write_bytes_str_2, "_end_transmission", -1057486896, 0, 17, 0);
|
||||
be_define_local_const_str(write_bytes_str_name, "write_bytes", 1227543792, 11);
|
||||
be_define_local_const_str(write_bytes_str_source, "string", 398550328, 6);
|
||||
be_define_local_const_str(write_bytes_str_0, "_begin_transmission", -1515506120, 19);
|
||||
be_define_local_const_str(write_bytes_str_1, "_write", -2079504471, 6);
|
||||
be_define_local_const_str(write_bytes_str_2, "_end_transmission", -1057486896, 17);
|
||||
|
||||
static const bvalue write_bytes_ktab[3] = {
|
||||
{ { .s=be_local_const_str(write_bytes_str_0) }, BE_STRING},
|
||||
|
@ -206,11 +206,12 @@ const bclosure write_bytes_closure = {
|
|||
|
||||
/*******************************************************************/
|
||||
|
||||
#if BE_USE_PRECOMPILED_OBJECT
|
||||
#include "../generate/be_fixed_be_class_tasmota_wire.h"
|
||||
#endif
|
||||
|
||||
// #if !BE_USE_PRECOMPILED_OBJECT
|
||||
#if 1 // TODO we will do pre-compiled later
|
||||
void be_load_wirelib(bvm *vm)
|
||||
{
|
||||
void be_load_wirelib(bvm *vm) {
|
||||
#if !BE_USE_PRECOMPILED_OBJECT
|
||||
static const bnfuncinfo members[] = {
|
||||
{ "bus", NULL }, // bus number
|
||||
{ "init", b_wire_init },
|
||||
|
@ -232,12 +233,32 @@ void be_load_wirelib(bvm *vm)
|
|||
{ NULL, NULL }
|
||||
};
|
||||
be_regclass(vm, "Wire", members);
|
||||
}
|
||||
#else
|
||||
be_pushntvclass(vm, &be_class_tasmota_wire);
|
||||
be_setglobal(vm, "Wire");
|
||||
be_pop(vm, 1);
|
||||
#endif
|
||||
}
|
||||
/* @const_object_info_begin
|
||||
module tasmota (scope: global, depend: 1) {
|
||||
get_free_heap, func(l_getFreeHeap)
|
||||
|
||||
class be_class_tasmota_wire (scope: global, name: Wire) {
|
||||
bus, var
|
||||
|
||||
init, func(b_wire_init)
|
||||
_begin_transmission, func(b_wire_begintransmission)
|
||||
_end_transmission, func(b_wire_endtransmission)
|
||||
_request_from, func(b_wire_requestfrom)
|
||||
_available, func(b_wire_available)
|
||||
_write, func(b_wire_write)
|
||||
_read, func(b_wire_read)
|
||||
scan, func(b_wire_scan)
|
||||
write, func(b_wire_validwrite)
|
||||
read, func(b_wire_validread)
|
||||
detect, func(b_wire_detect)
|
||||
|
||||
read_bytes, closure(read_bytes_closure)
|
||||
write_bytes, closure(write_bytes_closure)
|
||||
}
|
||||
@const_object_info_end */
|
||||
#include "../generate/be_fixed_tasmota.h"
|
||||
#endif
|
||||
|
||||
#endif // USE_I2C
|
|
@ -158,12 +158,6 @@
|
|||
#define BE_USE_GC_MODULE 1
|
||||
#define BE_USE_SOLIDIFY_MODULE 1
|
||||
|
||||
// #ifdef ESP32
|
||||
#define BE_USE_TASMOTA 1
|
||||
// #else
|
||||
// #define BE_USE_TASMOTA 0
|
||||
// #endif
|
||||
|
||||
/* Macro: BE_EXPLICIT_XXX
|
||||
* If these macros are defined, the corresponding function will
|
||||
* use the version defined by these macros. These macro definitions
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,67 @@
|
|||
#include "be_constobj.h"
|
||||
|
||||
static be_define_const_map_slots(be_class_tasmota_map) {
|
||||
{ be_const_key(log, 25), be_const_func(l_logInfo) },
|
||||
{ be_const_key(find_op, -1), be_const_closure(find_op_closure) },
|
||||
{ be_const_key(gc, -1), be_const_closure(gc_closure) },
|
||||
{ be_const_key(get_power, -1), be_const_func(l_getpower) },
|
||||
{ be_const_key(_cmd, -1), be_const_func(l_cmd) },
|
||||
{ be_const_key(scale_uint, -1), be_const_func(l_scaleuint) },
|
||||
{ be_const_key(event, 4), be_const_closure(event_closure) },
|
||||
{ be_const_key(exec_cmd, 20), be_const_closure(exec_cmd_closure) },
|
||||
{ be_const_key(find_key_i, -1), be_const_closure(find_key_i_closure) },
|
||||
{ be_const_key(resolvecmnd, -1), be_const_func(l_resolveCmnd) },
|
||||
{ be_const_key(set_timer, -1), be_const_closure(set_timer_closure) },
|
||||
{ be_const_key(add_driver, 37), be_const_closure(add_driver_closure) },
|
||||
{ be_const_key(resp_cmnd, -1), be_const_func(l_respCmnd) },
|
||||
{ be_const_key(resp_cmnd_str, -1), be_const_func(l_respCmndStr) },
|
||||
{ be_const_key(add_cmd, -1), be_const_closure(add_cmd_closure) },
|
||||
{ be_const_key(chars_in_string, -1), be_const_closure(chars_in_string_closure) },
|
||||
{ be_const_key(add_rule, 47), be_const_closure(add_rule_closure) },
|
||||
{ be_const_key(try_rule, 34), be_const_closure(try_rule_closure) },
|
||||
{ be_const_key(get_option, -1), be_const_func(l_getoption) },
|
||||
{ be_const_key(wire1, -1), be_const_int(0) },
|
||||
{ be_const_key(remove_cmd, -1), be_const_closure(remove_cmd_closure) },
|
||||
{ be_const_key(resp_cmnd_done, -1), be_const_func(l_respCmndDone) },
|
||||
{ be_const_key(wire_scan, -1), be_const_closure(wire_scan_closure) },
|
||||
{ be_const_key(_timers, -1), be_const_int(1) },
|
||||
{ be_const_key(exec_rules, -1), be_const_closure(exec_rules_closure) },
|
||||
{ be_const_key(response_append, 43), be_const_func(l_respAppend) },
|
||||
{ be_const_key(time_dump, 31), be_const_func(l_time_dump) },
|
||||
{ be_const_key(millis, -1), be_const_func(l_millis) },
|
||||
{ be_const_key(wire2, -1), be_const_int(2) },
|
||||
{ be_const_key(remove_rule, 8), be_const_closure(remove_rule_closure) },
|
||||
{ be_const_key(delay, 13), be_const_func(l_delay) },
|
||||
{ be_const_key(run_deferred, -1), be_const_closure(run_deferred_closure) },
|
||||
{ be_const_key(i2c_enabled, 19), be_const_func(l_i2cenabled) },
|
||||
{ be_const_key(_drivers, -1), be_const_int(3) },
|
||||
{ be_const_key(time_reached, -1), be_const_func(l_timereached) },
|
||||
{ be_const_key(publish, -1), be_const_func(l_publish) },
|
||||
{ be_const_key(_ccmd, -1), be_const_int(4) },
|
||||
{ be_const_key(yield, -1), be_const_func(l_yield) },
|
||||
{ be_const_key(get_free_heap, -1), be_const_func(l_getFreeHeap) },
|
||||
{ be_const_key(resp_cmnd_failed, -1), be_const_func(l_respCmndFailed) },
|
||||
{ be_const_key(_rules, -1), be_const_int(5) },
|
||||
{ be_const_key(time_str, -1), be_const_closure(time_str_closure) },
|
||||
{ be_const_key(set_power, -1), be_const_func(l_setpower) },
|
||||
{ be_const_key(cmd, -1), be_const_closure(cmd_closure) },
|
||||
{ be_const_key(get_light, -1), be_const_closure(get_light_closure) },
|
||||
{ be_const_key(save, -1), be_const_func(l_save) },
|
||||
{ be_const_key(rtc, 23), be_const_func(l_rtc) },
|
||||
{ be_const_key(resp_cmnd_error, 33), be_const_func(l_respCmndError) },
|
||||
{ be_const_key(web_send_decimal, 15), be_const_func(l_webSendDecimal) },
|
||||
{ be_const_key(load, 14), be_const_closure(load_closure) },
|
||||
{ be_const_key(set_light, -1), be_const_closure(set_light_closure) },
|
||||
};
|
||||
|
||||
static be_define_const_map(
|
||||
be_class_tasmota_map,
|
||||
51
|
||||
);
|
||||
|
||||
BE_EXPORT_VARIABLE be_define_const_class(
|
||||
be_class_tasmota,
|
||||
6,
|
||||
NULL,
|
||||
Tasmota
|
||||
);
|
|
@ -0,0 +1,26 @@
|
|||
#include "be_constobj.h"
|
||||
|
||||
static be_define_const_map_slots(be_class_tasmota_driver_map) {
|
||||
{ be_const_key(add_cmd, -1), be_const_closure(add_cmd_closure) },
|
||||
{ be_const_key(web_add_main_button, 3), be_const_int(0) },
|
||||
{ be_const_key(web_sensor, -1), be_const_int(1) },
|
||||
{ be_const_key(every_100ms, -1), be_const_int(2) },
|
||||
{ be_const_key(json_append, 1), be_const_int(3) },
|
||||
{ be_const_key(every_second, -1), be_const_int(4) },
|
||||
{ be_const_key(button_pressed, -1), be_const_int(5) },
|
||||
{ be_const_key(save_before_restart, -1), be_const_int(6) },
|
||||
{ be_const_key(web_add_button, 7), be_const_int(7) },
|
||||
{ be_const_key(get_tasmota, 0), be_const_func(d_getTasmotaGlob) },
|
||||
};
|
||||
|
||||
static be_define_const_map(
|
||||
be_class_tasmota_driver_map,
|
||||
10
|
||||
);
|
||||
|
||||
BE_EXPORT_VARIABLE be_define_const_class(
|
||||
be_class_tasmota_driver,
|
||||
8,
|
||||
NULL,
|
||||
Driver
|
||||
);
|
|
@ -0,0 +1,30 @@
|
|||
#include "be_constobj.h"
|
||||
|
||||
static be_define_const_map_slots(be_class_tasmota_wire_map) {
|
||||
{ be_const_key(_end_transmission, 10), be_const_func(b_wire_endtransmission) },
|
||||
{ be_const_key(bus, -1), be_const_int(0) },
|
||||
{ be_const_key(_read, 7), be_const_func(b_wire_read) },
|
||||
{ be_const_key(read, -1), be_const_func(b_wire_validread) },
|
||||
{ be_const_key(_request_from, -1), be_const_func(b_wire_requestfrom) },
|
||||
{ be_const_key(init, -1), be_const_func(b_wire_init) },
|
||||
{ be_const_key(write_bytes, -1), be_const_closure(write_bytes_closure) },
|
||||
{ be_const_key(_begin_transmission, -1), be_const_func(b_wire_begintransmission) },
|
||||
{ be_const_key(scan, -1), be_const_func(b_wire_scan) },
|
||||
{ be_const_key(_write, 1), be_const_func(b_wire_write) },
|
||||
{ be_const_key(write, -1), be_const_func(b_wire_validwrite) },
|
||||
{ be_const_key(_available, -1), be_const_func(b_wire_available) },
|
||||
{ be_const_key(detect, -1), be_const_func(b_wire_detect) },
|
||||
{ be_const_key(read_bytes, -1), be_const_closure(read_bytes_closure) },
|
||||
};
|
||||
|
||||
static be_define_const_map(
|
||||
be_class_tasmota_wire_map,
|
||||
14
|
||||
);
|
||||
|
||||
BE_EXPORT_VARIABLE be_define_const_class(
|
||||
be_class_tasmota_wire,
|
||||
1,
|
||||
NULL,
|
||||
Wire
|
||||
);
|
|
@ -0,0 +1,25 @@
|
|||
#include "be_constobj.h"
|
||||
|
||||
static be_define_const_map_slots(be_tasmota_driver_map) {
|
||||
{ be_const_key(get_tasmota, -1), be_const_func(d_getTasmotaGlob) },
|
||||
{ be_const_key(web_sensor, -1), be_const_int(0) },
|
||||
{ be_const_key(json_append, 0), be_const_int(1) },
|
||||
{ be_const_key(every_second, 4), be_const_int(2) },
|
||||
{ be_const_key(every_100ms, 7), be_const_int(3) },
|
||||
{ be_const_key(web_add_main_button, -1), be_const_int(4) },
|
||||
{ be_const_key(web_add_button, -1), be_const_int(5) },
|
||||
{ be_const_key(save_before_restart, -1), be_const_int(6) },
|
||||
{ be_const_key(button_pressed, 1), be_const_int(7) },
|
||||
};
|
||||
|
||||
static be_define_const_map(
|
||||
be_tasmota_driver_map,
|
||||
9
|
||||
);
|
||||
|
||||
BE_EXPORT_VARIABLE be_define_const_class(
|
||||
be_tasmota_driver,
|
||||
8,
|
||||
NULL,
|
||||
Driver
|
||||
);
|
|
@ -0,0 +1,17 @@
|
|||
#include "be_constobj.h"
|
||||
|
||||
static be_define_const_map_slots(m_libenergy_map) {
|
||||
{ be_const_key(read, -1), be_const_func(b_nrg_read) },
|
||||
};
|
||||
|
||||
static be_define_const_map(
|
||||
m_libenergy_map,
|
||||
1
|
||||
);
|
||||
|
||||
static be_define_const_module(
|
||||
m_libenergy,
|
||||
"energy"
|
||||
);
|
||||
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(energy, NULL);
|
|
@ -0,0 +1,21 @@
|
|||
#include "be_constobj.h"
|
||||
|
||||
static be_define_const_map_slots(m_liblight_map) {
|
||||
{ be_const_key(gamma8, 1), be_const_func(l_gamma8) },
|
||||
{ be_const_key(get, -1), be_const_func(l_getlight) },
|
||||
{ be_const_key(set, 4), be_const_func(l_setlight) },
|
||||
{ be_const_key(gamma10, -1), be_const_func(l_gamma10) },
|
||||
{ be_const_key(reverse_gamma10, -1), be_const_func(l_rev_gamma10) },
|
||||
};
|
||||
|
||||
static be_define_const_map(
|
||||
m_liblight_map,
|
||||
5
|
||||
);
|
||||
|
||||
static be_define_const_module(
|
||||
m_liblight,
|
||||
"light"
|
||||
);
|
||||
|
||||
BE_EXPORT_VARIABLE be_define_const_native_module(light, NULL);
|
|
@ -1,468 +1,470 @@
|
|||
#include "be_constobj.h"
|
||||
|
||||
static be_define_const_map_slots(m_liblvgl_map) {
|
||||
{ be_const_key(DISP_SIZE_MEDIUM, -1), be_const_int(1) },
|
||||
{ be_const_key(BORDER_SIDE_INTERNAL, -1), be_const_int(16) },
|
||||
{ be_const_key(SYMBOL_PAUSE, -1), be_const_str(&be_local_const_str_SYMBOL_PAUSE) },
|
||||
{ be_const_key(FS_RES_FS_ERR, 193), be_const_int(2) },
|
||||
{ be_const_key(ANIM_ON, -1), be_const_int(1) },
|
||||
{ be_const_key(OPA_40, -1), be_const_int(102) },
|
||||
{ be_const_key(SCROLLBAR_MODE_OFF, 400), be_const_int(0) },
|
||||
{ be_const_key(STYLE_VALUE_FONT, 280), be_const_int(126) },
|
||||
{ be_const_key(STYLE_TRANSFORM_HEIGHT, -1), be_const_int(5) },
|
||||
{ be_const_key(ARC_PART_INDIC, -1), be_const_int(1) },
|
||||
{ be_const_key(DISP_ROT_NONE, 395), be_const_int(0) },
|
||||
{ be_const_key(scr_act, 433), be_const_func(lv0_scr_act) },
|
||||
{ be_const_key(STYLE_PAD_BOTTOM, -1), be_const_int(17) },
|
||||
{ be_const_key(SYMBOL_BATTERY_FULL, 278), be_const_str(&be_local_const_str_SYMBOL_BATTERY_FULL) },
|
||||
{ be_const_key(RED, -1), be_const_int(16711680) },
|
||||
{ be_const_key(TXT_CMD_STATE_IN, 130), be_const_int(2) },
|
||||
{ be_const_key(GRAD_DIR_NONE, -1), be_const_int(0) },
|
||||
{ be_const_key(OPA_100, -1), be_const_int(255) },
|
||||
{ be_const_key(SLIDER_TYPE_RANGE, 370), be_const_int(2) },
|
||||
{ be_const_key(SYMBOL_BATTERY_2, -1), be_const_str(&be_local_const_str_SYMBOL_BATTERY_2) },
|
||||
{ be_const_key(STYLE_VALUE_OFS_X, 434), be_const_int(115) },
|
||||
{ be_const_key(STYLE_SCALE_WIDTH, -1), be_const_int(192) },
|
||||
{ be_const_key(STYLE_SCALE_END_BORDER_WIDTH, -1), be_const_int(194) },
|
||||
{ be_const_key(ALIGN_OUT_TOP_RIGHT, -1), be_const_int(11) },
|
||||
{ be_const_key(ALIGN_OUT_LEFT_TOP, -1), be_const_int(15) },
|
||||
{ be_const_key(SYMBOL_SD_CARD, -1), be_const_str(&be_local_const_str_SYMBOL_SD_CARD) },
|
||||
{ be_const_key(EVENT_INSERT, -1), be_const_int(17) },
|
||||
{ be_const_key(SYMBOL_PLAY, -1), be_const_str(&be_local_const_str_SYMBOL_PLAY) },
|
||||
{ be_const_key(VSPI, -1), be_const_int(1) },
|
||||
{ be_const_key(STYLE_SHADOW_WIDTH, 376), be_const_int(80) },
|
||||
{ be_const_key(LABEL_LONG_CROP, -1), be_const_int(5) },
|
||||
{ be_const_key(ALIGN_IN_TOP_RIGHT, -1), be_const_int(3) },
|
||||
{ be_const_key(LAYOUT_ROW_MID, -1), be_const_int(6) },
|
||||
{ be_const_key(OPA_70, -1), be_const_int(178) },
|
||||
{ be_const_key(SYMBOL_SHUFFLE, -1), be_const_str(&be_local_const_str_SYMBOL_SHUFFLE) },
|
||||
{ be_const_key(EVENT_APPLY, 66), be_const_int(19) },
|
||||
{ be_const_key(layer_top, -1), be_const_func(lv0_layer_top) },
|
||||
{ be_const_key(OBJ_PART_ALL, -1), be_const_int(255) },
|
||||
{ be_const_key(STYLE_BG_GRAD_STOP, 8), be_const_int(34) },
|
||||
{ be_const_key(STYLE_VALUE_STR, -1), be_const_int(127) },
|
||||
{ be_const_key(LABEL_ALIGN_LEFT, -1), be_const_int(0) },
|
||||
{ be_const_key(CHART_CURSOR_DOWN, -1), be_const_int(8) },
|
||||
{ be_const_key(OBJ_PART_VIRTUAL_FIRST, 41), be_const_int(1) },
|
||||
{ be_const_key(GRAD_DIR_HOR, 44), be_const_int(2) },
|
||||
{ be_const_key(LAYOUT_PRETTY_MID, 183), be_const_int(9) },
|
||||
{ be_const_key(STYLE_VALUE_BLEND_MODE, -1), be_const_int(114) },
|
||||
{ be_const_key(CHART_PART_CURSOR, 243), be_const_int(3) },
|
||||
{ be_const_key(BAR_TYPE_SYMMETRICAL, 308), be_const_int(1) },
|
||||
{ be_const_key(EVENT_FOCUSED, 122), be_const_int(13) },
|
||||
{ be_const_key(ROLLER_MODE_NORMAL, 177), be_const_int(0) },
|
||||
{ be_const_key(WHITE, 281), be_const_int(16777215) },
|
||||
{ be_const_key(KEY_PREV, -1), be_const_int(11) },
|
||||
{ be_const_key(SYMBOL_BATTERY_1, -1), be_const_str(&be_local_const_str_SYMBOL_BATTERY_1) },
|
||||
{ be_const_key(STYLE_PAD_RIGHT, -1), be_const_int(19) },
|
||||
{ be_const_key(LABEL_LONG_SROLL, -1), be_const_int(3) },
|
||||
{ be_const_key(FS_RES_NOT_IMP, -1), be_const_int(9) },
|
||||
{ be_const_key(STYLE_TRANSITION_DELAY, -1), be_const_int(177) },
|
||||
{ be_const_key(STYLE_VALUE_ALIGN, 276), be_const_int(117) },
|
||||
{ be_const_key(SYMBOL_FILE, -1), be_const_str(&be_local_const_str_SYMBOL_FILE) },
|
||||
{ be_const_key(STYLE_BORDER_BLEND_MODE, -1), be_const_int(50) },
|
||||
{ be_const_key(OPA_80, 59), be_const_int(204) },
|
||||
{ be_const_key(LAYOUT_CENTER, -1), be_const_int(1) },
|
||||
{ be_const_key(KEY_END, -1), be_const_int(3) },
|
||||
{ be_const_key(KEY_NEXT, -1), be_const_int(9) },
|
||||
{ be_const_key(STYLE_LINE_ROUNDED, 420), be_const_int(148) },
|
||||
{ be_const_key(CHART_AXIS_PRIMARY_Y, 427), be_const_int(0) },
|
||||
{ be_const_key(SYMBOL_BULLET, -1), be_const_str(&be_local_const_str_SYMBOL_BULLET) },
|
||||
{ be_const_key(BORDER_SIDE_TOP, -1), be_const_int(2) },
|
||||
{ be_const_key(SCROLLBAR_MODE_HIDE, -1), be_const_int(4) },
|
||||
{ be_const_key(TXT_FLAG_RIGHT, 238), be_const_int(8) },
|
||||
{ be_const_key(FIT_TIGHT, 20), be_const_int(1) },
|
||||
{ be_const_key(KEY_BACKSPACE, -1), be_const_int(8) },
|
||||
{ be_const_key(GAUGE_PART_MAIN, -1), be_const_int(0) },
|
||||
{ be_const_key(SPI, 178), be_const_int(0) },
|
||||
{ be_const_key(STYLE_TEXT_BLEND_MODE, 430), be_const_int(32899) },
|
||||
{ be_const_key(EVENT_DRAG_THROW_BEGIN, 121), be_const_int(10) },
|
||||
{ be_const_key(KEYBOARD_MODE_SPECIAL, -1), be_const_int(2) },
|
||||
{ be_const_key(SYMBOL_BACKSPACE, 187), be_const_str(&be_local_const_str_SYMBOL_BACKSPACE) },
|
||||
{ be_const_key(TABVIEW_TAB_POS_RIGHT, 0), be_const_int(4) },
|
||||
{ be_const_key(STYLE_PATTERN_BLEND_MODE, 233), be_const_int(96) },
|
||||
{ be_const_key(BTN_STATE_CHECKED_RELEASED, -1), be_const_int(3) },
|
||||
{ be_const_key(EVENT_LONG_PRESSED, -1), be_const_int(4) },
|
||||
{ be_const_key(STYLE_VALUE_OFS_X, 424), be_const_int(115) },
|
||||
{ be_const_key(DISP_ROT_180, -1), be_const_int(2) },
|
||||
{ be_const_key(SYMBOL_PLUS, 152), be_const_str(&be_local_const_str_SYMBOL_PLUS) },
|
||||
{ be_const_key(TABVIEW_TAB_POS_BOTTOM, 143), be_const_int(2) },
|
||||
{ be_const_key(KEYBOARD_MODE_NUM, 228), be_const_int(3) },
|
||||
{ be_const_key(PROTECT_CLICK_FOCUS, -1), be_const_int(32) },
|
||||
{ be_const_key(CHART_CURSOR_LEFT, 300), be_const_int(4) },
|
||||
{ be_const_key(PROTECT_FOLLOW, 53), be_const_int(8) },
|
||||
{ be_const_key(FS_RES_OUT_OF_MEM, -1), be_const_int(10) },
|
||||
{ be_const_key(FS_RES_INV_PARAM, -1), be_const_int(11) },
|
||||
{ be_const_key(STYLE_BORDER_COLOR, -1), be_const_int(57) },
|
||||
{ be_const_key(FS_MODE_RD, -1), be_const_int(2) },
|
||||
{ be_const_key(LAYOUT_OFF, 263), be_const_int(0) },
|
||||
{ be_const_key(CHART_PART_SERIES, -1), be_const_int(2) },
|
||||
{ be_const_key(STYLE_TRANSITION_PROP_1, 388), be_const_int(178) },
|
||||
{ be_const_key(STYLE_VALUE_STR, -1), be_const_int(127) },
|
||||
{ be_const_key(SYMBOL_SETTINGS, -1), be_const_str(&be_local_const_str_SYMBOL_SETTINGS) },
|
||||
{ be_const_key(FS_RES_BUSY, -1), be_const_int(7) },
|
||||
{ be_const_key(BLACK, 303), be_const_int(0) },
|
||||
{ be_const_key(CHART_TYPE_LINE, -1), be_const_int(1) },
|
||||
{ be_const_key(LAYOUT_GRID, 267), be_const_int(11) },
|
||||
{ be_const_key(STYLE_VALUE_FONT, -1), be_const_int(126) },
|
||||
{ be_const_key(OPA_40, -1), be_const_int(102) },
|
||||
{ be_const_key(STYLE_TRANSITION_PROP_6, -1), be_const_int(183) },
|
||||
{ be_const_key(STYLE_BORDER_BLEND_MODE, 370), be_const_int(50) },
|
||||
{ be_const_key(CALENDAR_PART_DAY_NAMES, 158), be_const_int(2) },
|
||||
{ be_const_key(FS_RES_TOUT, -1), be_const_int(8) },
|
||||
{ be_const_key(LABEL_ALIGN_LEFT, 198), be_const_int(0) },
|
||||
{ be_const_key(BORDER_SIDE_RIGHT, -1), be_const_int(8) },
|
||||
{ be_const_key(DISP_SIZE_MEDIUM, -1), be_const_int(1) },
|
||||
{ be_const_key(SYMBOL_HOME, 350), be_const_str(&be_local_const_str_SYMBOL_HOME) },
|
||||
{ be_const_key(CALENDAR_PART_BG, -1), be_const_int(0) },
|
||||
{ be_const_key(SILVER, 274), be_const_int(12632256) },
|
||||
{ be_const_key(STYLE_TEXT_LINE_SPACE, -1), be_const_int(32897) },
|
||||
{ be_const_key(STYLE_BG_COLOR, -1), be_const_int(41) },
|
||||
{ be_const_key(RED, -1), be_const_int(16711680) },
|
||||
{ be_const_key(STYLE_BG_OPA, 442), be_const_int(44) },
|
||||
{ be_const_key(OPA_10, -1), be_const_int(25) },
|
||||
{ be_const_key(STYLE_VALUE_OFS_Y, 56), be_const_int(116) },
|
||||
{ be_const_key(LAYOUT_OFF, 164), be_const_int(0) },
|
||||
{ be_const_key(ARC_TYPE_REVERSE, -1), be_const_int(2) },
|
||||
{ be_const_key(ALIGN_OUT_TOP_MID, 297), be_const_int(10) },
|
||||
{ be_const_key(KEYBOARD_MODE_SPECIAL, 367), be_const_int(2) },
|
||||
{ be_const_key(BORDER_SIDE_BOTTOM, 394), be_const_int(1) },
|
||||
{ be_const_key(CHART_CURSOR_RIGHT, 412), be_const_int(1) },
|
||||
{ be_const_key(STATE_FOCUSED, -1), be_const_int(2) },
|
||||
{ be_const_key(OBJ_PART_MAIN, -1), be_const_int(0) },
|
||||
{ be_const_key(STYLE_TRANSFORM_ZOOM, 290), be_const_int(7) },
|
||||
{ be_const_key(STYLE_BG_MAIN_STOP, -1), be_const_int(33) },
|
||||
{ be_const_key(SYMBOL_AUDIO, -1), be_const_str(&be_local_const_str_SYMBOL_AUDIO) },
|
||||
{ be_const_key(EVENT_APPLY, 183), be_const_int(19) },
|
||||
{ be_const_key(CHART_CURSOR_DOWN, -1), be_const_int(8) },
|
||||
{ be_const_key(KEYBOARD_PART_BG, -1), be_const_int(0) },
|
||||
{ be_const_key(DROPDOWN_PART_MAIN, 157), be_const_int(0) },
|
||||
{ be_const_key(TXT_FLAG_RECOLOR, 178), be_const_int(1) },
|
||||
{ be_const_key(SYMBOL_TRASH, 37), be_const_str(&be_local_const_str_SYMBOL_TRASH) },
|
||||
{ be_const_key(scr_act, 364), be_const_func(lv0_scr_act) },
|
||||
{ be_const_key(I2C, 382), be_const_int(1) },
|
||||
{ be_const_key(CALENDAR_PART_DATE, 141), be_const_int(3) },
|
||||
{ be_const_key(STYLE_SHADOW_OFS_X, -1), be_const_int(81) },
|
||||
{ be_const_key(OBJ_PART_ALL, 295), be_const_int(255) },
|
||||
{ be_const_key(screenshot, 201), be_const_func(lv0_screenshot) },
|
||||
{ be_const_key(SYMBOL_LOOP, 94), be_const_str(&be_local_const_str_SYMBOL_LOOP) },
|
||||
{ be_const_key(EVENT_DEFOCUSED, -1), be_const_int(14) },
|
||||
{ be_const_key(GESTURE_DIR_BOTTOM, 284), be_const_int(1) },
|
||||
{ be_const_key(ALIGN_OUT_LEFT_BOTTOM, -1), be_const_int(17) },
|
||||
{ be_const_key(DISP_SIZE_LARGE, 348), be_const_int(2) },
|
||||
{ be_const_key(STATE_DEFAULT, -1), be_const_int(0) },
|
||||
{ be_const_key(EVENT_RELEASED, -1), be_const_int(7) },
|
||||
{ be_const_key(STYLE_TRANSITION_PROP_2, -1), be_const_int(179) },
|
||||
{ be_const_key(BLEND_MODE_NORMAL, -1), be_const_int(0) },
|
||||
{ be_const_key(STYLE_LINE_OPA, 402), be_const_int(156) },
|
||||
{ be_const_key(ARC_PART_KNOB, -1), be_const_int(2) },
|
||||
{ be_const_key(ARC_TYPE_NORMAL, 70), be_const_int(0) },
|
||||
{ be_const_key(EVENT_CLICKED, -1), be_const_int(6) },
|
||||
{ be_const_key(LAYOUT_COLUMN_LEFT, 229), be_const_int(2) },
|
||||
{ be_const_key(BLACK, 258), be_const_int(0) },
|
||||
{ be_const_key(SYMBOL_IMAGE, 68), be_const_str(&be_local_const_str_SYMBOL_IMAGE) },
|
||||
{ be_const_key(ALIGN_OUT_RIGHT_TOP, 180), be_const_int(18) },
|
||||
{ be_const_key(STYLE_VALUE_COLOR, -1), be_const_int(121) },
|
||||
{ be_const_key(SYMBOL_CLOSE, 378), be_const_str(&be_local_const_str_SYMBOL_CLOSE) },
|
||||
{ be_const_key(DISP_ROT_270, -1), be_const_int(3) },
|
||||
{ be_const_key(STYLE_TRANSITION_PROP_4, -1), be_const_int(181) },
|
||||
{ be_const_key(STATE_HOVERED, -1), be_const_int(8) },
|
||||
{ be_const_key(CPICKER_COLOR_MODE_VALUE, 410), be_const_int(2) },
|
||||
{ be_const_key(TEXT_DECOR_NONE, -1), be_const_int(0) },
|
||||
{ be_const_key(PAGE_EDGE_BOTTOM, 105), be_const_int(8) },
|
||||
{ be_const_key(ALIGN_OUT_TOP_RIGHT, -1), be_const_int(11) },
|
||||
{ be_const_key(SYMBOL_COPY, 250), be_const_str(&be_local_const_str_SYMBOL_COPY) },
|
||||
{ be_const_key(KEY_PREV, -1), be_const_int(11) },
|
||||
{ be_const_key(STYLE_LINE_COLOR, -1), be_const_int(153) },
|
||||
{ be_const_key(STYLE_MARGIN_LEFT, -1), be_const_int(23) },
|
||||
{ be_const_key(STYLE_TRANSITION_PROP_2, 387), be_const_int(179) },
|
||||
{ be_const_key(OPA_60, -1), be_const_int(153) },
|
||||
{ be_const_key(KEYBOARD_MODE_TEXT_UPPER, -1), be_const_int(1) },
|
||||
{ be_const_key(LABEL_LONG_SROLL, 249), be_const_int(3) },
|
||||
{ be_const_key(FS_RES_NOT_IMP, 63), be_const_int(9) },
|
||||
{ be_const_key(STYLE_PAD_RIGHT, -1), be_const_int(19) },
|
||||
{ be_const_key(CHART_CURSOR_NONE, 293), be_const_int(0) },
|
||||
{ be_const_key(FS_MODE_RD, -1), be_const_int(2) },
|
||||
{ be_const_key(LIST_PART_EDGE_FLASH, 438), be_const_int(2) },
|
||||
{ be_const_key(SYMBOL_BELL, 78), be_const_str(&be_local_const_str_SYMBOL_BELL) },
|
||||
{ be_const_key(LABEL_LONG_CROP, -1), be_const_int(5) },
|
||||
{ be_const_key(SYMBOL_POWER, -1), be_const_str(&be_local_const_str_SYMBOL_POWER) },
|
||||
{ be_const_key(SYMBOL_UP, 57), be_const_str(&be_local_const_str_SYMBOL_UP) },
|
||||
{ be_const_key(SYMBOL_MINUS, -1), be_const_str(&be_local_const_str_SYMBOL_MINUS) },
|
||||
{ be_const_key(BLEND_MODE_SUBTRACTIVE, 246), be_const_int(2) },
|
||||
{ be_const_key(STYLE_MARGIN_BOTTOM, -1), be_const_int(22) },
|
||||
{ be_const_key(SCROLLBAR_MODE_AUTO, 439), be_const_int(3) },
|
||||
{ be_const_key(STYLE_IMAGE_OPA, -1), be_const_int(32940) },
|
||||
{ be_const_key(CHART_AXIS_PRIMARY_Y, 292), be_const_int(0) },
|
||||
{ be_const_key(SCROLLBAR_MODE_HIDE, 209), be_const_int(4) },
|
||||
{ be_const_key(EVENT_DRAG_BEGIN, 211), be_const_int(8) },
|
||||
{ be_const_key(FS_RES_OUT_OF_MEM, 434), be_const_int(10) },
|
||||
{ be_const_key(SYMBOL_VOLUME_MAX, -1), be_const_str(&be_local_const_str_SYMBOL_VOLUME_MAX) },
|
||||
{ be_const_key(SLIDER_TYPE_NORMAL, -1), be_const_int(0) },
|
||||
{ be_const_key(BTN_STATE_RELEASED, -1), be_const_int(0) },
|
||||
{ be_const_key(CPICKER_COLOR_MODE_VALUE, -1), be_const_int(2) },
|
||||
{ be_const_key(PAGE_EDGE_RIGHT, -1), be_const_int(4) },
|
||||
{ be_const_key(FS_RES_HW_ERR, -1), be_const_int(1) },
|
||||
{ be_const_key(DISP_SIZE_EXTRA_LARGE, -1), be_const_int(3) },
|
||||
{ be_const_key(SYMBOL_SAVE, 191), be_const_str(&be_local_const_str_SYMBOL_SAVE) },
|
||||
{ be_const_key(STYLE_TEXT_BLEND_MODE, -1), be_const_int(32899) },
|
||||
{ be_const_key(OBJMASK_PART_MAIN, -1), be_const_int(0) },
|
||||
{ be_const_key(SYMBOL_USB, 389), be_const_str(&be_local_const_str_SYMBOL_USB) },
|
||||
{ be_const_key(STYLE_BORDER_POST, -1), be_const_int(51) },
|
||||
{ be_const_key(FS_RES_INV_PARAM, -1), be_const_int(11) },
|
||||
{ be_const_key(TEAL, 264), be_const_int(32896) },
|
||||
{ be_const_key(LAYOUT_COLUMN_MID, -1), be_const_int(3) },
|
||||
{ be_const_key(LAYOUT_COLUMN_LEFT, -1), be_const_int(2) },
|
||||
{ be_const_key(ALIGN_IN_BOTTOM_RIGHT, -1), be_const_int(6) },
|
||||
{ be_const_key(STYLE_BORDER_COLOR, -1), be_const_int(57) },
|
||||
{ be_const_key(SCROLLBAR_MODE_OFF, -1), be_const_int(0) },
|
||||
{ be_const_key(ALIGN_OUT_RIGHT_MID, 188), be_const_int(19) },
|
||||
{ be_const_key(TXT_CMD_STATE_WAIT, -1), be_const_int(0) },
|
||||
{ be_const_key(STYLE_BG_GRAD_STOP, 377), be_const_int(34) },
|
||||
{ be_const_key(STYLE_PAD_TOP, 163), be_const_int(16) },
|
||||
{ be_const_key(GESTURE_DIR_BOTTOM, -1), be_const_int(1) },
|
||||
{ be_const_key(CHART_CURSOR_LEFT, 423), be_const_int(4) },
|
||||
{ be_const_key(DISP_SIZE_SMALL, -1), be_const_int(0) },
|
||||
{ be_const_key(BTN_STATE_CHECKED_PRESSED, -1), be_const_int(4) },
|
||||
{ be_const_key(EVENT_GESTURE, -1), be_const_int(11) },
|
||||
{ be_const_key(BTN_STATE_DISABLED, 396), be_const_int(2) },
|
||||
{ be_const_key(KEY_ENTER, 222), be_const_int(10) },
|
||||
{ be_const_key(EVENT_RELEASED, -1), be_const_int(7) },
|
||||
{ be_const_key(GRAD_DIR_HOR, -1), be_const_int(2) },
|
||||
{ be_const_key(ALIGN_OUT_LEFT_BOTTOM, -1), be_const_int(17) },
|
||||
{ be_const_key(SYMBOL_BLUETOOTH, -1), be_const_str(&be_local_const_str_SYMBOL_BLUETOOTH) },
|
||||
{ be_const_key(CHECKBOX_PART_BULLET, 41), be_const_int(64) },
|
||||
{ be_const_key(KEY_DEL, -1), be_const_int(127) },
|
||||
{ be_const_key(LIST_PART_BG, -1), be_const_int(0) },
|
||||
{ be_const_key(PROTECT_CHILD_CHG, -1), be_const_int(1) },
|
||||
{ be_const_key(KEYBOARD_MODE_TEXT_LOWER, -1), be_const_int(0) },
|
||||
{ be_const_key(CPICKER_COLOR_MODE_SATURATION, 190), be_const_int(1) },
|
||||
{ be_const_key(LAYOUT_PRETTY_BOTTOM, -1), be_const_int(10) },
|
||||
{ be_const_key(EVENT_CLICKED, -1), be_const_int(6) },
|
||||
{ be_const_key(OPA_0, -1), be_const_int(0) },
|
||||
{ be_const_key(OLIVE, 400), be_const_int(8421376) },
|
||||
{ be_const_key(ALIGN_OUT_RIGHT_BOTTOM, -1), be_const_int(20) },
|
||||
{ be_const_key(TEXT_DECOR_NONE, 360), be_const_int(0) },
|
||||
{ be_const_key(SYMBOL_BATTERY_EMPTY, -1), be_const_str(&be_local_const_str_SYMBOL_BATTERY_EMPTY) },
|
||||
{ be_const_key(PROTECT_FOLLOW, 416), be_const_int(8) },
|
||||
{ be_const_key(STYLE_SHADOW_BLEND_MODE, -1), be_const_int(84) },
|
||||
{ be_const_key(STYLE_PATTERN_IMAGE, 234), be_const_int(110) },
|
||||
{ be_const_key(STATE_EDITED, 75), be_const_int(4) },
|
||||
{ be_const_key(DROPDOWN_PART_SCROLLBAR, 217), be_const_int(65) },
|
||||
{ be_const_key(SPINNER_DIR_BACKWARD, -1), be_const_int(1) },
|
||||
{ be_const_key(GRAD_DIR_VER, -1), be_const_int(1) },
|
||||
{ be_const_key(TXT_FLAG_RIGHT, 330), be_const_int(8) },
|
||||
{ be_const_key(BTNMATRIX_CTRL_CLICK_TRIG, 398), be_const_int(256) },
|
||||
{ be_const_key(OPA_COVER, 345), be_const_int(255) },
|
||||
{ be_const_key(KEY_END, 32), be_const_int(3) },
|
||||
{ be_const_key(DISP_SIZE_LARGE, -1), be_const_int(2) },
|
||||
{ be_const_key(layer_sys, -1), be_const_func(lv0_layer_sys) },
|
||||
{ be_const_key(DISP_ROT_NONE, 13), be_const_int(0) },
|
||||
{ be_const_key(CALENDAR_PART_HEADER, -1), be_const_int(1) },
|
||||
{ be_const_key(ALIGN_OUT_BOTTOM_LEFT, -1), be_const_int(12) },
|
||||
{ be_const_key(TXT_CMD_STATE_IN, 385), be_const_int(2) },
|
||||
{ be_const_key(EVENT_FOCUSED, -1), be_const_int(13) },
|
||||
{ be_const_key(EVENT_DELETE, 14), be_const_int(21) },
|
||||
{ be_const_key(PAGE_EDGE_LEFT, -1), be_const_int(1) },
|
||||
{ be_const_key(STYLE_CLIP_CORNER, -1), be_const_int(2) },
|
||||
{ be_const_key(FIT_PARENT, -1), be_const_int(2) },
|
||||
{ be_const_key(STYLE_LINE_ROUNDED, 64), be_const_int(148) },
|
||||
{ be_const_key(GRAY, -1), be_const_int(8421504) },
|
||||
{ be_const_key(BORDER_SIDE_FULL, -1), be_const_int(15) },
|
||||
{ be_const_key(SYMBOL_CALL, -1), be_const_str(&be_local_const_str_SYMBOL_CALL) },
|
||||
{ be_const_key(SYMBOL_MUTE, 131), be_const_str(&be_local_const_str_SYMBOL_MUTE) },
|
||||
{ be_const_key(PAGE_EDGE_TOP, -1), be_const_int(2) },
|
||||
{ be_const_key(BAR_TYPE_CUSTOM, 54), be_const_int(2) },
|
||||
{ be_const_key(STYLE_SCALE_END_BORDER_WIDTH, -1), be_const_int(194) },
|
||||
{ be_const_key(FS_MODE_WR, -1), be_const_int(1) },
|
||||
{ be_const_key(CPICKER_PART_KNOB, 399), be_const_int(1) },
|
||||
{ be_const_key(EVENT_SHORT_CLICKED, -1), be_const_int(3) },
|
||||
{ be_const_key(LIST_PART_SCROLLBAR, -1), be_const_int(1) },
|
||||
{ be_const_key(STYLE_LINE_BLEND_MODE, 427), be_const_int(145) },
|
||||
{ be_const_key(CPICKER_TYPE_DISC, 440), be_const_int(1) },
|
||||
{ be_const_key(OPA_90, -1), be_const_int(229) },
|
||||
{ be_const_key(ALIGN_IN_LEFT_MID, -1), be_const_int(7) },
|
||||
{ be_const_key(SYMBOL_OK, -1), be_const_str(&be_local_const_str_SYMBOL_OK) },
|
||||
{ be_const_key(STYLE_TRANSITION_PATH, 159), be_const_int(190) },
|
||||
{ be_const_key(TEMPL_STYLE_X, 35), be_const_int(0) },
|
||||
{ be_const_key(KEY_HOME, -1), be_const_int(2) },
|
||||
{ be_const_key(SYMBOL_LEFT, 58), be_const_str(&be_local_const_str_SYMBOL_LEFT) },
|
||||
{ be_const_key(STYLE_SIZE, -1), be_const_int(3) },
|
||||
{ be_const_key(STYLE_SCALE_GRAD_COLOR, -1), be_const_int(201) },
|
||||
{ be_const_key(DROPDOWN_DIR_DOWN, -1), be_const_int(0) },
|
||||
{ be_const_key(LABEL_ALIGN_RIGHT, -1), be_const_int(2) },
|
||||
{ be_const_key(DROPDOWN_DIR_UP, -1), be_const_int(1) },
|
||||
{ be_const_key(CHART_UPDATE_MODE_CIRCULAR, -1), be_const_int(1) },
|
||||
{ be_const_key(BTNMATRIX_CTRL_DISABLED, -1), be_const_int(32) },
|
||||
{ be_const_key(ARC_PART_INDIC, -1), be_const_int(1) },
|
||||
{ be_const_key(LAYOUT_COLUMN_RIGHT, 112), be_const_int(4) },
|
||||
{ be_const_key(EVENT_DRAG_THROW_BEGIN, -1), be_const_int(10) },
|
||||
{ be_const_key(BTNMATRIX_CTRL_CHECKABLE, 296), be_const_int(64) },
|
||||
{ be_const_key(SYMBOL_EYE_OPEN, -1), be_const_str(&be_local_const_str_SYMBOL_EYE_OPEN) },
|
||||
{ be_const_key(STATE_CHECKED, -1), be_const_int(1) },
|
||||
{ be_const_key(DRAG_DIR_BOTH, 392), be_const_int(3) },
|
||||
{ be_const_key(SPINNER_TYPE_SPINNING_ARC, -1), be_const_int(0) },
|
||||
{ be_const_key(CHART_AXIS_DRAW_LAST_TICK, -1), be_const_int(1) },
|
||||
{ be_const_key(PROTECT_PARENT, 315), be_const_int(2) },
|
||||
{ be_const_key(ALIGN_OUT_BOTTOM_MID, 235), be_const_int(13) },
|
||||
{ be_const_key(CHART_PART_SERIES, 284), be_const_int(2) },
|
||||
{ be_const_key(FS_RES_UNKNOWN, -1), be_const_int(12) },
|
||||
{ be_const_key(MAROON, -1), be_const_int(8388608) },
|
||||
{ be_const_key(STYLE_SHADOW_OPA, -1), be_const_int(92) },
|
||||
{ be_const_key(GREEN, -1), be_const_int(32768) },
|
||||
{ be_const_key(STYLE_OUTLINE_COLOR, -1), be_const_int(73) },
|
||||
{ be_const_key(load_font, -1), be_const_func(lv0_load_font) },
|
||||
{ be_const_key(STYLE_LINE_OPA, 132), be_const_int(156) },
|
||||
{ be_const_key(STYLE_TEXT_FONT, -1), be_const_int(32910) },
|
||||
{ be_const_key(TEXT_DECOR_STRIKETHROUGH, -1), be_const_int(2) },
|
||||
{ be_const_key(EVENT_PRESSING, -1), be_const_int(1) },
|
||||
{ be_const_key(DISP_ROT_90, -1), be_const_int(1) },
|
||||
{ be_const_key(STYLE_LINE_DASH_GAP, -1), be_const_int(147) },
|
||||
{ be_const_key(ARC_PART_KNOB, -1), be_const_int(2) },
|
||||
{ be_const_key(STYLE_IMAGE_BLEND_MODE, 99), be_const_int(32928) },
|
||||
{ be_const_key(STATE_HOVERED, -1), be_const_int(8) },
|
||||
{ be_const_key(STYLE_LINE_DASH_WIDTH, -1), be_const_int(146) },
|
||||
{ be_const_key(KEY_UP, -1), be_const_int(17) },
|
||||
{ be_const_key(SLIDER_TYPE_RANGE, -1), be_const_int(2) },
|
||||
{ be_const_key(ANIM_OFF, -1), be_const_int(0) },
|
||||
{ be_const_key(CHART_PART_CURSOR, -1), be_const_int(3) },
|
||||
{ be_const_key(LAYOUT_ROW_MID, 354), be_const_int(6) },
|
||||
{ be_const_key(STYLE_VALUE_ALIGN, 448), be_const_int(117) },
|
||||
{ be_const_key(ALIGN_OUT_LEFT_TOP, -1), be_const_int(15) },
|
||||
{ be_const_key(SCROLLBAR_MODE_ON, 97), be_const_int(1) },
|
||||
{ be_const_key(SYMBOL_PREV, -1), be_const_str(&be_local_const_str_SYMBOL_PREV) },
|
||||
{ be_const_key(DROPDOWN_PART_SELECTED, 337), be_const_int(66) },
|
||||
{ be_const_key(LIME, 39), be_const_int(65280) },
|
||||
{ be_const_key(STYLE_BORDER_OPA, -1), be_const_int(60) },
|
||||
{ be_const_key(SYMBOL_DRIVE, 127), be_const_str(&be_local_const_str_SYMBOL_DRIVE) },
|
||||
{ be_const_key(montserrat_font, 280), be_const_func(lv0_load_montserrat_font) },
|
||||
{ be_const_key(DROPDOWN_DIR_LEFT, -1), be_const_int(2) },
|
||||
{ be_const_key(EVENT_CANCEL, 288), be_const_int(20) },
|
||||
{ be_const_key(SYMBOL_BATTERY_2, -1), be_const_str(&be_local_const_str_SYMBOL_BATTERY_2) },
|
||||
{ be_const_key(DROPDOWN_DIR_RIGHT, 84), be_const_int(3) },
|
||||
{ be_const_key(TXT_CMD_STATE_PAR, -1), be_const_int(1) },
|
||||
{ be_const_key(STYLE_TRANSITION_PROP_1, 91), be_const_int(178) },
|
||||
{ be_const_key(OPA_100, -1), be_const_int(255) },
|
||||
{ be_const_key(ALIGN_OUT_TOP_LEFT, -1), be_const_int(9) },
|
||||
{ be_const_key(SPINNER_DIR_FORWARD, -1), be_const_int(0) },
|
||||
{ be_const_key(STYLE_BORDER_WIDTH, -1), be_const_int(48) },
|
||||
{ be_const_key(SYMBOL_REFRESH, -1), be_const_str(&be_local_const_str_SYMBOL_REFRESH) },
|
||||
{ be_const_key(FS_RES_NOT_EX, 363), be_const_int(3) },
|
||||
{ be_const_key(TXT_FLAG_CENTER, 247), be_const_int(4) },
|
||||
{ be_const_key(FS_RES_LOCKED, 130), be_const_int(5) },
|
||||
{ be_const_key(STATE_DEFAULT, 338), be_const_int(0) },
|
||||
{ be_const_key(DROPDOWN_PART_LIST, -1), be_const_int(64) },
|
||||
{ be_const_key(SCROLLBAR_MODE_UNHIDE, 283), be_const_int(8) },
|
||||
{ be_const_key(STYLE_BG_GRAD_DIR, -1), be_const_int(35) },
|
||||
{ be_const_key(SSPI, -1), be_const_int(2) },
|
||||
{ be_const_key(SYMBOL_RIGHT, -1), be_const_str(&be_local_const_str_SYMBOL_RIGHT) },
|
||||
{ be_const_key(SYMBOL_PLAY, -1), be_const_str(&be_local_const_str_SYMBOL_PLAY) },
|
||||
{ be_const_key(LAYOUT_PRETTY_MID, -1), be_const_int(9) },
|
||||
{ be_const_key(STYLE_OUTLINE_OPA, -1), be_const_int(76) },
|
||||
{ be_const_key(LAYOUT_CENTER, -1), be_const_int(1) },
|
||||
{ be_const_key(KEYBOARD_PART_BTN, 286), be_const_int(1) },
|
||||
{ be_const_key(LED_PART_MAIN, -1), be_const_int(0) },
|
||||
{ be_const_key(EVENT_VALUE_CHANGED, -1), be_const_int(16) },
|
||||
{ be_const_key(OPA_20, 239), be_const_int(51) },
|
||||
{ be_const_key(CHART_UPDATE_MODE_SHIFT, -1), be_const_int(0) },
|
||||
{ be_const_key(STATE_PRESSED, -1), be_const_int(16) },
|
||||
{ be_const_key(BTN_STATE_CHECKED_DISABLED, -1), be_const_int(5) },
|
||||
{ be_const_key(OPA_TRANSP, 137), be_const_int(0) },
|
||||
{ be_const_key(STYLE_TRANSFORM_HEIGHT, -1), be_const_int(5) },
|
||||
{ be_const_key(STYLE_LINE_WIDTH, -1), be_const_int(144) },
|
||||
{ be_const_key(STYLE_TEXT_OPA, -1), be_const_int(32908) },
|
||||
{ be_const_key(STYLE_TEXT_LETTER_SPACE, -1), be_const_int(32896) },
|
||||
{ be_const_key(OPA_70, -1), be_const_int(178) },
|
||||
{ be_const_key(STYLE_SHADOW_OFS_Y, -1), be_const_int(82) },
|
||||
{ be_const_key(STYLE_VALUE_COLOR, 413), be_const_int(121) },
|
||||
{ be_const_key(TABVIEW_TAB_POS_TOP, -1), be_const_int(1) },
|
||||
{ be_const_key(LAYOUT_ROW_BOTTOM, 318), be_const_int(7) },
|
||||
{ be_const_key(ALIGN_CENTER, 144), be_const_int(0) },
|
||||
{ be_const_key(OPA_50, 278), be_const_int(127) },
|
||||
{ be_const_key(SYMBOL_CHARGE, -1), be_const_str(&be_local_const_str_SYMBOL_CHARGE) },
|
||||
{ be_const_key(CHART_AXIS_SECONDARY_Y, -1), be_const_int(1) },
|
||||
{ be_const_key(STYLE_IMAGE_RECOLOR, -1), be_const_int(32937) },
|
||||
{ be_const_key(SYMBOL_BACKSPACE, -1), be_const_str(&be_local_const_str_SYMBOL_BACKSPACE) },
|
||||
{ be_const_key(STYLE_TEXT_DECOR, 435), be_const_int(32898) },
|
||||
{ be_const_key(STYLE_TRANSITION_PROP_3, 212), be_const_int(180) },
|
||||
{ be_const_key(GAUGE_PART_MAIN, 428), be_const_int(0) },
|
||||
{ be_const_key(SYMBOL_DOWNLOAD, -1), be_const_str(&be_local_const_str_SYMBOL_DOWNLOAD) },
|
||||
{ be_const_key(ALIGN_OUT_BOTTOM_RIGHT, -1), be_const_int(14) },
|
||||
{ be_const_key(SYMBOL_DOWN, -1), be_const_str(&be_local_const_str_SYMBOL_DOWN) },
|
||||
{ be_const_key(EVENT_PRESSED, -1), be_const_int(0) },
|
||||
{ be_const_key(STYLE_VALUE_LETTER_SPACE, 18), be_const_int(112) },
|
||||
{ be_const_key(BTN_STATE_CHECKED_RELEASED, -1), be_const_int(3) },
|
||||
{ be_const_key(STYLE_OUTLINE_WIDTH, 304), be_const_int(64) },
|
||||
{ be_const_key(STYLE_PAD_INNER, -1), be_const_int(20) },
|
||||
{ be_const_key(STYLE_PATTERN_BLEND_MODE, -1), be_const_int(96) },
|
||||
{ be_const_key(LINEMETER_PART_MAIN, -1), be_const_int(0) },
|
||||
{ be_const_key(STYLE_SCALE_END_COLOR, -1), be_const_int(202) },
|
||||
{ be_const_key(LABEL_LONG_DOT, -1), be_const_int(2) },
|
||||
{ be_const_key(STYLE_TEXT_COLOR, 0), be_const_int(32905) },
|
||||
{ be_const_key(STYLE_PATTERN_RECOLOR_OPA, -1), be_const_int(109) },
|
||||
{ be_const_key(SYMBOL_FILE, -1), be_const_str(&be_local_const_str_SYMBOL_FILE) },
|
||||
{ be_const_key(STYLE_SCALE_BORDER_WIDTH, -1), be_const_int(193) },
|
||||
{ be_const_key(HSPI, -1), be_const_int(0) },
|
||||
{ be_const_key(OBJ_PART_VIRTUAL_FIRST, 341), be_const_int(1) },
|
||||
{ be_const_key(SYMBOL_WIFI, 179), be_const_str(&be_local_const_str_SYMBOL_WIFI) },
|
||||
{ be_const_key(LABEL_ALIGN_CENTER, -1), be_const_int(1) },
|
||||
{ be_const_key(ALIGN_OUT_LEFT_MID, -1), be_const_int(16) },
|
||||
{ be_const_key(STYLE_SCALE_END_LINE_WIDTH, -1), be_const_int(195) },
|
||||
{ be_const_key(ROLLER_MODE_NORMAL, 409), be_const_int(0) },
|
||||
{ be_const_key(SYMBOL_EDIT, 271), be_const_str(&be_local_const_str_SYMBOL_EDIT) },
|
||||
{ be_const_key(STYLE_SCALE_WIDTH, -1), be_const_int(192) },
|
||||
{ be_const_key(BORDER_SIDE_INTERNAL, -1), be_const_int(16) },
|
||||
{ be_const_key(CHECKBOX_PART_BG, -1), be_const_int(0) },
|
||||
{ be_const_key(CHART_TYPE_NONE, 355), be_const_int(0) },
|
||||
{ be_const_key(SYMBOL_UPLOAD, 401), be_const_str(&be_local_const_str_SYMBOL_UPLOAD) },
|
||||
{ be_const_key(ALIGN_OUT_RIGHT_TOP, -1), be_const_int(18) },
|
||||
{ be_const_key(DRAG_DIR_VER, -1), be_const_int(2) },
|
||||
{ be_const_key(CHART_PART_BG, 160), be_const_int(0) },
|
||||
{ be_const_key(EVENT_INSERT, -1), be_const_int(17) },
|
||||
{ be_const_key(BORDER_SIDE_TOP, -1), be_const_int(2) },
|
||||
{ be_const_key(STYLE_TEXT_SEL_COLOR, -1), be_const_int(32906) },
|
||||
{ be_const_key(STYLE_IMAGE_RECOLOR_OPA, -1), be_const_int(32941) },
|
||||
{ be_const_key(SYMBOL_DOWN, 114), be_const_str(&be_local_const_str_SYMBOL_DOWN) },
|
||||
{ be_const_key(BTNMATRIX_CTRL_HIDDEN, 192), be_const_int(8) },
|
||||
{ be_const_key(FIT_TIGHT, -1), be_const_int(1) },
|
||||
{ be_const_key(STYLE_VALUE_BLEND_MODE, 347), be_const_int(114) },
|
||||
{ be_const_key(FS_RES_FS_ERR, 74), be_const_int(2) },
|
||||
{ be_const_key(SLIDER_TYPE_SYMMETRICAL, 373), be_const_int(1) },
|
||||
{ be_const_key(STYLE_TRANSITION_PROP_5, -1), be_const_int(182) },
|
||||
{ be_const_key(FS_RES_DENIED, 213), be_const_int(6) },
|
||||
{ be_const_key(DRAG_DIR_HOR, 349), be_const_int(1) },
|
||||
{ be_const_key(GAUGE_PART_MAJOR, 418), be_const_int(1) },
|
||||
{ be_const_key(PROTECT_EVENT_TO_DISABLED, 73), be_const_int(64) },
|
||||
{ be_const_key(STYLE_VALUE_OPA, -1), be_const_int(124) },
|
||||
{ be_const_key(EVENT_LEAVE, 282), be_const_int(15) },
|
||||
{ be_const_key(PROTECT_NONE, 81), be_const_int(0) },
|
||||
{ be_const_key(PROTECT_PRESS_LOST, -1), be_const_int(16) },
|
||||
{ be_const_key(YELLOW, 71), be_const_int(16776960) },
|
||||
{ be_const_key(GESTURE_DIR_RIGHT, -1), be_const_int(3) },
|
||||
{ be_const_key(VSPI, -1), be_const_int(1) },
|
||||
{ be_const_key(STYLE_PATTERN_RECOLOR, -1), be_const_int(105) },
|
||||
{ be_const_key(STYLE_SHADOW_COLOR, -1), be_const_int(89) },
|
||||
{ be_const_key(KEY_BACKSPACE, -1), be_const_int(8) },
|
||||
{ be_const_key(STYLE_OUTLINE_PAD, -1), be_const_int(65) },
|
||||
{ be_const_key(AQUA, 322), be_const_int(65535) },
|
||||
{ be_const_key(CHART_PART_SERIES_BG, 51), be_const_int(1) },
|
||||
{ be_const_key(SPINNER_TYPE_CONSTANT_ARC, 452), be_const_int(2) },
|
||||
{ be_const_key(ANIM_ON, 189), be_const_int(1) },
|
||||
{ be_const_key(STYLE_TRANSFORM_ANGLE, -1), be_const_int(6) },
|
||||
{ be_const_key(TEXTAREA_CURSOR_LAST, 23), be_const_int(32767) },
|
||||
{ be_const_key(STYLE_VALUE_LINE_SPACE, -1), be_const_int(113) },
|
||||
{ be_const_key(FIT_NONE, -1), be_const_int(0) },
|
||||
{ be_const_key(STYLE_TEXT_SEL_BG_COLOR, 153), be_const_int(32907) },
|
||||
{ be_const_key(STYLE_TRANSFORM_WIDTH, -1), be_const_int(4) },
|
||||
{ be_const_key(CPICKER_PART_MAIN, -1), be_const_int(0) },
|
||||
{ be_const_key(get_hor_res, -1), be_const_func(lv0_get_hor_res) },
|
||||
{ be_const_key(GRAD_DIR_NONE, -1), be_const_int(0) },
|
||||
{ be_const_key(STYLE_TRANSITION_TIME, -1), be_const_int(176) },
|
||||
{ be_const_key(STYLE_OUTLINE_BLEND_MODE, -1), be_const_int(66) },
|
||||
{ be_const_key(BAR_TYPE_SYMMETRICAL, -1), be_const_int(1) },
|
||||
{ be_const_key(ALIGN_IN_BOTTOM_LEFT, 277), be_const_int(4) },
|
||||
{ be_const_key(PROTECT_POS, 165), be_const_int(4) },
|
||||
{ be_const_key(DISP_ROT_270, -1), be_const_int(3) },
|
||||
{ be_const_key(EVENT_LONG_PRESSED, -1), be_const_int(4) },
|
||||
{ be_const_key(ALIGN_IN_TOP_LEFT, -1), be_const_int(1) },
|
||||
{ be_const_key(CYAN, -1), be_const_int(65535) },
|
||||
{ be_const_key(LABEL_LONG_EXPAND, -1), be_const_int(0) },
|
||||
{ be_const_key(STYLE_RADIUS, 79), be_const_int(1) },
|
||||
{ be_const_key(BLEND_MODE_ADDITIVE, -1), be_const_int(1) },
|
||||
{ be_const_key(TXT_FLAG_EXPAND, 301), be_const_int(2) },
|
||||
{ be_const_key(KEY_NEXT, -1), be_const_int(9) },
|
||||
{ be_const_key(KEY_RIGHT, 391), be_const_int(19) },
|
||||
{ be_const_key(OPA_80, -1), be_const_int(204) },
|
||||
{ be_const_key(LAYOUT_ROW_TOP, -1), be_const_int(5) },
|
||||
{ be_const_key(ROLLER_MODE_INFINITE, -1), be_const_int(1) },
|
||||
{ be_const_key(FS_RES_FULL, 403), be_const_int(4) },
|
||||
{ be_const_key(SPI, -1), be_const_int(0) },
|
||||
{ be_const_key(SCROLLBAR_MODE_DRAG, -1), be_const_int(2) },
|
||||
{ be_const_key(get_ver_res, 108), be_const_func(lv0_get_ver_res) },
|
||||
{ be_const_key(EVENT_REFRESH, -1), be_const_int(18) },
|
||||
{ be_const_key(BTNMATRIX_CTRL_NO_REPEAT, -1), be_const_int(16) },
|
||||
{ be_const_key(SYMBOL_SHUFFLE, -1), be_const_str(&be_local_const_str_SYMBOL_SHUFFLE) },
|
||||
{ be_const_key(STYLE_OPA_SCALE, -1), be_const_int(32780) },
|
||||
{ be_const_key(CHART_CURSOR_UP, -1), be_const_int(2) },
|
||||
{ be_const_key(STYLE_MARGIN_TOP, -1), be_const_int(21) },
|
||||
{ be_const_key(ARC_TYPE_SYMMETRIC, 272), be_const_int(1) },
|
||||
{ be_const_key(SYMBOL_BATTERY_3, -1), be_const_str(&be_local_const_str_SYMBOL_BATTERY_3) },
|
||||
{ be_const_key(start, 425), be_const_func(lv0_start) },
|
||||
{ be_const_key(SYMBOL_WARNING, 62), be_const_str(&be_local_const_str_SYMBOL_WARNING) },
|
||||
{ be_const_key(ALIGN_IN_BOTTOM_MID, -1), be_const_int(5) },
|
||||
{ be_const_key(STATE_DISABLED, -1), be_const_int(32) },
|
||||
{ be_const_key(KEY_ESC, -1), be_const_int(27) },
|
||||
{ be_const_key(CPICKER_TYPE_RECT, -1), be_const_int(0) },
|
||||
{ be_const_key(SYMBOL_KEYBOARD, -1), be_const_str(&be_local_const_str_SYMBOL_KEYBOARD) },
|
||||
{ be_const_key(SYMBOL_EYE_CLOSE, 174), be_const_str(&be_local_const_str_SYMBOL_EYE_CLOSE) },
|
||||
{ be_const_key(SYMBOL_IMAGE, 332), be_const_str(&be_local_const_str_SYMBOL_IMAGE) },
|
||||
{ be_const_key(SYMBOL_PAUSE, 229), be_const_str(&be_local_const_str_SYMBOL_PAUSE) },
|
||||
{ be_const_key(NAVY, 263), be_const_int(128) },
|
||||
{ be_const_key(EVENT_KEY, -1), be_const_int(12) },
|
||||
{ be_const_key(ALIGN_IN_TOP_MID, -1), be_const_int(2) },
|
||||
{ be_const_key(STYLE_BG_BLEND_MODE, -1), be_const_int(32) },
|
||||
{ be_const_key(SYMBOL_BULLET, -1), be_const_str(&be_local_const_str_SYMBOL_BULLET) },
|
||||
{ be_const_key(EVENT_DRAG_END, 450), be_const_int(9) },
|
||||
{ be_const_key(STYLE_SHADOW_WIDTH, -1), be_const_int(80) },
|
||||
{ be_const_key(TABVIEW_TAB_POS_RIGHT, -1), be_const_int(4) },
|
||||
{ be_const_key(STYLE_BORDER_SIDE, -1), be_const_int(49) },
|
||||
{ be_const_key(BLEND_MODE_NORMAL, -1), be_const_int(0) },
|
||||
{ be_const_key(SYMBOL_CLOSE, 455), be_const_str(&be_local_const_str_SYMBOL_CLOSE) },
|
||||
{ be_const_key(SYMBOL_DIRECTORY, -1), be_const_str(&be_local_const_str_SYMBOL_DIRECTORY) },
|
||||
{ be_const_key(GESTURE_DIR_LEFT, -1), be_const_int(2) },
|
||||
{ be_const_key(EVENT_PRESS_LOST, -1), be_const_int(2) },
|
||||
{ be_const_key(MAGENTA, 268), be_const_int(16711935) },
|
||||
{ be_const_key(BAR_TYPE_NORMAL, -1), be_const_int(0) },
|
||||
{ be_const_key(BLUE, 314), be_const_int(255) },
|
||||
{ be_const_key(STYLE_PAD_LEFT, -1), be_const_int(18) },
|
||||
{ be_const_key(FS_RES_OK, -1), be_const_int(0) },
|
||||
{ be_const_key(SYMBOL_LIST, -1), be_const_str(&be_local_const_str_SYMBOL_LIST) },
|
||||
{ be_const_key(LAYOUT_PRETTY_TOP, -1), be_const_int(8) },
|
||||
{ be_const_key(BORDER_SIDE_BOTTOM, 358), be_const_int(1) },
|
||||
{ be_const_key(DROPDOWN_DIR_UP, -1), be_const_int(1) },
|
||||
{ be_const_key(STYLE_TRANSITION_PROP_6, -1), be_const_int(183) },
|
||||
{ be_const_key(KEY_ESC, -1), be_const_int(27) },
|
||||
{ be_const_key(LABEL_LONG_SROLL_CIRC, -1), be_const_int(4) },
|
||||
{ be_const_key(SYMBOL_DOWNLOAD, -1), be_const_str(&be_local_const_str_SYMBOL_DOWNLOAD) },
|
||||
{ be_const_key(ALIGN_OUT_BOTTOM_LEFT, 218), be_const_int(12) },
|
||||
{ be_const_key(LINEMETER_PART_MAIN, -1), be_const_int(0) },
|
||||
{ be_const_key(GRAY, -1), be_const_int(8421504) },
|
||||
{ be_const_key(SYMBOL_USB, 404), be_const_str(&be_local_const_str_SYMBOL_USB) },
|
||||
{ be_const_key(ALIGN_OUT_RIGHT_BOTTOM, -1), be_const_int(20) },
|
||||
{ be_const_key(BTN_STATE_DISABLED, 216), be_const_int(2) },
|
||||
{ be_const_key(LIME, -1), be_const_int(65280) },
|
||||
{ be_const_key(CPICKER_PART_MAIN, -1), be_const_int(0) },
|
||||
{ be_const_key(DISP_ROT_90, 166), be_const_int(1) },
|
||||
{ be_const_key(SYMBOL_VOLUME_MID, -1), be_const_str(&be_local_const_str_SYMBOL_VOLUME_MID) },
|
||||
{ be_const_key(LABEL_LONG_EXPAND, -1), be_const_int(0) },
|
||||
{ be_const_key(FS_RES_FULL, -1), be_const_int(4) },
|
||||
{ be_const_key(BLEND_MODE_ADDITIVE, -1), be_const_int(1) },
|
||||
{ be_const_key(KEY_UP, -1), be_const_int(17) },
|
||||
{ be_const_key(ALIGN_IN_BOTTOM_MID, -1), be_const_int(5) },
|
||||
{ be_const_key(BAR_TYPE_CUSTOM, -1), be_const_int(2) },
|
||||
{ be_const_key(STYLE_BG_BLEND_MODE, -1), be_const_int(32) },
|
||||
{ be_const_key(SYMBOL_VOLUME_MID, 343), be_const_str(&be_local_const_str_SYMBOL_VOLUME_MID) },
|
||||
{ be_const_key(CPICKER_COLOR_MODE_HUE, -1), be_const_int(0) },
|
||||
{ be_const_key(LAYOUT_COLUMN_MID, -1), be_const_int(3) },
|
||||
{ be_const_key(ALIGN_IN_BOTTOM_RIGHT, 207), be_const_int(6) },
|
||||
{ be_const_key(LED_PART_MAIN, 425), be_const_int(0) },
|
||||
{ be_const_key(ARC_PART_BG, -1), be_const_int(0) },
|
||||
{ be_const_key(HSPI, -1), be_const_int(0) },
|
||||
{ be_const_key(EVENT_VALUE_CHANGED, 51), be_const_int(16) },
|
||||
{ be_const_key(CHART_AXIS_INVERSE_LABELS_ORDER, 305), be_const_int(2) },
|
||||
{ be_const_key(STYLE_OUTLINE_COLOR, 103), be_const_int(73) },
|
||||
{ be_const_key(FS_MODE_WR, -1), be_const_int(1) },
|
||||
{ be_const_key(CPICKER_PART_KNOB, 221), be_const_int(1) },
|
||||
{ be_const_key(LAYOUT_ROW_BOTTOM, -1), be_const_int(7) },
|
||||
{ be_const_key(CHART_TYPE_LINE, 353), be_const_int(1) },
|
||||
{ be_const_key(LABEL_ALIGN_RIGHT, -1), be_const_int(2) },
|
||||
{ be_const_key(ALIGN_IN_RIGHT_MID, -1), be_const_int(8) },
|
||||
{ be_const_key(CHECKBOX_PART_BG, -1), be_const_int(0) },
|
||||
{ be_const_key(CPICKER_TYPE_RECT, -1), be_const_int(0) },
|
||||
{ be_const_key(PURPLE, 127), be_const_int(8388736) },
|
||||
{ be_const_key(STYLE_PATTERN_REPEAT, 182), be_const_int(97) },
|
||||
{ be_const_key(SYMBOL_EYE_OPEN, 371), be_const_str(&be_local_const_str_SYMBOL_EYE_OPEN) },
|
||||
{ be_const_key(FIT_MAX, -1), be_const_int(3) },
|
||||
{ be_const_key(DROPDOWN_DIR_DOWN, -1), be_const_int(0) },
|
||||
{ be_const_key(ANIM_OFF, 226), be_const_int(0) },
|
||||
{ be_const_key(SYMBOL_DIRECTORY, -1), be_const_str(&be_local_const_str_SYMBOL_DIRECTORY) },
|
||||
{ be_const_key(STYLE_BG_OPA, -1), be_const_int(44) },
|
||||
{ be_const_key(PAGE_EDGE_LEFT, 14), be_const_int(1) },
|
||||
{ be_const_key(STYLE_SCALE_BORDER_WIDTH, -1), be_const_int(193) },
|
||||
{ be_const_key(STYLE_SHADOW_OPA, -1), be_const_int(92) },
|
||||
{ be_const_key(screenshot, 128), be_const_func(lv0_screenshot) },
|
||||
{ be_const_key(CPICKER_TYPE_DISC, -1), be_const_int(1) },
|
||||
{ be_const_key(SYMBOL_PREV, 155), be_const_str(&be_local_const_str_SYMBOL_PREV) },
|
||||
{ be_const_key(DRAG_DIR_BOTH, 184), be_const_int(3) },
|
||||
{ be_const_key(PROTECT_PARENT, -1), be_const_int(2) },
|
||||
{ be_const_key(ALIGN_OUT_BOTTOM_MID, -1), be_const_int(13) },
|
||||
{ be_const_key(FS_RES_TOUT, -1), be_const_int(8) },
|
||||
{ be_const_key(STATE_EDITED, 264), be_const_int(4) },
|
||||
{ be_const_key(SYMBOL_BATTERY_3, -1), be_const_str(&be_local_const_str_SYMBOL_BATTERY_3) },
|
||||
{ be_const_key(GREEN, 16), be_const_int(32768) },
|
||||
{ be_const_key(STYLE_SHADOW_COLOR, -1), be_const_int(89) },
|
||||
{ be_const_key(STYLE_SHADOW_OFS_Y, 310), be_const_int(82) },
|
||||
{ be_const_key(GAUGE_PART_MAJOR, -1), be_const_int(1) },
|
||||
{ be_const_key(SYMBOL_MUTE, -1), be_const_str(&be_local_const_str_SYMBOL_MUTE) },
|
||||
{ be_const_key(SLIDER_TYPE_NORMAL, 325), be_const_int(0) },
|
||||
{ be_const_key(STYLE_BG_GRAD_DIR, 176), be_const_int(35) },
|
||||
{ be_const_key(AQUA, -1), be_const_int(65535) },
|
||||
{ be_const_key(SYMBOL_WARNING, 150), be_const_str(&be_local_const_str_SYMBOL_WARNING) },
|
||||
{ be_const_key(STYLE_OUTLINE_BLEND_MODE, -1), be_const_int(66) },
|
||||
{ be_const_key(STYLE_TEXT_LINE_SPACE, -1), be_const_int(32897) },
|
||||
{ be_const_key(STYLE_OUTLINE_PAD, 451), be_const_int(65) },
|
||||
{ be_const_key(STYLE_VALUE_LINE_SPACE, -1), be_const_int(113) },
|
||||
{ be_const_key(STYLE_RADIUS, 222), be_const_int(1) },
|
||||
{ be_const_key(EVENT_PRESSING, -1), be_const_int(1) },
|
||||
{ be_const_key(STYLE_MARGIN_BOTTOM, -1), be_const_int(22) },
|
||||
{ be_const_key(PURPLE, -1), be_const_int(8388736) },
|
||||
{ be_const_key(BTN_STATE_PRESSED, 86), be_const_int(1) },
|
||||
{ be_const_key(STYLE_SHADOW_SPREAD, -1), be_const_int(83) },
|
||||
{ be_const_key(KEY_DEL, -1), be_const_int(127) },
|
||||
{ be_const_key(SCROLLBAR_MODE_AUTO, -1), be_const_int(3) },
|
||||
{ be_const_key(STYLE_VALUE_OPA, 54), be_const_int(124) },
|
||||
{ be_const_key(ALIGN_OUT_RIGHT_MID, 60), be_const_int(19) },
|
||||
{ be_const_key(BAR_TYPE_NORMAL, 61), be_const_int(0) },
|
||||
{ be_const_key(OBJ_PART_MAIN, -1), be_const_int(0) },
|
||||
{ be_const_key(STYLE_IMAGE_RECOLOR, -1), be_const_int(32937) },
|
||||
{ be_const_key(KEYBOARD_MODE_TEXT_UPPER, -1), be_const_int(1) },
|
||||
{ be_const_key(EVENT_CANCEL, 298), be_const_int(20) },
|
||||
{ be_const_key(STYLE_MARGIN_LEFT, -1), be_const_int(23) },
|
||||
{ be_const_key(STYLE_PAD_LEFT, -1), be_const_int(18) },
|
||||
{ be_const_key(SYMBOL_REFRESH, 453), be_const_str(&be_local_const_str_SYMBOL_REFRESH) },
|
||||
{ be_const_key(SYMBOL_KEYBOARD, -1), be_const_str(&be_local_const_str_SYMBOL_KEYBOARD) },
|
||||
{ be_const_key(DISP_SIZE_SMALL, 86), be_const_int(0) },
|
||||
{ be_const_key(DROPDOWN_PART_SCROLLBAR, 296), be_const_int(65) },
|
||||
{ be_const_key(CHART_AXIS_DRAW_LAST_TICK, -1), be_const_int(1) },
|
||||
{ be_const_key(SYMBOL_UPLOAD, 356), be_const_str(&be_local_const_str_SYMBOL_UPLOAD) },
|
||||
{ be_const_key(LABEL_LONG_DOT, 446), be_const_int(2) },
|
||||
{ be_const_key(OPA_20, 364), be_const_int(51) },
|
||||
{ be_const_key(SYMBOL_NEXT, -1), be_const_str(&be_local_const_str_SYMBOL_NEXT) },
|
||||
{ be_const_key(KEY_RIGHT, -1), be_const_int(19) },
|
||||
{ be_const_key(LABEL_ALIGN_AUTO, -1), be_const_int(3) },
|
||||
{ be_const_key(ALIGN_OUT_TOP_LEFT, 242), be_const_int(9) },
|
||||
{ be_const_key(STYLE_PAD_INNER, 279), be_const_int(20) },
|
||||
{ be_const_key(SPINNER_TYPE_FILLSPIN_ARC, -1), be_const_int(1) },
|
||||
{ be_const_key(montserrat_font, 259), be_const_func(lv0_load_montserrat_font) },
|
||||
{ be_const_key(TEMPL_STYLE_Y, 257), be_const_int(1) },
|
||||
{ be_const_key(SSPI, -1), be_const_int(2) },
|
||||
{ be_const_key(STYLE_LINE_BLEND_MODE, -1), be_const_int(145) },
|
||||
{ be_const_key(ALIGN_IN_RIGHT_MID, -1), be_const_int(8) },
|
||||
{ be_const_key(ARC_PART_BG, 361), be_const_int(0) },
|
||||
{ be_const_key(ARC_TYPE_NORMAL, -1), be_const_int(0) },
|
||||
{ be_const_key(GAUGE_PART_NEEDLE, -1), be_const_int(2) },
|
||||
{ be_const_key(MAGENTA, -1), be_const_int(16711935) },
|
||||
{ be_const_key(LABEL_LONG_BREAK, -1), be_const_int(1) },
|
||||
{ be_const_key(CHART_CURSOR_UP, -1), be_const_int(2) },
|
||||
{ be_const_key(OPA_90, -1), be_const_int(229) },
|
||||
{ be_const_key(STATE_FOCUSED, -1), be_const_int(2) },
|
||||
{ be_const_key(LIST_PART_EDGE_FLASH, -1), be_const_int(2) },
|
||||
{ be_const_key(ALIGN_OUT_LEFT_MID, -1), be_const_int(16) },
|
||||
{ be_const_key(PROTECT_PRESS_LOST, -1), be_const_int(16) },
|
||||
{ be_const_key(PROTECT_CHILD_CHG, 389), be_const_int(1) },
|
||||
{ be_const_key(CHART_UPDATE_MODE_SHIFT, -1), be_const_int(0) },
|
||||
{ be_const_key(STYLE_LINE_DASH_WIDTH, -1), be_const_int(146) },
|
||||
{ be_const_key(FS_RES_UNKNOWN, -1), be_const_int(12) },
|
||||
{ be_const_key(STYLE_BORDER_OPA, 52), be_const_int(60) },
|
||||
{ be_const_key(layer_sys, 185), be_const_func(lv0_layer_sys) },
|
||||
{ be_const_key(STYLE_BG_MAIN_STOP, 328), be_const_int(33) },
|
||||
{ be_const_key(STYLE_LINE_DASH_GAP, -1), be_const_int(147) },
|
||||
{ be_const_key(CHART_CURSOR_RIGHT, -1), be_const_int(1) },
|
||||
{ be_const_key(CALENDAR_PART_BG, 26), be_const_int(0) },
|
||||
{ be_const_key(OPA_30, 382), be_const_int(76) },
|
||||
{ be_const_key(CHART_PART_BG, 32), be_const_int(0) },
|
||||
{ be_const_key(BTNMATRIX_CTRL_CHECK_STATE, 208), be_const_int(128) },
|
||||
{ be_const_key(FIT_PARENT, -1), be_const_int(2) },
|
||||
{ be_const_key(STYLE_SIZE, -1), be_const_int(3) },
|
||||
{ be_const_key(CHART_TYPE_NONE, -1), be_const_int(0) },
|
||||
{ be_const_key(SYMBOL_WIFI, -1), be_const_str(&be_local_const_str_SYMBOL_WIFI) },
|
||||
{ be_const_key(ALIGN_IN_BOTTOM_LEFT, 181), be_const_int(4) },
|
||||
{ be_const_key(get_hor_res, 416), be_const_func(lv0_get_hor_res) },
|
||||
{ be_const_key(ALIGN_IN_LEFT_MID, 304), be_const_int(7) },
|
||||
{ be_const_key(SYMBOL_SETTINGS, -1), be_const_str(&be_local_const_str_SYMBOL_SETTINGS) },
|
||||
{ be_const_key(FS_RES_LOCKED, -1), be_const_int(5) },
|
||||
{ be_const_key(KEYBOARD_MODE_TEXT_LOWER, -1), be_const_int(0) },
|
||||
{ be_const_key(STYLE_TEXT_DECOR, -1), be_const_int(32898) },
|
||||
{ be_const_key(STYLE_TEXT_FONT, -1), be_const_int(32910) },
|
||||
{ be_const_key(OPA_50, -1), be_const_int(127) },
|
||||
{ be_const_key(STYLE_OPA_SCALE, -1), be_const_int(32780) },
|
||||
{ be_const_key(ALIGN_OUT_BOTTOM_RIGHT, -1), be_const_int(14) },
|
||||
{ be_const_key(BTN_STATE_CHECKED_PRESSED, -1), be_const_int(4) },
|
||||
{ be_const_key(BORDER_SIDE_RIGHT, -1), be_const_int(8) },
|
||||
{ be_const_key(STYLE_TEXT_LETTER_SPACE, 159), be_const_int(32896) },
|
||||
{ be_const_key(STYLE_OUTLINE_WIDTH, -1), be_const_int(64) },
|
||||
{ be_const_key(SPINNER_DIR_FORWARD, -1), be_const_int(0) },
|
||||
{ be_const_key(STYLE_PATTERN_OPA, 343), be_const_int(108) },
|
||||
{ be_const_key(KEY_HOME, 113), be_const_int(2) },
|
||||
{ be_const_key(MAROON, -1), be_const_int(8388608) },
|
||||
{ be_const_key(STYLE_PATTERN_RECOLOR_OPA, 169), be_const_int(109) },
|
||||
{ be_const_key(LAYOUT_GRID, 260), be_const_int(11) },
|
||||
{ be_const_key(TXT_CMD_STATE_PAR, -1), be_const_int(1) },
|
||||
{ be_const_key(STYLE_SCALE_END_COLOR, -1), be_const_int(202) },
|
||||
{ be_const_key(DISP_SIZE_EXTRA_LARGE, 198), be_const_int(3) },
|
||||
{ be_const_key(LABEL_ALIGN_CENTER, -1), be_const_int(1) },
|
||||
{ be_const_key(STYLE_SCALE_END_LINE_WIDTH, -1), be_const_int(195) },
|
||||
{ be_const_key(FIT_NONE, -1), be_const_int(0) },
|
||||
{ be_const_key(TEXT_DECOR_STRIKETHROUGH, 312), be_const_int(2) },
|
||||
{ be_const_key(FS_RES_NOT_EX, 168), be_const_int(3) },
|
||||
{ be_const_key(SYMBOL_DUMMY, 299), be_const_str(&be_local_const_str_SYMBOL_DUMMY) },
|
||||
{ be_const_key(EVENT_LONG_PRESSED_REPEAT, 228), be_const_int(5) },
|
||||
{ be_const_key(KEYBOARD_MODE_NUM, 27), be_const_int(3) },
|
||||
{ be_const_key(LAYOUT_COLUMN_RIGHT, -1), be_const_int(4) },
|
||||
{ be_const_key(DRAG_DIR_VER, -1), be_const_int(2) },
|
||||
{ be_const_key(DROPDOWN_PART_LIST, -1), be_const_int(64) },
|
||||
{ be_const_key(CHART_PART_SERIES_BG, -1), be_const_int(1) },
|
||||
{ be_const_key(PROTECT_NONE, 266), be_const_int(0) },
|
||||
{ be_const_key(DROPDOWN_DIR_RIGHT, -1), be_const_int(3) },
|
||||
{ be_const_key(YELLOW, -1), be_const_int(16776960) },
|
||||
{ be_const_key(SYMBOL_COPY, -1), be_const_str(&be_local_const_str_SYMBOL_COPY) },
|
||||
{ be_const_key(SYMBOL_EDIT, 74), be_const_str(&be_local_const_str_SYMBOL_EDIT) },
|
||||
{ be_const_key(STATE_CHECKED, -1), be_const_int(1) },
|
||||
{ be_const_key(DRAG_DIR_HOR, -1), be_const_int(1) },
|
||||
{ be_const_key(BTN_STATE_RELEASED, -1), be_const_int(0) },
|
||||
{ be_const_key(EVENT_LEAVE, 322), be_const_int(15) },
|
||||
{ be_const_key(ROLLER_MODE_INFINITE, -1), be_const_int(1) },
|
||||
{ be_const_key(GESTURE_DIR_RIGHT, -1), be_const_int(3) },
|
||||
{ be_const_key(BTNMATRIX_CTRL_NO_REPEAT, -1), be_const_int(16) },
|
||||
{ be_const_key(KEYBOARD_PART_BTN, -1), be_const_int(1) },
|
||||
{ be_const_key(FS_RES_DENIED, -1), be_const_int(6) },
|
||||
{ be_const_key(DROPDOWN_DIR_LEFT, 117), be_const_int(2) },
|
||||
{ be_const_key(STYLE_TEXT_COLOR, -1), be_const_int(32905) },
|
||||
{ be_const_key(SYMBOL_GPS, -1), be_const_str(&be_local_const_str_SYMBOL_GPS) },
|
||||
{ be_const_key(SYMBOL_EYE_CLOSE, 91), be_const_str(&be_local_const_str_SYMBOL_EYE_CLOSE) },
|
||||
{ be_const_key(STYLE_TEXT_SEL_BG_COLOR, -1), be_const_int(32907) },
|
||||
{ be_const_key(FS_RES_OK, -1), be_const_int(0) },
|
||||
{ be_const_key(TXT_FLAG_FIT, 313), be_const_int(16) },
|
||||
{ be_const_key(SYMBOL_BATTERY_EMPTY, -1), be_const_str(&be_local_const_str_SYMBOL_BATTERY_EMPTY) },
|
||||
{ be_const_key(SYMBOL_TRASH, -1), be_const_str(&be_local_const_str_SYMBOL_TRASH) },
|
||||
{ be_const_key(TXT_FLAG_RECOLOR, -1), be_const_int(1) },
|
||||
{ be_const_key(STYLE_BORDER_POST, 5), be_const_int(51) },
|
||||
{ be_const_key(TABVIEW_TAB_POS_BOTTOM, -1), be_const_int(2) },
|
||||
{ be_const_key(CHECKBOX_PART_BULLET, -1), be_const_int(64) },
|
||||
{ be_const_key(OBJ_PART_REAL_FIRST, 335), be_const_int(64) },
|
||||
{ be_const_key(KEY_DOWN, 450), be_const_int(18) },
|
||||
{ be_const_key(DRAG_DIR_ONE, 82), be_const_int(4) },
|
||||
{ be_const_key(STYLE_TRANSITION_PROP_3, -1), be_const_int(180) },
|
||||
{ be_const_key(STYLE_OUTLINE_OPA, 275), be_const_int(76) },
|
||||
{ be_const_key(STYLE_TRANSFORM_WIDTH, -1), be_const_int(4) },
|
||||
{ be_const_key(BORDER_SIDE_LEFT, 143), be_const_int(4) },
|
||||
{ be_const_key(KEY_LEFT, -1), be_const_int(20) },
|
||||
{ be_const_key(SYMBOL_VOLUME_MAX, -1), be_const_str(&be_local_const_str_SYMBOL_VOLUME_MAX) },
|
||||
{ be_const_key(STYLE_IMAGE_BLEND_MODE, -1), be_const_int(32928) },
|
||||
{ be_const_key(CHART_AXIS_SECONDARY_Y, 17), be_const_int(1) },
|
||||
{ be_const_key(CPICKER_COLOR_MODE_SATURATION, -1), be_const_int(1) },
|
||||
{ be_const_key(BORDER_SIDE_FULL, -1), be_const_int(15) },
|
||||
{ be_const_key(SPINNER_TYPE_SPINNING_ARC, -1), be_const_int(0) },
|
||||
{ be_const_key(ARC_TYPE_SYMMETRIC, -1), be_const_int(1) },
|
||||
{ be_const_key(BTN_STATE_PRESSED, 93), be_const_int(1) },
|
||||
{ be_const_key(STYLE_TRANSITION_PROP_5, -1), be_const_int(182) },
|
||||
{ be_const_key(SYMBOL_NEW_LINE, 33), be_const_str(&be_local_const_str_SYMBOL_NEW_LINE) },
|
||||
{ be_const_key(CALENDAR_PART_DAY_NAMES, -1), be_const_int(2) },
|
||||
{ be_const_key(STYLE_BG_GRAD_COLOR, -1), be_const_int(42) },
|
||||
{ be_const_key(STYLE_VALUE_OFS_Y, 71), be_const_int(116) },
|
||||
{ be_const_key(DROPDOWN_PART_SELECTED, 441), be_const_int(66) },
|
||||
{ be_const_key(STYLE_PATTERN_IMAGE, 97), be_const_int(110) },
|
||||
{ be_const_key(BLUE, -1), be_const_int(255) },
|
||||
{ be_const_key(CALENDAR_PART_DATE, -1), be_const_int(3) },
|
||||
{ be_const_key(SYMBOL_CHARGE, 154), be_const_str(&be_local_const_str_SYMBOL_CHARGE) },
|
||||
{ be_const_key(PROTECT_POS, -1), be_const_int(4) },
|
||||
{ be_const_key(SYMBOL_STOP, 436), be_const_str(&be_local_const_str_SYMBOL_STOP) },
|
||||
{ be_const_key(LAYOUT_ROW_TOP, 101), be_const_int(5) },
|
||||
{ be_const_key(CALENDAR_PART_HEADER, -1), be_const_int(1) },
|
||||
{ be_const_key(CHART_CURSOR_NONE, -1), be_const_int(0) },
|
||||
{ be_const_key(STYLE_VALUE_LETTER_SPACE, -1), be_const_int(112) },
|
||||
{ be_const_key(SYMBOL_PLUS, -1), be_const_str(&be_local_const_str_SYMBOL_PLUS) },
|
||||
{ be_const_key(STATE_PRESSED, -1), be_const_int(16) },
|
||||
{ be_const_key(ALIGN_IN_TOP_MID, 255), be_const_int(2) },
|
||||
{ be_const_key(STYLE_CLIP_CORNER, 311), be_const_int(2) },
|
||||
{ be_const_key(SYMBOL_HOME, -1), be_const_str(&be_local_const_str_SYMBOL_HOME) },
|
||||
{ be_const_key(OPA_60, -1), be_const_int(153) },
|
||||
{ be_const_key(KEYBOARD_PART_BG, -1), be_const_int(0) },
|
||||
{ be_const_key(CHART_AXIS_SKIP_LAST_TICK, -1), be_const_int(0) },
|
||||
{ be_const_key(SYMBOL_RIGHT, -1), be_const_str(&be_local_const_str_SYMBOL_RIGHT) },
|
||||
{ be_const_key(SYMBOL_LOOP, -1), be_const_str(&be_local_const_str_SYMBOL_LOOP) },
|
||||
{ be_const_key(STYLE_MARGIN_TOP, -1), be_const_int(21) },
|
||||
{ be_const_key(STYLE_SCALE_GRAD_COLOR, -1), be_const_int(201) },
|
||||
{ be_const_key(EVENT_DRAG_END, 227), be_const_int(9) },
|
||||
{ be_const_key(OPA_0, -1), be_const_int(0) },
|
||||
{ be_const_key(EVENT_PRESSED, 123), be_const_int(0) },
|
||||
{ be_const_key(GESTURE_DIR_LEFT, -1), be_const_int(2) },
|
||||
{ be_const_key(ALIGN_CENTER, -1), be_const_int(0) },
|
||||
{ be_const_key(ALIGN_OUT_TOP_MID, -1), be_const_int(10) },
|
||||
{ be_const_key(STYLE_PATTERN_RECOLOR, 92), be_const_int(105) },
|
||||
{ be_const_key(TXT_FLAG_EXPAND, -1), be_const_int(2) },
|
||||
{ be_const_key(STYLE_BORDER_WIDTH, 306), be_const_int(48) },
|
||||
{ be_const_key(SYMBOL_BELL, -1), be_const_str(&be_local_const_str_SYMBOL_BELL) },
|
||||
{ be_const_key(EVENT_KEY, -1), be_const_int(12) },
|
||||
{ be_const_key(SYMBOL_BLUETOOTH, 55), be_const_str(&be_local_const_str_SYMBOL_BLUETOOTH) },
|
||||
{ be_const_key(BTNMATRIX_CTRL_HIDDEN, -1), be_const_int(8) },
|
||||
{ be_const_key(OPA_10, -1), be_const_int(25) },
|
||||
{ be_const_key(EVENT_GESTURE, -1), be_const_int(11) },
|
||||
{ be_const_key(SYMBOL_CALL, -1), be_const_str(&be_local_const_str_SYMBOL_CALL) },
|
||||
{ be_const_key(BTN_STATE_CHECKED_DISABLED, -1), be_const_int(5) },
|
||||
{ be_const_key(STYLE_BORDER_SIDE, -1), be_const_int(49) },
|
||||
{ be_const_key(STATE_DISABLED, 289), be_const_int(32) },
|
||||
{ be_const_key(PAGE_EDGE_TOP, -1), be_const_int(2) },
|
||||
{ be_const_key(BTNMATRIX_CTRL_CLICK_TRIG, 37), be_const_int(256) },
|
||||
{ be_const_key(NAVY, -1), be_const_int(128) },
|
||||
{ be_const_key(SYMBOL_SAVE, 414), be_const_str(&be_local_const_str_SYMBOL_SAVE) },
|
||||
{ be_const_key(STYLE_TRANSITION_PATH, 407), be_const_int(190) },
|
||||
{ be_const_key(TABVIEW_TAB_POS_LEFT, 35), be_const_int(3) },
|
||||
{ be_const_key(CYAN, -1), be_const_int(65535) },
|
||||
{ be_const_key(EVENT_DRAG_BEGIN, 94), be_const_int(8) },
|
||||
{ be_const_key(EVENT_PRESS_LOST, -1), be_const_int(2) },
|
||||
{ be_const_key(SYMBOL_DRIVE, -1), be_const_str(&be_local_const_str_SYMBOL_DRIVE) },
|
||||
{ be_const_key(SYMBOL_EJECT, -1), be_const_str(&be_local_const_str_SYMBOL_EJECT) },
|
||||
{ be_const_key(SYMBOL_UP, -1), be_const_str(&be_local_const_str_SYMBOL_UP) },
|
||||
{ be_const_key(OPA_COVER, -1), be_const_int(255) },
|
||||
{ be_const_key(ALIGN_IN_TOP_LEFT, -1), be_const_int(1) },
|
||||
{ be_const_key(SYMBOL_AUDIO, -1), be_const_str(&be_local_const_str_SYMBOL_AUDIO) },
|
||||
{ be_const_key(PROTECT_EVENT_TO_DISABLED, 438), be_const_int(64) },
|
||||
{ be_const_key(STYLE_TEXT_OPA, -1), be_const_int(32908) },
|
||||
{ be_const_key(TXT_CMD_STATE_WAIT, -1), be_const_int(0) },
|
||||
{ be_const_key(TEXTAREA_CURSOR_LAST, -1), be_const_int(32767) },
|
||||
{ be_const_key(SPINNER_DIR_BACKWARD, -1), be_const_int(1) },
|
||||
{ be_const_key(SYMBOL_STOP, -1), be_const_str(&be_local_const_str_SYMBOL_STOP) },
|
||||
{ be_const_key(STYLE_PATTERN_REPEAT, -1), be_const_int(97) },
|
||||
{ be_const_key(ALIGN_IN_TOP_RIGHT, -1), be_const_int(3) },
|
||||
{ be_const_key(CHART_AXIS_INVERSE_LABELS_ORDER, -1), be_const_int(2) },
|
||||
{ be_const_key(STYLE_PATTERN_OPA, 123), be_const_int(108) },
|
||||
{ be_const_key(BLEND_MODE_SUBTRACTIVE, -1), be_const_int(2) },
|
||||
{ be_const_key(SYMBOL_PASTE, 185), be_const_str(&be_local_const_str_SYMBOL_PASTE) },
|
||||
{ be_const_key(BORDER_SIDE_NONE, -1), be_const_int(0) },
|
||||
{ be_const_key(TEAL, -1), be_const_int(32896) },
|
||||
{ be_const_key(FS_RES_HW_ERR, -1), be_const_int(1) },
|
||||
{ be_const_key(STYLE_LINE_WIDTH, -1), be_const_int(144) },
|
||||
{ be_const_key(EVENT_SHORT_CLICKED, -1), be_const_int(3) },
|
||||
{ be_const_key(LIST_PART_SCROLLBAR, 72), be_const_int(1) },
|
||||
{ be_const_key(STYLE_TEXT_SEL_COLOR, -1), be_const_int(32906) },
|
||||
{ be_const_key(SYMBOL_LEFT, -1), be_const_str(&be_local_const_str_SYMBOL_LEFT) },
|
||||
{ be_const_key(GRAD_DIR_VER, -1), be_const_int(1) },
|
||||
{ be_const_key(EVENT_REFRESH, -1), be_const_int(18) },
|
||||
{ be_const_key(KEY_ENTER, -1), be_const_int(10) },
|
||||
{ be_const_key(TABVIEW_TAB_POS_TOP, 390), be_const_int(1) },
|
||||
{ be_const_key(STYLE_SHADOW_BLEND_MODE, -1), be_const_int(84) },
|
||||
{ be_const_key(SILVER, -1), be_const_int(12632256) },
|
||||
{ be_const_key(SYMBOL_OK, -1), be_const_str(&be_local_const_str_SYMBOL_OK) },
|
||||
{ be_const_key(TABVIEW_TAB_POS_NONE, -1), be_const_int(0) },
|
||||
{ be_const_key(SYMBOL_PASTE, -1), be_const_str(&be_local_const_str_SYMBOL_PASTE) },
|
||||
{ be_const_key(get_ver_res, 270), be_const_func(lv0_get_ver_res) },
|
||||
{ be_const_key(STYLE_TRANSITION_TIME, -1), be_const_int(176) },
|
||||
{ be_const_key(STYLE_PAD_TOP, -1), be_const_int(16) },
|
||||
{ be_const_key(STYLE_TRANSFORM_ZOOM, -1), be_const_int(7) },
|
||||
{ be_const_key(PAGE_EDGE_BOTTOM, -1), be_const_int(8) },
|
||||
{ be_const_key(STYLE_LINE_COLOR, -1), be_const_int(153) },
|
||||
{ be_const_key(STYLE_SHADOW_OFS_X, -1), be_const_int(81) },
|
||||
{ be_const_key(SLIDER_TYPE_SYMMETRICAL, -1), be_const_int(1) },
|
||||
{ be_const_key(OLIVE, -1), be_const_int(8421376) },
|
||||
{ be_const_key(LIST_PART_BG, 223), be_const_int(0) },
|
||||
{ be_const_key(SYMBOL_CUT, -1), be_const_str(&be_local_const_str_SYMBOL_CUT) },
|
||||
{ be_const_key(STYLE_BG_COLOR, 244), be_const_int(41) },
|
||||
{ be_const_key(SCROLLBAR_MODE_ON, 273), be_const_int(1) },
|
||||
{ be_const_key(SYMBOL_BATTERY_FULL, 90), be_const_str(&be_local_const_str_SYMBOL_BATTERY_FULL) },
|
||||
{ be_const_key(TEMPL_STYLE_Y, 48), be_const_int(1) },
|
||||
{ be_const_key(STYLE_PAD_BOTTOM, -1), be_const_int(17) },
|
||||
{ be_const_key(SYMBOL_NEW_LINE, -1), be_const_str(&be_local_const_str_SYMBOL_NEW_LINE) },
|
||||
{ be_const_key(SYMBOL_NEXT, -1), be_const_str(&be_local_const_str_SYMBOL_NEXT) },
|
||||
{ be_const_key(KEY_LEFT, 436), be_const_int(20) },
|
||||
{ be_const_key(FIT_MAX, -1), be_const_int(3) },
|
||||
{ be_const_key(LABEL_LONG_BREAK, -1), be_const_int(1) },
|
||||
{ be_const_key(STYLE_TRANSITION_PROP_4, -1), be_const_int(181) },
|
||||
{ be_const_key(SYMBOL_SD_CARD, -1), be_const_str(&be_local_const_str_SYMBOL_SD_CARD) },
|
||||
{ be_const_key(STYLE_MARGIN_RIGHT, -1), be_const_int(24) },
|
||||
{ be_const_key(SYMBOL_VIDEO, -1), be_const_str(&be_local_const_str_SYMBOL_VIDEO) },
|
||||
{ be_const_key(CHART_UPDATE_MODE_CIRCULAR, -1), be_const_int(1) },
|
||||
{ be_const_key(STYLE_MARGIN_RIGHT, 287), be_const_int(24) },
|
||||
{ be_const_key(DROPDOWN_PART_MAIN, 455), be_const_int(0) },
|
||||
{ be_const_key(DISP_ROT_180, -1), be_const_int(2) },
|
||||
{ be_const_key(SPINNER_TYPE_CONSTANT_ARC, -1), be_const_int(2) },
|
||||
{ be_const_key(TEXT_DECOR_UNDERLINE, 444), be_const_int(1) },
|
||||
{ be_const_key(TXT_FLAG_CENTER, 164), be_const_int(4) },
|
||||
{ be_const_key(SYMBOL_POWER, -1), be_const_str(&be_local_const_str_SYMBOL_POWER) },
|
||||
{ be_const_key(STYLE_TRANSFORM_ANGLE, -1), be_const_int(6) },
|
||||
{ be_const_key(ARC_TYPE_REVERSE, -1), be_const_int(2) },
|
||||
{ be_const_key(SYMBOL_BATTERY_1, 342), be_const_str(&be_local_const_str_SYMBOL_BATTERY_1) },
|
||||
{ be_const_key(DRAG_DIR_ONE, -1), be_const_int(4) },
|
||||
{ be_const_key(BTNMATRIX_CTRL_CHECK_STATE, -1), be_const_int(128) },
|
||||
{ be_const_key(STYLE_TRANSITION_DELAY, -1), be_const_int(177) },
|
||||
{ be_const_key(EVENT_LONG_PRESSED_REPEAT, -1), be_const_int(5) },
|
||||
{ be_const_key(LABEL_LONG_SROLL_CIRC, -1), be_const_int(4) },
|
||||
{ be_const_key(WHITE, 429), be_const_int(16777215) },
|
||||
{ be_const_key(LABEL_ALIGN_AUTO, -1), be_const_int(3) },
|
||||
{ be_const_key(TXT_FLAG_FIT, -1), be_const_int(16) },
|
||||
{ be_const_key(OPA_30, -1), be_const_int(76) },
|
||||
{ be_const_key(SYMBOL_DUMMY, -1), be_const_str(&be_local_const_str_SYMBOL_DUMMY) },
|
||||
{ be_const_key(TEXT_DECOR_UNDERLINE, -1), be_const_int(1) },
|
||||
{ be_const_key(TABVIEW_TAB_POS_LEFT, -1), be_const_int(3) },
|
||||
{ be_const_key(SYMBOL_EJECT, -1), be_const_str(&be_local_const_str_SYMBOL_EJECT) },
|
||||
{ be_const_key(SPINNER_TYPE_FILLSPIN_ARC, -1), be_const_int(1) },
|
||||
{ be_const_key(BORDER_SIDE_LEFT, -1), be_const_int(4) },
|
||||
{ be_const_key(TABVIEW_TAB_POS_NONE, -1), be_const_int(0) },
|
||||
{ be_const_key(TXT_FLAG_NONE, -1), be_const_int(0) },
|
||||
{ be_const_key(STYLE_IMAGE_OPA, -1), be_const_int(32940) },
|
||||
{ be_const_key(EVENT_DELETE, -1), be_const_int(21) },
|
||||
{ be_const_key(SCROLLBAR_MODE_UNHIDE, 36), be_const_int(8) },
|
||||
{ be_const_key(OBJMASK_PART_MAIN, -1), be_const_int(0) },
|
||||
{ be_const_key(GESTURE_DIR_TOP, -1), be_const_int(0) },
|
||||
{ be_const_key(TEMPL_STYLE_X, -1), be_const_int(0) },
|
||||
{ be_const_key(BTNMATRIX_CTRL_DISABLED, -1), be_const_int(32) },
|
||||
{ be_const_key(I2C, -1), be_const_int(1) },
|
||||
{ be_const_key(CHART_AXIS_SKIP_LAST_TICK, -1), be_const_int(0) },
|
||||
{ be_const_key(STYLE_BG_GRAD_COLOR, -1), be_const_int(42) },
|
||||
{ be_const_key(SYMBOL_CUT, 207), be_const_str(&be_local_const_str_SYMBOL_CUT) },
|
||||
{ be_const_key(CHART_TYPE_COLUMN, -1), be_const_int(2) },
|
||||
{ be_const_key(start, -1), be_const_func(lv0_start) },
|
||||
{ be_const_key(SCROLLBAR_MODE_DRAG, -1), be_const_int(2) },
|
||||
{ be_const_key(FS_RES_BUSY, -1), be_const_int(7) },
|
||||
{ be_const_key(BTNMATRIX_CTRL_CHECKABLE, 65), be_const_int(64) },
|
||||
{ be_const_key(OPA_TRANSP, -1), be_const_int(0) },
|
||||
{ be_const_key(PAGE_EDGE_RIGHT, -1), be_const_int(4) },
|
||||
{ be_const_key(GESTURE_DIR_TOP, -1), be_const_int(0) },
|
||||
{ be_const_key(KEY_DOWN, -1), be_const_int(18) },
|
||||
{ be_const_key(OBJ_PART_REAL_FIRST, -1), be_const_int(64) },
|
||||
{ be_const_key(seg7_font, -1), be_const_func(lv0_load_seg7_font) },
|
||||
{ be_const_key(layer_top, 194), be_const_func(lv0_layer_top) },
|
||||
{ be_const_key(SYMBOL_GPS, 279), be_const_str(&be_local_const_str_SYMBOL_GPS) },
|
||||
};
|
||||
|
||||
static be_define_const_map(
|
||||
m_liblvgl_map,
|
||||
457
|
||||
459
|
||||
);
|
||||
|
||||
static be_define_const_module(
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
#include "be_constobj.h"
|
||||
|
||||
static be_define_const_map_slots(tasmota_driver_map) {
|
||||
{ be_const_key(get_tasmota, -1), be_const_func(d_getTasmotaGlob) },
|
||||
{ be_const_key(web_sensor, -1), be_const_int(0) },
|
||||
{ be_const_key(json_append, 0), be_const_int(1) },
|
||||
{ be_const_key(every_second, 4), be_const_int(2) },
|
||||
{ be_const_key(every_100ms, 7), be_const_int(3) },
|
||||
{ be_const_key(web_add_main_button, -1), be_const_int(4) },
|
||||
{ be_const_key(web_add_button, -1), be_const_int(5) },
|
||||
{ be_const_key(save_before_restart, -1), be_const_int(6) },
|
||||
{ be_const_key(button_pressed, 1), be_const_int(7) },
|
||||
};
|
||||
|
||||
static be_define_const_map(
|
||||
tasmota_driver_map,
|
||||
9
|
||||
);
|
||||
|
||||
BE_EXPORT_VARIABLE be_define_const_class(
|
||||
tasmota_driver,
|
||||
8,
|
||||
NULL,
|
||||
Driver
|
||||
);
|
|
@ -47,8 +47,8 @@ extern "C" {
|
|||
.type = BE_REAL \
|
||||
}
|
||||
|
||||
#define be_const_str(_val) { \
|
||||
.v.s = (bstring*)(_val), \
|
||||
#define be_const_str(_str) { \
|
||||
.v.s = (bstring*)(_str), \
|
||||
.type = BE_STRING \
|
||||
}
|
||||
|
||||
|
@ -57,6 +57,11 @@ extern "C" {
|
|||
.type = BE_CLASS \
|
||||
}
|
||||
|
||||
#define be_const_closure(_closure) { \
|
||||
.v.c = &(_closure), \
|
||||
.type = BE_CLOSURE \
|
||||
}
|
||||
|
||||
#define be_const_module(_module) { \
|
||||
.v.c = &(_module), \
|
||||
.type = BE_MODULE \
|
||||
|
@ -131,11 +136,21 @@ const bntvmodule be_native_module(_module) = { \
|
|||
BE_REAL \
|
||||
}
|
||||
|
||||
#define be_const_str(_string) { \
|
||||
bvaldata(bstring(_string)), \
|
||||
BE_STRING \
|
||||
}
|
||||
|
||||
#define be_const_class(_class) { \
|
||||
bvaldata(&(_class)), \
|
||||
BE_CLASS \
|
||||
}
|
||||
|
||||
#define be_const_closure(_closure) { \
|
||||
bvaldata(&(_closure)), \
|
||||
BE_CLOSURE \
|
||||
}
|
||||
|
||||
#define be_const_module(_module) { \
|
||||
bvaldata(&(_module)), \
|
||||
BE_MODULE \
|
||||
|
|
|
@ -80,9 +80,9 @@ static void m_solidify_proto(bvm *vm, bproto *pr, const char * func_name, int bu
|
|||
}
|
||||
|
||||
/* create static strings for name and source */
|
||||
logfmt("be_define_local_const_str(%s_str_name, \"%s\", %i, 0, %u, 0);\n",
|
||||
logfmt("be_define_local_const_str(%s_str_name, \"%s\", %i, %u);\n",
|
||||
func_name, str(pr->name), be_strhash(pr->name), str_len(pr->name));
|
||||
logfmt("be_define_local_const_str(%s_str_source, \"%s\", %i, 0, %u, 0);\n",
|
||||
logfmt("be_define_local_const_str(%s_str_source, \"%s\", %i, %u);\n",
|
||||
func_name, func_source, be_strhash(pr->source), str_len(pr->source));
|
||||
|
||||
/* create static strings first */
|
||||
|
@ -95,7 +95,7 @@ static void m_solidify_proto(bvm *vm, bproto *pr, const char * func_name, int bu
|
|||
if (len >= 255) {
|
||||
be_raise(vm, "internal_error", "Strings greater than 255 chars not supported yet");
|
||||
}
|
||||
logfmt("\", %i, 0, %zu, 0);\n", be_strhash(pr->ktab[i].v.s), len >= 255 ? 255 : len);
|
||||
logfmt("\", %i, %zu);\n", be_strhash(pr->ktab[i].v.s), len >= 255 ? 255 : len);
|
||||
}
|
||||
}
|
||||
logfmt("\n");
|
||||
|
|
|
@ -252,7 +252,7 @@ typedef struct bntvmodule {
|
|||
|
||||
/* support for solidified berry functions */
|
||||
/* native const strings outside of global string hash */
|
||||
#define be_define_local_const_str(_name, _s, _hash, _extra, _len, _next) \
|
||||
#define be_define_local_const_str(_name, _s, _hash, _len) \
|
||||
static const bcstring be_local_const_str_##_name = { \
|
||||
.next = (bgcobject *)NULL, \
|
||||
.type = BE_STRING, \
|
||||
|
@ -296,8 +296,8 @@ typedef struct bntvmodule {
|
|||
#define be_define_local_proto(_name, _nstack, _argc, _is_const, _is_subproto, _is_upval) \
|
||||
static const bproto _name##_proto = { \
|
||||
NULL, /* bgcobject *next */ \
|
||||
8, /* type BE_PROTO */ \
|
||||
GC_CONST, /* marked outside of GC */ \
|
||||
BE_PROTO, /* type BE_PROTO */ \
|
||||
0x08, /* marked outside of GC */ \
|
||||
(_nstack), /* nstack */ \
|
||||
BE_IIF(_is_upval)(sizeof(_name##_upvals)/sizeof(bupvaldesc),0),/* nupvals */ \
|
||||
(_argc), /* argc */ \
|
||||
|
@ -319,8 +319,8 @@ typedef struct bntvmodule {
|
|||
#define be_define_local_closure(_name) \
|
||||
const bclosure _name##_closure = { \
|
||||
NULL, /* bgcobject *next */ \
|
||||
36, /* type BE_CLOSURE */ \
|
||||
GC_CONST, /* marked */ \
|
||||
BE_CLOSURE, /* type BE_CLOSURE */ \
|
||||
GC_CONST, /* marked GC_CONST */ \
|
||||
0, /* nupvals */ \
|
||||
NULL, /* bgcobject *gray */ \
|
||||
(bproto*) &_name##_proto, /* proto */ \
|
||||
|
|
|
@ -55,19 +55,20 @@ uint16_t Epd47::GetColorFromIndex(uint8_t index) {
|
|||
Epd47::Epd47(int16_t dwidth, int16_t dheight) : Renderer(dwidth, dheight) {
|
||||
width = dwidth;
|
||||
height = dheight;
|
||||
disp_bpp = 4;
|
||||
}
|
||||
|
||||
int32_t Epd47::Init(void) {
|
||||
epd_init(EPD_LUT_1K);
|
||||
hl = epd_hl_init(WAVEFORM);
|
||||
epd47_buffer = epd_hl_get_framebuffer(&hl);
|
||||
|
||||
framebuffer = epd47_buffer;
|
||||
lvgl_param.fluslines = 10;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void Epd47::DisplayInit(int8_t p, int8_t size, int8_t rot, int8_t font) {
|
||||
|
||||
|
||||
if (p == DISPLAY_INIT_MODE) {
|
||||
epd_poweron();
|
||||
epd_clear();
|
||||
|
@ -157,26 +158,49 @@ void Epd47::drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color) {
|
|||
}
|
||||
|
||||
void Epd47::setAddrWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) {
|
||||
xp = x0;
|
||||
yp = y0;
|
||||
//setAddrWindow_int(x0,y0,x1-1,y1-1);
|
||||
|
||||
// just save params or update frame
|
||||
if (!x0 && !y0 && !x1 && !y1) {
|
||||
//Updateframe();
|
||||
} else {
|
||||
seta_xp1 = x0;
|
||||
seta_xp2 = x1;
|
||||
seta_yp1 = y0;
|
||||
seta_yp2 = y1;
|
||||
}
|
||||
|
||||
void Epd47::pushColors(uint16_t *data, uint16_t len, boolean first) {
|
||||
uint16_t color;
|
||||
uint16_t cxp = xp;
|
||||
while (len--) {
|
||||
color = *data++;
|
||||
}
|
||||
|
||||
static inline void lvgl_color_swap2(uint16_t *data, uint16_t len) { for (uint32_t i = 0; i < len; i++) (data[i] = data[i] << 8 | data[i] >> 8); }
|
||||
|
||||
void Epd47::pushColors(uint16_t *data, uint16_t len, boolean not_swapped) {
|
||||
|
||||
if (not_swapped == false) {
|
||||
lvgl_color_swap2(data, len);
|
||||
}
|
||||
|
||||
// stupid bw version
|
||||
uint16_t x1 = seta_xp1;
|
||||
uint16_t x2 = seta_xp2;
|
||||
uint16_t y1 = seta_yp1;
|
||||
uint16_t y2 = seta_yp2;
|
||||
|
||||
for (uint32_t y = y1; y < y2; y++) {
|
||||
for (uint32_t x = x1; x < x2; x++) {
|
||||
uint16_t color = *data++;
|
||||
uint8_t red = ((color >> 11) & 0x1f) << 3;
|
||||
uint8_t green = ((color >> 5) & 0x3f) << 2;
|
||||
uint8_t blue = (color & 0x1f) << 3;
|
||||
color = (red + green + blue) / 3;
|
||||
color >>= 4;
|
||||
drawPixel(cxp, yp, color);
|
||||
cxp++;
|
||||
drawPixel(x, y, color);
|
||||
len--;
|
||||
if (!len) {
|
||||
seta_yp1 = y + 1;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
yp++;
|
||||
|
||||
}
|
||||
|
||||
/* END OF FILE */
|
||||
|
|
|
@ -57,6 +57,10 @@ private:
|
|||
uint16_t height;
|
||||
uint16_t xp;
|
||||
uint16_t yp;
|
||||
uint16_t seta_xp1;
|
||||
uint16_t seta_xp2;
|
||||
uint16_t seta_yp1;
|
||||
uint16_t seta_yp2;
|
||||
};
|
||||
|
||||
#endif /* EPD4IN7_H */
|
||||
|
|
249
lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.cpp
Normal file → Executable file
249
lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.cpp
Normal file → Executable file
|
@ -3,6 +3,8 @@
|
|||
|
||||
// ARCHITECTURE-SPECIFIC TIMER STUFF ---------------------------------------
|
||||
|
||||
extern void lv_flush_callback(lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p);
|
||||
|
||||
// Tick interval for LittlevGL internal timekeeping; 1 to 10 ms recommended
|
||||
static const int lv_tick_interval_ms = 10;
|
||||
|
||||
|
@ -22,107 +24,16 @@ static void lv_tick_handler(void) { lv_tick_inc(lv_tick_interval_ms); }
|
|||
#define ADC_YMIN 240
|
||||
#define ADC_YMAX 840
|
||||
|
||||
|
||||
|
||||
uint32_t Touch_Status(uint32_t sel);
|
||||
|
||||
static bool touchscreen_read(struct _lv_indev_drv_t *indev_drv, lv_indev_data_t *data) {
|
||||
// static lv_coord_t last_x = 0, last_y = 0;
|
||||
//lv_coord_t last_x = 0, last_y = 0;
|
||||
//static uint8_t release_count = 0;
|
||||
|
||||
// // Get pointer to glue object from indev user data
|
||||
// Adafruit_LvGL_Glue *glue = (Adafruit_LvGL_Glue *)indev_drv->user_data;
|
||||
// uDisplay_lvgl *disp = glue->display;
|
||||
|
||||
// if (glue->is_adc_touch) {
|
||||
// TouchScreen *touch = (TouchScreen *)glue->touchscreen;
|
||||
// TSPoint p = touch->getPoint();
|
||||
// // Serial.printf("%d %d %d\r\n", p.x, p.y, p.z);
|
||||
// // Having an issue with spurious z=0 results from TouchScreen lib.
|
||||
// // Since touch is polled periodically, workaround is to watch for
|
||||
// // several successive z=0 results, and only then regard it as
|
||||
// // a release event (otherwise still touched).
|
||||
// if (p.z < touch->pressureThreshhold) { // A zero-ish value
|
||||
// release_count += (release_count < 255);
|
||||
// if (release_count >= 4) {
|
||||
// data->state = LV_INDEV_STATE_REL; // Is REALLY RELEASED
|
||||
// } else {
|
||||
// data->state = LV_INDEV_STATE_PR; // Is STILL PRESSED
|
||||
// }
|
||||
// } else {
|
||||
// release_count = 0; // Reset release counter
|
||||
// data->state = LV_INDEV_STATE_PR; // Is PRESSED
|
||||
// switch (glue->display->getRotation()) {
|
||||
// case 0:
|
||||
// last_x = map(p.x, ADC_XMIN, ADC_XMAX, 0, disp->width() - 1);
|
||||
// last_y = map(p.y, ADC_YMAX, ADC_YMIN, 0, disp->height() - 1);
|
||||
// break;
|
||||
// case 1:
|
||||
// last_x = map(p.y, ADC_YMAX, ADC_YMIN, 0, disp->width() - 1);
|
||||
// last_y = map(p.x, ADC_XMAX, ADC_XMIN, 0, disp->height() - 1);
|
||||
// break;
|
||||
// case 2:
|
||||
// last_x = map(p.x, ADC_XMAX, ADC_XMIN, 0, disp->width() - 1);
|
||||
// last_y = map(p.y, ADC_YMIN, ADC_YMAX, 0, disp->height() - 1);
|
||||
// break;
|
||||
// case 3:
|
||||
// last_x = map(p.y, ADC_YMIN, ADC_YMAX, 0, disp->width() - 1);
|
||||
// last_y = map(p.x, ADC_XMIN, ADC_XMAX, 0, disp->height() - 1);
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// data->point.x = last_x; // Last-pressed coordinates
|
||||
// data->point.y = last_y;
|
||||
// return false; // No buffering of ADC touch data
|
||||
// } else {
|
||||
// uint8_t fifo; // Number of points in touchscreen FIFO
|
||||
// bool moar = false;
|
||||
// Adafruit_STMPE610 *touch = (Adafruit_STMPE610 *)glue->touchscreen;
|
||||
// // Before accessing SPI touchscreen, wait on any in-progress
|
||||
// // DMA screen transfer to finish (shared bus).
|
||||
// //disp->dmaWait();
|
||||
// // disp->endWrite();
|
||||
// if ((fifo = touch->bufferSize())) { // 1 or more points await
|
||||
// data->state = LV_INDEV_STATE_PR; // Is PRESSED
|
||||
// TS_Point p = touch->getPoint();
|
||||
// // Serial.printf("%d %d %d\r\n", p.x, p.y, p.z);
|
||||
// // On big TFT FeatherWing, raw X axis is flipped??
|
||||
// if ((glue->display->width() == 480) || (glue->display->height() == 480)) {
|
||||
// p.x = (TS_MINX + TS_MAXX) - p.x;
|
||||
// }
|
||||
// switch (glue->display->getRotation()) {
|
||||
// case 0:
|
||||
// last_x = map(p.x, TS_MAXX, TS_MINX, 0, disp->width() - 1);
|
||||
// last_y = map(p.y, TS_MINY, TS_MAXY, 0, disp->height() - 1);
|
||||
// break;
|
||||
// case 1:
|
||||
// last_x = map(p.y, TS_MINY, TS_MAXY, 0, disp->width() - 1);
|
||||
// last_y = map(p.x, TS_MINX, TS_MAXX, 0, disp->height() - 1);
|
||||
// break;
|
||||
// case 2:
|
||||
// last_x = map(p.x, TS_MINX, TS_MAXX, 0, disp->width() - 1);
|
||||
// last_y = map(p.y, TS_MAXY, TS_MINY, 0, disp->height() - 1);
|
||||
// break;
|
||||
// case 3:
|
||||
// last_x = map(p.y, TS_MAXY, TS_MINY, 0, disp->width() - 1);
|
||||
// last_y = map(p.x, TS_MAXX, TS_MINX, 0, disp->height() - 1);
|
||||
// break;
|
||||
// }
|
||||
// moar = (fifo > 1); // true if more in FIFO, false if last point
|
||||
// #if defined(NRF52_SERIES)
|
||||
// // Not sure what's up here, but nRF doesn't seem to always poll
|
||||
// // the FIFO size correctly, causing false release events. If it
|
||||
// // looks like we've read the last point from the FIFO, pause
|
||||
// // briefly to allow any more FIFO events to pile up. This
|
||||
// // doesn't seem to be necessary on SAMD or ESP32. ???
|
||||
// if (!moar) {
|
||||
// delay(50);
|
||||
// }
|
||||
// #endif
|
||||
// } else { // FIFO empty
|
||||
// data->state = LV_INDEV_STATE_REL; // Is RELEASED
|
||||
// }
|
||||
|
||||
// data->point.x = last_x; // Last-pressed coordinates
|
||||
// data->point.y = last_y;
|
||||
// return moar;
|
||||
// }
|
||||
data->point.x = Touch_Status(1); // Last-pressed coordinates
|
||||
data->point.y = Touch_Status(2);
|
||||
data->state = Touch_Status(0);
|
||||
return false; /*No buffering now so no more data read*/
|
||||
}
|
||||
|
||||
|
@ -139,64 +50,65 @@ static bool touchscreen_read(struct _lv_indev_drv_t *indev_drv, lv_indev_data_t
|
|||
// Actual RAM usage will be 2X these figures, since using 2 DMA buffers...
|
||||
#define LV_BUFFER_ROWS 60 // Most others have a bit more space
|
||||
|
||||
// This is the flush function required for LittlevGL screen updates.
|
||||
// It receives a bounding rect and an array of pixel data (conveniently
|
||||
// already in 565 format, so the Earth was lucky there).
|
||||
static void lv_flush_callback(lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p) {
|
||||
// Get pointer to glue object from indev user data
|
||||
Adafruit_LvGL_Glue *glue = (Adafruit_LvGL_Glue *)disp->user_data;
|
||||
|
||||
uint16_t width = (area->x2 - area->x1 + 1);
|
||||
uint16_t height = (area->y2 - area->y1 + 1);
|
||||
// // This is the flush function required for LittlevGL screen updates.
|
||||
// // It receives a bounding rect and an array of pixel data (conveniently
|
||||
// // already in 565 format, so the Earth was lucky there).
|
||||
// static void lv_flush_callback(lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p) {
|
||||
// // Get pointer to glue object from indev user data
|
||||
// Adafruit_LvGL_Glue *glue = (Adafruit_LvGL_Glue *)disp->user_data;
|
||||
|
||||
if (glue->getScreenshotFile() != nullptr) {
|
||||
// save pixels to file
|
||||
int32_t btw = (width * height * LV_COLOR_DEPTH + 7) / 8;
|
||||
while (btw > 0) {
|
||||
int32_t ret = glue->getScreenshotFile()->write((const uint8_t*) color_p, btw);
|
||||
//Serial.printf(">>> btw %d, written %d\n", btw, ret);
|
||||
if (ret >= 0) {
|
||||
btw -= ret;
|
||||
} else {
|
||||
btw = 0; // abort
|
||||
}
|
||||
}
|
||||
lv_disp_flush_ready(disp);
|
||||
return; // ok
|
||||
}
|
||||
// uint16_t width = (area->x2 - area->x1 + 1);
|
||||
// uint16_t height = (area->y2 - area->y1 + 1);
|
||||
|
||||
uDisplay_lvgl *display = glue->display;
|
||||
// // check if we are currently doing a screenshot
|
||||
// if (glue->getScreenshotFile() != nullptr) {
|
||||
// // save pixels to file
|
||||
// int32_t btw = (width * height * LV_COLOR_DEPTH + 7) / 8;
|
||||
// while (btw > 0) {
|
||||
// int32_t ret = glue->getScreenshotFile()->write((const uint8_t*) color_p, btw);
|
||||
// if (ret >= 0) {
|
||||
// btw -= ret;
|
||||
// } else {
|
||||
// btw = 0; // abort
|
||||
// }
|
||||
// }
|
||||
// lv_disp_flush_ready(disp);
|
||||
// return; // ok
|
||||
// // }
|
||||
|
||||
if (!glue->first_frame) {
|
||||
//display->dmaWait(); // Wait for prior DMA transfer to complete
|
||||
//display->endWrite(); // End transaction from any prior call
|
||||
} else {
|
||||
glue->first_frame = false;
|
||||
}
|
||||
// Renderer *display = glue->display;
|
||||
|
||||
// display->startWrite();
|
||||
// display->setAddrWindow(area->x1, area->y1, width, height);
|
||||
display->writePixels(area->x1, area->y1, width, height,
|
||||
(uint16_t *)color_p, width * height);
|
||||
// display->pushColors((uint16_t *)color_p, width * height, false);
|
||||
// if (!glue->first_frame) {
|
||||
// //display->dmaWait(); // Wait for prior DMA transfer to complete
|
||||
// //display->endWrite(); // End transaction from any prior call
|
||||
// } else {
|
||||
// glue->first_frame = false;
|
||||
// }
|
||||
|
||||
lv_disp_flush_ready(disp);
|
||||
}
|
||||
// display->setAddrWindow(area->x1, area->y1, area->x1+width, area->y1+height);
|
||||
// display->pushColors((uint16_t *)color_p, width * height, true);
|
||||
// display->setAddrWindow(0,0,0,0);
|
||||
|
||||
// lv_disp_flush_ready(disp);
|
||||
|
||||
// }
|
||||
|
||||
// #if (LV_USE_LOG)
|
||||
// // Optional LittlevGL debug print function, writes to Serial if debug is
|
||||
// // enabled when calling glue begin() function.
|
||||
// static void lv_debug(lv_log_level_t level, const char *file, uint32_t line, const char *fname,
|
||||
// const char *dsc) {
|
||||
// Serial.print(file);
|
||||
// Serial.write('@');
|
||||
// Serial.print(line);
|
||||
// Serial.print(":");
|
||||
// Serial.print(fname);
|
||||
// Serial.write("->");
|
||||
// Serial.println(dsc);
|
||||
// }
|
||||
// #endif
|
||||
|
||||
#if (LV_USE_LOG)
|
||||
// Optional LittlevGL debug print function, writes to Serial if debug is
|
||||
// enabled when calling glue begin() function.
|
||||
static void lv_debug(lv_log_level_t level, const char *file, uint32_t line, const char *fname,
|
||||
const char *dsc) {
|
||||
Serial.print(file);
|
||||
Serial.write('@');
|
||||
Serial.print(line);
|
||||
Serial.print(":");
|
||||
Serial.print(fname);
|
||||
Serial.write("->");
|
||||
Serial.println(dsc);
|
||||
}
|
||||
#endif
|
||||
|
||||
// GLUE LIB FUNCTIONS ------------------------------------------------------
|
||||
|
||||
|
@ -208,9 +120,6 @@ static void lv_debug(lv_log_level_t level, const char *file, uint32_t line, cons
|
|||
*/
|
||||
Adafruit_LvGL_Glue::Adafruit_LvGL_Glue(void)
|
||||
: first_frame(true), lv_pixel_buf(NULL) {
|
||||
#if defined(ARDUINO_ARCH_SAMD)
|
||||
zerotimer = NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
// Destructor
|
||||
|
@ -221,9 +130,6 @@ Adafruit_LvGL_Glue::Adafruit_LvGL_Glue(void)
|
|||
*/
|
||||
Adafruit_LvGL_Glue::~Adafruit_LvGL_Glue(void) {
|
||||
delete[] lv_pixel_buf;
|
||||
#if defined(ARDUINO_ARCH_SAMD)
|
||||
delete zerotimer;
|
||||
#endif
|
||||
// Probably other stuff that could be deallocated here
|
||||
}
|
||||
|
||||
|
@ -286,23 +192,34 @@ Adafruit_LvGL_Glue::~Adafruit_LvGL_Glue(void) {
|
|||
* * LVGL_ERR_TIMER : Failure to set up timers
|
||||
* * LVGL_ERR_ALLOC : Failure to allocate memory
|
||||
*/
|
||||
LvGLStatus Adafruit_LvGL_Glue::begin(uDisplay_lvgl *tft, bool debug) {
|
||||
LvGLStatus Adafruit_LvGL_Glue::begin(Renderer *tft, bool debug) {
|
||||
return begin(tft, (void *)NULL, debug);
|
||||
}
|
||||
|
||||
LvGLStatus Adafruit_LvGL_Glue::begin(uDisplay_lvgl *tft, void *touch, bool debug) {
|
||||
LvGLStatus Adafruit_LvGL_Glue::begin(Renderer *tft, void *touch, bool debug) {
|
||||
|
||||
lv_init();
|
||||
// #if (LV_USE_LOG)
|
||||
// if (debug) {
|
||||
// lv_log_register_print_cb(lv_debug); // Register debug print function
|
||||
// }
|
||||
// #endif
|
||||
|
||||
// Allocate LvGL display buffer (x2 because DMA double buffering)
|
||||
LvGLStatus status = LVGL_ERR_ALLOC;
|
||||
// if ((lv_pixel_buf = new lv_color_t[LV_HOR_RES_MAX * LV_BUFFER_ROWS * 2])) {
|
||||
if ((lv_pixel_buf = new lv_color_t[LV_HOR_RES_MAX * LV_BUFFER_ROWS])) {
|
||||
|
||||
uint32_t lvgl_buffer_size;
|
||||
|
||||
//lvgl_buffer_size = LV_HOR_RES_MAX * LV_BUFFER_ROWS;
|
||||
uint8_t flushlines = tft->lvgl_pars()->fluslines;
|
||||
lvgl_buffer_size = tft->width() * (flushlines ? flushlines:LV_BUFFER_ROWS);
|
||||
if (tft->lvgl_pars()->use_dma) {
|
||||
lvgl_buffer_size /= 2;
|
||||
lv_pixel_buf2 = new lv_color_t[lvgl_buffer_size];
|
||||
if (!lv_pixel_buf2) {
|
||||
return status;
|
||||
}
|
||||
} else {
|
||||
lv_pixel_buf2 = nullptr;
|
||||
}
|
||||
|
||||
if ((lv_pixel_buf = new lv_color_t[lvgl_buffer_size])) {
|
||||
|
||||
display = tft;
|
||||
touchscreen = (void *)touch;
|
||||
|
@ -316,8 +233,8 @@ LvGLStatus Adafruit_LvGL_Glue::begin(uDisplay_lvgl *tft, void *touch, bool debug
|
|||
// Initialize LvGL display buffers
|
||||
lv_disp_buf_init(
|
||||
&lv_disp_buf, lv_pixel_buf, // 1st half buf
|
||||
nullptr, // 2nd half buf
|
||||
LV_HOR_RES_MAX * LV_BUFFER_ROWS);
|
||||
lv_pixel_buf2, // 2nd half buf
|
||||
lvgl_buffer_size);
|
||||
|
||||
// Initialize LvGL display driver
|
||||
lv_disp_drv_init(&lv_disp_drv);
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#define _ADAFRUIT_LVGL_GLUE_H_
|
||||
|
||||
#include <lvgl.h> // LittlevGL core lib
|
||||
#include <uDisplay_lvgl.h>
|
||||
#include <renderer.h>
|
||||
#include <Ticker.h> // ESP32-specific timer lib
|
||||
#include <FS.h>
|
||||
|
||||
|
@ -27,10 +27,11 @@ public:
|
|||
// bool debug = false);
|
||||
// LvGLStatus begin(uDisplay_lvgl *tft, TouchScreen *touch,
|
||||
// bool debug = false);
|
||||
LvGLStatus begin(uDisplay_lvgl *tft, bool debug = false);
|
||||
LvGLStatus begin(Renderer *tft, bool debug = false);
|
||||
LvGLStatus begin(Renderer *tft, void *touch, bool debug);
|
||||
// These items need to be public for some internal callbacks,
|
||||
// but should be avoided by user code please!
|
||||
uDisplay_lvgl *display; ///< Pointer to the SPITFT display instance
|
||||
Renderer *display; ///< Pointer to the SPITFT display instance
|
||||
void *touchscreen; ///< Pointer to the touchscreen object to use
|
||||
bool is_adc_touch; ///< determines if the touchscreen controlelr is ADC based
|
||||
bool first_frame; ///< Tracks if a call to `lv_flush_callback` needs to wait
|
||||
|
@ -40,10 +41,10 @@ public:
|
|||
void stopScreenshot(void) { screenshot = nullptr; }
|
||||
|
||||
private:
|
||||
LvGLStatus begin(uDisplay_lvgl *tft, void *touch, bool debug);
|
||||
lv_disp_drv_t lv_disp_drv;
|
||||
lv_disp_buf_t lv_disp_buf;
|
||||
lv_color_t *lv_pixel_buf;
|
||||
lv_color_t *lv_pixel_buf2;
|
||||
lv_indev_drv_t lv_indev_drv;
|
||||
lv_indev_t *lv_input_dev_ptr;
|
||||
Ticker tick;
|
||||
|
|
0
lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_changes/hello_changes.ino
Normal file → Executable file
0
lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_changes/hello_changes.ino
Normal file → Executable file
0
lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_clue/.clue.test.only
Normal file → Executable file
0
lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_clue/.clue.test.only
Normal file → Executable file
0
lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_clue/hello_clue.ino
Normal file → Executable file
0
lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_clue/hello_clue.ino
Normal file → Executable file
0
lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_featherwing/.cpx_ada.test.skip
Normal file → Executable file
0
lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_featherwing/.cpx_ada.test.skip
Normal file → Executable file
0
lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_featherwing/hello_featherwing.ino
Normal file → Executable file
0
lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_featherwing/hello_featherwing.ino
Normal file → Executable file
0
lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_gizmo/.cpb.test.only
Normal file → Executable file
0
lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_gizmo/.cpb.test.only
Normal file → Executable file
0
lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_gizmo/hello_gizmo.ino
Normal file → Executable file
0
lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_gizmo/hello_gizmo.ino
Normal file → Executable file
0
lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_pyportal/.pyportal.test.only
Normal file → Executable file
0
lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_pyportal/.pyportal.test.only
Normal file → Executable file
0
lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_pyportal/hello_pyportal.ino
Normal file → Executable file
0
lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_pyportal/hello_pyportal.ino
Normal file → Executable file
0
lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/widgets_clue/.clue.test.only
Normal file → Executable file
0
lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/widgets_clue/.clue.test.only
Normal file → Executable file
0
lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/widgets_clue/widgets_clue.ino
Normal file → Executable file
0
lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/widgets_clue/widgets_clue.ino
Normal file → Executable file
0
lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/widgets_featherwing/.cpx_ada.test.skip
Normal file → Executable file
0
lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/widgets_featherwing/.cpx_ada.test.skip
Normal file → Executable file
0
lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/widgets_featherwing/widgets_featherwing.ino
Normal file → Executable file
0
lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/widgets_featherwing/widgets_featherwing.ino
Normal file → Executable file
0
lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/widgets_gizmo/.cpb.test.only
Normal file → Executable file
0
lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/widgets_gizmo/.cpb.test.only
Normal file → Executable file
0
lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/widgets_gizmo/widgets_gizmo.ino
Normal file → Executable file
0
lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/widgets_gizmo/widgets_gizmo.ino
Normal file → Executable file
0
lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/widgets_pyportal/.pyportal.test.only
Normal file → Executable file
0
lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/widgets_pyportal/.pyportal.test.only
Normal file → Executable file
0
lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/widgets_pyportal/widgets_pyportal.ino
Normal file → Executable file
0
lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/widgets_pyportal/widgets_pyportal.ino
Normal file → Executable file
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"name":"LVGL_assets",
|
||||
"description":"Assets for LVGL on ESP32",
|
||||
"keywords":"lvgl, display",
|
||||
"authors":
|
||||
{
|
||||
"name": "xx",
|
||||
"maintainer": true
|
||||
},
|
||||
"version": "7.0",
|
||||
"license": "MIT License",
|
||||
"frameworks": "arduino",
|
||||
"platforms": "espressif32",
|
||||
"build": {
|
||||
"flags": [ "-DLV_LVGL_H_INCLUDE_SIMPLE" ]
|
||||
}
|
||||
}
|
|
@ -0,0 +1,171 @@
|
|||
/*******************************************************************************
|
||||
* Size: 10 px
|
||||
* Bpp: 1
|
||||
* Opts: --font DSEG7Classic-Bold.ttf -r 0x20-0x3F --size 10 --format lvgl --bpp 1 -o c_files//seg7_10.c
|
||||
******************************************************************************/
|
||||
|
||||
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
|
||||
#include "lvgl.h"
|
||||
#else
|
||||
#include "lvgl/lvgl.h"
|
||||
#endif
|
||||
|
||||
#ifndef SEG7_10
|
||||
#define SEG7_10 1
|
||||
#endif
|
||||
|
||||
#if SEG7_10
|
||||
|
||||
/*-----------------
|
||||
* BITMAPS
|
||||
*----------------*/
|
||||
|
||||
/*Store the image of the glyphs*/
|
||||
static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = {
|
||||
/* U+0020 " " */
|
||||
0x0,
|
||||
|
||||
/* U+0021 "!" */
|
||||
0x0,
|
||||
|
||||
/* U+002D "-" */
|
||||
0xf0,
|
||||
|
||||
/* U+002E "." */
|
||||
0xc0,
|
||||
|
||||
/* U+0030 "0" */
|
||||
0x7a, 0x18, 0x61, 0x86, 0x18, 0x61, 0x85, 0xe0,
|
||||
|
||||
/* U+0031 "1" */
|
||||
0xf7, 0x80,
|
||||
|
||||
/* U+0032 "2" */
|
||||
0x78, 0x10, 0x41, 0x7a, 0x8, 0x20, 0x81, 0xe0,
|
||||
|
||||
/* U+0033 "3" */
|
||||
0x78, 0x10, 0x41, 0x78, 0x10, 0x41, 0x5, 0xe0,
|
||||
|
||||
/* U+0034 "4" */
|
||||
0x86, 0x18, 0x61, 0x78, 0x10, 0x41, 0x4,
|
||||
|
||||
/* U+0035 "5" */
|
||||
0x7a, 0x8, 0x20, 0x78, 0x10, 0x41, 0x5, 0xe0,
|
||||
|
||||
/* U+0036 "6" */
|
||||
0x7a, 0x8, 0x20, 0x7a, 0x18, 0x61, 0x85, 0xe0,
|
||||
|
||||
/* U+0037 "7" */
|
||||
0x7a, 0x18, 0x61, 0x84, 0x10, 0x41, 0x4, 0x0,
|
||||
|
||||
/* U+0038 "8" */
|
||||
0x7a, 0x18, 0x61, 0x7a, 0x18, 0x61, 0x85, 0xe0,
|
||||
|
||||
/* U+0039 "9" */
|
||||
0x7a, 0x18, 0x61, 0x78, 0x10, 0x41, 0x5, 0xe0,
|
||||
|
||||
/* U+003A ":" */
|
||||
0xc0, 0xc0
|
||||
};
|
||||
|
||||
|
||||
/*---------------------
|
||||
* GLYPH DESCRIPTION
|
||||
*--------------------*/
|
||||
|
||||
static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = {
|
||||
{.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */,
|
||||
{.bitmap_index = 0, .adv_w = 32, .box_w = 1, .box_h = 1, .ofs_x = 0, .ofs_y = 0},
|
||||
{.bitmap_index = 1, .adv_w = 131, .box_w = 1, .box_h = 1, .ofs_x = 0, .ofs_y = 0},
|
||||
{.bitmap_index = 2, .adv_w = 131, .box_w = 4, .box_h = 1, .ofs_x = 2, .ofs_y = 5},
|
||||
{.bitmap_index = 3, .adv_w = 0, .box_w = 2, .box_h = 1, .ofs_x = -1, .ofs_y = 0},
|
||||
{.bitmap_index = 4, .adv_w = 131, .box_w = 6, .box_h = 10, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 12, .adv_w = 131, .box_w = 1, .box_h = 10, .ofs_x = 6, .ofs_y = 0},
|
||||
{.bitmap_index = 14, .adv_w = 131, .box_w = 6, .box_h = 10, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 22, .adv_w = 131, .box_w = 6, .box_h = 10, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 30, .adv_w = 131, .box_w = 6, .box_h = 9, .ofs_x = 1, .ofs_y = 1},
|
||||
{.bitmap_index = 37, .adv_w = 131, .box_w = 6, .box_h = 10, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 45, .adv_w = 131, .box_w = 6, .box_h = 10, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 53, .adv_w = 131, .box_w = 6, .box_h = 10, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 61, .adv_w = 131, .box_w = 6, .box_h = 10, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 69, .adv_w = 131, .box_w = 6, .box_h = 10, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 77, .adv_w = 32, .box_w = 2, .box_h = 5, .ofs_x = 0, .ofs_y = 2}
|
||||
};
|
||||
|
||||
/*---------------------
|
||||
* CHARACTER MAPPING
|
||||
*--------------------*/
|
||||
|
||||
static const uint16_t unicode_list_0[] = {
|
||||
0x0, 0x1, 0xd, 0xe
|
||||
};
|
||||
|
||||
/*Collect the unicode lists and glyph_id offsets*/
|
||||
static const lv_font_fmt_txt_cmap_t cmaps[] =
|
||||
{
|
||||
{
|
||||
.range_start = 32, .range_length = 15, .glyph_id_start = 1,
|
||||
.unicode_list = unicode_list_0, .glyph_id_ofs_list = NULL, .list_length = 4, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY
|
||||
},
|
||||
{
|
||||
.range_start = 48, .range_length = 11, .glyph_id_start = 5,
|
||||
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
/*--------------------
|
||||
* ALL CUSTOM DATA
|
||||
*--------------------*/
|
||||
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
/*Store all the custom data of the font*/
|
||||
static lv_font_fmt_txt_glyph_cache_t cache;
|
||||
static const lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#else
|
||||
static lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#endif
|
||||
.glyph_bitmap = glyph_bitmap,
|
||||
.glyph_dsc = glyph_dsc,
|
||||
.cmaps = cmaps,
|
||||
.kern_dsc = NULL,
|
||||
.kern_scale = 0,
|
||||
.cmap_num = 2,
|
||||
.bpp = 1,
|
||||
.kern_classes = 0,
|
||||
.bitmap_format = 0,
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
.cache = &cache
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
/*-----------------
|
||||
* PUBLIC FONT
|
||||
*----------------*/
|
||||
|
||||
/*Initialize a public general font descriptor*/
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
const lv_font_t seg7_10 = {
|
||||
#else
|
||||
lv_font_t seg7_10 = {
|
||||
#endif
|
||||
.get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/
|
||||
.get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/
|
||||
.line_height = 10, /*The maximum line height required by the font*/
|
||||
.base_line = 0, /*Baseline measured from the bottom of the line*/
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
.underline_position = -1,
|
||||
.underline_thickness = 1,
|
||||
#endif
|
||||
.dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif /*#if SEG7_10*/
|
||||
|
|
@ -0,0 +1,180 @@
|
|||
/*******************************************************************************
|
||||
* Size: 12 px
|
||||
* Bpp: 1
|
||||
* Opts: --font DSEG7Classic-Bold.ttf -r 0x20-0x3F --size 12 --format lvgl --bpp 1 -o c_files//seg7_12.c
|
||||
******************************************************************************/
|
||||
|
||||
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
|
||||
#include "lvgl.h"
|
||||
#else
|
||||
#include "lvgl/lvgl.h"
|
||||
#endif
|
||||
|
||||
#ifndef SEG7_12
|
||||
#define SEG7_12 1
|
||||
#endif
|
||||
|
||||
#if SEG7_12
|
||||
|
||||
/*-----------------
|
||||
* BITMAPS
|
||||
*----------------*/
|
||||
|
||||
/*Store the image of the glyphs*/
|
||||
static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = {
|
||||
/* U+0020 " " */
|
||||
0x0,
|
||||
|
||||
/* U+0021 "!" */
|
||||
0x0,
|
||||
|
||||
/* U+002D "-" */
|
||||
0xfc,
|
||||
|
||||
/* U+002E "." */
|
||||
0xc0,
|
||||
|
||||
/* U+0030 "0" */
|
||||
0x7d, 0x6, 0xc, 0x18, 0x30, 0x60, 0xc1, 0x83,
|
||||
0x6, 0xb, 0xe0,
|
||||
|
||||
/* U+0031 "1" */
|
||||
0xfb, 0xe0,
|
||||
|
||||
/* U+0032 "2" */
|
||||
0x7c, 0x4, 0x8, 0x10, 0x2f, 0xa0, 0x40, 0x81,
|
||||
0x2, 0x3, 0xe0,
|
||||
|
||||
/* U+0033 "3" */
|
||||
0xf8, 0x10, 0x41, 0x7, 0xe0, 0x41, 0x4, 0x10,
|
||||
0x7e,
|
||||
|
||||
/* U+0034 "4" */
|
||||
0x83, 0x6, 0xc, 0x18, 0x2f, 0x80, 0x81, 0x2,
|
||||
0x4, 0x8,
|
||||
|
||||
/* U+0035 "5" */
|
||||
0x7d, 0x2, 0x4, 0x8, 0xf, 0x80, 0x81, 0x2,
|
||||
0x4, 0xb, 0xe0,
|
||||
|
||||
/* U+0036 "6" */
|
||||
0x7d, 0x2, 0x4, 0x8, 0xf, 0xa0, 0xc1, 0x83,
|
||||
0x6, 0xb, 0xe0,
|
||||
|
||||
/* U+0037 "7" */
|
||||
0x7d, 0x6, 0xc, 0x18, 0x30, 0x40, 0x81, 0x2,
|
||||
0x4, 0x8, 0x0,
|
||||
|
||||
/* U+0038 "8" */
|
||||
0x7d, 0x6, 0xc, 0x18, 0x2f, 0xa0, 0xc1, 0x83,
|
||||
0x6, 0xb, 0xe0,
|
||||
|
||||
/* U+0039 "9" */
|
||||
0x7d, 0x6, 0xc, 0x18, 0x2f, 0x80, 0x81, 0x2,
|
||||
0x4, 0xb, 0xe0,
|
||||
|
||||
/* U+003A ":" */
|
||||
0xc0, 0x30
|
||||
};
|
||||
|
||||
|
||||
/*---------------------
|
||||
* GLYPH DESCRIPTION
|
||||
*--------------------*/
|
||||
|
||||
static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = {
|
||||
{.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */,
|
||||
{.bitmap_index = 0, .adv_w = 38, .box_w = 1, .box_h = 1, .ofs_x = 0, .ofs_y = 0},
|
||||
{.bitmap_index = 1, .adv_w = 157, .box_w = 1, .box_h = 1, .ofs_x = 0, .ofs_y = 0},
|
||||
{.bitmap_index = 2, .adv_w = 157, .box_w = 6, .box_h = 1, .ofs_x = 2, .ofs_y = 6},
|
||||
{.bitmap_index = 3, .adv_w = 0, .box_w = 2, .box_h = 1, .ofs_x = -1, .ofs_y = 0},
|
||||
{.bitmap_index = 4, .adv_w = 157, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 15, .adv_w = 157, .box_w = 1, .box_h = 12, .ofs_x = 7, .ofs_y = 0},
|
||||
{.bitmap_index = 17, .adv_w = 157, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 28, .adv_w = 157, .box_w = 6, .box_h = 12, .ofs_x = 2, .ofs_y = 0},
|
||||
{.bitmap_index = 37, .adv_w = 157, .box_w = 7, .box_h = 11, .ofs_x = 1, .ofs_y = 1},
|
||||
{.bitmap_index = 47, .adv_w = 157, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 58, .adv_w = 157, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 69, .adv_w = 157, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 80, .adv_w = 157, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 91, .adv_w = 157, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 102, .adv_w = 38, .box_w = 2, .box_h = 6, .ofs_x = 0, .ofs_y = 3}
|
||||
};
|
||||
|
||||
/*---------------------
|
||||
* CHARACTER MAPPING
|
||||
*--------------------*/
|
||||
|
||||
static const uint16_t unicode_list_0[] = {
|
||||
0x0, 0x1, 0xd, 0xe
|
||||
};
|
||||
|
||||
/*Collect the unicode lists and glyph_id offsets*/
|
||||
static const lv_font_fmt_txt_cmap_t cmaps[] =
|
||||
{
|
||||
{
|
||||
.range_start = 32, .range_length = 15, .glyph_id_start = 1,
|
||||
.unicode_list = unicode_list_0, .glyph_id_ofs_list = NULL, .list_length = 4, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY
|
||||
},
|
||||
{
|
||||
.range_start = 48, .range_length = 11, .glyph_id_start = 5,
|
||||
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
/*--------------------
|
||||
* ALL CUSTOM DATA
|
||||
*--------------------*/
|
||||
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
/*Store all the custom data of the font*/
|
||||
static lv_font_fmt_txt_glyph_cache_t cache;
|
||||
static const lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#else
|
||||
static lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#endif
|
||||
.glyph_bitmap = glyph_bitmap,
|
||||
.glyph_dsc = glyph_dsc,
|
||||
.cmaps = cmaps,
|
||||
.kern_dsc = NULL,
|
||||
.kern_scale = 0,
|
||||
.cmap_num = 2,
|
||||
.bpp = 1,
|
||||
.kern_classes = 0,
|
||||
.bitmap_format = 0,
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
.cache = &cache
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
/*-----------------
|
||||
* PUBLIC FONT
|
||||
*----------------*/
|
||||
|
||||
/*Initialize a public general font descriptor*/
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
const lv_font_t seg7_12 = {
|
||||
#else
|
||||
lv_font_t seg7_12 = {
|
||||
#endif
|
||||
.get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/
|
||||
.get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/
|
||||
.line_height = 12, /*The maximum line height required by the font*/
|
||||
.base_line = 0, /*Baseline measured from the bottom of the line*/
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
.underline_position = -1,
|
||||
.underline_thickness = 1,
|
||||
#endif
|
||||
.dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif /*#if SEG7_12*/
|
||||
|
|
@ -0,0 +1,186 @@
|
|||
/*******************************************************************************
|
||||
* Size: 14 px
|
||||
* Bpp: 1
|
||||
* Opts: --font DSEG7Classic-Bold.ttf -r 0x20-0x3F --size 14 --format lvgl --bpp 1 -o c_files//seg7_14.c
|
||||
******************************************************************************/
|
||||
|
||||
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
|
||||
#include "lvgl.h"
|
||||
#else
|
||||
#include "lvgl/lvgl.h"
|
||||
#endif
|
||||
|
||||
#ifndef SEG7_14
|
||||
#define SEG7_14 1
|
||||
#endif
|
||||
|
||||
#if SEG7_14
|
||||
|
||||
/*-----------------
|
||||
* BITMAPS
|
||||
*----------------*/
|
||||
|
||||
/*Store the image of the glyphs*/
|
||||
static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = {
|
||||
/* U+0020 " " */
|
||||
0x0,
|
||||
|
||||
/* U+0021 "!" */
|
||||
0x0,
|
||||
|
||||
/* U+002D "-" */
|
||||
0x7e, 0xfc,
|
||||
|
||||
/* U+002E "." */
|
||||
0xf0,
|
||||
|
||||
/* U+0030 "0" */
|
||||
0x7f, 0x5f, 0x70, 0x78, 0x3c, 0x1e, 0xf, 0x6,
|
||||
0x0, 0xc1, 0xe0, 0xf0, 0x78, 0x3c, 0x1d, 0xf5,
|
||||
0xfc,
|
||||
|
||||
/* U+0031 "1" */
|
||||
0x7f, 0xf7, 0xff, 0xc0,
|
||||
|
||||
/* U+0032 "2" */
|
||||
0x7f, 0x1f, 0x40, 0x60, 0x30, 0x18, 0xc, 0x6,
|
||||
0x7d, 0xbe, 0x60, 0x30, 0x18, 0xc, 0x5, 0xf1,
|
||||
0xfc,
|
||||
|
||||
/* U+0033 "3" */
|
||||
0xfe, 0x7d, 0x3, 0x3, 0x3, 0x3, 0x3, 0x7d,
|
||||
0x7d, 0x3, 0x3, 0x3, 0x3, 0x7d, 0xfe,
|
||||
|
||||
/* U+0034 "4" */
|
||||
0x80, 0xe0, 0xf0, 0x78, 0x3c, 0x1e, 0xe, 0xfa,
|
||||
0x7d, 0x1, 0x80, 0xc0, 0x60, 0x30, 0x18, 0x4,
|
||||
|
||||
/* U+0035 "5" */
|
||||
0x7f, 0x5f, 0x30, 0x18, 0xc, 0x6, 0x3, 0x1,
|
||||
0x7c, 0x3e, 0x80, 0xc0, 0x60, 0x30, 0x19, 0xf5,
|
||||
0xfc,
|
||||
|
||||
/* U+0036 "6" */
|
||||
0x7f, 0x5f, 0x30, 0x18, 0xc, 0x6, 0x3, 0x1,
|
||||
0x7c, 0xbe, 0xe0, 0xf0, 0x78, 0x3c, 0x1d, 0xf5,
|
||||
0xfc,
|
||||
|
||||
/* U+0037 "7" */
|
||||
0x7f, 0x5f, 0x70, 0x78, 0x3c, 0x1e, 0xf, 0x6,
|
||||
0x1, 0x1, 0x80, 0xc0, 0x60, 0x30, 0x18, 0x4,
|
||||
|
||||
/* U+0038 "8" */
|
||||
0x7f, 0x5f, 0x70, 0x78, 0x3c, 0x1e, 0xf, 0x7,
|
||||
0x7d, 0xbe, 0xe0, 0xf0, 0x78, 0x3c, 0x1d, 0xf5,
|
||||
0xfc,
|
||||
|
||||
/* U+0039 "9" */
|
||||
0x7f, 0x5f, 0x70, 0x78, 0x3c, 0x1e, 0xf, 0x7,
|
||||
0x7d, 0x3e, 0x80, 0xc0, 0x60, 0x30, 0x19, 0xf5,
|
||||
0xfc,
|
||||
|
||||
/* U+003A ":" */
|
||||
0xc3
|
||||
};
|
||||
|
||||
|
||||
/*---------------------
|
||||
* GLYPH DESCRIPTION
|
||||
*--------------------*/
|
||||
|
||||
static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = {
|
||||
{.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */,
|
||||
{.bitmap_index = 0, .adv_w = 45, .box_w = 1, .box_h = 1, .ofs_x = 0, .ofs_y = 0},
|
||||
{.bitmap_index = 1, .adv_w = 183, .box_w = 1, .box_h = 1, .ofs_x = 0, .ofs_y = 0},
|
||||
{.bitmap_index = 2, .adv_w = 183, .box_w = 7, .box_h = 2, .ofs_x = 2, .ofs_y = 6},
|
||||
{.bitmap_index = 4, .adv_w = 0, .box_w = 2, .box_h = 2, .ofs_x = -1, .ofs_y = 0},
|
||||
{.bitmap_index = 5, .adv_w = 183, .box_w = 9, .box_h = 15, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 22, .adv_w = 183, .box_w = 2, .box_h = 13, .ofs_x = 8, .ofs_y = 1},
|
||||
{.bitmap_index = 26, .adv_w = 183, .box_w = 9, .box_h = 15, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 43, .adv_w = 183, .box_w = 8, .box_h = 15, .ofs_x = 2, .ofs_y = 0},
|
||||
{.bitmap_index = 58, .adv_w = 183, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 74, .adv_w = 183, .box_w = 9, .box_h = 15, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 91, .adv_w = 183, .box_w = 9, .box_h = 15, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 108, .adv_w = 183, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 1},
|
||||
{.bitmap_index = 124, .adv_w = 183, .box_w = 9, .box_h = 15, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 141, .adv_w = 183, .box_w = 9, .box_h = 15, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 158, .adv_w = 45, .box_w = 1, .box_h = 8, .ofs_x = 1, .ofs_y = 3}
|
||||
};
|
||||
|
||||
/*---------------------
|
||||
* CHARACTER MAPPING
|
||||
*--------------------*/
|
||||
|
||||
static const uint16_t unicode_list_0[] = {
|
||||
0x0, 0x1, 0xd, 0xe
|
||||
};
|
||||
|
||||
/*Collect the unicode lists and glyph_id offsets*/
|
||||
static const lv_font_fmt_txt_cmap_t cmaps[] =
|
||||
{
|
||||
{
|
||||
.range_start = 32, .range_length = 15, .glyph_id_start = 1,
|
||||
.unicode_list = unicode_list_0, .glyph_id_ofs_list = NULL, .list_length = 4, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY
|
||||
},
|
||||
{
|
||||
.range_start = 48, .range_length = 11, .glyph_id_start = 5,
|
||||
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
/*--------------------
|
||||
* ALL CUSTOM DATA
|
||||
*--------------------*/
|
||||
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
/*Store all the custom data of the font*/
|
||||
static lv_font_fmt_txt_glyph_cache_t cache;
|
||||
static const lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#else
|
||||
static lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#endif
|
||||
.glyph_bitmap = glyph_bitmap,
|
||||
.glyph_dsc = glyph_dsc,
|
||||
.cmaps = cmaps,
|
||||
.kern_dsc = NULL,
|
||||
.kern_scale = 0,
|
||||
.cmap_num = 2,
|
||||
.bpp = 1,
|
||||
.kern_classes = 0,
|
||||
.bitmap_format = 0,
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
.cache = &cache
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
/*-----------------
|
||||
* PUBLIC FONT
|
||||
*----------------*/
|
||||
|
||||
/*Initialize a public general font descriptor*/
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
const lv_font_t seg7_14 = {
|
||||
#else
|
||||
lv_font_t seg7_14 = {
|
||||
#endif
|
||||
.get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/
|
||||
.get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/
|
||||
.line_height = 15, /*The maximum line height required by the font*/
|
||||
.base_line = 0, /*Baseline measured from the bottom of the line*/
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
.underline_position = -2,
|
||||
.underline_thickness = 1,
|
||||
#endif
|
||||
.dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif /*#if SEG7_14*/
|
||||
|
|
@ -0,0 +1,189 @@
|
|||
/*******************************************************************************
|
||||
* Size: 16 px
|
||||
* Bpp: 1
|
||||
* Opts: --font DSEG7Classic-Bold.ttf -r 0x20-0x3F --size 16 --format lvgl --bpp 1 -o c_files//seg7_16.c
|
||||
******************************************************************************/
|
||||
|
||||
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
|
||||
#include "lvgl.h"
|
||||
#else
|
||||
#include "lvgl/lvgl.h"
|
||||
#endif
|
||||
|
||||
#ifndef SEG7_16
|
||||
#define SEG7_16 1
|
||||
#endif
|
||||
|
||||
#if SEG7_16
|
||||
|
||||
/*-----------------
|
||||
* BITMAPS
|
||||
*----------------*/
|
||||
|
||||
/*Store the image of the glyphs*/
|
||||
static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = {
|
||||
/* U+0020 " " */
|
||||
0x0,
|
||||
|
||||
/* U+0021 "!" */
|
||||
0x0,
|
||||
|
||||
/* U+002D "-" */
|
||||
0xff, 0xfc,
|
||||
|
||||
/* U+002E "." */
|
||||
0xf0,
|
||||
|
||||
/* U+0030 "0" */
|
||||
0x7f, 0xaf, 0xdc, 0xf, 0x3, 0xc0, 0xf0, 0x3c,
|
||||
0xe, 0x1, 0x80, 0x70, 0x3c, 0xf, 0x3, 0xc0,
|
||||
0xf0, 0x3b, 0xf5, 0xfe,
|
||||
|
||||
/* U+0031 "1" */
|
||||
0xff, 0xf7, 0xff, 0xd0,
|
||||
|
||||
/* U+0032 "2" */
|
||||
0x7f, 0x8f, 0xd0, 0xc, 0x3, 0x0, 0xc0, 0x30,
|
||||
0xc, 0xfd, 0xbf, 0x30, 0xc, 0x3, 0x0, 0xc0,
|
||||
0x30, 0xb, 0xf1, 0xfe,
|
||||
|
||||
/* U+0033 "3" */
|
||||
0xff, 0x3f, 0x40, 0x60, 0x30, 0x18, 0xc, 0x6,
|
||||
0xfd, 0x7e, 0x80, 0xc0, 0x60, 0x30, 0x18, 0xd,
|
||||
0xfb, 0xfe,
|
||||
|
||||
/* U+0034 "4" */
|
||||
0x80, 0x70, 0x3c, 0xf, 0x3, 0xc0, 0xf0, 0x3b,
|
||||
0xf4, 0xfd, 0x0, 0xc0, 0x30, 0xc, 0x3, 0x0,
|
||||
0xc0, 0x10,
|
||||
|
||||
/* U+0035 "5" */
|
||||
0x7f, 0xaf, 0xcc, 0x3, 0x0, 0xc0, 0x30, 0xc,
|
||||
0x2, 0xfc, 0x3f, 0x40, 0x30, 0xc, 0x3, 0x0,
|
||||
0xc0, 0x33, 0xf5, 0xfe,
|
||||
|
||||
/* U+0036 "6" */
|
||||
0x7f, 0xaf, 0xcc, 0x3, 0x0, 0xc0, 0x30, 0xc,
|
||||
0x2, 0xfc, 0xbf, 0x70, 0x3c, 0xf, 0x3, 0xc0,
|
||||
0xf0, 0x3b, 0xf5, 0xfe,
|
||||
|
||||
/* U+0037 "7" */
|
||||
0x7f, 0xaf, 0xdc, 0xf, 0x3, 0xc0, 0xf0, 0x3c,
|
||||
0xe, 0x1, 0x0, 0xc0, 0x30, 0xc, 0x3, 0x0,
|
||||
0xc0, 0x30, 0x4,
|
||||
|
||||
/* U+0038 "8" */
|
||||
0x7f, 0xaf, 0xdc, 0xf, 0x3, 0xc0, 0xf0, 0x3c,
|
||||
0xe, 0xfd, 0xbf, 0x70, 0x3c, 0xf, 0x3, 0xc0,
|
||||
0xf0, 0x3b, 0xf5, 0xfe,
|
||||
|
||||
/* U+0039 "9" */
|
||||
0x7f, 0xaf, 0xdc, 0xf, 0x3, 0xc0, 0xf0, 0x3c,
|
||||
0xe, 0xfd, 0x3f, 0x40, 0x30, 0xc, 0x3, 0x0,
|
||||
0xc0, 0x33, 0xf5, 0xfe,
|
||||
|
||||
/* U+003A ":" */
|
||||
0xa0, 0xa
|
||||
};
|
||||
|
||||
|
||||
/*---------------------
|
||||
* GLYPH DESCRIPTION
|
||||
*--------------------*/
|
||||
|
||||
static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = {
|
||||
{.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */,
|
||||
{.bitmap_index = 0, .adv_w = 51, .box_w = 1, .box_h = 1, .ofs_x = 0, .ofs_y = 0},
|
||||
{.bitmap_index = 1, .adv_w = 209, .box_w = 1, .box_h = 1, .ofs_x = 0, .ofs_y = 0},
|
||||
{.bitmap_index = 2, .adv_w = 209, .box_w = 7, .box_h = 2, .ofs_x = 3, .ofs_y = 7},
|
||||
{.bitmap_index = 4, .adv_w = 0, .box_w = 2, .box_h = 2, .ofs_x = -1, .ofs_y = 0},
|
||||
{.bitmap_index = 5, .adv_w = 209, .box_w = 10, .box_h = 16, .ofs_x = 2, .ofs_y = 0},
|
||||
{.bitmap_index = 25, .adv_w = 209, .box_w = 2, .box_h = 14, .ofs_x = 9, .ofs_y = 1},
|
||||
{.bitmap_index = 29, .adv_w = 209, .box_w = 10, .box_h = 16, .ofs_x = 2, .ofs_y = 0},
|
||||
{.bitmap_index = 49, .adv_w = 209, .box_w = 9, .box_h = 16, .ofs_x = 2, .ofs_y = 0},
|
||||
{.bitmap_index = 67, .adv_w = 209, .box_w = 10, .box_h = 14, .ofs_x = 2, .ofs_y = 1},
|
||||
{.bitmap_index = 85, .adv_w = 209, .box_w = 10, .box_h = 16, .ofs_x = 2, .ofs_y = 0},
|
||||
{.bitmap_index = 105, .adv_w = 209, .box_w = 10, .box_h = 16, .ofs_x = 2, .ofs_y = 0},
|
||||
{.bitmap_index = 125, .adv_w = 209, .box_w = 10, .box_h = 15, .ofs_x = 2, .ofs_y = 1},
|
||||
{.bitmap_index = 144, .adv_w = 209, .box_w = 10, .box_h = 16, .ofs_x = 2, .ofs_y = 0},
|
||||
{.bitmap_index = 164, .adv_w = 209, .box_w = 10, .box_h = 16, .ofs_x = 2, .ofs_y = 0},
|
||||
{.bitmap_index = 184, .adv_w = 51, .box_w = 2, .box_h = 8, .ofs_x = 1, .ofs_y = 3}
|
||||
};
|
||||
|
||||
/*---------------------
|
||||
* CHARACTER MAPPING
|
||||
*--------------------*/
|
||||
|
||||
static const uint16_t unicode_list_0[] = {
|
||||
0x0, 0x1, 0xd, 0xe
|
||||
};
|
||||
|
||||
/*Collect the unicode lists and glyph_id offsets*/
|
||||
static const lv_font_fmt_txt_cmap_t cmaps[] =
|
||||
{
|
||||
{
|
||||
.range_start = 32, .range_length = 15, .glyph_id_start = 1,
|
||||
.unicode_list = unicode_list_0, .glyph_id_ofs_list = NULL, .list_length = 4, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY
|
||||
},
|
||||
{
|
||||
.range_start = 48, .range_length = 11, .glyph_id_start = 5,
|
||||
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
/*--------------------
|
||||
* ALL CUSTOM DATA
|
||||
*--------------------*/
|
||||
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
/*Store all the custom data of the font*/
|
||||
static lv_font_fmt_txt_glyph_cache_t cache;
|
||||
static const lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#else
|
||||
static lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#endif
|
||||
.glyph_bitmap = glyph_bitmap,
|
||||
.glyph_dsc = glyph_dsc,
|
||||
.cmaps = cmaps,
|
||||
.kern_dsc = NULL,
|
||||
.kern_scale = 0,
|
||||
.cmap_num = 2,
|
||||
.bpp = 1,
|
||||
.kern_classes = 0,
|
||||
.bitmap_format = 0,
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
.cache = &cache
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
/*-----------------
|
||||
* PUBLIC FONT
|
||||
*----------------*/
|
||||
|
||||
/*Initialize a public general font descriptor*/
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
const lv_font_t seg7_16 = {
|
||||
#else
|
||||
lv_font_t seg7_16 = {
|
||||
#endif
|
||||
.get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/
|
||||
.get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/
|
||||
.line_height = 16, /*The maximum line height required by the font*/
|
||||
.base_line = 0, /*Baseline measured from the bottom of the line*/
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
.underline_position = -2,
|
||||
.underline_thickness = 1,
|
||||
#endif
|
||||
.dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif /*#if SEG7_16*/
|
||||
|
|
@ -0,0 +1,195 @@
|
|||
/*******************************************************************************
|
||||
* Size: 18 px
|
||||
* Bpp: 1
|
||||
* Opts: --font DSEG7Classic-Bold.ttf -r 0x20-0x3F --size 18 --format lvgl --bpp 1 -o c_files//seg7_18.c
|
||||
******************************************************************************/
|
||||
|
||||
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
|
||||
#include "lvgl.h"
|
||||
#else
|
||||
#include "lvgl/lvgl.h"
|
||||
#endif
|
||||
|
||||
#ifndef SEG7_18
|
||||
#define SEG7_18 1
|
||||
#endif
|
||||
|
||||
#if SEG7_18
|
||||
|
||||
/*-----------------
|
||||
* BITMAPS
|
||||
*----------------*/
|
||||
|
||||
/*Store the image of the glyphs*/
|
||||
static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = {
|
||||
/* U+0020 " " */
|
||||
0x0,
|
||||
|
||||
/* U+0021 "!" */
|
||||
0x0,
|
||||
|
||||
/* U+002D "-" */
|
||||
0x7f, 0x3f, 0x80,
|
||||
|
||||
/* U+002E "." */
|
||||
0xf0,
|
||||
|
||||
/* U+0030 "0" */
|
||||
0x7f, 0xd7, 0xf7, 0x1, 0xe0, 0x3c, 0x7, 0x80,
|
||||
0xf0, 0x1e, 0x3, 0x80, 0x30, 0x7, 0x1, 0xe0,
|
||||
0x3c, 0x7, 0x80, 0xf0, 0x1e, 0x3, 0xbf, 0xaf,
|
||||
0xf8,
|
||||
|
||||
/* U+0031 "1" */
|
||||
0x7f, 0xfd, 0x7f, 0xfd,
|
||||
|
||||
/* U+0032 "2" */
|
||||
0x7f, 0xc7, 0xf4, 0x1, 0x80, 0x30, 0x6, 0x0,
|
||||
0xc0, 0x18, 0x3, 0x3f, 0xb7, 0xf3, 0x0, 0x60,
|
||||
0xc, 0x1, 0x80, 0x30, 0x6, 0x0, 0xbf, 0x8f,
|
||||
0xf8,
|
||||
|
||||
/* U+0033 "3" */
|
||||
0xff, 0x9f, 0xd0, 0xc, 0x3, 0x0, 0xc0, 0x30,
|
||||
0xc, 0x3, 0x7f, 0x5f, 0xd0, 0xc, 0x3, 0x0,
|
||||
0xc0, 0x30, 0xc, 0x3, 0x7f, 0x7f, 0xe0,
|
||||
|
||||
/* U+0034 "4" */
|
||||
0x80, 0x38, 0xf, 0x1, 0xe0, 0x3c, 0x7, 0x80,
|
||||
0xf0, 0x1d, 0xfd, 0x3f, 0xa0, 0xc, 0x1, 0x80,
|
||||
0x30, 0x6, 0x0, 0xc0, 0x18, 0x1,
|
||||
|
||||
/* U+0035 "5" */
|
||||
0x7f, 0xd7, 0xf3, 0x0, 0x60, 0xc, 0x1, 0x80,
|
||||
0x30, 0x6, 0x0, 0xbf, 0x87, 0xf4, 0x1, 0x80,
|
||||
0x30, 0x6, 0x0, 0xc0, 0x18, 0x3, 0x3f, 0xaf,
|
||||
0xf8,
|
||||
|
||||
/* U+0036 "6" */
|
||||
0x7f, 0xd7, 0xf3, 0x0, 0x60, 0xc, 0x1, 0x80,
|
||||
0x30, 0x6, 0x0, 0xbf, 0x97, 0xf7, 0x1, 0xe0,
|
||||
0x3c, 0x7, 0x80, 0xf0, 0x1e, 0x3, 0xbf, 0xaf,
|
||||
0xf8,
|
||||
|
||||
/* U+0037 "7" */
|
||||
0x7f, 0xd7, 0xf7, 0x1, 0xe0, 0x3c, 0x7, 0x80,
|
||||
0xf0, 0x1e, 0x3, 0x80, 0x20, 0x4, 0x1, 0x80,
|
||||
0x30, 0x6, 0x0, 0xc0, 0x18, 0x3, 0x0, 0x20,
|
||||
|
||||
/* U+0038 "8" */
|
||||
0x7f, 0xd7, 0xf7, 0x1, 0xe0, 0x3c, 0x7, 0x80,
|
||||
0xf0, 0x1e, 0x3, 0xbf, 0xb7, 0xf7, 0x1, 0xe0,
|
||||
0x3c, 0x7, 0x80, 0xf0, 0x1e, 0x3, 0xbf, 0xaf,
|
||||
0xf8,
|
||||
|
||||
/* U+0039 "9" */
|
||||
0x7f, 0xd7, 0xf7, 0x1, 0xe0, 0x3c, 0x7, 0x80,
|
||||
0xf0, 0x1e, 0x3, 0xbf, 0xa7, 0xf4, 0x1, 0x80,
|
||||
0x30, 0x6, 0x0, 0xc0, 0x18, 0x3, 0x3f, 0xaf,
|
||||
0xf8,
|
||||
|
||||
/* U+003A ":" */
|
||||
0xf0, 0x3, 0xc0
|
||||
};
|
||||
|
||||
|
||||
/*---------------------
|
||||
* GLYPH DESCRIPTION
|
||||
*--------------------*/
|
||||
|
||||
static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = {
|
||||
{.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */,
|
||||
{.bitmap_index = 0, .adv_w = 58, .box_w = 1, .box_h = 1, .ofs_x = 0, .ofs_y = 0},
|
||||
{.bitmap_index = 1, .adv_w = 235, .box_w = 1, .box_h = 1, .ofs_x = 0, .ofs_y = 0},
|
||||
{.bitmap_index = 2, .adv_w = 235, .box_w = 9, .box_h = 2, .ofs_x = 3, .ofs_y = 8},
|
||||
{.bitmap_index = 5, .adv_w = 0, .box_w = 2, .box_h = 2, .ofs_x = -1, .ofs_y = 0},
|
||||
{.bitmap_index = 6, .adv_w = 235, .box_w = 11, .box_h = 18, .ofs_x = 2, .ofs_y = 0},
|
||||
{.bitmap_index = 31, .adv_w = 235, .box_w = 2, .box_h = 16, .ofs_x = 11, .ofs_y = 1},
|
||||
{.bitmap_index = 35, .adv_w = 235, .box_w = 11, .box_h = 18, .ofs_x = 2, .ofs_y = 0},
|
||||
{.bitmap_index = 60, .adv_w = 235, .box_w = 10, .box_h = 18, .ofs_x = 3, .ofs_y = 0},
|
||||
{.bitmap_index = 83, .adv_w = 235, .box_w = 11, .box_h = 16, .ofs_x = 2, .ofs_y = 1},
|
||||
{.bitmap_index = 105, .adv_w = 235, .box_w = 11, .box_h = 18, .ofs_x = 2, .ofs_y = 0},
|
||||
{.bitmap_index = 130, .adv_w = 235, .box_w = 11, .box_h = 18, .ofs_x = 2, .ofs_y = 0},
|
||||
{.bitmap_index = 155, .adv_w = 235, .box_w = 11, .box_h = 17, .ofs_x = 2, .ofs_y = 1},
|
||||
{.bitmap_index = 179, .adv_w = 235, .box_w = 11, .box_h = 18, .ofs_x = 2, .ofs_y = 0},
|
||||
{.bitmap_index = 204, .adv_w = 235, .box_w = 11, .box_h = 18, .ofs_x = 2, .ofs_y = 0},
|
||||
{.bitmap_index = 229, .adv_w = 58, .box_w = 2, .box_h = 9, .ofs_x = 1, .ofs_y = 4}
|
||||
};
|
||||
|
||||
/*---------------------
|
||||
* CHARACTER MAPPING
|
||||
*--------------------*/
|
||||
|
||||
static const uint16_t unicode_list_0[] = {
|
||||
0x0, 0x1, 0xd, 0xe
|
||||
};
|
||||
|
||||
/*Collect the unicode lists and glyph_id offsets*/
|
||||
static const lv_font_fmt_txt_cmap_t cmaps[] =
|
||||
{
|
||||
{
|
||||
.range_start = 32, .range_length = 15, .glyph_id_start = 1,
|
||||
.unicode_list = unicode_list_0, .glyph_id_ofs_list = NULL, .list_length = 4, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY
|
||||
},
|
||||
{
|
||||
.range_start = 48, .range_length = 11, .glyph_id_start = 5,
|
||||
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
/*--------------------
|
||||
* ALL CUSTOM DATA
|
||||
*--------------------*/
|
||||
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
/*Store all the custom data of the font*/
|
||||
static lv_font_fmt_txt_glyph_cache_t cache;
|
||||
static const lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#else
|
||||
static lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#endif
|
||||
.glyph_bitmap = glyph_bitmap,
|
||||
.glyph_dsc = glyph_dsc,
|
||||
.cmaps = cmaps,
|
||||
.kern_dsc = NULL,
|
||||
.kern_scale = 0,
|
||||
.cmap_num = 2,
|
||||
.bpp = 1,
|
||||
.kern_classes = 0,
|
||||
.bitmap_format = 0,
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
.cache = &cache
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
/*-----------------
|
||||
* PUBLIC FONT
|
||||
*----------------*/
|
||||
|
||||
/*Initialize a public general font descriptor*/
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
const lv_font_t seg7_18 = {
|
||||
#else
|
||||
lv_font_t seg7_18 = {
|
||||
#endif
|
||||
.get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/
|
||||
.get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/
|
||||
.line_height = 18, /*The maximum line height required by the font*/
|
||||
.base_line = 0, /*Baseline measured from the bottom of the line*/
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
.underline_position = -2,
|
||||
.underline_thickness = 1,
|
||||
#endif
|
||||
.dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif /*#if SEG7_18*/
|
||||
|
|
@ -0,0 +1,219 @@
|
|||
/*******************************************************************************
|
||||
* Size: 20 px
|
||||
* Bpp: 2
|
||||
* Opts: --font DSEG7Classic-BoldItalic.ttf -r 0x20-0x3F --size 20 --format lvgl --bpp 2 -o c_files//seg7_20.c
|
||||
******************************************************************************/
|
||||
|
||||
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
|
||||
#include "lvgl.h"
|
||||
#else
|
||||
#include "lvgl/lvgl.h"
|
||||
#endif
|
||||
|
||||
#ifndef SEG7_20
|
||||
#define SEG7_20 1
|
||||
#endif
|
||||
|
||||
#if SEG7_20
|
||||
|
||||
/*-----------------
|
||||
* BITMAPS
|
||||
*----------------*/
|
||||
|
||||
/*Store the image of the glyphs*/
|
||||
static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = {
|
||||
/* U+0020 " " */
|
||||
|
||||
/* U+0021 "!" */
|
||||
|
||||
/* U+002D "-" */
|
||||
0x2, 0xfc, 0xe, 0xbe, 0x43, 0xf9,
|
||||
|
||||
/* U+002E "." */
|
||||
0x2, 0xe, 0x42, 0x40,
|
||||
|
||||
/* U+0030 "0" */
|
||||
0xb, 0xff, 0xc1, 0xb4, 0x3f, 0x38, 0x11, 0xaf,
|
||||
0xc8, 0x79, 0x7e, 0xc3, 0x61, 0xff, 0xce, 0x43,
|
||||
0x21, 0xf2, 0x19, 0xf, 0xfe, 0x26, 0x1f, 0xd8,
|
||||
0x52, 0x1f, 0x61, 0xff, 0xc4, 0x42, 0x83, 0xf6,
|
||||
0x12, 0x1f, 0xc8, 0x7f, 0xf4, 0x70, 0xd8, 0x7f,
|
||||
0xf4, 0xd7, 0xf0, 0x10, 0x95, 0x5f, 0x2b, 0x4,
|
||||
0x1f, 0xed, 0x0,
|
||||
|
||||
/* U+0031 "1" */
|
||||
0xf, 0x9c, 0xc, 0x16, 0x1f, 0xc8, 0x87, 0xff,
|
||||
0x1, 0x30, 0x51, 0x3, 0x20, 0x84, 0x43, 0xfb,
|
||||
0xf, 0xf9, 0x6, 0x19, 0xb0, 0x0,
|
||||
|
||||
/* U+0032 "2" */
|
||||
0xb, 0xff, 0xc1, 0xd0, 0x7e, 0xa0, 0x66, 0xbf,
|
||||
0x90, 0xe5, 0xfb, 0xf, 0xff, 0x2, 0x21, 0xff,
|
||||
0xd1, 0xc3, 0x5f, 0xf4, 0x1a, 0x50, 0x7e, 0xd0,
|
||||
0x35, 0xfc, 0x87, 0x97, 0xf0, 0x64, 0x3f, 0xfc,
|
||||
0x18, 0x7f, 0xf1, 0x17, 0xf0, 0x7c, 0xd7, 0xd8,
|
||||
0x69, 0xf, 0xe4, 0x20,
|
||||
|
||||
/* U+0033 "3" */
|
||||
0x7, 0xff, 0x83, 0x41, 0xfa, 0x81, 0x35, 0xfc,
|
||||
0x86, 0x5f, 0xb0, 0xff, 0xee, 0xa2, 0x1f, 0xfc,
|
||||
0xfc, 0x2b, 0xfe, 0x83, 0x90, 0xfb, 0x50, 0x55,
|
||||
0xf9, 0x41, 0x97, 0xe0, 0xff, 0xe8, 0x61, 0xff,
|
||||
0xd6, 0x5f, 0x80, 0x85, 0xd7, 0xca, 0xc1, 0x7,
|
||||
0xf6, 0x80,
|
||||
|
||||
/* U+0034 "4" */
|
||||
0xf, 0xfe, 0x1e, 0x1f, 0xce, 0x26, 0x1f, 0x30,
|
||||
0x7f, 0xf0, 0x30, 0xb0, 0xff, 0xe5, 0xa2, 0x12,
|
||||
0x1f, 0xf2, 0x1f, 0xfc, 0x3d, 0x7e, 0x6, 0x35,
|
||||
0xfc, 0xb1, 0x21, 0xfc, 0xa0, 0xbf, 0xf2, 0x21,
|
||||
0xfe, 0x43, 0xff, 0x9f, 0x87, 0xff, 0x45, 0xf,
|
||||
0xfb, 0xf, 0xfe, 0xb, 0x60,
|
||||
|
||||
/* U+0035 "5" */
|
||||
0x7, 0xff, 0x81, 0xa1, 0xfa, 0x11, 0xaf, 0xb4,
|
||||
0x32, 0xfc, 0x16, 0x1f, 0xfd, 0xa4, 0x43, 0xff,
|
||||
0x98, 0x9f, 0xf0, 0x5c, 0x87, 0xd4, 0xa, 0xbf,
|
||||
0x28, 0x25, 0xf8, 0x3f, 0xf9, 0xd8, 0x7f, 0xf4,
|
||||
0xd7, 0xe0, 0x20, 0xeb, 0xe5, 0x64, 0x1f, 0xda,
|
||||
0x0,
|
||||
|
||||
/* U+0036 "6" */
|
||||
0xb, 0xff, 0xc1, 0x68, 0x7e, 0x80, 0x8d, 0x7d,
|
||||
0xa1, 0xcb, 0xf0, 0x6c, 0x3f, 0xfb, 0xa8, 0x87,
|
||||
0xff, 0x39, 0x3f, 0xe0, 0xce, 0x87, 0xd4, 0x3,
|
||||
0x5f, 0xca, 0xc, 0xbf, 0x6, 0x43, 0xff, 0x97,
|
||||
0x87, 0xff, 0x17, 0xf, 0xfe, 0x1a, 0xfe, 0x2,
|
||||
0x13, 0x5f, 0x2b, 0x24, 0x3f, 0xb4,
|
||||
|
||||
/* U+0037 "7" */
|
||||
0x2, 0xff, 0x82, 0x6b, 0xfe, 0x19, 0xf, 0xe4,
|
||||
0x27, 0xfe, 0x42, 0xc3, 0xff, 0xb2, 0x88, 0x88,
|
||||
0x7f, 0xf2, 0xf0, 0x30, 0x7d, 0x5, 0xc1, 0xf9,
|
||||
0x60, 0xff, 0xb4, 0x3f, 0xe4, 0x3f, 0xf9, 0xf8,
|
||||
0x7f, 0xf7, 0xd0, 0xff, 0xa0, 0xff, 0xe1, 0x70,
|
||||
0x0,
|
||||
|
||||
/* U+0038 "8" */
|
||||
0xb, 0xff, 0xc1, 0xb4, 0x3f, 0x50, 0x8, 0xd7,
|
||||
0xf2, 0x1c, 0xbf, 0x61, 0xb0, 0xff, 0xed, 0xa2,
|
||||
0x4, 0x43, 0xff, 0x99, 0x84, 0x9f, 0xf4, 0x19,
|
||||
0xd0, 0xfb, 0x50, 0x1a, 0xfe, 0x50, 0x72, 0xfc,
|
||||
0x1c, 0x87, 0xff, 0x33, 0xf, 0xfe, 0x3e, 0x1f,
|
||||
0xfc, 0x45, 0xfc, 0x4, 0x33, 0x5f, 0x2b, 0x4,
|
||||
0x87, 0xf6, 0x80,
|
||||
|
||||
/* U+0039 "9" */
|
||||
0x7, 0xff, 0x82, 0xd0, 0xfd, 0x41, 0x1a, 0xfe,
|
||||
0x43, 0x2f, 0xd8, 0x58, 0x7f, 0xf6, 0x51, 0x11,
|
||||
0xf, 0xfe, 0x5e, 0x4, 0xff, 0xa0, 0xb9, 0xf,
|
||||
0xb5, 0x5, 0x5f, 0x94, 0x19, 0x7e, 0xf, 0xfe,
|
||||
0x86, 0x1f, 0xfd, 0x65, 0xf8, 0x8, 0x5d, 0x7c,
|
||||
0xac, 0x10, 0x7f, 0x68, 0x0,
|
||||
|
||||
/* U+003A ":" */
|
||||
0x2, 0xe, 0x82, 0x65, 0xa1, 0xff, 0xc5, 0x41,
|
||||
0x4c, 0xc4
|
||||
};
|
||||
|
||||
|
||||
/*---------------------
|
||||
* GLYPH DESCRIPTION
|
||||
*--------------------*/
|
||||
|
||||
static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = {
|
||||
{.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */,
|
||||
{.bitmap_index = 0, .adv_w = 64, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0},
|
||||
{.bitmap_index = 0, .adv_w = 261, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0},
|
||||
{.bitmap_index = 0, .adv_w = 261, .box_w = 10, .box_h = 3, .ofs_x = 3, .ofs_y = 9},
|
||||
{.bitmap_index = 6, .adv_w = 0, .box_w = 4, .box_h = 3, .ofs_x = -3, .ofs_y = 0},
|
||||
{.bitmap_index = 10, .adv_w = 261, .box_w = 15, .box_h = 20, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 61, .adv_w = 261, .box_w = 5, .box_h = 19, .ofs_x = 11, .ofs_y = 1},
|
||||
{.bitmap_index = 83, .adv_w = 261, .box_w = 15, .box_h = 20, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 127, .adv_w = 261, .box_w = 14, .box_h = 20, .ofs_x = 2, .ofs_y = 0},
|
||||
{.bitmap_index = 169, .adv_w = 261, .box_w = 14, .box_h = 19, .ofs_x = 2, .ofs_y = 1},
|
||||
{.bitmap_index = 214, .adv_w = 261, .box_w = 13, .box_h = 20, .ofs_x = 2, .ofs_y = 0},
|
||||
{.bitmap_index = 255, .adv_w = 261, .box_w = 14, .box_h = 20, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 301, .adv_w = 261, .box_w = 14, .box_h = 20, .ofs_x = 2, .ofs_y = 0},
|
||||
{.bitmap_index = 342, .adv_w = 261, .box_w = 15, .box_h = 20, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 393, .adv_w = 261, .box_w = 14, .box_h = 20, .ofs_x = 2, .ofs_y = 0},
|
||||
{.bitmap_index = 438, .adv_w = 64, .box_w = 4, .box_h = 11, .ofs_x = 0, .ofs_y = 4}
|
||||
};
|
||||
|
||||
/*---------------------
|
||||
* CHARACTER MAPPING
|
||||
*--------------------*/
|
||||
|
||||
static const uint16_t unicode_list_0[] = {
|
||||
0x0, 0x1, 0xd, 0xe
|
||||
};
|
||||
|
||||
/*Collect the unicode lists and glyph_id offsets*/
|
||||
static const lv_font_fmt_txt_cmap_t cmaps[] =
|
||||
{
|
||||
{
|
||||
.range_start = 32, .range_length = 15, .glyph_id_start = 1,
|
||||
.unicode_list = unicode_list_0, .glyph_id_ofs_list = NULL, .list_length = 4, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY
|
||||
},
|
||||
{
|
||||
.range_start = 48, .range_length = 11, .glyph_id_start = 5,
|
||||
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
/*--------------------
|
||||
* ALL CUSTOM DATA
|
||||
*--------------------*/
|
||||
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
/*Store all the custom data of the font*/
|
||||
static lv_font_fmt_txt_glyph_cache_t cache;
|
||||
static const lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#else
|
||||
static lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#endif
|
||||
.glyph_bitmap = glyph_bitmap,
|
||||
.glyph_dsc = glyph_dsc,
|
||||
.cmaps = cmaps,
|
||||
.kern_dsc = NULL,
|
||||
.kern_scale = 0,
|
||||
.cmap_num = 2,
|
||||
.bpp = 2,
|
||||
.kern_classes = 0,
|
||||
.bitmap_format = 1,
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
.cache = &cache
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
/*-----------------
|
||||
* PUBLIC FONT
|
||||
*----------------*/
|
||||
|
||||
/*Initialize a public general font descriptor*/
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
const lv_font_t seg7_20 = {
|
||||
#else
|
||||
lv_font_t seg7_20 = {
|
||||
#endif
|
||||
.get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/
|
||||
.get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/
|
||||
.line_height = 20, /*The maximum line height required by the font*/
|
||||
.base_line = 0, /*Baseline measured from the bottom of the line*/
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
.underline_position = -2,
|
||||
.underline_thickness = 1,
|
||||
#endif
|
||||
.dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif /*#if SEG7_20*/
|
||||
|
|
@ -0,0 +1,235 @@
|
|||
/*******************************************************************************
|
||||
* Size: 24 px
|
||||
* Bpp: 2
|
||||
* Opts: --font DSEG7Classic-BoldItalic.ttf -r 0x20-0x3F --size 24 --format lvgl --bpp 2 -o c_files//seg7_24.c
|
||||
******************************************************************************/
|
||||
|
||||
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
|
||||
#include "lvgl.h"
|
||||
#else
|
||||
#include "lvgl/lvgl.h"
|
||||
#endif
|
||||
|
||||
#ifndef SEG7_24
|
||||
#define SEG7_24 1
|
||||
#endif
|
||||
|
||||
#if SEG7_24
|
||||
|
||||
/*-----------------
|
||||
* BITMAPS
|
||||
*----------------*/
|
||||
|
||||
/*Store the image of the glyphs*/
|
||||
static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = {
|
||||
/* U+0020 " " */
|
||||
|
||||
/* U+0021 "!" */
|
||||
|
||||
/* U+002D "-" */
|
||||
0x2f, 0xfc, 0x92, 0x1f, 0xa2, 0xf, 0xe8,
|
||||
|
||||
/* U+002E "." */
|
||||
0x3c, 0x20, 0x50, 0x10,
|
||||
|
||||
/* U+0030 "0" */
|
||||
0x9, 0xff, 0xfe, 0x0, 0x67, 0xf, 0xf9, 0x82,
|
||||
0x98, 0x3f, 0xa5, 0x7, 0x5f, 0xfd, 0x7, 0xff,
|
||||
0xa1, 0x2, 0x1c, 0x87, 0xff, 0x9, 0xf, 0xfe,
|
||||
0x8e, 0xc, 0x3a, 0xf, 0xd8, 0x79, 0xc3, 0xf9,
|
||||
0x84, 0x18, 0x7f, 0xf1, 0x55, 0x87, 0xf5, 0x3,
|
||||
0xff, 0x88, 0x87, 0xff, 0xad, 0xf, 0xfe, 0x12,
|
||||
0x1c, 0x81, 0xf, 0xfe, 0x8e, 0x19, 0x3f, 0xf8,
|
||||
0x39, 0x42, 0x1f, 0x97, 0x5, 0xa1, 0xfe, 0x60,
|
||||
0x80,
|
||||
|
||||
/* U+0031 "1" */
|
||||
0xf, 0xe7, 0x9, 0x83, 0x41, 0xff, 0xc4, 0x40,
|
||||
0x87, 0xfd, 0x83, 0xe, 0x83, 0xda, 0x82, 0x90,
|
||||
0xa4, 0x32, 0x1f, 0xfc, 0x44, 0x8, 0x7f, 0xf1,
|
||||
0x70, 0x28, 0x3a, 0x88, 0x0,
|
||||
|
||||
/* U+0032 "2" */
|
||||
0x9, 0xff, 0xfe, 0x0, 0x72, 0x1f, 0xfc, 0xc,
|
||||
0x3b, 0xf, 0xfe, 0x37, 0xff, 0x7, 0xff, 0x69,
|
||||
0xf, 0xfe, 0x12, 0x1f, 0xfd, 0xac, 0x3f, 0xf8,
|
||||
0x58, 0x7e, 0xbf, 0xf8, 0x3e, 0x90, 0xfd, 0x72,
|
||||
0xb, 0xc1, 0xfd, 0x8, 0x49, 0x7f, 0xf2, 0x1f,
|
||||
0xff, 0xf0, 0xc8, 0x7f, 0xf0, 0x90, 0xff, 0xe4,
|
||||
0x61, 0xff, 0xc4, 0xbf, 0xfa, 0xe, 0x7c, 0x87,
|
||||
0xe5, 0x7, 0x28, 0x3f, 0xd0, 0x60,
|
||||
|
||||
/* U+0033 "3" */
|
||||
0x3, 0xff, 0xfc, 0x0, 0xc8, 0x7f, 0xf0, 0x30,
|
||||
0xd8, 0x7f, 0xf1, 0x7f, 0xf8, 0x3f, 0xfb, 0x8,
|
||||
0x7f, 0xf0, 0x50, 0xff, 0xec, 0x61, 0xff, 0xc1,
|
||||
0xc3, 0xeb, 0xff, 0x83, 0xd2, 0x1f, 0xa8, 0xa0,
|
||||
0xa0, 0xfe, 0xa2, 0x1d, 0xff, 0xd0, 0x7f, 0xfd,
|
||||
0x90, 0x21, 0xff, 0xe6, 0xc3, 0x5f, 0xfc, 0x87,
|
||||
0x48, 0x7e, 0x45, 0x1, 0x41, 0xfe, 0x60, 0x80,
|
||||
|
||||
/* U+0034 "4" */
|
||||
0xf, 0xfe, 0x35, 0x87, 0xfd, 0x60, 0x4c, 0x3f,
|
||||
0xa4, 0x3f, 0xf8, 0x68, 0x7f, 0xf5, 0xd0, 0xff,
|
||||
0xe0, 0xa1, 0x90, 0x21, 0xff, 0xd0, 0xc3, 0x61,
|
||||
0xfb, 0xd, 0x8f, 0xff, 0x83, 0x58, 0x87, 0xea,
|
||||
0x28, 0x28, 0x3f, 0xa8, 0x87, 0x7f, 0xf4, 0x1f,
|
||||
0xff, 0x64, 0x8, 0x7f, 0xf9, 0xb0, 0xff, 0xe0,
|
||||
0xb0, 0x7f, 0xf1, 0x1d, 0x0,
|
||||
|
||||
/* U+0035 "5" */
|
||||
0x3, 0xff, 0xfc, 0x0, 0x38, 0x7f, 0xd0, 0x26,
|
||||
0xf, 0xe9, 0xd, 0x7f, 0xf2, 0x1f, 0xfe, 0x64,
|
||||
0x8, 0x7f, 0xf4, 0xf0, 0xff, 0xe0, 0x63, 0xff,
|
||||
0xc8, 0x56, 0x21, 0xfa, 0xe, 0x83, 0xfa, 0xf0,
|
||||
0x6f, 0xfe, 0x83, 0xff, 0xe4, 0x81, 0xf, 0xff,
|
||||
0x1e, 0x15, 0xff, 0xc8, 0x69, 0xf, 0xc8, 0xa1,
|
||||
0x41, 0xfe, 0x60, 0x0,
|
||||
|
||||
/* U+0036 "6" */
|
||||
0x9, 0xff, 0xfe, 0x0, 0x4e, 0x1f, 0xf4, 0x14,
|
||||
0xc1, 0xfd, 0x21, 0xd7, 0xff, 0x21, 0xff, 0xea,
|
||||
0x40, 0x87, 0xff, 0x57, 0xf, 0xfe, 0xe, 0x3f,
|
||||
0xfc, 0x86, 0xe1, 0xf, 0xd0, 0x83, 0xb0, 0xfe,
|
||||
0xb8, 0x9, 0x7f, 0xf4, 0x1f, 0xff, 0x64, 0x8,
|
||||
0x64, 0x3f, 0xf8, 0x28, 0x7f, 0xf1, 0xf0, 0xff,
|
||||
0xb0, 0xaf, 0xff, 0x21, 0x3e, 0x43, 0xf2, 0x28,
|
||||
0xa, 0xf, 0xf3, 0x0,
|
||||
|
||||
/* U+0037 "7" */
|
||||
0x3, 0xff, 0xfc, 0x0, 0x9c, 0x3f, 0xe9, 0x4,
|
||||
0xc1, 0xfd, 0x50, 0x6b, 0xff, 0xa0, 0xff, 0xf2,
|
||||
0xa0, 0x43, 0x21, 0xff, 0xc1, 0x43, 0xff, 0xa1,
|
||||
0x83, 0xd, 0x87, 0xec, 0x36, 0x48, 0x7e, 0x50,
|
||||
0x56, 0x87, 0xfa, 0x50, 0x7f, 0xf0, 0x5d, 0xf,
|
||||
0xfe, 0x14, 0x1f, 0xfe, 0x84, 0x3f, 0xf8, 0x28,
|
||||
0x7f, 0xf6, 0x30, 0xff, 0xe0, 0xa1, 0xff, 0xc5,
|
||||
0xc4, 0x3f, 0xf8, 0x78, 0x40,
|
||||
|
||||
/* U+0038 "8" */
|
||||
0x9, 0xff, 0xfe, 0x0, 0x67, 0xf, 0xfe, 0x6,
|
||||
0x14, 0xc1, 0xff, 0xc5, 0xbf, 0xf8, 0x3f, 0xfb,
|
||||
0x48, 0x7f, 0xf0, 0x90, 0xe4, 0x8, 0x7f, 0xf4,
|
||||
0x70, 0xec, 0x3f, 0x61, 0xd8, 0xff, 0xf8, 0x3b,
|
||||
0x84, 0x3f, 0x51, 0x40, 0xec, 0x3f, 0xa8, 0x84,
|
||||
0x97, 0xff, 0x41, 0xff, 0xfa, 0x40, 0x87, 0x21,
|
||||
0xff, 0xc2, 0x43, 0xff, 0x91, 0x87, 0xfd, 0x86,
|
||||
0xbf, 0xfc, 0x86, 0x7c, 0x87, 0xe4, 0x50, 0x4a,
|
||||
0xf, 0xf3, 0x4,
|
||||
|
||||
/* U+0039 "9" */
|
||||
0x3, 0xff, 0xfc, 0x0, 0x9c, 0x3f, 0xf8, 0x18,
|
||||
0x26, 0xf, 0xfe, 0x25, 0xff, 0xc1, 0xff, 0xd8,
|
||||
0x43, 0xff, 0x82, 0x86, 0x40, 0x87, 0xff, 0x43,
|
||||
0xd, 0x87, 0xec, 0x36, 0x3f, 0xfe, 0xd, 0x62,
|
||||
0x1f, 0xa8, 0xa0, 0xa0, 0xfe, 0xa2, 0x1d, 0xff,
|
||||
0xd0, 0x7f, 0xfd, 0x90, 0x21, 0xff, 0xe6, 0xc3,
|
||||
0x5f, 0xfc, 0x87, 0x48, 0x7e, 0x45, 0x1, 0x41,
|
||||
0xfe, 0x60, 0x80,
|
||||
|
||||
/* U+003A ":" */
|
||||
0x7, 0x2, 0x14, 0x60, 0x47, 0xc1, 0xff, 0xd4,
|
||||
0xf0, 0x10, 0x22, 0x4
|
||||
};
|
||||
|
||||
|
||||
/*---------------------
|
||||
* GLYPH DESCRIPTION
|
||||
*--------------------*/
|
||||
|
||||
static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = {
|
||||
{.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */,
|
||||
{.bitmap_index = 0, .adv_w = 77, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0},
|
||||
{.bitmap_index = 0, .adv_w = 313, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0},
|
||||
{.bitmap_index = 0, .adv_w = 313, .box_w = 12, .box_h = 3, .ofs_x = 4, .ofs_y = 11},
|
||||
{.bitmap_index = 7, .adv_w = 0, .box_w = 4, .box_h = 3, .ofs_x = -3, .ofs_y = 0},
|
||||
{.bitmap_index = 11, .adv_w = 313, .box_w = 18, .box_h = 24, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 76, .adv_w = 313, .box_w = 6, .box_h = 23, .ofs_x = 13, .ofs_y = 1},
|
||||
{.bitmap_index = 105, .adv_w = 313, .box_w = 18, .box_h = 24, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 167, .adv_w = 313, .box_w = 17, .box_h = 24, .ofs_x = 2, .ofs_y = 0},
|
||||
{.bitmap_index = 223, .adv_w = 313, .box_w = 17, .box_h = 23, .ofs_x = 2, .ofs_y = 1},
|
||||
{.bitmap_index = 276, .adv_w = 313, .box_w = 16, .box_h = 24, .ofs_x = 2, .ofs_y = 0},
|
||||
{.bitmap_index = 328, .adv_w = 313, .box_w = 17, .box_h = 24, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 388, .adv_w = 313, .box_w = 17, .box_h = 24, .ofs_x = 2, .ofs_y = 0},
|
||||
{.bitmap_index = 449, .adv_w = 313, .box_w = 18, .box_h = 24, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 516, .adv_w = 313, .box_w = 17, .box_h = 24, .ofs_x = 2, .ofs_y = 0},
|
||||
{.bitmap_index = 575, .adv_w = 77, .box_w = 5, .box_h = 13, .ofs_x = 0, .ofs_y = 5}
|
||||
};
|
||||
|
||||
/*---------------------
|
||||
* CHARACTER MAPPING
|
||||
*--------------------*/
|
||||
|
||||
static const uint16_t unicode_list_0[] = {
|
||||
0x0, 0x1, 0xd, 0xe
|
||||
};
|
||||
|
||||
/*Collect the unicode lists and glyph_id offsets*/
|
||||
static const lv_font_fmt_txt_cmap_t cmaps[] =
|
||||
{
|
||||
{
|
||||
.range_start = 32, .range_length = 15, .glyph_id_start = 1,
|
||||
.unicode_list = unicode_list_0, .glyph_id_ofs_list = NULL, .list_length = 4, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY
|
||||
},
|
||||
{
|
||||
.range_start = 48, .range_length = 11, .glyph_id_start = 5,
|
||||
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
/*--------------------
|
||||
* ALL CUSTOM DATA
|
||||
*--------------------*/
|
||||
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
/*Store all the custom data of the font*/
|
||||
static lv_font_fmt_txt_glyph_cache_t cache;
|
||||
static const lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#else
|
||||
static lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#endif
|
||||
.glyph_bitmap = glyph_bitmap,
|
||||
.glyph_dsc = glyph_dsc,
|
||||
.cmaps = cmaps,
|
||||
.kern_dsc = NULL,
|
||||
.kern_scale = 0,
|
||||
.cmap_num = 2,
|
||||
.bpp = 2,
|
||||
.kern_classes = 0,
|
||||
.bitmap_format = 1,
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
.cache = &cache
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
/*-----------------
|
||||
* PUBLIC FONT
|
||||
*----------------*/
|
||||
|
||||
/*Initialize a public general font descriptor*/
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
const lv_font_t seg7_24 = {
|
||||
#else
|
||||
lv_font_t seg7_24 = {
|
||||
#endif
|
||||
.get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/
|
||||
.get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/
|
||||
.line_height = 24, /*The maximum line height required by the font*/
|
||||
.base_line = 0, /*Baseline measured from the bottom of the line*/
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
.underline_position = -3,
|
||||
.underline_thickness = 1,
|
||||
#endif
|
||||
.dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif /*#if SEG7_24*/
|
||||
|
|
@ -0,0 +1,262 @@
|
|||
/*******************************************************************************
|
||||
* Size: 28 px
|
||||
* Bpp: 2
|
||||
* Opts: --font DSEG7Classic-BoldItalic.ttf -r 0x20-0x3F --size 28 --format lvgl --bpp 2 -o c_files//seg7_28.c
|
||||
******************************************************************************/
|
||||
|
||||
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
|
||||
#include "lvgl.h"
|
||||
#else
|
||||
#include "lvgl/lvgl.h"
|
||||
#endif
|
||||
|
||||
#ifndef SEG7_28
|
||||
#define SEG7_28 1
|
||||
#endif
|
||||
|
||||
#if SEG7_28
|
||||
|
||||
/*-----------------
|
||||
* BITMAPS
|
||||
*----------------*/
|
||||
|
||||
/*Store the image of the glyphs*/
|
||||
static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = {
|
||||
/* U+0020 " " */
|
||||
|
||||
/* U+0021 "!" */
|
||||
|
||||
/* U+002D "-" */
|
||||
0xa, 0xbf, 0x90, 0x3a, 0xff, 0x40, 0x83, 0xfe,
|
||||
0x8c, 0x3f, 0xcc,
|
||||
|
||||
/* U+002E "." */
|
||||
0x14, 0x54, 0xa0, 0xa0, 0x20,
|
||||
|
||||
/* U+0030 "0" */
|
||||
0xe, 0xaf, 0xfe, 0x8, 0x7d, 0x2f, 0xff, 0x6,
|
||||
0xe, 0xf0, 0x7f, 0xf0, 0x1f, 0x4, 0x94, 0xf,
|
||||
0xf3, 0xc1, 0xf5, 0xff, 0xf4, 0x1f, 0xfc, 0x7c,
|
||||
0x3d, 0x87, 0xff, 0x59, 0x2, 0x1f, 0xfc, 0xc4,
|
||||
0x8, 0x7f, 0xf5, 0xb0, 0xff, 0xe7, 0xe1, 0xff,
|
||||
0xc7, 0x90, 0xff, 0x40, 0x42, 0xa2, 0x1f, 0xf3,
|
||||
0x40, 0x9b, 0xf, 0xfe, 0xd, 0x3, 0x98, 0x3f,
|
||||
0xec, 0x3f, 0x21, 0xfe, 0x83, 0xd8, 0x7f, 0xf5,
|
||||
0x90, 0x21, 0xe4, 0x3f, 0xf8, 0xa8, 0x7f, 0xf1,
|
||||
0x30, 0xff, 0xe7, 0xe1, 0xff, 0xd6, 0x43, 0xea,
|
||||
0xfe, 0x43, 0xf3, 0x45, 0xfe, 0xa0, 0x7a, 0xe0,
|
||||
0xff, 0xaa, 0xc, 0xe1, 0xff, 0xc2, 0x42,
|
||||
|
||||
/* U+0031 "1" */
|
||||
0xf, 0xf9, 0xc3, 0x30, 0x66, 0xe, 0xc3, 0xff,
|
||||
0x82, 0x81, 0xf, 0xfe, 0x46, 0x1f, 0xfc, 0x58,
|
||||
0x8, 0x4c, 0x87, 0x48, 0x6c, 0x3a, 0xf, 0xe4,
|
||||
0x24, 0x3f, 0xf8, 0x98, 0x7f, 0xf2, 0x10, 0x90,
|
||||
0xf4, 0x1f, 0x78, 0x20,
|
||||
|
||||
/* U+0032 "2" */
|
||||
0xe, 0xaf, 0xfe, 0x8, 0x7d, 0x2f, 0xff, 0x6,
|
||||
0xf, 0x41, 0xff, 0xc0, 0x7c, 0x1e, 0xc3, 0xfc,
|
||||
0xf0, 0x7e, 0xff, 0xfa, 0xf, 0xfe, 0x3e, 0x1f,
|
||||
0xfd, 0xd4, 0x8, 0x7f, 0xfc, 0xb0, 0xff, 0xf2,
|
||||
0x5f, 0xfd, 0x40, 0x21, 0xda, 0x1f, 0xcf, 0x40,
|
||||
0x9e, 0x81, 0xff, 0x4a, 0xe, 0x79, 0x7f, 0xb0,
|
||||
0xfe, 0x55, 0x7f, 0x7, 0xd8, 0x7f, 0xf8, 0x10,
|
||||
0xff, 0xe2, 0xa1, 0xff, 0xe0, 0xc3, 0xff, 0xb8,
|
||||
0x95, 0xfc, 0x87, 0xe7, 0x97, 0xfa, 0xf, 0xae,
|
||||
0xf, 0xfb, 0xf, 0x38, 0x7f, 0xf0, 0x50, 0xc0,
|
||||
|
||||
/* U+0033 "3" */
|
||||
0xd, 0x5f, 0xfc, 0x10, 0xf4, 0xbf, 0xfc, 0x18,
|
||||
0x3a, 0xf, 0xfe, 0x3, 0xe0, 0xec, 0x3f, 0xcf,
|
||||
0x7, 0xdf, 0xff, 0x41, 0xff, 0xc6, 0xc3, 0xff,
|
||||
0xb6, 0x81, 0xf, 0xff, 0x7e, 0x1f, 0xfe, 0x1b,
|
||||
0xff, 0xa8, 0x4, 0x36, 0x87, 0xf3, 0xd0, 0x3a,
|
||||
0xf, 0xfb, 0xa0, 0x73, 0x2f, 0xf5, 0x3, 0xf3,
|
||||
0x5f, 0xd8, 0x7f, 0xf6, 0xd0, 0x21, 0xff, 0xdb,
|
||||
0xc3, 0xff, 0xde, 0x87, 0x35, 0xfc, 0x87, 0xe6,
|
||||
0x5f, 0xea, 0x7, 0x98, 0x3f, 0xea, 0x83, 0x61,
|
||||
0xff, 0xc2, 0x42,
|
||||
|
||||
/* U+0034 "4" */
|
||||
0x2, 0x1f, 0xfc, 0x34, 0x2a, 0x7, 0xff, 0x7,
|
||||
0x80, 0x8c, 0x1f, 0xf6, 0x1f, 0x21, 0xfe, 0x83,
|
||||
0xff, 0x9b, 0x87, 0xff, 0x11, 0xf, 0xfe, 0x22,
|
||||
0x1f, 0x90, 0xff, 0xe2, 0x21, 0xff, 0xc4, 0xc3,
|
||||
0xff, 0x9b, 0x87, 0xff, 0x22, 0xbf, 0x90, 0x90,
|
||||
0xd4, 0x5f, 0xea, 0x7, 0x7a, 0xf, 0xfb, 0xa0,
|
||||
0x76, 0x1f, 0xe4, 0xa0, 0x7b, 0xff, 0xe4, 0x3f,
|
||||
0xf8, 0xd8, 0x7f, 0xf2, 0x90, 0xff, 0xe2, 0x21,
|
||||
0xff, 0xde, 0xc3, 0xff, 0xde, 0x87, 0xff, 0x12,
|
||||
0xf, 0xfe, 0x3b, 0x21, 0xff, 0xc6, 0x60, 0x80,
|
||||
|
||||
/* U+0035 "5" */
|
||||
0xd, 0x5f, 0xfc, 0x10, 0xe9, 0x7f, 0xf8, 0x30,
|
||||
0x5e, 0xf, 0xfe, 0x3, 0x1, 0x28, 0x1f, 0xe6,
|
||||
0xf, 0x5f, 0xfe, 0x83, 0xff, 0x97, 0x87, 0xff,
|
||||
0xb1, 0x2, 0x1f, 0xfe, 0xcc, 0x3f, 0xf8, 0xb7,
|
||||
0xff, 0xa0, 0xea, 0x90, 0xfe, 0x60, 0xca, 0x83,
|
||||
0xfe, 0xf8, 0x33, 0x2f, 0xf5, 0x3, 0xe6, 0xbf,
|
||||
0xb0, 0xff, 0xec, 0xa0, 0x43, 0xff, 0xb3, 0x87,
|
||||
0xff, 0xb1, 0xc, 0xd7, 0xf2, 0x1f, 0x32, 0xff,
|
||||
0x50, 0x39, 0x83, 0xfe, 0xa8, 0x2c, 0x3f, 0xf8,
|
||||
0x48, 0x0,
|
||||
|
||||
/* U+0036 "6" */
|
||||
0xe, 0xaf, 0xfe, 0x8, 0x7a, 0x5f, 0xfe, 0xc,
|
||||
0x1b, 0xc1, 0xff, 0xc0, 0x60, 0x92, 0x81, 0xfe,
|
||||
0x60, 0xfa, 0xff, 0xf4, 0x1f, 0xfc, 0xdc, 0x3f,
|
||||
0xfd, 0xe8, 0x10, 0xff, 0xf7, 0xe1, 0xff, 0xc6,
|
||||
0xbf, 0xfd, 0x7, 0xaa, 0x43, 0xf9, 0x83, 0x37,
|
||||
0x7, 0xfd, 0xf0, 0x67, 0x97, 0xfa, 0x81, 0xf2,
|
||||
0xab, 0xfb, 0xe, 0xc3, 0xff, 0xaa, 0x81, 0xe,
|
||||
0x43, 0xff, 0x88, 0x87, 0xff, 0x13, 0xf, 0xfe,
|
||||
0x6e, 0x1f, 0xfd, 0x54, 0x32, 0x57, 0xf2, 0x1f,
|
||||
0x3c, 0xbf, 0xd4, 0xe, 0xb8, 0x3f, 0xea, 0x82,
|
||||
0x70, 0xff, 0xe1, 0x20,
|
||||
|
||||
/* U+0037 "7" */
|
||||
0xd, 0x5f, 0xfc, 0x10, 0xf4, 0xbf, 0xfc, 0x18,
|
||||
0x37, 0x83, 0xff, 0x80, 0xf8, 0x9, 0x40, 0xff,
|
||||
0x3c, 0x1e, 0xbf, 0xfe, 0x83, 0xff, 0x8d, 0x87,
|
||||
0x61, 0xff, 0xd5, 0x40, 0x87, 0xff, 0x29, 0x2,
|
||||
0x1f, 0xfd, 0x5c, 0x3b, 0xf, 0xfe, 0xd4, 0x87,
|
||||
0xfa, 0x2, 0xb, 0x43, 0xfe, 0x68, 0x12, 0x1f,
|
||||
0xfc, 0x2a, 0x7, 0xff, 0x17, 0xf, 0xfe, 0x34,
|
||||
0x1f, 0xfc, 0xa4, 0x3f, 0xf8, 0x88, 0x7f, 0xf7,
|
||||
0xb0, 0xff, 0xf7, 0xa1, 0xff, 0xc4, 0x43, 0xff,
|
||||
0x8f, 0x7, 0xff, 0x23, 0xc1, 0x0,
|
||||
|
||||
/* U+0038 "8" */
|
||||
0xe, 0xaf, 0xfe, 0x8, 0x7d, 0x2f, 0xff, 0x6,
|
||||
0xe, 0xf0, 0x7f, 0xf0, 0x1f, 0x4, 0x94, 0xf,
|
||||
0xf3, 0xc1, 0xf5, 0xff, 0xf4, 0x1f, 0xfc, 0x7c,
|
||||
0x3d, 0x87, 0xff, 0x59, 0x2, 0x1f, 0xfc, 0xc4,
|
||||
0x8, 0x7f, 0xf5, 0xb0, 0xff, 0xe7, 0xe1, 0xff,
|
||||
0xc7, 0xbf, 0xfd, 0x40, 0x21, 0x54, 0x87, 0xf3,
|
||||
0xd0, 0x26, 0xe0, 0xff, 0xba, 0x7, 0x3c, 0xbf,
|
||||
0xd4, 0xf, 0xca, 0xaf, 0xec, 0x3d, 0x87, 0xff,
|
||||
0x59, 0x2, 0x1e, 0x43, 0xff, 0x8a, 0x87, 0xff,
|
||||
0x13, 0xf, 0xfe, 0x7e, 0x1f, 0xfd, 0x64, 0x39,
|
||||
0x2b, 0xf9, 0xf, 0xcf, 0x2f, 0xf5, 0x3, 0xd7,
|
||||
0x7, 0xfd, 0x50, 0x67, 0xf, 0xfe, 0x12, 0x10,
|
||||
|
||||
/* U+0039 "9" */
|
||||
0xd, 0x5f, 0xfc, 0x10, 0xf4, 0xbf, 0xfc, 0x18,
|
||||
0x37, 0x83, 0xff, 0x80, 0xf8, 0x9, 0x40, 0xff,
|
||||
0x3c, 0x1e, 0xbf, 0xfe, 0x83, 0xff, 0x8d, 0x87,
|
||||
0x61, 0xff, 0xd5, 0x40, 0x87, 0xff, 0x29, 0x2,
|
||||
0x1f, 0xfd, 0x5c, 0x3f, 0xf9, 0xb8, 0x7f, 0xf1,
|
||||
0xaf, 0xff, 0x50, 0x8, 0x2a, 0x43, 0xf9, 0xe8,
|
||||
0x12, 0xa0, 0xff, 0xba, 0x7, 0x32, 0xff, 0x50,
|
||||
0x3f, 0x35, 0xfd, 0x87, 0xff, 0x6d, 0x2, 0x1f,
|
||||
0xfd, 0xbc, 0x3f, 0xfd, 0xe8, 0x73, 0x5f, 0xc8,
|
||||
0x7e, 0x65, 0xfe, 0xa0, 0x79, 0x83, 0xfe, 0xa8,
|
||||
0x36, 0x1f, 0xfc, 0x24, 0x20,
|
||||
|
||||
/* U+003A ":" */
|
||||
0x5, 0xa0, 0x51, 0x1, 0xf, 0x76, 0x19, 0xf,
|
||||
0xfe, 0xe2, 0x1b, 0xb0, 0x21, 0xc8, 0x20, 0x0
|
||||
};
|
||||
|
||||
|
||||
/*---------------------
|
||||
* GLYPH DESCRIPTION
|
||||
*--------------------*/
|
||||
|
||||
static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = {
|
||||
{.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */,
|
||||
{.bitmap_index = 0, .adv_w = 90, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0},
|
||||
{.bitmap_index = 0, .adv_w = 366, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0},
|
||||
{.bitmap_index = 0, .adv_w = 366, .box_w = 14, .box_h = 4, .ofs_x = 4, .ofs_y = 12},
|
||||
{.bitmap_index = 11, .adv_w = 0, .box_w = 4, .box_h = 4, .ofs_x = -3, .ofs_y = 0},
|
||||
{.bitmap_index = 16, .adv_w = 366, .box_w = 21, .box_h = 29, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 111, .adv_w = 366, .box_w = 7, .box_h = 27, .ofs_x = 15, .ofs_y = 1},
|
||||
{.bitmap_index = 147, .adv_w = 366, .box_w = 21, .box_h = 29, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 227, .adv_w = 366, .box_w = 20, .box_h = 29, .ofs_x = 2, .ofs_y = 0},
|
||||
{.bitmap_index = 302, .adv_w = 366, .box_w = 20, .box_h = 27, .ofs_x = 2, .ofs_y = 0},
|
||||
{.bitmap_index = 382, .adv_w = 366, .box_w = 19, .box_h = 29, .ofs_x = 2, .ofs_y = 0},
|
||||
{.bitmap_index = 456, .adv_w = 366, .box_w = 20, .box_h = 29, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 540, .adv_w = 366, .box_w = 20, .box_h = 28, .ofs_x = 2, .ofs_y = 1},
|
||||
{.bitmap_index = 618, .adv_w = 366, .box_w = 21, .box_h = 29, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 714, .adv_w = 366, .box_w = 20, .box_h = 29, .ofs_x = 2, .ofs_y = 0},
|
||||
{.bitmap_index = 799, .adv_w = 90, .box_w = 6, .box_h = 15, .ofs_x = 0, .ofs_y = 6}
|
||||
};
|
||||
|
||||
/*---------------------
|
||||
* CHARACTER MAPPING
|
||||
*--------------------*/
|
||||
|
||||
static const uint16_t unicode_list_0[] = {
|
||||
0x0, 0x1, 0xd, 0xe
|
||||
};
|
||||
|
||||
/*Collect the unicode lists and glyph_id offsets*/
|
||||
static const lv_font_fmt_txt_cmap_t cmaps[] =
|
||||
{
|
||||
{
|
||||
.range_start = 32, .range_length = 15, .glyph_id_start = 1,
|
||||
.unicode_list = unicode_list_0, .glyph_id_ofs_list = NULL, .list_length = 4, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY
|
||||
},
|
||||
{
|
||||
.range_start = 48, .range_length = 11, .glyph_id_start = 5,
|
||||
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
/*--------------------
|
||||
* ALL CUSTOM DATA
|
||||
*--------------------*/
|
||||
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
/*Store all the custom data of the font*/
|
||||
static lv_font_fmt_txt_glyph_cache_t cache;
|
||||
static const lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#else
|
||||
static lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#endif
|
||||
.glyph_bitmap = glyph_bitmap,
|
||||
.glyph_dsc = glyph_dsc,
|
||||
.cmaps = cmaps,
|
||||
.kern_dsc = NULL,
|
||||
.kern_scale = 0,
|
||||
.cmap_num = 2,
|
||||
.bpp = 2,
|
||||
.kern_classes = 0,
|
||||
.bitmap_format = 1,
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
.cache = &cache
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
/*-----------------
|
||||
* PUBLIC FONT
|
||||
*----------------*/
|
||||
|
||||
/*Initialize a public general font descriptor*/
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
const lv_font_t seg7_28 = {
|
||||
#else
|
||||
lv_font_t seg7_28 = {
|
||||
#endif
|
||||
.get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/
|
||||
.get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/
|
||||
.line_height = 29, /*The maximum line height required by the font*/
|
||||
.base_line = 0, /*Baseline measured from the bottom of the line*/
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
.underline_position = -3,
|
||||
.underline_thickness = 1,
|
||||
#endif
|
||||
.dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif /*#if SEG7_28*/
|
||||
|
|
@ -0,0 +1,309 @@
|
|||
/*******************************************************************************
|
||||
* Size: 36 px
|
||||
* Bpp: 2
|
||||
* Opts: --font DSEG7Classic-BoldItalic.ttf -r 0x20-0x3F --size 36 --format lvgl --bpp 2 -o c_files//seg7_36.c
|
||||
******************************************************************************/
|
||||
|
||||
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
|
||||
#include "lvgl.h"
|
||||
#else
|
||||
#include "lvgl/lvgl.h"
|
||||
#endif
|
||||
|
||||
#ifndef SEG7_36
|
||||
#define SEG7_36 1
|
||||
#endif
|
||||
|
||||
#if SEG7_36
|
||||
|
||||
/*-----------------
|
||||
* BITMAPS
|
||||
*----------------*/
|
||||
|
||||
/*Store the image of the glyphs*/
|
||||
static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = {
|
||||
/* U+0020 " " */
|
||||
|
||||
/* U+0021 "!" */
|
||||
|
||||
/* U+002D "-" */
|
||||
0x3, 0x5f, 0xfc, 0x0, 0xcc, 0xbf, 0xfc, 0xc,
|
||||
0xc, 0x1f, 0xfc, 0x2c, 0x43, 0xff, 0x87, 0x3,
|
||||
0xf, 0xfe, 0xe, 0x80,
|
||||
|
||||
/* U+002E "." */
|
||||
0x14, 0x6, 0x99, 0x5, 0x21, 0x72, 0x28,
|
||||
|
||||
/* U+0030 "0" */
|
||||
0xf, 0x57, 0xff, 0x11, 0xf, 0xda, 0xff, 0xf1,
|
||||
0x24, 0x39, 0x60, 0xff, 0xe2, 0x24, 0x1a, 0x9a,
|
||||
0x1f, 0xfc, 0x27, 0x90, 0xf5, 0xa1, 0xff, 0xc0,
|
||||
0x78, 0x39, 0xa, 0x9f, 0xff, 0xc1, 0x83, 0xff,
|
||||
0x99, 0x87, 0xff, 0x57, 0xf, 0xfe, 0x2a, 0x12,
|
||||
0x1f, 0xfd, 0x54, 0x3f, 0xf9, 0x28, 0x7f, 0xf2,
|
||||
0x70, 0xff, 0xea, 0xe1, 0xff, 0xda, 0x43, 0x21,
|
||||
0xff, 0xd0, 0x42, 0x50, 0x7f, 0xf0, 0x10, 0xff,
|
||||
0x30, 0x7f, 0xf0, 0xb0, 0xf3, 0x50, 0x7f, 0xf1,
|
||||
0x3a, 0x4, 0xd0, 0x3f, 0xf8, 0xb4, 0xc2, 0xc1,
|
||||
0x87, 0xff, 0xf, 0x43, 0xfa, 0xf, 0xfe, 0xe,
|
||||
0x1f, 0x21, 0xff, 0xc9, 0xc3, 0xff, 0xdf, 0x87,
|
||||
0xff, 0x15, 0xf, 0xfe, 0x42, 0x1f, 0xfd, 0x54,
|
||||
0x32, 0x1f, 0xfd, 0xac, 0x3f, 0xfa, 0xb8, 0x7f,
|
||||
0xf2, 0x50, 0xfa, 0x6b, 0xfe, 0x70, 0xff, 0x5c,
|
||||
0xbf, 0xf5, 0xc1, 0xfa, 0x88, 0x7f, 0xf0, 0x52,
|
||||
0x20, 0xae, 0xf, 0xfe, 0x24, 0x61, 0xe4, 0x3f,
|
||||
0xf8, 0xa8, 0x70,
|
||||
|
||||
/* U+0031 "1" */
|
||||
0xf, 0xfe, 0xd, 0x87, 0x48, 0x76, 0x87, 0x41,
|
||||
0xff, 0xc7, 0x42, 0x43, 0xff, 0x8f, 0x87, 0xff,
|
||||
0x2d, 0x2, 0x1f, 0xfc, 0x35, 0x7, 0xd2, 0x1f,
|
||||
0x5e, 0xe, 0xf4, 0x1b, 0xf, 0x61, 0xff, 0x61,
|
||||
0xff, 0xcb, 0x40, 0x87, 0xff, 0x2f, 0xf, 0xfe,
|
||||
0x3a, 0x14, 0x1f, 0xa0, 0xf9, 0x88, 0x39, 0xc3,
|
||||
0x0,
|
||||
|
||||
/* U+0032 "2" */
|
||||
0xf, 0x57, 0xff, 0x11, 0xf, 0xda, 0xff, 0xf1,
|
||||
0x24, 0x3e, 0x43, 0xff, 0x88, 0x90, 0x7a, 0x43,
|
||||
0xff, 0x84, 0xf2, 0x1f, 0x48, 0x7f, 0xf0, 0x1e,
|
||||
0xf, 0xf5, 0xff, 0xfc, 0x18, 0x3f, 0xf9, 0x98,
|
||||
0x7f, 0xf9, 0xd0, 0x90, 0xff, 0xff, 0x83, 0xf,
|
||||
0xff, 0xe2, 0x19, 0xf, 0xfe, 0xab, 0x5f, 0xfc,
|
||||
0x4, 0x3f, 0xe6, 0x5f, 0xfe, 0x7, 0x83, 0xf9,
|
||||
0x83, 0xff, 0x85, 0xea, 0x4, 0xf9, 0xf, 0xfe,
|
||||
0x1c, 0x28, 0x2c, 0x1e, 0xf, 0xfe, 0xe, 0x87,
|
||||
0xfa, 0xff, 0xfe, 0x8, 0x7e, 0x43, 0xff, 0xfe,
|
||||
0x1e, 0xc3, 0xff, 0xf8, 0x86, 0x43, 0xff, 0xf9,
|
||||
0x87, 0xff, 0x46, 0x6b, 0xfe, 0x43, 0xfe, 0xb9,
|
||||
0x7f, 0xea, 0x7, 0xf5, 0x10, 0xff, 0xe0, 0xa8,
|
||||
0x3d, 0x70, 0x7f, 0xf1, 0x24, 0x3e, 0x43, 0xff,
|
||||
0x8a, 0x87, 0x0,
|
||||
|
||||
/* U+0033 "3" */
|
||||
0xe, 0xaf, 0xfe, 0x22, 0x1f, 0x6b, 0xff, 0xc4,
|
||||
0x90, 0xf2, 0x1f, 0xfc, 0x44, 0x83, 0xa4, 0x3f,
|
||||
0xf8, 0x4f, 0x21, 0xe9, 0xf, 0xfe, 0x3, 0xc1,
|
||||
0xfd, 0x7f, 0xff, 0x6, 0xf, 0xfe, 0x5e, 0x1f,
|
||||
0xfe, 0x54, 0x24, 0x3f, 0xff, 0xd8, 0x7f, 0xfe,
|
||||
0x50, 0xc8, 0x7f, 0xf4, 0xda, 0xff, 0xe0, 0x21,
|
||||
0xfe, 0x65, 0xff, 0xe0, 0x78, 0x3f, 0x30, 0x7f,
|
||||
0xf0, 0xbd, 0x40, 0xe4, 0x3f, 0xf8, 0x75, 0x61,
|
||||
0xec, 0x3f, 0xf8, 0x34, 0x43, 0xfb, 0xff, 0xf8,
|
||||
0x30, 0x7f, 0xf4, 0x30, 0xff, 0xff, 0x21, 0xff,
|
||||
0xc7, 0x43, 0xff, 0xfd, 0x87, 0xff, 0xa5, 0xf,
|
||||
0x9a, 0xff, 0x9c, 0x3f, 0xd4, 0x5f, 0xfa, 0xe0,
|
||||
0xfd, 0xa1, 0xff, 0xc1, 0x48, 0x83, 0x61, 0xff,
|
||||
0xc4, 0x8c, 0x39, 0xf, 0xfe, 0x2a, 0x1c,
|
||||
|
||||
/* U+0034 "4" */
|
||||
0x3, 0x7, 0xff, 0x19, 0x82, 0x94, 0x1f, 0xfc,
|
||||
0x46, 0x43, 0xa4, 0x3f, 0xf8, 0x4c, 0x19, 0xa,
|
||||
0xf, 0xfe, 0xb, 0x7, 0xff, 0x2f, 0xf, 0xfe,
|
||||
0x9e, 0x1f, 0xfc, 0x54, 0x24, 0x3f, 0xfa, 0x68,
|
||||
0x7f, 0xf2, 0x10, 0xff, 0xe4, 0xe1, 0xff, 0xd3,
|
||||
0xc3, 0xff, 0xb2, 0x86, 0x43, 0xff, 0x9c, 0x84,
|
||||
0x95, 0xff, 0xc0, 0x43, 0xf9, 0xe5, 0xff, 0xe0,
|
||||
0x78, 0x39, 0xa7, 0x7, 0xff, 0xb, 0xd4, 0x9,
|
||||
0x60, 0xff, 0xe1, 0xd5, 0x87, 0xb0, 0xff, 0xe0,
|
||||
0xd1, 0xf, 0xef, 0xff, 0xe0, 0xc1, 0xff, 0xd0,
|
||||
0xc3, 0xff, 0xfc, 0x87, 0xff, 0x1d, 0xf, 0xff,
|
||||
0xf6, 0x1f, 0xfe, 0x94, 0x3f, 0xf9, 0x18, 0x7f,
|
||||
0xf3, 0x18, 0x3f, 0xf9, 0x8a, 0x20, 0xff, 0xe5,
|
||||
0x58, 0x60,
|
||||
|
||||
/* U+0035 "5" */
|
||||
0xe, 0xaf, 0xfe, 0x22, 0x1d, 0xaf, 0xff, 0x12,
|
||||
0x40, 0xb0, 0x7f, 0xf1, 0x14, 0xa, 0x68, 0x7f,
|
||||
0xf0, 0x98, 0x3a, 0xd0, 0xff, 0xe0, 0x30, 0x48,
|
||||
0x54, 0xff, 0xfe, 0x4, 0x1f, 0xfe, 0x6c, 0x3f,
|
||||
0xfc, 0xa8, 0x7f, 0xf1, 0x90, 0xff, 0xf2, 0xe1,
|
||||
0xff, 0xf3, 0x42, 0x4a, 0xff, 0xe0, 0x7, 0xe7,
|
||||
0x97, 0xff, 0x81, 0x86, 0x69, 0xc1, 0xff, 0xc2,
|
||||
0xc3, 0x2c, 0x1f, 0xfc, 0x3a, 0x70, 0x6c, 0x3f,
|
||||
0xf8, 0x34, 0x43, 0xef, 0xff, 0xe0, 0xc1, 0xff,
|
||||
0xce, 0xc3, 0xff, 0xf0, 0x87, 0xff, 0x15, 0xf,
|
||||
0xff, 0xc6, 0x1f, 0xfe, 0x54, 0x39, 0xaf, 0xf9,
|
||||
0xc3, 0xf5, 0x17, 0xfe, 0xb8, 0x3d, 0xa1, 0xff,
|
||||
0xc1, 0x48, 0x81, 0x87, 0xff, 0x12, 0x30, 0x90,
|
||||
0xff, 0xe2, 0xa1, 0x0,
|
||||
|
||||
/* U+0036 "6" */
|
||||
0xf, 0x57, 0xff, 0x11, 0xf, 0x6b, 0xff, 0xc4,
|
||||
0x90, 0x96, 0xf, 0xfe, 0x22, 0x82, 0xa6, 0x87,
|
||||
0xff, 0x9, 0x83, 0xd6, 0x87, 0xff, 0x1, 0x83,
|
||||
0x21, 0x53, 0xff, 0xf8, 0x10, 0x7f, 0xfa, 0x70,
|
||||
0xff, 0xf3, 0xa1, 0xff, 0xc7, 0x43, 0xff, 0xcf,
|
||||
0x87, 0xff, 0xd9, 0x9, 0x2b, 0xff, 0x80, 0x1f,
|
||||
0xcf, 0x2f, 0xff, 0x3, 0xe, 0x69, 0xc1, 0xff,
|
||||
0xc2, 0xc3, 0x34, 0x43, 0xff, 0x87, 0x4e, 0x30,
|
||||
0x78, 0x3f, 0xf8, 0x34, 0x43, 0xeb, 0xff, 0xf8,
|
||||
0x30, 0x72, 0x1f, 0xfc, 0x9c, 0x3f, 0xfd, 0x38,
|
||||
0x7f, 0xf1, 0x50, 0xff, 0xe3, 0x21, 0xff, 0xd1,
|
||||
0x43, 0x21, 0xff, 0xd8, 0xc3, 0xff, 0xa3, 0x87,
|
||||
0xff, 0x25, 0xe, 0x9a, 0xff, 0x9c, 0x3f, 0x5c,
|
||||
0xbf, 0xf5, 0xc1, 0xea, 0x21, 0xff, 0xc1, 0x48,
|
||||
0x8b, 0x83, 0xff, 0x89, 0x18, 0x64, 0x3f, 0xf8,
|
||||
0xa8, 0x40,
|
||||
|
||||
/* U+0037 "7" */
|
||||
0xe, 0xaf, 0xfe, 0x22, 0x1f, 0x6b, 0xff, 0xc4,
|
||||
0x90, 0xcb, 0x7, 0xff, 0x11, 0x20, 0xa9, 0xa1,
|
||||
0xff, 0xc2, 0x49, 0xe, 0xb4, 0x3f, 0xf8, 0x8,
|
||||
0x86, 0x42, 0xa7, 0xff, 0xf0, 0x50, 0xff, 0xe5,
|
||||
0xe1, 0xff, 0xd3, 0xc3, 0xff, 0x8a, 0x84, 0x87,
|
||||
0xff, 0x4d, 0xf, 0xfe, 0x42, 0x1f, 0xfc, 0x9c,
|
||||
0x3f, 0xfa, 0x78, 0x7f, 0xf6, 0x50, 0xc8, 0x7f,
|
||||
0xf3, 0x90, 0x94, 0x1f, 0xfc, 0x4, 0x3f, 0xa8,
|
||||
0x1f, 0xfc, 0x2c, 0x39, 0xb4, 0x3f, 0xf8, 0x9d,
|
||||
0x84, 0x87, 0xff, 0x1b, 0xa0, 0x7f, 0xf2, 0x70,
|
||||
0xff, 0xe5, 0xe1, 0xff, 0xd0, 0xc3, 0xff, 0xfc,
|
||||
0x87, 0xff, 0x1d, 0xf, 0xff, 0xf6, 0x1f, 0xfe,
|
||||
0x94, 0x3f, 0xf9, 0x10, 0x7f, 0xf3, 0x60, 0xff,
|
||||
0xe6, 0x31, 0x7, 0xff, 0x29, 0xc3, 0x0,
|
||||
|
||||
/* U+0038 "8" */
|
||||
0xf, 0x57, 0xff, 0x11, 0xf, 0xda, 0xff, 0xf1,
|
||||
0x24, 0x39, 0x60, 0xff, 0xe2, 0x24, 0x1a, 0x9a,
|
||||
0x1f, 0xfc, 0x27, 0x90, 0xf5, 0xa1, 0xff, 0xc0,
|
||||
0x78, 0x39, 0xa, 0x9f, 0xff, 0xc1, 0x83, 0xff,
|
||||
0x99, 0x87, 0xff, 0x57, 0xf, 0xfe, 0x2a, 0x12,
|
||||
0x1f, 0xfd, 0x54, 0x3f, 0xf9, 0x28, 0x7f, 0xf2,
|
||||
0x70, 0xff, 0xea, 0xe1, 0xff, 0xda, 0x43, 0x21,
|
||||
0xff, 0xd0, 0x42, 0x4a, 0xff, 0xe0, 0x21, 0xfe,
|
||||
0x79, 0x7f, 0xf8, 0x1e, 0xf, 0x34, 0xe0, 0xff,
|
||||
0xe1, 0x7a, 0x81, 0x34, 0x43, 0xff, 0x87, 0x56,
|
||||
0x16, 0xf, 0x7, 0xff, 0x6, 0x88, 0x7f, 0x5f,
|
||||
0xff, 0xc1, 0x83, 0xe4, 0x3f, 0xf9, 0x38, 0x7f,
|
||||
0xfb, 0xf0, 0xff, 0xe2, 0xa1, 0xff, 0xc8, 0x43,
|
||||
0xff, 0xaa, 0x86, 0x43, 0xff, 0xb5, 0x87, 0xff,
|
||||
0x57, 0xf, 0xfe, 0x4a, 0x1f, 0x4d, 0x7f, 0xce,
|
||||
0x1f, 0xeb, 0x97, 0xfe, 0xb8, 0x3f, 0x51, 0xf,
|
||||
0xfe, 0xa, 0x44, 0x15, 0xc1, 0xff, 0xc4, 0x8c,
|
||||
0x3c, 0x87, 0xff, 0x15, 0xe,
|
||||
|
||||
/* U+0039 "9" */
|
||||
0xe, 0xaf, 0xfe, 0x22, 0x1f, 0x6b, 0xff, 0xc4,
|
||||
0x90, 0xcb, 0x7, 0xff, 0x11, 0x20, 0xa9, 0xa1,
|
||||
0xff, 0xc2, 0x79, 0xe, 0xb4, 0x3f, 0xf8, 0xf,
|
||||
0x6, 0x42, 0xa7, 0xff, 0xf0, 0x60, 0xff, 0xe5,
|
||||
0xe1, 0xff, 0xd3, 0xc3, 0xff, 0x8a, 0x84, 0x87,
|
||||
0xff, 0x4d, 0xf, 0xfe, 0x42, 0x1f, 0xfc, 0x9c,
|
||||
0x3f, 0xfa, 0x78, 0x7f, 0xf6, 0x50, 0xc8, 0x7f,
|
||||
0xf3, 0x90, 0x92, 0xbf, 0xf8, 0x8, 0x7f, 0x3c,
|
||||
0xbf, 0xfc, 0xf, 0x7, 0x34, 0xe0, 0xff, 0xe1,
|
||||
0x7a, 0x81, 0x2c, 0x1f, 0xfc, 0x3a, 0xb0, 0xf6,
|
||||
0x1f, 0xfc, 0x1a, 0x21, 0xfd, 0xff, 0xfc, 0x18,
|
||||
0x3f, 0xfa, 0x18, 0x7f, 0xff, 0x90, 0xff, 0xe3,
|
||||
0xa1, 0xff, 0xfe, 0xc3, 0xff, 0xd2, 0x87, 0xcd,
|
||||
0x7f, 0xce, 0x1f, 0xea, 0x2f, 0xfd, 0x70, 0x7e,
|
||||
0xd0, 0xff, 0xe0, 0xa4, 0x41, 0xb0, 0xff, 0xe2,
|
||||
0x46, 0x1c, 0x87, 0xff, 0x15, 0xe,
|
||||
|
||||
/* U+003A ":" */
|
||||
0x9, 0x41, 0xaa, 0xc2, 0x42, 0x43, 0xfb, 0x2,
|
||||
0x82, 0xf4, 0x1f, 0xff, 0x65, 0x6, 0xea, 0xf,
|
||||
0x21, 0xfe, 0x81, 0x0
|
||||
};
|
||||
|
||||
|
||||
/*---------------------
|
||||
* GLYPH DESCRIPTION
|
||||
*--------------------*/
|
||||
|
||||
static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = {
|
||||
{.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */,
|
||||
{.bitmap_index = 0, .adv_w = 115, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0},
|
||||
{.bitmap_index = 0, .adv_w = 470, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0},
|
||||
{.bitmap_index = 0, .adv_w = 470, .box_w = 18, .box_h = 5, .ofs_x = 6, .ofs_y = 16},
|
||||
{.bitmap_index = 20, .adv_w = 0, .box_w = 5, .box_h = 5, .ofs_x = -4, .ofs_y = 0},
|
||||
{.bitmap_index = 27, .adv_w = 470, .box_w = 26, .box_h = 37, .ofs_x = 2, .ofs_y = 0},
|
||||
{.bitmap_index = 166, .adv_w = 470, .box_w = 8, .box_h = 35, .ofs_x = 20, .ofs_y = 1},
|
||||
{.bitmap_index = 215, .adv_w = 470, .box_w = 26, .box_h = 37, .ofs_x = 2, .ofs_y = 0},
|
||||
{.bitmap_index = 330, .adv_w = 470, .box_w = 25, .box_h = 37, .ofs_x = 3, .ofs_y = 0},
|
||||
{.bitmap_index = 441, .adv_w = 470, .box_w = 25, .box_h = 34, .ofs_x = 3, .ofs_y = 1},
|
||||
{.bitmap_index = 547, .adv_w = 470, .box_w = 23, .box_h = 37, .ofs_x = 3, .ofs_y = 0},
|
||||
{.bitmap_index = 655, .adv_w = 470, .box_w = 24, .box_h = 37, .ofs_x = 2, .ofs_y = 0},
|
||||
{.bitmap_index = 777, .adv_w = 470, .box_w = 25, .box_h = 36, .ofs_x = 3, .ofs_y = 1},
|
||||
{.bitmap_index = 888, .adv_w = 470, .box_w = 26, .box_h = 37, .ofs_x = 2, .ofs_y = 0},
|
||||
{.bitmap_index = 1029, .adv_w = 470, .box_w = 25, .box_h = 37, .ofs_x = 3, .ofs_y = 0},
|
||||
{.bitmap_index = 1155, .adv_w = 115, .box_w = 7, .box_h = 20, .ofs_x = 0, .ofs_y = 8}
|
||||
};
|
||||
|
||||
/*---------------------
|
||||
* CHARACTER MAPPING
|
||||
*--------------------*/
|
||||
|
||||
static const uint16_t unicode_list_0[] = {
|
||||
0x0, 0x1, 0xd, 0xe
|
||||
};
|
||||
|
||||
/*Collect the unicode lists and glyph_id offsets*/
|
||||
static const lv_font_fmt_txt_cmap_t cmaps[] =
|
||||
{
|
||||
{
|
||||
.range_start = 32, .range_length = 15, .glyph_id_start = 1,
|
||||
.unicode_list = unicode_list_0, .glyph_id_ofs_list = NULL, .list_length = 4, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY
|
||||
},
|
||||
{
|
||||
.range_start = 48, .range_length = 11, .glyph_id_start = 5,
|
||||
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
/*--------------------
|
||||
* ALL CUSTOM DATA
|
||||
*--------------------*/
|
||||
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
/*Store all the custom data of the font*/
|
||||
static lv_font_fmt_txt_glyph_cache_t cache;
|
||||
static const lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#else
|
||||
static lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#endif
|
||||
.glyph_bitmap = glyph_bitmap,
|
||||
.glyph_dsc = glyph_dsc,
|
||||
.cmaps = cmaps,
|
||||
.kern_dsc = NULL,
|
||||
.kern_scale = 0,
|
||||
.cmap_num = 2,
|
||||
.bpp = 2,
|
||||
.kern_classes = 0,
|
||||
.bitmap_format = 1,
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
.cache = &cache
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
/*-----------------
|
||||
* PUBLIC FONT
|
||||
*----------------*/
|
||||
|
||||
/*Initialize a public general font descriptor*/
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
const lv_font_t seg7_36 = {
|
||||
#else
|
||||
lv_font_t seg7_36 = {
|
||||
#endif
|
||||
.get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/
|
||||
.get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/
|
||||
.line_height = 37, /*The maximum line height required by the font*/
|
||||
.base_line = 0, /*Baseline measured from the bottom of the line*/
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
.underline_position = -4,
|
||||
.underline_thickness = 2,
|
||||
#endif
|
||||
.dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif /*#if SEG7_36*/
|
||||
|
|
@ -0,0 +1,368 @@
|
|||
/*******************************************************************************
|
||||
* Size: 48 px
|
||||
* Bpp: 2
|
||||
* Opts: --font DSEG7Classic-BoldItalic.ttf -r 0x20-0x3F --size 48 --format lvgl --bpp 2 -o c_files//seg7_48.c
|
||||
******************************************************************************/
|
||||
|
||||
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
|
||||
#include "lvgl.h"
|
||||
#else
|
||||
#include "lvgl/lvgl.h"
|
||||
#endif
|
||||
|
||||
#ifndef SEG7_48
|
||||
#define SEG7_48 1
|
||||
#endif
|
||||
|
||||
#if SEG7_48
|
||||
|
||||
/*-----------------
|
||||
* BITMAPS
|
||||
*----------------*/
|
||||
|
||||
/*Store the image of the glyphs*/
|
||||
static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = {
|
||||
/* U+0020 " " */
|
||||
|
||||
/* U+0021 "!" */
|
||||
|
||||
/* U+002D "-" */
|
||||
0xb, 0xff, 0xf8, 0xa8, 0x6c, 0x3f, 0xf8, 0xb2,
|
||||
0xc, 0x3f, 0xf8, 0xf0, 0x7f, 0xf2, 0xd2, 0xf,
|
||||
0xfe, 0x3e, 0x8c, 0x1f, 0xfc, 0x5c, 0x0,
|
||||
|
||||
/* U+002E "." */
|
||||
0x5, 0xe4, 0x12, 0x9, 0x10, 0xd0, 0x7e, 0x43,
|
||||
0x44, 0x82, 0x40,
|
||||
|
||||
/* U+0030 "0" */
|
||||
0xf, 0xdf, 0xff, 0xcb, 0x43, 0xfd, 0x87, 0xff,
|
||||
0x2e, 0xf, 0xca, 0xc3, 0xff, 0x97, 0xc1, 0xe6,
|
||||
0x8c, 0x1f, 0xfc, 0x9e, 0x70, 0xec, 0x11, 0x7,
|
||||
0xff, 0x1f, 0x90, 0xff, 0xa6, 0xf, 0xfe, 0x2f,
|
||||
0x90, 0xff, 0xe0, 0xef, 0xff, 0xf1, 0x83, 0xfc,
|
||||
0x87, 0xff, 0xfc, 0x3f, 0xf8, 0xa8, 0x72, 0x1f,
|
||||
0xff, 0xf0, 0xe4, 0x3f, 0xf8, 0xb8, 0x76, 0x19,
|
||||
0xf, 0xfe, 0xe6, 0x1f, 0xfc, 0xb4, 0x36, 0x1f,
|
||||
0xfc, 0xb4, 0x3f, 0xfc, 0xe8, 0x7f, 0xf4, 0x10,
|
||||
0xff, 0xff, 0x87, 0xff, 0x2d, 0xf, 0xe7, 0xf,
|
||||
0xfe, 0x36, 0x1f, 0xfc, 0x16, 0xf, 0xfe, 0x44,
|
||||
0x1f, 0xca, 0xa0, 0x7f, 0xf2, 0x59, 0x58, 0x7f,
|
||||
0xf5, 0x90, 0xcb, 0x48, 0x7f, 0xf2, 0x68, 0xb0,
|
||||
0x7e, 0x90, 0xff, 0xe3, 0xc8, 0x48, 0x6c, 0x34,
|
||||
0x1f, 0xfc, 0x69, 0xf, 0xfe, 0x1a, 0x1f, 0xfc,
|
||||
0x54, 0x3f, 0xf8, 0x88, 0x7f, 0xf4, 0x10, 0xff,
|
||||
0xff, 0x87, 0xff, 0x15, 0xe, 0x43, 0xff, 0xf3,
|
||||
0x86, 0x43, 0x90, 0xff, 0xe2, 0xe1, 0xff, 0xff,
|
||||
0x43, 0x61, 0xd8, 0x7f, 0xf1, 0x50, 0xff, 0xff,
|
||||
0x87, 0x21, 0xc8, 0x7f, 0xf5, 0x7b, 0xff, 0xf8,
|
||||
0x96, 0x1f, 0xfc, 0x2e, 0x43, 0xff, 0x88, 0xd8,
|
||||
0x48, 0x7e, 0xf2, 0x1f, 0xfc, 0x65, 0x60, 0xc3,
|
||||
0xb7, 0xc1, 0xff, 0xc9, 0x9a, 0x21, 0xeb, 0xf,
|
||||
0xfe, 0x5c, 0xa0, 0xfd, 0x87, 0xff, 0x2e, 0xf,
|
||||
0x80,
|
||||
|
||||
/* U+0031 "1" */
|
||||
0xf, 0xfe, 0x3f, 0x7, 0xce, 0x21, 0xe6, 0xf,
|
||||
0xcc, 0x1f, 0xd0, 0x7f, 0xf3, 0x90, 0xc8, 0x7f,
|
||||
0xf3, 0xf0, 0xd8, 0x7f, 0xf3, 0xd0, 0xc8, 0x7f,
|
||||
0xfa, 0x90, 0xc8, 0x74, 0x87, 0xfa, 0xf, 0xfb,
|
||||
0xe8, 0x3e, 0xf9, 0xf, 0x61, 0x21, 0xd8, 0x7f,
|
||||
0x61, 0xff, 0xe4, 0x43, 0x21, 0xff, 0xcf, 0xc3,
|
||||
0x61, 0xff, 0xcf, 0x43, 0x21, 0xff, 0xd4, 0x83,
|
||||
0xfc, 0xa0, 0xff, 0x48, 0x10, 0xfa, 0x48, 0x3f,
|
||||
0x58, 0x70,
|
||||
|
||||
/* U+0032 "2" */
|
||||
0xf, 0xdf, 0xff, 0xcb, 0x43, 0xfd, 0x87, 0xff,
|
||||
0x2e, 0xf, 0xf6, 0x1f, 0xfc, 0xbe, 0x43, 0xfa,
|
||||
0xf, 0xfe, 0x4f, 0x30, 0x7f, 0x30, 0x7f, 0xf1,
|
||||
0xf9, 0xf, 0xfe, 0x3, 0x7, 0xff, 0x17, 0xc8,
|
||||
0x7f, 0xf0, 0x9f, 0xff, 0xe3, 0x7, 0xff, 0xfc,
|
||||
0x3f, 0xfa, 0x8, 0x72, 0x1f, 0xff, 0xf0, 0xff,
|
||||
0xe5, 0xe1, 0xd8, 0x7f, 0xfe, 0x50, 0xff, 0xe8,
|
||||
0x21, 0xff, 0xff, 0xf, 0xff, 0xf8, 0x7f, 0xf4,
|
||||
0x50, 0xff, 0xbf, 0xff, 0x8a, 0xe1, 0xff, 0xc3,
|
||||
0xc3, 0xff, 0x8b, 0x30, 0x7f, 0xf0, 0x70, 0xff,
|
||||
0xe3, 0xc4, 0xa8, 0x3a, 0x88, 0x7f, 0xf2, 0xda,
|
||||
0x7, 0x2d, 0x38, 0x7f, 0xf1, 0xf4, 0x3f, 0xf8,
|
||||
0x13, 0x7, 0xff, 0x17, 0xf, 0xf6, 0x1a, 0x7f,
|
||||
0xff, 0x8a, 0x1f, 0xfc, 0x54, 0x3f, 0xfa, 0xc8,
|
||||
0x7f, 0xf4, 0x10, 0xff, 0xff, 0x87, 0xff, 0xfc,
|
||||
0x3f, 0xf9, 0x68, 0x72, 0x1f, 0xff, 0xf0, 0xff,
|
||||
0xe5, 0xe1, 0xd8, 0x7f, 0xff, 0xc3, 0xff, 0x96,
|
||||
0x87, 0x21, 0xff, 0xd5, 0xef, 0xff, 0xe2, 0x41,
|
||||
0xff, 0xc3, 0xe4, 0x3f, 0xf8, 0x8c, 0x1f, 0xfc,
|
||||
0x1f, 0x21, 0xff, 0xc6, 0x50, 0x7f, 0x6f, 0x83,
|
||||
0xff, 0x93, 0x21, 0xfd, 0x61, 0xff, 0xcb, 0x83,
|
||||
0xfd, 0x87, 0xff, 0x2e, 0xf, 0x80,
|
||||
|
||||
/* U+0033 "3" */
|
||||
0xf, 0x7f, 0xff, 0x2d, 0xf, 0xd8, 0x7f, 0xf2,
|
||||
0xe0, 0xfd, 0x87, 0xff, 0x2f, 0x90, 0xfa, 0xf,
|
||||
0xfe, 0x4f, 0x30, 0x7c, 0xc1, 0xff, 0xc7, 0xe4,
|
||||
0x3f, 0xcc, 0x1f, 0xfc, 0x5f, 0x21, 0xff, 0xc0,
|
||||
0x7f, 0xff, 0x8c, 0x1f, 0xff, 0xf0, 0xff, 0xe5,
|
||||
0x21, 0xc8, 0x7f, 0xff, 0xc3, 0xff, 0x8b, 0x87,
|
||||
0x61, 0xff, 0xf5, 0x43, 0xff, 0x9c, 0x87, 0xff,
|
||||
0xfc, 0x3f, 0xff, 0xe1, 0xff, 0xc7, 0x43, 0xfb,
|
||||
0xff, 0xf8, 0xae, 0x1f, 0xfc, 0x1c, 0x3f, 0xf8,
|
||||
0xb3, 0x7, 0xfd, 0x87, 0xff, 0x1e, 0x25, 0x41,
|
||||
0xff, 0xd2, 0xf0, 0x7e, 0xc3, 0xff, 0x8f, 0xea,
|
||||
0x90, 0xfd, 0x7, 0xff, 0x17, 0x90, 0x90, 0xfc,
|
||||
0xff, 0xff, 0x16, 0x43, 0xff, 0xa6, 0x87, 0xff,
|
||||
0xfc, 0x3f, 0xfd, 0x68, 0x72, 0x1f, 0xff, 0xf0,
|
||||
0xff, 0xe2, 0xe1, 0xd8, 0x7f, 0xfd, 0x50, 0xff,
|
||||
0xe7, 0x21, 0xff, 0xff, 0xf, 0xfe, 0xd5, 0xff,
|
||||
0xfc, 0x4b, 0xf, 0xfe, 0xc, 0x87, 0xff, 0x11,
|
||||
0xb0, 0x90, 0xfb, 0x43, 0xff, 0x8c, 0xac, 0x18,
|
||||
0x7b, 0xf, 0xfe, 0x4c, 0xd1, 0xe, 0xc3, 0xff,
|
||||
0x97, 0x28, 0x3d, 0x87, 0xff, 0x2e, 0xf, 0x80,
|
||||
|
||||
/* U+0034 "4" */
|
||||
0x9, 0x41, 0xff, 0xcd, 0x83, 0x34, 0x43, 0xff,
|
||||
0x97, 0x38, 0x58, 0x24, 0x3f, 0xf9, 0x32, 0x1f,
|
||||
0xd0, 0x7f, 0xf2, 0x34, 0x3f, 0xec, 0x3f, 0xf8,
|
||||
0xd8, 0x7e, 0x43, 0xff, 0xfe, 0x1f, 0xfc, 0x14,
|
||||
0x39, 0xf, 0xff, 0xf2, 0x1f, 0xfc, 0x5c, 0x3b,
|
||||
0x2, 0x1f, 0xfd, 0xac, 0x3f, 0xf9, 0x68, 0x30,
|
||||
0xff, 0xe5, 0xa1, 0xff, 0xe3, 0x43, 0xff, 0x9c,
|
||||
0x87, 0xff, 0xfc, 0x3f, 0xf8, 0xe8, 0x7c, 0xff,
|
||||
0xff, 0x19, 0xc3, 0xfe, 0x6c, 0x3f, 0xf8, 0xb3,
|
||||
0x7, 0xca, 0xa6, 0x1f, 0xfc, 0x79, 0x95, 0x85,
|
||||
0x44, 0x3f, 0xf9, 0x49, 0xe4, 0x3e, 0x83, 0xff,
|
||||
0x8f, 0x95, 0x21, 0xf3, 0x7, 0xff, 0x17, 0xa0,
|
||||
0x48, 0x7e, 0x7f, 0xff, 0x8b, 0x21, 0xff, 0xd3,
|
||||
0x43, 0xff, 0xfe, 0x1f, 0xfe, 0xb4, 0x39, 0xf,
|
||||
0xff, 0xf8, 0x7f, 0xf1, 0x70, 0xec, 0x3f, 0xfe,
|
||||
0xa8, 0x7f, 0xf3, 0x90, 0xff, 0xff, 0x87, 0xff,
|
||||
0xb3, 0xf, 0xfe, 0xae, 0x12, 0x1f, 0xfd, 0x18,
|
||||
0x18, 0x7f, 0xf4, 0x5a, 0x21, 0x80,
|
||||
|
||||
/* U+0035 "5" */
|
||||
0xf, 0x7f, 0xff, 0x2d, 0xf, 0x61, 0xff, 0xcb,
|
||||
0x83, 0x2b, 0xf, 0xfe, 0x5e, 0x13, 0x46, 0xf,
|
||||
0xfe, 0x4e, 0x1b, 0x4, 0x41, 0xff, 0xc7, 0xc3,
|
||||
0xfa, 0x60, 0xff, 0xe2, 0xe1, 0xff, 0x6f, 0xff,
|
||||
0xf1, 0x43, 0xe4, 0x3f, 0xff, 0xe1, 0xff, 0xff,
|
||||
0xf, 0xe4, 0x3f, 0xf9, 0x88, 0x7f, 0xf6, 0x30,
|
||||
0xff, 0xe6, 0x61, 0xff, 0xf7, 0x43, 0xff, 0x98,
|
||||
0x87, 0xff, 0xd9, 0xf, 0xfe, 0x8b, 0x7f, 0xff,
|
||||
0x15, 0xf, 0xf3, 0x61, 0xff, 0xc5, 0x90, 0xf2,
|
||||
0xa9, 0x87, 0xff, 0x1e, 0x43, 0xa8, 0x87, 0xff,
|
||||
0x2d, 0x60, 0xf6, 0x1f, 0xfc, 0x7f, 0x54, 0x87,
|
||||
0xa0, 0xff, 0xe2, 0xf2, 0x12, 0x1e, 0x7f, 0xff,
|
||||
0x8b, 0x21, 0xff, 0xd1, 0x43, 0xff, 0xfe, 0x1f,
|
||||
0xfe, 0x34, 0x39, 0xf, 0xff, 0xf8, 0x7f, 0xd8,
|
||||
0x76, 0x1f, 0xff, 0x14, 0x3f, 0xf9, 0x88, 0x7f,
|
||||
0xff, 0xc3, 0xff, 0xa5, 0x7f, 0xff, 0x12, 0xc3,
|
||||
0xfe, 0x90, 0xff, 0xe2, 0x36, 0x12, 0x1d, 0xa1,
|
||||
0xff, 0xc6, 0x56, 0xc, 0x36, 0x1f, 0xfc, 0x99,
|
||||
0xa2, 0x16, 0x1f, 0xfc, 0xb9, 0x41, 0xb0, 0xff,
|
||||
0xe5, 0xc1, 0xc0,
|
||||
|
||||
/* U+0036 "6" */
|
||||
0xf, 0xdf, 0xff, 0xcb, 0x43, 0xf6, 0x1f, 0xfc,
|
||||
0xb8, 0x3c, 0xac, 0x3f, 0xf9, 0x78, 0x73, 0x46,
|
||||
0xf, 0xfe, 0x4e, 0x1e, 0xc1, 0x10, 0x7f, 0xf1,
|
||||
0xf0, 0xff, 0xa6, 0xf, 0xfe, 0x2e, 0x1f, 0xfc,
|
||||
0x1d, 0xff, 0xfe, 0x28, 0x7f, 0x21, 0xff, 0xff,
|
||||
0xf, 0xff, 0xf8, 0x7f, 0xf1, 0xd0, 0xff, 0xe7,
|
||||
0x21, 0xff, 0xda, 0xc3, 0xff, 0x9d, 0x87, 0xff,
|
||||
0xed, 0xf, 0xfe, 0x72, 0x1f, 0xff, 0xa4, 0x3f,
|
||||
0xfa, 0x6d, 0xff, 0xfc, 0x54, 0x3f, 0xf8, 0xd,
|
||||
0x87, 0xff, 0x16, 0x43, 0xf2, 0xa9, 0x87, 0xff,
|
||||
0x1e, 0x43, 0xff, 0xaa, 0xd0, 0x25, 0xa7, 0xf,
|
||||
0xfe, 0x3f, 0xa5, 0x83, 0xd3, 0x7, 0xff, 0x17,
|
||||
0x90, 0x90, 0x61, 0xa7, 0xff, 0xf8, 0xb2, 0x1f,
|
||||
0xfc, 0x14, 0x3f, 0xf8, 0xa8, 0x7f, 0xf0, 0x90,
|
||||
0xff, 0xe7, 0x21, 0xff, 0xff, 0xf, 0xfe, 0xa,
|
||||
0x1c, 0x87, 0xff, 0xd7, 0x2, 0x1c, 0x87, 0xff,
|
||||
0x17, 0xf, 0xff, 0xda, 0xc, 0x3b, 0xf, 0xfe,
|
||||
0x2a, 0x1f, 0xff, 0xe4, 0x39, 0xf, 0xfe, 0x9f,
|
||||
0x7f, 0xff, 0x12, 0xc3, 0xff, 0x81, 0xc8, 0x7f,
|
||||
0xf1, 0x1b, 0x9, 0xf, 0x79, 0xf, 0xfe, 0x32,
|
||||
0xb0, 0x61, 0x6f, 0x83, 0xff, 0x93, 0x34, 0x43,
|
||||
0x58, 0x7f, 0xf2, 0xe5, 0x7, 0xb0, 0xff, 0xe5,
|
||||
0xc1, 0xc0,
|
||||
|
||||
/* U+0037 "7" */
|
||||
0xf, 0x7f, 0xff, 0x2d, 0xf, 0xd8, 0x7f, 0xf2,
|
||||
0xe0, 0xf9, 0x83, 0xff, 0x97, 0xc8, 0x4f, 0x10,
|
||||
0x7f, 0xf2, 0x79, 0x82, 0xc1, 0x10, 0x7f, 0xf1,
|
||||
0xf9, 0xf, 0xe9, 0x41, 0xff, 0xc5, 0xf2, 0x1f,
|
||||
0xf7, 0x7f, 0xff, 0x18, 0x3f, 0x21, 0xff, 0xff,
|
||||
0xf, 0xfe, 0xa, 0x1c, 0x87, 0xff, 0xf9, 0xf,
|
||||
0xfe, 0x2e, 0x1d, 0x81, 0xf, 0xfe, 0xd6, 0x1f,
|
||||
0xfc, 0xb4, 0x18, 0x7f, 0xf2, 0xd0, 0xff, 0xf1,
|
||||
0xa1, 0xff, 0xce, 0x43, 0xff, 0xf4, 0x87, 0xff,
|
||||
0x2d, 0xf, 0x98, 0x3f, 0xf8, 0xd8, 0x7f, 0xcc,
|
||||
0x1f, 0xfc, 0x88, 0x3e, 0xac, 0x1f, 0xfc, 0x96,
|
||||
0xb0, 0x4b, 0x7, 0xff, 0x33, 0xc1, 0xff, 0xd1,
|
||||
0xa2, 0xc1, 0xff, 0xcf, 0x90, 0x90, 0xff, 0xe7,
|
||||
0x48, 0x7f, 0xf4, 0xd0, 0xff, 0xff, 0x87, 0xff,
|
||||
0xad, 0xe, 0x43, 0xff, 0xfe, 0x1f, 0xfc, 0x5c,
|
||||
0x3b, 0xf, 0xff, 0xaa, 0x1f, 0xfc, 0xe4, 0x3f,
|
||||
0xff, 0xe1, 0xff, 0xec, 0xc3, 0xff, 0xab, 0x84,
|
||||
0x87, 0xff, 0x46, 0x6, 0x1f, 0xfd, 0x16, 0x88,
|
||||
0x60,
|
||||
|
||||
/* U+0038 "8" */
|
||||
0xf, 0xdf, 0xff, 0xcb, 0x43, 0xfd, 0x87, 0xff,
|
||||
0x2e, 0xf, 0xca, 0xc3, 0xff, 0x97, 0xc8, 0x73,
|
||||
0x46, 0xf, 0xfe, 0x4f, 0x30, 0x76, 0x8, 0x83,
|
||||
0xff, 0x8f, 0xc8, 0x7f, 0xd3, 0x7, 0xff, 0x17,
|
||||
0xc8, 0x7f, 0xf0, 0x77, 0xff, 0xf8, 0xc1, 0xfe,
|
||||
0x43, 0xff, 0xfe, 0x1f, 0xfc, 0x54, 0x39, 0xf,
|
||||
0xff, 0xf8, 0x72, 0x1f, 0xfc, 0x5c, 0x3b, 0xc,
|
||||
0x87, 0xff, 0x73, 0xf, 0xfe, 0x5a, 0x1b, 0xf,
|
||||
0xfe, 0x5a, 0x1f, 0xfe, 0x74, 0x3f, 0xfa, 0x8,
|
||||
0x7f, 0xff, 0x90, 0xff, 0xe5, 0xa1, 0xfc, 0xdf,
|
||||
0xff, 0xc5, 0x70, 0xff, 0xe0, 0xb6, 0x1f, 0xfc,
|
||||
0x59, 0x83, 0xf9, 0x54, 0xc3, 0xff, 0x8f, 0x12,
|
||||
0xa0, 0xff, 0xed, 0xad, 0x38, 0x7f, 0xf1, 0xfd,
|
||||
0x2c, 0x1f, 0xa6, 0xf, 0xfe, 0x2f, 0x21, 0x21,
|
||||
0xb0, 0xd3, 0xff, 0xfc, 0x59, 0xf, 0xfe, 0x1a,
|
||||
0x1f, 0xfc, 0x54, 0x3f, 0xf8, 0x88, 0x7f, 0xf4,
|
||||
0x10, 0xff, 0xff, 0x87, 0xff, 0x15, 0xe, 0x43,
|
||||
0xff, 0xf3, 0x86, 0x43, 0x90, 0xff, 0xe2, 0xe1,
|
||||
0xff, 0xff, 0x43, 0x61, 0xd8, 0x7f, 0xf1, 0x50,
|
||||
0xff, 0xff, 0x87, 0x21, 0xc8, 0x7f, 0xf5, 0x7b,
|
||||
0xff, 0xf8, 0x96, 0x1f, 0xfc, 0x2e, 0x43, 0xff,
|
||||
0x88, 0xd8, 0x48, 0x7e, 0xf2, 0x1f, 0xfc, 0x65,
|
||||
0x60, 0xc3, 0xb7, 0xc1, 0xff, 0xc9, 0x9a, 0x21,
|
||||
0xeb, 0xf, 0xfe, 0x5c, 0xa0, 0xfd, 0x87, 0xff,
|
||||
0x2e, 0xf, 0x80,
|
||||
|
||||
/* U+0039 "9" */
|
||||
0xf, 0x7f, 0xff, 0x2d, 0xf, 0xd8, 0x7f, 0xf2,
|
||||
0xe0, 0xf2, 0xb0, 0xff, 0xe5, 0xf2, 0x13, 0x46,
|
||||
0xf, 0xfe, 0x4f, 0x30, 0x58, 0x22, 0xf, 0xfe,
|
||||
0x3f, 0x21, 0xfd, 0x30, 0x7f, 0xf1, 0x7c, 0x87,
|
||||
0xfd, 0xbf, 0xff, 0xc6, 0xf, 0xc8, 0x7f, 0xff,
|
||||
0xc3, 0xff, 0x82, 0x87, 0x21, 0xff, 0xfe, 0x43,
|
||||
0xff, 0x8b, 0x87, 0x60, 0x43, 0xff, 0xb5, 0x87,
|
||||
0xff, 0x2d, 0x6, 0x1f, 0xfc, 0xb4, 0x3f, 0xfc,
|
||||
0x68, 0x7f, 0xf3, 0x90, 0xff, 0xfd, 0x21, 0xff,
|
||||
0xcb, 0x43, 0xe6, 0xff, 0xfe, 0x2b, 0x87, 0xfc,
|
||||
0xd8, 0x7f, 0xf1, 0x66, 0xf, 0x95, 0x4c, 0x3f,
|
||||
0xf8, 0xf1, 0x2a, 0xa, 0x88, 0x7f, 0xf3, 0x3c,
|
||||
0x1f, 0xb0, 0xff, 0xe3, 0xfa, 0xa4, 0x3f, 0x41,
|
||||
0xff, 0xc5, 0xe4, 0x24, 0x3f, 0x3f, 0xff, 0xc5,
|
||||
0x90, 0xff, 0xe9, 0xa1, 0xff, 0xff, 0xf, 0xff,
|
||||
0x5a, 0x1c, 0x87, 0xff, 0xfc, 0x3f, 0xf8, 0xb8,
|
||||
0x76, 0x1f, 0xff, 0x54, 0x3f, 0xf9, 0xc8, 0x7f,
|
||||
0xff, 0xc3, 0xff, 0xb5, 0x7f, 0xff, 0x12, 0xc3,
|
||||
0xff, 0x83, 0x21, 0xff, 0xc4, 0x6c, 0x24, 0x3e,
|
||||
0xd0, 0xff, 0xe3, 0x2b, 0x6, 0x1e, 0xc3, 0xff,
|
||||
0x93, 0x34, 0x43, 0xb0, 0xff, 0xe5, 0xca, 0xf,
|
||||
0x61, 0xff, 0xcb, 0x83, 0xe0,
|
||||
|
||||
/* U+003A ":" */
|
||||
0xd, 0x79, 0xd, 0xa0, 0x83, 0xfa, 0xf, 0xfe,
|
||||
0x2c, 0x16, 0x82, 0xe, 0xbc, 0x87, 0xff, 0xfc,
|
||||
0x3f, 0xfc, 0x37, 0x90, 0xd2, 0x9, 0x9, 0xd,
|
||||
0x7, 0xff, 0x1, 0xd, 0x5, 0x20, 0x90, 0x0
|
||||
};
|
||||
|
||||
|
||||
/*---------------------
|
||||
* GLYPH DESCRIPTION
|
||||
*--------------------*/
|
||||
|
||||
static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = {
|
||||
{.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */,
|
||||
{.bitmap_index = 0, .adv_w = 154, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0},
|
||||
{.bitmap_index = 0, .adv_w = 627, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0},
|
||||
{.bitmap_index = 0, .adv_w = 627, .box_w = 23, .box_h = 6, .ofs_x = 8, .ofs_y = 21},
|
||||
{.bitmap_index = 23, .adv_w = 0, .box_w = 7, .box_h = 6, .ofs_x = -6, .ofs_y = 0},
|
||||
{.bitmap_index = 34, .adv_w = 627, .box_w = 35, .box_h = 48, .ofs_x = 2, .ofs_y = 0},
|
||||
{.bitmap_index = 227, .adv_w = 627, .box_w = 11, .box_h = 45, .ofs_x = 26, .ofs_y = 2},
|
||||
{.bitmap_index = 293, .adv_w = 627, .box_w = 35, .box_h = 48, .ofs_x = 2, .ofs_y = 0},
|
||||
{.bitmap_index = 467, .adv_w = 627, .box_w = 33, .box_h = 48, .ofs_x = 4, .ofs_y = 0},
|
||||
{.bitmap_index = 627, .adv_w = 627, .box_w = 33, .box_h = 44, .ofs_x = 4, .ofs_y = 2},
|
||||
{.bitmap_index = 769, .adv_w = 627, .box_w = 31, .box_h = 48, .ofs_x = 4, .ofs_y = 0},
|
||||
{.bitmap_index = 924, .adv_w = 627, .box_w = 33, .box_h = 48, .ofs_x = 2, .ofs_y = 0},
|
||||
{.bitmap_index = 1102, .adv_w = 627, .box_w = 33, .box_h = 46, .ofs_x = 4, .ofs_y = 2},
|
||||
{.bitmap_index = 1247, .adv_w = 627, .box_w = 35, .box_h = 48, .ofs_x = 2, .ofs_y = 0},
|
||||
{.bitmap_index = 1442, .adv_w = 627, .box_w = 33, .box_h = 48, .ofs_x = 4, .ofs_y = 0},
|
||||
{.bitmap_index = 1615, .adv_w = 154, .box_w = 9, .box_h = 26, .ofs_x = 0, .ofs_y = 11}
|
||||
};
|
||||
|
||||
/*---------------------
|
||||
* CHARACTER MAPPING
|
||||
*--------------------*/
|
||||
|
||||
static const uint16_t unicode_list_0[] = {
|
||||
0x0, 0x1, 0xd, 0xe
|
||||
};
|
||||
|
||||
/*Collect the unicode lists and glyph_id offsets*/
|
||||
static const lv_font_fmt_txt_cmap_t cmaps[] =
|
||||
{
|
||||
{
|
||||
.range_start = 32, .range_length = 15, .glyph_id_start = 1,
|
||||
.unicode_list = unicode_list_0, .glyph_id_ofs_list = NULL, .list_length = 4, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY
|
||||
},
|
||||
{
|
||||
.range_start = 48, .range_length = 11, .glyph_id_start = 5,
|
||||
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
/*--------------------
|
||||
* ALL CUSTOM DATA
|
||||
*--------------------*/
|
||||
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
/*Store all the custom data of the font*/
|
||||
static lv_font_fmt_txt_glyph_cache_t cache;
|
||||
static const lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#else
|
||||
static lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#endif
|
||||
.glyph_bitmap = glyph_bitmap,
|
||||
.glyph_dsc = glyph_dsc,
|
||||
.cmaps = cmaps,
|
||||
.kern_dsc = NULL,
|
||||
.kern_scale = 0,
|
||||
.cmap_num = 2,
|
||||
.bpp = 2,
|
||||
.kern_classes = 0,
|
||||
.bitmap_format = 1,
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
.cache = &cache
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
/*-----------------
|
||||
* PUBLIC FONT
|
||||
*----------------*/
|
||||
|
||||
/*Initialize a public general font descriptor*/
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
const lv_font_t seg7_48 = {
|
||||
#else
|
||||
lv_font_t seg7_48 = {
|
||||
#endif
|
||||
.get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/
|
||||
.get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/
|
||||
.line_height = 48, /*The maximum line height required by the font*/
|
||||
.base_line = 0, /*Baseline measured from the bottom of the line*/
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
.underline_position = -6,
|
||||
.underline_thickness = 2,
|
||||
#endif
|
||||
.dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif /*#if SEG7_48*/
|
||||
|
|
@ -0,0 +1,171 @@
|
|||
/*******************************************************************************
|
||||
* Size: 8 px
|
||||
* Bpp: 1
|
||||
* Opts: --font DSEG7Classic-Bold.ttf -r 0x20-0x3F --size 8 --format lvgl --bpp 1 -o c_files//seg7_8.c
|
||||
******************************************************************************/
|
||||
|
||||
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
|
||||
#include "lvgl.h"
|
||||
#else
|
||||
#include "lvgl/lvgl.h"
|
||||
#endif
|
||||
|
||||
#ifndef SEG7_8
|
||||
#define SEG7_8 1
|
||||
#endif
|
||||
|
||||
#if SEG7_8
|
||||
|
||||
/*-----------------
|
||||
* BITMAPS
|
||||
*----------------*/
|
||||
|
||||
/*Store the image of the glyphs*/
|
||||
static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = {
|
||||
/* U+0020 " " */
|
||||
0x0,
|
||||
|
||||
/* U+0021 "!" */
|
||||
0x0,
|
||||
|
||||
/* U+002D "-" */
|
||||
0xf0,
|
||||
|
||||
/* U+002E "." */
|
||||
0xc0,
|
||||
|
||||
/* U+0030 "0" */
|
||||
0x74, 0x63, 0x18, 0xc6, 0x2e,
|
||||
|
||||
/* U+0031 "1" */
|
||||
0x7e,
|
||||
|
||||
/* U+0032 "2" */
|
||||
0x70, 0x42, 0xe8, 0x42, 0xe,
|
||||
|
||||
/* U+0033 "3" */
|
||||
0x70, 0x42, 0xe0, 0x84, 0x2e,
|
||||
|
||||
/* U+0034 "4" */
|
||||
0x8c, 0x62, 0xe0, 0x84, 0x20,
|
||||
|
||||
/* U+0035 "5" */
|
||||
0x74, 0x20, 0xe0, 0x84, 0x2e,
|
||||
|
||||
/* U+0036 "6" */
|
||||
0x74, 0x20, 0xe8, 0xc6, 0x2e,
|
||||
|
||||
/* U+0037 "7" */
|
||||
0x74, 0x63, 0x10, 0x84, 0x21,
|
||||
|
||||
/* U+0038 "8" */
|
||||
0x74, 0x62, 0xe8, 0xc6, 0x2e,
|
||||
|
||||
/* U+0039 "9" */
|
||||
0x74, 0x62, 0xe0, 0x84, 0x2e,
|
||||
|
||||
/* U+003A ":" */
|
||||
0x90
|
||||
};
|
||||
|
||||
|
||||
/*---------------------
|
||||
* GLYPH DESCRIPTION
|
||||
*--------------------*/
|
||||
|
||||
static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = {
|
||||
{.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */,
|
||||
{.bitmap_index = 0, .adv_w = 26, .box_w = 1, .box_h = 1, .ofs_x = 0, .ofs_y = 0},
|
||||
{.bitmap_index = 1, .adv_w = 104, .box_w = 1, .box_h = 1, .ofs_x = 0, .ofs_y = 0},
|
||||
{.bitmap_index = 2, .adv_w = 104, .box_w = 4, .box_h = 1, .ofs_x = 1, .ofs_y = 4},
|
||||
{.bitmap_index = 3, .adv_w = 0, .box_w = 2, .box_h = 1, .ofs_x = -1, .ofs_y = 0},
|
||||
{.bitmap_index = 4, .adv_w = 104, .box_w = 5, .box_h = 8, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 9, .adv_w = 104, .box_w = 1, .box_h = 8, .ofs_x = 5, .ofs_y = 0},
|
||||
{.bitmap_index = 10, .adv_w = 104, .box_w = 5, .box_h = 8, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 15, .adv_w = 104, .box_w = 5, .box_h = 8, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 20, .adv_w = 104, .box_w = 5, .box_h = 7, .ofs_x = 1, .ofs_y = 1},
|
||||
{.bitmap_index = 25, .adv_w = 104, .box_w = 5, .box_h = 8, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 30, .adv_w = 104, .box_w = 5, .box_h = 8, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 35, .adv_w = 104, .box_w = 5, .box_h = 8, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 40, .adv_w = 104, .box_w = 5, .box_h = 8, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 45, .adv_w = 104, .box_w = 5, .box_h = 8, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 50, .adv_w = 26, .box_w = 1, .box_h = 4, .ofs_x = 0, .ofs_y = 2}
|
||||
};
|
||||
|
||||
/*---------------------
|
||||
* CHARACTER MAPPING
|
||||
*--------------------*/
|
||||
|
||||
static const uint16_t unicode_list_0[] = {
|
||||
0x0, 0x1, 0xd, 0xe
|
||||
};
|
||||
|
||||
/*Collect the unicode lists and glyph_id offsets*/
|
||||
static const lv_font_fmt_txt_cmap_t cmaps[] =
|
||||
{
|
||||
{
|
||||
.range_start = 32, .range_length = 15, .glyph_id_start = 1,
|
||||
.unicode_list = unicode_list_0, .glyph_id_ofs_list = NULL, .list_length = 4, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY
|
||||
},
|
||||
{
|
||||
.range_start = 48, .range_length = 11, .glyph_id_start = 5,
|
||||
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
/*--------------------
|
||||
* ALL CUSTOM DATA
|
||||
*--------------------*/
|
||||
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
/*Store all the custom data of the font*/
|
||||
static lv_font_fmt_txt_glyph_cache_t cache;
|
||||
static const lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#else
|
||||
static lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#endif
|
||||
.glyph_bitmap = glyph_bitmap,
|
||||
.glyph_dsc = glyph_dsc,
|
||||
.cmaps = cmaps,
|
||||
.kern_dsc = NULL,
|
||||
.kern_scale = 0,
|
||||
.cmap_num = 2,
|
||||
.bpp = 1,
|
||||
.kern_classes = 0,
|
||||
.bitmap_format = 0,
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
.cache = &cache
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
/*-----------------
|
||||
* PUBLIC FONT
|
||||
*----------------*/
|
||||
|
||||
/*Initialize a public general font descriptor*/
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
const lv_font_t seg7_8 = {
|
||||
#else
|
||||
lv_font_t seg7_8 = {
|
||||
#endif
|
||||
.get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/
|
||||
.get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/
|
||||
.line_height = 8, /*The maximum line height required by the font*/
|
||||
.base_line = 0, /*Baseline measured from the bottom of the line*/
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
.underline_position = -1,
|
||||
.underline_thickness = 0,
|
||||
#endif
|
||||
.dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif /*#if SEG7_8*/
|
||||
|
|
@ -0,0 +1 @@
|
|||
/* empty file required to force compilation of this lib */
|
|
@ -50,8 +50,8 @@ uint16_t uDisplay_lvgl::GetColorFromIndex(uint8_t index) {
|
|||
return udisp_colors[index];
|
||||
}
|
||||
|
||||
extern uint8_t *buffer;
|
||||
extern uint8_t color_type;
|
||||
extern uint8_t *buffer_lvgl;
|
||||
extern uint8_t color_type_lvgl;
|
||||
|
||||
uDisplay_lvgl::uDisplay_lvgl(char *lp) {
|
||||
// analyse decriptor
|
||||
|
@ -103,9 +103,9 @@ uDisplay_lvgl::uDisplay_lvgl(char *lp) {
|
|||
gys = next_val(&lp1);
|
||||
bpp = next_val(&lp1);
|
||||
if (bpp == 1) {
|
||||
color_type = uCOLOR_BW;
|
||||
color_type_lvgl = uCOLOR_BW;
|
||||
} else {
|
||||
color_type = uCOLOR_COLOR;
|
||||
color_type_lvgl = uCOLOR_COLOR;
|
||||
}
|
||||
str2c(&lp1, ibuff, sizeof(ibuff));
|
||||
if (!strncmp(ibuff, "I2C", 3)) {
|
||||
|
@ -350,14 +350,14 @@ void uDisplay_lvgl::Init(void) {
|
|||
wire = &Wire;
|
||||
wire->begin(i2c_sda, i2c_scl);
|
||||
if (bpp < 16) {
|
||||
if (buffer) free(buffer);
|
||||
if (buffer_lvgl) free(buffer_lvgl);
|
||||
#ifdef ESP8266
|
||||
buffer = (uint8_t*)calloc((gxs * gys * bpp) / 8, 1);
|
||||
buffer_lvgl = (uint8_t*)calloc((gxs * gys * bpp) / 8, 1);
|
||||
#else
|
||||
if (psramFound()) {
|
||||
buffer = (uint8_t*)heap_caps_malloc((gxs * gys * bpp) / 8, MALLOC_CAP_SPIRAM | MALLOC_CAP_8BIT);
|
||||
buffer_lvgl = (uint8_t*)heap_caps_malloc((gxs * gys * bpp) / 8, MALLOC_CAP_SPIRAM | MALLOC_CAP_8BIT);
|
||||
} else {
|
||||
buffer = (uint8_t*)calloc((gxs * gys * bpp) / 8, 1);
|
||||
buffer_lvgl = (uint8_t*)calloc((gxs * gys * bpp) / 8, 1);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
@ -377,12 +377,12 @@ void uDisplay_lvgl::Init(void) {
|
|||
|
||||
if (ep_mode) {
|
||||
#ifdef ESP8266
|
||||
buffer = (uint8_t*)calloc((gxs * gys * bpp) / 8, 1);
|
||||
buffer_lvgl = (uint8_t*)calloc((gxs * gys * bpp) / 8, 1);
|
||||
#else
|
||||
if (psramFound()) {
|
||||
buffer = (uint8_t*)heap_caps_malloc((gxs * gys * bpp) / 8, MALLOC_CAP_SPIRAM | MALLOC_CAP_8BIT);
|
||||
buffer_lvgl = (uint8_t*)heap_caps_malloc((gxs * gys * bpp) / 8, MALLOC_CAP_SPIRAM | MALLOC_CAP_8BIT);
|
||||
} else {
|
||||
buffer = (uint8_t*)calloc((gxs * gys * bpp) / 8, 1);
|
||||
buffer_lvgl = (uint8_t*)calloc((gxs * gys * bpp) / 8, 1);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
@ -609,70 +609,70 @@ void uDisplay_lvgl::i2c_command(uint8_t val) {
|
|||
|
||||
void uDisplay_lvgl::Updateframe(void) {
|
||||
|
||||
if (ep_mode) {
|
||||
Updateframe_EPD();
|
||||
return;
|
||||
}
|
||||
// if (ep_mode) {
|
||||
// Updateframe_EPD();
|
||||
// return;
|
||||
// }
|
||||
|
||||
if (interface == _UDSP_I2C) {
|
||||
// if (interface == _UDSP_I2C) {
|
||||
|
||||
#if 0
|
||||
i2c_command(saw_1);
|
||||
i2c_command(i2c_page_start);
|
||||
i2c_command(i2c_page_end);
|
||||
i2c_command(saw_2);
|
||||
i2c_command(i2c_col_start);
|
||||
i2c_command(i2c_col_end);
|
||||
// #if 0
|
||||
// i2c_command(saw_1);
|
||||
// i2c_command(i2c_page_start);
|
||||
// i2c_command(i2c_page_end);
|
||||
// i2c_command(saw_2);
|
||||
// i2c_command(i2c_col_start);
|
||||
// i2c_command(i2c_col_end);
|
||||
|
||||
uint16_t count = gxs * ((gys + 7) / 8);
|
||||
uint8_t *ptr = buffer;
|
||||
wire->beginTransmission(i2caddr);
|
||||
i2c_command(saw_3);
|
||||
uint8_t bytesOut = 1;
|
||||
while (count--) {
|
||||
if (bytesOut >= WIRE_MAX) {
|
||||
wire->endTransmission();
|
||||
wire->beginTransmission(i2caddr);
|
||||
i2c_command(saw_3);
|
||||
bytesOut = 1;
|
||||
}
|
||||
i2c_command(*ptr++);
|
||||
bytesOut++;
|
||||
}
|
||||
wire->endTransmission();
|
||||
#else
|
||||
// uint16_t count = gxs * ((gys + 7) / 8);
|
||||
// uint8_t *ptr = buffer_lvgl;
|
||||
// wire->beginTransmission(i2caddr);
|
||||
// i2c_command(saw_3);
|
||||
// uint8_t bytesOut = 1;
|
||||
// while (count--) {
|
||||
// if (bytesOut >= WIRE_MAX) {
|
||||
// wire->endTransmission();
|
||||
// wire->beginTransmission(i2caddr);
|
||||
// i2c_command(saw_3);
|
||||
// bytesOut = 1;
|
||||
// }
|
||||
// i2c_command(*ptr++);
|
||||
// bytesOut++;
|
||||
// }
|
||||
// wire->endTransmission();
|
||||
// #else
|
||||
|
||||
i2c_command(saw_1 | 0x0); // set low col = 0, 0x00
|
||||
i2c_command(i2c_page_start | 0x0); // set hi col = 0, 0x10
|
||||
i2c_command(i2c_page_end | 0x0); // set startline line #0, 0x40
|
||||
// i2c_command(saw_1 | 0x0); // set low col = 0, 0x00
|
||||
// i2c_command(i2c_page_start | 0x0); // set hi col = 0, 0x10
|
||||
// i2c_command(i2c_page_end | 0x0); // set startline line #0, 0x40
|
||||
|
||||
uint8_t ys = gys >> 3;
|
||||
uint8_t xs = gxs >> 3;
|
||||
//uint8_t xs = 132 >> 3;
|
||||
uint8_t m_row = saw_2;
|
||||
uint8_t m_col = i2c_col_start;
|
||||
// uint8_t ys = gys >> 3;
|
||||
// uint8_t xs = gxs >> 3;
|
||||
// //uint8_t xs = 132 >> 3;
|
||||
// uint8_t m_row = saw_2;
|
||||
// uint8_t m_col = i2c_col_start;
|
||||
|
||||
uint16_t p = 0;
|
||||
// uint16_t p = 0;
|
||||
|
||||
uint8_t i, j, k = 0;
|
||||
// uint8_t i, j, k = 0;
|
||||
|
||||
for ( i = 0; i < ys; i++) {
|
||||
// send a bunch of data in one xmission
|
||||
i2c_command(0xB0 + i + m_row); //set page address
|
||||
i2c_command(m_col & 0xf); //set lower column address
|
||||
i2c_command(0x10 | (m_col >> 4)); //set higher column address
|
||||
// for ( i = 0; i < ys; i++) {
|
||||
// // send a bunch of data in one xmission
|
||||
// i2c_command(0xB0 + i + m_row); //set page address
|
||||
// i2c_command(m_col & 0xf); //set lower column address
|
||||
// i2c_command(0x10 | (m_col >> 4)); //set higher column address
|
||||
|
||||
for ( j = 0; j < 8; j++) {
|
||||
wire->beginTransmission(i2caddr);
|
||||
wire->write(0x40);
|
||||
for ( k = 0; k < xs; k++, p++) {
|
||||
wire->write(buffer[p]);
|
||||
}
|
||||
wire->endTransmission();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
// for ( j = 0; j < 8; j++) {
|
||||
// wire->beginTransmission(i2caddr);
|
||||
// wire->write(0x40);
|
||||
// for ( k = 0; k < xs; k++, p++) {
|
||||
// wire->write(buffer_lvgl[p]);
|
||||
// }
|
||||
// wire->endTransmission();
|
||||
// }
|
||||
// }
|
||||
// #endif
|
||||
// }
|
||||
|
||||
|
||||
}
|
||||
|
@ -884,7 +884,7 @@ void uDisplay_lvgl::setRotation(uint8_t rotation) {
|
|||
|
||||
}
|
||||
|
||||
void udisp_bpwr(uint8_t on);
|
||||
void udisp_bpwr_lvgl(uint8_t on);
|
||||
|
||||
void uDisplay_lvgl::DisplayOnff(int8_t on) {
|
||||
|
||||
|
@ -892,7 +892,7 @@ void uDisplay_lvgl::DisplayOnff(int8_t on) {
|
|||
return;
|
||||
}
|
||||
|
||||
udisp_bpwr(on);
|
||||
udisp_bpwr_lvgl(on);
|
||||
|
||||
if (interface == _UDSP_I2C) {
|
||||
if (on) {
|
||||
|
@ -946,7 +946,7 @@ void uDisplay_lvgl::invertDisplay(bool i) {
|
|||
}
|
||||
}
|
||||
|
||||
void udisp_dimm(uint8_t dim);
|
||||
void udisp_dimm_lvgl(uint8_t dim);
|
||||
|
||||
void uDisplay_lvgl::dim(uint8_t dim) {
|
||||
dimmer = dim;
|
||||
|
@ -962,7 +962,7 @@ void uDisplay_lvgl::dim(uint8_t dim) {
|
|||
if (bpanel >= 0) {
|
||||
ledcWrite(ESP32_PWM_CHANNEL, dimmer);
|
||||
} else {
|
||||
udisp_dimm(dim);
|
||||
udisp_dimm_lvgl(dim);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -1224,7 +1224,7 @@ void uDisplay_lvgl::SetLut(const unsigned char* lut) {
|
|||
}
|
||||
|
||||
void uDisplay_lvgl::Updateframe_EPD(void) {
|
||||
SetFrameMemory(buffer, 0, 0, gxs, gys);
|
||||
SetFrameMemory(buffer_lvgl, 0, 0, gxs, gys);
|
||||
DisplayFrame();
|
||||
}
|
||||
|
||||
|
@ -1333,21 +1333,21 @@ void uDisplay_lvgl::DrawAbsolutePixel(int x, int y, int16_t color) {
|
|||
}
|
||||
if (IF_INVERT_COLOR) {
|
||||
if (color) {
|
||||
buffer[(x + y * w) / 8] |= 0x80 >> (x % 8);
|
||||
buffer_lvgl[(x + y * w) / 8] |= 0x80 >> (x % 8);
|
||||
} else {
|
||||
buffer[(x + y * w) / 8] &= ~(0x80 >> (x % 8));
|
||||
buffer_lvgl[(x + y * w) / 8] &= ~(0x80 >> (x % 8));
|
||||
}
|
||||
} else {
|
||||
if (color) {
|
||||
buffer[(x + y * w) / 8] &= ~(0x80 >> (x % 8));
|
||||
buffer_lvgl[(x + y * w) / 8] &= ~(0x80 >> (x % 8));
|
||||
} else {
|
||||
buffer[(x + y * w) / 8] |= 0x80 >> (x % 8);
|
||||
buffer_lvgl[(x + y * w) / 8] |= 0x80 >> (x % 8);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void uDisplay_lvgl::drawPixel_EPD(int16_t x, int16_t y, uint16_t color) {
|
||||
if (!buffer) return;
|
||||
if (!buffer_lvgl) return;
|
||||
if ((x < 0) || (x >= width()) || (y < 0) || (y >= height()))
|
||||
return;
|
||||
|
||||
|
|
|
@ -13,3 +13,9 @@ if os.path.isfile("platformio_override.ini"):
|
|||
print ("*** use provided platformio_override.ini as planned ***")
|
||||
else:
|
||||
shutil.copy("platformio_override_sample.ini", "platformio_override.ini")
|
||||
|
||||
# copy platformio_tasmota_cenv_sample.ini to platformio_tasmota_cenv.ini
|
||||
if os.path.isfile("platformio_tasmota_cenv.ini"):
|
||||
print ("*** use provided platformio_tasmota_cenv.ini as planned ***")
|
||||
else:
|
||||
shutil.copy("platformio_tasmota_cenv_sample.ini", "platformio_tasmota_cenv.ini")
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
[platformio]
|
||||
; For best Gitpod performance remove the ";" in the next line. Needed Platformio files are cached and installed at first run
|
||||
;core_dir = .platformio
|
||||
; Custom config Zigbee [env] -> platformio_tasmota_cenv_example.ini
|
||||
extra_configs = platformio_tasmota_cenv.ini
|
||||
|
||||
; *** Build/upload environment
|
||||
|
@ -101,8 +102,8 @@ build_flags = ${esp82xx_defaults.build_flags}
|
|||
[core_stage]
|
||||
; *** Esp8266 core for Arduino version stage
|
||||
platform_packages = framework-arduinoespressif8266 @ https://github.com/esp8266/Arduino.git
|
||||
; *** Use Xtensa build chain 10.2. GNU13 from https://github.com/earlephilhower/esp-quick-toolchain
|
||||
mcspr/toolchain-xtensa @ 5.100200.201223
|
||||
; *** Use Xtensa build chain 10.2. GNU23 from https://github.com/earlephilhower/esp-quick-toolchain
|
||||
tasmota/toolchain-xtensa @ 5.100200.210303
|
||||
build_unflags = ${esp_defaults.build_unflags}
|
||||
-Wswitch-unreachable
|
||||
build_flags = ${esp82xx_defaults.build_flags}
|
||||
|
@ -119,12 +120,12 @@ upload_port = COM4
|
|||
lib_extra_dirs = ${library.lib_extra_dirs}
|
||||
; *** ESP32 lib. ALWAYS needed for ESP32 !!!
|
||||
lib/libesp32
|
||||
; *** uncomment the following line if you want to use LVGL in a Tasmota32 build
|
||||
; lib/libesp32_lvgl
|
||||
; *** uncomment the following line if you want to use Bluetooth or Apple Homekit in a Tasmota32 build
|
||||
; lib/libesp32_div
|
||||
; *** uncomment the following line if you want to use Epaper driver epidy in your Tasmota32 build
|
||||
; lib/libesp32_epdiy
|
||||
; *** comment the following line if you dont use LVGL in a Tasmota32 build. Reduces compile time
|
||||
lib/libesp32_lvgl
|
||||
; *** comment the following line if you dont use Bluetooth or Apple Homekit in a Tasmota32 build. Reduces compile time
|
||||
lib/libesp32_div
|
||||
; *** uncomment the following line if you dont use Epaper driver epidy in your Tasmota32 build. Reduces compile time
|
||||
lib/libesp32_epdiy
|
||||
|
||||
[core32]
|
||||
; Activate Stage Core32 by removing ";" in next 3 lines, if you want to override the standard core32
|
||||
|
@ -161,63 +162,3 @@ lib_extra_dirs =
|
|||
lib/lib_rf
|
||||
; *** Mostly not used functions. Recommended to disable
|
||||
lib/lib_div
|
||||
|
||||
|
||||
; *** EXPERIMENTAL Tasmota version for ESP32-S2
|
||||
[env:tasmota32s2]
|
||||
extends = env:tasmota32_base
|
||||
board = esp32s2
|
||||
board_build.flash_mode = qio
|
||||
platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/v.2.0.0.pre/framework-arduinoespressif32-master-cf457d412.tar.gz
|
||||
platformio/tool-mklittlefs @ ~1.203.200522
|
||||
platformio/tool-esptoolpy @ ~1.30000.0
|
||||
build_unflags = ${esp32_defaults.build_unflags}
|
||||
build_flags = ${common32.build_flags} -DFIRMWARE_LITE
|
||||
lib_extra_dirs = lib/libesp32
|
||||
lib_ignore =
|
||||
NimBLE-Arduino
|
||||
Micro-RTSP
|
||||
ESP32-HomeKit
|
||||
|
||||
|
||||
; *** EXPERIMENTAL Tasmota version for ESP32-C3
|
||||
[env:tasmota32c3]
|
||||
extends = env:tasmota32_base
|
||||
board = esp32c3
|
||||
platform = https://github.com/Jason2866/platform-espressif32.git#feature/arduino-c3
|
||||
platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/v.2.0.0.pre/framework-arduinoespressif32-master-cf457d412.tar.gz
|
||||
tasmota/toolchain-riscv32
|
||||
platformio/tool-mklittlefs @ ~1.203.200522
|
||||
build_unflags = ${esp32_defaults.build_unflags} -mtarget-align
|
||||
build_flags = ${esp32_defaults.build_flags} -DFIRMWARE_LITE
|
||||
-I$PROJECT_DIR/include
|
||||
-include "fix_esp32c3.h"
|
||||
;-DESP32_STAGE=true
|
||||
lib_extra_dirs = lib/libesp32
|
||||
lib_ignore =
|
||||
NimBLE-Arduino
|
||||
Micro-RTSP
|
||||
|
||||
; *** EXPERIMENTAL Tasmota version for ESP32 IDF4.4.
|
||||
[env:tasmota32idf4]
|
||||
extends = env:tasmota32_base
|
||||
platform = https://github.com/Jason2866/platform-espressif32.git#feature/arduino-idf-v4.4
|
||||
platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/v.2.0.0.pre/framework-arduinoespressif32-master-cf457d412.tar.gz
|
||||
platformio/tool-mklittlefs @ ~1.203.200522
|
||||
build_unflags = ${esp32_defaults.build_unflags}
|
||||
build_flags = ${esp32_defaults.build_flags}
|
||||
;-DESP32_STAGE=true
|
||||
|
||||
; *** Debug version used for PlatformIO Home Project Inspection
|
||||
[env:tasmota-debug]
|
||||
build_type = debug
|
||||
build_unflags = ${esp_defaults.build_unflags}
|
||||
build_flags = ${esp82xx_defaults.build_flags}
|
||||
; -Wstack-usage=300
|
||||
|
||||
[env:tasmota32-debug]
|
||||
extends = env:tasmota32_base
|
||||
build_type = debug
|
||||
build_unflags = ${esp32_defaults.build_unflags}
|
||||
build_flags = ${esp32_defaults.build_flags}
|
||||
; -Wstack-usage=300
|
||||
|
|
|
@ -0,0 +1,63 @@
|
|||
[env:tasmota-zigbee]
|
||||
board = esp8266_4M2M
|
||||
build_flags = ${common.build_flags}
|
||||
-DUSE_ZIGBEE
|
||||
-DUSE_UFILESYS
|
||||
|
||||
; *** EXPERIMENTAL Tasmota version for ESP32-S2
|
||||
[env:tasmota32s2]
|
||||
extends = env:tasmota32_base
|
||||
board = esp32s2
|
||||
board_build.flash_mode = qio
|
||||
platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/v.2.0.0.pre/framework-arduinoespressif32-master-cf457d412.tar.gz
|
||||
platformio/tool-mklittlefs @ ~1.203.200522
|
||||
platformio/tool-esptoolpy @ ~1.30000.0
|
||||
build_unflags = ${esp32_defaults.build_unflags}
|
||||
build_flags = ${common32.build_flags} -DFIRMWARE_LITE
|
||||
lib_extra_dirs = lib/libesp32
|
||||
lib_ignore =
|
||||
NimBLE-Arduino
|
||||
Micro-RTSP
|
||||
ESP32-HomeKit
|
||||
|
||||
; *** EXPERIMENTAL Tasmota version for ESP32-C3
|
||||
[env:tasmota32c3]
|
||||
extends = env:tasmota32_base
|
||||
board = esp32c3
|
||||
platform = https://github.com/Jason2866/platform-espressif32.git#feature/arduino-c3
|
||||
platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/v.2.0.0.pre/framework-arduinoespressif32-master-cf457d412.tar.gz
|
||||
tasmota/toolchain-riscv32
|
||||
platformio/tool-mklittlefs @ ~1.203.200522
|
||||
build_unflags = ${esp32_defaults.build_unflags} -mtarget-align
|
||||
build_flags = ${esp32_defaults.build_flags} -DFIRMWARE_LITE
|
||||
-I$PROJECT_DIR/include
|
||||
-include "fix_esp32c3.h"
|
||||
;-DESP32_STAGE=true
|
||||
lib_extra_dirs = lib/libesp32
|
||||
lib_ignore =
|
||||
NimBLE-Arduino
|
||||
Micro-RTSP
|
||||
|
||||
; *** EXPERIMENTAL Tasmota version for ESP32 IDF4.4.
|
||||
[env:tasmota32idf4]
|
||||
extends = env:tasmota32_base
|
||||
platform = https://github.com/Jason2866/platform-espressif32.git#feature/arduino-idf-v4.4
|
||||
platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/v.2.0.0.pre/framework-arduinoespressif32-master-cf457d412.tar.gz
|
||||
platformio/tool-mklittlefs @ ~1.203.200522
|
||||
build_unflags = ${esp32_defaults.build_unflags}
|
||||
build_flags = ${esp32_defaults.build_flags}
|
||||
;-DESP32_STAGE=true
|
||||
|
||||
; *** Debug version used for PlatformIO Home Project Inspection
|
||||
[env:tasmota-debug]
|
||||
build_type = debug
|
||||
build_unflags = ${esp_defaults.build_unflags}
|
||||
build_flags = ${esp82xx_defaults.build_flags}
|
||||
; -Wstack-usage=300
|
||||
|
||||
[env:tasmota32-debug]
|
||||
extends = env:tasmota32_base
|
||||
build_type = debug
|
||||
build_unflags = ${esp32_defaults.build_unflags}
|
||||
build_flags = ${esp32_defaults.build_flags}
|
||||
; -Wstack-usage=300
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
:H,ST7789,240,240,16,SPI,1,*,*,*,*,*,*,*,40
|
||||
:S,2,1,3,0,80,30
|
||||
:I
|
||||
|
@ -17,6 +16,6 @@
|
|||
:1,A0,50,00,01
|
||||
:2,00,00,00,02
|
||||
:3,60,00,00,03
|
||||
i:20,21
|
||||
:i,20,21
|
||||
:TI2,38,32,23
|
||||
#
|
||||
|
|
|
@ -345,6 +345,7 @@
|
|||
#define D_JSON_GPIO "GPIO"
|
||||
#define D_JSON_FLAG "FLAG"
|
||||
#define D_JSON_BASE "BASE"
|
||||
#define D_JSON_CMND "CMND"
|
||||
#define D_CMND_TEMPOFFSET "TempOffset"
|
||||
#define D_CMND_HUMOFFSET "HumOffset"
|
||||
#define D_CMND_GLOBAL_TEMP "GlobalTemp"
|
||||
|
|
|
@ -303,7 +303,7 @@
|
|||
#define D_CHECK_CREDENTIALS "Bitte SSID/Passwort überprüfen"
|
||||
#define D_SUCCESSFUL_WIFI_CONNECTION "mit Wifi verbunden"
|
||||
#define D_NOW_YOU_CAN_CLOSE_THIS_WINDOW "das Fenster kann geschlossen werden"
|
||||
#define D_REDIRECTING_TO_NEW_IP "Umleitung zur neuen Geräte IP-Addresse"
|
||||
#define D_REDIRECTING_TO_NEW_IP "Umleitung zur neuen Geräte IP-Adresse"
|
||||
|
||||
#define D_MQTT_PARAMETERS "MQTT-Einstellungen"
|
||||
#define D_CLIENT "client"
|
||||
|
@ -495,7 +495,7 @@
|
|||
#define D_ZIGBEE_UNSUPPORTED_ATTRIBUTE_TYPE "Nicht unterstützter Attribut Typ"
|
||||
#define D_ZIGBEE_JSON_REQUIRED "Konfiguration muss JSON basiert sein"
|
||||
#define D_ZIGBEE_RESET_1_OR_2 "1 oder 2 für Reset"
|
||||
#define D_ZIGBEE_EEPROM_FOUND_AT_ADDRESS "ZBBridge EEPROM gefunden auf Addresse"
|
||||
#define D_ZIGBEE_EEPROM_FOUND_AT_ADDRESS "ZBBridge EEPROM gefunden auf Adresse"
|
||||
#define D_ZIGBEE_RANDOMIZING_ZBCONFIG "Zufällige Zigbee Parameter erstellt, Überprüfung mit 'ZbConfig'"
|
||||
|
||||
// xdrv_03_energy.ino
|
||||
|
@ -869,7 +869,7 @@
|
|||
#define D_UNIT_WATTHOUR "Wh"
|
||||
#define D_UNIT_WATT_METER_QUADRAT "W/m²"
|
||||
|
||||
#define D_NEW_ADDRESS "Neue Addresse"
|
||||
#define D_NEW_ADDRESS "Neue Adresse"
|
||||
#define D_OUT_OF_RANGE "Außerhalb Bereich"
|
||||
#define D_SENSOR_DETECTED "erkannt"
|
||||
|
||||
|
|
|
@ -496,7 +496,7 @@
|
|||
#define D_ZIGBEE_JSON_REQUIRED "Configurazione richiede oggetti JSON"
|
||||
#define D_ZIGBEE_RESET_1_OR_2 "1 o 2 per ripristino"
|
||||
#define D_ZIGBEE_EEPROM_FOUND_AT_ADDRESS "Trovata EEPROM ZBBridge all'indirizzo"
|
||||
#define D_ZIGBEE_RANDOMIZING_ZBCONFIG "Randomizzazione parametri Zigbee, controlla con "ZbConfig""
|
||||
#define D_ZIGBEE_RANDOMIZING_ZBCONFIG "Randomizzazione parametri Zigbee, controlla con \"ZbConfig\""
|
||||
|
||||
// xdrv_03_energy.ino
|
||||
#define D_ENERGY_TODAY "Energia - oggi"
|
||||
|
|
|
@ -0,0 +1,95 @@
|
|||
Copyright (c) 2017, keshikan (http://www.keshikan.net),
|
||||
with Reserved Font Name "DSEG".
|
||||
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
http://scripts.sil.org/OFL
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue