Compare commits
85 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
72e0c17ebf | ||
|
|
a1cfbf8f68 | ||
|
|
4c29cbabd5 | ||
|
|
9a9a98957d | ||
|
|
9961411435 | ||
|
|
8d84a51dc6 | ||
|
|
53eb92c262 | ||
|
|
16db0c7c0b | ||
|
|
f945360437 | ||
|
|
07b692e330 | ||
|
|
6d3a52e32b | ||
|
|
48b9097c2c | ||
|
|
47b0d287bb | ||
|
|
5aa30f2b05 | ||
|
|
6dfab0ae3c | ||
|
|
82fdd74be7 | ||
|
|
ccddb1ebdc | ||
|
|
f13b7be3d9 | ||
|
|
c2a8b432d8 | ||
|
|
bd19d3549b | ||
|
|
00b8115e7c | ||
|
|
e2613d2f31 | ||
|
|
f34fb53119 | ||
|
|
8f32267340 | ||
|
|
52a13dae27 | ||
|
|
c2d9631efd | ||
|
|
30b632fc19 | ||
|
|
c3406112cd | ||
|
|
822c3da3ba | ||
|
|
cc3988be24 | ||
|
|
bf1fc1c157 | ||
|
|
95ccb528e1 | ||
|
|
a0eb5b5d06 | ||
|
|
7ae7ecbd0b | ||
|
|
ca35772db9 | ||
|
|
13bce53249 | ||
|
|
4dce812cf9 | ||
|
|
5ad124f39d | ||
|
|
bee384defd | ||
|
|
7a654caf2a | ||
|
|
47929e9ee0 | ||
|
|
e33b900cff | ||
|
|
6d7fc2f689 | ||
|
|
1662a8bbc0 | ||
|
|
b22822f229 | ||
|
|
509e903800 | ||
|
|
128ecb425d | ||
|
|
092f195182 | ||
|
|
44b849ae24 | ||
|
|
284de30bb8 | ||
|
|
3fade684d5 | ||
|
|
d5ded11050 | ||
|
|
b2357ec8f6 | ||
|
|
4042e616da | ||
|
|
d72a207b36 | ||
|
|
e052cd05bb | ||
|
|
6000fa47f7 | ||
|
|
d5b6ef368a | ||
|
|
8bb26eb39c | ||
|
|
e80610d6fd | ||
|
|
882bd68036 | ||
|
|
7743aee1f5 | ||
|
|
a3990adb39 | ||
|
|
8d9cbab79e | ||
|
|
26c95dfad6 | ||
|
|
9e6783c1d5 | ||
|
|
ac769c109a | ||
|
|
e0f9809693 | ||
|
|
63cf8aa437 | ||
|
|
b29c5a9602 | ||
|
|
472b6ceb77 | ||
|
|
19fb0deb2f | ||
|
|
bc7d106c9f | ||
|
|
63f777d553 | ||
|
|
73bedf3981 | ||
|
|
6fe01721e7 | ||
|
|
d6f059cc43 | ||
|
|
ca02f7606b | ||
|
|
2fcccbc310 | ||
|
|
5e2d696260 | ||
|
|
d60244c0da | ||
|
|
d72b27543b | ||
|
|
dfe96c3eca | ||
|
|
994be53ae4 | ||
|
|
5b684b6c75 |
6
.github/workflows/push.yml
vendored
6
.github/workflows/push.yml
vendored
@@ -19,7 +19,7 @@ jobs:
|
||||
run: chmod +x setup.sh && chmod +x source/build.sh && sudo mkdir -p /build/cache && sudo chmod -R 777 /build
|
||||
|
||||
- name: Cached compiler source files
|
||||
uses: actions/cache@v2.1.6
|
||||
uses: actions/cache@v2.1.7
|
||||
env:
|
||||
cache-name: cache-compilers
|
||||
with:
|
||||
@@ -66,7 +66,7 @@ jobs:
|
||||
run: chmod +x setup.sh && chmod +x source/build.sh && sudo mkdir -p /build/cache && sudo chmod -R 777 /build
|
||||
|
||||
- name: Cached compiler source files
|
||||
uses: actions/cache@v2.1.6
|
||||
uses: actions/cache@v2.1.7
|
||||
env:
|
||||
cache-name: cache-compilers
|
||||
with:
|
||||
@@ -130,7 +130,7 @@ jobs:
|
||||
run: chmod +x setup.sh && chmod +x source/build.sh && sudo mkdir -p /build/cache && sudo chmod -R 777 /build
|
||||
|
||||
- name: Cached compiler source files
|
||||
uses: actions/cache@v2.1.6
|
||||
uses: actions/cache@v2.1.7
|
||||
env:
|
||||
cache-name: cache-compilers
|
||||
with:
|
||||
|
||||
@@ -1,30 +1,86 @@
|
||||
# Development
|
||||
|
||||
Building this software can be performed two ways, using the STMCubeIDE or using command line tools.
|
||||
Building this software can be performed two ways: using the STM32CubeIDE or using command line tools.
|
||||
|
||||
## STM Cube IDE
|
||||
## STM32CubeIDE
|
||||
|
||||
The easiest way to start working using the STM Cube IDE is to create a new project for the STM32F103RCTx.
|
||||
Then once this is created remove the auto-generated source code.
|
||||
Next drag the contents of the `source` folder into the project and choose to link to files.
|
||||
You will need to update the build settings for include paths & point to the new `.ld` linker file
|
||||
The easiest way to start working with the STM32CubeIDE is to create a new project for the STM32F103RCTx.
|
||||
Once this is created, remove the auto-generated source code.
|
||||
Next, drag the contents of the `source` folder into the project and choose to link to files.
|
||||
You will need to update the build settings for include paths and point to the new `.ld` linker file.
|
||||
|
||||
## Developing with command line tools & building a release
|
||||
## Command line tools and building a release
|
||||
|
||||
In the `source` folder there is a makefile that can be used to build the repository using command line tools.
|
||||
when running the `make` command, specify which model of the device & the language you would like to use.
|
||||
In the `source` folder there is a `Makefile` that can be used to build the repository using command line tools.
|
||||
When running the `make` command, specify which model of the device and the language(s) you would like to use.
|
||||
|
||||
`make -j8 lang=EN model=TS80`
|
||||
### macOS
|
||||
|
||||
To build a release instead, run the build.sh script. This will update translations and also build every language for both TS100 and TS80 models.
|
||||
Use the following steps to set up a build environment for IronOS on the command line (in Terminal).
|
||||
|
||||
1. [Follow steps 1 – 3 here to install the toolchain](https://github.com/glegrain/STM32-with-macOS#0---installing-the-toolchain) needed to compile for STM32 microcontrollers.
|
||||
2. Install `python`:
|
||||
```
|
||||
brew install python
|
||||
```
|
||||
3. (Optional) Update `pip` so it doesn't warn you about being out-of-date:
|
||||
```
|
||||
python3 -m pip install --upgrade pip
|
||||
```
|
||||
4. Change to the `source` directory:
|
||||
```
|
||||
cd source
|
||||
```
|
||||
5. Create a Python virtual environment for IronOS named `ironos-venv` to keep your Python installation clean:
|
||||
```
|
||||
python3 -m venv ironos-venv
|
||||
```
|
||||
6. Activate the Python virtual environment:
|
||||
```
|
||||
source ironos-venv/bin/activate
|
||||
```
|
||||
7. Install the dependencies required to run `make-translation.py`:
|
||||
```
|
||||
pip install bdflib
|
||||
```
|
||||
8. All done! See some examples below for how you can build your own IronOS.
|
||||
|
||||
### Examples
|
||||
|
||||
To build a single language Simplified Chinese firmware for the TS80P with 8 simultaneous jobs:
|
||||
```
|
||||
make -j8 model=TS80P firmware-ZH_CN
|
||||
```
|
||||
|
||||
To build a European multi-language firmware for the Pinecil with as many simultaneous jobs as there are logical processors on Linux:
|
||||
```
|
||||
make -j$(nproc) model=Pinecil firmware-multi_European
|
||||
```
|
||||
|
||||
To build a Cyrillic compressed multi-language firmware for the Pinecil with as many simultaneous jobs as there are logical processors on macOS:
|
||||
```
|
||||
make -j$(sysctl -n hw.logicalcpu) model=Pinecil firmware-multi_compressed_Bulgarian+Russian+Serbian+Ukrainian
|
||||
```
|
||||
|
||||
To build a custom multi-language firmware including English and Simplified Chinese for the TS80:
|
||||
```
|
||||
make -j8 model=TS80 custom_multi_langs="EN ZH_CN" firmware-multi_Custom
|
||||
```
|
||||
|
||||
To build a custom compressed multi-language firmware including German, Spanish, and French for the TS100 (note if `model` is unspecified, it will default to `TS100`):
|
||||
```
|
||||
make -j8 custom_multi_langs="DE ES FR" firmware-multi_compressed_Custom
|
||||
```
|
||||
|
||||
To build a release instead, run the `build.sh` script. This will update translations and also build every language for all device models. For macOS users, replace `make -j$(nproc)` in the script with `make -j$(sysctl -n hw.logicalcpu)` before running.
|
||||
|
||||
## Updating languages
|
||||
|
||||
To update the language translation files & associated font map, execute the `make_translation.py` code from the translations directory.
|
||||
To update the language translation files and their associated font maps, execute the `make_translation.py` code from the `Translations` directory.
|
||||
|
||||
## Building Pinecil
|
||||
|
||||
I highly recommend using the command line tools and using docker to run the compiler.
|
||||
It's a bit more fussy on setup than the STM tooling and this is by far the easiest way.
|
||||
If you _need_ an IDE I have used [Nuclei's IDE](https://nucleisys.com/download.php)
|
||||
And follow same idea as the STM Cube IDE notes above.
|
||||
I highly recommend using the command line tools and using Docker to run the compiler.
|
||||
It's a bit more fussy on setup than the STM tooling, and this is by far the easiest way.
|
||||
If you _need_ an IDE I have used [Nuclei's IDE](https://nucleisys.com/download.php).
|
||||
Follow the same idea as the STM Cube IDE notes above.
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
#!/bin/bash
|
||||
#!/bin/sh
|
||||
# TS100 Flasher for Linux by Alex Wigen (https://github.com/awigen)
|
||||
|
||||
DIR_TMP="/tmp/ts100"
|
||||
|
||||
function usage() {
|
||||
usage() {
|
||||
echo
|
||||
echo "#################"
|
||||
echo "# TS100 Flasher #"
|
||||
@@ -18,36 +18,32 @@ function usage() {
|
||||
}
|
||||
|
||||
GAUTOMOUNT=0
|
||||
function disable_gautomount {
|
||||
GSETTINGS=$(which gsettings)
|
||||
if [ $? -ne 0 ]; then
|
||||
disable_gautomount() {
|
||||
if ! GSETTINGS=$(which gsettings); then
|
||||
return 1
|
||||
fi
|
||||
gsettings get org.gnome.desktop.media-handling automount | grep true > /dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
if ! gsettings get org.gnome.desktop.media-handling automount | grep true > /dev/null; then
|
||||
GAUTOMOUNT=1
|
||||
gsettings set org.gnome.desktop.media-handling automount false
|
||||
fi
|
||||
}
|
||||
|
||||
function enable_gautomount {
|
||||
enable_gautomount() {
|
||||
if [ "$GAUTOMOUNT" -ne 0 ]; then
|
||||
gsettings set org.gnome.desktop.media-handling automount true
|
||||
fi
|
||||
}
|
||||
|
||||
function is_attached {
|
||||
output=$(lsblk -b --raw --output NAME,MODEL | grep 'DFU.*Disk')
|
||||
if [ $? -ne 0 ]; then
|
||||
is_attached() {
|
||||
if ! output=$(lsblk -b --raw --output NAME,MODEL | grep 'DFU.*Disk'); then
|
||||
return 1
|
||||
fi
|
||||
DEVICE=$(echo $output | awk '{print "/dev/"$1}')
|
||||
DEVICE=$(echo "$output" | awk '{print "/dev/"$1}')
|
||||
}
|
||||
|
||||
instructions="not printed"
|
||||
function wait_for_ts100 {
|
||||
is_attached
|
||||
while [ $? -ne 0 ]; do
|
||||
wait_for_ts100() {
|
||||
while ! is_attached; do
|
||||
if [ "$instructions" = "not printed" ]; then
|
||||
echo
|
||||
echo "#####################################################"
|
||||
@@ -60,29 +56,27 @@ function wait_for_ts100 {
|
||||
instructions="printed"
|
||||
fi
|
||||
sleep 0.1
|
||||
is_attached
|
||||
done
|
||||
}
|
||||
|
||||
function mount_ts100 {
|
||||
mount_ts100() {
|
||||
mkdir -p "$DIR_TMP"
|
||||
sudo mount -t msdos -o uid=$UID "$DEVICE" "$DIR_TMP"
|
||||
if [ $? -ne 0 ]; then
|
||||
user="${UID:-$(id -u)}"
|
||||
if ! sudo mount -t msdos -o uid=$user "$DEVICE" "$DIR_TMP"; then
|
||||
echo "Failed to mount $DEVICE on $DIR_TMP"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
function umount_ts100 {
|
||||
mountpoint "$DIR_TMP" > /dev/null && sudo umount "$DIR_TMP"
|
||||
if [ $? -ne 0 ]; then
|
||||
umount_ts100() {
|
||||
if ! mountpoint "$DIR_TMP" > /dev/null && sudo umount "$DIR_TMP"; then
|
||||
echo "Failed to unmount $DIR_TMP"
|
||||
exit 1
|
||||
fi
|
||||
rmdir "$DIR_TMP"
|
||||
}
|
||||
|
||||
function cleanup {
|
||||
cleanup() {
|
||||
enable_gautomount
|
||||
if [ -d "$DIR_TMP" ]; then
|
||||
umount_ts100
|
||||
@@ -102,7 +96,7 @@ if [ ! -f "$1" ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ $(head -c1 "$1") != ":" ] || [ $(tail -n1 "$1" | head -c1) != ":" ]; then
|
||||
if [ "$(head -c1 "$1")" != ":" ] || [ "$(tail -n1 "$1" | head -c1)" != ":" ]; then
|
||||
echo "'$1' doesn't look like a valid HEX file. Please provide a HEX file to flash"
|
||||
usage
|
||||
exit 1
|
||||
|
||||
@@ -308,6 +308,7 @@
|
||||
<select v-model="fontToAdd">
|
||||
<!-- <option value="ascii_basic">ascii_basic: ASCII Basic</option> -->
|
||||
<option value="latin_extended">latin_extended: Latin Extended</option>
|
||||
<option value="greek">greek: Greek Glyphs</option>
|
||||
<option value="cyrillic">cyrillic: Cyrillic Glyphs</option>
|
||||
<option value="cjk">cjk: Chinese/Japanese/Korean</option>
|
||||
</select>
|
||||
|
||||
@@ -326,6 +326,70 @@ def get_font_map_latin_extended() -> Dict[str, bytes]:
|
||||
return font
|
||||
|
||||
|
||||
def get_font_map_greek() -> Dict[str, bytes]:
|
||||
font = {
|
||||
# U+0370..U+03FF Greek and Coptic
|
||||
"Έ": b"\x06\xFC\xFC\x8C\x8C\x8C\x8C\x8C\x8C\x0C\x0C\x00\x00\x3F\x3F\x31\x31\x31\x31\x31\x31\x30\x30\x00",
|
||||
"Α": b"\x00\x00\x00\xE0\xFC\x1F\x1F\xFC\xE0\x00\x00\x00\x00\x38\x3F\x07\x06\x06\x06\x06\x07\x3F\x38\x00",
|
||||
"Β": b"\x00\xFF\xFF\xC3\xC3\xC3\xC3\xE7\xFE\xBC\x00\x00\x00\x3F\x3F\x30\x30\x30\x30\x30\x39\x1F\x0F\x00",
|
||||
"Γ": b"\x00\xFF\xFF\x03\x03\x03\x03\x03\x03\x03\x03\x00\x00\x3F\x3F\x00\x00\x00\x00\x00\x00\x00\x00\x00",
|
||||
"Δ": b"\x00\x00\x00\xE0\xFC\x1F\x1F\xFC\xE0\x00\x00\x00\x00\x38\x3F\x37\x30\x30\x30\x30\x37\x3F\x38\x00",
|
||||
"Ε": b"\x00\xFF\xFF\xC3\xC3\xC3\xC3\xC3\xC3\x03\x03\x00\x00\x3F\x3F\x30\x30\x30\x30\x30\x30\x30\x30\x00",
|
||||
"Ζ": b"\x00\x03\x03\x03\x03\xC3\xE3\x33\x1F\x0F\x03\x00\x00\x30\x3C\x3E\x33\x31\x30\x30\x30\x30\x30\x00",
|
||||
"Η": b"\x00\xFF\xFF\xC0\xC0\xC0\xC0\xC0\xC0\xFF\xFF\x00\x00\x3F\x3F\x00\x00\x00\x00\x00\x00\x3F\x3F\x00",
|
||||
"Θ": b"\x00\xF0\xFC\x0E\xC7\xC3\xC3\xC7\x0E\xFC\xF0\x00\x00\x03\x0F\x1C\x38\x30\x30\x38\x1C\x0F\x03\x00",
|
||||
"Ι": b"\x00\x00\x00\x03\x03\xFF\xFF\x03\x03\x00\x00\x00\x00\x00\x00\x30\x30\x3F\x3F\x30\x30\x00\x00\x00",
|
||||
"Κ": b"\x00\xFF\xFF\xC0\xE0\xF0\x38\x1C\x0E\x07\x03\x00\x00\x3F\x3F\x00\x01\x03\x07\x0E\x1C\x38\x30\x00",
|
||||
"Λ": b"\x00\x00\x00\xE0\xFC\x1F\x1F\xFC\xE0\x00\x00\x00\x00\x38\x3F\x07\x00\x00\x00\x00\x07\x3F\x38\x00",
|
||||
"Μ": b"\x00\xFF\xFF\x1E\x78\xE0\xE0\x78\x1E\xFF\xFF\x00\x00\x3F\x3F\x00\x00\x01\x01\x00\x00\x3F\x3F\x00",
|
||||
"Ν": b"\x00\xFF\xFF\x0E\x38\xF0\xC0\x00\x00\xFF\xFF\x00\x00\x3F\x3F\x00\x00\x00\x03\x07\x1C\x3F\x3F\x00",
|
||||
"Ξ": b"\x00\x03\x03\xC3\xC3\xC3\xC3\xC3\xC3\x03\x03\x00\x00\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x00",
|
||||
"Ο": b"\x00\xF0\xFC\x0E\x07\x03\x03\x07\x0E\xFC\xF0\x00\x00\x03\x0F\x1C\x38\x30\x30\x38\x1C\x0F\x03\x00",
|
||||
"Π": b"\x00\xFF\xFF\x03\x03\x03\x03\x03\x03\xFF\xFF\x00\x00\x3F\x3F\x00\x00\x00\x00\x00\x00\x3F\x3F\x00",
|
||||
"Ρ": b"\x00\xFF\xFF\x83\x83\x83\x83\x83\xC7\xFE\x7C\x00\x00\x3F\x3F\x01\x01\x01\x01\x01\x01\x00\x00\x00",
|
||||
"Σ": b"\x00\x03\x0F\x1F\x33\xE3\xE3\x03\x03\x03\x03\x00\x00\x30\x3C\x3E\x33\x31\x30\x30\x30\x30\x30\x00",
|
||||
"Τ": b"\x00\x03\x03\x03\x03\xFF\xFF\x03\x03\x03\x03\x00\x00\x00\x00\x00\x00\x3F\x3F\x00\x00\x00\x00\x00",
|
||||
"Υ": b"\x00\x03\x0F\x3C\xF0\xC0\xC0\xF0\x3C\x0F\x03\x00\x00\x00\x00\x00\x00\x3F\x3F\x00\x00\x00\x00\x00",
|
||||
"Φ": b"\x00\xF8\xFC\x0E\x06\xFF\xFF\x06\x0E\xFC\xF8\x00\x00\x03\x07\x0E\x0C\x3F\x3F\x0C\x0E\x07\x03\x00",
|
||||
"Χ": b"\x00\x03\x0F\x3C\xF0\xC0\xC0\xF0\x3C\x0F\x03\x00\x00\x30\x3C\x0F\x03\x00\x00\x03\x0F\x3C\x30\x00",
|
||||
"Ψ": b"\x00\x3F\x7F\xE0\xC0\xFF\xFF\xC0\xE0\x7F\x3F\x00\x00\x00\x00\x00\x00\x3F\x3F\x00\x00\x00\x00\x00",
|
||||
"Ω": b"\x00\xF0\xFC\x0E\x07\x03\x03\x07\x0E\xFC\xF0\x00\x00\x63\x6F\x7C\x70\x00\x00\x70\x7C\x6F\x63\x00",
|
||||
"ά": b"\x00\x80\xC0\xE0\x60\x6C\x6E\x66\xC0\xE0\xE0\x00\x00\x0F\x1F\x38\x30\x30\x30\x30\x18\x3F\x3F\x20",
|
||||
"έ": b"\x00\xE0\xF0\x30\x30\x36\x37\x33\x30\x70\x60\x00\x00\x1D\x3F\x33\x33\x33\x33\x33\x33\x38\x18\x00",
|
||||
"ή": b"\x00\xE0\xE0\xC0\x60\x6C\x6E\xE6\xE0\xC0\x00\x00\x00\x1F\x1F\x00\x00\x00\x00\x00\x7F\x7F\x00\x00",
|
||||
"ί": b"\x00\x00\x00\xEC\xEE\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1F\x3F\x30\x30\x30\x00\x00\x00\x00",
|
||||
"α": b"\x00\x80\xC0\xE0\x60\x60\x60\x60\xC0\xE0\xE0\x00\x00\x0F\x1F\x38\x30\x30\x30\x30\x18\x3F\x3F\x20",
|
||||
"β": b"\x00\x00\xC0\xE0\x30\x10\x10\x30\xE0\xC0\x00\x00\x00\x00\xFF\xFF\x21\x21\x21\x33\x3F\x1E\x00\x00",
|
||||
"γ": b"\x00\x60\xE0\x80\x00\x00\x00\x00\x80\xE0\x60\x00\x00\x00\x01\x07\x1E\xF8\xF8\x1E\x07\x01\x00\x00",
|
||||
"δ": b"\x00\x83\xC7\xEF\x7F\x7B\x73\x63\xE3\xC3\x83\x00\x00\x0F\x1F\x38\x30\x30\x30\x30\x38\x1F\x0F\x00",
|
||||
"ε": b"\x00\xE0\xF0\x30\x30\x30\x30\x30\x30\x70\x60\x00\x00\x1D\x3F\x33\x33\x33\x33\x33\x33\x38\x18\x00",
|
||||
"ζ": b"\x00\x83\xC3\xE3\x63\x63\x63\x73\x3F\x1F\x00\x00\x00\x0F\x1F\x38\x30\x30\x30\xF0\xE0\x00\x00\x00",
|
||||
"η": b"\x00\xE0\xE0\xC0\x60\x60\x60\xE0\xE0\xC0\x00\x00\x00\x1F\x1F\x00\x00\x00\x00\x00\x7F\x7F\x00\x00",
|
||||
"θ": b"\x00\xF0\xF8\x1C\x8C\x8C\x8C\x8C\x1C\xF8\xF0\x00\x00\x0F\x1F\x38\x31\x31\x31\x31\x38\x1F\x0F\x00",
|
||||
"ι": b"\x00\x00\x00\xE0\xE0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1F\x3F\x30\x30\x30\x00\x00\x00\x00",
|
||||
"κ": b"\x00\x00\xC0\xC0\x00\x00\x80\xC0\xC0\x00\x00\x00\x00\x00\x3F\x3F\x06\x0F\x1F\x39\x30\x00\x00\x00",
|
||||
"λ": b"\x00\x00\x00\x00\xC0\xE0\xE0\xC0\x00\x00\x00\x00\x00\x30\x3C\x0F\x03\x00\x00\x03\x0F\x3C\x30\x00",
|
||||
"μ": b"\x00\xF0\xF0\x00\x00\x00\x00\x00\xF0\xF0\x00\x00\x00\xFF\xFF\x0E\x0C\x0C\x0C\x06\x0F\x0F\x00\x00",
|
||||
"ν": b"\x00\x60\xE0\x80\x00\x00\x00\x00\x80\xE0\x60\x00\x00\x00\x01\x07\x1E\x38\x38\x1E\x07\x01\x00\x00",
|
||||
"ξ": b"\x00\x3C\xFE\xE7\xC3\xC3\xC3\xC3\x00\x00\x00\x00\x00\x0F\x1F\x39\x30\x30\xF0\xE0\x00\x00\x00\x00",
|
||||
"ο": b"\x00\x80\xC0\xE0\x60\x60\x60\x60\xE0\xC0\x80\x00\x00\x0F\x1F\x38\x30\x30\x30\x30\x38\x1F\x0F\x00",
|
||||
"π": b"\x00\x60\xE0\xE0\x60\x60\x60\xE0\xE0\x60\x00\x00\x00\x00\x3F\x3F\x00\x00\x00\x3F\x3F\x30\x00\x00",
|
||||
"ρ": b"\x00\xE0\xE0\x60\x60\x60\x60\x60\xE0\xC0\x80\x00\x00\xFF\xFF\x0C\x18\x18\x18\x18\x1C\x0F\x07\x00",
|
||||
"ς": b"\x00\x80\xC0\xE0\x60\x60\x60\xE0\xC0\x80\x00\x00\x00\x0F\x1F\x38\x30\x30\xF0\xE0\x03\x03\x00\x00",
|
||||
"σ": b"\x00\x80\xC0\xE0\x60\x60\x60\xE0\xE0\xE0\x60\x00\x00\x0F\x1F\x38\x30\x30\x30\x38\x1F\x0F\x00\x00",
|
||||
"τ": b"\x00\x60\x60\xE0\xE0\x60\x60\x60\x00\x00\x00\x00\x00\x00\x00\x1F\x3F\x30\x30\x30\x00\x00\x00\x00",
|
||||
"υ": b"\x00\xE0\xE0\x00\x00\x00\x00\x00\xE0\xE0\x00\x00\x00\x0F\x1F\x38\x30\x30\x30\x38\x1F\x0F\x00\x00",
|
||||
"φ": b"\x00\xC0\xE0\x70\x30\xF8\xF8\x30\x70\xE0\xC0\x00\x00\x07\x0F\x1C\x18\x7F\x7F\x18\x1C\x0F\x07\x00",
|
||||
"χ": b"\x00\x70\xF0\xC0\x80\x00\x80\xC0\xF0\x70\x00\x00\x00\x70\x78\x1D\x0F\x07\x0F\x1D\x78\x70\x00\x00",
|
||||
"ψ": b"\x00\xE0\xE0\x00\x00\xE0\xE0\x00\x00\xE0\xE0\x00\x00\x07\x0F\x1C\x18\x7F\x7F\x18\x1C\x0F\x07\x00",
|
||||
"ω": b"\x00\xC0\xE0\x00\x00\x00\x00\x00\x00\xE0\xC0\x00\x00\x0F\x1F\x38\x38\x1E\x1E\x38\x38\x1F\x0F\x00",
|
||||
"ό": b"\x00\x80\xC0\xE0\x60\x6C\x6E\x66\xE0\xC0\x80\x00\x00\x0F\x1F\x38\x30\x30\x30\x30\x38\x1F\x0F\x00",
|
||||
"ύ": b"\x00\xE0\xE0\x00\x00\x0C\x0E\x06\xE0\xE0\x00\x00\x00\x0F\x1F\x38\x30\x30\x30\x38\x1F\x0F\x00\x00",
|
||||
"ώ": b"\x00\xC0\xE0\x00\x00\x18\x1C\x0C\x00\xE0\xC0\x00\x00\x0F\x1F\x38\x38\x1E\x1E\x38\x38\x1F\x0F\x00",
|
||||
}
|
||||
return font
|
||||
|
||||
|
||||
def get_font_map_cyrillic() -> Dict[str, bytes]:
|
||||
font = {
|
||||
# U+0400..U+04FF Cyrillic
|
||||
@@ -750,6 +814,70 @@ def get_small_font_map_latin_extended() -> Dict[str, bytes]:
|
||||
return font
|
||||
|
||||
|
||||
def get_small_font_map_greek() -> Dict[str, bytes]:
|
||||
font = {
|
||||
# U+0370..U+03FF Greek and Coptic
|
||||
"Έ": b"\x03\x7F\x49\x49\x49\x41",
|
||||
"Α": b"\x7e\x09\x09\x09\x7e\x00",
|
||||
"Β": b"\x7f\x49\x49\x49\x36\x00",
|
||||
"Γ": b"\x7f\x01\x01\x01\x01\x00",
|
||||
"Δ": b"\x70\x4C\x43\x4C\x70\x00",
|
||||
"Ε": b"\x7f\x49\x49\x49\x41\x00",
|
||||
"Ζ": b"\x61\x51\x49\x45\x43\x00",
|
||||
"Η": b"\x7f\x08\x08\x08\x7f\x00",
|
||||
"Θ": b"\x3E\x49\x49\x49\x3E\x00",
|
||||
"Ι": b"\x00\x41\x7f\x41\x00\x00",
|
||||
"Κ": b"\x7f\x08\x14\x22\x41\x00",
|
||||
"Λ": b"\x70\x0C\x03\x0C\x70\x00",
|
||||
"Μ": b"\x7f\x02\x0c\x02\x7f\x00",
|
||||
"Ν": b"\x7f\x04\x08\x10\x7f\x00",
|
||||
"Ξ": b"\x41\x49\x49\x49\x41\x00",
|
||||
"Ο": b"\x3e\x41\x41\x41\x3e\x00",
|
||||
"Π": b"\x7F\x01\x01\x01\x7F\x00",
|
||||
"Ρ": b"\x7f\x09\x09\x09\x06\x00",
|
||||
"Σ": b"\x63\x55\x49\x41\x41\x00",
|
||||
"Τ": b"\x01\x01\x7f\x01\x01\x00",
|
||||
"Υ": b"\x07\x08\x70\x08\x07\x00",
|
||||
"Φ": b"\x0c\x12\x7f\x12\x0c\x00",
|
||||
"Χ": b"\x63\x14\x08\x14\x63\x00",
|
||||
"Ψ": b"\x07\x08\x7F\x08\x07\x00",
|
||||
"Ω": b"\x5E\x61\x01\x61\x5E\x00",
|
||||
"ά": b"\x38\x45\x45\x38\x7C\x40",
|
||||
"έ": b"\x28\x55\x55\x44\x28\x00",
|
||||
"ή": b"\x04\x79\x05\x04\xF8\x00",
|
||||
"ί": b"\x04\x3D\x41\x40\x00\x00",
|
||||
"α": b"\x38\x44\x44\x38\x7C\x40",
|
||||
"β": b"\x7E\x21\x25\x25\x1A\x00",
|
||||
"γ": b"\x0C\x10\x60\x10\x0C\x00",
|
||||
"δ": b"\x30\x4B\x45\x49\x30\x00",
|
||||
"ε": b"\x28\x54\x54\x44\x28\x00",
|
||||
"ζ": b"\x00\x31\x49\x45\xC3\x00",
|
||||
"η": b"\x04\x78\x04\x04\xF8\x00",
|
||||
"θ": b"\x3E\x49\x49\x49\x3E\x00",
|
||||
"ι": b"\x04\x3C\x40\x40\x00\x00",
|
||||
"κ": b"\x00\x7C\x10\x28\x44\x00",
|
||||
"λ": b"\x70\x0A\x04\x08\x70\x00",
|
||||
"μ": b"\xFC\x10\x10\x3C\x20\x00",
|
||||
"ν": b"\x1C\x20\x40\x20\x1C\x00",
|
||||
"ξ": b"\x36\x49\x49\xC9\x00\x00",
|
||||
"ο": b"\x38\x44\x44\x44\x38\x00",
|
||||
"π": b"\x04\x7C\x04\x7C\x44\x00",
|
||||
"ρ": b"\xF8\x24\x24\x24\x18\x00",
|
||||
"ς": b"\x38\x44\x44\xC4\x04\x00",
|
||||
"σ": b"\x38\x44\x44\x44\x3C\x04",
|
||||
"τ": b"\x04\x3C\x44\x44\x00\x00",
|
||||
"υ": b"\x3C\x40\x40\x40\x3C\x00",
|
||||
"φ": b"\x18\x24\x7e\x24\x18\x00",
|
||||
"χ": b"\x44\x24\x38\x48\x44\x00",
|
||||
"ψ": b"\x1C\x20\x7C\x20\x1C\x00",
|
||||
"ω": b"\x38\x44\x30\x44\x38\x00",
|
||||
"ό": b"\x38\x45\x45\x44\x38\x00",
|
||||
"ύ": b"\x3C\x41\x41\x40\x3C\x00",
|
||||
"ώ": b"\x38\x45\x31\x44\x38\x00",
|
||||
}
|
||||
return font
|
||||
|
||||
|
||||
def get_small_font_map_cyrillic() -> Dict[str, bytes]:
|
||||
font = {
|
||||
# U+0400..U+04FF Cyrillic
|
||||
@@ -859,6 +987,7 @@ NAME_ASCII_BASIC: Final = "ascii_basic"
|
||||
NAME_LATIN_EXTENDED: Final = "latin_extended"
|
||||
NAME_CYRILLIC: Final = "cyrillic"
|
||||
NAME_CJK: Final = "cjk"
|
||||
NAME_GREEK: Final = "greek"
|
||||
|
||||
|
||||
def get_font_maps_for_name(
|
||||
@@ -870,5 +999,7 @@ def get_font_maps_for_name(
|
||||
return get_font_map_latin_extended(), get_small_font_map_latin_extended()
|
||||
elif font_name == NAME_CYRILLIC:
|
||||
return get_font_map_cyrillic(), get_small_font_map_cyrillic()
|
||||
elif font_name == NAME_GREEK:
|
||||
return get_font_map_greek(), get_small_font_map_greek()
|
||||
else:
|
||||
raise ValueError("Invalid font name")
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
213
Translations/translation_BE.json
Normal file
213
Translations/translation_BE.json
Normal file
@@ -0,0 +1,213 @@
|
||||
{
|
||||
"languageCode": "BE",
|
||||
"languageLocalName": "Беларуская",
|
||||
"fonts": ["ascii_basic", "latin_extended", "cyrillic"],
|
||||
"messages": {
|
||||
"SettingsCalibrationDone": "Каліброўка закончана!",
|
||||
"SettingsCalibrationWarning": "Перад тым, як працягнуць, каліласка, упэўнецеся, што джала мае комнатную тэмпературу!",
|
||||
"SettingsResetWarning": "Вы ўпэннены, што жадаеце зкінуць налады да першапачатковых значэнняў?",
|
||||
"UVLOWarningString": "НАПРУГА--",
|
||||
"UndervoltageString": "Нізкая напруга",
|
||||
"InputVoltageString": "Сілкаванне В: ",
|
||||
"WarningTipTempString": "Тэмп. джала: ",
|
||||
"BadTipString": "ДЖАЛА--",
|
||||
"SleepingSimpleString": "Zzzz",
|
||||
"SleepingAdvancedString": "Чаканне...",
|
||||
"WarningSimpleString": "ГОРАЧА!",
|
||||
"WarningAdvancedString": "!!! ГАРАЧАЕ !!!\n!!! ДЖАЛА !!!",
|
||||
"SleepingTipAdvancedString": "Джала:",
|
||||
"IdleTipString": "Джала:",
|
||||
"IdleSetString": " ->",
|
||||
"TipDisconnectedString": "ДЖАЛА АДЛУЧАНА",
|
||||
"SolderingAdvancedPowerPrompt": "Сілкаванне: ",
|
||||
"OffString": "Выкл.",
|
||||
"YourGainMessage": "Прырост:"
|
||||
},
|
||||
"messagesWarn": {
|
||||
"ResetOKMessage": "Скід OK",
|
||||
"SettingsResetMessage": ["Налады", "зкінуты!"],
|
||||
"NoAccelerometerMessage": ["Ня вызначаны", "акселерометр!"],
|
||||
"NoPowerDeliveryMessage": ["Няма USB-PD IC", "выяўлены!"],
|
||||
"LockingKeysString": "ЗАМКНУТЫ",
|
||||
"UnlockingKeysString": "АДЫМКНУТЫ",
|
||||
"WarningKeysLockedString": "!ЗАМКНУТЫ!",
|
||||
"WarningThermalRunaway": ["Цеплавы", "Уцякач"]
|
||||
},
|
||||
"characters": {
|
||||
"SettingRightChar": "П",
|
||||
"SettingLeftChar": "Л",
|
||||
"SettingAutoChar": "А",
|
||||
"SettingOffChar": "O",
|
||||
"SettingSlowChar": "М",
|
||||
"SettingMediumChar": "С",
|
||||
"SettingFastChar": "Х",
|
||||
"SettingStartNoneChar": "В",
|
||||
"SettingStartSolderingChar": "П",
|
||||
"SettingStartSleepChar": "Ч",
|
||||
"SettingStartSleepOffChar": "К",
|
||||
"SettingSensitivityOff": "А",
|
||||
"SettingSensitivityLow": "Н",
|
||||
"SettingSensitivityMedium": "С",
|
||||
"SettingSensitivityHigh": "В",
|
||||
"SettingLockDisableChar": "А",
|
||||
"SettingLockBoostChar": "Т",
|
||||
"SettingLockFullChar": "П",
|
||||
"SettingNAChar": "Н/Д"
|
||||
},
|
||||
"menuGroups": {
|
||||
"PowerMenu": {
|
||||
"text2": ["Налады", "сілкавання"],
|
||||
"desc": "Крыніца сілкавання і мінімальная напруга на ячэйку"
|
||||
},
|
||||
"SolderingMenu": {
|
||||
"text2": ["Налады", "пайкі"],
|
||||
"desc": "Налады пайкі"
|
||||
},
|
||||
"PowerSavingMenu": {
|
||||
"text2": ["Рэжымы", "сну"],
|
||||
"desc": "Налады рэжыму чакання"
|
||||
},
|
||||
"UIMenu": {
|
||||
"text2": ["Налады", "інтэрфейсу"],
|
||||
"desc": "Карыстальніцкія налады знешняга выгляду"
|
||||
},
|
||||
"AdvancedMenu": {
|
||||
"text2": ["Дадатковыя", "налады"],
|
||||
"desc": "Дадатковыя налады"
|
||||
}
|
||||
},
|
||||
"menuOptions": {
|
||||
"DCInCutoff": {
|
||||
"text2": ["Крыніца", "сілкавання"],
|
||||
"desc": "Крыніца сілкавання. Усталюе напругу адсечкі. (DC 10В) (S 3,3В на ячэйку, без абмежавання магутнасці)"
|
||||
},
|
||||
"SleepTemperature": {
|
||||
"text2": ["Тэмп.", "чакання"],
|
||||
"desc": "Тэмпература рэжыму чакання"
|
||||
},
|
||||
"SleepTimeout": {
|
||||
"text2": ["Таймаўт", "чакання"],
|
||||
"desc": "Час да пераходу ў рэжым чакання (Хвіліны | Секунды)"
|
||||
},
|
||||
"ShutdownTimeout": {
|
||||
"text2": ["Таймаут", "выключэння"],
|
||||
"desc": "Час да адключэння паяльніка (Хвіліны)"
|
||||
},
|
||||
"MotionSensitivity": {
|
||||
"text2": ["Адчувальнасць", "акселерометра"],
|
||||
"desc": "Адчувальнасць акселерометра (0=Выкл. | 1=Мін. | ... | 9=Макс.)"
|
||||
},
|
||||
"TemperatureUnit": {
|
||||
"text2": ["Адзінкі", "тэмпературы"],
|
||||
"desc": "Адзінкі вымярэння тэмпературы (C=Цэльcія | F=Фарэнгейта)"
|
||||
},
|
||||
"AdvancedIdle": {
|
||||
"text2": ["Падрабязны", "рэжым чакання"],
|
||||
"desc": "Адлюстроўваць дэталёвую инфармацыю паменьшаным шрыфтом на экране чакання"
|
||||
},
|
||||
"DisplayRotation": {
|
||||
"text2": ["Арыентацыя", "экрану"],
|
||||
"desc": "Арыентацыя экрану (П=Правая рука | Л=Левая рука | А=Аўта)"
|
||||
},
|
||||
"BoostTemperature": {
|
||||
"text2": ["t° турба", "рэжыму"],
|
||||
"desc": "Тэмпература джала ў турба-рэжыме"
|
||||
},
|
||||
"AutoStart": {
|
||||
"text2": ["Аўта", "старт"],
|
||||
"desc": "Рэжым, у якім запускаецца паяльнік пры падачы сілкавання (В=Выкл. | П=Пайка | Ч=Чаканне | К=Чаканне пры комн. тэмп.)"
|
||||
},
|
||||
"CooldownBlink": {
|
||||
"text2": ["Мігценне t°", "пры астуджэнні"],
|
||||
"desc": "Міргаць тэмпературай на экране астуджэння, пакуль джага яшчэ гарачае"
|
||||
},
|
||||
"TemperatureCalibration": {
|
||||
"text2": ["Каліброўка", "тэмпературы"],
|
||||
"desc": "Каліброўка тэрмадатчыка джала"
|
||||
},
|
||||
"SettingsReset": {
|
||||
"text2": ["Скід", "наладаў"],
|
||||
"desc": "Скід наладаў да першапачатковых значэнняў"
|
||||
},
|
||||
"VoltageCalibration": {
|
||||
"text2": ["Каліброўка", "напругі"],
|
||||
"desc": "Каліброўка ўваходнай напругі (падоўжаны націск для выхаду)"
|
||||
},
|
||||
"AdvancedSoldering": {
|
||||
"text2": ["Падрабязны", "экран пайкі"],
|
||||
"desc": "Паказваць дэталёвую інформацыю на экране пайкі"
|
||||
},
|
||||
"ScrollingSpeed": {
|
||||
"text2": ["Хуткацсь", "тексту"],
|
||||
"desc": "Хуткасць гартання тэксту (М=марудна | Х=хутка)"
|
||||
},
|
||||
"QCMaxVoltage": {
|
||||
"text2": ["Магутнасць", "сілкавання"],
|
||||
"desc": "Магутнасць выкарыстоўваемай крыніцы сілкавання"
|
||||
},
|
||||
"PDNegTimeout": {
|
||||
"text2": ["PD", "прыпынак"],
|
||||
"desc": "Час чакання ўзгаднення PD з крокам 100 мс для сумяшчальнасці з некаторымі зараднымі зараднымі прыладамі QC (0: адключана)"
|
||||
},
|
||||
"PowerLimit": {
|
||||
"text2": ["Межы", "магутнасці"],
|
||||
"desc": "Максімальная магутнасць, якую можа выкарыстоўваць паяльнік (Ватт)"
|
||||
},
|
||||
"ReverseButtonTempChange": {
|
||||
"text2": ["Інвертаваць", "кнопкі"],
|
||||
"desc": "Інвертаваць кнопкі вымярэння тэмпературы"
|
||||
},
|
||||
"TempChangeShortStep": {
|
||||
"text2": ["Крок тэмп.", "кар. нац."],
|
||||
"desc": "Крок вымярэння тэмпературы пры кароткім націску кнопак"
|
||||
},
|
||||
"TempChangeLongStep": {
|
||||
"text2": ["Крок тэмп.", "пад. нац."],
|
||||
"desc": "Крок вымярэння тэмпературы пры падоўжаным націску кнопак"
|
||||
},
|
||||
"PowerPulsePower": {
|
||||
"text2": ["Сіла імп.", "сілкав. Вт"],
|
||||
"desc": "Сіла імпульса щтрымливаючага ад сну павербанку ці іншай крыніцы сілкавання"
|
||||
},
|
||||
"HallEffSensitivity": {
|
||||
"text2": ["Эфект Хола", "адчувальнасць"],
|
||||
"desc": "Узровень адчувальнасці датчыка хола ў рэжыме сну (А=Адключана | Н=Нізкі | С=Сярэдні | В=Высокі)"
|
||||
},
|
||||
"LockingMode": {
|
||||
"text2": ["Дазволіць", "блок. кнопак"],
|
||||
"desc": "Пры рабоце падоўжаны націск дзьвух кнопак блакуе іх (А=Адключана | Т=Толькі турба | П=Поўная блакіроўка)"
|
||||
},
|
||||
"MinVolCell": {
|
||||
"text2": ["Мін.", "напр."],
|
||||
"desc": "Мінімальная дазволеная напруга на ячэйку (3S: 3 - 3,7V | 4S: 2,4 - 3,7V)"
|
||||
},
|
||||
"AnimLoop": {
|
||||
"text2": ["Зацыкленая", "анімацыя"],
|
||||
"desc": "Зацыкленая анімацыя гузікаў у галоўным меню"
|
||||
},
|
||||
"AnimSpeed": {
|
||||
"text2": ["Хуткасць", "анімацыі"],
|
||||
"desc": "Хуткасць анімацыі гузікаў у галоўным меню (Мілісекунды) (А=Адключана | Н=Нізкі | С=Сярэдні | В=Высокі)"
|
||||
},
|
||||
"PowerPulseWait": {
|
||||
"text2": ["Імпульс магутнасці", "час чакання"],
|
||||
"desc": "Час чакання перад запускам кожнага імпульсу няспання (x 2.5 с)"
|
||||
},
|
||||
"PowerPulseDuration": {
|
||||
"text2": ["Імпульс магутнасці", "працягласць"],
|
||||
"desc": "Працягласць імпульсу няспання (x 250 мс)"
|
||||
},
|
||||
"LanguageSwitch": {
|
||||
"text2": ["Мова:", " BY Беларуская"],
|
||||
"desc": ""
|
||||
},
|
||||
"Brightness": {
|
||||
"text2": ["Экран", "Яркасць"],
|
||||
"desc": "Адрэгулюйце кантраснасць / яркасць OLED-экрана"
|
||||
},
|
||||
"ColourInversion": {
|
||||
"text2": ["Экран", "Інвертаваць"],
|
||||
"desc": "Інвертаваць колеры OLED-экрана"
|
||||
}
|
||||
}
|
||||
}
|
||||
340
Translations/translation_EL.json
Normal file
340
Translations/translation_EL.json
Normal file
@@ -0,0 +1,340 @@
|
||||
{
|
||||
"languageCode": "EL",
|
||||
"languageLocalName": "Greek",
|
||||
"fonts": [
|
||||
"ascii_basic",
|
||||
"greek"
|
||||
],
|
||||
"tempUnitFahrenheit": true,
|
||||
"messages": {
|
||||
"SettingsCalibrationWarning": "Πριν προχωρήσετε, παρακαλώ σιγουρευτείτε πως η μύτη βρίσκεται σε θερμοκρασία δωματίου!",
|
||||
"SettingsResetWarning": "Σίγουρα θέλετε επαναφορά αρχικών ρυθμίσεων;",
|
||||
"UVLOWarningString": "Χαμηλ DC",
|
||||
"UndervoltageString": "Υπόταση",
|
||||
"InputVoltageString": "Είσοδος V: ",
|
||||
"SleepingSimpleString": "Zzzz",
|
||||
"SleepingAdvancedString": "Υπνος...",
|
||||
"SleepingTipAdvancedString": "Μύτη:",
|
||||
"IdleTipString": "Μύτη:",
|
||||
"IdleSetString": " Set:",
|
||||
"TipDisconnectedString": "ΧΩΡΙΣ ΜΥΤΗ",
|
||||
"SolderingAdvancedPowerPrompt": "Ενέργεια: ",
|
||||
"OffString": "Απ."
|
||||
},
|
||||
"messagesWarn": {
|
||||
"ResetOKMessage": "Επαν. OK",
|
||||
"SettingsResetMessage": [
|
||||
"Κάποιες ρυθμ.",
|
||||
"άλλαξαν"
|
||||
],
|
||||
"NoAccelerometerMessage": [
|
||||
"Δεν εντοπίστηκε",
|
||||
"επιταχυνσιόμετρο"
|
||||
],
|
||||
"NoPowerDeliveryMessage": [
|
||||
"Δεν εντοπίστηκε",
|
||||
"κύκλωμα USB-PD"
|
||||
],
|
||||
"LockingKeysString": "ΚΛΕΙΔ.",
|
||||
"UnlockingKeysString": "ΞΕΚΛΕΙΔ.",
|
||||
"WarningKeysLockedString": [
|
||||
"ΚΛΕΙΔΩΜΕΝΑ",
|
||||
"ΠΛΗΚΤΡΑ!"
|
||||
],
|
||||
"WarningThermalRunaway": [
|
||||
"Θερμική",
|
||||
"Φυγή"
|
||||
]
|
||||
},
|
||||
"characters": {
|
||||
"SettingRightChar": "R",
|
||||
"SettingLeftChar": "L",
|
||||
"SettingAutoChar": "Α",
|
||||
"SettingOffChar": "0",
|
||||
"SettingSlowChar": "Α",
|
||||
"SettingMediumChar": "Μ",
|
||||
"SettingFastChar": "Γ",
|
||||
"SettingStartNoneChar": "0",
|
||||
"SettingStartSolderingChar": "Κ",
|
||||
"SettingStartSleepChar": "Ζ",
|
||||
"SettingStartSleepOffChar": "Υ",
|
||||
"SettingSensitivityOff": "0",
|
||||
"SettingSensitivityLow": "Χ",
|
||||
"SettingSensitivityMedium": "Μ",
|
||||
"SettingSensitivityHigh": "Υ",
|
||||
"SettingLockDisableChar": "Α",
|
||||
"SettingLockBoostChar": "B",
|
||||
"SettingLockFullChar": "Π",
|
||||
"SettingNAChar": "Δ/Δ"
|
||||
},
|
||||
"menuGroups": {
|
||||
"PowerMenu": {
|
||||
"text2": [
|
||||
"Ρυθμίσεις",
|
||||
"ενέργειας"
|
||||
],
|
||||
"desc": "Ρυθμίσεις ενέργειας"
|
||||
},
|
||||
"SolderingMenu": {
|
||||
"text2": [
|
||||
"Ρυθμίσεις",
|
||||
"κόλλησης"
|
||||
],
|
||||
"desc": "Ρυθμίσεις κόλλησης"
|
||||
},
|
||||
"PowerSavingMenu": {
|
||||
"text2": [
|
||||
"Λειτουργία",
|
||||
"ύπνου"
|
||||
],
|
||||
"desc": "Ρυθμίσεις εξοικ. ενέργ."
|
||||
},
|
||||
"UIMenu": {
|
||||
"text2": [
|
||||
"Διεπαφή",
|
||||
"χρήστη"
|
||||
],
|
||||
"desc": "Ρυθμίσεις διεπαφής χρήστη"
|
||||
},
|
||||
"AdvancedMenu": {
|
||||
"text2": [
|
||||
"Προηγμένες",
|
||||
"ρυθμίσεις"
|
||||
],
|
||||
"desc": "Προηγμένες ρυθμίσεις"
|
||||
}
|
||||
},
|
||||
"menuOptions": {
|
||||
"DCInCutoff": {
|
||||
"text2": [
|
||||
"Πηγή",
|
||||
"ενέργειας"
|
||||
],
|
||||
"desc": "Πηγή ενέργειας. Oρισμός τάσης απενεργοποίησης. (DC 10V) (S 3.3V ανα κυψέλη, απενεργοποίηση ενεργειακού ορίου)"
|
||||
},
|
||||
"SleepTemperature": {
|
||||
"text2": [
|
||||
"Θερμοκρ.",
|
||||
"ύπνου"
|
||||
],
|
||||
"desc": "Θερμοκρασία μύτης σε λειτ. ύπνου"
|
||||
},
|
||||
"SleepTimeout": {
|
||||
"text2": [
|
||||
"Έναρξη",
|
||||
"ύπνου"
|
||||
],
|
||||
"desc": "Χρονικό διάστημα πρίν την ενεργοποίηση λειτουργίας ύπνου (Δ=δευτ. | Λ=λεπτά)"
|
||||
},
|
||||
"ShutdownTimeout": {
|
||||
"text2": [
|
||||
"Έναρξη",
|
||||
"απενεργ."
|
||||
],
|
||||
"desc": "Χρονικό διάστημα πρίν την απενεργοποίηση του κολλητηριού (Λ=λεπτά)"
|
||||
},
|
||||
"MotionSensitivity": {
|
||||
"text2": [
|
||||
"Ευαισθησία",
|
||||
"κίνησης"
|
||||
],
|
||||
"desc": "0=off | 1=λιγότερο ευαίσθητο | ... | 9=περισσότερο ευαίσθητο"
|
||||
},
|
||||
"TemperatureUnit": {
|
||||
"text2": [
|
||||
"Μονάδες",
|
||||
"θερμοκρασίας"
|
||||
],
|
||||
"desc": "C=Κελσίου | F=Φαρενάιτ"
|
||||
},
|
||||
"AdvancedIdle": {
|
||||
"text2": [
|
||||
"Λεπτομερής",
|
||||
"οθ. αδράνειας"
|
||||
],
|
||||
"desc": "Προβολή λεπτομερών πληροφοριών σε μικρότερη γραμματοσειρά στην οθόνη αδράνειας"
|
||||
},
|
||||
"DisplayRotation": {
|
||||
"text2": [
|
||||
"Διάταξη",
|
||||
"οθόνης"
|
||||
],
|
||||
"desc": "R=δεξιόχειρες | L=αριστερόχειρες | Α=αυτόματο"
|
||||
},
|
||||
"BoostTemperature": {
|
||||
"text2": [
|
||||
"Θερμοκ.",
|
||||
"boost"
|
||||
],
|
||||
"desc": "Θερμοκρασία στη \"λειτουργία boost\""
|
||||
},
|
||||
"AutoStart": {
|
||||
"text2": [
|
||||
"Ζέσταμα",
|
||||
"κατά την εν."
|
||||
],
|
||||
"desc": "0=off | Κ=θερμ. κόλλησης | Z=αναμονή σε θερμοκρασία ύπνου μέχρι την κίνηση | Υ=αναμονή χωρίς ζέσταμα μέχρι την κίνηση"
|
||||
},
|
||||
"CooldownBlink": {
|
||||
"text2": [
|
||||
"Αναβοσβήσιμο",
|
||||
"ψύξης"
|
||||
],
|
||||
"desc": "Αναβοσβήσιμο της ενδειξης θερμοκρασίας κατά την παύση θέρμανσης όταν η μύτη είναι ακόμα καυτή"
|
||||
},
|
||||
"TemperatureCalibration": {
|
||||
"text2": [
|
||||
"Βαθμονόμηση",
|
||||
"θερμοκρασίας;"
|
||||
],
|
||||
"desc": "Βαθμονόμηση αρχικής θερμοκρασίας μύτης"
|
||||
},
|
||||
"SettingsReset": {
|
||||
"text2": [
|
||||
"Επαναφορά",
|
||||
"εργ. ρυθμίσεων;"
|
||||
],
|
||||
"desc": "Επαναφορά στις προεπιλεγμένες ρυθμίσεις"
|
||||
},
|
||||
"VoltageCalibration": {
|
||||
"text2": [
|
||||
"Βαθμονόμηση",
|
||||
"τάσης εισόδου;"
|
||||
],
|
||||
"desc": "Έναρξη βαθμονόμησης τάσης εισόδου (κράτημα για έξοδο)"
|
||||
},
|
||||
"AdvancedSoldering": {
|
||||
"text2": [
|
||||
"Λεπτομερής",
|
||||
"οθ. κόλλησης"
|
||||
],
|
||||
"desc": "Προβολή λεπτομερών πληροφοριών σε μικρότερη γραμματοσειρά στην οθόνη κόλλησης"
|
||||
},
|
||||
"ScrollingSpeed": {
|
||||
"text2": [
|
||||
"Ταχύτητα",
|
||||
"κύλισης"
|
||||
],
|
||||
"desc": "Ταχύτητα κύλισης κειμένου (Α=αργά | Γ=γρήγορα)"
|
||||
},
|
||||
"QCMaxVoltage": {
|
||||
"text2": [
|
||||
"Τάση",
|
||||
"QC"
|
||||
],
|
||||
"desc": "Μέγιστη τάση QC που να ζητά το κολλητήρι από το τροφοδοτικό"
|
||||
},
|
||||
"PDNegTimeout": {
|
||||
"text2": [
|
||||
"χρονικό όριο",
|
||||
"PD"
|
||||
],
|
||||
"desc": "Χρονικό όριο διαπραγμάτευσης PD σε βήματα 100ms για συμβατότητα με κάποιους φορτιστές QC"
|
||||
},
|
||||
"PowerLimit": {
|
||||
"text2": [
|
||||
"Ενεργειακό",
|
||||
"όριο"
|
||||
],
|
||||
"desc": "Μέγιστη ενέργεια που μπορεί να χρησιμοποιεί το κολλητήρι (W=watt)"
|
||||
},
|
||||
"ReverseButtonTempChange": {
|
||||
"text2": [
|
||||
"Αντιστροφή",
|
||||
"πλήκτρων + -"
|
||||
],
|
||||
"desc": "Αντιστροφή διάταξης πλήκτρων στη ρύθμιση θερμοκρασίας"
|
||||
},
|
||||
"TempChangeShortStep": {
|
||||
"text2": [
|
||||
"Αλλαγή θερμοκ.",
|
||||
"στιγμιαίο"
|
||||
],
|
||||
"desc": "Βήμα αλλαγής θερμοκρασίας σε στιγμιαίο πάτημα πλήκτρου"
|
||||
},
|
||||
"TempChangeLongStep": {
|
||||
"text2": [
|
||||
"Αλλαγή θερμοκ.",
|
||||
"παρατεταμένο"
|
||||
],
|
||||
"desc": "Βήμα αλλαγής θερμοκρασίας σε παρατεταμένο πάτημα πλήκτρου"
|
||||
},
|
||||
"PowerPulsePower": {
|
||||
"text2": [
|
||||
"Παλμός",
|
||||
"ενέργειας"
|
||||
],
|
||||
"desc": "Ένταση ενέργειας παλμού διατήρησης λειτουργίας (watt)"
|
||||
},
|
||||
"HallEffSensitivity": {
|
||||
"text2": [
|
||||
"Ευαισθ. αισθ. ",
|
||||
"φαιν. Hall"
|
||||
],
|
||||
"desc": "Ευαισθησία του αισθητήρα φαινομένου Hall για εντοπισμό αδράνειας (0=off | Χ=χαμηλή | Μ=μέτρια | Υ=υψηλή)"
|
||||
},
|
||||
"LockingMode": {
|
||||
"text2": [
|
||||
"Κλείδωμα",
|
||||
"πλήκτρων"
|
||||
],
|
||||
"desc": "Κατά την κόλληση, κρατήστε και τα δύο πλήκτρα για κλείδωμα (A=απενεργοποίηση | B=μόνο λειτ. boost | Π=πλήρες κλείδωμα)"
|
||||
},
|
||||
"MinVolCell": {
|
||||
"text2": [
|
||||
"Ελάχιστη",
|
||||
"τάση"
|
||||
],
|
||||
"desc": "Ελάχιστη επιτρεπτή τάση ανα κυψέλη (3 σε σειρά: 3 - 3.7V | 4-6 σε σειρά: 2.4 - 3.7V)"
|
||||
},
|
||||
"AnimLoop": {
|
||||
"text2": [
|
||||
"Επανάληψη",
|
||||
"κιν. εικονιδ."
|
||||
],
|
||||
"desc": "Επανάληψη κίνησης εικονιδίων στο αρχικό μενού"
|
||||
},
|
||||
"AnimSpeed": {
|
||||
"text2": [
|
||||
"Ταχύτητα",
|
||||
"κιν. εικονιδ."
|
||||
],
|
||||
"desc": "Ρυθμός κίνησης εικονιδίων στο μενού (0=off | Α=αργός | Μ=μέτριος | Γ=γρήγορος"
|
||||
},
|
||||
"PowerPulseWait": {
|
||||
"text2": [
|
||||
"Καθυστέρηση",
|
||||
"παλμού ενέργ."
|
||||
],
|
||||
"desc": "Καθυστέρηση πριν την ενεργοποίση παλμού διατήρησης λειτουργίας (x 2.5s)"
|
||||
},
|
||||
"PowerPulseDuration": {
|
||||
"text2": [
|
||||
"Διάρκεια",
|
||||
"παλμού ενέργ."
|
||||
],
|
||||
"desc": "Διάρκεια παλμού διατήρησης ενέργειας (x 250ms)"
|
||||
},
|
||||
"LanguageSwitch": {
|
||||
"text2": [
|
||||
"Γλώσσα",
|
||||
" GR Ελληνικά"
|
||||
],
|
||||
"desc": "Τρέχουσα γλώσσα λογισμικού"
|
||||
},
|
||||
"Brightness": {
|
||||
"text2": [
|
||||
"Αντίθεση",
|
||||
"οθόνης"
|
||||
],
|
||||
"desc": "Ρύθμιση φωτεινότητας οθόνης OLED"
|
||||
},
|
||||
"ColourInversion": {
|
||||
"text2": [
|
||||
"Αντιστροφή",
|
||||
"χρωμάτων"
|
||||
],
|
||||
"desc": "Αντιστροφή χρωμάτων οθόνης OLED"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -267,7 +267,7 @@
|
||||
"Sensore",
|
||||
"Hall"
|
||||
],
|
||||
"desc": "Regola la sensibilità alla rilevazione di supporti metallici per entrare in modalità Riposo [O: OFF; B: bassa; M: media; A: alta]"
|
||||
"desc": "Regola la sensibilità del sensore ad effetto Hall per entrare in modalità Riposo [O: OFF; B: bassa; M: media; A: alta]"
|
||||
},
|
||||
"LockingMode": {
|
||||
"text2": [
|
||||
|
||||
@@ -4,25 +4,19 @@
|
||||
"fonts": ["ascii_basic", "cjk"],
|
||||
"tempUnitFahrenheit": true,
|
||||
"messages": {
|
||||
"SettingsCalibrationDone": "校正完了",
|
||||
"SettingsCalibrationWarning": "続行する前に、コテ先が室温と同じになっていることを確認してください",
|
||||
"SettingsResetWarning": "設定をリセットしますか?",
|
||||
"UVLOWarningString": "DC電圧が低すぎます",
|
||||
"UndervoltageString": "電圧不足",
|
||||
"InputVoltageString": "入力電圧 V: ",
|
||||
"WarningTipTempString": "コテ先温度: ",
|
||||
"BadTipString": "コテ先エラー",
|
||||
"UVLOWarningString": "電圧が低すぎます",
|
||||
"UndervoltageString": "Undervoltage",
|
||||
"InputVoltageString": "Input V: ",
|
||||
"SleepingSimpleString": "Zzzz",
|
||||
"SleepingAdvancedString": "スリープ中...",
|
||||
"WarningSimpleString": "高温注意!",
|
||||
"WarningAdvancedString": "!!! コテ先高温 !!!",
|
||||
"SleepingTipAdvancedString": "コテ先:",
|
||||
"IdleTipString": "コテ先:",
|
||||
"IdleSetString": " 設定:",
|
||||
"TipDisconnectedString": "コテ先が接続されていません",
|
||||
"SolderingAdvancedPowerPrompt": "電源: ",
|
||||
"OffString": "オフ",
|
||||
"YourGainMessage": "ゲイン:"
|
||||
"SleepingAdvancedString": "Sleeping...",
|
||||
"SleepingTipAdvancedString": "Tip:",
|
||||
"IdleTipString": "Tip:",
|
||||
"IdleSetString": " Set:",
|
||||
"TipDisconnectedString": "NO TIP",
|
||||
"SolderingAdvancedPowerPrompt": "Power: ",
|
||||
"OffString": "オフ"
|
||||
},
|
||||
"messagesWarn": {
|
||||
"ResetOKMessage": "リセットOK",
|
||||
|
||||
@@ -146,8 +146,8 @@
|
||||
"desc": "Мощность используемого источника питания"
|
||||
},
|
||||
"PDNegTimeout": {
|
||||
"text2": ["PD", "timeout"],
|
||||
"desc": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers (0: disabled)"
|
||||
"text2": ["PD", "тайм-аут"],
|
||||
"desc": "Power Delivery тайм-аут согласования с шагом 100 мс для совместимости с некоторыми быстрыми зарядными QC (0: отключено)"
|
||||
},
|
||||
"PowerLimit": {
|
||||
"text2": ["Предел", "мощности"],
|
||||
@@ -190,24 +190,24 @@
|
||||
"desc": "Скорость анимации иконок в главном меню (Милисекунды) (О=Отключено | Н=Низкий | С=Средний | В=Высокий)"
|
||||
},
|
||||
"PowerPulseWait": {
|
||||
"text2": ["Power pulse", "wait time"],
|
||||
"desc": "Time to wait before triggering every keep-awake pulse (x 2,5с)"
|
||||
"text2": ["Пауза имп.", "питания с"],
|
||||
"desc": "Пауза между импульсами удерживающими источник питания от сна (x 2,5с)"
|
||||
},
|
||||
"PowerPulseDuration": {
|
||||
"text2": ["Power pulse", "duration"],
|
||||
"desc": "Keep-awake-pulse duration (x 250мс)"
|
||||
"text2": ["Длина имп.", "питания мс"],
|
||||
"desc": "Длина импульса удерживающего от сна источник питания (x 250мс)"
|
||||
},
|
||||
"LanguageSwitch": {
|
||||
"text2": ["Язык:", " RU Русский"],
|
||||
"desc": ""
|
||||
},
|
||||
"Brightness": {
|
||||
"text2": ["Screen", "Brightness"],
|
||||
"desc": "Adjust the contrast/brightness of the OLED screen"
|
||||
"text2": ["Яркость", "экрана"],
|
||||
"desc": "Настройки контраста/яркости OLED экрана"
|
||||
},
|
||||
"ColourInversion": {
|
||||
"text2": ["Screen", "Invert"],
|
||||
"desc": "Invert the colours of the OLED screen"
|
||||
"text2": ["Инверт", "экрана"],
|
||||
"desc": "Инвертировать цвета на OLED экране"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -202,12 +202,12 @@
|
||||
"desc": ""
|
||||
},
|
||||
"Brightness": {
|
||||
"text2": ["Screen", "Brightness"],
|
||||
"desc": "Adjust the contrast/brightness of the OLED screen"
|
||||
"text2": ["Яскравість", "екрану"],
|
||||
"desc": "Налаштування контрасту/яскравості OLED екрану"
|
||||
},
|
||||
"ColourInversion": {
|
||||
"text2": ["Screen", "Invert"],
|
||||
"desc": "Invert the colours of the OLED screen"
|
||||
"text2": ["Інверт", "екрану"],
|
||||
"desc": "Налаштування контрасту/яскравості OLED екрану"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"fonts": ["ascii_basic", "cjk"],
|
||||
"tempUnitFahrenheit": true,
|
||||
"messages": {
|
||||
"SettingsCalibrationWarning": "開始温度校正之前,請先確定辣雞咀係處於室温!",
|
||||
"SettingsCalibrationWarning": "開始温度校正之前,請先確定焫雞咀係處於室温!",
|
||||
"SettingsResetWarning": "你係咪確定要將全部設定重設到預設值?",
|
||||
"UVLOWarningString": "電壓過低",
|
||||
"UndervoltageString": "Undervoltage",
|
||||
@@ -21,8 +21,8 @@
|
||||
"messagesWarn": {
|
||||
"ResetOKMessage": "已重設!",
|
||||
"SettingsResetMessage": "設定已被重設!",
|
||||
"NoAccelerometerMessage": ["No accelerometer", "detected!"],
|
||||
"NoPowerDeliveryMessage": ["No USB-PD IC", "detected!"],
|
||||
"NoAccelerometerMessage": "未能偵測加速度計",
|
||||
"NoPowerDeliveryMessage": "未能偵測PD晶片",
|
||||
"LockingKeysString": "已鎖定",
|
||||
"UnlockingKeysString": "已解除鎖定",
|
||||
"WarningKeysLockedString": "!撳掣鎖定!",
|
||||
@@ -78,7 +78,7 @@
|
||||
},
|
||||
"SleepTemperature": {
|
||||
"text2": "待機温度",
|
||||
"desc": "喺待機模式時嘅辣雞咀温度"
|
||||
"desc": "喺待機模式時嘅焫雞咀温度"
|
||||
},
|
||||
"SleepTimeout": {
|
||||
"text2": "待機延時",
|
||||
@@ -114,11 +114,11 @@
|
||||
},
|
||||
"CooldownBlink": {
|
||||
"text2": "降温時閃爍",
|
||||
"desc": "停止加熱之後,當辣雞咀仲係熱嗰陣閃爍畫面"
|
||||
"desc": "停止加熱之後,當焫雞咀仲係熱嗰陣閃爍畫面"
|
||||
},
|
||||
"TemperatureCalibration": {
|
||||
"text2": "温度校正?",
|
||||
"desc": "開始校正辣雞咀温度位移"
|
||||
"desc": "開始校正焫雞咀温度位移"
|
||||
},
|
||||
"SettingsReset": {
|
||||
"text2": "全部重設?",
|
||||
@@ -146,7 +146,7 @@
|
||||
},
|
||||
"PowerLimit": {
|
||||
"text2": "功率限制",
|
||||
"desc": "限制辣雞可用嘅最大功率 <W=watt(火)>"
|
||||
"desc": "限制焫雞可用嘅最大功率 <W=watt(火)>"
|
||||
},
|
||||
"ReverseButtonTempChange": {
|
||||
"text2": "反轉加減掣",
|
||||
|
||||
@@ -4,27 +4,27 @@
|
||||
"fonts": ["ascii_basic", "cjk"],
|
||||
"tempUnitFahrenheit": true,
|
||||
"messages": {
|
||||
"SettingsCalibrationWarning": "开始温度校正前,请先确定铬铁头正处于室温!",
|
||||
"SettingsResetWarning": "你是否确定要将全部设置重置为默认值?",
|
||||
"SettingsCalibrationWarning": "开始温度校正前,请先确定烙铁头正处于室温!",
|
||||
"SettingsResetWarning": "你是否确定要将全部设定重置为默认值?",
|
||||
"UVLOWarningString": "电压过低",
|
||||
"UndervoltageString": "Undervoltage",
|
||||
"InputVoltageString": "Input V: ",
|
||||
"InputVoltageString": "VIN: ",
|
||||
"SleepingSimpleString": "Zzzz",
|
||||
"SleepingAdvancedString": "Sleeping...",
|
||||
"SleepingTipAdvancedString": "Tip:",
|
||||
"IdleTipString": "Tip:",
|
||||
"IdleSetString": " Set:",
|
||||
"TipDisconnectedString": "NO TIP",
|
||||
"SleepingAdvancedString": "Zzzz...",
|
||||
"SleepingTipAdvancedString": "--->",
|
||||
"IdleTipString": "--->",
|
||||
"IdleSetString": " /",
|
||||
"TipDisconnectedString": "<-X-",
|
||||
"SolderingAdvancedPowerPrompt": "Power: ",
|
||||
"OffString": "关"
|
||||
},
|
||||
"messagesWarn": {
|
||||
"ResetOKMessage": "已重置!",
|
||||
"SettingsResetMessage": "设置已被重置!",
|
||||
"NoAccelerometerMessage": ["No accelerometer", "detected!"],
|
||||
"NoPowerDeliveryMessage": ["No USB-PD IC", "detected!"],
|
||||
"SettingsResetMessage": "设定已被重置!",
|
||||
"NoAccelerometerMessage": "未检测到加速度计",
|
||||
"NoPowerDeliveryMessage": "未检测到PD电路",
|
||||
"LockingKeysString": "已锁定",
|
||||
"UnlockingKeysString": "已解除锁定",
|
||||
"UnlockingKeysString": "已解锁",
|
||||
"WarningKeysLockedString": "!按键锁定!",
|
||||
"WarningThermalRunaway": "加热失控"
|
||||
},
|
||||
@@ -63,78 +63,78 @@
|
||||
"desc": "自动待机省电设置"
|
||||
},
|
||||
"UIMenu": {
|
||||
"text2": "使用者介面",
|
||||
"desc": "使用者介面设置"
|
||||
"text2": "用户界面",
|
||||
"desc": "用户界面设置"
|
||||
},
|
||||
"AdvancedMenu": {
|
||||
"text2": "进阶设置",
|
||||
"desc": "进阶设置"
|
||||
"text2": "高级设置",
|
||||
"desc": "高级设置"
|
||||
}
|
||||
},
|
||||
"menuOptions": {
|
||||
"DCInCutoff": {
|
||||
"text2": "电源",
|
||||
"desc": "输入电源;设置自动停机电压 <DC 10V> <S 锂电池,以每颗3.3V计算;此设置会禁用功率限制>"
|
||||
"text2": "下限电压",
|
||||
"desc": "设置自动停机电压 <DC=10V | S=(串)每节锂电池3.3V;此设置会禁用功率限制>"
|
||||
},
|
||||
"SleepTemperature": {
|
||||
"text2": "待机温度",
|
||||
"desc": "于待机模式时的铬铁头温度"
|
||||
"desc": "待机模式时的烙铁头温度"
|
||||
},
|
||||
"SleepTimeout": {
|
||||
"text2": "待机延时",
|
||||
"desc": "自动进入待机模式前的闲置等候时间 <S=秒 | M=分钟>"
|
||||
"text2": "待机超时",
|
||||
"desc": "自动进入待机模式前的等候时间 <S=秒 | M=分钟>"
|
||||
},
|
||||
"ShutdownTimeout": {
|
||||
"text2": "自动关机",
|
||||
"desc": "自动关机前的闲置等候时间 <M=分钟>"
|
||||
"desc": "自动关机前的等候时间 <M=分钟>"
|
||||
},
|
||||
"MotionSensitivity": {
|
||||
"text2": "动作灵敏度",
|
||||
"desc": "0=禁用 | 1=最低灵敏度 | ... | 9=最高灵敏度"
|
||||
},
|
||||
"TemperatureUnit": {
|
||||
"text2": "温标",
|
||||
"text2": "温度单位",
|
||||
"desc": "C=摄氏 | F=华氏"
|
||||
},
|
||||
"AdvancedIdle": {
|
||||
"text2": "详细闲置画面",
|
||||
"desc": "于闲置画面以英语小字显示详细信息"
|
||||
"text2": "闲置画面详情",
|
||||
"desc": "闲置画面以英语小字体显示详情"
|
||||
},
|
||||
"DisplayRotation": {
|
||||
"text2": "画面方向",
|
||||
"desc": "右=使用右手 | 左=使用左手 | 自=自动"
|
||||
"text2": "显示方向",
|
||||
"desc": "右=右手 | 左=左手 | 自=自动"
|
||||
},
|
||||
"BoostTemperature": {
|
||||
"text2": "增热温度",
|
||||
"desc": "于增热模式时使用的温度"
|
||||
"desc": "增热模式时使用的温度"
|
||||
},
|
||||
"AutoStart": {
|
||||
"text2": "自动启用",
|
||||
"desc": "开机时自动启用 <无=禁用 | 焊=焊接模式 | 待=待机模式 | 室=室温待机>"
|
||||
"text2": "自动启动",
|
||||
"desc": "开机时自动启动 <无=禁用 | 焊=焊接模式 | 待=待机模式 | 室=室温待机>"
|
||||
},
|
||||
"CooldownBlink": {
|
||||
"text2": "降温时闪烁",
|
||||
"desc": "停止加热之后,当铬铁头仍处于高温时闪烁画面"
|
||||
"text2": "降温时闪显",
|
||||
"desc": "停止加热之后,闪动温度显示提醒烙铁头仍处于高温状态"
|
||||
},
|
||||
"TemperatureCalibration": {
|
||||
"text2": "温度校正?",
|
||||
"desc": "开始校正铬铁头温度位移"
|
||||
"desc": "开始校正烙铁头温度偏移"
|
||||
},
|
||||
"SettingsReset": {
|
||||
"text2": "全部重置?",
|
||||
"desc": "将所有设置重置为默认值"
|
||||
"desc": "将所有设定重置为默认值"
|
||||
},
|
||||
"VoltageCalibration": {
|
||||
"text2": "输入电压校正?",
|
||||
"desc": "开始校正VIN输入电压 <长按以退出>"
|
||||
"desc": "开始校正输入电压(VIN)<长按以退出>"
|
||||
},
|
||||
"AdvancedSoldering": {
|
||||
"text2": "详细焊接画面",
|
||||
"desc": "于焊接模式画面以英语小字显示详细信息"
|
||||
"text2": "焊接画面详情",
|
||||
"desc": "焊接模式画面以英语小字体显示详请"
|
||||
},
|
||||
"ScrollingSpeed": {
|
||||
"text2": "卷动速度",
|
||||
"desc": "解说文字的卷动速度"
|
||||
"text2": "滚动速度",
|
||||
"desc": "解说文字的滚动速度"
|
||||
},
|
||||
"QCMaxVoltage": {
|
||||
"text2": "QC电压",
|
||||
@@ -142,55 +142,55 @@
|
||||
},
|
||||
"PDNegTimeout": {
|
||||
"text2": "PD超时",
|
||||
"desc": "设定USB PD协议交涉的超时时限;为兼容某些QC电源而设 <x100ms(亳秒)>"
|
||||
"desc": "设定USB-PD协议交涉的超时时限;为兼容某些QC电源而设 <x100ms(亳秒)>"
|
||||
},
|
||||
"PowerLimit": {
|
||||
"text2": "功率限制",
|
||||
"desc": "限制铬铁可用的最大功率 <W=watt(瓦特)>"
|
||||
"desc": "限制烙铁可用的最大功率 <W=瓦特>"
|
||||
},
|
||||
"ReverseButtonTempChange": {
|
||||
"text2": "调换加减键",
|
||||
"desc": "调校温度时调换加减键的方向"
|
||||
"desc": "调校温度时更换加减键的方向"
|
||||
},
|
||||
"TempChangeShortStep": {
|
||||
"text2": "温度调整 短",
|
||||
"desc": "调校温度时短按一下的温度变幅"
|
||||
"text2": "短按温度调整",
|
||||
"desc": "调校温度时短按按键的温度变幅"
|
||||
},
|
||||
"TempChangeLongStep": {
|
||||
"text2": "温度调整 长",
|
||||
"text2": "长按温度调整",
|
||||
"desc": "调校温度时长按按键的温度变幅"
|
||||
},
|
||||
"PowerPulsePower": {
|
||||
"text2": "电源脉冲",
|
||||
"desc": "为保持电源唤醒而通电所用的功率 <watt(瓦特)>"
|
||||
"desc": "为保持电源处于唤醒状态所用的功率 <Watt(瓦特)>"
|
||||
},
|
||||
"HallEffSensitivity": {
|
||||
"text2": "磁场灵敏度",
|
||||
"desc": "磁场感应器用作启动待机模式的灵敏度 <关=禁用 | 低=最低灵敏度 | 中=中等灵敏度 | 高=最高灵敏度>"
|
||||
"desc": "霍尔效应传感器用作启动待机模式的灵敏度 <关=禁用 | 低=低灵敏度 | 中=中灵敏度 | 高=高灵敏度>"
|
||||
},
|
||||
"LockingMode": {
|
||||
"text2": "按键锁定",
|
||||
"desc": "于焊接模式时,同时长按两个按键启用按键锁定 <无=禁用 | 增=只容许增热模式 | 全=锁定全部>"
|
||||
"desc": "焊接模式时,同时长按两个按键启用按键锁定 <无=禁用 | 增=只容许增热模式 | 全=完全锁定>"
|
||||
},
|
||||
"MinVolCell": {
|
||||
"text2": "最低电压",
|
||||
"desc": "每颗电池的最低可用电压 <伏特> <3S: 3.0V - 3.7V, 4/5/6S: 2.4V - 3.7V>"
|
||||
"desc": "每节电池的最低允许电压 <V(伏特)> <3S: 3.0V - 3.7V, 4/5/6S: 2.4V - 3.7V>"
|
||||
},
|
||||
"AnimLoop": {
|
||||
"text2": "动画循环",
|
||||
"desc": "循环显示功能表图示动画"
|
||||
"desc": "主菜单中循环播放功能图标动画"
|
||||
},
|
||||
"AnimSpeed": {
|
||||
"text2": "动画速度",
|
||||
"desc": "功能表图示动画的速度 <关=不显示动画 | 慢=慢速 | 中=中速 | 快=快速>"
|
||||
"desc": "主菜单中功能图标动画的播放速度 <关=不显示动画 | 慢=慢速 | 中=中速 | 快=快速>"
|
||||
},
|
||||
"PowerPulseWait": {
|
||||
"text2": "电源脉冲间隔",
|
||||
"desc": "为保持电源唤醒,每次通电之间的间隔时间 <x2.5s(秒)>"
|
||||
"desc": "为保持电源处于唤醒状态,每次通电之间的间隔时间 <x2.5s(秒)>"
|
||||
},
|
||||
"PowerPulseDuration": {
|
||||
"text2": "电源脉冲时长",
|
||||
"desc": "为保持电源唤醒,每次通电脉冲的时间长度 <x250ms(亳秒)>"
|
||||
"desc": "为保持电源处于唤醒状态,每次通电脉冲的时间长度 <x250ms(亳秒)>"
|
||||
},
|
||||
"LanguageSwitch": {
|
||||
"text2": "语言:简体中文",
|
||||
@@ -198,11 +198,11 @@
|
||||
},
|
||||
"Brightness": {
|
||||
"text2": "屏幕亮度",
|
||||
"desc": "设定OLED屏幕的亮度"
|
||||
"desc": "调整OLED屏幕的亮度"
|
||||
},
|
||||
"ColourInversion": {
|
||||
"text2": "螢幕反轉色",
|
||||
"desc": "反转OLED屏幕的黑白色彩"
|
||||
"text2": "反转屏幕颜色",
|
||||
"desc": "反转OLED黑/白屏幕"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"fonts": ["ascii_basic", "cjk"],
|
||||
"tempUnitFahrenheit": true,
|
||||
"messages": {
|
||||
"SettingsCalibrationWarning": "開始溫度校正前,請先確定鉻鐵頭正處於室溫!",
|
||||
"SettingsCalibrationWarning": "開始溫度校正前,請先確定烙鐵頭正處於室溫!",
|
||||
"SettingsResetWarning": "你是否確定要將全部設定重設到預設值?",
|
||||
"UVLOWarningString": "電壓過低",
|
||||
"UndervoltageString": "Undervoltage",
|
||||
@@ -21,8 +21,8 @@
|
||||
"messagesWarn": {
|
||||
"ResetOKMessage": "已重設!",
|
||||
"SettingsResetMessage": "設定已被重設!",
|
||||
"NoAccelerometerMessage": ["No accelerometer", "detected!"],
|
||||
"NoPowerDeliveryMessage": ["No USB-PD IC", "detected!"],
|
||||
"NoAccelerometerMessage": "未能偵測加速度計",
|
||||
"NoPowerDeliveryMessage": "未能偵測PD晶片",
|
||||
"LockingKeysString": "已鎖定",
|
||||
"UnlockingKeysString": "已解除鎖定",
|
||||
"WarningKeysLockedString": "!按鍵鎖定!",
|
||||
@@ -78,7 +78,7 @@
|
||||
},
|
||||
"SleepTemperature": {
|
||||
"text2": "待機溫度",
|
||||
"desc": "於待機模式時的鉻鐵頭溫度"
|
||||
"desc": "於待機模式時的烙鐵頭溫度"
|
||||
},
|
||||
"SleepTimeout": {
|
||||
"text2": "待機延時",
|
||||
@@ -114,11 +114,11 @@
|
||||
},
|
||||
"CooldownBlink": {
|
||||
"text2": "降溫時閃爍",
|
||||
"desc": "停止加熱之後,當鉻鐵頭仍處於高溫時閃爍畫面"
|
||||
"desc": "停止加熱之後,當烙鐵頭仍處於高溫時閃爍畫面"
|
||||
},
|
||||
"TemperatureCalibration": {
|
||||
"text2": "溫度校正?",
|
||||
"desc": "開始校正鉻鐵頭溫度位移"
|
||||
"desc": "開始校正烙鐵頭溫度位移"
|
||||
},
|
||||
"SettingsReset": {
|
||||
"text2": "全部重設?",
|
||||
@@ -146,7 +146,7 @@
|
||||
},
|
||||
"PowerLimit": {
|
||||
"text2": "功率限制",
|
||||
"desc": "限制鉻鐵可用的最大功率 <W=watt(瓦特)>"
|
||||
"desc": "限制烙鐵可用的最大功率 <W=watt(瓦特)>"
|
||||
},
|
||||
"ReverseButtonTempChange": {
|
||||
"text2": "調換加減鍵",
|
||||
|
||||
4
build.sh
4
build.sh
@@ -1,2 +1,2 @@
|
||||
#!/usr/bin/env bash
|
||||
docker-compose run --rm builder /bin/bash /build/ci/buildAll.sh
|
||||
#!/bin/sh
|
||||
docker-compose run --rm builder /bin/bash /build/ci/buildAll.sh
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
#!/bin/sh
|
||||
set -e
|
||||
set -u
|
||||
|
||||
|
||||
8
setup.sh
8
setup.sh
@@ -1,7 +1,7 @@
|
||||
#!/bin/bash
|
||||
#!/bin/sh
|
||||
set -e
|
||||
# Setup shell file to setup the environment on an ubuntu machine
|
||||
sudo apt-get update && sudo apt-get install -y make bzip2 git python3 python3-pip wget dfu-util
|
||||
sudo apt-get update && sudo apt-get install -y make bzip2 git python3 python3-pip wget dfu-util
|
||||
python3 -m pip install bdflib black flake8
|
||||
sudo mkdir -p /build
|
||||
cd /build
|
||||
@@ -12,7 +12,7 @@ cd /build
|
||||
MDPATH=${GITHUB_WORKSPACE:-/build/source/}
|
||||
sudo mkdir -p /build/cache
|
||||
cd /build/cache/
|
||||
if md5sum -c $MDPATH/ci/gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2.md5; then
|
||||
if md5sum -c "$MDPATH"/ci/gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2.md5; then
|
||||
echo "Good MD5 ARM"
|
||||
else
|
||||
echo "ARM MD5 Mismatch, downloading fresh"
|
||||
@@ -20,7 +20,7 @@ else
|
||||
sudo wget -q "https://developer.arm.com/-/media/Files/downloads/gnu-rm/10-2020q4/gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2" -O gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2
|
||||
fi
|
||||
|
||||
if md5sum -c $MDPATH/ci/nuclei_riscv_newlibc_prebuilt_linux64_2020.08.tar.bz2.md5; then
|
||||
if md5sum -c "$MDPATH"/ci/nuclei_riscv_newlibc_prebuilt_linux64_2020.08.tar.bz2.md5; then
|
||||
echo "Good MD5 RISCV"
|
||||
else
|
||||
echo "RISCV MD5 Mismatch, downloading fresh"
|
||||
|
||||
@@ -95,8 +95,9 @@
|
||||
#define DETAILED_SOLDERING 0 // 0: Disable 1: Enable - Default 0
|
||||
#define DETAILED_IDLE 0 // 0: Disable 1: Enable - Default 0
|
||||
|
||||
#define THERMAL_RUNAWAY_TIME_SEC 20
|
||||
#define THERMAL_RUNAWAY_TEMP_C 20
|
||||
// Due to large thermal mass of the PCB being heated we need to pull this back a bit
|
||||
#define THERMAL_RUNAWAY_TIME_SEC 45
|
||||
#define THERMAL_RUNAWAY_TEMP_C 3
|
||||
|
||||
#define CUT_OUT_SETTING 0 // default to no cut-off voltage
|
||||
#define RECOM_VOL_CELL 33 // Minimum voltage per cell (Recommended 3.3V (33))
|
||||
@@ -118,25 +119,26 @@
|
||||
#endif
|
||||
|
||||
#ifdef MODEL_MHP30
|
||||
#define SOLDERING_TEMP 200 // Default soldering temp is 200.0 °C
|
||||
#define VOLTAGE_DIV 360 // Default for MHP30
|
||||
#define PID_POWER_LIMIT 65 // Sets the max pwm power limit
|
||||
#define CALIBRATION_OFFSET 0 // the adc offset in uV - MHP compensates automagically
|
||||
#define POWER_LIMIT 65 // 65 watts default power limit
|
||||
#define MAX_POWER_LIMIT 65 //
|
||||
#define POWER_LIMIT_STEPS 1 //
|
||||
#define OP_AMP_GAIN_STAGE OP_AMP_GAIN_STAGE_MHP30 //
|
||||
#define USB_PD_VMAX 20 // Maximum voltage for PD to negotiate
|
||||
#define MODEL_HAS_DCDC // Has inductor to current filter
|
||||
#define PID_TIM_HZ (16) //
|
||||
#define MAX_TEMP_C 300 // Max soldering temp selectable °C
|
||||
#define MAX_TEMP_F 570 // Max soldering temp selectable °F
|
||||
#define MIN_TEMP_C 10 // Min soldering temp selectable °C
|
||||
#define MIN_TEMP_F 60 // Min soldering temp selectable °F
|
||||
#define MIN_BOOST_TEMP_C 150 // The min settable temp for boost mode °C
|
||||
#define MIN_BOOST_TEMP_F 300 // The min settable temp for boost mode °F
|
||||
#define NO_DISPLAY_ROTATE // Disable OLED rotation by accel
|
||||
#define SLEW_LIMIT 50 // Limit to 3.0 Watts per 64ms pid loop update rate slew rate
|
||||
#define SOLDERING_TEMP 200 // Default soldering temp is 200.0 °C
|
||||
#define VOLTAGE_DIV 360 // Default for MHP30
|
||||
#define PID_POWER_LIMIT 65 // Sets the max pwm power limit
|
||||
#define CALIBRATION_OFFSET 0 // the adc offset in uV - MHP compensates automagically
|
||||
#define MIN_CALIBRATION_OFFSET 0 // Min value for calibration
|
||||
#define POWER_LIMIT 65 // 65 watts default power limit
|
||||
#define MAX_POWER_LIMIT 65 //
|
||||
#define POWER_LIMIT_STEPS 1 //
|
||||
#define OP_AMP_GAIN_STAGE OP_AMP_GAIN_STAGE_MHP30 //
|
||||
#define USB_PD_VMAX 20 // Maximum voltage for PD to negotiate
|
||||
#define MODEL_HAS_DCDC // Has inductor to current filter
|
||||
#define PID_TIM_HZ (16) //
|
||||
#define MAX_TEMP_C 350 // Max soldering temp selectable °C
|
||||
#define MAX_TEMP_F 660 // Max soldering temp selectable °F
|
||||
#define MIN_TEMP_C 10 // Min soldering temp selectable °C
|
||||
#define MIN_TEMP_F 60 // Min soldering temp selectable °F
|
||||
#define MIN_BOOST_TEMP_C 150 // The min settable temp for boost mode °C
|
||||
#define MIN_BOOST_TEMP_F 300 // The min settable temp for boost mode °F
|
||||
#define NO_DISPLAY_ROTATE // Disable OLED rotation by accel
|
||||
#define SLEW_LIMIT 50 // Limit to 3.0 Watts per 64ms pid loop update rate slew rate
|
||||
#define ACCEL_MSA
|
||||
#define POW_PD 1
|
||||
#define TEMP_NTC
|
||||
|
||||
@@ -125,23 +125,24 @@
|
||||
#endif
|
||||
|
||||
#ifdef MODEL_TS100
|
||||
#define SOLDERING_TEMP 320 // Default soldering temp is 320.0 °C
|
||||
#define VOLTAGE_DIV 467 // 467 - Default divider from schematic
|
||||
#define CALIBRATION_OFFSET 900 // 900 - Default adc offset in uV
|
||||
#define PID_POWER_LIMIT 70 // Sets the max pwm power limit
|
||||
#define POWER_LIMIT 0 // 0 watts default limit
|
||||
#define MAX_POWER_LIMIT 70 //
|
||||
#define POWER_LIMIT_STEPS 5 //
|
||||
#define OP_AMP_GAIN_STAGE OP_AMP_GAIN_STAGE_TS100 //
|
||||
#define TEMP_uV_LOOKUP_HAKKO //
|
||||
#define USB_PD_VMAX 20 // Maximum voltage for PD to negotiate
|
||||
#define PID_TIM_HZ (8) // Tick rate of the PID loop
|
||||
#define MAX_TEMP_C 450 // Max soldering temp selectable °C
|
||||
#define MAX_TEMP_F 850 // Max soldering temp selectable °F
|
||||
#define MIN_TEMP_C 10 // Min soldering temp selectable °C
|
||||
#define MIN_TEMP_F 60 // Min soldering temp selectable °F
|
||||
#define MIN_BOOST_TEMP_C 250 // The min settable temp for boost mode °C
|
||||
#define MIN_BOOST_TEMP_F 480 // The min settable temp for boost mode °F
|
||||
#define SOLDERING_TEMP 320 // Default soldering temp is 320.0 °C
|
||||
#define VOLTAGE_DIV 467 // 467 - Default divider from schematic
|
||||
#define CALIBRATION_OFFSET 900 // 900 - Default adc offset in uV
|
||||
#define MIN_CALIBRATION_OFFSET 100 // Min value for calibration
|
||||
#define PID_POWER_LIMIT 70 // Sets the max pwm power limit
|
||||
#define POWER_LIMIT 0 // 0 watts default limit
|
||||
#define MAX_POWER_LIMIT 70 //
|
||||
#define POWER_LIMIT_STEPS 5 //
|
||||
#define OP_AMP_GAIN_STAGE OP_AMP_GAIN_STAGE_TS100 //
|
||||
#define TEMP_uV_LOOKUP_HAKKO //
|
||||
#define USB_PD_VMAX 20 // Maximum voltage for PD to negotiate
|
||||
#define PID_TIM_HZ (8) // Tick rate of the PID loop
|
||||
#define MAX_TEMP_C 450 // Max soldering temp selectable °C
|
||||
#define MAX_TEMP_F 850 // Max soldering temp selectable °F
|
||||
#define MIN_TEMP_C 10 // Min soldering temp selectable °C
|
||||
#define MIN_TEMP_F 60 // Min soldering temp selectable °F
|
||||
#define MIN_BOOST_TEMP_C 250 // The min settable temp for boost mode °C
|
||||
#define MIN_BOOST_TEMP_F 480 // The min settable temp for boost mode °F
|
||||
#define POW_DC
|
||||
#define ACCEL_MMA
|
||||
#define POW_PD 0
|
||||
@@ -150,23 +151,24 @@
|
||||
#endif
|
||||
|
||||
#ifdef MODEL_TS80
|
||||
#define SOLDERING_TEMP 320 // Default soldering temp is 320.0 °C
|
||||
#define VOLTAGE_DIV 780 // Default divider from schematic
|
||||
#define PID_POWER_LIMIT 24 // Sets the max pwm power limit
|
||||
#define CALIBRATION_OFFSET 900 // the adc offset in uV
|
||||
#define POWER_LIMIT 24 // 24 watts default power limit
|
||||
#define MAX_POWER_LIMIT 40 //
|
||||
#define POWER_LIMIT_STEPS 2 //
|
||||
#define OP_AMP_GAIN_STAGE OP_AMP_GAIN_STAGE_TS80 //
|
||||
#define TEMP_uV_LOOKUP_TS80 //
|
||||
#define USB_PD_VMAX 12 // Maximum voltage for PD to negotiate
|
||||
#define PID_TIM_HZ (8) // Tick rate of the PID loop
|
||||
#define MAX_TEMP_C 450 // Max soldering temp selectable °C
|
||||
#define MAX_TEMP_F 850 // Max soldering temp selectable °F
|
||||
#define MIN_TEMP_C 10 // Min soldering temp selectable °C
|
||||
#define MIN_TEMP_F 60 // Min soldering temp selectable °F
|
||||
#define MIN_BOOST_TEMP_C 250 // The min settable temp for boost mode °C
|
||||
#define MIN_BOOST_TEMP_F 480 // The min settable temp for boost mode °F
|
||||
#define SOLDERING_TEMP 320 // Default soldering temp is 320.0 °C
|
||||
#define VOLTAGE_DIV 780 // Default divider from schematic
|
||||
#define PID_POWER_LIMIT 24 // Sets the max pwm power limit
|
||||
#define CALIBRATION_OFFSET 900 // the adc offset in uV
|
||||
#define MIN_CALIBRATION_OFFSET 100 // Min value for calibration
|
||||
#define POWER_LIMIT 24 // 24 watts default power limit
|
||||
#define MAX_POWER_LIMIT 40 //
|
||||
#define POWER_LIMIT_STEPS 2 //
|
||||
#define OP_AMP_GAIN_STAGE OP_AMP_GAIN_STAGE_TS80 //
|
||||
#define TEMP_uV_LOOKUP_TS80 //
|
||||
#define USB_PD_VMAX 12 // Maximum voltage for PD to negotiate
|
||||
#define PID_TIM_HZ (8) // Tick rate of the PID loop
|
||||
#define MAX_TEMP_C 450 // Max soldering temp selectable °C
|
||||
#define MAX_TEMP_F 850 // Max soldering temp selectable °F
|
||||
#define MIN_TEMP_C 10 // Min soldering temp selectable °C
|
||||
#define MIN_TEMP_F 60 // Min soldering temp selectable °F
|
||||
#define MIN_BOOST_TEMP_C 250 // The min settable temp for boost mode °C
|
||||
#define MIN_BOOST_TEMP_F 480 // The min settable temp for boost mode °F
|
||||
#define ACCEL_LIS
|
||||
#define POW_QC
|
||||
#define POW_PD 0
|
||||
@@ -176,23 +178,24 @@
|
||||
#endif
|
||||
|
||||
#ifdef MODEL_TS80P
|
||||
#define SOLDERING_TEMP 320 // Default soldering temp is 320.0 °C
|
||||
#define VOLTAGE_DIV 650 // Default for TS80P with slightly different resistors
|
||||
#define PID_POWER_LIMIT 35 // Sets the max pwm power limit
|
||||
#define CALIBRATION_OFFSET 1500 // the adc offset in uV
|
||||
#define POWER_LIMIT 30 // 30 watts default power limit
|
||||
#define MAX_POWER_LIMIT 40 //
|
||||
#define POWER_LIMIT_STEPS 2 //
|
||||
#define OP_AMP_GAIN_STAGE OP_AMP_GAIN_STAGE_TS80 //
|
||||
#define TEMP_uV_LOOKUP_TS80 //
|
||||
#define USB_PD_VMAX 12 // Maximum voltage for PD to negotiate
|
||||
#define PID_TIM_HZ (8) // Tick rate of the PID loop
|
||||
#define MAX_TEMP_C 450 // Max soldering temp selectable °C
|
||||
#define MAX_TEMP_F 850 // Max soldering temp selectable °F
|
||||
#define MIN_TEMP_C 10 // Min soldering temp selectable °C
|
||||
#define MIN_TEMP_F 60 // Min soldering temp selectable °F
|
||||
#define MIN_BOOST_TEMP_C 250 // The min settable temp for boost mode °C
|
||||
#define MIN_BOOST_TEMP_F 480 // The min settable temp for boost mode °F
|
||||
#define SOLDERING_TEMP 320 // Default soldering temp is 320.0 °C
|
||||
#define VOLTAGE_DIV 650 // Default for TS80P with slightly different resistors
|
||||
#define PID_POWER_LIMIT 35 // Sets the max pwm power limit
|
||||
#define CALIBRATION_OFFSET 1500 // the adc offset in uV
|
||||
#define MIN_CALIBRATION_OFFSET 100 // Min value for calibration
|
||||
#define POWER_LIMIT 30 // 30 watts default power limit
|
||||
#define MAX_POWER_LIMIT 40 //
|
||||
#define POWER_LIMIT_STEPS 2 //
|
||||
#define OP_AMP_GAIN_STAGE OP_AMP_GAIN_STAGE_TS80 //
|
||||
#define TEMP_uV_LOOKUP_TS80 //
|
||||
#define USB_PD_VMAX 12 // Maximum voltage for PD to negotiate
|
||||
#define PID_TIM_HZ (8) // Tick rate of the PID loop
|
||||
#define MAX_TEMP_C 450 // Max soldering temp selectable °C
|
||||
#define MAX_TEMP_F 850 // Max soldering temp selectable °F
|
||||
#define MIN_TEMP_C 10 // Min soldering temp selectable °C
|
||||
#define MIN_TEMP_F 60 // Min soldering temp selectable °F
|
||||
#define MIN_BOOST_TEMP_C 250 // The min settable temp for boost mode °C
|
||||
#define MIN_BOOST_TEMP_F 480 // The min settable temp for boost mode °F
|
||||
#define ACCEL_LIS
|
||||
#define ACCEL_MSA
|
||||
#define POW_PD 1
|
||||
|
||||
@@ -114,23 +114,24 @@
|
||||
#endif
|
||||
|
||||
#ifdef MODEL_Pinecil
|
||||
#define SOLDERING_TEMP 320 // Default soldering temp is 320.0 °C
|
||||
#define VOLTAGE_DIV 467 // 467 - Default divider from schematic
|
||||
#define CALIBRATION_OFFSET 900 // 900 - Default adc offset in uV
|
||||
#define PID_POWER_LIMIT 70 // Sets the max pwm power limit
|
||||
#define POWER_LIMIT 0 // 0 watts default limit
|
||||
#define MAX_POWER_LIMIT 70 //
|
||||
#define POWER_LIMIT_STEPS 5 //
|
||||
#define OP_AMP_GAIN_STAGE OP_AMP_GAIN_STAGE_PINECIL // Uses TS100 resistors
|
||||
#define TEMP_uV_LOOKUP_HAKKO // Use Hakko lookup table
|
||||
#define USB_PD_VMAX 20 // Maximum voltage for PD to negotiate
|
||||
#define PID_TIM_HZ (8) // Tick rate of the PID loop
|
||||
#define MAX_TEMP_C 450 // Max soldering temp selectable °C
|
||||
#define MAX_TEMP_F 850 // Max soldering temp selectable °F
|
||||
#define MIN_TEMP_C 10 // Min soldering temp selectable °C
|
||||
#define MIN_TEMP_F 60 // Min soldering temp selectable °F
|
||||
#define MIN_BOOST_TEMP_C 250 // The min settable temp for boost mode °C
|
||||
#define MIN_BOOST_TEMP_F 480 // The min settable temp for boost mode °F
|
||||
#define SOLDERING_TEMP 320 // Default soldering temp is 320.0 °C
|
||||
#define VOLTAGE_DIV 467 // 467 - Default divider from schematic
|
||||
#define CALIBRATION_OFFSET 900 // 900 - Default adc offset in uV
|
||||
#define MIN_CALIBRATION_OFFSET 100 // Min value for calibration
|
||||
#define PID_POWER_LIMIT 70 // Sets the max pwm power limit
|
||||
#define POWER_LIMIT 0 // 0 watts default limit
|
||||
#define MAX_POWER_LIMIT 70 //
|
||||
#define POWER_LIMIT_STEPS 5 //
|
||||
#define OP_AMP_GAIN_STAGE OP_AMP_GAIN_STAGE_PINECIL // Uses TS100 resistors
|
||||
#define TEMP_uV_LOOKUP_HAKKO // Use Hakko lookup table
|
||||
#define USB_PD_VMAX 20 // Maximum voltage for PD to negotiate
|
||||
#define PID_TIM_HZ (8) // Tick rate of the PID loop
|
||||
#define MAX_TEMP_C 450 // Max soldering temp selectable °C
|
||||
#define MAX_TEMP_F 850 // Max soldering temp selectable °F
|
||||
#define MIN_TEMP_C 10 // Min soldering temp selectable °C
|
||||
#define MIN_TEMP_F 60 // Min soldering temp selectable °F
|
||||
#define MIN_BOOST_TEMP_C 250 // The min settable temp for boost mode °C
|
||||
#define MIN_BOOST_TEMP_F 480 // The min settable temp for boost mode °F
|
||||
|
||||
#define POW_PD 1
|
||||
#define POW_QC 1
|
||||
|
||||
@@ -124,26 +124,77 @@ const uint8_t WarningBlock24[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x30, 0x0C, 0x02, 0xF1, 0xF1, 0xF1, 0x02, 0x0C, 0x30, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xC0, 0xB0, 0x8C, 0x83, 0x80, 0x80, 0x80, 0x80, 0xB3, 0xB3, 0xB3, 0x80, 0x80, 0x80, 0x80, 0x83, 0x8C, 0xB0, 0xC0, 0x00, 0x00};
|
||||
|
||||
#if defined(MODEL_TS100) + defined(MODEL_Pinecil) >= 1
|
||||
const uint8_t idleScreenBG[] = {
|
||||
// width = 84
|
||||
// height = 16
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x81, 0xbd, 0x81, 0x01, 0x01, 0xfd, 0x01, 0x01, 0x71, 0x55, 0x71,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x04, 0x18, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xc1, 0x25, 0x19, 0x01, 0xc1, 0x25, 0x19, 0x01, 0x81, 0x49, 0x31, 0x01, 0x02, 0x02, 0x04, 0x18, 0xe0, 0x00, 0x00, 0x00, 0x00,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x19, 0x25, 0xc1, 0x01, 0x19, 0x25, 0xc1, 0x01, 0x31, 0x49, 0x81, 0x01, 0x02, 0x02, 0x04, 0x18, 0xe0, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x18, 0x20, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x83, 0xba, 0x83, 0x80, 0x8e, 0xaa, 0x8e, 0x80, 0x80, 0xbf, 0x80,
|
||||
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x18, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x18, 0x20, 0x44, 0x54, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
|
||||
0x94, 0x94, 0x94, 0x94, 0x94, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0x94, 0x95, 0x88, 0x88, 0x89, 0x8a, 0x80, 0x80, 0x40, 0x40, 0x20, 0x18, 0x07, 0x00, 0x00, 0x00, 0x00};
|
||||
|
||||
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x18, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x18, 0x22, 0x4a, 0x46, 0x8a, 0xa6, 0x8a, 0xa6, 0x8a, 0xa6,
|
||||
0x8a, 0xa6, 0x8e, 0xa6, 0x8e, 0xa6, 0x8e, 0xa6, 0x8e, 0xbe, 0x80, 0xae, 0x94, 0x8c, 0x94, 0x88, 0x8a, 0x89, 0x80, 0x40, 0x40, 0x20, 0x18, 0x07, 0x00, 0x00, 0x00, 0x00};
|
||||
const uint8_t disconnectedTipIcon[] = {
|
||||
//
|
||||
// 41 x 16
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x80, 0x18, 0xb0, 0x60, 0xc0, 0x80, 0xc0, 0x60, 0xb0, 0x18, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80,
|
||||
0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x50, 0x00,
|
||||
0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xcc, 0x9c, 0x38, 0x70, 0xe0, 0xc0, 0x80, 0x20, 0x70, 0x38, 0x1c, 0xcc, 0x40,
|
||||
0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, 0x60, 0xe0, 0x01, 0x01, 0x01, 0x02, 0x01, 0x02, 0x05, 0x00, 0x07, 0x01, 0x04, 0x01, 0x04, 0x01, 0x04,
|
||||
0x31, 0x38, 0x1c, 0x0e, 0x04, 0x01, 0x03, 0x07, 0x0e, 0x1c, 0x39, 0x30, 0x01, 0x03, 0x00, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x04, 0x09, 0x0f};
|
||||
const uint8_t disconnectedTipIconFlip[] = {
|
||||
//
|
||||
0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x02, 0x30, 0x1a, 0x0c, 0x07, 0x03, 0x07, 0x0c, 0x1a, 0x30, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02,
|
||||
0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x15, 0x00
|
||||
// 41 x 16
|
||||
0xe0, 0x60, 0xc0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0x40, 0xcc, 0x1c, 0x38, 0x70, 0x20, 0x80, 0xc0, 0xe0, 0x70, 0x38, 0x9c, 0xcc, 0xc0, 0xc0,
|
||||
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x0f, 0x09, 0x04, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x00, 0x03, 0x01, 0x30,
|
||||
0x39, 0x1c, 0x0e, 0x07, 0x03, 0x01, 0x04, 0x0e, 0x1c, 0x38, 0x31, 0x04, 0x01, 0x04, 0x01, 0x04, 0x01, 0x07, 0x00, 0x05, 0x02, 0x01, 0x02, 0x01, 0x01, 0x01};
|
||||
#endif
|
||||
|
||||
#if defined(MODEL_TS80) + defined(MODEL_TS80P) >= 1
|
||||
const uint8_t idleScreenBG[] = {
|
||||
// width = 84
|
||||
// height = 16
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x81, 0xbd, 0x81, 0x01, 0x01, 0xfd, 0x01, 0x01, 0x71, 0x55, 0x71,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x04, 0x18, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x19, 0x25, 0xc1, 0x01, 0x19, 0x25, 0xc1, 0x01, 0x31, 0x49, 0x81, 0x01, 0x02, 0x02, 0x04, 0x18, 0xe0, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x18, 0x20, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x83, 0xba, 0x83, 0x80, 0x8e, 0xaa, 0x8e, 0x80, 0x80, 0xbf, 0x80,
|
||||
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x18, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x18, 0x20, 0x44, 0x4c, 0x94, 0x8c, 0x94, 0x8c, 0x94, 0x8c,
|
||||
0x94, 0x8c, 0x94, 0x80, 0x9c, 0x8a, 0xa6, 0x8a, 0xa6, 0x8e, 0xa6, 0x9c, 0x81, 0x94, 0x88, 0x88, 0x8a, 0x81, 0x80, 0x40, 0x40, 0x20, 0x18, 0x07, 0x00, 0x00, 0x00, 0x00};
|
||||
const uint8_t disconnectedTipIcon[] = {
|
||||
//
|
||||
};
|
||||
// 41 x 16
|
||||
0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0xc0, 0xc0, 0xc0, 0x40, 0xc0, 0x40, 0x80, 0x00, 0x80, 0x80, 0x8c, 0x9c, 0x38, 0x70, 0xe0, 0xc0, 0x80, 0x20, 0x70, 0x38, 0x9c, 0x8c,
|
||||
0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0x40, 0xe0, 0x60, 0xe0, 0x01, 0x01, 0x01, 0x02, 0x00, 0x03, 0x04, 0x01, 0x04, 0x01, 0x04, 0x01, 0x03, 0x00, 0x02,
|
||||
0x01, 0x32, 0x39, 0x1c, 0x0e, 0x04, 0x01, 0x03, 0x07, 0x0e, 0x1c, 0x38, 0x31, 0x02, 0x01, 0x02, 0x00, 0x02, 0x01, 0x04, 0x01, 0x04, 0x01, 0x0a, 0x01, 0x0f};
|
||||
const uint8_t disconnectedTipIconFlip[] = {
|
||||
//
|
||||
// 41 x 16
|
||||
0xe0, 0x60, 0xe0, 0x40, 0xc0, 0xc0, 0xc0, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x8c, 0x9c, 0x38, 0x70, 0x20, 0x80, 0xc0, 0xe0, 0x70, 0x38, 0x9c, 0x8c, 0x80, 0x80, 0x00,
|
||||
0x80, 0x40, 0xc0, 0x40, 0xc0, 0xc0, 0xc0, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0f, 0x01, 0x0a, 0x01, 0x04, 0x01, 0x04, 0x01, 0x02, 0x00, 0x02, 0x01, 0x02, 0x31, 0x38,
|
||||
0x1c, 0x0e, 0x07, 0x03, 0x01, 0x04, 0x0e, 0x1c, 0x39, 0x32, 0x01, 0x02, 0x00, 0x03, 0x01, 0x04, 0x01, 0x04, 0x01, 0x04, 0x03, 0x00, 0x02, 0x01, 0x01, 0x01};
|
||||
#endif
|
||||
|
||||
#ifdef MODEL_MHP30
|
||||
const uint8_t idleScreenBG[] = {
|
||||
// width = 84
|
||||
// height = 16
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x81, 0xbd, 0x81, 0x01, 0x01, 0xfd, 0x01, 0x01, 0x71, 0x55, 0x71,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x04, 0x18, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x81,
|
||||
0x81, 0x99, 0xa5, 0x01, 0xc1, 0xd9, 0xe5, 0x21, 0xe1, 0xf1, 0x89, 0x41, 0xc1, 0x81, 0x81, 0x81, 0x81, 0x01, 0x01, 0x02, 0x02, 0x04, 0x18, 0xe0, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x18, 0x20, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x83, 0xba, 0x83, 0x80, 0x8e, 0xaa, 0x8e, 0x80, 0x80, 0xbf, 0x80,
|
||||
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x18, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x18, 0x20, 0x40, 0x40, 0x86, 0x89, 0x85, 0x91, 0x8b, 0x93,
|
||||
0x8b, 0xa3, 0x97, 0xa7, 0x97, 0xa7, 0x8f, 0xaf, 0x87, 0x97, 0xa5, 0x86, 0x93, 0x8b, 0x93, 0x83, 0x89, 0xa5, 0x89, 0x46, 0x40, 0x20, 0x18, 0x07, 0x00, 0x00, 0x00, 0x00};
|
||||
const uint8_t disconnectedTipIcon[] = {
|
||||
//
|
||||
// 41 x 16
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, 0xa0, 0x30, 0x70, 0x70, 0x60, 0x4c, 0x9c, 0x38, 0x70, 0xe4, 0xcc, 0x88, 0x20, 0x70, 0x38, 0x9c, 0x4c, 0x60,
|
||||
0x70, 0x60, 0x20, 0xa0, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x29, 0x10, 0x22, 0x01,
|
||||
0x32, 0x38, 0x1c, 0x0e, 0x04, 0x01, 0x03, 0x07, 0x0e, 0x1c, 0x38, 0x30, 0x01, 0x12, 0x29, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
|
||||
const uint8_t disconnectedTipIconFlip[] = {
|
||||
//
|
||||
// 41 x 16
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, 0xa0, 0x20, 0x60, 0x70, 0x60, 0x4c, 0x9c, 0x38, 0x70, 0x20, 0x88, 0xcc, 0xe4, 0x70, 0x38, 0x9c, 0x4c, 0x60, 0x70,
|
||||
0x70, 0x30, 0xa0, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x29, 0x12, 0x01, 0x30,
|
||||
0x38, 0x1c, 0x0e, 0x07, 0x03, 0x01, 0x04, 0x0e, 0x1c, 0x38, 0x32, 0x01, 0x22, 0x10, 0x29, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
|
||||
#endif
|
||||
|
||||
// 16 x 16
|
||||
const uint8_t brightnessIcon[]
|
||||
|
||||
Submodule source/Core/Drivers/usb-pd updated: a9ea9e9917...4c5a5625ba
@@ -16,9 +16,9 @@
|
||||
bool sanitiseSettings();
|
||||
|
||||
#ifdef POW_QC_20V
|
||||
#define QC_VOLTAGE_MAX 222
|
||||
#define QC_VOLTAGE_MAX 220
|
||||
#else
|
||||
#define QC_VOLTAGE_MAX 142
|
||||
#define QC_VOLTAGE_MAX 140
|
||||
#endif
|
||||
|
||||
/*
|
||||
@@ -26,6 +26,7 @@ bool sanitiseSettings();
|
||||
* flash in uint16_t chunks
|
||||
*/
|
||||
typedef struct {
|
||||
uint16_t versionMarker;
|
||||
uint16_t length; // Length of valid bytes following
|
||||
uint16_t settingsValues[SettingsOptionsLength];
|
||||
// used to make this nicely "good enough" aligned to 32 butes to make driver code trivial
|
||||
@@ -41,48 +42,48 @@ volatile systemSettingsType systemSettings;
|
||||
// For every setting we need to store the min/max/increment values
|
||||
typedef struct {
|
||||
const uint16_t min; // Inclusive minimum value
|
||||
const uint16_t max; // Exclusive maximum value
|
||||
const uint16_t max; // Inclusive maximum value
|
||||
const uint16_t increment; // Standard increment
|
||||
const uint16_t defaultValue; // Default vaue after reset
|
||||
} SettingConstants;
|
||||
|
||||
static const SettingConstants settingsConstants[(int)SettingsOptions::SettingsOptionsLength] = {
|
||||
//{min,max,increment,default}
|
||||
{10, 580, 5, 320}, // SolderingTemp
|
||||
{10, 580, 5, 150}, // SleepTemp
|
||||
{0, 16, 1, SLEEP_TIME}, // SleepTime
|
||||
{0, 5, 1, CUT_OUT_SETTING}, // MinDCVoltageCells
|
||||
{MIN_TEMP_C, MAX_TEMP_F, 5, 320}, // SolderingTemp
|
||||
{MIN_TEMP_C, MAX_TEMP_F, 5, 150}, // SleepTemp
|
||||
{0, 15, 1, SLEEP_TIME}, // SleepTime
|
||||
{0, 4, 1, CUT_OUT_SETTING}, // MinDCVoltageCells
|
||||
{24, 38, 1, RECOM_VOL_CELL}, // MinVoltageCells
|
||||
{90, QC_VOLTAGE_MAX, 2, 90}, // QCIdealVoltage
|
||||
{0, 3, 1, ORIENTATION_MODE}, // OrientationMode
|
||||
{0, 10, 1, SENSITIVITY}, // Sensitivity
|
||||
{0, 2, 1, ANIMATION_LOOP}, // AnimationLoop
|
||||
{0, settingOffSpeed_t::MAX_VALUE, 1, ANIMATION_SPEED}, // AnimationSpeed
|
||||
{0, 4, 1, AUTO_START_MODE}, // AutoStartMode
|
||||
{0, 61, 1, SHUTDOWN_TIME}, // ShutdownTime
|
||||
{0, 2, 1, COOLING_TEMP_BLINK}, // CoolingTempBlink
|
||||
{0, 2, 1, DETAILED_IDLE}, // DetailedIDLE
|
||||
{0, 2, 1, DETAILED_SOLDERING}, // DetailedSoldering
|
||||
{0, 2, 1, TEMPERATURE_INF}, // TemperatureInF
|
||||
{0, 2, 1, DESCRIPTION_SCROLL_SPEED}, // DescriptionScrollSpeed
|
||||
{0, 3, 1, LOCKING_MODE}, // LockingMode
|
||||
{0, 100, 1, POWER_PULSE_DEFAULT}, // KeepAwakePulse
|
||||
{0, 2, 1, ORIENTATION_MODE}, // OrientationMode
|
||||
{0, 9, 1, SENSITIVITY}, // Sensitivity
|
||||
{0, 1, 1, ANIMATION_LOOP}, // AnimationLoop
|
||||
{0, settingOffSpeed_t::MAX_VALUE - 1, 1, ANIMATION_SPEED}, // AnimationSpeed
|
||||
{0, 3, 1, AUTO_START_MODE}, // AutoStartMode
|
||||
{0, 60, 1, SHUTDOWN_TIME}, // ShutdownTime
|
||||
{0, 1, 1, COOLING_TEMP_BLINK}, // CoolingTempBlink
|
||||
{0, 1, 1, DETAILED_IDLE}, // DetailedIDLE
|
||||
{0, 1, 1, DETAILED_SOLDERING}, // DetailedSoldering
|
||||
{0, 1, 1, TEMPERATURE_INF}, // TemperatureInF
|
||||
{0, 1, 1, DESCRIPTION_SCROLL_SPEED}, // DescriptionScrollSpeed
|
||||
{0, 2, 1, LOCKING_MODE}, // LockingMode
|
||||
{0, 99, 1, POWER_PULSE_DEFAULT}, // KeepAwakePulse
|
||||
{1, POWER_PULSE_WAIT_MAX, 1, POWER_PULSE_WAIT_DEFAULT}, // KeepAwakePulseWait
|
||||
{1, POWER_PULSE_DURATION_MAX, 1, POWER_PULSE_DURATION_DEFAULT}, // KeepAwakePulseDuration
|
||||
{360, 900, 1, VOLTAGE_DIV}, // VoltageDiv
|
||||
{0, MAX_TEMP_F, 10, BOOST_TEMP}, // BoostTemp
|
||||
{100, 2500, 1, CALIBRATION_OFFSET}, // CalibrationOffset
|
||||
{MIN_TEMP_C, MAX_TEMP_F, 10, BOOST_TEMP}, // BoostTemp
|
||||
{MIN_CALIBRATION_OFFSET, 2500, 1, CALIBRATION_OFFSET}, // CalibrationOffset
|
||||
{0, MAX_POWER_LIMIT, POWER_LIMIT_STEPS, POWER_LIMIT}, // PowerLimit
|
||||
{0, 2, 1, REVERSE_BUTTON_TEMP_CHANGE}, // ReverseButtonTempChangeEnabled
|
||||
{0, 1, 1, REVERSE_BUTTON_TEMP_CHANGE}, // ReverseButtonTempChangeEnabled
|
||||
{5, TEMP_CHANGE_LONG_STEP_MAX, 5, TEMP_CHANGE_LONG_STEP}, // TempChangeLongStep
|
||||
{1, TEMP_CHANGE_SHORT_STEP_MAX, 1, TEMP_CHANGE_SHORT_STEP}, // TempChangeShortStep
|
||||
{0, 4, 1, 1}, // HallEffectSensitivity
|
||||
{0, 10, 1, 0}, // AccelMissingWarningCounter
|
||||
{0, 10, 1, 0}, // PDMissingWarningCounter
|
||||
{0, 3, 1, 1}, // HallEffectSensitivity
|
||||
{0, 9, 1, 0}, // AccelMissingWarningCounter
|
||||
{0, 9, 1, 0}, // PDMissingWarningCounter
|
||||
{0, 0xFFFF, 0, 41431 /*EN*/}, // UILanguage
|
||||
{0, 51, 1, 0}, // PDNegTimeout
|
||||
{0, 2, 1, 0}, // OLEDInversion
|
||||
{0, 100, 11, 33}, // OLEDBrightness
|
||||
{0, 50, 1, 20}, // PDNegTimeout
|
||||
{0, 1, 1, 0}, // OLEDInversion
|
||||
{0, 99, 11, 33}, // OLEDBrightness
|
||||
|
||||
};
|
||||
static_assert((sizeof(settingsConstants) / sizeof(SettingConstants)) == ((int)SettingsOptions::SettingsOptionsLength));
|
||||
@@ -100,6 +101,11 @@ bool sanitiseSettings() {
|
||||
// For all settings, need to ensure settings are in a valid range
|
||||
// First for any not know about due to array growth, reset them and update the length value
|
||||
bool dirty = false;
|
||||
if (systemSettings.versionMarker != 0x55AA) {
|
||||
memset((void *)&systemSettings, 0xFF, sizeof(systemSettings));
|
||||
systemSettings.versionMarker = 0x55AA;
|
||||
dirty = true;
|
||||
}
|
||||
if (systemSettings.padding != 0xFFFFFFFF) {
|
||||
systemSettings.padding = 0xFFFFFFFF; // Force padding to 0xFFFFFFFF so that rolling forwards / back should be easier
|
||||
dirty = true;
|
||||
@@ -115,8 +121,7 @@ bool sanitiseSettings() {
|
||||
// Check min max for all settings, if outside the range, move to default
|
||||
if (systemSettings.settingsValues[i] < settingsConstants[i].min || systemSettings.settingsValues[i] > settingsConstants[i].max) {
|
||||
systemSettings.settingsValues[i] = settingsConstants[i].defaultValue;
|
||||
|
||||
dirty = true;
|
||||
dirty = true;
|
||||
}
|
||||
}
|
||||
if (dirty) {
|
||||
@@ -133,34 +138,45 @@ void resetSettings() {
|
||||
void setSettingValue(const enum SettingsOptions option, const uint16_t newValue) {
|
||||
const auto constants = settingsConstants[(int)option];
|
||||
systemSettings.settingsValues[(int)option] = newValue;
|
||||
// If less than min, constrain
|
||||
if (systemSettings.settingsValues[(int)option] < constants.min) {
|
||||
systemSettings.settingsValues[(int)option] = constants.min;
|
||||
}
|
||||
// If hit max, constrain
|
||||
if (systemSettings.settingsValues[(int)option] >= constants.max) {
|
||||
systemSettings.settingsValues[(int)option] = constants.max - 1;
|
||||
if (systemSettings.settingsValues[(int)option] > constants.max) {
|
||||
systemSettings.settingsValues[(int)option] = constants.max;
|
||||
}
|
||||
}
|
||||
// Lookup wrapper for ease of use (with typing)
|
||||
uint16_t getSettingValue(const enum SettingsOptions option) { return systemSettings.settingsValues[(int)option]; }
|
||||
|
||||
// Increment by the step size to the next value. If past the end wrap to the minimum
|
||||
// Returns true if we are on the _last_ value
|
||||
bool nextSettingValue(const enum SettingsOptions option) {
|
||||
const auto constants = settingsConstants[(int)option];
|
||||
if (systemSettings.settingsValues[(int)option] >= (constants.max - constants.increment)) {
|
||||
if (systemSettings.settingsValues[(int)option] == (constants.max)) {
|
||||
// Already at max, wrap to the start
|
||||
systemSettings.settingsValues[(int)option] = constants.min;
|
||||
} else if (systemSettings.settingsValues[(int)option] >= (constants.max - constants.increment)) {
|
||||
// If within one increment of the end, constrain to the end
|
||||
systemSettings.settingsValues[(int)option] = constants.max;
|
||||
} else {
|
||||
// Otherwise increment
|
||||
systemSettings.settingsValues[(int)option] += constants.increment;
|
||||
}
|
||||
return (constants.max - systemSettings.settingsValues[(int)option]) <= constants.increment;
|
||||
// Return if we are at the max
|
||||
return constants.max == systemSettings.settingsValues[(int)option];
|
||||
}
|
||||
|
||||
// Step backwards on the settings item
|
||||
// Return true if we are at the end (min)
|
||||
bool prevSettingValue(const enum SettingsOptions option) {
|
||||
const auto constants = settingsConstants[(int)option];
|
||||
int value = systemSettings.settingsValues[(int)option];
|
||||
if (value <= constants.min) {
|
||||
value = constants.max;
|
||||
} else {
|
||||
value -= constants.increment;
|
||||
}
|
||||
value -= constants.increment;
|
||||
systemSettings.settingsValues[(int)option] = value;
|
||||
return systemSettings.settingsValues[(int)option] == constants.min;
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ void gui_Menu(const menuitem *menu);
|
||||
|
||||
#ifdef POW_DC
|
||||
static void settings_displayInputVRange(void);
|
||||
static bool settings_showInputVOptions(void);
|
||||
static void settings_displayInputMinVRange(void);
|
||||
#endif
|
||||
#ifdef POW_QC
|
||||
@@ -27,12 +28,13 @@ static void settings_displayQCInputV(void);
|
||||
static void settings_displayPDNegTimeout(void);
|
||||
#endif
|
||||
#ifndef NO_SLEEP_MODE
|
||||
static void settings_displaySensitivity(void);
|
||||
static bool settings_showSleepOptions(void);
|
||||
static bool settings_setSleepTemp(void);
|
||||
static void settings_displaySleepTemp(void);
|
||||
static void settings_displaySleepTime(void);
|
||||
#endif
|
||||
static void settings_displayShutdownTime(void);
|
||||
static void settings_displaySensitivity(void);
|
||||
#endif
|
||||
static bool settings_setTempF(void);
|
||||
static void settings_displayTempF(void);
|
||||
static void settings_displayAdvancedSolderingScreens(void);
|
||||
@@ -59,6 +61,7 @@ static void settings_displayReverseButtonTempChangeEnabled(void);
|
||||
static void settings_displayTempChangeShortStep(void);
|
||||
static void settings_displayTempChangeLongStep(void);
|
||||
static void settings_displayPowerPulse(void);
|
||||
static bool settings_displayAnimationOptions(void);
|
||||
static void settings_displayAnimationSpeed(void);
|
||||
static void settings_displayAnimationLoop(void);
|
||||
static void settings_displayPowerPulseWait(void);
|
||||
@@ -153,8 +156,8 @@ const menuitem powerMenu[] = {
|
||||
* Power Source
|
||||
*/
|
||||
#ifdef POW_DC
|
||||
{SETTINGS_DESC(SettingsItemIndex::DCInCutoff), nullptr, settings_displayInputVRange, nullptr, SettingsOptions::MinDCVoltageCells}, /*Voltage input*/
|
||||
{SETTINGS_DESC(SettingsItemIndex::MinVolCell), nullptr, settings_displayInputMinVRange, nullptr, SettingsOptions::MinVoltageCells}, /*Minimum voltage input*/
|
||||
{SETTINGS_DESC(SettingsItemIndex::DCInCutoff), nullptr, settings_displayInputVRange, nullptr, SettingsOptions::MinDCVoltageCells}, /*Voltage input*/
|
||||
{SETTINGS_DESC(SettingsItemIndex::MinVolCell), nullptr, settings_displayInputMinVRange, settings_showInputVOptions, SettingsOptions::MinVoltageCells}, /*Minimum voltage input*/
|
||||
#endif
|
||||
#ifdef POW_QC
|
||||
{SETTINGS_DESC(SettingsItemIndex::QCMaxVoltage), nullptr, settings_displayQCInputV, nullptr, SettingsOptions::QCIdealVoltage}, /*Voltage input*/
|
||||
@@ -199,28 +202,28 @@ const menuitem UIMenu[] = {
|
||||
{SETTINGS_DESC(SettingsItemIndex::CooldownBlink), nullptr, settings_displayCoolingBlinkEnabled, nullptr, SettingsOptions::CoolingTempBlink}, /*Cooling blink warning*/
|
||||
{SETTINGS_DESC(SettingsItemIndex::ScrollingSpeed), nullptr, settings_displayScrollSpeed, nullptr, SettingsOptions::DescriptionScrollSpeed}, /*Scroll Speed for descriptions*/
|
||||
{SETTINGS_DESC(SettingsItemIndex::ReverseButtonTempChange), nullptr, settings_displayReverseButtonTempChangeEnabled, nullptr,
|
||||
SettingsOptions::ReverseButtonTempChangeEnabled}, /* Reverse Temp change buttons + - */
|
||||
{SETTINGS_DESC(SettingsItemIndex::AnimSpeed), nullptr, settings_displayAnimationSpeed, nullptr, SettingsOptions::AnimationSpeed}, /*Animation Speed adjustment */
|
||||
{SETTINGS_DESC(SettingsItemIndex::AnimLoop), nullptr, settings_displayAnimationLoop, nullptr, SettingsOptions::AnimationLoop}, /*Animation Loop switch */
|
||||
{SETTINGS_DESC(SettingsItemIndex::Brightness), nullptr, settings_displayBrightnessLevel, nullptr, SettingsOptions::OLEDBrightness}, /*Brightness Level*/
|
||||
{SETTINGS_DESC(SettingsItemIndex::ColourInversion), nullptr, settings_displayInvertColor, nullptr, SettingsOptions::OLEDInversion}, /*Invert screen colour*/
|
||||
{SETTINGS_DESC(SettingsItemIndex::AdvancedIdle), nullptr, settings_displayAdvancedIDLEScreens, nullptr, SettingsOptions::DetailedIDLE}, /* Advanced idle screen*/
|
||||
{SETTINGS_DESC(SettingsItemIndex::AdvancedSoldering), nullptr, settings_displayAdvancedSolderingScreens, nullptr, SettingsOptions::DetailedSoldering}, /* Advanced soldering screen*/
|
||||
{0, nullptr, nullptr, nullptr, SettingsOptions::SettingsOptionsLength} // end of menu marker. DO NOT REMOVE
|
||||
SettingsOptions::ReverseButtonTempChangeEnabled}, /* Reverse Temp change buttons + - */
|
||||
{SETTINGS_DESC(SettingsItemIndex::AnimSpeed), nullptr, settings_displayAnimationSpeed, nullptr, SettingsOptions::AnimationSpeed}, /*Animation Speed adjustment */
|
||||
{SETTINGS_DESC(SettingsItemIndex::AnimLoop), nullptr, settings_displayAnimationLoop, settings_displayAnimationOptions, SettingsOptions::AnimationLoop}, /*Animation Loop switch */
|
||||
{SETTINGS_DESC(SettingsItemIndex::Brightness), nullptr, settings_displayBrightnessLevel, nullptr, SettingsOptions::OLEDBrightness}, /*Brightness Level*/
|
||||
{SETTINGS_DESC(SettingsItemIndex::ColourInversion), nullptr, settings_displayInvertColor, nullptr, SettingsOptions::OLEDInversion}, /*Invert screen colour*/
|
||||
{SETTINGS_DESC(SettingsItemIndex::AdvancedIdle), nullptr, settings_displayAdvancedIDLEScreens, nullptr, SettingsOptions::DetailedIDLE}, /* Advanced idle screen*/
|
||||
{SETTINGS_DESC(SettingsItemIndex::AdvancedSoldering), nullptr, settings_displayAdvancedSolderingScreens, nullptr, SettingsOptions::DetailedSoldering}, /* Advanced soldering screen*/
|
||||
{0, nullptr, nullptr, nullptr, SettingsOptions::SettingsOptionsLength} // end of menu marker. DO NOT REMOVE
|
||||
};
|
||||
const menuitem PowerSavingMenu[] = {
|
||||
/*
|
||||
* Sleep Temp
|
||||
* Motion Sensitivity
|
||||
* Sleep Temp
|
||||
* Sleep Time
|
||||
* Shutdown Time
|
||||
* Motion Sensitivity
|
||||
*/
|
||||
#ifndef NO_SLEEP_MODE
|
||||
{SETTINGS_DESC(SettingsItemIndex::SleepTemperature), settings_setSleepTemp, settings_displaySleepTemp, nullptr, SettingsOptions::SettingsOptionsLength}, /*Sleep Temp*/
|
||||
{SETTINGS_DESC(SettingsItemIndex::SleepTimeout), nullptr, settings_displaySleepTime, nullptr, SettingsOptions::SleepTime}, /*Sleep Time*/
|
||||
{SETTINGS_DESC(SettingsItemIndex::MotionSensitivity), nullptr, settings_displaySensitivity, nullptr, SettingsOptions::Sensitivity}, /* Motion Sensitivity*/
|
||||
{SETTINGS_DESC(SettingsItemIndex::SleepTemperature), settings_setSleepTemp, settings_displaySleepTemp, settings_showSleepOptions, SettingsOptions::SettingsOptionsLength}, /*Sleep Temp*/
|
||||
{SETTINGS_DESC(SettingsItemIndex::SleepTimeout), nullptr, settings_displaySleepTime, settings_showSleepOptions, SettingsOptions::SleepTime}, /*Sleep Time*/
|
||||
{SETTINGS_DESC(SettingsItemIndex::ShutdownTimeout), nullptr, settings_displayShutdownTime, settings_showSleepOptions, SettingsOptions::ShutdownTime}, /*Shutdown Time*/
|
||||
#endif
|
||||
{SETTINGS_DESC(SettingsItemIndex::ShutdownTimeout), nullptr, settings_displayShutdownTime, nullptr, SettingsOptions::ShutdownTime}, /*Shutdown Time*/
|
||||
{SETTINGS_DESC(SettingsItemIndex::MotionSensitivity), nullptr, settings_displaySensitivity, nullptr, SettingsOptions::Sensitivity}, /* Motion Sensitivity*/
|
||||
#ifdef HALL_SENSOR
|
||||
{SETTINGS_DESC(SettingsItemIndex::HallEffSensitivity), nullptr, settings_displayHallEffect, nullptr, SettingsOptions::HallEffectSensitivity}, /* HallEffect Sensitivity*/
|
||||
#endif
|
||||
@@ -309,16 +312,12 @@ static void settings_displayInputVRange(void) {
|
||||
}
|
||||
}
|
||||
|
||||
static bool settings_showInputVOptions(void) { return getSettingValue(SettingsOptions::MinDCVoltageCells) > 0; }
|
||||
static void settings_displayInputMinVRange(void) {
|
||||
if (getSettingValue(SettingsOptions::MinDCVoltageCells)) {
|
||||
printShortDescription(SettingsItemIndex::MinVolCell, 4);
|
||||
OLED::printNumber(getSettingValue(SettingsOptions::MinVoltageCells) / 10, 2, FontStyle::LARGE);
|
||||
OLED::print(SymbolDot, FontStyle::LARGE);
|
||||
OLED::printNumber(getSettingValue(SettingsOptions::MinVoltageCells) % 10, 1, FontStyle::LARGE);
|
||||
} else {
|
||||
printShortDescription(SettingsItemIndex::MinVolCell, 5);
|
||||
OLED::print(translatedString(Tr->SettingNAChar), FontStyle::LARGE);
|
||||
}
|
||||
printShortDescription(SettingsItemIndex::MinVolCell, 4);
|
||||
OLED::printNumber(getSettingValue(SettingsOptions::MinVoltageCells) / 10, 2, FontStyle::LARGE);
|
||||
OLED::print(SymbolDot, FontStyle::LARGE);
|
||||
OLED::printNumber(getSettingValue(SettingsOptions::MinVoltageCells) % 10, 1, FontStyle::LARGE);
|
||||
}
|
||||
#endif
|
||||
#ifdef POW_QC
|
||||
@@ -331,7 +330,6 @@ static void settings_displayQCInputV(void) {
|
||||
OLED::printNumber(voltage / 10, 2, FontStyle::LARGE);
|
||||
OLED::print(SymbolDot, FontStyle::LARGE);
|
||||
OLED::printNumber(voltage % 10, 1, FontStyle::LARGE);
|
||||
OLED::print(SymbolVolts, FontStyle::LARGE);
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -350,6 +348,17 @@ static void settings_displayPDNegTimeout(void) {
|
||||
#endif
|
||||
|
||||
#ifndef NO_SLEEP_MODE
|
||||
|
||||
static void settings_displayShutdownTime(void) {
|
||||
printShortDescription(SettingsItemIndex::ShutdownTimeout, 5);
|
||||
if (getSettingValue(SettingsOptions::ShutdownTime) == 0) {
|
||||
OLED::print(translatedString(Tr->OffString), FontStyle::LARGE);
|
||||
} else {
|
||||
OLED::printNumber(getSettingValue(SettingsOptions::ShutdownTime), 2, FontStyle::LARGE);
|
||||
OLED::print(SymbolMinutes, FontStyle::LARGE);
|
||||
}
|
||||
}
|
||||
|
||||
static bool settings_setSleepTemp(void) {
|
||||
// If in C, 10 deg, if in F 20 deg
|
||||
uint16_t temp = getSettingValue(SettingsOptions::SleepTemp);
|
||||
@@ -368,6 +377,12 @@ static bool settings_setSleepTemp(void) {
|
||||
}
|
||||
}
|
||||
|
||||
static void settings_displaySensitivity(void) {
|
||||
printShortDescription(SettingsItemIndex::MotionSensitivity, 7);
|
||||
OLED::printNumber(getSettingValue(SettingsOptions::Sensitivity), 1, FontStyle::LARGE, false);
|
||||
}
|
||||
|
||||
static bool settings_showSleepOptions(void) { return getSettingValue(SettingsOptions::Sensitivity) > 0; }
|
||||
static void settings_displaySleepTemp(void) {
|
||||
printShortDescription(SettingsItemIndex::SleepTemperature, 5);
|
||||
OLED::printNumber(getSettingValue(SettingsOptions::SleepTemp), 3, FontStyle::LARGE);
|
||||
@@ -387,15 +402,6 @@ static void settings_displaySleepTime(void) {
|
||||
}
|
||||
#endif
|
||||
|
||||
static void settings_displayShutdownTime(void) {
|
||||
printShortDescription(SettingsItemIndex::ShutdownTimeout, 5);
|
||||
if (getSettingValue(SettingsOptions::ShutdownTime) == 0) {
|
||||
OLED::print(translatedString(Tr->OffString), FontStyle::LARGE);
|
||||
} else {
|
||||
OLED::printNumber(getSettingValue(SettingsOptions::ShutdownTime), 2, FontStyle::LARGE);
|
||||
OLED::print(SymbolMinutes, FontStyle::LARGE);
|
||||
}
|
||||
}
|
||||
static bool settings_setTempF(void) {
|
||||
bool res = nextSettingValue(SettingsOptions::TemperatureInF);
|
||||
uint16_t BoostTemp = getSettingValue(SettingsOptions::BoostTemp);
|
||||
@@ -435,11 +441,6 @@ static void settings_displayTempF(void) {
|
||||
OLED::print((getSettingValue(SettingsOptions::TemperatureInF)) ? SymbolDegF : SymbolDegC, FontStyle::LARGE);
|
||||
}
|
||||
|
||||
static void settings_displaySensitivity(void) {
|
||||
printShortDescription(SettingsItemIndex::MotionSensitivity, 7);
|
||||
OLED::printNumber(getSettingValue(SettingsOptions::Sensitivity), 1, FontStyle::LARGE, false);
|
||||
}
|
||||
|
||||
static void settings_displayAdvancedSolderingScreens(void) {
|
||||
printShortDescription(SettingsItemIndex::AdvancedSoldering, 7);
|
||||
OLED::drawCheckbox(getSettingValue(SettingsOptions::DetailedSoldering));
|
||||
@@ -705,6 +706,7 @@ static void settings_displayPowerPulse(void) {
|
||||
}
|
||||
}
|
||||
|
||||
static bool settings_displayAnimationOptions(void) { return getSettingValue(SettingsOptions::AnimationSpeed) > 0; }
|
||||
static void settings_displayAnimationLoop(void) {
|
||||
printShortDescription(SettingsItemIndex::AnimLoop, 7);
|
||||
OLED::drawCheckbox(getSettingValue(SettingsOptions::AnimationLoop));
|
||||
@@ -854,6 +856,17 @@ static bool settings_enterAdvancedMenu(void) {
|
||||
return false;
|
||||
}
|
||||
|
||||
uint8_t gui_getMenuLength(const menuitem *menu) {
|
||||
uint8_t scrollContentSize = 0;
|
||||
for (uint8_t i = 0; menu[i].draw != nullptr; i++) {
|
||||
if (menu[i].isVisible == nullptr) {
|
||||
scrollContentSize += 1; // Always visible
|
||||
} else if (menu[i].isVisible()) {
|
||||
scrollContentSize += 1; // Selectively visible and chosen to show
|
||||
}
|
||||
}
|
||||
return scrollContentSize;
|
||||
}
|
||||
void gui_Menu(const menuitem *menu) {
|
||||
// Draw the settings menu and provide iteration support etc
|
||||
|
||||
@@ -868,29 +881,24 @@ void gui_Menu(const menuitem *menu) {
|
||||
Exiting,
|
||||
};
|
||||
|
||||
uint8_t currentScreen = 0;
|
||||
TickType_t autoRepeatTimer = 0;
|
||||
TickType_t autoRepeatAcceleration = 0;
|
||||
bool earlyExit = false;
|
||||
bool lcdRefresh = true;
|
||||
ButtonState lastButtonState = BUTTON_NONE;
|
||||
uint8_t scrollContentSize = 0;
|
||||
bool scrollBlink = false;
|
||||
bool lastValue = false;
|
||||
NavState navState = NavState::Entering;
|
||||
uint8_t currentScreen = 0; // Current screen index in the menu struct
|
||||
uint8_t screensSkipped = 0; // Number of screens skipped due to being disabled
|
||||
TickType_t autoRepeatTimer = 0;
|
||||
TickType_t autoRepeatAcceleration = 0;
|
||||
bool earlyExit = false;
|
||||
bool lcdRefresh = true;
|
||||
|
||||
ButtonState lastButtonState = BUTTON_NONE;
|
||||
uint8_t scrollContentSize = gui_getMenuLength(menu);
|
||||
|
||||
bool scrollBlink = false;
|
||||
bool lastValue = false;
|
||||
NavState navState = NavState::Entering;
|
||||
|
||||
ScrollMessage scrollMessage;
|
||||
|
||||
for (uint8_t i = 0; menu[i].draw != nullptr; i++) {
|
||||
if (menu[i].isVisible == nullptr) {
|
||||
scrollContentSize += 1; // Always visible
|
||||
} else if (menu[i].isVisible()) {
|
||||
scrollContentSize += 1; // Selectively visible and chosen to show
|
||||
}
|
||||
}
|
||||
|
||||
while ((menu[currentScreen].draw != nullptr) && earlyExit == false) {
|
||||
|
||||
bool valueChanged = false;
|
||||
// Handle menu transition:
|
||||
if (navState != NavState::Idle) {
|
||||
// Check if this menu item shall be skipped. If it shall be skipped,
|
||||
@@ -901,6 +909,7 @@ void gui_Menu(const menuitem *menu) {
|
||||
if (menu[currentScreen].isVisible != nullptr) {
|
||||
if (!menu[currentScreen].isVisible()) {
|
||||
currentScreen++;
|
||||
screensSkipped++;
|
||||
OLED::useSecondaryFramebuffer(false);
|
||||
continue;
|
||||
}
|
||||
@@ -939,7 +948,7 @@ void gui_Menu(const menuitem *menu) {
|
||||
OLED::clearScreen();
|
||||
menu[currentScreen].draw();
|
||||
uint8_t indicatorHeight = OLED_HEIGHT / scrollContentSize;
|
||||
uint8_t position = OLED_HEIGHT * currentScreen / scrollContentSize;
|
||||
uint8_t position = OLED_HEIGHT * (currentScreen - screensSkipped) / scrollContentSize;
|
||||
if (lastValue)
|
||||
scrollBlink = !scrollBlink;
|
||||
if (!lastValue || !scrollBlink)
|
||||
@@ -965,6 +974,7 @@ void gui_Menu(const menuitem *menu) {
|
||||
|
||||
auto callIncrementHandler = [&]() {
|
||||
wasInGuiMenu = false;
|
||||
valueChanged = true;
|
||||
bool res = false;
|
||||
if ((int)menu[currentScreen].autoSettingOption < (int)SettingsOptions::SettingsOptionsLength) {
|
||||
res = nextSettingValue(menu[currentScreen].autoSettingOption);
|
||||
@@ -1040,6 +1050,10 @@ void gui_Menu(const menuitem *menu) {
|
||||
earlyExit = true;
|
||||
scrollMessage.reset();
|
||||
}
|
||||
if (valueChanged) {
|
||||
// If user changed value, update the scroll content size
|
||||
scrollContentSize = gui_getMenuLength(menu);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -913,7 +913,7 @@ void startGUITask(void const *argument) {
|
||||
OLED::setCursor(0, 0);
|
||||
if (getSettingValue(SettingsOptions::DetailedIDLE)) {
|
||||
if (isTipDisconnected()) {
|
||||
OLED::print(translatedString(Tr->TipDisconnectedString), FontStyle::SMALL);
|
||||
OLED::drawArea(0, 0, 41, 16, disconnectedTipIcon);
|
||||
} else {
|
||||
if (!(getSettingValue(SettingsOptions::CoolingTempBlink) && (tipTemp > 55) && (xTaskGetTickCount() % 1000 < 300)))
|
||||
// Blink temp if setting enable and temp < 55°
|
||||
@@ -986,7 +986,7 @@ void startGUITask(void const *argument) {
|
||||
if (OLED::getRotation()) {
|
||||
#endif
|
||||
// in right handed mode we want to draw over the first part
|
||||
OLED::drawArea(55, 0, 41, 16, disconnectedTipIcon);
|
||||
OLED::drawArea(55, 0, 41, 16, disconnectedTipIconFlip);
|
||||
|
||||
} else {
|
||||
OLED::drawArea(0, 0, 41, 16, disconnectedTipIcon);
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
ifndef model
|
||||
model:=TS100
|
||||
endif
|
||||
@@ -11,18 +10,30 @@ ifneq ($(model),$(filter $(model),$(ALL_MODELS)))
|
||||
$(error Invalid model '$(model)', valid options are: $(ALL_MODELS))
|
||||
endif
|
||||
|
||||
# output folder
|
||||
HEXFILE_DIR=Hexfile
|
||||
# temporary objects folder
|
||||
OUTPUT_DIR_BASE=Objects
|
||||
OUTPUT_DIR=Objects/$(model)
|
||||
|
||||
ALL_LANGUAGES=BG CS DA DE EN ES FI FR HR HU IT JA_JP LT NL NL_BE NO PL PT RU SK SL SR_CYRL SR_LATN SV TR UK YUE_HK ZH_CN ZH_TW
|
||||
|
||||
LANGUAGE_GROUP_CJK_LANGS=EN JA_JP YUE_HK ZH_TW ZH_CN
|
||||
LANGUAGE_GROUP_CJK_NAME=Chinese+Japanese
|
||||
|
||||
ifdef custom_multi_langs
|
||||
RUN_SHELL_CMD := $(shell rm -Rf {Core/Gen,$(OUTPUT_DIR)/Core/Gen,$(HEXFILE_DIR)/*_Custom.*})
|
||||
LANGUAGE_GROUP_CUSTOM_LANGS=$(custom_multi_langs)
|
||||
LANGUAGE_GROUP_CUSTOM_NAME=Custom
|
||||
endif
|
||||
|
||||
LANGUAGE_GROUP_CYRILLIC_LANGS=EN BG RU SR_CYRL SR_LATN UK
|
||||
LANGUAGE_GROUP_CYRILLIC_NAME=Bulgarian+Russian+Serbian+Ukrainian
|
||||
|
||||
LANGUAGE_GROUP_EUR_LANGS=EN $(filter-out $(LANGUAGE_GROUP_CJK_LANGS) $(LANGUAGE_GROUP_CYRILLIC_LANGS),$(ALL_LANGUAGES))
|
||||
LANGUAGE_GROUP_EUR_NAME=European
|
||||
|
||||
LANGUAGE_GROUPS=CJK CYRILLIC EUR
|
||||
LANGUAGE_GROUPS=CUSTOM CJK CYRILLIC EUR
|
||||
|
||||
|
||||
# Defines for host tools
|
||||
@@ -184,12 +195,7 @@ $(shell find $(SOURCE_CORE_DIR) -type f -name '*.cpp') \
|
||||
$(shell find $(SOURCE_DRIVERS_DIR) -path $(PD_DRIVER_TESTS_DIR) -prune -false -o -type f -name '*.cpp') \
|
||||
$(shell find $(DEVICE_BSP_DIR) -type f -name '*.cpp') \
|
||||
$(shell find $(SOURCE_MIDDLEWARES_DIR) -type f -name '*.cpp')
|
||||
# output folder
|
||||
HEXFILE_DIR=Hexfile
|
||||
|
||||
# temporary objects folder
|
||||
OUTPUT_DIR_BASE=Objects
|
||||
OUTPUT_DIR=Objects/$(model)
|
||||
# code optimisation ------------------------------------------------------------
|
||||
OPTIM=-Os -flto -finline-small-functions -findirect-inlining -fdiagnostics-color -ffunction-sections -fdata-sections -fshort-enums
|
||||
|
||||
|
||||
@@ -77,7 +77,7 @@ echo "*********************************************"
|
||||
|
||||
# Calculate available languages
|
||||
for f in "$TRANSLATION_DIR"/translation_*.json; do
|
||||
AVAILABLE_LANGUAGES+=($(echo $f | tr "[:lower:]" "[:upper:]" | sed "s/[^_]*_//" | sed "s/\.JSON//g"))
|
||||
AVAILABLE_LANGUAGES+=("$(echo "$f" | tr "[:lower:]" "[:upper:]" | sed "s/[^_]*_//" | sed "s/\.JSON//g")")
|
||||
done
|
||||
|
||||
# Checking requested language
|
||||
@@ -124,8 +124,8 @@ if [ ${#BUILD_LANGUAGES[@]} -gt 0 ] && [ ${#BUILD_MODELS[@]} -gt 0 ]; then
|
||||
checkLastCommand
|
||||
|
||||
for model in "${BUILD_MODELS[@]}"; do
|
||||
echo "Building firmware for $model in ${BUILD_LANGUAGES[@]}"
|
||||
make -j$(nproc) model="$model" "${BUILD_LANGUAGES[@]/#/firmware-}" >/dev/null
|
||||
echo "Building firmware for $model in ${BUILD_LANGUAGES[*]}"
|
||||
make -j"$(nproc)" model="$model" "${BUILD_LANGUAGES[@]/#/firmware-}" >/dev/null
|
||||
checkLastCommand
|
||||
done
|
||||
else
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
#!/usr/bin/env bash
|
||||
docker-compose run --rm builder
|
||||
#!/bin/sh
|
||||
docker-compose run --rm builder
|
||||
|
||||
Reference in New Issue
Block a user