1
0
forked from me/IronOS

Compare commits

..

28 Commits

Author SHA1 Message Date
discip
8ad1e92a9b Translated using Weblate (English)
Currently translated at 100.0% (117 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/en/
2023-01-27 23:44:24 +01:00
MagicLike
c848ab7771 Translated using Weblate (German)
Currently translated at 99.1% (116 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/de/
2023-01-27 16:41:33 +01:00
gallegonovato
334bdb5872 Translated using Weblate (Spanish)
Currently translated at 100.0% (117 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/es/
2023-01-26 15:51:32 +01:00
Anonymous
3eb5522946 Translated using Weblate (Vietnamese)
Currently translated at 98.2% (115 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/vi/
2023-01-25 23:16:54 +01:00
Anonymous
a7b9f4752d Translated using Weblate (Ukrainian)
Currently translated at 98.2% (115 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/uk/
2023-01-25 23:16:53 +01:00
Anonymous
b2ba0f4db6 Translated using Weblate (Swedish)
Currently translated at 98.2% (115 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/sv/
2023-01-25 23:16:50 +01:00
Anonymous
f7a6782d11 Translated using Weblate (Serbian (latin))
Currently translated at 98.2% (115 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/sr_Latn/
2023-01-25 23:16:49 +01:00
Anonymous
fca7273890 Translated using Weblate (Serbian (cyrillic))
Currently translated at 98.2% (115 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/sr_Cyrl/
2023-01-25 23:16:48 +01:00
Anonymous
f90a6a00a6 Translated using Weblate (Slovenian)
Currently translated at 98.2% (115 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/sl/
2023-01-25 23:16:46 +01:00
Anonymous
d2490316b4 Translated using Weblate (Slovak)
Currently translated at 98.2% (115 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/sk/
2023-01-25 23:16:45 +01:00
Anonymous
5e8f5eae21 Translated using Weblate (Russian)
Currently translated at 98.2% (115 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/ru/
2023-01-25 23:16:44 +01:00
Anonymous
10430359a3 Translated using Weblate (Portuguese)
Currently translated at 98.2% (115 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/pt/
2023-01-25 23:16:39 +01:00
Anonymous
a232a9ff09 Translated using Weblate (Polish)
Currently translated at 98.2% (115 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/pl/
2023-01-25 23:16:38 +01:00
Anonymous
7a91b9104a Translated using Weblate (Dutch (Belgium))
Currently translated at 98.2% (115 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/nl_BE/
2023-01-25 23:16:37 +01:00
Anonymous
6b61904b93 Translated using Weblate (Dutch)
Currently translated at 98.2% (115 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/nl/
2023-01-25 23:16:36 +01:00
Gediminas Murauskas
1d05313357 Translated using Weblate (Lithuanian)
Currently translated at 98.2% (115 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/lt/
2023-01-25 23:16:33 +01:00
Anonymous
84e318ff82 Translated using Weblate (Japanese)
Currently translated at 98.2% (115 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/ja/
2023-01-25 23:16:32 +01:00
Anonymous
6dc8f11afc Translated using Weblate (Hungarian)
Currently translated at 98.2% (115 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/hu/
2023-01-25 23:16:29 +01:00
Anonymous
a0f5e6f8bc Translated using Weblate (French)
Currently translated at 98.2% (115 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/fr/
2023-01-25 23:16:26 +01:00
Anonymous
7cd179fa9d Translated using Weblate (Finnish)
Currently translated at 98.2% (115 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/fi/
2023-01-25 23:16:25 +01:00
Anonymous
3d06c6d7aa Translated using Weblate (German)
Currently translated at 98.2% (115 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/de/
2023-01-25 23:16:21 +01:00
Anonymous
305ea3b92c Translated using Weblate (Danish)
Currently translated at 98.2% (115 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/da/
2023-01-25 23:16:20 +01:00
Anonymous
9c73f8d691 Translated using Weblate (Czech)
Currently translated at 98.2% (115 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/cs/
2023-01-25 23:16:19 +01:00
Anonymous
e4ffac7e8e Translated using Weblate (Bulgarian)
Currently translated at 98.2% (115 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/bg/
2023-01-25 23:16:17 +01:00
Anonymous
8ef200eb86 Translated using Weblate (Belarusian)
Currently translated at 98.2% (115 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/be/
2023-01-25 23:16:16 +01:00
discip
dd6065e5dc Translated using Weblate (English)
Currently translated at 100.0% (117 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/en/
2023-01-24 22:19:09 +01:00
Federico Di Lorenzo
861ae56cb7 Translated using Weblate (Italian)
Currently translated at 100.0% (117 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/it/
2023-01-24 20:53:35 +01:00
gallegonovato
55e17f2083 Translated using Weblate (Spanish)
Currently translated at 100.0% (117 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/es/
2023-01-24 20:53:35 +01:00
275 changed files with 3358 additions and 81634 deletions

View File

@@ -28,13 +28,8 @@ jobs:
fetch-depth: 0
- uses: actions/setup-python@v4
- run: |
pip install --upgrade pip &&
pip install mkdocs mkdocs-gen-files pymdown-extensions \
mkdocs-git-revision-date-plugin mkdocs-autolinks-plugin \
mkdocs-awesome-pages-plugin
- run: pip install --upgrade pip && pip install mkdocs mkdocs-gen-files
- run: git config user.name 'github-actions[bot]' && git config user.email 'github-actions[bot]@users.noreply.github.com'
- name: Publish docs
run: mkdocs gh-deploy -f scripts/IronOS-mkdocs.yml -d ../site
run: mkdocs gh-deploy

View File

@@ -3,15 +3,13 @@ name: CI
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-20.04
container:
image: alpine:3.16
strategy:
matrix:
model: ["TS100", "TS80", "TS80P", "Pinecil", "MHP30", "Pinecilv2", "S60", "TS101"]
model: ["TS100", "TS80", "TS80P", "Pinecil", "MHP30", "Pinecilv2"]
fail-fast: true
steps:
@@ -28,14 +26,13 @@ jobs:
- name: Git ownership exception
run: git config --global --add safe.directory /__w/IronOS/IronOS && git config --global safe.directory "$GITHUB_WORKSPACE"
- name: Git meta info
run: echo "GITHUB_CI_PR_SHA=${{github.event.pull_request.head.sha}}" >> "${GITHUB_ENV}"
- name: Build ${{ matrix.model }}
- name: build ${{ matrix.model }}
run: cd source && ./build.sh -m ${{ matrix.model }}
- name: Copy license files
run: cp LICENSE scripts/LICENSE_RELEASE.md source/Hexfile/
- name: copy license text
run: |
cp LICENSE source/Hexfile/LICENSE
cp LICENSE_RELEASE.md source/Hexfile/LICENSE_RELEASE.md
- name: Archive ${{ matrix.model }} artifacts
uses: actions/upload-artifact@v3
@@ -50,7 +47,7 @@ jobs:
if-no-files-found: error
- name: Generate json index file
run: ./source/metadata.py ${{ matrix.model }}.json
run: cd source && python3 metadata.py ${{ matrix.model }}.json
- name: Archive ${{ matrix.model }} index file
uses: actions/upload-artifact@v3
@@ -58,7 +55,6 @@ jobs:
name: metadata
path: source/Hexfile/${{ matrix.model }}.json
build_multi-lang:
runs-on: ubuntu-20.04
container:
@@ -81,14 +77,13 @@ jobs:
- name: Git ownership exception
run: git config --global --add safe.directory /__w/IronOS/IronOS && git config --global safe.directory "$GITHUB_WORKSPACE"
- name: Git meta info
run: echo "GITHUB_CI_PR_SHA=${{github.event.pull_request.head.sha}}" >> "${GITHUB_ENV}"
- name: build ${{ matrix.model }}
run: cd source && make -j$(nproc) model="${{ matrix.model }}" firmware-multi_compressed_European firmware-multi_compressed_Bulgarian+Russian+Serbian+Ukrainian firmware-multi_Chinese+Japanese
- name: Build ${{ matrix.model }}
run: make -C source/ -j$(nproc) model="${{ matrix.model }}" firmware-multi_compressed_European firmware-multi_compressed_Bulgarian+Russian+Serbian+Ukrainian firmware-multi_Chinese+Japanese
- name: Copy license files
run: cp LICENSE scripts/LICENSE_RELEASE.md source/Hexfile/
- name: copy license text
run: |
cp LICENSE source/Hexfile/LICENSE
cp LICENSE_RELEASE.md source/Hexfile/LICENSE_RELEASE.md
- name: Archive ${{ matrix.model }} artifacts
uses: actions/upload-artifact@v3
@@ -103,7 +98,7 @@ jobs:
if-no-files-found: error
- name: Generate json index file
run: ./source/metadata.py ${{ matrix.model }}_multi-lang.json
run: cd source && python3 metadata.py ${{ matrix.model }}_multi-lang.json
- name: Archive ${{ matrix.model }} index file
uses: actions/upload-artifact@v3
@@ -111,62 +106,51 @@ jobs:
name: metadata
path: source/Hexfile/${{ matrix.model }}_multi-lang.json
tests:
runs-on: ubuntu-20.04
container:
image: alpine:3.16
steps:
- name: Install dependencies (apk)
- name: deps
run: apk add --no-cache python3 py3-pip make git bash findutils gcc musl-dev
- uses: actions/checkout@v3
with:
submodules: true
- name: Install dependencies (python)
- name: install black
run: python3 -m pip install bdflib
- name: Run python tests
run: ./Translations/make_translation_test.py
run: cd Translations && chmod +x make_translation_test.py && ./make_translation_test.py
- name: Run BriefLZ tests
run: make -C source/ Objects/host/brieflz/libbrieflz.so && ./Translations/brieflz_test.py
run: |
cd source
make Objects/host/brieflz/libbrieflz.so
cd ../Translations
chmod +x brieflz_test.py
./brieflz_test.py
check_c-cpp:
check_formatting:
runs-on: ubuntu-20.04
container:
image: alpine:3.16
steps:
- name: Install dependencies (apk)
run: apk add --no-cache make git diffutils findutils clang-extra-tools bash
- name: deps
run: apk add --no-cache python3 py3-pip make git
- uses: actions/checkout@v3
with:
submodules: true
- name: Check format style with clang-format
run: make clean check-style
- name: install black
run: python3 -m pip install bdflib black flake8
check_python:
runs-on: ubuntu-20.04
container:
image: alpine:3.16
steps:
- name: Install dependencies (apk)
run: apk add --no-cache python3 py3-pip make git black
- uses: actions/checkout@v3
with:
submodules: true
- name: Install dependencies (python)
run: python3 -m pip install bdflib flake8
- name: Check formatting with clang-format
run: cd source && make clean && make check-style
- name: Check python formatting with black
run: black --check Translations
@@ -174,9 +158,8 @@ jobs:
- name: Check python with flake8
run: flake8 Translations
check_shell:
name: check_shell
shellcheck:
name: runner / shellcheck
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
@@ -187,20 +170,3 @@ jobs:
reporter: github-pr-review # Change reporter.
exclude: "./.git/*" # Optional.
check_all_files_with_shebangs: "false" # Optional.
check_readme:
runs-on: ubuntu-20.04
container:
image: alpine:3.16
steps:
- name: Install dependencies (apk)
run: apk add --no-cache git
- uses: actions/checkout@v3
with:
submodules: true
- name: Check autogenerated Documentation/README.md
run: /bin/sh ./scripts/deploy.sh docs_readme

25
.github/workflows/weblate.yml vendored Normal file
View File

@@ -0,0 +1,25 @@
name: Weblate PR
on:
create:
branches: ["^translations$"]
jobs:
pull-request:
name: Open PR to dev
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
name: checkout
- uses: repo-sync/pull-request@v2
name: pull-request
with:
destination_branch: "dev"
pr_title: "Merging newest translations into dev" # Title of pull request
pr_body: | # Full markdown support, requires pr_title to be set
Translations automatically submitted by Weblate
_Translations from [Weblate](https://hosted.weblate.org/projects/ironos/main-firmware/)_
pr_reviewer: "ralim"
pr_draft: true
github_token: ${{ secrets.GITHUB_TOKEN }}

81
.gitignore vendored
View File

@@ -1,5 +1,3 @@
#### Generic ####
# Object files
*.o
*.ko
@@ -7,7 +5,6 @@
*.elf
*.d
*.DS_Store
# Precompiled Headers
*.gch
*.pch
@@ -34,22 +31,33 @@
# Debug files
*.dSYM/
*.su
source/.metadata/*
# Custom scripts & misc. files
TS100/KiCad/TS100.bak
Logo GUI/TS100 Logo Editor/TS100 Logo Editor/obj/
Logo GUI/TS100 Logo Editor/TS100 Logo Editor/bin/
*.cache
Translation Editor/.vscode/
Translation Editor/__pycache__/
*.pyc
*.lst
*.mk
*.list
source/Hexfile/
source/Objects/
ci/artefacts/
ci/secrets/unencrypted/
codeship.aes
.vscode/settings.json
# Auto generated files
*.cache
codeship.aes
CoreCompileInputs.cache
source/Core/Inc/unit.h
source/Core/Gen/
# IDE configs
.vs/*
.settings/*
.cproject.swp
..cproject.swp
# Visual Studios
.vscode/*
@@ -57,7 +65,6 @@ CoreCompileInputs.cache
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
.vscode/settings.json
# Eclipse
.metadata
@@ -113,24 +120,11 @@ local.properties
.scala_dependencies
.worksheet
# source code tagging systems (GNU Global, ctags, cscope)
GPATH
GRTAGS
GTAGS
*tags
*tags/
.*tags
.*tags/
cscope.*
cscope/
.cscope/
#### Jetbrains: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm ####
# Jetbrains
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff
.idea/
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
@@ -180,38 +174,7 @@ fabric.properties
# Editor-based Rest Client
.idea/httpRequests
#### IronOS project specific files ####
# Binaries
source/Hexfile/
source/Objects/
BUILDS/
# Autogenerated
source/Core/Gen/
source/Core/Inc/unit.h
# Deploy
scripts/ci/artefacts/
scripts/ci/secrets/unencrypted/
# Generated static local docs
site/
# Translations
Translations/__pycache__/
Translation Editor/__pycache__/
Translation Editor/.vscode/
# misc.
CoreCompileInputs.cache
.vscode/settings.json
source/compile_commands.json
source/.metadata/*
# TS100 related
TS100/KiCad/TS100.bak
Logo GUI/TS100 Logo Editor/TS100 Logo Editor/obj/
Logo GUI/TS100 Logo Editor/TS100 Logo Editor/bin/
# Tests/linters/sanitizers
source/check-style.log
.idea/

7
Bootup Logo/README.md Normal file
View File

@@ -0,0 +1,7 @@
# Bootup logo's
IronOS supports both a bootup logo _AND_ bootup animations.
However, they are no longer included in this repo.
[Please read the docs](https://ralim.github.io/IronOS/Logo/)

View File

Before

Width:  |  Height:  |  Size: 630 B

After

Width:  |  Height:  |  Size: 630 B

View File

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

21
Dockerfile Normal file
View File

@@ -0,0 +1,21 @@
FROM alpine:3.16
LABEL maintainer="Ben V. Brown <ralim@ralimtek.com>"
WORKDIR /build
# Installing the two compilers, python3, python3 pip, clang format
# Compilders ->gcc-* newlib-*
# Python3 -> py*
# Misc -> findutils make git
# musl-dev is required for the multi lang firmwares
# clang is required for clang-format (for dev)
RUN apk add --no-cache gcc-riscv-none-elf gcc-arm-none-eabi newlib-riscv-none-elf newlib-arm-none-eabi findutils python3 py3-pip make git musl-dev clang bash clang-extra-tools
# Install Python3 packages
RUN python3 -m pip install bdflib black
# Git trust
RUN git config --global --add safe.directory /build/source
COPY . /build/source
COPY ./ci /build/ci

View File

@@ -1,99 +0,0 @@
# Bluetooth Low Energy
The Pinecilv2 has hardware support for Bluetooth Low Energy (BLE). This protocol allows reading and writing of parameters to the Pinecil during runtime.
The BLE interface advertises three services, these provide access to live telemetry as well as the ability to read/write settings.
These are outlined in more detail below.
Pinecil devices advertise themselves on BLE as `Pinecil-XXXXXXX`.
They also include the UUID `9eae1000-9d0d-48c5-AA55-33e27f9bc533` in the advertisement packet to allow for filtering.
Unless otherwise noted, all data is sent and received as Little-Endian.
As of the time of writing this, notifications are not fully implemented so data will need to be polled. Notification/Indication support will come when there is time to implement it.
## Using the BLE Interface
It is advised to follow the below points when first implementing a BLE integration. Of course once the integration is working feel free to deviate from these. These are just _suggested_ ideas to help kickstart.
1. When filtering for devices, its preferable to filter by the UUID `9eae1000-9d0d-48c5-AA55-33e27f9bc533`, rather than by the device name if possible.
2. Upon first collection check if the three expected services exist; if they don't the user may have selected an incorrect device.
3. It's best to read the live bulk endpoint over the live service when its easy to do so (one read vs ~15).
1. However if you are just updating one or two line items it may be more efficient to just read these on the live service.
2. Feel free to test both and decide.
4. When reading settings from the device; the association of number <-> setting is fixed, but you may see settings you don't yet know about, make sure you can handle these.
5. You probably don't want to show unknown setting's to the user though.
6. Read the device firmware revision and ensure you can decode it. If BLE is revised it may be essential for handling versions cleanly.
7. It's advisable to keep an eye on the IronOS repository or at least setup the Github watch for release notifications.
1. Future releases may revise some BLE aspects or add new settings for example.
## Services
Below is a description of each service. Note that the exact settings are not listed for brevity; it's best to refer to [the uuid lists](https://github.com/Ralim/IronOS/blob/dev/source/Core/BSP/Pinecilv2/ble_characteristics.h) and the [handlers](https://github.com/Ralim/IronOS/blob/dev/source/Core/BSP/Pinecilv2/ble_handlers.cpp) alongside this.
### Live
`UUID: d85ef000-168e-4a71-AA55-33e27f9bc533`
The live services has one characteristic per reading. The readings (in order) are:
When implementing these; the ones that are not obvious are generally found in the debugging menu. Values are encoded as an unsigned 32 bit number for all results.
1. Live temperature (In C)
2. Live set point
3. DC input voltage
4. Handle temperature (In C)
5. Power level
6. Power source
7. Tip resistance
8. uptime
9. Time of last movement
10. Maximum temperature settable
11. Raw tip reading
12. Hall sensor
13. Operating mode
14. Estimated wattage
### Settings
`UUID: f6d80000-5a10-4eba-AA55-33e27f9bc533`
The settings service has two special entries; for saving and resetting settings.
Otherwise all settings are enumerated using UUID's of the format : `f6d7ZZZZ-5a10-4eba-AA55-33e27f9bc533))` where `ZZZZ` is the setting number as matched from [Settings.h](https://github.com/Ralim/IronOS/blob/dev/source/Core/Inc/Settings.h#L16).
All data is read and written in fixed unsigned 16 bit numbers.
#### Settings save
To save the settings write a `0x0001` to `f6d7FFFF-5a10-4eba-AA55-33e27f9bc533`.
Its advised to not save settings on each change but instead to give the user a save button _or_ save after a timeout. This is just to reduce write cycles on the internal flash.
#### Settings reset
To reset all settings to defaults; write a `0x0001` to `f6d7FFFE-5a10-4eba-AA55-33e27f9bc533`.
This will reset settings immediately.
### Bulk
`UUID: 9eae1000-9d0d-48c5-AA55-33e27f9bc533`
The bulk endpoint is where extra data is located with varying read sizes.
#### Live data
The bulk live data endpoint provides all of the data provided in the live endpoint, as one large single-read binary blob. This is designed for applications that are showing large amounts of data as this is more efficient for reading.
#### Accelerometer Name
_Not yet implemented_
#### Build ID
This encodes the current build ID to allow viewing and handling when the BLE format changes.
#### Device Serial Number
This is generally the device CPU serial number. For most devices this can be used as an ID. On PinecilV2 its the MAC address.
#### Device Unique ID
This is only relevant on the PinecilV2. This is a random ID that is burned in at the factory. This is used by the online authenticity checker tool.

View File

@@ -9,42 +9,9 @@ This menu is meant to be simple, so it has no fancy GUI animations.
## Menu items
Items are shown in the menu on a single line, so they use short codes.
### Version
There is a static line on top which is presented on every sub-screen and reflects exact version of firmware. Version line on top has the following format - `vX.YYN.[ZZZZZZZZ]`:
- X: major version
- Y: minor version
- N: build type:
- R - git-related **r**elease tag vXX.YY
- T - git-related release **t**ag but version is not vXX.YY !
- D - git-related **d**ev branch
- B - git-related custom **b**ranch
- G - neither above but **g**it-related
- C - build from github **C**I during _pull request_
- H - build outside of a git tree (i.e. release tarball or **h**omebrew customization without git)
- S - something **s**pecial[^ERR]
- V - something **v**ery special[^ERR]
[^ERR]: `S` and `V` are reserved letters for cases when source of firmware is having very unique origin & configuration
- Z: short commit ID hash with 8 digits generated automatically from git (for git-related build types only)
I.e.:
- `v2.22H` means firmware built locally from tarball with release version of `2.22`
- `v2.22D.1A2B3C4D` means firmware with development version of `2.22` from git `dev` branch & with commit ID `1A2B3C4D` (so it can be traced for debug purposes)
- `v2.22R.5E6F7G8H` means firmware with official release version of `2.22` and it's properly tagged with `v2.22` git tag & with commit ID `5E6F7G8H`'
---
**Additional scroll-able items appear in this order**:
### Date
- This is a date of firmware compilation and it has the following format: `DD-MM-YY` (i.e., `01-07-23` means it has been built in July, 1st, 2023)
Items are shown in the menu on a single line, so they use short codes and appear in this order:
### ID
- This is used by Irons that have an ID and serial number to help check if the iron is authentic. All Pinecil V1 show the same ID number as this is the number programmed into the MCU.
- The new Pinecil V2 released Aug. 2, 2022 now uses MCU BL706, which enables generating a unique ID/Serial number to every iron. This can be used to verify your [Pinecil authenticity here](https://pinecil.pine64.org/).
@@ -85,6 +52,7 @@ This is the handle temperature or more accurately the reading of the Cold Juncti
This is used for CJC of the tip temperature.
> If CHan is extremely high, this indicates the temperature sensor isn't reading correctly ([see Troubleshooting](https://ralim.github.io/IronOS/Troubleshooting/))
### Max C
This indicates the max temperature in °C that the system estimates it can measure the tip reliably to.
@@ -138,7 +106,6 @@ Pressing (`+`) cycles through elements, and (`-`) or unplugging will exit the me
The first page shows the PD negotiation stage number; which can be used for diagnosing if PD is not working. Once negotiation is complete; use (`+`) button to advance to other screens which show the different proposals advertised for voltage and current (State 12 means all is good with the PD charger).
#### Below is a method for user modification to convert some early models of Pinecil V1 to safely support 24V on the DC5525 barrel.
⚠️ Warning: do this at your own risk, read everything in this document, and go to the [Pine64 community chat](https://wiki.pine64.org/wiki/Pinecil#Community_links) if you desire advice. An incorrect cut of the trace could render the Pinecil non-working.
Background: a simple user modification to the PCB on _some models_ of original V1 allows it to safely use DC barrel 24V by cutting a trace line to the Vbus which held it back to 21V. You can check whether your Pinecil V1 needs the update or can benefit from it by using a hidden trick in the PD debug menu.

View File

@@ -104,40 +104,3 @@ If you _need_ an IDE I have used [Nuclei's IDE](https://nucleisys.com/download.p
Follow the same idea as the STM Cube IDE notes above.
## Building Pinecil V2
To build the Pinecil V2 firmware, you can use a Docker container that provides a consistent development environment across different operating systems, including Windows with WSL2. Here's how to do it:
### Prerequisites
Docker Desktop: Install the latest version of Docker Desktop for your operating system from the official website.
On Windows follow the instructions on the official documentation to install 'Windows Subsystem for Linux' (WSL2).
### Building Steps
1. Clone the repository, initialize and update submodules:
```sh
git clone --recurse-submodules https://github.com/Ralim/IronOS.git
```
2. Start the Docker container with the development environment:
```sh
cd IronOS
./scripts/deploy.sh
```
This script will build a Docker image and run a container with the necessary tools to build the firmware.
3. Build the firmware for Pinecil V2:
```sh
cd source/
./build.sh -l EN -m Pinecilv2
```
This command will compile the firmware with English language support for Pinecil V2 board.
4. Find the firmware artifacts:
After the build completes successfully, you can find the firmware artifacts in the `source/Hexfile` directory.

View File

@@ -55,7 +55,7 @@ sgr1ff1n (Shane) commented in [issue 11](https://github.com/Ralim/IronOS/issues/
While in the past there were reports of unreliable upgrades, the consensus in [issue 11](https://github.com/Ralim/IronOS/issues/11) is that things work mostly as expected in Linux.
@awigen has contributed a script [flash_ts100_linux.sh](https://raw.githubusercontent.com/Ralim/IronOS/dev/scripts/flash_ts100_linux.sh) that works on Ubuntu 16.04 as well as other distros.
@awigen has contributed a script [flash_ts100_linux.sh](https://raw.githubusercontent.com/Ralim/IronOS/master/Flashing/flash_ts100_linux.sh) that works on Ubuntu 16.04 as well as other distros.
If you want to do it manually (or if the script does not work for some reason) the general procedure is the same as for Windows, the differences are in the way to mount the unit and copy the firmware.
Remember that after flashing, the firmware filename will have changed to end in `.RDY` or `.ERR` or `.NOT` and only `.RDY` means the flashing was successful!

View File

@@ -12,8 +12,8 @@ These are built on every change and can be found on the Actions tab (see below).
Main releases are made to the [releases page](https://github.com/Ralim/IronOS/releases).
Download the zip file that matches your model of soldering iron and extract it.
Select the appropriate file type for your unit, in general Miniware devices need `.hex`, Pinecil V1 needs `.dfu`, and Pinecil V2 needs `.bin`.
Flash according to details below.
Select the appropriate file type for your unit, in general Miniware devices need `.hex` and Pinecil needs `.dfu`.
Flash according to details below
### Bleeding edge / latest
@@ -26,16 +26,13 @@ Then this works the same as a production release (use the correct file).
# Pinecil V1
- The MCU used in Pinecil supports usb-dfu. Reference [Pinecil Wiki](https://wiki.pine64.org/wiki/Pinecil) for hardware and firmware instructions.
- Recommended Updater for Windows/MacOS: [Pine64 Updater](https://github.com/pine64/pine64_updater) is an easy-to-use GUI app. It is fast and automatically fetches the newest stable version of IronOS from GitHub. It can also be used to load custom boot logo art.
- Recommended Updater for Linux/MacOS: [PineFlash](https://github.com/Spagett1/PineFlash) is an easy-to-use GUI app. It is fast and automatically fetches the newest stable version of IronOS from Github. It can also be used to load custom boot logo art.
- The MCU used in Pinecil supports usb-dfu. Reference [Pinecil Wiki](https://wiki.pine64.org/wiki/Pinecil).
- Recommended Updater: the [Pine64 Updater](https://github.com/pine64/pinecil-firmware-updater/releases), is an easy-to-use GUI app. It is fast and works in several types of OS, i.e. Windows/Mac. It will automatically fetch the newest stable version of IronOS from GitHub.
- Troubleshooting: if you have issues using the Pine64 Updater or your install fails, please go to troubleshooting tips below.
- The [Pinecil Wiki](https://wiki.pine64.org/wiki/Pinecil) is a great resource for all things Pinecil.
- Community chat: if troubleshooting doesn't work, then join the Pine64 > Pinecil channel [here](https://wiki.pine64.org/wiki/Pinecil#Live_Community_Chat). There are knowledgeable members in Discord/Telegram/Matrix. Discord has a bridge bot connection to Telegram and Matrix so that all pine64 volunteers/members can see advice for Pinecil and related items or just get tips on which power supply to purchase.
- Community chat: if troubleshooting doesn't work, then join the Pine64 > Pinecil channel. There are knowledgeable members in Discord/Telegram/Matrix. Discord has a bridge bot connection to Telegram and Matrix so that all pine volunteers/members can see advice for Pinecil and related items or just get tips on which Power supply to purchase.
- One advantage of Pinecil is that you cannot permanently damage it doing a firmware update (because DFU is in ROM); an update could render Pinecil temporarily inoperable if you flash an invalid firmware. But no worries, simply re-flashing with a working firmware copy will fix everything.
- USB-C cable is required to do an update. Generally, all USB controllers work, but some hubs have issues, so it is preferred to avoid USB hubs for updates.
- Alternate Update Methods: if your OS is not currently supported by the [Pine64 Updater](https://github.com/pine64/pine64_updater) or it does not meet your needs, i.e., you want to install a beta version, the below manual methods may be used.
- Alternate Update Methods: if your OS is not currently supported by the [Updater](https://github.com/pine64/pinecil-firmware-updater/releases) or it does not meet your needs, i.e., you want to install a beta version, the below manual methods may be used.
## Linux and Mac

View File

@@ -12,25 +12,21 @@ These are built on every change and can be found on the Actions tab (see below).
Main releases are made to the [releases page](https://github.com/Ralim/IronOS/releases).
Download the zip file that matches your model of soldering iron and extract it.
Select the appropriate file type for your unit, in general Miniware devices need `.hex`, Pinecil V1 needs `.dfu`, and Pinecil V2 needs `.bin`.
Flash according to details below.
Select the appropriate file type for your unit, in general Miniware devices need `.hex` and Pinecil needs `.dfu`.
Flash according to details below
### Bleeding edge / latest
For the _latest_ code, you need to download the zip file from the artifacts page for the build that you want.
Head to the [Actions](https://github.com/Ralim/IronOS/actions) page and then select the run for the appropriate branch and beta you would like.
For the _latest_ code, you will need to download the zip file from the artifacts page on the build for what you want.
Head to the [Actions](https://github.com/Ralim/IronOS/actions) page and then select the run for the appropriate branch you would like.
In general you probably want `master`.
Once you click on a run, scroll down to the "Artifacts" section and then click on your device model name to download a zip file.
Once you click on a run, scroll down to the "Artifacts" section and then click on your model to download a zip file.
Then this works the same as a production release (use the correct file).
# Pinecil V2
- The MCU in Pinecil V2 is Bouffalo BL706 and does _not_ use usb-dfu for flashing as the previous Pinecil V1 MCU did.
- See the Pinecil Wiki page [here](https://wiki.pine64.org/wiki/Pinecil#Firmware_&_Updates) for instructions.
- The V2 uses the [BLISP flasher](https://github.com/pine64/blisp) to upload the firmware to the MCU.
- The [Pinecil Wiki](https://wiki.pine64.org/wiki/Pinecil) is a great resource for all things Pinecil.
- Community chat: if there are issues updating, then join the Pine64 > Pinecil channel [here](https://wiki.pine64.org/wiki/Pinecil#Live_Community_Chat). There are knowledgeable members in Discord/Telegram/Matrix. Discord has a bridge bot connection to Telegram and Matrix so that all pine64 volunteers/members can see advice for Pinecil and related items or just get tips on which power supply to purchase.
- One advantage of Pinecil is that you cannot permanently damage it doing a firmware update (because BIN is in ROM); an update could render Pinecil temporarily inoperable if you flash an invalid firmware. But no worries, simply re-flashing with a working firmware copy will fix everything.
- USB-C cable is required to do an update. Generally, all USB controllers work, but some hubs have issues, so it is preferred to avoid USB hubs for updates.
- The MCU in V2 is Bouffalo BL706 and does _not_ use usb-dfu for flashing as the previous MCU did.
- The current firmware (2.18) is very fresh and no upgrade is available/needed.
- When an update is released for V2, then IronOS will also include an update method to follow.
- Background on the [BL706 chipset](https://lupyuen.github.io/articles/bl706)

View File

@@ -55,7 +55,7 @@ sgr1ff1n (Shane) commented in [issue 11](https://github.com/Ralim/IronOS/issues/
While in the past there were reports of unreliable upgrades, the consensus in [issue 11](https://github.com/Ralim/IronOS/issues/11) is that things work mostly as expected in Linux.
@awigen has contributed a script [flash_ts100_linux.sh](https://raw.githubusercontent.com/Ralim/IronOS/dev/scripts/flash_ts100_linux.sh) that works on Ubuntu 16.04 as well as other distros.
@awigen has contributed a script [flash_ts100_linux.sh](https://raw.githubusercontent.com/Ralim/IronOS/master/Flashing/flash_ts100_linux.sh) that works on Ubuntu 16.04 as well as other distros.
If you want to do it manually (or if the script does not work for some reason) the general procedure is the same as for Windows, the differences are in the way to mount the unit and copy the firmware.
Remember that after flashing, the firmware filename will have changed to end in `.RDY` or `.ERR` or `.NOT` and only `.RDY` means the flashing was successful!

View File

@@ -28,7 +28,7 @@ Note that this may be drawn mirrored depending on the orientation of your screen
The soldering iron symbol on the screen will appear near the tip. This is here to indicate that pressing the button closest to the front of the iron will enter soldering mode.
And naturally, the slider controls icon (or spanner icon in older versions) represents that pressing the button near the rear of the soldering iron will enter the settings menu.
And naturally, the spanner like icon represents that pressing the button near the rear of the soldering iron will enter the settings menu.
In the settings, you can turn on a detailed idle screen instead. The buttons still function the same, however, the image will be swapped for a text telling you the current status of the iron with extra details.
@@ -42,7 +42,7 @@ This OLED screen features burn-in protection; if no buttons or movement have bee
Additionally to the two icons shown, there are two "hidden" actions that can be performed on this menu.
On devices that do not support profile mode, if you press and hold the button near the tip (`+/A`), this enters the temperature adjustment screen. Normally this is not required; but if you would like to adjust the set temperature _before_ the tip starts to heat, this can be useful.
If you press and hold the button near the tip (`+/A`), this enters the temperature adjustment screen. Normally this is not required; but if you would like to adjust the set temperature _before_ the tip starts to heat, this can be useful.
If you press and hold the button near the rear of the iron (`-/B`), it will take you into the [debug menu](https://ralim.github.io/IronOS/DebugMenu/).
@@ -74,23 +74,6 @@ Pinecil has an unpopulated footprint (U14) for a hall effect sensor (Si7210-B-00
If, after entering sleep mode, the iron still does not see movement for a much longer time (default=10 minutes); it will shut down and return to the home screen.
## Profile Mode (MHP30 only)
On devices that support it, a long press on `(+/A)` takes you into profile mode, which initiates the profile selected in the relevant settings.
Profile mode plays out as follows:
1. Check if the temperature is below 55C. If not, you will get a warning and cannot enter profile mode.
2. Preheat by raising the target temperature to the configured preheat temperature with the configured preheat speed.
3. Wait for the device to reach the preheat temperature.
4. Gradually move the target temperature to the configured end temperature of the first phase over the configured duration.
5. Wait for the device to reach the end temperature.
6. Repeat steps 4 and 5 for the next phases until there are no more phases configured.
7. Cool down by lowering the target temperature to 0 with the configured cooldown speed.
8. Once the temperature is below 55C, sound the buzzer (if available) and exit profile mode.
You can manually exit profile mode manually in the same way as the soldering mode, by pressing and holding the rear button or pressing both buttons at once.
## Settings Menu
The settings menu is the most evolving aspect of the firmware, so each option is not documented here. However, do not panic, as every menu option has an on-screen description so you don't _need_ to come back here to figure them all out.

View File

@@ -1,62 +1,8 @@
## Notes on the various supported hardware
### TS100
TS100\* is a neat soldering iron:
- can run from 9-25V DC;
- provides a power range that is determined by the input voltage;
- voltages below 12V don't overly work well for any substantial mass;
- the default firmware can be found [here](https://www.minidso.com/forum.php?mod=viewthread&tid=892&extra=page%3D1).
![](https://brushlesswhoop.com/images/ts100-og.jpg)
### TS80
TS80\* is a successor to TS100:
- uses _Quick Charge 3.0_ / _QC3_ capable charger only (18W max);
- doesn't support PD as it is not designed on the hardware level;
- the default firmware can be found [here](https://www.minidso.com/forum.php?mod=viewthread&tid=3208&extra=page%3D1).
![](https://core-electronics.com.au/media/catalog/product/4/2/4244-01.jpg)
### TS80P
TS80P\* is a successor to TS80:
- supports _Quick Charge 3.0_ (_QC3_: 9V/3A, 18W max);
- supports _Power Delivery_ (_PD_: 9V/3A & 12V/3A, 30W max)\*\*;
- the default firmware can be found [here](https://www.minidso.com/forum.php?mod=viewthread&tid=4085&extra=page%3D1).
\*\*: use valid PD device that supports 12V/3A as power source to get full 30W potential, otherwise the iron will fall back to 9V/18W power mode.
![](https://static.eleshop.nl/mage/media/catalog/product/cache/10/image/800x/040ec09b1e35df139433887a97daa66f/s/-/s-l1600_5.jpg)
### MHP30
MHP30 is a **M**ini **H**ot **P**late:
- accelerometer is the MSA301, this is mounted roughly in the middle of the unit;
- USB-PD is using the FUSB302;
- the hardware I2C bus on PB6/7 is used for the MSA301 and FUSB302;
- the OLED is the same SSD1306 as everything else, but its on a bit-banged bus.
### Pinecil
Pincecil\*:
- first model of soldering iron from PINE64;
- the default firmware can be found [here](https://files.pine64.org/os/Pinecil/Pinecil_firmware_20201115.zip).
![](https://pine64.com/wp-content/uploads/2020/11/pinecil-bb2-04.jpg?v=0446c16e2e66)
\*: Please note: these soldering irons do *NOT* contain DC/DC converters. This means that your power at the tip is a function of the supplied voltage. Just because the iron "supports" running at a wide range of voltages, you should always use a voltage near the upper limit where possible. It is highly recommended to use a PD adapter where possible as this allows the iron to _know_ the limitations of your supply. The marked irons can only turn the tip on and off in software, this means that they can't control the maximum power drawn from the supply. This is why when using PD the iron may select a lower voltage than your power supplies maximum. This is to prevent your power supply failing from over current. For more information about power management underhood, please, [see the related documentation section](https://ralim.github.io/IronOS/Power/).
- Accelerometer is the MSA301, this is mounted roughly in the middle of the unit
- USB-PD is using the FUSB302
- The hardware I2C bus on PB6/7 is used for the MSA301 and FUSB302
- The OLED is the same SSD1306 as everything else, but its on a bit-banged bus

View File

@@ -9,12 +9,6 @@ In this mode the iron works as you would expect, pressing either button will tak
- Pressing both buttons or holding the rear button (`-/B`) will exit Soldering Mode.
- Holding the front button (`+/A`) will enter [Boost mode](https://ralim.github.io/IronOS/Menu/#boost-mode) (if enabled).
## Profile mode (MHP30 only)
In this mode, accessible by long pressing `(+/A)`, the configured profile will be initiated.
- You cannot adjust the temperature or enter boost mode.
- Pressing both buttons or holding the rear button (`-/B`) will exit Profile Mode as well.
## Settings mode
This mode allows you to cycle through all the options and set custom values.

View File

@@ -20,8 +20,6 @@ The resistance of the tip is a fixed constant in ohms (Ω):
This means the power delivered to the soldering tip is proportional to the voltage squared.
Therefore the Pinecil and TS100 perform poorly when run off 12V power supplies and may issue a `Thermal Runaway` message (weak power supply).
#### Use an [Ohm calculator](https://www.rapidtables.com/calc/electric/power-calculator.html#dc) to quickly derive watts.
| Type | Volts| / | Tip Ω | = | Amps | * | Volts | = | Watts |
@@ -46,8 +44,3 @@ To measure the tip temperature in the iron, the iron has a small op-amp connecte
Once the output is turned off (via the FET), the system has a recovery time as the tip capacitance discharges and the op-amp exits saturation. After this delay period, the MCU's ADC (analog-to-digital converter) samples the output of the op-amp 8 times quickly and then sets a flag to turn the PWM output back on.
This enforces a small dead time in the output signal while this occurs, so there is a balance between sampling the temperature often to maintain a stable tip temperature control and sampling less often to increase the maximum power deliverable to the tip ([see Complexity of measurement](https://ralim.github.io/IronOS/Temperature/#complexity-of-measurement)).
## Power sources
Supported by IronOS hardware may use different power sources (chargers/powerbanks/battery packs) with different standards & protocols (QC/PD/etc). For more information collected by the community on that, please, [see the related documentation section](https://ralim.github.io/IronOS/PowerSources/).

View File

@@ -1,80 +0,0 @@
# Power sources
Supported by IronOS hardware may use different power sources (chargers/powerbanks/battery packs) with different standards & protocols (QC/PD/etc). This document contains information collected by the community with tested power sources.
This is not ads but first hands-on experience results from real users since some chargers/powerbanks regardless labels on the box may not fully support what's declared!
## QC(3)
### Compatible Devices (QuickCharge for TS80/P)
The following table is the list of compatible device and remarks when powering up the TS80 through it for both stock firmware from MiniDso and IronOS. The list of devices below are primarily taken from [#349](https://github.com/Ralim/ts100/issues/349#issuecomment-449559806)
| Device Name | Stock FW | IronOS FW |
|-------------|:--------:|:---------:|
| Anker PowerCore II Slim 10000 Powerbank | Not Working | Good |
| [Aukey 26.5/30 Ah Powerbank (PB-Y3)](https://www.aukey.com/products/30000mah-power-bank-with-quick-charge-3-0/) | OK\*\* (15sec t/o) | OK\*\* (15sec t/o) |
| Aukey QC3 Charger | Good | Only 5V |
| [Aukey QC3 Charging Station (PA-T11)](https://www.aukey.com/products/6-port-charging-station-with-quick-charge-3-0-pa-t11/) | Good | Good |
| Besiter 20000mah QC3 | Not Working | Only 5V |
| BlitzWolf BW-P5 | Not Working\* | Unknown |
| BlitzWolf BW-PF2 | OK\*\* (10sec t/o) | OK\*\* (10sec t/o) |
| BlitzWolf BW-PL3 | Low Voltage | OK |
| BlitzWolf BW-PL4 | Unknown | Not Working |
| BlitzWolf BW-S6 | Unknown | OK |
| Charmast 20800 mAh QC 3.0 | Low Voltage\* | Good |
| Clas Ohlson Powerbank USB-C 10050 mAh, Clas Ohlson | Unknown | OK\*\* |
| [Cygnett 20,000mAh USB-C](https://www.cygnett.com/products/20-000mah-usb-c-power-bank-in-black)| Not Working | Good |
| [HAME H13D](https://www.amazon.com/dp/B07GWMFW82) 10000mAh PD/QC3.0 Power Bank | OK\*\* (30sec t/o) | OK\*\* (30sec t/o?) |
| HIPER 10000 mAh 18W PD+QC3.0 (MPX10000) | Low Voltage | OK\*\* (30sec t/o) |
| [iMuto Portable Charger 30000mAh](https://www.amazon.com/gp/product/B01MXCMGB8/ref=ppx_yo_dt_b_asin_title_o05_s00) | Low Voltage | Good |
| ISDT BG-8S | Good | Good |
| [iVoler Quick Charge 3.0 USB C 30W 2-Port USB](https://www.amazon.de/dp/B077P8ZZB8/) | Good | Good |
| [imuto X6L Pro 30000 mah](https://www.amazon.com/dp/B01MXCMGB8) | Not Working | Bad |
| Interstep 10000 mAh 18W PD+QC3.0+FCP+AFC (MPX10000) | Good | OK\*\* (30sec t/o) |
| Jackery Black 420 | Low Voltage | Good |
| Kogan Premium 80W 5 Port USB Charger| Low Voltage | Good |
| Nokia AD-18WE | Unknown | OK |
| [Omars 2000mAh USB-C PD+QC3.0 (OMPB20KBUPLT / OMPB20KPLT)](https://www.amazon.com/dp/B07CMLVR6C) | OK\*\* (20sec t/o) | Unknown |
| Polaroid PS100 Powerbank (https://polaroid.com/products/ps100) | Good | Good |
| Xiaomi 10000mAh Mi Power Bank Pro (PLM03ZM) | Good | Unknown |
| Xiaomi 10000mAh Mi Power Bank 2i (PLM09ZM) | Good | Good |
| Xiaomi 20000mAh Mi Power Bank 3 (PLM07ZM) | Unknown | Good Type A, Bad Type C |
| [ZeroLemon ToughJuice](https://www.amazon.com/dp/B01CZR3LT2/) 30000mAh PD/QC2.0 Power Bank | OK\*\* (20sec t/o) | OK\*\* (20sec t/o?) |
| [URUAV XT-60 to USB module](https://www.banggood.com/URUAV-XT-60-to-USB-Charger-Converter-Support-3S-6S-LiPo-Battery-10_5V-32V-Input-3V-20V-Output-45W-Max-Fast-Charging-Adapter-For-RC-Racing-Drone-p-1475876.html) | Unknown | Good |
\* Need further tests on newer firmware
\*\* Most Power Banks shut down if current draw drops below 50mA, assuming that charging is complete and avoiding overcharging. Custom firmware is designed to avoid this until it enters Zzzz mode.
### DIY QC3.0
You may also build your own QC3.0 power source that requires this little [thing](https://www.tindie.com/products/soubitos/qualcomm-qc2-3-diy-8-32vin-36-12vout-3a-max/) and have at least 3S lithium packs or any input voltage from 8 to 32V.
You can also go for an [alternate module](https://www.banggood.com/DC-Buck-Module-12V24V-to-QC3_0-Single-USB-Mobile-Charging-Board-p-1310585.html) which has at least one good review of it.
**DISCLAIMER:** _**We do not hold any responsibility for accidents that happen when building your own QC3.0 power source!!!**_
## PD
The following additional table is the list of devices compatible with hardware which requires Power Delivery support (>= 30W). Devices from the list have been successfully tested & used with TS80P in PD mode. Please, keep in mind that:
- PD can be provided only through usb-c <-> usb-c cable;
- not only a charger but a cable itself should be capable to carry higher wattages.
### Compatible Devices (PowerDelivery for TS80P)
| Device Name | IronOS FW |
|-------------|:---------:|
| Traver Charger QC09 (45W max)\* | OK |
| Xiaomi AD65GEU Mi 65W Fast Charger with GaN Tech (AD65GEU, 65W max) | OK |
\* Comes as an _option_ for extra price in the package with TS80P from [official store](https://aliexpress.com/item/4000764937427.html) or from [NovelLife store separately](https://aliexpress.com/item/4001316262433.html) on AliExpress.
Please, DO NOT BUY cheap "fast chargers with QC/PD support" for a few dollars online (i.e., less than ~10$): if you check reviews, then you see that they are phonies - even if you get lucky, you probably get 5V/1A max from them.

View File

@@ -1,30 +0,0 @@
<!-- THIS FILE IS AUTOGENERATED by "scripts/deploy.sh docs_readme" based on nav section in scripts/IronOS-mkdocs.yml config -->
<!-- THIS FILE IS NOT SUPPOSED TO BE EDITED MANUALLY -->
#### This is autogenerated README for brief navigation through github over official documentation for IronOS project
#### This documentation is also available [here online](https://ralim.github.io/IronOS)
- [Home](../Documentation/index.md)
- [Getting Started](../Documentation/GettingStarted.md)
- Flashing the firmware
- [MHP30](../Documentation/Flashing/MHP30.md)
- [Pinecil V1](../Documentation/Flashing/Pinecil%20V1.md)
- [Pinecil V2](../Documentation/Flashing/Pinecil%20V2.md)
- [TS80(P)](../Documentation/Flashing/TS80(P).md)
- [TS100](../Documentation/Flashing/TS100.md)
- Operation
- [Main Menu](../Documentation/Menu.md)
- [Settings](../Documentation/Settings.md)
- [Debug Menu](../Documentation/DebugMenu.md)
- [Power](../Documentation/Power.md)
- [Temperature](../Documentation/Temperature.md)
- [Startup Logo](../Documentation/Logo.md)
- Hardware
- [Hall Sensor (Pinecil)](../Documentation/HallSensor.md)
- [Hardware Notes](../Documentation/Hardware.md)
- [Troubleshooting](../Documentation/Troubleshooting.md)
- [Known Hardware Issues](../Documentation/HardwareIssues.md)
- [Power sources](../Documentation/PowerSources.md)
- [Translations](../Documentation/Translation.md)
- [Development](../Documentation/Development.md)

View File

@@ -1,12 +1,6 @@
# Translation
At the present time the main way of performing translations is to open a PR to this repository.
All translations are stored as `json` files in the repository. Currently there is ongoing work to look into a more user friendly method of editing translations than these but for now these are reliable.
Moving forward (after 2022/12/07); IronOS is using Weblate to provide the visual interface to doing translations to make it easier for people to work with.
Currently there is a translation going on, so not _everything_ is perfect but its leaps in the right direction to help make it friendlier for people to edit and also subscribe to be notified when things are updated.
You can create a pull request with the new / updated json configuration file, and this will include this language into the new builds for the firmware.
For testing you can build locally and test of course; but if you dont want to figure out the build environment; you can just open a PR and github will build the firmware for you using the _actions_ feature.
This means that once you have a github account you can perform all of your edits inside Github should this be desired.
Translations are _NOT_ accepted via issues/discussions or email.
This can be accessed on the [weblate hosted instance](https://hosted.weblate.org/projects/ironos/main-firmware/).

View File

@@ -14,18 +14,6 @@ But it is helpful to do some basic diagnostics first just in case the issue is e
The **VAST** majority of issues are poor soldering or cold solder joints.
If you can open up your iron, give it a good look at all the connection points, and use another iron to reflow any suspicious ones, this can fix most issues.
## Tip Shorted warning
If you are powering up a device that supports tip resistance detection (TS101 and Pinecilv2 as of present), the firmware checks the readings of the raw tip resistance and sorts these into three "bins". `8 ohm tips`, `6.2 ohm tips` and `tip-shorted`. The tip resistance is used when negotiating USB-PD and in thermal calculations.
The `tip-shorted` option is selected if your tip is measured to be abnormally small. This could indicate a failed driver mosfet or a failed tip.
When this warning is shown; heating will be disabled to protect from damage. As trying to heat a shorted tip can damage the iron itself.
It is best to take out your tip and manually measure and verify the tip's resistance. It should be 6-8 ohms (depending on tip type). When measuring resistances this small some multimeters can struggle. If you have access to a current limited bench power supply, you can try doing a 4 wire measurement by measuring the voltage drop on the tip while applying a known current. `(R=V/I)`.
If the tip measures correctly you may have a damaged driver mosfet; it would be ideal to open your iron and test the mosfet is operating correctly.
If after both of these checks everything looks as expected, feel free to open a discussion on IronOS to talk about the issue (Or for Pinecil the community chat can be a much faster response).
## High tip temp reading when the tip is cool
If you are finding the tip is reading high; the first fields to check in the Debug menu are `RTip` and `CHan`.

View File

@@ -8,7 +8,7 @@ For soldering irons that are designed to be powered by batteries (TS100 & Pineci
Currently **31** languages are supported. When downloading the firmware for your soldering iron, take note of the language code in the file name.
This project is considered stable & feature complete for everyday use with a supported device, _so please suggest any feature improvements you would like!_
This project is considered feature complete for use as a soldering iron, _so please suggest any feature improvements you would like!_
_This firmware does **NOT** support the USB port while running for changing settings. This is done through the onscreen menu only. Logos are edited on a computer and flashed like firmware._
@@ -39,12 +39,6 @@ For notes on installation for your device, please refer to the flashing guide fo
- [TS80 / TS80P](https://ralim.github.io/IronOS/Flashing/TS80%28P%29/)
- [TS100](https://ralim.github.io/IronOS/Flashing/TS100)
But the _generic_ [TL;DR](https://www.merriam-webster.com/dictionary/TL%3BDR) is to:
- [download firmware from here](https://github.com/Ralim/IronOS/releases) for the correct model with suitable language support;
- put a device into DFU/bootloader mode (usually by keep holding A/+/front button while connecting a device to power source to power device on);
- flash the firmware by drag-n-drop the firmware file using a file manager of your OS **or** using a separate flashing tool.
## Key Features
- PID style iron temperature control
@@ -76,25 +70,3 @@ When on the main screen and having the tip plugged in, the unit shows a pair of
- Holding down the button near the USB end will show the _[debug menu](https://ralim.github.io/IronOS/DebugMenu/)._ In _soldering mode_ this ends the heating.
Operation details are over in the [Menu information.](https://ralim.github.io/IronOS/Menu/)
## Feedback
If you would like to:
- report any issue related to IronOS
- request a feature
- provide some suggestion
then you can [fill this form](https://github.com/Ralim/IronOS/issues/new/choose) using github account\*.
And if you would like to:
- ask more generic question about IronOS/supported hardware/something you're curious about/etc.
- reach out community to chat with
- share your soldering & DIY skills
- share some interesting finding
- share useful related hardware/software with others
or _anything_ like that, then you can use forum-like [Discussions here](https://github.com/Ralim/IronOS/discussions).
\*: You may need to create it first if you don't have one - it's free of charge.

237
Makefile
View File

@@ -1,237 +0,0 @@
#!/usr/bin/env make
INFO:=top-level Makefile for IronOS - Soldering Iron Open Source Firmware Project.
### global adjustable variables
# command for "docker compose" from DOCKER env. var.
ifdef DOCKER
DOCKER_BIN:=$(DOCKER)
else
DOCKER_BIN:=
endif
# detect availability of docker
ifndef DOCKER_BIN
DOCKER_COMPOSE:=$(shell command -v docker-compose 2>/dev/null)
DOCKER_TOOL:=$(shell command -v docker 2>/dev/null)
ifdef DOCKER_COMPOSE
DOCKER_BIN:=$(DOCKER_COMPOSE)
else ifdef DOCKER_TOOL
DOCKER_BIN:=$(DOCKER_TOOL) compose
endif # DOCKER_* checks
endif # DOCKER_BIN
# command for python-based mkdocs tool
ifndef MKDOCS
MKDOCS:=mkdocs
endif
# build output related directories
ifdef OUT
OUT_DIR=$(OUT)
else
OUT_DIR=$(CURDIR)/BUILDS
endif
OUT_HEX=$(CURDIR)/source/Hexfile
### global static variables
# docker-related files
DOCKER_YML=$(CURDIR)/Env.yml
DOCKER_FILE=$(CURDIR)/scripts/IronOS.Dockerfile
# docker dependencies
DOCKER_DEPS=$(DOCKER_YML) $(DOCKER_FILE)
# compose docker-compose command
DOCKER_CMD=$(DOCKER_BIN) -f $(DOCKER_YML) run --rm builder
# MkDocs config
MKDOCS_YML=$(CURDIR)/scripts/IronOS-mkdocs.yml
# supported models
MODELS=TS100 TS80 TS80P Pinecil MHP30 Pinecilv2 S60 TS101 # target names & dir names
MODELS_ML=Pinecil Pinecilv2 # target names
MODELS_MULTILANG=Pinecil_multi-lang Pinecilv2_multi-lang # dir names
# zip command (to pack artifacts)
ZIP=zip -q -j -r
### targets
# default target to show help
help:
@echo
@echo "Welcome!"
@echo "This is $(INFO)"
@echo "To read more about supported commands (aka \"targets\"), type \"make list\"."
@echo "But if you're impatient then just type \"make docker-build\" - it will:"
@echo " * download, configure & start docker container"
@echo " * compile builds of IronOS firmware for all supported models inside that container"
@echo " * export generated binaries to \"scripts/ci/artefacts/\" local directory"
@echo "Patches are welcome. Happy Hacking!"
@echo
# target to list supported targets with additional info
list:
@echo
@echo "Supported top-level targets:"
@echo " * help - shows short basic help"
@echo " * list - this output"
@echo " * docker-shell - start docker container with shell inside to work on IronOS with all tools needed"
@echo " * docker-build - compile builds of IronOS for supported models inside docker container and place them to \"scripts/ci/artefacts/\""
@echo " * docker-clean - delete created docker container (but not pre-downloaded data for it)"
@echo " * docs - generate \"site\"/ directory with documentation in a form of static html files using ReadTheDocs framework and $(MKDOCS_YML) local config file"
@echo " * docs-deploy - generate & deploy docs online to gh-pages branch of current github repo"
@echo " * tests - run set of checks, linters & tests (equivalent of github CI IronOS project settings for push trigger)"
@echo " * clean-build - delete generated files & dirs produced during builds EXCEPT generated docker container image"
@echo " * clean-full - delete generated files & dirs produced during builds INCLUDING generated docker container image"
@echo ""
@echo "NOTES on supported pass-trough targets:"
@echo " * main Makefile is located in source/ directory and used to build the firmware itself;"
@echo " * this top-level Makefile supports to call targets from source/Makefile;"
@echo " * if you set up development environment right on your host, then to build firmware locally, you can just type right from here:"
@echo
@echo " $$ make firmware-LANG_ID model=MODEL_ID"
@echo
@echo "Full list of current supported IDs:"
@echo " * LANG_ID: $(shell echo "`ls Translations/ | grep -e "^translation_.*.json$$" | sed -e 's,^translation_,,g; s,\.json$$,,g; ' | tr '\n' ' '`")"
@echo " * MODEL_ID: $(MODELS)"
@echo
@echo "For example, to make a local build of IronOS firmware for TS100 with English language, just type:"
@echo
@echo " $$ make firmware-EN model=TS100"
@echo
# detect availability of docker
docker-check:
ifeq ($(DOCKER_BIN),)
@echo "ERROR: Can't find docker-compose nor docker tool. Please, install docker and try again"
@exit 1
else
@true
endif
# former start_dev.sh
docker-shell: docker-check $(DOCKER_DEPS)
$(DOCKER_CMD)
# former build.sh
docker-build: docker-check $(DOCKER_DEPS)
$(DOCKER_CMD) make build-all
# delete container
docker-clean: docker-check
-docker rmi ironos-builder:latest
# generate docs in site/ directory (DIR for -d is relative to mkdocs.yml file location, hence use default name/location site by setting up ../site)
docs: $(MKDOCS_YML) Documentation/* Documentation/Flashing/* Documentation/images/*
$(MKDOCS) build -f $(MKDOCS_YML) -d ../site
# deploy docs to gh-pages branch of current repo automagically using ReadTheDocs framework
docs-deploy: $(MKDOCS_YML) Documentation/* Documentation/Flashing/* Documentation/images/*
$(MKDOCS) gh-deploy -f $(MKDOCS_YML) -d ../site
# routine check for autogenerated Documentation/README.md
test-md:
@echo ""
@echo "---- Checking REAMDE.md... ----"
@echo ""
@/bin/sh ./scripts/deploy.sh docs_readme
# shell style & linter check (github CI version of shellcheck is more recent than alpine one so the latter may not catch some policies)
test-sh:
@echo ""
@echo "---- Checking shell scripts... ----"
@echo ""
@for f in `find ./scripts -type f -iname "*.sh" ! -name "flash_ts100_linux.sh"` ; do shellcheck "$${f}"; done;
# python-related tests & checks
test-py:
@echo ""
@echo "---- Checking python code... ----"
@echo ""
flake8 Translations
black --check Translations
@$(MAKE) -C source/ Objects/host/brieflz/libbrieflz.so
./Translations/brieflz_test.py
./Translations/make_translation_test.py
# clang-format check for C/C++ code style
test-ccpp:
@echo ""
@echo "---- Checking C/C++ code... ----"
@echo ""
$(MAKE) -C source/ clean check-style
# meta target for tests & checks based on .github/workflows/push
tests: test-md test-sh test-py test-ccpp
@echo ""
@echo "All tests & checks have been completed successfully."
@echo ""
# former scripts/ci/buildAll.sh - all in one to build all firmware & place the produced binaries into one output directory
build-all:
@mkdir -p $(OUT_DIR)
@chmod 0777 $(OUT_DIR)
cd source && bash ./build.sh
@echo "All Firmware built"
@for model in $(MODELS); do \
mkdir -p $(OUT_DIR)/$${model} ; \
cp -r $(OUT_HEX)/$${model}_*.bin $(OUT_DIR)/$${model}/ ; \
cp -r $(OUT_HEX)/$${model}_*.hex $(OUT_DIR)/$${model}/ ; \
cp -r $(OUT_HEX)/$${model}_*.dfu $(OUT_DIR)/$${model}/ ; \
done;
@echo "Resulting output directory: $(OUT_DIR)"
# target to build multilang supported builds for Pinecil & PinecilV2
build-multilang:
@for modelml in $(MODELS_ML); do \
$(MAKE) -C source/ -j2 model=$${modelml} firmware-multi_compressed_European firmware-multi_compressed_Bulgarian+Russian+Serbian+Ukrainian firmware-multi_Chinese+Japanese ; \
mkdir -p $(OUT_DIR)/$${modelml}_multi-lang ; \
cp $(OUT_HEX)/$${modelml}_multi_*.bin $(OUT_DIR)/$${modelml}_multi-lang ; \
cp $(OUT_HEX)/$${modelml}_multi_*.hex $(OUT_DIR)/$${modelml}_multi-lang ; \
cp $(OUT_HEX)/$${modelml}_multi_*.dfu $(OUT_DIR)/$${modelml}_multi-lang ; \
done;
@echo "Resulting output directory: $(OUT_DIR)"
# target to reproduce zips according to github CI settings; artifacts will be in $(OUT_DIR)/CI/*.zip
ci: tests build-all build-multilang
@mkdir -p $(OUT_DIR)/metadata;
@for m in $(MODELS) $(MODELS_MULTILANG); do \
cp LICENSE scripts/LICENSE_RELEASE.md $(OUT_DIR)/$${m}/ ; \
$(ZIP) $(OUT_DIR)/$${m}.zip $(OUT_DIR)/$${m} ; \
./source/metadata.py $${m}.json $${m}; \
cp $(OUT_HEX)/$${m}.json $(OUT_DIR)/metadata; \
done;
@$(ZIP) $(OUT_DIR)/metadata.zip $(OUT_DIR)/metadata
@mkdir -p $(OUT_DIR)/CI
@mv $(OUT_DIR)/*.zip $(OUT_DIR)/CI
@chmod 0777 $(OUT_DIR)/CI
@chmod 0666 $(OUT_DIR)/CI/*.zip
@echo "Resulting artifacts directory: $(OUT_DIR)/CI"
# pass-through target for Makefile inside source/ dir
%:
$(MAKE) -C source/ $@
# global clean-up target for produced/generated files inside tree
clean-build:
$(MAKE) -C source/ clean-all
rm -Rf site
rm -Rf scripts/ci/artefacts
rm -Rf $(OUT_DIR)
# global clean-up target
clean-full: clean-build docker-clean
# phony targets
.PHONY: help list
.PHONY: docker-check docker-shell docker-build docker-clean
.PHONY: docs docs-deploy
.PHONY: test-md test-sh test-py test-ccpp tests
.PHONY: build-all build-multilang ci
.PHONY: clean-build clean-full

View File

@@ -1,7 +1,7 @@
[![CI Build](https://github.com/Ralim/IronOS/actions/workflows/push.yml/badge.svg)](https://github.com/Ralim/IronOS/actions/workflows/push.yml)
[![Total Downloads](https://img.shields.io/github/downloads/ralim/IronOS/total)](https://github.com/Ralim/IronOS)
[![Contributors](https://img.shields.io/github/contributors-anon/ralim/ironos?color=blue&style=flat)](https://github.com/Ralim/IronOS/graphs/contributors)
[![Latest Release](https://img.shields.io/github/v/release/ralim/IronOS)](https://github.com/Ralim/IronOS/releases/latest)
![CI](https://github.com/Ralim/ts100/workflows/CI%20Build%20all/badge.svg)
![GitHub all](https://img.shields.io/github/downloads/ralim/IronOS/total)
![Latest Release](https://img.shields.io/github/v/release/ralim/IronOS)
[![Translation status](https://hosted.weblate.org/widgets/ironos/-/glossary/svg-badge.svg)](https://hosted.weblate.org/engage/ironos/)
# IronOS - Flexible Soldering iron control Firmware
@@ -21,28 +21,16 @@ This project is considered feature complete for use as a soldering iron, _so ple
_This firmware does **NOT** support the USB port while running for changing settings. This is done through the onscreen menu only. Logos are edited on a computer and flashed like firmware._
| Device | DC | QC | PD | EPR | BLE | Tip Sense | Recommended Purchase | Notes |
| :------------: | :-: | :-: | :-: | :-: | :-: | :-----: | :------------------: | :-------------------------------------------:|
| Miniware MHP30 | ❌ | ❌ | ✔️ | ❌ | ❌ | ✔️ | ✔️ | |
| Pinecil V1 | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ❌ | ❌ * | |
| Pinecil V2 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
| Miniware TS101 | ✔️ | ❌ | ✔️ | ✔️ | ❌ | ✔️ | ✔️ | Full OLED resolution not yet supported. |
| Sequre S60 | | ❌ | ✔️ | ❌ | ❌ | | ✔️ | Full OLED resolution not yet supported. |
| Miniware TS80P | ❌ | ✔️ | ✔️ | ❌ | ❌ | N/A | ✔️ | |
| Miniware TS100 | ✔️ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌** | |
| Miniware TS80 | ❌ | ✔️ | ❌ | ❌ | ❌ | N/A | ❌*** | |
| Device | DC | QC | PD | EPR | BLE | Battery | Recommended |
| :--------: | :-: | :-: | :-: | :-: | :-: | :-----: | :---------: |
| MHP30 | ❌ | ❌ | ✔️ | ❌ | ❌ | | ✔️ |
| Pinecil V1 | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ✔️ |
| Pinecil V2 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| TS80P | ❌ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ✔️ |
| TS100 | ✔️ | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ |
| TS80 | | ✔️ | ❌ | ❌ | ❌ | ✔️ | ❌ |
_Tip Sense_ refers to the device being able to choose between the 'usual' TS100 or Hakko T12 style tips and Pine64's custom shorter tips which have lower resistance and allow for more power. This is N/A for TS80/TS80P as there is only one model of tip for them.
_Recommended Purchase_ is only referring to if you are buying a **new** device. Of course all the devices listed are supported and will work excellently for years to come.
The TS101 and S60 feature a higher resolution OLED than other devices. Work is ongoing to support this fully, for now a cropped view is usable.
\*PinecilV1 stopped being manufactured a long time ago now, all models for sale online are generally clones (or old stock). Vendors are trying to sell these for more than Pine64 sells the V2 for now. Thus the V1 is **_no longer recommended_**.
\**Please note that Miniware started shipping TS100's using cloned STM32 Chips. While these do work with IronOS, their DFU bootloader works terribly, and it is hard to get it to successfully flash larger firmware images like IronOS without timing out. This is the main reason why the TS100 is **_no longer recommended_**.
\**\*TS80 is replaced by TS80P. Production ramped down a long time ago and it's just existing stock clearing the system. It's marked not recommended being optimistic that people might pause and buy the far superior TS80P instead. This is the main reason why the TS80 is **_no longer recommended_**.
\*Please note that Miniware started shipping TS100's using cloned STM32 Chips. While these do work with IronOS, their DFU bootloader works terribly, and it is hard to get it to successfully flash larger firmware images like IronOS without timing out. This is the main reason why the TS100 is **_no longer recommended_**.
## Getting Started
@@ -77,15 +65,9 @@ For notes on installation for your device, please refer to the flashing guide fo
- Boost mode lets you temporarily change the temperature when soldering (i.e. raise the temperature for short periods)
- (TS100/Pinecil) Battery charge level indicator if power source set to a lipo cell count
- (TS80/TS80P/Pinecil) Power bank operating voltage is displayed
- [Custom boot up logo support](https://ralim.github.io/IronOS/Logo/)[^bootlogo]
- [Custom boot up logo support](https://ralim.github.io/IronOS/Logo/)
- Automatic LCD rotation based on the orientation
[^bootlogo]: **BOOTUP LOGO NOTICE**:
IronOS supports both a bootup logo _AND_ bootup animations.
However, _**they are no longer included in this repo**_.
**Please, [read the docs](https://ralim.github.io/IronOS/Logo/) for more information**.
## Menu System
This new firmware uses a new menu system to allow access to the settings on the device.
@@ -100,9 +82,8 @@ Operation details are over in the [Menu information.](https://ralim.github.io/Ir
## Translations
Is your preferred language missing localisation of some of the text?
Translations are stored as `json` files in the Translations folder.
PR's are loved and accepted to enhance the firmware.
Is your preferred language missing localisation of languages?
This project is using Weblate for managing translations in a user friendly way; [the user interface for this is on their hosted website.](https://hosted.weblate.org/engage/ironos/)
## Thanks

0
Translations/brieflz.py Executable file → Normal file
View File

0
Translations/brieflz_test.py Executable file → Normal file
View File

View File

@@ -66,29 +66,6 @@ def read_translation(json_root: Union[str, Path], lang_code: str) -> dict:
return lang
def filter_translation(lang: dict, defs: dict, macros: frozenset):
def check_excluded(record):
if "include" in record and not any(m in macros for m in record["include"]):
return True
if "exclude" in record and any(m in macros for m in record["exclude"]):
return True
return False
for category in ("menuOptions", "menuGroups"):
for index, record in enumerate(defs[category]):
if check_excluded(record):
lang[category][record["id"]]["displayText"] = ""
lang[category][record["id"]]["description"] = ""
for index, record in enumerate(defs["messagesWarn"]):
if check_excluded(record):
lang["messagesWarn"][record["id"]]["message"] = ""
return lang
def validate_langcode_matches_content(filename: str, content: dict) -> None:
# Extract lang code from file name
lang_code = filename[12:-5].upper()
@@ -124,8 +101,6 @@ def get_constants() -> List[Tuple[str, str]]:
("SmallSymbolSpace", " "),
("LargeSymbolDot", "."),
("SmallSymbolDot", "."),
("SmallSymbolSlash", "/"),
("SmallSymbolColon", ":"),
("LargeSymbolDegC", "C"),
("SmallSymbolDegC", "C"),
("LargeSymbolDegF", "F"),
@@ -180,8 +155,6 @@ def get_accel_names_list() -> List[str]:
"BMA223",
"MSA301",
"SC7A20",
"GPIO",
"LIS2 CLONE",
]
@@ -189,8 +162,8 @@ def get_power_source_list() -> List[str]:
return [
"DC",
"QC",
"PV:PDwVBus",
"PD:No VBus",
"PD W. VBus",
"PD No VBus",
]
@@ -277,6 +250,7 @@ def get_letter_counts(defs: dict, lang: dict, build_version: str) -> Dict:
# collapse all strings down into the composite letters and store totals for these
# Doing this seperately for small and big font
def sort_and_count(list_in: List[str]):
symbol_counts: dict[str, int] = {}
for line in list_in:
line = line.replace("\n", "").replace("\r", "")
@@ -465,6 +439,7 @@ class FontMapsPerFont:
def get_font_map_per_font(
text_list_small_font: List[str], text_list_large_font: List[str]
) -> FontMapsPerFont:
pending_small_symbols = set(text_list_small_font)
pending_large_symbols = set(text_list_large_font)
@@ -1054,6 +1029,7 @@ def get_translation_strings_and_indices_text(
large_font_symbol_conversion_table: Dict[str, bytes],
suffix: str = "",
) -> str:
# For all strings; we want to convert them to their byte encoded form (using font index lookups)
# Then we want to sort by their reversed format to see if we can remove any duplicates by combining the tails (last n bytes;n>0)
# Finally we look for any that are contained inside one another, and if they are we update them to point to this
@@ -1142,6 +1118,7 @@ def get_translation_strings_and_indices_text(
translation_strings_text = " /* .strings = */ {\n"
for i, encoded_bytes in enumerate(byte_encoded_strings):
if i > 0:
translation_strings_text += ' "\\0"\n'
@@ -1263,57 +1240,6 @@ def get_translation_sanity_checks_text(defs: dict) -> str:
return sanity_checks_text
def get_version_suffix(ver) -> str:
# Check env var from push.yml first:
# - if it's pull request then use vX.YY + C.ID for version line as in *C*I with proper tag instead of merge tag for detached tree
if os.environ.get("GITHUB_CI_PR_SHA", "") != "":
return "C" + "." + os.environ["GITHUB_CI_PR_SHA"][:8].upper()
# - no github PR SHA ID, hence keep checking
suffix = str("")
try:
# Use commands _hoping_ they won't be too new for one environments nor deprecated for another ones:
## - get commit id; --short=8 - the shorted hash with 8 digits (increase/decrease if needed!)
sha_id = f"{subprocess.check_output(['git', 'rev-parse', '--short=8', 'HEAD']).strip().decode('ascii').upper()}"
## - if the exact commit relates to tag, then this command should return one-line tag name:
tag = f"{subprocess.check_output(['git', 'tag', '--points-at', '%s' % sha_id]).strip().decode('ascii')}"
## - get short "traditional" branch name (as in `git branch` for that one with asterisk):
branch = f"{subprocess.check_output(['git', 'symbolic-ref', '--short', 'HEAD']).strip().decode('ascii')}"
if tag and "" != tag:
# _Speculate_ on tag that it's Release...
if ver == tag:
# ... but only if double-check for tag is matched
suffix = "R"
else:
# ... otherwise it's tagged but not a release version!
suffix = "T"
elif branch and "" != branch:
# _Hardcoded_ current main development branch...
if "dev" == branch:
suffix = "D"
# ... or some other branch
else:
suffix = "B"
else:
# Something else but from Git
suffix = "G"
# Attach SHA commit to ID a build since it's from git anyway
suffix += "." + sha_id
except subprocess.CalledProcessError:
# No git tree so _probably_ Homebrew build from source
suffix = "H"
except OSError:
# Something _special_?
suffix = "S"
if "" == suffix:
# Something _very_ special!
suffix = "V"
return suffix
def read_version() -> str:
with open(HERE.parent / "source" / "version.h") as version_file:
for line in version_file:
@@ -1321,7 +1247,11 @@ def read_version() -> str:
matches = re.findall(r"\"(.+?)\"", line)
if matches:
version = matches[0]
version += get_version_suffix(version)
try:
version += f".{subprocess.check_output(['git', 'rev-parse', '--short=7', 'HEAD']).strip().decode('ascii').upper()}"
# --short=7: the shorted hash with 7 digits. Increase/decrease if needed!
except OSError:
version += " git"
return version
@@ -1355,13 +1285,6 @@ def parse_args() -> argparse.Namespace:
required=False,
dest="compress_font",
)
parser.add_argument(
"--macros",
help="Extracted macros to filter translation strings by",
type=argparse.FileType("r"),
required=True,
dest="macros",
)
parser.add_argument(
"--output", "-o", help="Target file", type=argparse.FileType("w"), required=True
)
@@ -1382,12 +1305,6 @@ def main() -> None:
logging.error("error: Both --output-pickled and --input-pickled are specified")
sys.exit(1)
macros = (
frozenset(re.findall(r"#define ([^ ]+)", args.macros.read()))
if args.macros
else frozenset()
)
language_data: LanguageData
if args.input_pickled:
logging.info(f"Reading pickled language data from {args.input_pickled.name}...")
@@ -1412,13 +1329,11 @@ def main() -> None:
defs_ = load_json(os.path.join(json_dir, "translations_definitions.json"))
if len(args.languageCodes) == 1:
lang_ = filter_translation(
read_translation(json_dir, args.languageCodes[0]), defs_, macros
)
lang_ = read_translation(json_dir, args.languageCodes[0])
language_data = prepare_language(lang_, defs_, build_version)
else:
langs_ = [
filter_translation(read_translation(json_dir, lang_code), defs_, macros)
read_translation(json_dir, lang_code)
for lang_code in args.languageCodes
]
language_data = prepare_languages(langs_, defs_, build_version)

0
Translations/objcopy.py Executable file → Normal file
View File

View File

@@ -1,9 +1,9 @@
{
"languageCode": "BE",
"languageLocalName": "Беларуская",
"tempUnitFahrenheit": false,
"tempUnitFahrenheit": true,
"messagesWarn": {
"CalibrationDone": {
"CJCCalibrationDone": {
"message": "Каліброўка\nзроблена!"
},
"ResetOKMessage": {
@@ -28,10 +28,7 @@
"message": "!ЗАМКНУТЫ!"
},
"WarningThermalRunaway": {
"message": "Некантралюемае\nразаграванне"
},
"WarningTipShorted": {
"message": "!Tip Shorted!"
"message": "Цеплавы\nУцякач"
},
"SettingsCalibrationWarning": {
"message": "Пераканайцеся, што пры наступнай загрузцы наканечнік і ручка маюць пакаёвую тэмпературу!"
@@ -46,34 +43,25 @@
"message": "НАПРУГА--"
},
"UndervoltageString": {
"message": "Нізкая напруга\n"
"message": "Нізкая напруга"
},
"InputVoltageString": {
"message": "Сілкаванне В: \n"
"message": "Сілкаванне В: "
},
"SleepingSimpleString": {
"message": "Zzzz"
},
"SleepingAdvancedString": {
"message": "Чаканне...\n"
"message": "Чаканне..."
},
"SleepingTipAdvancedString": {
"message": "Джала: \n"
"message": "Джала:"
},
"OffString": {
"message": "Выкл."
},
"ProfilePreheatString": {
"message": "Preheat\n"
},
"ProfileCooldownString": {
"message": "Cooldown\n"
},
"DeviceFailedValidationWarning": {
"message": "Ваша прылада, хутчэй за ўсё, падробка!"
},
"TooHotToStartProfileWarning": {
"message": "Too hot to\nstart profile"
}
},
"characters": {
@@ -131,10 +119,6 @@
"displayText": "PD\nпрыпынак",
"description": "Час чакання ўзгаднення PD з крокам 100 мс для сумяшчальнасці з некаторымі зараднымі зараднымі прыладамі QC (0: адключана)"
},
"PDVpdo": {
"displayText": "PD\nVPDO",
"description": "Уключае рэжымы PPS & EPR."
},
"BoostTemperature": {
"displayText": "t° турба\nрэжыму",
"description": "Тэмпература джала ў турба-рэжыме"
@@ -155,62 +139,6 @@
"displayText": "Дазволіць\nблок. кнопак",
"description": "Пры рабоце падоўжаны націск дзьвух кнопак блакуе іх (А=Адключана | Т=Толькі турба | П=Поўная блакіроўка)"
},
"ProfilePhases": {
"displayText": "Profile\nPhases",
"description": "Number of phases in profile mode"
},
"ProfilePreheatTemp": {
"displayText": "Preheat\nTemp",
"description": "Preheat to this temperature at the start of profile mode"
},
"ProfilePreheatSpeed": {
"displayText": "Preheat\nSpeed",
"description": "Preheat at this rate (degrees per second)"
},
"ProfilePhase1Temp": {
"displayText": "Phase 1\nTemp",
"description": "Target temperature for the end of this phase"
},
"ProfilePhase1Duration": {
"displayText": "Phase 1\nDuration",
"description": "Target duration of this phase (seconds)"
},
"ProfilePhase2Temp": {
"displayText": "Phase 2\nTemp",
"description": ""
},
"ProfilePhase2Duration": {
"displayText": "Phase 2\nDuration",
"description": ""
},
"ProfilePhase3Temp": {
"displayText": "Phase 3\nTemp",
"description": ""
},
"ProfilePhase3Duration": {
"displayText": "Phase 3\nDuration",
"description": ""
},
"ProfilePhase4Temp": {
"displayText": "Phase 4\nTemp",
"description": ""
},
"ProfilePhase4Duration": {
"displayText": "Phase 4\nDuration",
"description": ""
},
"ProfilePhase5Temp": {
"displayText": "Phase 5\nTemp",
"description": ""
},
"ProfilePhase5Duration": {
"displayText": "Phase 5\nDuration",
"description": ""
},
"ProfileCooldownSpeed": {
"displayText": "Cooldown\nSpeed",
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
},
"MotionSensitivity": {
"displayText": "Адчувальнасць\nакселерометра",
"description": "Адчувальнасць акселерометра (0=Выкл. | 1=Мін. | ... | 9=Макс.)"
@@ -279,10 +207,6 @@
"displayText": "Падрабязны\nэкран пайкі",
"description": "Паказваць дэталёвую інформацыю на экране пайкі"
},
"BluetoothLE": {
"displayText": "Bluetooth\n",
"description": "Enables BLE"
},
"PowerLimit": {
"displayText": "Межы\nмагутнасці",
"description": "Максімальная магутнасць, якую можа выкарыстоўваць паяльнік (Ватт)"
@@ -314,6 +238,10 @@
"LanguageSwitch": {
"displayText": "Мова:\n BY Беларуская",
"description": ""
},
"BLEEnabled": {
"displayText": "BLE\n Enabled",
"description": ""
}
}
}
}

View File

@@ -1,9 +1,9 @@
{
"languageCode": "BG",
"languageLocalName": "Български",
"tempUnitFahrenheit": false,
"tempUnitFahrenheit": true,
"messagesWarn": {
"CalibrationDone": {
"CJCCalibrationDone": {
"message": "Calibration\ndone!"
},
"ResetOKMessage": {
@@ -30,9 +30,6 @@
"WarningThermalRunaway": {
"message": "Thermal\nRunaway"
},
"WarningTipShorted": {
"message": "!Tip Shorted!"
},
"SettingsCalibrationWarning": {
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
@@ -46,34 +43,25 @@
"message": "Ниско DC Напрежение"
},
"UndervoltageString": {
"message": "Ниско Напрежение\n"
"message": "Ниско Напрежение"
},
"InputVoltageString": {
"message": "Входно V: \n"
"message": "Входно V: "
},
"SleepingSimpleString": {
"message": "Сън"
},
"SleepingAdvancedString": {
"message": "Хър Хър Хър...\n"
"message": "Хър Хър Хър..."
},
"SleepingTipAdvancedString": {
"message": "Връх: \n"
"message": "Връх:"
},
"OffString": {
"message": "Изкл."
},
"ProfilePreheatString": {
"message": "Preheat\n"
},
"ProfileCooldownString": {
"message": "Cooldown\n"
},
"DeviceFailedValidationWarning": {
"message": "Your device is most likely a counterfeit!"
},
"TooHotToStartProfileWarning": {
"message": "Too hot to\nstart profile"
}
},
"characters": {
@@ -131,10 +119,6 @@
"displayText": "PD\ntimeout",
"description": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers"
},
"PDVpdo": {
"displayText": "PD\nVPDO",
"description": "Enables PPS & EPR modes"
},
"BoostTemperature": {
"displayText": "Турбо\nтемп.",
"description": "Температура за \"турбо\" режим"
@@ -155,62 +139,6 @@
"displayText": "Allow locking\nbuttons",
"description": "While soldering, hold down both buttons to toggle locking them (D=disable | B=boost mode only | F=full locking)"
},
"ProfilePhases": {
"displayText": "Profile\nPhases",
"description": "Number of phases in profile mode"
},
"ProfilePreheatTemp": {
"displayText": "Preheat\nTemp",
"description": "Preheat to this temperature at the start of profile mode"
},
"ProfilePreheatSpeed": {
"displayText": "Preheat\nSpeed",
"description": "Preheat at this rate (degrees per second)"
},
"ProfilePhase1Temp": {
"displayText": "Phase 1\nTemp",
"description": "Target temperature for the end of this phase"
},
"ProfilePhase1Duration": {
"displayText": "Phase 1\nDuration",
"description": "Target duration of this phase (seconds)"
},
"ProfilePhase2Temp": {
"displayText": "Phase 2\nTemp",
"description": ""
},
"ProfilePhase2Duration": {
"displayText": "Phase 2\nDuration",
"description": ""
},
"ProfilePhase3Temp": {
"displayText": "Phase 3\nTemp",
"description": ""
},
"ProfilePhase3Duration": {
"displayText": "Phase 3\nDuration",
"description": ""
},
"ProfilePhase4Temp": {
"displayText": "Phase 4\nTemp",
"description": ""
},
"ProfilePhase4Duration": {
"displayText": "Phase 4\nDuration",
"description": ""
},
"ProfilePhase5Temp": {
"displayText": "Phase 5\nTemp",
"description": ""
},
"ProfilePhase5Duration": {
"displayText": "Phase 5\nDuration",
"description": ""
},
"ProfileCooldownSpeed": {
"displayText": "Cooldown\nSpeed",
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
},
"MotionSensitivity": {
"displayText": "Усещане\nза движение",
"description": "Усещане за движение (0=Изключено | 1=Слабо | ... | 9=Силно)"
@@ -279,10 +207,6 @@
"displayText": "Детайлен\nработен екран",
"description": "Детайлна информация в работен режим при запояване"
},
"BluetoothLE": {
"displayText": "Bluetooth\n",
"description": "Enables BLE"
},
"PowerLimit": {
"displayText": "Лимит на\nмощност",
"description": "Максимална мощност на поялника (Watt)"
@@ -314,6 +238,10 @@
"LanguageSwitch": {
"displayText": "Език:\n BG Български",
"description": ""
},
"BLEEnabled": {
"displayText": "BLE\n Enabled",
"description": ""
}
}
}
}

View File

@@ -1,10 +1,10 @@
{
"languageCode": "CS",
"languageLocalName": "Český",
"tempUnitFahrenheit": false,
"tempUnitFahrenheit": true,
"messagesWarn": {
"CalibrationDone": {
"message": "Kalibrace\ndokončena!"
"CJCCalibrationDone": {
"message": "Calibration\ndone!"
},
"ResetOKMessage": {
"message": "Reset OK"
@@ -30,14 +30,11 @@
"WarningThermalRunaway": {
"message": "Teplotní\nOchrana"
},
"WarningTipShorted": {
"message": "!Tip Shorted!"
},
"SettingsCalibrationWarning": {
"message": "Před restartem se ujistěte, že hrot a držák mají pokojovou teplotu!"
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
"CJCCalibrating": {
"message": "kalibrování\n"
"message": "calibrating\n"
},
"SettingsResetWarning": {
"message": "Opravdu chcete resetovat zařízení do továrního nastavení?"
@@ -46,34 +43,25 @@
"message": "Nízké DC"
},
"UndervoltageString": {
"message": "Nízké napětí\n"
"message": "Nízké napětí"
},
"InputVoltageString": {
"message": "Napětí: \n"
"message": "Napětí: "
},
"SleepingSimpleString": {
"message": "Zzz "
},
"SleepingAdvancedString": {
"message": "Režim spánku...\n"
"message": "Režim spánku..."
},
"SleepingTipAdvancedString": {
"message": "Hrot: \n"
"message": "Hrot:"
},
"OffString": {
"message": "Vyp"
},
"ProfilePreheatString": {
"message": "Preheat\n"
},
"ProfileCooldownString": {
"message": "Cooldown\n"
},
"DeviceFailedValidationWarning": {
"message": "Vaše zařízení je s nejvyšší pravděpodobností padělek!"
},
"TooHotToStartProfileWarning": {
"message": "Too hot to\nstart profile"
"message": "Your device is most likely a counterfeit!"
}
},
"characters": {
@@ -131,10 +119,6 @@
"displayText": "PD\ntimeout",
"description": "Maximální prodleva při jednání PD ve 100ms krocích pro kompatibilitu s některými QC nabíječkami"
},
"PDVpdo": {
"displayText": "PD\nVPDO",
"description": "Povoluje režimy PPS & EPR"
},
"BoostTemperature": {
"displayText": "Teplota\nboostu",
"description": "Teplota hrotu v \"režimu boost\""
@@ -155,62 +139,6 @@
"displayText": "Povolit zamč.\ntlačítek",
"description": "Při pájení podržte obě tlačítka pro jejich zamčení (Z=zakázáno | B=pouze v režimu boost | U=úplné zamčení)"
},
"ProfilePhases": {
"displayText": "Profile\nPhases",
"description": "Number of phases in profile mode"
},
"ProfilePreheatTemp": {
"displayText": "Preheat\nTemp",
"description": "Preheat to this temperature at the start of profile mode"
},
"ProfilePreheatSpeed": {
"displayText": "Preheat\nSpeed",
"description": "Preheat at this rate (degrees per second)"
},
"ProfilePhase1Temp": {
"displayText": "Phase 1\nTemp",
"description": "Target temperature for the end of this phase"
},
"ProfilePhase1Duration": {
"displayText": "Phase 1\nDuration",
"description": "Target duration of this phase (seconds)"
},
"ProfilePhase2Temp": {
"displayText": "Phase 2\nTemp",
"description": ""
},
"ProfilePhase2Duration": {
"displayText": "Phase 2\nDuration",
"description": ""
},
"ProfilePhase3Temp": {
"displayText": "Phase 3\nTemp",
"description": ""
},
"ProfilePhase3Duration": {
"displayText": "Phase 3\nDuration",
"description": ""
},
"ProfilePhase4Temp": {
"displayText": "Phase 4\nTemp",
"description": ""
},
"ProfilePhase4Duration": {
"displayText": "Phase 4\nDuration",
"description": ""
},
"ProfilePhase5Temp": {
"displayText": "Phase 5\nTemp",
"description": ""
},
"ProfilePhase5Duration": {
"displayText": "Phase 5\nDuration",
"description": ""
},
"ProfileCooldownSpeed": {
"displayText": "Cooldown\nSpeed",
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
},
"MotionSensitivity": {
"displayText": "Citlivost\nna pohyb",
"description": "0=vyp | 1=nejméně citlivé | ... | 9=nejvíce citlivé"
@@ -279,17 +207,13 @@
"displayText": "Podrobná obr.\npájení",
"description": "Zobrazit detailní informace malým fontem na obrazovce pájení"
},
"BluetoothLE": {
"displayText": "Bluetooth\n",
"description": "Povoluje BLE"
},
"PowerLimit": {
"displayText": "Omezení\nVýkonu",
"description": "Maximální příkon páječky (W=watt)"
},
"CalibrateCJC": {
"displayText": "Kalibrovat CJC\npři příštím startu",
"description": "Při příštím startu bude kalibrována kompenzace studeného spoje (není třeba pokud Delta T je < 5°C)"
"displayText": "Calibrate CJC\nat next boot",
"description": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
},
"VoltageCalibration": {
"displayText": "Kalibrovat\nvstupní napětí?",
@@ -314,6 +238,10 @@
"LanguageSwitch": {
"displayText": "Jazyk:\n CS Český",
"description": ""
},
"BLEEnabled": {
"displayText": "BLE\n Enabled",
"description": ""
}
}
}
}

View File

@@ -1,9 +1,9 @@
{
"languageCode": "DA",
"languageLocalName": "Dansk",
"tempUnitFahrenheit": false,
"tempUnitFahrenheit": true,
"messagesWarn": {
"CalibrationDone": {
"CJCCalibrationDone": {
"message": "Calibration\ndone!"
},
"ResetOKMessage": {
@@ -30,9 +30,6 @@
"WarningThermalRunaway": {
"message": "Thermal\nRunaway"
},
"WarningTipShorted": {
"message": "!Tip Shorted!"
},
"SettingsCalibrationWarning": {
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
@@ -46,34 +43,25 @@
"message": "Lav Volt"
},
"UndervoltageString": {
"message": "Undervolt\n"
"message": "Undervolt"
},
"InputVoltageString": {
"message": "Input V: \n"
"message": "Input V: "
},
"SleepingSimpleString": {
"message": "Zzzz"
},
"SleepingAdvancedString": {
"message": "Dvale...\n"
"message": "Dvale..."
},
"SleepingTipAdvancedString": {
"message": "Tip: \n"
"message": "Tip:"
},
"OffString": {
"message": "Off"
},
"ProfilePreheatString": {
"message": "Preheat\n"
},
"ProfileCooldownString": {
"message": "Cooldown\n"
},
"DeviceFailedValidationWarning": {
"message": "Din enhed er højst sandsyneligt en Kopivare!"
},
"TooHotToStartProfileWarning": {
"message": "Too hot to\nstart profile"
}
},
"characters": {
@@ -131,10 +119,6 @@
"displayText": "PD\ntimeout",
"description": "PD-forhandlingstimeout i trin på 100 ms for kompatibilitet med nogle QC-opladere"
},
"PDVpdo": {
"displayText": "PD\nVPDO",
"description": "Enables PPS & EPR modes"
},
"BoostTemperature": {
"displayText": "Boost\ntemp",
"description": "Temperatur i \"boost mode\""
@@ -155,62 +139,6 @@
"displayText": "Tillad låsning\naf knapperne",
"description": "Hold begge knapper nede under lodning for at låse dem (D=deaktiver | B=kun boost-tilstand | F=fuld låsning)"
},
"ProfilePhases": {
"displayText": "Profile\nPhases",
"description": "Number of phases in profile mode"
},
"ProfilePreheatTemp": {
"displayText": "Preheat\nTemp",
"description": "Preheat to this temperature at the start of profile mode"
},
"ProfilePreheatSpeed": {
"displayText": "Preheat\nSpeed",
"description": "Preheat at this rate (degrees per second)"
},
"ProfilePhase1Temp": {
"displayText": "Phase 1\nTemp",
"description": "Target temperature for the end of this phase"
},
"ProfilePhase1Duration": {
"displayText": "Phase 1\nDuration",
"description": "Target duration of this phase (seconds)"
},
"ProfilePhase2Temp": {
"displayText": "Phase 2\nTemp",
"description": ""
},
"ProfilePhase2Duration": {
"displayText": "Phase 2\nDuration",
"description": ""
},
"ProfilePhase3Temp": {
"displayText": "Phase 3\nTemp",
"description": ""
},
"ProfilePhase3Duration": {
"displayText": "Phase 3\nDuration",
"description": ""
},
"ProfilePhase4Temp": {
"displayText": "Phase 4\nTemp",
"description": ""
},
"ProfilePhase4Duration": {
"displayText": "Phase 4\nDuration",
"description": ""
},
"ProfilePhase5Temp": {
"displayText": "Phase 5\nTemp",
"description": ""
},
"ProfilePhase5Duration": {
"displayText": "Phase 5\nDuration",
"description": ""
},
"ProfileCooldownSpeed": {
"displayText": "Cooldown\nSpeed",
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
},
"MotionSensitivity": {
"displayText": "Bevægelses\nfølsomhed",
"description": "Bevægelsesfølsomhed (0=Slukket | 1=Mindst følsom | ... | 9=Mest følsom)"
@@ -279,10 +207,6 @@
"displayText": "Detaljeret\nloddeskærm",
"description": "Vis detaljeret information mens der loddes"
},
"BluetoothLE": {
"displayText": "Bluetooth\n",
"description": "Enables BLE"
},
"PowerLimit": {
"displayText": "Strøm\nbegrænsning",
"description": "Maksimal effekt Loddekolben kan bruge (W=watt)"
@@ -314,6 +238,10 @@
"LanguageSwitch": {
"displayText": "Sprog:\n DA Dansk",
"description": ""
},
"BLEEnabled": {
"displayText": "BLE\n Enabled",
"description": ""
}
}
}

View File

@@ -1,9 +1,9 @@
{
"languageCode": "DE",
"languageLocalName": "Deutsch",
"tempUnitFahrenheit": false,
"tempUnitFahrenheit": true,
"messagesWarn": {
"CalibrationDone": {
"CJCCalibrationDone": {
"message": "Erfolgreich\nkalibriert!"
},
"ResetOKMessage": {
@@ -30,9 +30,6 @@
"WarningThermalRunaway": {
"message": "Thermal\nRunaway"
},
"WarningTipShorted": {
"message": "!Tip Shorted!"
},
"SettingsCalibrationWarning": {
"message": "Vor dem Neustart bitte sicherstellen, dass Lötspitze & Gerät Raumtemperatur haben!"
},
@@ -46,34 +43,25 @@
"message": "V niedr."
},
"UndervoltageString": {
"message": "Unterspannung\n"
"message": "Unterspannung"
},
"InputVoltageString": {
"message": "V Eingang: \n"
"message": "V Eingang: "
},
"SleepingSimpleString": {
"message": "Zzzz"
},
"SleepingAdvancedString": {
"message": "Ruhemodus...\n"
"message": "Ruhemodus..."
},
"SleepingTipAdvancedString": {
"message": "Temp: \n"
"message": "Temp:"
},
"OffString": {
"message": "Aus"
},
"ProfilePreheatString": {
"message": "Vorwärmen\n"
},
"ProfileCooldownString": {
"message": "Abkühlen\n"
},
"DeviceFailedValidationWarning": {
"message": "Höchstwahrscheinlich ist das Gerät eine Fälschung!"
},
"TooHotToStartProfileWarning": {
"message": "Zu heiß für\nProfilstart!"
}
},
"characters": {
@@ -131,10 +119,6 @@
"displayText": "PD\ntimeout",
"description": "PD Abfragedauer in 100ms Schritten (Kompatibilität mit best. QC-Ladegeräten)"
},
"PDVpdo": {
"displayText": "PD\nVPDO",
"description": "Aktiviert PPS & EPR"
},
"BoostTemperature": {
"displayText": "Boost-\ntemperatur",
"description": "Temperatur der Lötspitze im Boostmodus"
@@ -155,62 +139,6 @@
"displayText": "Tasten-\nsperre",
"description": "Langes drücken beider Tasten im Lötmodus sperrt diese (A=aus | B=nur Boost | V=vollständig)"
},
"ProfilePhases": {
"displayText": "Profile\nPhasen",
"description": "Anzahl an Phasen im Profilmodus"
},
"ProfilePreheatTemp": {
"displayText": "Vorheiz-\ntemperatur",
"description": "Zu Beginn des Profilmodus auf diese Temperatur vorheizen"
},
"ProfilePreheatSpeed": {
"displayText": "Vorheiz-\nrate",
"description": "Mit dieser Geschwindigkeit vorheizen (Grad pro Sekunde)"
},
"ProfilePhase1Temp": {
"displayText": "Phase 1\nTemperatur",
"description": "Zieltemperatur zum Ende dieser Phase"
},
"ProfilePhase1Duration": {
"displayText": "Phase 1\nDauer",
"description": "Zieldauer dieser Phase (Sekunden)"
},
"ProfilePhase2Temp": {
"displayText": "Phase 2\nTemperatur",
"description": ""
},
"ProfilePhase2Duration": {
"displayText": "Phase 2\nDauer",
"description": ""
},
"ProfilePhase3Temp": {
"displayText": "Phase 3\nTemperatur",
"description": ""
},
"ProfilePhase3Duration": {
"displayText": "Phase 3\nDauer",
"description": ""
},
"ProfilePhase4Temp": {
"displayText": "Phase 4\nTemperatur",
"description": ""
},
"ProfilePhase4Duration": {
"displayText": "Phase 4\nDauer",
"description": ""
},
"ProfilePhase5Temp": {
"displayText": "Phase 5\nTemperatur",
"description": ""
},
"ProfilePhase5Duration": {
"displayText": "Phase 5\nDauer",
"description": ""
},
"ProfileCooldownSpeed": {
"displayText": "Abkühl-\nrate",
"description": "Am Ende des Profilmodus mit dieser Geschwindigkeit abkühlen (Grad pro Sekunde)"
},
"MotionSensitivity": {
"displayText": "Bewegungs-\nempfindlichk.",
"description": "0=aus | 1=minimal | ... | 9=maximal"
@@ -248,7 +176,7 @@
"description": "Scrollgeschwindigkeit der Erläuterungen (L=langsam | S=schnell)"
},
"ReverseButtonTempChange": {
"displayText": "+- Tasten\numkehren",
"displayText": "+- Tasten\numkehren?",
"description": "Tastenbelegung zur Temperaturänderung umkehren"
},
"AnimSpeed": {
@@ -260,7 +188,7 @@
"description": "Icon-Animationen im Hauptmenü wiederholen"
},
"Brightness": {
"displayText": "Bildschirm-\nhelligkeit",
"displayText": "Bildschirm-\nkontrast",
"description": "Verändert die Helligkeit des OLED-Displays"
},
"ColourInversion": {
@@ -279,20 +207,16 @@
"displayText": "Detaillierte\nLötansicht",
"description": "Detaillierte Anzeige im Lötmodus"
},
"BluetoothLE": {
"displayText": "Bluetooth\n",
"description": "Aktiviert Bluetooth LE"
},
"PowerLimit": {
"displayText": "Leistungs-\nmaximum",
"description": "Durchschnittliche maximal zulässige Leistungsaufnahme des Lötkolbens (W=Watt)"
"description": "Maximal zulässige Leistungsaufnahme des Lötkolbens (W=Watt)"
},
"CalibrateCJC": {
"displayText": "Temperatur\nkalibrieren",
"displayText": "Temperatur\nkalibrieren?",
"description": "Beim nächsten Start wird die Kaltstellenkompensation kalibriert (nicht nötig wenn Delta T < 5°C)"
},
"VoltageCalibration": {
"displayText": "Eingangsspannung\nkalibrieren",
"displayText": "Eingangsspannung\nkalibrieren?",
"description": "Kalibrierung der Eingangsspannung (Langer Tastendruck zum Verlassen)"
},
"PowerPulsePower": {
@@ -308,12 +232,16 @@
"description": "Dauer des Wachhalteimpulses (x 250ms)"
},
"SettingsReset": {
"displayText": "Einstellungen\nzurücksetzen",
"displayText": "Einstellungen\nzurücksetzen?",
"description": "Werte auf Werkseinstellungen zurücksetzen"
},
"LanguageSwitch": {
"displayText": "Sprache:\n DE Deutsch",
"description": ""
},
"BLEEnabled": {
"displayText": "BLE\n Enabled",
"description": "Aktiviert BLE."
}
}
}

View File

@@ -3,8 +3,8 @@
"languageLocalName": "Greek",
"tempUnitFahrenheit": true,
"messagesWarn": {
"CalibrationDone": {
"message": "Βαθμονόμηση\nολοκληρώθηκε!"
"CJCCalibrationDone": {
"message": "Calibration\ndone!"
},
"ResetOKMessage": {
"message": "Επαν. OK"
@@ -30,14 +30,11 @@
"WarningThermalRunaway": {
"message": "Θερμική\nΦυγή"
},
"WarningTipShorted": {
"message": "!Tip Shorted!"
},
"SettingsCalibrationWarning": {
"message": "Πριν την επανεκκίνηση, βεβαιωθείτε ότι η μύτη και η συσκ. είναι σε θερμ. δωματίου!"
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
"CJCCalibrating": {
"message": "βαθμονόμηση\n"
"message": "calibrating\n"
},
"SettingsResetWarning": {
"message": "Σίγουρα θέλετε επαναφορά αρχικών ρυθμίσεων;"
@@ -46,34 +43,25 @@
"message": "Χαμηλ DC"
},
"UndervoltageString": {
"message": "Υπόταση\n"
"message": "Υπόταση"
},
"InputVoltageString": {
"message": "Είσοδος V: \n"
"message": "Είσοδος V: "
},
"SleepingSimpleString": {
"message": "Zzzz"
},
"SleepingAdvancedString": {
"message": "Υπνος...\n"
"message": "Υπνος..."
},
"SleepingTipAdvancedString": {
"message": "Μύτη: \n"
"message": "Μύτη:"
},
"OffString": {
"message": "Απ."
},
"ProfilePreheatString": {
"message": "Preheat\n"
},
"ProfileCooldownString": {
"message": "Cooldown\n"
},
"DeviceFailedValidationWarning": {
"message": "Η συσκευή σας ίσως να μην είναι αυθεντική!"
},
"TooHotToStartProfileWarning": {
"message": "Too hot to\nstart profile"
"message": "Your device is most likely a counterfeit!"
}
},
"characters": {
@@ -117,24 +105,20 @@
"menuOptions": {
"DCInCutoff": {
"displayText": "Πηγή\nενέργειας",
"description": "Πηγή ενέργειας. Oρισμός τάσης απενεργοποίησης. (DC 10V) (S 3.3V ανα μπαταρία, απενεργοποίηση ενεργειακού ορίου)"
"description": "Πηγή ενέργειας. Oρισμός τάσης απενεργοποίησης. (DC 10V) (S 3.3V ανα κυψέλη, απενεργοποίηση ενεργειακού ορίου)"
},
"MinVolCell": {
"displayText": "Ελάχιστη\nτάση",
"description": "Ελάχιστη επιτρεπτή τάση ανα μπαταρία (3 σε σειρά: 3 - 3.7V | 4-6 σε σειρά: 2.4 - 3.7V)"
"description": "Ελάχιστη επιτρεπτή τάση ανα κυψέλη (3 σε σειρά: 3 - 3.7V | 4-6 σε σειρά: 2.4 - 3.7V)"
},
"QCMaxVoltage": {
"displayText": "Τάση\nQC",
"description": "Μέγιστη τάση QC που να ζητείται από το τροφοδοτικό"
"description": "Μέγιστη τάση QC που να ζητά το κολλητήρι από το τροφοδοτικό"
},
"PDNegTimeout": {
"displayText": "χρονικό όριο\nPD",
"description": "Χρονικό όριο διαπραγμάτευσης PD σε βήματα 100ms για συμβατότητα με κάποιους φορτιστές QC"
},
"PDVpdo": {
"displayText": "PD\nVPDO",
"description": "Ενεργοποιεί λειτουργίες PPS & EPR."
},
"BoostTemperature": {
"displayText": "Θερμοκ.\nboost",
"description": "Θερμοκρασία στη \"λειτουργία boost\""
@@ -155,62 +139,6 @@
"displayText": "Κλείδωμα\nπλήκτρων",
"description": "Κατά την κόλληση, κρατήστε και τα δύο πλήκτρα για κλείδωμα (A=απενεργοποίηση | B=μόνο λειτ. boost | Π=πλήρες κλείδωμα)"
},
"ProfilePhases": {
"displayText": "Profile\nPhases",
"description": "Number of phases in profile mode"
},
"ProfilePreheatTemp": {
"displayText": "Preheat\nTemp",
"description": "Preheat to this temperature at the start of profile mode"
},
"ProfilePreheatSpeed": {
"displayText": "Preheat\nSpeed",
"description": "Preheat at this rate (degrees per second)"
},
"ProfilePhase1Temp": {
"displayText": "Phase 1\nTemp",
"description": "Target temperature for the end of this phase"
},
"ProfilePhase1Duration": {
"displayText": "Phase 1\nDuration",
"description": "Target duration of this phase (seconds)"
},
"ProfilePhase2Temp": {
"displayText": "Phase 2\nTemp",
"description": ""
},
"ProfilePhase2Duration": {
"displayText": "Phase 2\nDuration",
"description": ""
},
"ProfilePhase3Temp": {
"displayText": "Phase 3\nTemp",
"description": ""
},
"ProfilePhase3Duration": {
"displayText": "Phase 3\nDuration",
"description": ""
},
"ProfilePhase4Temp": {
"displayText": "Phase 4\nTemp",
"description": ""
},
"ProfilePhase4Duration": {
"displayText": "Phase 4\nDuration",
"description": ""
},
"ProfilePhase5Temp": {
"displayText": "Phase 5\nTemp",
"description": ""
},
"ProfilePhase5Duration": {
"displayText": "Phase 5\nDuration",
"description": ""
},
"ProfileCooldownSpeed": {
"displayText": "Cooldown\nSpeed",
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
},
"MotionSensitivity": {
"displayText": "Ευαισθησία\nκίνησης",
"description": "0=off | 1=λιγότερο ευαίσθητο | ... | 9=περισσότερο ευαίσθητο"
@@ -268,8 +196,8 @@
"description": "Αντιστροφή χρωμάτων οθόνης OLED"
},
"LOGOTime": {
"displayText": "Διάρκεια\nlogo εκκίνησης",
"description": "Διάρκεια εμφάνισης της εικόνας εκκίνησης (s=seconds)"
"displayText": "Boot logo\nduration",
"description": "Sets the duration for the boot logo (s=seconds)"
},
"AdvancedIdle": {
"displayText": "Λεπτομερής\nοθ. αδράνειας",
@@ -279,17 +207,13 @@
"displayText": "Λεπτομερής\nοθ. κόλλησης",
"description": "Προβολή λεπτομερών πληροφοριών σε μικρότερη γραμματοσειρά στην οθόνη κόλλησης"
},
"BluetoothLE": {
"displayText": "Bluetooth\n",
"description": "Enables BLE"
},
"PowerLimit": {
"displayText": "Ενεργειακό\nόριο",
"description": "Μέγιστη ενέργεια που μπορεί να χρησιμοποιεί το κολλητήρι (W=watt)"
},
"CalibrateCJC": {
"displayText": "Βαθμονόμηση CJC\nσε επόμενη έναρξη",
"description": "Στην επόμενη εκκίνηση θα γίνει βαθμονόμηση θερμοκρασίας (δεν απαιτείται αν Δθερμ < 5 C)"
"displayText": "Calibrate CJC\nat next boot",
"description": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5 C)"
},
"VoltageCalibration": {
"displayText": "Βαθμονόμηση\nτάσης εισόδου;",
@@ -312,7 +236,11 @@
"description": "Επαναφορά στις προεπιλεγμένες ρυθμίσεις"
},
"LanguageSwitch": {
"displayText": "Γλώσσα:\n EL Ελληνικά",
"displayText": "Γλώσσα:\n GR Ελληνικά",
"description": ""
},
"BLEEnabled": {
"displayText": "BLE\n Enabled",
"description": ""
}
}

View File

@@ -3,7 +3,7 @@
"languageLocalName": "English",
"tempUnitFahrenheit": true,
"messagesWarn": {
"CalibrationDone": {
"CJCCalibrationDone": {
"message": "Calibration\ndone!"
},
"ResetOKMessage": {
@@ -30,9 +30,6 @@
"WarningThermalRunaway": {
"message": "Thermal\nRunaway"
},
"WarningTipShorted": {
"message": "!Tip Shorted!"
},
"SettingsCalibrationWarning": {
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
@@ -46,10 +43,10 @@
"message": "DC LOW"
},
"UndervoltageString": {
"message": "Undervoltage\n"
"message": "Undervoltage"
},
"InputVoltageString": {
"message": "Input V: \n"
"message": "Input V: "
},
"SleepingSimpleString": {
"message": "Zzzz"
@@ -58,22 +55,13 @@
"message": "Sleeping...\n"
},
"SleepingTipAdvancedString": {
"message": "Tip: \n"
"message": "Tip:"
},
"OffString": {
"message": "Off"
},
"ProfilePreheatString": {
"message": "Preheat\n"
},
"ProfileCooldownString": {
"message": "Cooldown\n"
},
"DeviceFailedValidationWarning": {
"message": "Your device is most likely a counterfeit!"
},
"TooHotToStartProfileWarning": {
"message": "Too hot to\nstart profile"
}
},
"characters": {
@@ -131,10 +119,6 @@
"displayText": "PD\ntimeout",
"description": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers"
},
"PDVpdo": {
"displayText": "PD\nVPDO",
"description": "Enables PPS & EPR modes"
},
"BoostTemperature": {
"displayText": "Boost\ntemp",
"description": "Tip temperature used in \"boost mode\""
@@ -155,62 +139,6 @@
"displayText": "Allow locking\nbuttons",
"description": "While soldering, hold down both buttons to toggle locking them (D=disable | B=boost mode only | F=full locking)"
},
"ProfilePhases": {
"displayText": "Profile\nPhases",
"description": "Number of phases in profile mode"
},
"ProfilePreheatTemp": {
"displayText": "Preheat\nTemp",
"description": "Preheat to this temperature at the start of profile mode"
},
"ProfilePreheatSpeed": {
"displayText": "Preheat\nSpeed",
"description": "Preheat at this rate (degrees per second)"
},
"ProfilePhase1Temp": {
"displayText": "Phase 1\nTemp",
"description": "Target temperature for the end of this phase"
},
"ProfilePhase1Duration": {
"displayText": "Phase 1\nDuration",
"description": "Target duration of this phase (seconds)"
},
"ProfilePhase2Temp": {
"displayText": "Phase 2\nTemp",
"description": ""
},
"ProfilePhase2Duration": {
"displayText": "Phase 2\nDuration",
"description": ""
},
"ProfilePhase3Temp": {
"displayText": "Phase 3\nTemp",
"description": ""
},
"ProfilePhase3Duration": {
"displayText": "Phase 3\nDuration",
"description": ""
},
"ProfilePhase4Temp": {
"displayText": "Phase 4\nTemp",
"description": ""
},
"ProfilePhase4Duration": {
"displayText": "Phase 4\nDuration",
"description": ""
},
"ProfilePhase5Temp": {
"displayText": "Phase 5\nTemp",
"description": ""
},
"ProfilePhase5Duration": {
"displayText": "Phase 5\nDuration",
"description": ""
},
"ProfileCooldownSpeed": {
"displayText": "Cooldown\nSpeed",
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
},
"MotionSensitivity": {
"displayText": "Motion\nsensitivity",
"description": "0=off | 1=least sensitive | ... | 9=most sensitive"
@@ -279,17 +207,13 @@
"displayText": "Detailed\nsolder screen",
"description": "Display detailed info in a smaller font on soldering screen"
},
"BluetoothLE": {
"displayText": "Bluetooth\n",
"description": "Enables BLE"
},
"PowerLimit": {
"displayText": "Power\nlimit",
"description": "Average maximum power the iron can use (W=watt)"
"description": "Maximum power the iron can use (W=watt)"
},
"CalibrateCJC": {
"displayText": "Calibrate CJC\nat next boot",
"description": "Calibrate Cold Junction Compensation at next boot (not required if Delta T is < 5°C)"
"description": "Calbrate Cold Junction Compensation at next boot (not required if Delta T is < 5°C)"
},
"VoltageCalibration": {
"displayText": "Calibrate\ninput voltage",
@@ -314,6 +238,10 @@
"LanguageSwitch": {
"displayText": "Language:\n EN English",
"description": ""
},
"BLEEnabled": {
"displayText": "BLE\n Enabled",
"description": "Enables BLE."
}
}
}

View File

@@ -1,22 +1,22 @@
{
"languageCode": "ES",
"languageLocalName": "Castellano",
"tempUnitFahrenheit": false,
"tempUnitFahrenheit": true,
"messagesWarn": {
"CalibrationDone": {
"message": "¡Calibracion\nlista!"
"CJCCalibrationDone": {
"message": "Calibration\ndone!"
},
"ResetOKMessage": {
"message": "Listo"
"message": "Hecho"
},
"SettingsResetMessage": {
"message": "¡Ajustes\nReiniciados!"
"message": "Ajustes\n¡Reiniciados!"
},
"NoAccelerometerMessage": {
"message": "¡Sin acelerómetro\nDetectado!"
"message": "Sin acelerómetro\n¡Detectado!"
},
"NoPowerDeliveryMessage": {
"message": "¡Sin USB-PD IC\nDetectado!"
"message": "Sin USB-PD IC\n¡Detectado!"
},
"LockingKeysString": {
"message": "BLOQUEADO"
@@ -30,14 +30,11 @@
"WarningThermalRunaway": {
"message": "Térmico\nFuera de control"
},
"WarningTipShorted": {
"message": "!Tip Shorted!"
},
"SettingsCalibrationWarning": {
"message": "¡Antes de reiniciar, asegúrese de que la punta y el mango estén a temperatura ambiente!"
},
"CJCCalibrating": {
"message": "Calibrando\n"
"message": "calibrando\n"
},
"SettingsResetWarning": {
"message": "¿Quieres restablecer los ajustes?"
@@ -46,34 +43,25 @@
"message": "CC BAJA"
},
"UndervoltageString": {
"message": "Voltaje bajo\n"
"message": "Voltaje bajo"
},
"InputVoltageString": {
"message": "Voltaje: \n"
"message": "Voltaje: "
},
"SleepingSimpleString": {
"message": "Reposo"
},
"SleepingAdvancedString": {
"message": "En reposo...\n"
"message": "En reposo..."
},
"SleepingTipAdvancedString": {
"message": "Punta: \n"
"message": "Punta:"
},
"OffString": {
"message": "Apagado"
},
"ProfilePreheatString": {
"message": "Precalentado\n"
},
"ProfileCooldownString": {
"message": "Enfriado\n"
"message": "No"
},
"DeviceFailedValidationWarning": {
"message": Es probable es que su dispositivo sea falso!"
},
"TooHotToStartProfileWarning": {
"message": "Muy caliente para \nempezar perfil"
"message": Lo más probable es que su dispositivo sea una falsificación!"
}
},
"characters": {
@@ -121,28 +109,23 @@
},
"MinVolCell": {
"displayText": "Mínimo\nvoltaje",
"description": "Voltaje mínimo permitido por célula (3S: 3 - 3,7V | 4-6S: 2,4 - 3,7V)"
"description": "voltaje mínimo permitido por célula (3S: 3 - 3,7V | 4-6S: 2,4 - 3,7V)"
},
"QCMaxVoltage": {
"displayText": "Potencia de\nentrada",
"description": "Potencia en Watts del adaptador de corriente utilizado"
"description": "Potencia en vatios del adaptador de corriente utilizado"
},
"PDNegTimeout": {
"displayText": "PD\ntiempo de espera",
"description": "Timeout de negociación de PD en pasos de 100ms para compatibilidad con algunos cargadores QC (0: apagado)"
},
"PDVpdo": {
"displayText": "PD\nVPDO",
"description": "Permite modos PPS & EPR"
"description": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers (0: disabled)"
},
"BoostTemperature": {
"displayText": "Ajustar la\ntemp. extra",
"description": "Temperatura de la punta de \"modo boost\""
"description": "Temperatura de la punta utilizada en el \"modo de impulso\""
},
"AutoStart": {
"displayText": "Calentar\nal enchufar",
"description": "Calentado automático al iniciar (N=no | S=entrar en modo soldar | R=solo entrar en reposo | F=en reposo pero mantiene la punta fría)"
"description": "Se calienta él solo al arrancar (N=no | S=entrar en modo soldar | R=solo entrar en reposo | F=en reposo pero mantiene la punta fría)"
},
"TempChangeShortStep": {
"displayText": "Cambio temp.\npuls. cortas",
@@ -156,62 +139,6 @@
"displayText": "Permitir botones\nbloqueo",
"description": "Mientras suelda, mantenga pulsados ambos botones para alternar su bloqueo (D=desactivar | B=sólo modo boost | F=bloqueo total)"
},
"ProfilePhases": {
"displayText": "Fases de\nPerfil",
"description": "Numero de fases en modo perfil"
},
"ProfilePreheatTemp": {
"displayText": "Temp de \n precalentado",
"description": "Precalentar a esta temperatura al inicio del modo perfil"
},
"ProfilePreheatSpeed": {
"displayText": "Velocidad de \nPrecalentado",
"description": "Precalentar a esta velocidad (grados por segundo)"
},
"ProfilePhase1Temp": {
"displayText": "Fase 1\nTemp",
"description": "Temperatura objetivo al final de esta fase"
},
"ProfilePhase1Duration": {
"displayText": "Fase 1\nDuración",
"description": "Duración objetivo de esta fase (segundos)"
},
"ProfilePhase2Temp": {
"displayText": "Fase 2\nTemp",
"description": ""
},
"ProfilePhase2Duration": {
"displayText": "Fase 2\nDuración",
"description": ""
},
"ProfilePhase3Temp": {
"displayText": "Fase 3\nTemp",
"description": ""
},
"ProfilePhase3Duration": {
"displayText": "Fase 3\nDuración",
"description": ""
},
"ProfilePhase4Temp": {
"displayText": "Fase 4\nTemp",
"description": ""
},
"ProfilePhase4Duration": {
"displayText": "Fase 4\nDuración",
"description": ""
},
"ProfilePhase5Temp": {
"displayText": "Fase 5\nTemp",
"description": ""
},
"ProfilePhase5Duration": {
"displayText": "Fase 5\nDuración",
"description": ""
},
"ProfileCooldownSpeed": {
"displayText": "Velocidad de\nEnfriamineto",
"description": "Enfriar a esta velocidad al final del modo perfil (grados por segundo)"
},
"MotionSensitivity": {
"displayText": "Detección de\nmovimiento",
"description": "Tiempo de reacción al agarrar (0=no | 1=menos sensible | ... | 9=más sensible)"
@@ -234,7 +161,7 @@
},
"TemperatureUnit": {
"displayText": "Unidad de\ntemperatura",
"description": "Unidad de temperatura (C=entígrados | F=Fahrenheit)"
"description": "Unidad de temperatura (C=centígrados | F=Fahrenheit)"
},
"DisplayRotation": {
"displayText": "Orientación\nde pantalla",
@@ -242,7 +169,7 @@
},
"CooldownBlink": {
"displayText": "Parpadear\nal enfriar",
"description": "Parpadear texto en inactivo cuando la punta este caliente"
"description": "Lectura de la temperatura al ralentí mientras la punta está caliente"
},
"ScrollingSpeed": {
"displayText": "Velocidad\ndel texto",
@@ -250,15 +177,15 @@
},
"ReverseButtonTempChange": {
"displayText": "Invertir\nbotones +/-",
"description": "Invertir botones de ajuste de temperatura"
"description": "Intercambio inversa de los botones para ajustar la temperatura"
},
"AnimSpeed": {
"displayText": "Anim.\nvelocidad",
"description": "Velocidad de animaciones de iconos en el menú (O=apagado | L=baja | M=media | R=alta)"
"description": "Velocidad de las animaciones de los iconos en el menú (O=off | L=low | M=medium | R=high)"
},
"AnimLoop": {
"displayText": "Anim.\nbucle",
"description": "Bucle de animaciones del menú principal"
"description": "Animaciones de iconos en bucle en el menú raíz"
},
"Brightness": {
"displayText": "Pantalla\nbrillo",
@@ -269,28 +196,24 @@
"description": "Invertir la pantalla OLED"
},
"LOGOTime": {
"displayText": "Logo inicial\nduración",
"displayText": "logo inicial\nduración",
"description": "Duración de la animación del logo inicial (s=segundos)"
},
"AdvancedIdle": {
"displayText": "Info extra en\nmodo reposo",
"description": "Mostrar información detallada en tamaño pequeño en la pantalla de reposo"
"description": "Mostrar información detallada en una fuente más pequeña en la pantalla inactiva"
},
"AdvancedSoldering": {
"displayText": "Info extra\nal soldar",
"description": "Mostrar información detallada en tamaño pequeño en la pantalla de soldadura"
},
"BluetoothLE": {
"displayText": "Bluetooth\n",
"description": "Habilitar BLE"
"description": "Mostrar información detallada en una fuente más pequeña en la pantalla de soldadura"
},
"PowerLimit": {
"displayText": "Potencia\nlímite",
"description": "Elige el límite de potencia máxima del soldador (en Watts)"
"description": "Elige el límite de potencia máxima del soldador (en vatios)"
},
"CalibrateCJC": {
"displayText": "Calibrar CJC\nen el próximo inicio",
"description": "Al siguinte inicio el Cold Junction Compensation sera calibrado (no requerido si el Delta T es < 5°C)"
"description": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
},
"VoltageCalibration": {
"displayText": "Calibrar voltaje\nde entrada",
@@ -298,15 +221,15 @@
},
"PowerPulsePower": {
"displayText": "Pulsos bat.\nconstantes",
"description": "Intensidad de la potencia del pulso para mantener encendido (W=Watt)"
"description": "Intensidad de la potencia del pulso de mantenimiento del estado de vigilia (W=vatio)"
},
"PowerPulseWait": {
"displayText": "Tiempor entre\n pulso de energia",
"description": "Tiempo de espera del pulso para mantener encendido (x 2,5s)"
"displayText": "Impulso de potencia\ntiempo de espera",
"description": "Tiempo de espera antes de disparar cada pulso de mantenimiento de la vigilia (x 2,5s)"
},
"PowerPulseDuration": {
"displayText": "Duración de\n pulso de energia",
"description": "Duración del pulso para mantener encendido (x 250ms)"
"displayText": "Impulso de potencia\nduración",
"description": "Duración del impulso de mantenimiento de la vigilia (x 250ms)"
},
"SettingsReset": {
"displayText": "Volver a ajustes\nde fábrica",
@@ -315,6 +238,10 @@
"LanguageSwitch": {
"displayText": "Idioma:\n ES Castellano",
"description": ""
},
"BLEEnabled": {
"displayText": "BLE\n Activado",
"description": "Habilita BLE."
}
}
}

View File

@@ -1,9 +1,9 @@
{
"languageCode": "FI",
"languageLocalName": "Suomi",
"tempUnitFahrenheit": false,
"tempUnitFahrenheit": true,
"messagesWarn": {
"CalibrationDone": {
"CJCCalibrationDone": {
"message": "Calibration\ndone!"
},
"ResetOKMessage": {
@@ -30,9 +30,6 @@
"WarningThermalRunaway": {
"message": "Thermal\nRunaway"
},
"WarningTipShorted": {
"message": "!Tip Shorted!"
},
"SettingsCalibrationWarning": {
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
@@ -46,34 +43,25 @@
"message": "DC ALH."
},
"UndervoltageString": {
"message": "Alijännite\n"
"message": "Alijännite"
},
"InputVoltageString": {
"message": "Jännite: \n"
"message": "Jännite: "
},
"SleepingSimpleString": {
"message": "Zzzz"
},
"SleepingAdvancedString": {
"message": "Lepotila...\n"
"message": "Lepotila..."
},
"SleepingTipAdvancedString": {
"message": "Kärki: \n"
"message": "Kärki:"
},
"OffString": {
"message": "Off"
},
"ProfilePreheatString": {
"message": "Preheat\n"
},
"ProfileCooldownString": {
"message": "Cooldown\n"
},
"DeviceFailedValidationWarning": {
"message": "Your device is most likely a counterfeit!"
},
"TooHotToStartProfileWarning": {
"message": "Too hot to\nstart profile"
}
},
"characters": {
@@ -131,10 +119,6 @@
"displayText": "PD\ntimeout",
"description": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers"
},
"PDVpdo": {
"displayText": "PD\nVPDO",
"description": "Enables PPS & EPR modes"
},
"BoostTemperature": {
"displayText": "Tehostus-\nlämpötila",
"description": "Tehostustilan lämpötila"
@@ -155,62 +139,6 @@
"displayText": "Salli nappien\nlukitus",
"description": "Kolvatessa paina molempia näppäimiä lukitaksesi ne (P=pois | V=vain tehostus | K=kaikki)"
},
"ProfilePhases": {
"displayText": "Profile\nPhases",
"description": "Number of phases in profile mode"
},
"ProfilePreheatTemp": {
"displayText": "Preheat\nTemp",
"description": "Preheat to this temperature at the start of profile mode"
},
"ProfilePreheatSpeed": {
"displayText": "Preheat\nSpeed",
"description": "Preheat at this rate (degrees per second)"
},
"ProfilePhase1Temp": {
"displayText": "Phase 1\nTemp",
"description": "Target temperature for the end of this phase"
},
"ProfilePhase1Duration": {
"displayText": "Phase 1\nDuration",
"description": "Target duration of this phase (seconds)"
},
"ProfilePhase2Temp": {
"displayText": "Phase 2\nTemp",
"description": ""
},
"ProfilePhase2Duration": {
"displayText": "Phase 2\nDuration",
"description": ""
},
"ProfilePhase3Temp": {
"displayText": "Phase 3\nTemp",
"description": ""
},
"ProfilePhase3Duration": {
"displayText": "Phase 3\nDuration",
"description": ""
},
"ProfilePhase4Temp": {
"displayText": "Phase 4\nTemp",
"description": ""
},
"ProfilePhase4Duration": {
"displayText": "Phase 4\nDuration",
"description": ""
},
"ProfilePhase5Temp": {
"displayText": "Phase 5\nTemp",
"description": ""
},
"ProfilePhase5Duration": {
"displayText": "Phase 5\nDuration",
"description": ""
},
"ProfileCooldownSpeed": {
"displayText": "Cooldown\nSpeed",
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
},
"MotionSensitivity": {
"displayText": "Liikkeen\nherkkyys",
"description": "0=pois päältä | 1=vähäinen herkkyys | ... | 9=suurin herkkyys"
@@ -279,10 +207,6 @@
"displayText": "Tarkempi\njuotosnäyttö",
"description": "Näyttää yksityiskohtaisemmat tiedot pienellä fontilla juotostilassa"
},
"BluetoothLE": {
"displayText": "Bluetooth\n",
"description": "Enables BLE"
},
"PowerLimit": {
"displayText": "Tehon-\nrajoitus",
"description": "Suurin sallittu teho (Watti)"
@@ -314,6 +238,10 @@
"LanguageSwitch": {
"displayText": "Kieli:\n FI Suomi",
"description": ""
},
"BLEEnabled": {
"displayText": "BLE\n Enabled",
"description": ""
}
}
}

View File

@@ -1,10 +1,10 @@
{
"languageCode": "FR",
"languageLocalName": "Français",
"tempUnitFahrenheit": false,
"tempUnitFahrenheit": true,
"messagesWarn": {
"CalibrationDone": {
"message": "Étalonnage\nterminé!"
"CJCCalibrationDone": {
"message": "Calibration\ndone!"
},
"ResetOKMessage": {
"message": "Reset OK"
@@ -30,14 +30,11 @@
"WarningThermalRunaway": {
"message": "Emballement\nthermique"
},
"WarningTipShorted": {
"message": "!Tip Shorted!"
},
"SettingsCalibrationWarning": {
"message": "Avant de redémarrer, assurez-vous que la panne et la poignée sont à température ambiante !"
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
"CJCCalibrating": {
"message": "Etalonnage\n"
"message": "calibrating\n"
},
"SettingsResetWarning": {
"message": "Voulez-vous vraiment réinitialiser les paramètres aux valeurs par défaut ?"
@@ -46,34 +43,25 @@
"message": "DC FAIBL"
},
"UndervoltageString": {
"message": "Sous-tension\n"
"message": "Sous-tension"
},
"InputVoltageString": {
"message": "V d'entrée: \n"
"message": "V d'entrée: "
},
"SleepingSimpleString": {
"message": "Zzzz"
},
"SleepingAdvancedString": {
"message": "En veille...\n"
"message": "En veille..."
},
"SleepingTipAdvancedString": {
"message": "Panne: \n"
"message": "Panne:"
},
"OffString": {
"message": "Off"
},
"ProfilePreheatString": {
"message": "Preheat\n"
},
"ProfileCooldownString": {
"message": "Cooldown\n"
},
"DeviceFailedValidationWarning": {
"message": "Votre appareil semble être une contrefaçon !"
},
"TooHotToStartProfileWarning": {
"message": "Too hot to\nstart profile"
}
},
"characters": {
@@ -131,10 +119,6 @@
"displayText": "Délai\nexpir. PD",
"description": "Délai de la negociation PD par étapes de 100ms pour la compatiblité avec certains chargeurs QC"
},
"PDVpdo": {
"displayText": "PD\nVPDO",
"description": "Enables PPS & EPR modes"
},
"BoostTemperature": {
"displayText": "Temp.\nboost",
"description": "Température utilisée en \"mode boost\""
@@ -155,62 +139,6 @@
"displayText": "Verrouiller\nles boutons",
"description": "Pendant la soudure, appuyer sur les deux boutons pour les verrouiller (D=désactivé | B=boost seulement | V=verr. total)"
},
"ProfilePhases": {
"displayText": "Profile\nPhases",
"description": "Number of phases in profile mode"
},
"ProfilePreheatTemp": {
"displayText": "Preheat\nTemp",
"description": "Preheat to this temperature at the start of profile mode"
},
"ProfilePreheatSpeed": {
"displayText": "Preheat\nSpeed",
"description": "Preheat at this rate (degrees per second)"
},
"ProfilePhase1Temp": {
"displayText": "Phase 1\nTemp",
"description": "Target temperature for the end of this phase"
},
"ProfilePhase1Duration": {
"displayText": "Phase 1\nDuration",
"description": "Target duration of this phase (seconds)"
},
"ProfilePhase2Temp": {
"displayText": "Phase 2\nTemp",
"description": ""
},
"ProfilePhase2Duration": {
"displayText": "Phase 2\nDuration",
"description": ""
},
"ProfilePhase3Temp": {
"displayText": "Phase 3\nTemp",
"description": ""
},
"ProfilePhase3Duration": {
"displayText": "Phase 3\nDuration",
"description": ""
},
"ProfilePhase4Temp": {
"displayText": "Phase 4\nTemp",
"description": ""
},
"ProfilePhase4Duration": {
"displayText": "Phase 4\nDuration",
"description": ""
},
"ProfilePhase5Temp": {
"displayText": "Phase 5\nTemp",
"description": ""
},
"ProfilePhase5Duration": {
"displayText": "Phase 5\nDuration",
"description": ""
},
"ProfileCooldownSpeed": {
"displayText": "Cooldown\nSpeed",
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
},
"MotionSensitivity": {
"displayText": "Sensibilité\nau mouvement",
"description": "0=désactivé | 1=peu sensible | ... | 9=très sensible"
@@ -268,7 +196,7 @@
"description": "Inverser les couleurs de l'écran OLED"
},
"LOGOTime": {
"displayText": "Durée logo\ndémarrage",
"displayText": "Durée logo\nau démarrage",
"description": "Définit la durée d'affichage du logo au démarrage (s=secondes)"
},
"AdvancedIdle": {
@@ -279,17 +207,13 @@
"displayText": "Écran soudure\ndétaillé",
"description": "Afficher les informations détaillées sur l'écran de soudure"
},
"BluetoothLE": {
"displayText": "Bluetooth\n",
"description": "Activer le bluetooth basse consommation"
},
"PowerLimit": {
"displayText": "Limite de\npuissance",
"description": "Puissance maximale utilisable (W=watts)"
},
"CalibrateCJC": {
"displayText": "Étalonner CJC\nau prochain démarrage",
"description": "Au prochain démarrage, la compensation de soudure froide sera calibrée (non nécessaire si Delta T est < 5°C)."
"displayText": "Calibrate CJC\nat next boot",
"description": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
},
"VoltageCalibration": {
"displayText": "Étalonner\ntension d'entrée",
@@ -314,6 +238,10 @@
"LanguageSwitch": {
"displayText": "Langue:\n FR Français",
"description": ""
},
"BLEEnabled": {
"displayText": "BLE\n Enabled",
"description": ""
}
}
}

View File

@@ -1,9 +1,9 @@
{
"languageCode": "HR",
"languageLocalName": "Hrvatski",
"tempUnitFahrenheit": false,
"tempUnitFahrenheit": true,
"messagesWarn": {
"CalibrationDone": {
"CJCCalibrationDone": {
"message": "Kalibracija\ndovršena!"
},
"ResetOKMessage": {
@@ -30,9 +30,6 @@
"WarningThermalRunaway": {
"message": "Neispravan\ngrijač"
},
"WarningTipShorted": {
"message": "!Tip Shorted!"
},
"SettingsCalibrationWarning": {
"message": "Prije restarta provjerite da su vrh i ručka na sobnoj temperaturi!"
},
@@ -46,34 +43,25 @@
"message": "BAT!!!"
},
"UndervoltageString": {
"message": "PRENIZAK NAPON\n"
"message": "PRENIZAK NAPON"
},
"InputVoltageString": {
"message": "Napon V: \n"
"message": "Napon V: "
},
"SleepingSimpleString": {
"message": "Zzz "
},
"SleepingAdvancedString": {
"message": "SPAVAM...\n"
"message": "SPAVAM..."
},
"SleepingTipAdvancedString": {
"message": "Vrh: \n"
"message": "Vrh: "
},
"OffString": {
"message": "Off"
},
"ProfilePreheatString": {
"message": "Preheat\n"
},
"ProfileCooldownString": {
"message": "Cooldown\n"
},
"DeviceFailedValidationWarning": {
"message": "Vaš uređaj je najvjerojatnije krivotvoren!"
},
"TooHotToStartProfileWarning": {
"message": "Too hot to\nstart profile"
}
},
"characters": {
@@ -131,10 +119,6 @@
"displayText": "USB-PD\ntimeout",
"description": "Timeout za USB-Power Delivery u koracima od 100ms za kompatibilnost s nekim QC punjačima"
},
"PDVpdo": {
"displayText": "PD\nVPDO",
"description": "Enables PPS & EPR modes"
},
"BoostTemperature": {
"displayText": "Boost\ntemp",
"description": "Temperatura u pojačanom (Boost) načinu."
@@ -155,62 +139,6 @@
"displayText": "Zaključavanje\ntipki",
"description": "Tokom lemljenja, držite obje tipke kako biste ih zaključali ili otključali (O=otključano | B=zaključan boost | Z=zaključano sve)"
},
"ProfilePhases": {
"displayText": "Profile\nPhases",
"description": "Number of phases in profile mode"
},
"ProfilePreheatTemp": {
"displayText": "Preheat\nTemp",
"description": "Preheat to this temperature at the start of profile mode"
},
"ProfilePreheatSpeed": {
"displayText": "Preheat\nSpeed",
"description": "Preheat at this rate (degrees per second)"
},
"ProfilePhase1Temp": {
"displayText": "Phase 1\nTemp",
"description": "Target temperature for the end of this phase"
},
"ProfilePhase1Duration": {
"displayText": "Phase 1\nDuration",
"description": "Target duration of this phase (seconds)"
},
"ProfilePhase2Temp": {
"displayText": "Phase 2\nTemp",
"description": ""
},
"ProfilePhase2Duration": {
"displayText": "Phase 2\nDuration",
"description": ""
},
"ProfilePhase3Temp": {
"displayText": "Phase 3\nTemp",
"description": ""
},
"ProfilePhase3Duration": {
"displayText": "Phase 3\nDuration",
"description": ""
},
"ProfilePhase4Temp": {
"displayText": "Phase 4\nTemp",
"description": ""
},
"ProfilePhase4Duration": {
"displayText": "Phase 4\nDuration",
"description": ""
},
"ProfilePhase5Temp": {
"displayText": "Phase 5\nTemp",
"description": ""
},
"ProfilePhase5Duration": {
"displayText": "Phase 5\nDuration",
"description": ""
},
"ProfileCooldownSpeed": {
"displayText": "Cooldown\nSpeed",
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
},
"MotionSensitivity": {
"displayText": "Osjetljivost\npokreta",
"description": "Osjetljivost prepoznavanja pokreta. (0=ugašeno | 1=najmanje osjetljivo | ... | 9=najosjetljivije)"
@@ -279,10 +207,6 @@
"displayText": "Detalji\npri lemljenju",
"description": "Prikazivanje detaljnih informacija tijekom lemljenja"
},
"BluetoothLE": {
"displayText": "Bluetooth\n",
"description": "Enables BLE"
},
"PowerLimit": {
"displayText": "Ograničenje\nsnage",
"description": "Najveća snaga koju lemilica smije vući iz napajanja (W=watt)"
@@ -314,6 +238,10 @@
"LanguageSwitch": {
"displayText": "Jezik:\n HR Hrvatski",
"description": ""
},
"BLEEnabled": {
"displayText": "BLE\n Enabled",
"description": ""
}
}
}

View File

@@ -1,9 +1,9 @@
{
"languageCode": "HU",
"languageLocalName": "Magyar",
"tempUnitFahrenheit": false,
"tempUnitFahrenheit": true,
"messagesWarn": {
"CalibrationDone": {
"CJCCalibrationDone": {
"message": "Kalibráció\nkész!"
},
"ResetOKMessage": {
@@ -30,9 +30,6 @@
"WarningThermalRunaway": {
"message": "Kontrollálatlan\nhőmérséklet!"
},
"WarningTipShorted": {
"message": "!Tip Shorted!"
},
"SettingsCalibrationWarning": {
"message": "Újraindítás előtt a hegy és az eszköz legyen szobahőmérsékletű!"
},
@@ -46,34 +43,25 @@
"message": "DC túl alacsony"
},
"UndervoltageString": {
"message": "Alulfeszültség\n"
"message": "Alulfeszültség"
},
"InputVoltageString": {
"message": "Bemenet V: \n"
"message": "Bemenet V: "
},
"SleepingSimpleString": {
"message": "Zzzz"
},
"SleepingAdvancedString": {
"message": "Alvás...\n"
"message": "Alvás..."
},
"SleepingTipAdvancedString": {
"message": "Hegy: \n"
"message": "Hegy:"
},
"OffString": {
"message": "Ki"
},
"ProfilePreheatString": {
"message": "Preheat\n"
},
"ProfileCooldownString": {
"message": "Cooldown\n"
},
"DeviceFailedValidationWarning": {
"message": "Az eszköz valószínűleg nem eredeti!"
},
"TooHotToStartProfileWarning": {
"message": "Too hot to\nstart profile"
}
},
"characters": {
@@ -131,10 +119,6 @@
"displayText": "PD\nidőtúllépés",
"description": "PD egyeztetés időkerete (kompatibilitás QC töltőkkel) (x 100ms)"
},
"PDVpdo": {
"displayText": "PD\nVPDO",
"description": "Enables PPS & EPR modes"
},
"BoostTemperature": {
"displayText": "Boost\nhőmérséklet",
"description": "Hőmérséklet \"boost\" módban"
@@ -155,62 +139,6 @@
"displayText": "Lezárás\nengedélyezés",
"description": "Forrasztás közben mindkét gombot hosszan lenyomva lezárja a kezelést (K=ki | B=csak \"boost\" módban | T=teljes lezárás)"
},
"ProfilePhases": {
"displayText": "Profile\nPhases",
"description": "Number of phases in profile mode"
},
"ProfilePreheatTemp": {
"displayText": "Preheat\nTemp",
"description": "Preheat to this temperature at the start of profile mode"
},
"ProfilePreheatSpeed": {
"displayText": "Preheat\nSpeed",
"description": "Preheat at this rate (degrees per second)"
},
"ProfilePhase1Temp": {
"displayText": "Phase 1\nTemp",
"description": "Target temperature for the end of this phase"
},
"ProfilePhase1Duration": {
"displayText": "Phase 1\nDuration",
"description": "Target duration of this phase (seconds)"
},
"ProfilePhase2Temp": {
"displayText": "Phase 2\nTemp",
"description": ""
},
"ProfilePhase2Duration": {
"displayText": "Phase 2\nDuration",
"description": ""
},
"ProfilePhase3Temp": {
"displayText": "Phase 3\nTemp",
"description": ""
},
"ProfilePhase3Duration": {
"displayText": "Phase 3\nDuration",
"description": ""
},
"ProfilePhase4Temp": {
"displayText": "Phase 4\nTemp",
"description": ""
},
"ProfilePhase4Duration": {
"displayText": "Phase 4\nDuration",
"description": ""
},
"ProfilePhase5Temp": {
"displayText": "Phase 5\nTemp",
"description": ""
},
"ProfilePhase5Duration": {
"displayText": "Phase 5\nDuration",
"description": ""
},
"ProfileCooldownSpeed": {
"displayText": "Cooldown\nSpeed",
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
},
"MotionSensitivity": {
"displayText": "Mozgás\nérzékenység",
"description": "Mozgás érzékenység beállítása (0=kikapcsolva | 1=legkevésbé érzékeny | ... | 9=legérzékenyebb)"
@@ -279,10 +207,6 @@
"displayText": "Részletes\nforrasztás infó",
"description": "Részletes információk megjelenítése forrasztás közben"
},
"BluetoothLE": {
"displayText": "Bluetooth\n",
"description": "Enables BLE"
},
"PowerLimit": {
"displayText": "Teljesítmény\nmaximum",
"description": "Maximális felvett teljesitmény beállitása"
@@ -314,6 +238,10 @@
"LanguageSwitch": {
"displayText": "Nyelv:\n HU Magyar",
"description": ""
},
"BLEEnabled": {
"displayText": "BLE\n Enabled",
"description": ""
}
}
}

View File

@@ -1,9 +1,9 @@
{
"languageCode": "IT",
"languageLocalName": "Italiano",
"tempUnitFahrenheit": false,
"tempUnitFahrenheit": true,
"messagesWarn": {
"CalibrationDone": {
"CJCCalibrationDone": {
"message": "Calibrazione\ncompletata!"
},
"ResetOKMessage": {
@@ -30,9 +30,6 @@
"WarningThermalRunaway": {
"message": "Temperatura\nfuori controllo"
},
"WarningTipShorted": {
"message": "!Tip Shorted!"
},
"SettingsCalibrationWarning": {
"message": "Prima di riavviare assicurati che la punta e l'impugnatura siano a temperatura ambiente!"
},
@@ -46,34 +43,25 @@
"message": "DC BASSA"
},
"UndervoltageString": {
"message": "DC INSUFFICIENTE\n"
"message": "DC INSUFFICIENTE"
},
"InputVoltageString": {
"message": "V in: \n"
"message": "V in:"
},
"SleepingSimpleString": {
"message": "Zzz "
},
"SleepingAdvancedString": {
"message": "Riposo\n"
"message": "Riposo"
},
"SleepingTipAdvancedString": {
"message": "Punta: \n"
"message": "Punta:"
},
"OffString": {
"message": "OFF"
},
"ProfilePreheatString": {
"message": "Preriscaldamento\n"
},
"ProfileCooldownString": {
"message": "Raffreddamento\n"
},
"DeviceFailedValidationWarning": {
"message": "È probabile che questo dispositivo sia contraffatto!"
},
"TooHotToStartProfileWarning": {
"message": "Troppo caldo\nper il profilo"
}
},
"characters": {
@@ -131,13 +119,9 @@
"displayText": "Abilitazione\nUSB PD",
"description": "Regola il massimo tempo utile per la negoziazione del protocollo USB Power Delivery con alimentatori compatibili [0: disattiva; multipli di 100 ms]"
},
"PDVpdo": {
"displayText": "PD\nVPDO",
"description": "Abilita le modalità Power Delivery PPS ed EPR"
},
"BoostTemperature": {
"displayText": "Temp\nTurbo",
"description": "Imposta la temperatura della funzione turbo [°C/°F]"
"description": "Imposta la temperatura della funzione Turbo [°C/°F]"
},
"AutoStart": {
"displayText": "Avvio\nautomatico",
@@ -153,75 +137,19 @@
},
"LockingMode": {
"displayText": "Blocco\ntasti",
"description": "Blocca i tasti durante la modalità saldatura; tieni premuto entrambi per bloccare o sbloccare [D: disattiva; T: consenti Turbo; C: blocco completo]"
},
"ProfilePhases": {
"displayText": "Fasi modalità\nprofilo",
"description": "Imposta il numero di fasi da attuare per un profilo di riscaldamento personalizzato"
},
"ProfilePreheatTemp": {
"displayText": "Temperatura\npreriscaldamento",
"description": "Imposta la temperatura di preriscaldamento da raggiungere all'inizio del profilo di riscaldamento"
},
"ProfilePreheatSpeed": {
"displayText": "Velocità\npreriscaldamento",
"description": "Imposta la velocità di preriscaldamento [°C/s]"
},
"ProfilePhase1Temp": {
"displayText": "Temperatura\nfase 1",
"description": "Imposta la temperatura da raggiungere alla fine di questa fase"
},
"ProfilePhase1Duration": {
"displayText": "Durata\nfase 1",
"description": "Imposta la durata di questa fase [secondi]"
},
"ProfilePhase2Temp": {
"displayText": "Temperatura\nfase 2",
"description": ""
},
"ProfilePhase2Duration": {
"displayText": "Durata\nfase 2",
"description": ""
},
"ProfilePhase3Temp": {
"displayText": "Temperatura\nfase 3",
"description": ""
},
"ProfilePhase3Duration": {
"displayText": "Durata\nfase 3",
"description": ""
},
"ProfilePhase4Temp": {
"displayText": "Temperatura\nfase 4",
"description": ""
},
"ProfilePhase4Duration": {
"displayText": "Durata\nfase 4",
"description": ""
},
"ProfilePhase5Temp": {
"displayText": "Temperatura\nfase 5",
"description": ""
},
"ProfilePhase5Duration": {
"displayText": "Durata\nfase 5",
"description": ""
},
"ProfileCooldownSpeed": {
"displayText": "Velocità\nraffreddamento",
"description": "Imposta la velocità di raffreddamento al termine del profilo di riscaldamento [°C/s]"
"description": "Blocca i tasti durante la modalità Saldatura; tieni premuto entrambi per bloccare o sbloccare [D: disattiva; T: consenti Turbo; C: blocco completo]"
},
"MotionSensitivity": {
"displayText": "Sensibilità\nal movimento",
"description": "Imposta la sensibilità al movimento per uscire dalla modalità riposo [0: nessuna; 1: minima; 9: massima]"
"description": "Imposta la sensibilità al movimento per uscire dalla modalità Riposo [0: nessuna; 1: minima; 9: massima]"
},
"SleepTemperature": {
"displayText": "Temperatura\nriposo",
"description": "Imposta la temperatura da mantenere in modalità riposo [°C/°F]"
"displayText": "Temp\nriposo",
"description": "Imposta la temperatura da mantenere in modalità Riposo [°C/°F]"
},
"SleepTimeout": {
"displayText": "Timer\nriposo",
"description": "Imposta il timer per entrare in modalità riposo [secondi/minuti]"
"description": "Imposta il timer per entrare in modalità Riposo [secondi/minuti]"
},
"ShutdownTimeout": {
"displayText": "Timer\nspegnimento",
@@ -229,7 +157,7 @@
},
"HallEffSensitivity": {
"displayText": "Sensore\nHall",
"description": "Regola la sensibilità del sensore ad effetto Hall per entrare in modalità riposo [0: nessuna; 1: minima; 9: massima]"
"description": "Regola la sensibilità del sensore ad effetto Hall per entrare in modalità Riposo [0: nessuna; 1: minima; 9: massima]"
},
"TemperatureUnit": {
"displayText": "Unità di\ntemperatura",
@@ -277,11 +205,7 @@
},
"AdvancedSoldering": {
"displayText": "Dettagli\nsaldatura",
"description": "Mostra informazioni dettagliate durante la modalità saldatura"
},
"BluetoothLE": {
"displayText": "Bluetooth\n",
"description": "Abilita BLE"
"description": "Mostra informazioni dettagliate durante la modalità Saldatura"
},
"PowerLimit": {
"displayText": "Limite\npotenza",
@@ -289,7 +213,7 @@
},
"CalibrateCJC": {
"displayText": "Calibra T\nall'avvio",
"description": "Calibra le rilevazioni di temperatura al prossimo riavvio (non necessario se lo scarto di temperatura è minore di 5 °C)"
"description": "Calibra le rilevazioni di temperatura al prossimo riavvio (non necessario se il Delta T<5 °C)"
},
"VoltageCalibration": {
"displayText": "Calibrazione\ntensione",
@@ -314,6 +238,10 @@
"LanguageSwitch": {
"displayText": "Lingua:\n IT Italiano",
"description": ""
},
"BLEEnabled": {
"displayText": "Bluetooth LE\nabilitato",
"description": ""
}
}
}

View File

@@ -3,7 +3,7 @@
"languageLocalName": "日本語",
"tempUnitFahrenheit": true,
"messagesWarn": {
"CalibrationDone": {
"CJCCalibrationDone": {
"message": "Calibration done!"
},
"ResetOKMessage": {
@@ -30,9 +30,6 @@
"WarningThermalRunaway": {
"message": "過熱"
},
"WarningTipShorted": {
"message": "!Tip Shorted!"
},
"SettingsCalibrationWarning": {
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
@@ -58,22 +55,13 @@
"message": "Sleeping..."
},
"SleepingTipAdvancedString": {
"message": "Tip: "
"message": "Tip:"
},
"OffString": {
"message": "オフ"
},
"ProfilePreheatString": {
"message": "Preheat"
},
"ProfileCooldownString": {
"message": "Cooldown"
},
"DeviceFailedValidationWarning": {
"message": "このデバイスはおそらく偽造品です"
},
"TooHotToStartProfileWarning": {
"message": "Too hot to start profile"
}
},
"characters": {
@@ -131,10 +119,6 @@
"displayText": "PD\ntimeout",
"description": "一部のQC電源との互換性のため、PDネゴシエーションをタイムアウトする時間 <x100msミリ秒>"
},
"PDVpdo": {
"displayText": "PD VPDO",
"description": "Enables PPS & EPR modes"
},
"BoostTemperature": {
"displayText": "ブースト温度",
"description": "ブーストモードで使用される温度"
@@ -155,62 +139,6 @@
"displayText": "ボタンロック",
"description": "半田付けモード時に両方のボタンを長押しし、ボタンロックする <×=オフ | ブ=ブーストのみ許可 | 全=すべてをロック>"
},
"ProfilePhases": {
"displayText": "Profile Phases",
"description": "Number of phases in profile mode"
},
"ProfilePreheatTemp": {
"displayText": "Preheat Temp",
"description": "Preheat to this temperature at the start of profile mode"
},
"ProfilePreheatSpeed": {
"displayText": "Preheat Speed",
"description": "Preheat at this rate (degrees per second)"
},
"ProfilePhase1Temp": {
"displayText": "Phase 1 Temp",
"description": "Target temperature for the end of this phase"
},
"ProfilePhase1Duration": {
"displayText": "Phase 1 Duration",
"description": "Target duration of this phase (seconds)"
},
"ProfilePhase2Temp": {
"displayText": "Phase 2 Temp",
"description": ""
},
"ProfilePhase2Duration": {
"displayText": "Phase 2 Duration",
"description": ""
},
"ProfilePhase3Temp": {
"displayText": "Phase 3 Temp",
"description": ""
},
"ProfilePhase3Duration": {
"displayText": "Phase 3 Duration",
"description": ""
},
"ProfilePhase4Temp": {
"displayText": "Phase 4 Temp",
"description": ""
},
"ProfilePhase4Duration": {
"displayText": "Phase 4 Duration",
"description": ""
},
"ProfilePhase5Temp": {
"displayText": "Phase 5 Temp",
"description": ""
},
"ProfilePhase5Duration": {
"displayText": "Phase 5 Duration",
"description": ""
},
"ProfileCooldownSpeed": {
"displayText": "Cooldown Speed",
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
},
"MotionSensitivity": {
"displayText": "動きの感度",
"description": "0=オフ | 1=最低感度 | ... | 9=最高感度"
@@ -279,10 +207,6 @@
"displayText": "詳細な作業画面",
"description": "半田付け画面に詳細情報を表示する"
},
"BluetoothLE": {
"displayText": "Bluetooth",
"description": "Enables BLE"
},
"PowerLimit": {
"displayText": "電力制限",
"description": "最大電力を制限する <W=ワット>"
@@ -314,6 +238,10 @@
"LanguageSwitch": {
"displayText": "言語: 日本語",
"description": ""
},
"BLEEnabled": {
"displayText": "BLE\n Enabled",
"description": ""
}
}
}

View File

@@ -1,16 +1,16 @@
{
"languageCode": "LT",
"languageLocalName": "Lietuvių",
"tempUnitFahrenheit": false,
"tempUnitFahrenheit": true,
"messagesWarn": {
"CalibrationDone": {
"CJCCalibrationDone": {
"message": "Calibration\ndone!"
},
"ResetOKMessage": {
"message": "Atstatyta"
},
"SettingsResetMessage": {
"message": "Nust. \natstatyti!"
"message": "Nust. atstatyti!"
},
"NoAccelerometerMessage": {
"message": "Nerastas\nakselerometras!"
@@ -30,9 +30,6 @@
"WarningThermalRunaway": {
"message": "Perkaitimo\npavojus"
},
"WarningTipShorted": {
"message": "!Tip Shorted!"
},
"SettingsCalibrationWarning": {
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
@@ -46,34 +43,25 @@
"message": "MAŽ VOLT"
},
"UndervoltageString": {
"message": "Žema įtampa\n"
"message": "Žema įtampa"
},
"InputVoltageString": {
"message": "Įvestis V: \n"
"message": "Įvestis V: "
},
"SleepingSimpleString": {
"message": "Zzzz"
},
"SleepingAdvancedString": {
"message": "Miegu...\n"
"message": "Miegu..."
},
"SleepingTipAdvancedString": {
"message": "Antg: \n"
"message": "Antg:"
},
"OffString": {
"message": "Išj"
},
"ProfilePreheatString": {
"message": "Preheat\n"
},
"ProfileCooldownString": {
"message": "Cooldown\n"
},
"DeviceFailedValidationWarning": {
"message": "Your device is most likely a counterfeit!"
},
"TooHotToStartProfileWarning": {
"message": "Too hot to\nstart profile"
}
},
"characters": {
@@ -131,10 +119,6 @@
"displayText": "PD\nlaikas",
"description": "PD suderinimo laikas žingsniais po 100ms suderinamumui su kai kuriais QC įkrovikliais"
},
"PDVpdo": {
"displayText": "PD\nVPDO",
"description": "Enables PPS & EPR modes"
},
"BoostTemperature": {
"displayText": "Turbo\ntemperat.",
"description": "Temperatūra turbo režimu"
@@ -155,62 +139,6 @@
"displayText": "Mygtukų\nužraktas",
"description": "Lituodami, ilgai paspauskite abu mygtukus, kad juos užrakintumėte (I=Išjungta | T=leidžiamas tik Turbo režimas | V=Visiškas užrakinimas)"
},
"ProfilePhases": {
"displayText": "Profile\nPhases",
"description": "Number of phases in profile mode"
},
"ProfilePreheatTemp": {
"displayText": "Preheat\nTemp",
"description": "Preheat to this temperature at the start of profile mode"
},
"ProfilePreheatSpeed": {
"displayText": "Preheat\nSpeed",
"description": "Preheat at this rate (degrees per second)"
},
"ProfilePhase1Temp": {
"displayText": "Phase 1\nTemp",
"description": "Target temperature for the end of this phase"
},
"ProfilePhase1Duration": {
"displayText": "Phase 1\nDuration",
"description": "Target duration of this phase (seconds)"
},
"ProfilePhase2Temp": {
"displayText": "Phase 2\nTemp",
"description": ""
},
"ProfilePhase2Duration": {
"displayText": "Phase 2\nDuration",
"description": ""
},
"ProfilePhase3Temp": {
"displayText": "Phase 3\nTemp",
"description": ""
},
"ProfilePhase3Duration": {
"displayText": "Phase 3\nDuration",
"description": ""
},
"ProfilePhase4Temp": {
"displayText": "Phase 4\nTemp",
"description": ""
},
"ProfilePhase4Duration": {
"displayText": "Phase 4\nDuration",
"description": ""
},
"ProfilePhase5Temp": {
"displayText": "Phase 5\nTemp",
"description": ""
},
"ProfilePhase5Duration": {
"displayText": "Phase 5\nDuration",
"description": ""
},
"ProfileCooldownSpeed": {
"displayText": "Cooldown\nSpeed",
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
},
"MotionSensitivity": {
"displayText": "Judesio\njautrumas",
"description": "Judesio jautrumas (0=Išjungta | 1=Mažiausias | ... | 9=Didžiausias)"
@@ -279,10 +207,6 @@
"displayText": "Detalus lita-\nvimo ekranas",
"description": "Ar rodyti išsamią informaciją lituojant"
},
"BluetoothLE": {
"displayText": "Bluetooth\n",
"description": "Enables BLE"
},
"PowerLimit": {
"displayText": "Galios\nriba",
"description": "Didžiausia galia, kurią gali naudoti lituoklis (Vatai)"
@@ -314,6 +238,10 @@
"LanguageSwitch": {
"displayText": "Kalba:\n LT Lietuvių",
"description": ""
},
"BLEEnabled": {
"displayText": "BLE\n Enabled",
"description": ""
}
}
}

View File

@@ -1,9 +1,9 @@
{
"languageCode": "NB",
"languageLocalName": "Norsk bokmål",
"tempUnitFahrenheit": false,
"tempUnitFahrenheit": true,
"messagesWarn": {
"CalibrationDone": {
"CJCCalibrationDone": {
"message": "Calibration\ndone!"
},
"ResetOKMessage": {
@@ -30,9 +30,6 @@
"WarningThermalRunaway": {
"message": "Termisk\nrømling"
},
"WarningTipShorted": {
"message": "!Tip Shorted!"
},
"SettingsCalibrationWarning": {
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
@@ -46,34 +43,25 @@
"message": "Lavspenn"
},
"UndervoltageString": {
"message": "Underspenning\n"
"message": "Underspenning"
},
"InputVoltageString": {
"message": "Innspenn.: \n"
"message": "Innspenn.: "
},
"SleepingSimpleString": {
"message": "Zzzz"
},
"SleepingAdvancedString": {
"message": "Dvale...\n"
"message": "Dvale..."
},
"SleepingTipAdvancedString": {
"message": "Spiss: \n"
"message": "Spiss:"
},
"OffString": {
"message": "Av"
},
"ProfilePreheatString": {
"message": "Preheat\n"
},
"ProfileCooldownString": {
"message": "Cooldown\n"
},
"DeviceFailedValidationWarning": {
"message": "Enheten din er sannsynligvis en forfalskning!"
},
"TooHotToStartProfileWarning": {
"message": "Too hot to\nstart profile"
}
},
"characters": {
@@ -131,10 +119,6 @@
"displayText": "PD-\ntidsavb.",
"description": "PD-forhandlingstidsavbrudd i steg på 100 ms for kompatibilitet med noen QC-ladere"
},
"PDVpdo": {
"displayText": "PD\nVPDO",
"description": "Enables PPS & EPR modes"
},
"BoostTemperature": {
"displayText": "KTmp\n",
"description": "Temperatur i \"kraft-modus\""
@@ -155,62 +139,6 @@
"displayText": "Tillat å låse\nknapper",
"description": "Mens du lodder, hold nede begge knapper for å bytte mellom låsemodus (D=deaktiver | B=kun boost | F=full lås)"
},
"ProfilePhases": {
"displayText": "Profile\nPhases",
"description": "Number of phases in profile mode"
},
"ProfilePreheatTemp": {
"displayText": "Preheat\nTemp",
"description": "Preheat to this temperature at the start of profile mode"
},
"ProfilePreheatSpeed": {
"displayText": "Preheat\nSpeed",
"description": "Preheat at this rate (degrees per second)"
},
"ProfilePhase1Temp": {
"displayText": "Phase 1\nTemp",
"description": "Target temperature for the end of this phase"
},
"ProfilePhase1Duration": {
"displayText": "Phase 1\nDuration",
"description": "Target duration of this phase (seconds)"
},
"ProfilePhase2Temp": {
"displayText": "Phase 2\nTemp",
"description": ""
},
"ProfilePhase2Duration": {
"displayText": "Phase 2\nDuration",
"description": ""
},
"ProfilePhase3Temp": {
"displayText": "Phase 3\nTemp",
"description": ""
},
"ProfilePhase3Duration": {
"displayText": "Phase 3\nDuration",
"description": ""
},
"ProfilePhase4Temp": {
"displayText": "Phase 4\nTemp",
"description": ""
},
"ProfilePhase4Duration": {
"displayText": "Phase 4\nDuration",
"description": ""
},
"ProfilePhase5Temp": {
"displayText": "Phase 5\nTemp",
"description": ""
},
"ProfilePhase5Duration": {
"displayText": "Phase 5\nDuration",
"description": ""
},
"ProfileCooldownSpeed": {
"displayText": "Cooldown\nSpeed",
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
},
"MotionSensitivity": {
"displayText": "BSensr\n",
"description": "Bevegelsesfølsomhet (0=Inaktiv | 1=Minst følsom | ... | 9=Mest følsom)"
@@ -279,10 +207,6 @@
"displayText": "AvLdSk\n",
"description": "Vis detaljert informasjon ved lodding"
},
"BluetoothLE": {
"displayText": "Bluetooth\n",
"description": "Enables BLE"
},
"PowerLimit": {
"displayText": "Effekt-\ngrense",
"description": "Maks effekt jernet kan bruke (W=watt)"
@@ -314,6 +238,10 @@
"LanguageSwitch": {
"displayText": "Språk:\n NB Norsk bm",
"description": ""
},
"BLEEnabled": {
"displayText": "BLE\n Enabled",
"description": ""
}
}
}

View File

@@ -1,9 +1,9 @@
{
"languageCode": "NL",
"languageLocalName": "Nederlands",
"tempUnitFahrenheit": false,
"tempUnitFahrenheit": true,
"messagesWarn": {
"CalibrationDone": {
"CJCCalibrationDone": {
"message": "Calibration\ndone!"
},
"ResetOKMessage": {
@@ -30,9 +30,6 @@
"WarningThermalRunaway": {
"message": "Verwarming\nOncontroleerbaar"
},
"WarningTipShorted": {
"message": "!Tip Shorted!"
},
"SettingsCalibrationWarning": {
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
@@ -46,34 +43,25 @@
"message": "DC Laag"
},
"UndervoltageString": {
"message": "Onderspanning\n"
"message": "Onderspanning"
},
"InputVoltageString": {
"message": "Voeding V: \n"
"message": "Voeding V: "
},
"SleepingSimpleString": {
"message": "Zzzz"
},
"SleepingAdvancedString": {
"message": "Slaapstand...\n"
"message": "Slaapstand..."
},
"SleepingTipAdvancedString": {
"message": "Punt: \n"
"message": "Punt:"
},
"OffString": {
"message": "Uit"
},
"ProfilePreheatString": {
"message": "Preheat\n"
},
"ProfileCooldownString": {
"message": "Cooldown\n"
},
"DeviceFailedValidationWarning": {
"message": "Jouw toestel is wellicht een namaak-versie!"
},
"TooHotToStartProfileWarning": {
"message": "Too hot to\nstart profile"
}
},
"characters": {
@@ -124,17 +112,13 @@
"description": "Minimum toegestaan voltage per cell (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)"
},
"QCMaxVoltage": {
"displayText": "QC\nvoltage",
"displayText": "QC\nVoltage",
"description": "Maximaal QC voltage dat gevraagd mag worden"
},
"PDNegTimeout": {
"displayText": "PD\ntimeout",
"description": "PD afstemmingsduur in stappen van 100ms (voor compatibiliteit met sommige QC laders)"
},
"PDVpdo": {
"displayText": "PD\nVPDO",
"description": "Enables PPS & EPR modes"
},
"BoostTemperature": {
"displayText": "Boost\ntemp",
"description": "Punt temperatuur in boostmode"
@@ -155,62 +139,6 @@
"displayText": "Knopblokkering\ninschakelen",
"description": "Tijdens solderen lang op beide knoppen drukken blokkeert de knoppen (U=Uit | B=Alleen boost mode | V=Volledig blokkeren)"
},
"ProfilePhases": {
"displayText": "Profile\nPhases",
"description": "Number of phases in profile mode"
},
"ProfilePreheatTemp": {
"displayText": "Preheat\nTemp",
"description": "Preheat to this temperature at the start of profile mode"
},
"ProfilePreheatSpeed": {
"displayText": "Preheat\nSpeed",
"description": "Preheat at this rate (degrees per second)"
},
"ProfilePhase1Temp": {
"displayText": "Phase 1\nTemp",
"description": "Target temperature for the end of this phase"
},
"ProfilePhase1Duration": {
"displayText": "Phase 1\nDuration",
"description": "Target duration of this phase (seconds)"
},
"ProfilePhase2Temp": {
"displayText": "Phase 2\nTemp",
"description": ""
},
"ProfilePhase2Duration": {
"displayText": "Phase 2\nDuration",
"description": ""
},
"ProfilePhase3Temp": {
"displayText": "Phase 3\nTemp",
"description": ""
},
"ProfilePhase3Duration": {
"displayText": "Phase 3\nDuration",
"description": ""
},
"ProfilePhase4Temp": {
"displayText": "Phase 4\nTemp",
"description": ""
},
"ProfilePhase4Duration": {
"displayText": "Phase 4\nDuration",
"description": ""
},
"ProfilePhase5Temp": {
"displayText": "Phase 5\nTemp",
"description": ""
},
"ProfilePhase5Duration": {
"displayText": "Phase 5\nDuration",
"description": ""
},
"ProfileCooldownSpeed": {
"displayText": "Cooldown\nSpeed",
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
},
"MotionSensitivity": {
"displayText": "Bewegings-\ngevoeligheid",
"description": "Bewegingsgevoeligheid (0=uit | 1=minst gevoelig | ... | 9=meest gevoelig)"
@@ -279,10 +207,6 @@
"displayText": "Gedetailleerd\nsoldeerscherm",
"description": "Gedetailleerde informatie weergeven in een kleiner lettertype op het soldeerscherm"
},
"BluetoothLE": {
"displayText": "Bluetooth\n",
"description": "Enables BLE"
},
"PowerLimit": {
"displayText": "Vermogen\nlimiet",
"description": "Maximaal vermogen (W=Watt)"
@@ -314,6 +238,10 @@
"LanguageSwitch": {
"displayText": "Taal:\n NL Nederlands",
"description": ""
},
"BLEEnabled": {
"displayText": "BLE\n Enabled",
"description": ""
}
}
}

View File

@@ -1,9 +1,9 @@
{
"languageCode": "NL_BE",
"languageLocalName": "Vlaams",
"tempUnitFahrenheit": false,
"tempUnitFahrenheit": true,
"messagesWarn": {
"CalibrationDone": {
"CJCCalibrationDone": {
"message": "Calibration\ndone!"
},
"ResetOKMessage": {
@@ -30,9 +30,6 @@
"WarningThermalRunaway": {
"message": "Thermal\nRunaway"
},
"WarningTipShorted": {
"message": "!Tip Shorted!"
},
"SettingsCalibrationWarning": {
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
@@ -46,34 +43,25 @@
"message": "Voedingsspanning LAAG"
},
"UndervoltageString": {
"message": "Onderspanning\n"
"message": "Onderspanning"
},
"InputVoltageString": {
"message": "Voedingsspanning: \n"
"message": "Voedingsspanning: "
},
"SleepingSimpleString": {
"message": "Zzz "
},
"SleepingAdvancedString": {
"message": "Slaapstand...\n"
"message": "Slaapstand..."
},
"SleepingTipAdvancedString": {
"message": "Punt: \n"
"message": "Punt:"
},
"OffString": {
"message": "Uit"
},
"ProfilePreheatString": {
"message": "Preheat\n"
},
"ProfileCooldownString": {
"message": "Cooldown\n"
},
"DeviceFailedValidationWarning": {
"message": "Your device is most likely a counterfeit!"
},
"TooHotToStartProfileWarning": {
"message": "Too hot to\nstart profile"
}
},
"characters": {
@@ -131,10 +119,6 @@
"displayText": "PD\ntimeout",
"description": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers"
},
"PDVpdo": {
"displayText": "PD\nVPDO",
"description": "Enables PPS & EPR modes"
},
"BoostTemperature": {
"displayText": "Verhogings\ntemp",
"description": "Verhogingstemperatuur"
@@ -155,62 +139,6 @@
"displayText": "Allow locking\nbuttons",
"description": "While soldering, hold down both buttons to toggle locking them (D=disable | B=boost mode only | F=full locking)"
},
"ProfilePhases": {
"displayText": "Profile\nPhases",
"description": "Number of phases in profile mode"
},
"ProfilePreheatTemp": {
"displayText": "Preheat\nTemp",
"description": "Preheat to this temperature at the start of profile mode"
},
"ProfilePreheatSpeed": {
"displayText": "Preheat\nSpeed",
"description": "Preheat at this rate (degrees per second)"
},
"ProfilePhase1Temp": {
"displayText": "Phase 1\nTemp",
"description": "Target temperature for the end of this phase"
},
"ProfilePhase1Duration": {
"displayText": "Phase 1\nDuration",
"description": "Target duration of this phase (seconds)"
},
"ProfilePhase2Temp": {
"displayText": "Phase 2\nTemp",
"description": ""
},
"ProfilePhase2Duration": {
"displayText": "Phase 2\nDuration",
"description": ""
},
"ProfilePhase3Temp": {
"displayText": "Phase 3\nTemp",
"description": ""
},
"ProfilePhase3Duration": {
"displayText": "Phase 3\nDuration",
"description": ""
},
"ProfilePhase4Temp": {
"displayText": "Phase 4\nTemp",
"description": ""
},
"ProfilePhase4Duration": {
"displayText": "Phase 4\nDuration",
"description": ""
},
"ProfilePhase5Temp": {
"displayText": "Phase 5\nTemp",
"description": ""
},
"ProfilePhase5Duration": {
"displayText": "Phase 5\nDuration",
"description": ""
},
"ProfileCooldownSpeed": {
"displayText": "Cooldown\nSpeed",
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
},
"MotionSensitivity": {
"displayText": "Bewegings-\ngevoeligheid",
"description": "Bewegingsgevoeligheid (0=uit | 1=minst gevoelig | ... | 9=meest gevoelig)"
@@ -279,13 +207,9 @@
"displayText": "Gedetailleerd\nsoldeerscherm",
"description": "Gedetailleerde informatie in kleiner lettertype in soldeerscherm."
},
"BluetoothLE": {
"displayText": "Bluetooth\n",
"description": "Enables BLE"
},
"PowerLimit": {
"displayText": "Power\nlimit",
"description": "Average maximum power the iron can use (W=watt)"
"description": "Maximum power the iron can use (W=watt)"
},
"CalibrateCJC": {
"displayText": "Calibrate CJC\nat next boot",
@@ -314,6 +238,10 @@
"LanguageSwitch": {
"displayText": "Spraak:\n NL_BE Vlaams",
"description": ""
},
"BLEEnabled": {
"displayText": "BLE\n Enabled",
"description": ""
}
}
}

View File

@@ -1,16 +1,16 @@
{
"languageCode": "PL",
"languageLocalName": "Polski",
"tempUnitFahrenheit": false,
"tempUnitFahrenheit": true,
"messagesWarn": {
"CalibrationDone": {
"CJCCalibrationDone": {
"message": "Kalibracja\nwykonana!"
},
"ResetOKMessage": {
"message": "Reset OK"
},
"SettingsResetMessage": {
"message": "Ust. \nzresetowane"
"message": "Ust. zresetowane"
},
"NoAccelerometerMessage": {
"message": "Nie rozpoznano\nakcelerometru!"
@@ -30,9 +30,6 @@
"WarningThermalRunaway": {
"message": "Ucieczka\ntermiczna"
},
"WarningTipShorted": {
"message": "!Tip Shorted!"
},
"SettingsCalibrationWarning": {
"message": "Upewnij się, że końcówka i uchwyt mają temperaturę pokojową podczas następnego rozruchu!"
},
@@ -46,34 +43,25 @@
"message": "NIS. NAP"
},
"UndervoltageString": {
"message": "Zbyt niskie nap.\n"
"message": "Zbyt niskie nap."
},
"InputVoltageString": {
"message": "Nap. wej.: \n"
"message": "Nap. wej.:"
},
"SleepingSimpleString": {
"message": "Zzz!"
},
"SleepingAdvancedString": {
"message": "Tr. uśpienia\n"
"message": "Tr. uśpienia"
},
"SleepingTipAdvancedString": {
"message": "Grot: \n"
"message": "Grot:"
},
"OffString": {
"message": "Wył"
},
"ProfilePreheatString": {
"message": "Preheat\n"
},
"ProfileCooldownString": {
"message": "Cooldown\n"
},
"DeviceFailedValidationWarning": {
"message": "Twoje urządzenie jest najprawdopodobniej podróbką!"
},
"TooHotToStartProfileWarning": {
"message": "Too hot to\nstart profile"
}
},
"characters": {
@@ -98,7 +86,7 @@
"description": ""
},
"SolderingMenu": {
"displayText": "Lutowanie\n",
"displayText": "Lutowanie",
"description": ""
},
"PowerSavingMenu": {
@@ -131,10 +119,6 @@
"displayText": "Limit czasu\nPD",
"description": "Limit czasu negocjacji PD w krokach co 100 ms dla zgodności z niektórymi ładowarkami QC (0: wyłączone)"
},
"PDVpdo": {
"displayText": "PD\nVPDO",
"description": "Włącza tryby PPS & EPR."
},
"BoostTemperature": {
"displayText": "Temp.\nboost",
"description": "Temperatura w trybie \"boost\" "
@@ -155,62 +139,6 @@
"displayText": "Blokada\nprzycisków",
"description": "W trybie lutowania, wciśnij oba przyciski aby je zablokować (O=Wyłączona | B=tylko Boost | P=pełna blokada)"
},
"ProfilePhases": {
"displayText": "Profile\nPhases",
"description": "Number of phases in profile mode"
},
"ProfilePreheatTemp": {
"displayText": "Preheat\nTemp",
"description": "Preheat to this temperature at the start of profile mode"
},
"ProfilePreheatSpeed": {
"displayText": "Preheat\nSpeed",
"description": "Preheat at this rate (degrees per second)"
},
"ProfilePhase1Temp": {
"displayText": "Phase 1\nTemp",
"description": "Target temperature for the end of this phase"
},
"ProfilePhase1Duration": {
"displayText": "Phase 1\nDuration",
"description": "Target duration of this phase (seconds)"
},
"ProfilePhase2Temp": {
"displayText": "Phase 2\nTemp",
"description": ""
},
"ProfilePhase2Duration": {
"displayText": "Phase 2\nDuration",
"description": ""
},
"ProfilePhase3Temp": {
"displayText": "Phase 3\nTemp",
"description": ""
},
"ProfilePhase3Duration": {
"displayText": "Phase 3\nDuration",
"description": ""
},
"ProfilePhase4Temp": {
"displayText": "Phase 4\nTemp",
"description": ""
},
"ProfilePhase4Duration": {
"displayText": "Phase 4\nDuration",
"description": ""
},
"ProfilePhase5Temp": {
"displayText": "Phase 5\nTemp",
"description": ""
},
"ProfilePhase5Duration": {
"displayText": "Phase 5\nDuration",
"description": ""
},
"ProfileCooldownSpeed": {
"displayText": "Cooldown\nSpeed",
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
},
"MotionSensitivity": {
"displayText": "Czułość\nwykr. ruchu",
"description": "Czułość wykrywania ruchu (0: Wyłączona | 1: Minimalna | ... | 9: Maksymalna)"
@@ -279,10 +207,6 @@
"displayText": "Sz. inf. w\ntr. lutowania",
"description": "Wyświetl szczegółowe informacje w trybie lutowania"
},
"BluetoothLE": {
"displayText": "Bluetooth\n",
"description": "Enables BLE"
},
"PowerLimit": {
"displayText": "Ogr.\nmocy",
"description": "Maksymalna moc (W), jakiej może użyć lutownica"
@@ -314,6 +238,10 @@
"LanguageSwitch": {
"displayText": "Język:\n PL Polski",
"description": ""
},
"BLEEnabled": {
"displayText": "BLE\n Enabled",
"description": ""
}
}
}

View File

@@ -1,43 +1,40 @@
{
"languageCode": "PT",
"languageLocalName": "Português",
"tempUnitFahrenheit": false,
"tempUnitFahrenheit": true,
"messagesWarn": {
"CalibrationDone": {
"message": "Calibração\nefetuada!"
"CJCCalibrationDone": {
"message": "Calibration\ndone!"
},
"ResetOKMessage": {
"message": "Reset OK"
},
"SettingsResetMessage": {
"message": "Algumas configurações\nforam alteradas!"
"message": "Certain settings\nwere changed!"
},
"NoAccelerometerMessage": {
"message": "Acelerómetro não\ndetetado!"
"message": "No accelerometer\ndetected!"
},
"NoPowerDeliveryMessage": {
"message": "USB-PD IC não\ndetetado!"
"message": "No USB-PD IC\ndetected!"
},
"LockingKeysString": {
"message": "Bloqueado"
"message": "LOCKED"
},
"UnlockingKeysString": {
"message": "Desbloqueado"
"message": "UNLOCKED"
},
"WarningKeysLockedString": {
"message": "!Bloqueado!"
"message": "!LOCKED!"
},
"WarningThermalRunaway": {
"message": "Thermal\nRunaway"
},
"WarningTipShorted": {
"message": "!Tip Shorted!"
},
"SettingsCalibrationWarning": {
"message": "Antes de reiniciar certifique-se que o ferro está à temperatura ambiente!"
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
"CJCCalibrating": {
"message": "calibrar\n"
"message": "calibrating\n"
},
"SettingsResetWarning": {
"message": "Definições de fábrica?"
@@ -46,34 +43,25 @@
"message": "DC BAIXO"
},
"UndervoltageString": {
"message": "Subtensão\n"
"message": "Subtensão"
},
"InputVoltageString": {
"message": "Tensão: \n"
"message": "Tensão "
},
"SleepingSimpleString": {
"message": "Zzzz"
},
"SleepingAdvancedString": {
"message": "Repouso...\n"
"message": "Repouso..."
},
"SleepingTipAdvancedString": {
"message": "Ponta: \n"
"message": "Ponta:"
},
"OffString": {
"message": "Off"
},
"ProfilePreheatString": {
"message": "Preheat\n"
},
"ProfileCooldownString": {
"message": "Cooldown\n"
},
"DeviceFailedValidationWarning": {
"message": "O seu dispositivo provavelmente é falsificado!"
},
"TooHotToStartProfileWarning": {
"message": "Too hot to\nstart profile"
"message": "Your device is most likely a counterfeit!"
}
},
"characters": {
@@ -94,7 +82,7 @@
},
"menuGroups": {
"PowerMenu": {
"displayText": "Configurações de\nenergia",
"displayText": "Power\nsettings",
"description": ""
},
"SolderingMenu": {
@@ -120,103 +108,43 @@
"description": "Fonte de alimentação. Define a tensão de corte. (DC=10V) (S=3.3V/célula)"
},
"MinVolCell": {
"displayText": "Tensão\nmínima",
"description": "Tensão mínima permitida por célula de bateria (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)"
"displayText": "Minimum\nvoltage",
"description": "Minimum allowed voltage per battery cell (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)"
},
"QCMaxVoltage": {
"displayText": "Potência\nFonte",
"description": "Potência da fonte usada (Watt)"
},
"PDNegTimeout": {
"displayText": "PD tempo\nlimite",
"description": "Tempo limite de negoiciação de PD de 100ms para compatibilidade com alguns carregadores é (0: disabled)"
},
"PDVpdo": {
"displayText": "PD\nVPDO",
"description": "Activa o modo PPS & EPR"
"displayText": "PD\ntimeout",
"description": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers (0: disabled)"
},
"BoostTemperature": {
"displayText": "Temp.\nModo turbo",
"displayText": "Modo turbo\ntemperat.",
"description": "Ajuste de temperatura do \"modo turbo\""
},
"AutoStart": {
"displayText": "Aquecimento\nautomático",
"displayText": "Partida\nautomática",
"description": "Aquece a ponta automaticamente ao ligar (D=desligar | S=soldagem | H=hibernar | A=hibernar temp. ambiente)"
},
"TempChangeShortStep": {
"displayText": "Mudança temp.\ncurta",
"description": "A temperatura será aumentada com um click curto"
"displayText": "Temp change\nshort",
"description": "Temperature-change-increment on short button press"
},
"TempChangeLongStep": {
"displayText": "Mudança temp.\nlonga",
"description": "A temperatura será aumentada com um click longo"
"displayText": "Temp change\nlong",
"description": "Temperature-change-increment on long button press"
},
"LockingMode": {
"displayText": "Permitir bloquear\nbotões",
"description": "Durante a solda premir os dois botões para alternar entre (D=desativados | B=modo turbo | F=bloqueio total)"
},
"ProfilePhases": {
"displayText": "Profile\nPhases",
"description": "Number of phases in profile mode"
},
"ProfilePreheatTemp": {
"displayText": "Preheat\nTemp",
"description": "Preheat to this temperature at the start of profile mode"
},
"ProfilePreheatSpeed": {
"displayText": "Preheat\nSpeed",
"description": "Preheat at this rate (degrees per second)"
},
"ProfilePhase1Temp": {
"displayText": "Phase 1\nTemp",
"description": "Target temperature for the end of this phase"
},
"ProfilePhase1Duration": {
"displayText": "Phase 1\nDuration",
"description": "Target duration of this phase (seconds)"
},
"ProfilePhase2Temp": {
"displayText": "Phase 2\nTemp",
"description": ""
},
"ProfilePhase2Duration": {
"displayText": "Phase 2\nDuration",
"description": ""
},
"ProfilePhase3Temp": {
"displayText": "Phase 3\nTemp",
"description": ""
},
"ProfilePhase3Duration": {
"displayText": "Phase 3\nDuration",
"description": ""
},
"ProfilePhase4Temp": {
"displayText": "Phase 4\nTemp",
"description": ""
},
"ProfilePhase4Duration": {
"displayText": "Phase 4\nDuration",
"description": ""
},
"ProfilePhase5Temp": {
"displayText": "Phase 5\nTemp",
"description": ""
},
"ProfilePhase5Duration": {
"displayText": "Phase 5\nDuration",
"description": ""
},
"ProfileCooldownSpeed": {
"displayText": "Cooldown\nSpeed",
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
"displayText": "Allow locking\nbuttons",
"description": "While soldering, hold down both buttons to toggle locking them (D=disable | B=boost mode only | F=full locking)"
},
"MotionSensitivity": {
"displayText": "Sensibilidade\nmovimento",
"description": "Sensibilidade ao movimento (0=Desligado | 1=Menor | ... | 9=Maior)"
},
"SleepTemperature": {
"displayText": "Temperatura\nrepouso",
"displayText": "Temperat.\nrepouso",
"description": "Temperatura de repouso (C)"
},
"SleepTimeout": {
@@ -224,20 +152,20 @@
"description": "Tempo para repouso (Minutos | Segundos)"
},
"ShutdownTimeout": {
"displayText": "Tempo\ndesligar",
"description": "Tempo para desligar (Minutos)"
"displayText": "Tempo\ndesligam.",
"description": "Tempo para desligamento (Minutos)"
},
"HallEffSensitivity": {
"displayText": "Sensibilidade de\nmagnetismo",
"description": "Sensibilidade de magnetismo (0=Desligado | 1=Menor | ... | 9=Maior)"
"displayText": "Hall sensor\nsensitivity",
"description": "Sensitivity to magnets (0=Desligado | 1=Menor | ... | 9=Maior)"
},
"TemperatureUnit": {
"displayText": "Unidade\ntemperatura",
"description": "Unidade de temperatura (C=Celsius | F=Fahrenheit)"
},
"DisplayRotation": {
"displayText": "Orientação\necrã",
"description": "Orientação do ecrã (D=estro | C=anhoto | A=utomática)"
"displayText": "Orientação\ntela",
"description": "Orientação da tela (D=estro | C=anhoto | A=utomática)"
},
"CooldownBlink": {
"displayText": "Piscar ao\narrefecer",
@@ -245,75 +173,75 @@
},
"ScrollingSpeed": {
"displayText": "Velocidade\ntexto ajuda",
"description": "Velocidade a que o texto de ajuda é apresentado"
"description": "Velocidade a que o texto é exibido"
},
"ReverseButtonTempChange": {
"displayText": "Trocar\nbotões + -",
"description": "Inverte o funcionamento dos botões de ajuste da temperatura"
"displayText": "Swap\n+ - keys",
"description": "Reverse assignment of buttons for temperature adjustment"
},
"AnimSpeed": {
"displayText": "Velocidade de\nanimação",
"description": "Velocidade das animações no menu (O=off | S=lenta | M=média | F=rápida)"
"displayText": "Anim.\nspeed",
"description": "Pace of icon animations in menu (O=off | S=slow | M=medium | F=fast)"
},
"AnimLoop": {
"displayText": "Repetir\nanimações",
"description": "Repete animações de ícones no menu principal"
"displayText": "Anim.\nloop",
"description": "Loop icon animations in main menu"
},
"Brightness": {
"displayText": "Brilho\ndo ecrã",
"description": "Ajusta o brilho do ecrã OLED"
"displayText": "Screen\nbrightness",
"description": "Adjust the OLED screen brightness"
},
"ColourInversion": {
"displayText": "Inverter\necrã",
"description": "Inverte as cores do ecrã OLED"
"displayText": "Invert\nscreen",
"description": "Invert the OLED screen colors"
},
"LOGOTime": {
"displayText": "Duração do\nlogo no arranque",
"description": "Define a duração do logotipo no arranque em (s=segundos)"
"displayText": "Boot logo\nduration",
"description": "Set boot logo duration (s=seconds)"
},
"AdvancedIdle": {
"displayText": "Ecrã repouso\navançado",
"description": "Mostra informações avançadas quando em repouso"
"displayText": "Tela repouso\navançada",
"description": "Exibe informações avançadas quando em espera"
},
"AdvancedSoldering": {
"displayText": "Ecrã solda\navançado",
"description": "Mostra informações avançadas durante a solda"
},
"BluetoothLE": {
"displayText": "Bluetooth\n",
"description": "Ativa o Bluetooth Low Energy (BLE)"
"displayText": "Tela trabalho\navançada",
"description": "Exibe informações avançadas durante o uso"
},
"PowerLimit": {
"displayText": "Limite de\npotência",
"description": "Potência máxima a usar (W=watt)"
"displayText": "Power\nlimit",
"description": "Maximum power the iron can use (W=watt)"
},
"CalibrateCJC": {
"displayText": "Calibrar CJC\nno próximo arranque",
"description": "No próximo arranque CJC será calibrada (não será necessário caso o Delta T seja < 5°C)"
"displayText": "Calibrate CJC\nat next boot",
"description": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
},
"VoltageCalibration": {
"displayText": "Calibrar\ntensão",
"description": "Calibra a tensão de alimentação. Use os botões para ajustar o valor. Mantenha pressionado para sair"
},
"PowerPulsePower": {
"displayText": "Potência\ndo pulso",
"description": "Intensidade de potência de arranque (W=watt)"
"displayText": "Power\npulse",
"description": "Intensity of power of keep-awake-pulse (W=watt)"
},
"PowerPulseWait": {
"displayText": "Espera do\npulso",
"description": "Espera entre o acordar e o envio da rectivação (x 2.5s)"
"displayText": "Power pulse\ndelay",
"description": "Delay before keep-awake-pulse is triggered (x 2.5s)"
},
"PowerPulseDuration": {
"displayText": "Duração\npulso",
"description": "Manter os inplosus de rectivação em (x 250ms)"
"displayText": "Power pulse\nduration",
"description": "Keep-awake-pulse duration (x 250ms)"
},
"SettingsReset": {
"displayText": "Reset de\nfábrica?",
"description": "Ree todos os ajustes"
"description": "Reverte todos ajustes"
},
"LanguageSwitch": {
"displayText": "Idioma:\n PT Português",
"description": ""
},
"BLEEnabled": {
"displayText": "BLE\n Enabled",
"description": ""
}
}
}

View File

@@ -3,7 +3,7 @@
"languageLocalName": "Română",
"tempUnitFahrenheit": true,
"messagesWarn": {
"CalibrationDone": {
"CJCCalibrationDone": {
"message": "Calibration\ndone!"
},
"ResetOKMessage": {
@@ -13,7 +13,7 @@
"message": "Setările au fost\nresetate!"
},
"NoAccelerometerMessage": {
"message": "Fără accelerometru\ndetectat!"
"message": "Nu accelerometru\ndetectat!"
},
"NoPowerDeliveryMessage": {
"message": "Fără USB-PD IC\ndetectat!"
@@ -28,52 +28,40 @@
"message": "!BLOCAT!"
},
"WarningThermalRunaway": {
"message": "Încălzire\nEşuată"
},
"WarningTipShorted": {
"message": "!Tip Shorted!"
"message": "Incalzire\nEsuata"
},
"SettingsCalibrationWarning": {
"message": "Înainte de repornire, asiguraţi-vă că vârful şi mânerul sunt la temperatura camerei!"
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
"CJCCalibrating": {
"message": "calibrare\n"
"message": "calibrating\n"
},
"SettingsResetWarning": {
"message": "Sigur doriţi să restauraţi la setările implicite?"
"message": "Sigur doriti să restaurati la setările implicite?"
},
"UVLOWarningString": {
"message": "DC SCĂZUT"
"message": "DC LOW"
},
"UndervoltageString": {
"message": "Voltaj scăzut\n"
"message": "Sub tensiune"
},
"InputVoltageString": {
"message": "Intrare V: \n"
"message": "Intrare V: "
},
"SleepingSimpleString": {
"message": "Zzzz"
},
"SleepingAdvancedString": {
"message": "Adormit...\n"
"message": "Adormit..."
},
"SleepingTipAdvancedString": {
"message": "Tip: \n"
"message": "Tip:"
},
"OffString": {
"message": "Nu"
},
"ProfilePreheatString": {
"message": "Preheat\n"
},
"ProfileCooldownString": {
"message": "Cooldown\n"
},
"DeviceFailedValidationWarning": {
"message": "Dispozitivul dvs. este cel mai probabil un fals!"
},
"TooHotToStartProfileWarning": {
"message": "Too hot to\nstart profile"
"message": "Your device is most likely a counterfeit!"
}
},
"characters": {
@@ -106,18 +94,18 @@
"description": ""
},
"UIMenu": {
"displayText": "Interfaţă\nutilizator",
"displayText": "Interfată\nutilizator",
"description": ""
},
"AdvancedMenu": {
"displayText": "Opţiuni\navansate",
"displayText": "Optiuni\navansate",
"description": ""
}
},
"menuOptions": {
"DCInCutoff": {
"displayText": "Sursa de\nalimentare",
"description": "Sursa de alimentare. Setează tensiunea de întrerupere. (DC 10V) (S 3.3V per celulă, dezactivaţi limita de alimentare)"
"description": "Sursa de alimentare. Setează tensiunea de întrerupere. (DC 10V) (S 3.3V per celulă, dezactivati limita de alimentare)"
},
"MinVolCell": {
"displayText": "Voltaj\nminim",
@@ -129,15 +117,11 @@
},
"PDNegTimeout": {
"displayText": "PD\ntimeout",
"description": "Timp limită de negociere pentru tranzacţia PD, în paşi de 100ms, pentru compatibilitate cu alimentatoarele QC"
},
"PDVpdo": {
"displayText": "PD\nVPDO",
"description": "Enables PPS & EPR modes"
"description": "Timp limita de negociere pentru tranzactia PD, in pasi de 100ms, pentru compatibilitate cu alimentatoarele QC"
},
"BoostTemperature": {
"displayText": "Modifică\ntemp. impuls",
"description": "Temperatura utilizată în \"modul de impuls\""
"displayText": "Boost\ntemp",
"description": "Temperatura utilizată în \"modul boost\""
},
"AutoStart": {
"displayText": "Auto\nstart",
@@ -153,67 +137,11 @@
},
"LockingMode": {
"displayText": "Blocare\nbutoane",
"description": "Când lipiţi, apăsaţi lung ambele butoane, pentru a le bloca (D=dezactivare | B=numai \"modul boost\" | F=blocare completă)"
},
"ProfilePhases": {
"displayText": "Profile\nPhases",
"description": "Number of phases in profile mode"
},
"ProfilePreheatTemp": {
"displayText": "Preheat\nTemp",
"description": "Preheat to this temperature at the start of profile mode"
},
"ProfilePreheatSpeed": {
"displayText": "Preheat\nSpeed",
"description": "Preheat at this rate (degrees per second)"
},
"ProfilePhase1Temp": {
"displayText": "Phase 1\nTemp",
"description": "Target temperature for the end of this phase"
},
"ProfilePhase1Duration": {
"displayText": "Phase 1\nDuration",
"description": "Target duration of this phase (seconds)"
},
"ProfilePhase2Temp": {
"displayText": "Phase 2\nTemp",
"description": ""
},
"ProfilePhase2Duration": {
"displayText": "Phase 2\nDuration",
"description": ""
},
"ProfilePhase3Temp": {
"displayText": "Phase 3\nTemp",
"description": ""
},
"ProfilePhase3Duration": {
"displayText": "Phase 3\nDuration",
"description": ""
},
"ProfilePhase4Temp": {
"displayText": "Phase 4\nTemp",
"description": ""
},
"ProfilePhase4Duration": {
"displayText": "Phase 4\nDuration",
"description": ""
},
"ProfilePhase5Temp": {
"displayText": "Phase 5\nTemp",
"description": ""
},
"ProfilePhase5Duration": {
"displayText": "Phase 5\nDuration",
"description": ""
},
"ProfileCooldownSpeed": {
"displayText": "Cooldown\nSpeed",
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
"description": "Când lipiti, apăsati lung ambele butoane, pentru a le bloca (D=dezactivare | B=numai \"modul boost\" | F=blocare completă)"
},
"MotionSensitivity": {
"displayText": "Sensibilitate\nla miscare",
"description": "Sensibilitate senzor miscare (0=oprit | 1=puţin sensibil | ... | 9=cel mai sensibil)"
"description": "Sensibilitate senzor miscare (0=oprit | 1=putin sensibil | ... | 9=cel mai sensibil)"
},
"SleepTemperature": {
"displayText": "Temp\nrepaus",
@@ -240,8 +168,8 @@
"description": "R=dreptaci | L=stângaci | A=auto"
},
"CooldownBlink": {
"displayText": "Clipeşte\nla răcire",
"description": "Clipeşte temperatura după oprirea încălzirii, în timp ce vârful este încă fierbinte"
"displayText": "Clipeste\nla răcire",
"description": "Clipeste temperatura după oprirea încălzirii, în timp ce vârful este încă fierbinte"
},
"ScrollingSpeed": {
"displayText": "Viteză\nderulare",
@@ -252,36 +180,32 @@
"description": "Inversarea butoanelor de reglare a temperaturii"
},
"AnimSpeed": {
"displayText": "Animaţii\nviteză",
"description": "Ritmul animaţiilor pictogramei din meniu (O=oprit | Î=încet | M=mediu | R=rapid)"
"displayText": "Animatii\nviteză",
"description": "Ritmul animatiilor pictogramei din meniu (O=oprit | Î=încet | M=mediu | R=rapid)"
},
"AnimLoop": {
"displayText": "Animaţii\nbuclă",
"description": "Animaţii de pictograme în meniul principal"
"displayText": "Animatii\nbuclă",
"description": "Animatii de pictograme în meniul principal"
},
"Brightness": {
"displayText": "Ecranului\nluminozitatea",
"description": "Ajusteaza luminozitatea ecranului"
},
"ColourInversion": {
"displayText": "Inversează\nculoarea",
"description": "Inversează culoarea ecranului"
"displayText": "Inverseaza\nculoarea",
"description": "Inverseaza culoarea ecranului"
},
"LOGOTime": {
"displayText": "Durată\nlogo încărcare",
"description": "Setaţi durată logo de pornire (s=secunde)"
"description": "Setati durata logo de pornire (s=secunde)"
},
"AdvancedIdle": {
"displayText": "Detalii,\necran inactiv",
"description": "Afisaţi informaţii detaliate într-un font mai mic pe ecranul de repaus"
"description": "Afisati informatii detaliate într-un font mai mic pe ecranul de repaus"
},
"AdvancedSoldering": {
"displayText": "Detalii\necran lipire",
"description": "Afisaţi informaţii detaliate într-un font mai mic pe ecranul de lipire"
},
"BluetoothLE": {
"displayText": "Bluetooth\n",
"description": "Activează BLE"
"description": "Afisati informatii detaliate într-un font mai mic pe ecranul de lipire"
},
"PowerLimit": {
"displayText": "Putere\nlimită",
@@ -289,15 +213,15 @@
},
"CalibrateCJC": {
"displayText": "Calibrare CJC\nla următoarea pornire",
"description": "La următorul vârf de pornire, compensarea joncţiunii reci va fi calibrată (nu este necesară dacă Delta T este < 5°C)"
"description": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
},
"VoltageCalibration": {
"displayText": "Calibrare tens.\nde intrare?",
"description": "Porniţi calibrarea VIN (apăsaţi lung pentru a ieşi)"
"description": "Porniti calibrarea VIN (apăsati lung pentru a iesi)"
},
"PowerPulsePower": {
"displayText": "Putere\npuls",
"description": "Puterea pulsului de menţinere activă a blocului de alimentare (watt)"
"description": "Puterea pulsului de mentinere activa a blocului de alimentare (watt)"
},
"PowerPulseWait": {
"displayText": "Întârziere\npuls putere",
@@ -305,15 +229,19 @@
},
"PowerPulseDuration": {
"displayText": "Durată\npuls putere",
"description": "Durata pulsului de menţinere (x 250ms)"
"description": "Durata pulsului de mentinere (x 250ms)"
},
"SettingsReset": {
"displayText": "Setări\ndin fabrică",
"description": "Reveniţi la setările din fabrică"
"description": "Reveniti la setările din fabrică"
},
"LanguageSwitch": {
"displayText": "Limbă:\n RO Română",
"description": ""
},
"BLEEnabled": {
"displayText": "BLE\n Enabled",
"description": ""
}
}
}

View File

@@ -1,9 +1,9 @@
{
"languageCode": "RU",
"languageLocalName": "Русский",
"tempUnitFahrenheit": false,
"tempUnitFahrenheit": true,
"messagesWarn": {
"CalibrationDone": {
"CJCCalibrationDone": {
"message": "Калибровка\nзавершена!"
},
"ResetOKMessage": {
@@ -28,10 +28,7 @@
"message": "!ЗАБЛОК!"
},
"WarningThermalRunaway": {
"message": "Неуправляемый\nРазогрев"
},
"WarningTipShorted": {
"message": "!Tip Shorted!"
"message": "Thermal\nRunaway"
},
"SettingsCalibrationWarning": {
"message": "Пожалуйста, убедитесь, что жало и корпус имеют комнатную температуру при следующей загрузке!"
@@ -46,34 +43,25 @@
"message": "НАПРЯЖ--"
},
"UndervoltageString": {
"message": "Низ. напряжение\n"
"message": "Низ. напряжение"
},
"InputVoltageString": {
"message": "Питание В: \n"
"message": "Питание В: "
},
"SleepingSimpleString": {
"message": "Zzzz"
},
"SleepingAdvancedString": {
"message": "Ожидание...\n"
"message": "Ожидание..."
},
"SleepingTipAdvancedString": {
"message": "Жало: \n"
"message": "Жало:"
},
"OffString": {
"message": "Вык"
},
"ProfilePreheatString": {
"message": "Преднагрев\n"
},
"ProfileCooldownString": {
"message": "Остывание\n"
},
"DeviceFailedValidationWarning": {
"message": "Вероятно, это устройство подделка!"
},
"TooHotToStartProfileWarning": {
"message": "Слишком горячо для\nстарта профиля"
"message": "Скорее всего, это устройство подделка!"
}
},
"characters": {
@@ -131,10 +119,6 @@
"displayText": "PD\nтайм-аут",
"description": "Power Delivery тайм-аут согласования с шагом 100 мс для совместимости с некоторыми быстрыми зарядными QC (0: отключено)"
},
"PDVpdo": {
"displayText": "PD\nVPDO",
"description": "Включает режимы PPS & EPR."
},
"BoostTemperature": {
"displayText": "t° турбо\nрежима",
"description": "Температура жала в турбо-режиме"
@@ -155,62 +139,6 @@
"displayText": "Разрешить\nблок. кнопок",
"description": "При работе длинное нажатие обеих кнопок блокирует их (О=Отключено | Т=Только турбо | П=Полная блокировка)"
},
"ProfilePhases": {
"displayText": "Профиль\nЭтапы",
"description": "Количество этапов в режиме профиля"
},
"ProfilePreheatTemp": {
"displayText": "Преднагрев\nТемпература",
"description": "Разогреть до этой температуры в начале режима профиля"
},
"ProfilePreheatSpeed": {
"displayText": "Преднагрев\nСкорость",
"description": "Предварительный нагрев с этой скоростью (градусов в секунду)"
},
"ProfilePhase1Temp": {
"displayText": "Этап 1\nТемпература",
"description": "Целевая температура в конце этого эатпа"
},
"ProfilePhase1Duration": {
"displayText": "Этап 1\nДлительность",
"description": "Целевая длительность этого этапа (секунды)"
},
"ProfilePhase2Temp": {
"displayText": "Этап 2\nТемпература",
"description": ""
},
"ProfilePhase2Duration": {
"displayText": "Этап 2\nДлительность",
"description": ""
},
"ProfilePhase3Temp": {
"displayText": "Этап 3\nТемпература",
"description": ""
},
"ProfilePhase3Duration": {
"displayText": "Этап 3\nДлительность",
"description": ""
},
"ProfilePhase4Temp": {
"displayText": "Этап 4\nТемпература",
"description": ""
},
"ProfilePhase4Duration": {
"displayText": "Этап 4\nДлительность",
"description": ""
},
"ProfilePhase5Temp": {
"displayText": "Этап 5\nТемпература",
"description": ""
},
"ProfilePhase5Duration": {
"displayText": "Этап 5\nДлительность",
"description": ""
},
"ProfileCooldownSpeed": {
"displayText": "Остывание\nСкорость",
"description": "Остывать с такой скоростью в конце режима профиля (градусов в секунду)"
},
"MotionSensitivity": {
"displayText": "Чувствительн.\nакселерометра",
"description": "Чувствительность акселерометра (0=Выкл. | 1=мин. | ... | 9=макс.)"
@@ -245,7 +173,7 @@
},
"ScrollingSpeed": {
"displayText": "Скорость\nтекста",
"description": "Скорость прокрутки текста (М=Медленная | Б=Быстрая)"
"description": "Скорость прокрутки текста (М=медленно | Б=быстро)"
},
"ReverseButtonTempChange": {
"displayText": "Поменять\nкнопки+-",
@@ -253,7 +181,7 @@
},
"AnimSpeed": {
"displayText": "Скорость\nанимации",
"description": "Скорость анимации иконок в главном меню (О=Отключено | М=Медленная| С=Средняя | Б=Быстрая)"
"description": "Скорость анимации иконок в главном меню (Милисекунды) (О=Отключено | Н=Низкий | С=Средний | В=Высокий)"
},
"AnimLoop": {
"displayText": "Зацикленная\nанимация",
@@ -279,10 +207,6 @@
"displayText": "Подробный\nэкран пайки",
"description": "Показывать детальную информацию на экране пайки"
},
"BluetoothLE": {
"displayText": "Bluetooth\n",
"description": "Активирует BLE"
},
"PowerLimit": {
"displayText": "Предел\nмощности",
"description": "Максимальная мощность, которую может использовать паяльник (Ватт)"
@@ -314,6 +238,10 @@
"LanguageSwitch": {
"displayText": "Язык:\n RU Русский",
"description": ""
},
"BLEEnabled": {
"displayText": "BLE\n Enabled",
"description": ""
}
}
}

View File

@@ -1,9 +1,9 @@
{
"languageCode": "SK",
"languageLocalName": "Slovenčina",
"tempUnitFahrenheit": false,
"tempUnitFahrenheit": true,
"messagesWarn": {
"CalibrationDone": {
"CJCCalibrationDone": {
"message": "Calibration\ndone!"
},
"ResetOKMessage": {
@@ -30,9 +30,6 @@
"WarningThermalRunaway": {
"message": "Únik\nTepla"
},
"WarningTipShorted": {
"message": "!Tip Shorted!"
},
"SettingsCalibrationWarning": {
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
@@ -46,34 +43,25 @@
"message": "Nízke U!"
},
"UndervoltageString": {
"message": "Nízke napätie\n"
"message": "Nízke napätie"
},
"InputVoltageString": {
"message": "Vstupné U: \n"
"message": "Vstupné U: "
},
"SleepingSimpleString": {
"message": "Chrr"
},
"SleepingAdvancedString": {
"message": "Pokojový režim.\n"
"message": "Pokojový režim."
},
"SleepingTipAdvancedString": {
"message": "Hrot: \n"
"message": "Hrot:"
},
"OffString": {
"message": "Vyp"
},
"ProfilePreheatString": {
"message": "Preheat\n"
},
"ProfileCooldownString": {
"message": "Cooldown\n"
},
"DeviceFailedValidationWarning": {
"message": "Vaše zariadenie je pravdepodobne falzifikát!"
},
"TooHotToStartProfileWarning": {
"message": "Too hot to\nstart profile"
}
},
"characters": {
@@ -131,10 +119,6 @@
"displayText": "Čas vypršania\nPower Delivery",
"description": "Čas vyjednávania Power Delivery v 100ms krokoch pre kompatibilitu s niektorými QC nabíjačkami (0: vypnuté)"
},
"PDVpdo": {
"displayText": "PD\nVPDO",
"description": "Enables PPS & EPR modes"
},
"BoostTemperature": {
"displayText": "Boost\nteplota",
"description": "Cieľová teplota pre prudký náhrev (v nastavených jednotkách)"
@@ -155,62 +139,6 @@
"displayText": "Povoliť zámok\ntlačidiel",
"description": "Zamknutie tlačidiel - dlhé stlačenie oboch naraz počas spájkovania (Z=Zakázať | B=Okrem boost | P=Plné zamknutie)"
},
"ProfilePhases": {
"displayText": "Profile\nPhases",
"description": "Number of phases in profile mode"
},
"ProfilePreheatTemp": {
"displayText": "Preheat\nTemp",
"description": "Preheat to this temperature at the start of profile mode"
},
"ProfilePreheatSpeed": {
"displayText": "Preheat\nSpeed",
"description": "Preheat at this rate (degrees per second)"
},
"ProfilePhase1Temp": {
"displayText": "Phase 1\nTemp",
"description": "Target temperature for the end of this phase"
},
"ProfilePhase1Duration": {
"displayText": "Phase 1\nDuration",
"description": "Target duration of this phase (seconds)"
},
"ProfilePhase2Temp": {
"displayText": "Phase 2\nTemp",
"description": ""
},
"ProfilePhase2Duration": {
"displayText": "Phase 2\nDuration",
"description": ""
},
"ProfilePhase3Temp": {
"displayText": "Phase 3\nTemp",
"description": ""
},
"ProfilePhase3Duration": {
"displayText": "Phase 3\nDuration",
"description": ""
},
"ProfilePhase4Temp": {
"displayText": "Phase 4\nTemp",
"description": ""
},
"ProfilePhase4Duration": {
"displayText": "Phase 4\nDuration",
"description": ""
},
"ProfilePhase5Temp": {
"displayText": "Phase 5\nTemp",
"description": ""
},
"ProfilePhase5Duration": {
"displayText": "Phase 5\nDuration",
"description": ""
},
"ProfileCooldownSpeed": {
"displayText": "Cooldown\nSpeed",
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
},
"MotionSensitivity": {
"displayText": "Citlivosť\npohybu",
"description": "Citlivosť detekcie pohybu (0=Vyp | 1=Min | ... | 9=Max)"
@@ -279,10 +207,6 @@
"displayText": "Detaily počas\nspájkovania",
"description": "Zobrazenie detailov počas spájkovania"
},
"BluetoothLE": {
"displayText": "Bluetooth\n",
"description": "Enables BLE"
},
"PowerLimit": {
"displayText": "Obmedzenie\nvýkonu",
"description": "Obmedzenie výkonu podľa použitého zdroja (watt)"
@@ -304,7 +228,7 @@
"description": "Interval medzi impulzami udržujúcimi napájací zdroj zapnutý (x 2.5s)"
},
"PowerPulseDuration": {
"displayText": "Dĺžka\nimpulzu",
"displayText": "Dĺžka impulzu",
"description": "Dĺžka impulzu udržujúci napájací zdroj zapnutý (x 250ms)"
},
"SettingsReset": {
@@ -314,6 +238,10 @@
"LanguageSwitch": {
"displayText": "Jazyk:\n SK Slovenčina",
"description": ""
},
"BLEEnabled": {
"displayText": "BLE\n Enabled",
"description": ""
}
}
}

View File

@@ -1,9 +1,9 @@
{
"languageCode": "SL",
"languageLocalName": "Slovenščina",
"tempUnitFahrenheit": false,
"tempUnitFahrenheit": true,
"messagesWarn": {
"CalibrationDone": {
"CJCCalibrationDone": {
"message": "Calibration\ndone!"
},
"ResetOKMessage": {
@@ -30,9 +30,6 @@
"WarningThermalRunaway": {
"message": "Thermal\nRunaway"
},
"WarningTipShorted": {
"message": "!Tip Shorted!"
},
"SettingsCalibrationWarning": {
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
@@ -46,34 +43,25 @@
"message": "NIZKA U"
},
"UndervoltageString": {
"message": "Nizka napetost\n"
"message": "Nizka napetost"
},
"InputVoltageString": {
"message": "Vhodna U: \n"
"message": "Vhodna U: "
},
"SleepingSimpleString": {
"message": "Zzzz"
},
"SleepingAdvancedString": {
"message": "Spim...\n"
"message": "Spim..."
},
"SleepingTipAdvancedString": {
"message": "Konica \n"
"message": "Konica"
},
"OffString": {
"message": "Off"
},
"ProfilePreheatString": {
"message": "Preheat\n"
},
"ProfileCooldownString": {
"message": "Cooldown\n"
},
"DeviceFailedValidationWarning": {
"message": "Your device is most likely a counterfeit!"
},
"TooHotToStartProfileWarning": {
"message": "Too hot to\nstart profile"
}
},
"characters": {
@@ -131,10 +119,6 @@
"displayText": "PD\ntimeout",
"description": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers"
},
"PDVpdo": {
"displayText": "PD\nVPDO",
"description": "Enables PPS & EPR modes"
},
"BoostTemperature": {
"displayText": "Pospešena\ntemp.",
"description": "Temperatura v pospešenem načinu"
@@ -155,62 +139,6 @@
"displayText": "Omogoči\nzaklep gumbov",
"description": "Za zaklep med spajkanjem drži oba gumba (O=onemogoči | L=le pospešeno | P=polno)"
},
"ProfilePhases": {
"displayText": "Profile\nPhases",
"description": "Number of phases in profile mode"
},
"ProfilePreheatTemp": {
"displayText": "Preheat\nTemp",
"description": "Preheat to this temperature at the start of profile mode"
},
"ProfilePreheatSpeed": {
"displayText": "Preheat\nSpeed",
"description": "Preheat at this rate (degrees per second)"
},
"ProfilePhase1Temp": {
"displayText": "Phase 1\nTemp",
"description": "Target temperature for the end of this phase"
},
"ProfilePhase1Duration": {
"displayText": "Phase 1\nDuration",
"description": "Target duration of this phase (seconds)"
},
"ProfilePhase2Temp": {
"displayText": "Phase 2\nTemp",
"description": ""
},
"ProfilePhase2Duration": {
"displayText": "Phase 2\nDuration",
"description": ""
},
"ProfilePhase3Temp": {
"displayText": "Phase 3\nTemp",
"description": ""
},
"ProfilePhase3Duration": {
"displayText": "Phase 3\nDuration",
"description": ""
},
"ProfilePhase4Temp": {
"displayText": "Phase 4\nTemp",
"description": ""
},
"ProfilePhase4Duration": {
"displayText": "Phase 4\nDuration",
"description": ""
},
"ProfilePhase5Temp": {
"displayText": "Phase 5\nTemp",
"description": ""
},
"ProfilePhase5Duration": {
"displayText": "Phase 5\nDuration",
"description": ""
},
"ProfileCooldownSpeed": {
"displayText": "Cooldown\nSpeed",
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
},
"MotionSensitivity": {
"displayText": "Občutljivost\npremikanja",
"description": "0=izklopljeno | 1=najmanjša | ... | 9=največja"
@@ -279,10 +207,6 @@
"displayText": "Več info na\nzaslonu spaj.",
"description": "Prikaže več informacij z manjšo pisavo na zaslonu med spajkanjem."
},
"BluetoothLE": {
"displayText": "Bluetooth\n",
"description": "Enables BLE"
},
"PowerLimit": {
"displayText": "Meja\nmoči",
"description": "Največja dovoljena moč v vatih [W]"
@@ -314,6 +238,10 @@
"LanguageSwitch": {
"displayText": "Jezik:\n SL Slovenščina",
"description": ""
},
"BLEEnabled": {
"displayText": "BLE\n Enabled",
"description": ""
}
}
}

View File

@@ -1,9 +1,9 @@
{
"languageCode": "SR_CYRL",
"languageLocalName": "Српски",
"tempUnitFahrenheit": false,
"tempUnitFahrenheit": true,
"messagesWarn": {
"CalibrationDone": {
"CJCCalibrationDone": {
"message": "Calibration\ndone!"
},
"ResetOKMessage": {
@@ -30,9 +30,6 @@
"WarningThermalRunaway": {
"message": "Thermal\nRunaway"
},
"WarningTipShorted": {
"message": "!Tip Shorted!"
},
"SettingsCalibrationWarning": {
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
@@ -46,34 +43,25 @@
"message": "НИЗ.НАП."
},
"UndervoltageString": {
"message": "ПРЕНИЗАК НАПОН\n"
"message": "ПРЕНИЗАК НАПОН"
},
"InputVoltageString": {
"message": "Ул. напон: \n"
"message": "Ул. напон: "
},
"SleepingSimpleString": {
"message": "Сан"
},
"SleepingAdvancedString": {
"message": "Спавање...\n"
"message": "Спавање..."
},
"SleepingTipAdvancedString": {
"message": "Врх: \n"
"message": "Врх:"
},
"OffString": {
"message": "Иск"
},
"ProfilePreheatString": {
"message": "Preheat\n"
},
"ProfileCooldownString": {
"message": "Cooldown\n"
},
"DeviceFailedValidationWarning": {
"message": "Your device is most likely a counterfeit!"
},
"TooHotToStartProfileWarning": {
"message": "Too hot to\nstart profile"
}
},
"characters": {
@@ -131,10 +119,6 @@
"displayText": "PD\ntimeout",
"description": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers"
},
"PDVpdo": {
"displayText": "PD\nVPDO",
"description": "Enables PPS & EPR modes"
},
"BoostTemperature": {
"displayText": "Темп.\nпојачања",
"description": "Температура врха лемилице у току појачања."
@@ -155,62 +139,6 @@
"displayText": "Allow locking\nbuttons",
"description": "While soldering, hold down both buttons to toggle locking them (D=disable | B=boost mode only | F=full locking)"
},
"ProfilePhases": {
"displayText": "Profile\nPhases",
"description": "Number of phases in profile mode"
},
"ProfilePreheatTemp": {
"displayText": "Preheat\nTemp",
"description": "Preheat to this temperature at the start of profile mode"
},
"ProfilePreheatSpeed": {
"displayText": "Preheat\nSpeed",
"description": "Preheat at this rate (degrees per second)"
},
"ProfilePhase1Temp": {
"displayText": "Phase 1\nTemp",
"description": "Target temperature for the end of this phase"
},
"ProfilePhase1Duration": {
"displayText": "Phase 1\nDuration",
"description": "Target duration of this phase (seconds)"
},
"ProfilePhase2Temp": {
"displayText": "Phase 2\nTemp",
"description": ""
},
"ProfilePhase2Duration": {
"displayText": "Phase 2\nDuration",
"description": ""
},
"ProfilePhase3Temp": {
"displayText": "Phase 3\nTemp",
"description": ""
},
"ProfilePhase3Duration": {
"displayText": "Phase 3\nDuration",
"description": ""
},
"ProfilePhase4Temp": {
"displayText": "Phase 4\nTemp",
"description": ""
},
"ProfilePhase4Duration": {
"displayText": "Phase 4\nDuration",
"description": ""
},
"ProfilePhase5Temp": {
"displayText": "Phase 5\nTemp",
"description": ""
},
"ProfilePhase5Duration": {
"displayText": "Phase 5\nDuration",
"description": ""
},
"ProfileCooldownSpeed": {
"displayText": "Cooldown\nSpeed",
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
},
"MotionSensitivity": {
"displayText": "Осетљивост\nна покрет",
"description": "Осетљивост сензора покрета. (0=искључено | 1=најмање осетљиво | ... | 9=најосетљивије)"
@@ -279,13 +207,9 @@
"displayText": "Детаљи током\nлемљења",
"description": "Приказивање детаљних информација на екрану током лемљења."
},
"BluetoothLE": {
"displayText": "Bluetooth\n",
"description": "Enables BLE"
},
"PowerLimit": {
"displayText": "Power\nlimit",
"description": "Average maximum power the iron can use (W=watt)"
"description": "Maximum power the iron can use (W=watt)"
},
"CalibrateCJC": {
"displayText": "Calibrate CJC\nat next boot",
@@ -314,6 +238,10 @@
"LanguageSwitch": {
"displayText": "Jезик:\n SR Српски",
"description": ""
},
"BLEEnabled": {
"displayText": "BLE\n Enabled",
"description": ""
}
}
}

View File

@@ -1,9 +1,9 @@
{
"languageCode": "SR_LATN",
"languageLocalName": "Srpski",
"tempUnitFahrenheit": false,
"tempUnitFahrenheit": true,
"messagesWarn": {
"CalibrationDone": {
"CJCCalibrationDone": {
"message": "Calibration\ndone!"
},
"ResetOKMessage": {
@@ -30,9 +30,6 @@
"WarningThermalRunaway": {
"message": "Thermal\nRunaway"
},
"WarningTipShorted": {
"message": "!Tip Shorted!"
},
"SettingsCalibrationWarning": {
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
@@ -46,34 +43,25 @@
"message": "NIZ.NAP."
},
"UndervoltageString": {
"message": "PRENIZAK NAPON\n"
"message": "PRENIZAK NAPON"
},
"InputVoltageString": {
"message": "Ul. napon: \n"
"message": "Ul. napon: "
},
"SleepingSimpleString": {
"message": "Zzz"
},
"SleepingAdvancedString": {
"message": "Spavanje...\n"
"message": "Spavanje..."
},
"SleepingTipAdvancedString": {
"message": "Vrh: \n"
"message": "Vrh:"
},
"OffString": {
"message": "Isk"
},
"ProfilePreheatString": {
"message": "Preheat\n"
},
"ProfileCooldownString": {
"message": "Cooldown\n"
},
"DeviceFailedValidationWarning": {
"message": "Your device is most likely a counterfeit!"
},
"TooHotToStartProfileWarning": {
"message": "Too hot to\nstart profile"
}
},
"characters": {
@@ -131,10 +119,6 @@
"displayText": "PD\ntimeout",
"description": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers"
},
"PDVpdo": {
"displayText": "PD\nVPDO",
"description": "Enables PPS & EPR modes"
},
"BoostTemperature": {
"displayText": "Temp.\npojačanja",
"description": "Temperatura vrha lemilice u toku pojačanja."
@@ -155,62 +139,6 @@
"displayText": "Allow locking\nbuttons",
"description": "While soldering, hold down both buttons to toggle locking them (D=disable | B=boost mode only | F=full locking)"
},
"ProfilePhases": {
"displayText": "Profile\nPhases",
"description": "Number of phases in profile mode"
},
"ProfilePreheatTemp": {
"displayText": "Preheat\nTemp",
"description": "Preheat to this temperature at the start of profile mode"
},
"ProfilePreheatSpeed": {
"displayText": "Preheat\nSpeed",
"description": "Preheat at this rate (degrees per second)"
},
"ProfilePhase1Temp": {
"displayText": "Phase 1\nTemp",
"description": "Target temperature for the end of this phase"
},
"ProfilePhase1Duration": {
"displayText": "Phase 1\nDuration",
"description": "Target duration of this phase (seconds)"
},
"ProfilePhase2Temp": {
"displayText": "Phase 2\nTemp",
"description": ""
},
"ProfilePhase2Duration": {
"displayText": "Phase 2\nDuration",
"description": ""
},
"ProfilePhase3Temp": {
"displayText": "Phase 3\nTemp",
"description": ""
},
"ProfilePhase3Duration": {
"displayText": "Phase 3\nDuration",
"description": ""
},
"ProfilePhase4Temp": {
"displayText": "Phase 4\nTemp",
"description": ""
},
"ProfilePhase4Duration": {
"displayText": "Phase 4\nDuration",
"description": ""
},
"ProfilePhase5Temp": {
"displayText": "Phase 5\nTemp",
"description": ""
},
"ProfilePhase5Duration": {
"displayText": "Phase 5\nDuration",
"description": ""
},
"ProfileCooldownSpeed": {
"displayText": "Cooldown\nSpeed",
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
},
"MotionSensitivity": {
"displayText": "Osetljivost\nna pokret",
"description": "Osetljivost senzora pokreta. (0=isključeno | 1=najmanje osetljivo | ... | 9=najosetljivije)"
@@ -279,13 +207,9 @@
"displayText": "Detalji tokom\nlemljenja",
"description": "Prikazivanje detaljnih informacija na ekranu tokom lemljenja."
},
"BluetoothLE": {
"displayText": "Bluetooth\n",
"description": "Enables BLE"
},
"PowerLimit": {
"displayText": "Power\nlimit",
"description": "Average maximum power the iron can use (W=watt)"
"description": "Maximum power the iron can use (W=watt)"
},
"CalibrateCJC": {
"displayText": "Calibrate CJC\nat next boot",
@@ -314,6 +238,10 @@
"LanguageSwitch": {
"displayText": "Jezik:\n SR Srpski",
"description": ""
},
"BLEEnabled": {
"displayText": "BLE\n Enabled",
"description": ""
}
}
}

View File

@@ -1,9 +1,9 @@
{
"languageCode": "SV",
"languageLocalName": "Svenska",
"tempUnitFahrenheit": false,
"tempUnitFahrenheit": true,
"messagesWarn": {
"CalibrationDone": {
"CJCCalibrationDone": {
"message": "Calibration\ndone!"
},
"ResetOKMessage": {
@@ -30,9 +30,6 @@
"WarningThermalRunaway": {
"message": "Thermal\nRunaway"
},
"WarningTipShorted": {
"message": "!Tip Shorted!"
},
"SettingsCalibrationWarning": {
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
@@ -46,34 +43,25 @@
"message": "DC LÅG"
},
"UndervoltageString": {
"message": "Underspänning\n"
"message": "Underspänning"
},
"InputVoltageString": {
"message": "Inspän. V: \n"
"message": "Inspän. V: "
},
"SleepingSimpleString": {
"message": "Zzzz"
},
"SleepingAdvancedString": {
"message": "Viloläge...\n"
"message": "Viloläge..."
},
"SleepingTipAdvancedString": {
"message": "Spets: \n"
"message": "Spets:"
},
"OffString": {
"message": "Av"
},
"ProfilePreheatString": {
"message": "Preheat\n"
},
"ProfileCooldownString": {
"message": "Cooldown\n"
},
"DeviceFailedValidationWarning": {
"message": "Your device is most likely a counterfeit!"
},
"TooHotToStartProfileWarning": {
"message": "Too hot to\nstart profile"
}
},
"characters": {
@@ -131,10 +119,6 @@
"displayText": "PD\ntimeout",
"description": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers"
},
"PDVpdo": {
"displayText": "PD\nVPDO",
"description": "Enables PPS & EPR modes"
},
"BoostTemperature": {
"displayText": "Turbo-\ntemp",
"description": "Temperatur i \"turbo-läge\""
@@ -155,62 +139,6 @@
"displayText": "Tillåt lås\nvia knappar",
"description": "Vid lödning, håll nere bägge knappar för att slå på lås (A=Av | T=Bara turbo | F=Fullt lås)"
},
"ProfilePhases": {
"displayText": "Profile\nPhases",
"description": "Number of phases in profile mode"
},
"ProfilePreheatTemp": {
"displayText": "Preheat\nTemp",
"description": "Preheat to this temperature at the start of profile mode"
},
"ProfilePreheatSpeed": {
"displayText": "Preheat\nSpeed",
"description": "Preheat at this rate (degrees per second)"
},
"ProfilePhase1Temp": {
"displayText": "Phase 1\nTemp",
"description": "Target temperature for the end of this phase"
},
"ProfilePhase1Duration": {
"displayText": "Phase 1\nDuration",
"description": "Target duration of this phase (seconds)"
},
"ProfilePhase2Temp": {
"displayText": "Phase 2\nTemp",
"description": ""
},
"ProfilePhase2Duration": {
"displayText": "Phase 2\nDuration",
"description": ""
},
"ProfilePhase3Temp": {
"displayText": "Phase 3\nTemp",
"description": ""
},
"ProfilePhase3Duration": {
"displayText": "Phase 3\nDuration",
"description": ""
},
"ProfilePhase4Temp": {
"displayText": "Phase 4\nTemp",
"description": ""
},
"ProfilePhase4Duration": {
"displayText": "Phase 4\nDuration",
"description": ""
},
"ProfilePhase5Temp": {
"displayText": "Phase 5\nTemp",
"description": ""
},
"ProfilePhase5Duration": {
"displayText": "Phase 5\nDuration",
"description": ""
},
"ProfileCooldownSpeed": {
"displayText": "Cooldown\nSpeed",
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
},
"MotionSensitivity": {
"displayText": "Rörelse-\nkänslighet",
"description": "Rörelsekänslighet (0=Av | 1=minst känslig | ... | 9=mest känslig)"
@@ -279,10 +207,6 @@
"displayText": "Detaljerad\nlödng.skärm",
"description": "Visa detaljerad information vid lödning"
},
"BluetoothLE": {
"displayText": "Bluetooth\n",
"description": "Enables BLE"
},
"PowerLimit": {
"displayText": "Max-\neffekt",
"description": "Maximal effekt som enheten kan använda (Watt)"
@@ -314,6 +238,10 @@
"LanguageSwitch": {
"displayText": "Språk:\n SV Svenska",
"description": ""
},
"BLEEnabled": {
"displayText": "BLE\n Enabled",
"description": ""
}
}
}

View File

@@ -1,9 +1,9 @@
{
"languageCode": "TR",
"languageLocalName": "Türkçe",
"tempUnitFahrenheit": false,
"tempUnitFahrenheit": true,
"messagesWarn": {
"CalibrationDone": {
"CJCCalibrationDone": {
"message": "Calibration\ndone!"
},
"ResetOKMessage": {
@@ -30,9 +30,6 @@
"WarningThermalRunaway": {
"message": "Thermal\nRunaway"
},
"WarningTipShorted": {
"message": "!Tip Shorted!"
},
"SettingsCalibrationWarning": {
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
@@ -46,34 +43,25 @@
"message": "Güç Az"
},
"UndervoltageString": {
"message": "Düşük Voltaj\n"
"message": "Düşük Voltaj"
},
"InputVoltageString": {
"message": "Giriş V: \n"
"message": "Giriş V: "
},
"SleepingSimpleString": {
"message": "Zzzz"
},
"SleepingAdvancedString": {
"message": "Bekleme Modu...\n"
"message": "Bekleme Modu ..."
},
"SleepingTipAdvancedString": {
"message": "Uç: \n"
"message": "Uç:"
},
"OffString": {
"message": "Kapalı"
},
"ProfilePreheatString": {
"message": "Preheat\n"
},
"ProfileCooldownString": {
"message": "Cooldown\n"
},
"DeviceFailedValidationWarning": {
"message": "Your device is most likely a counterfeit!"
},
"TooHotToStartProfileWarning": {
"message": "Too hot to\nstart profile"
}
},
"characters": {
@@ -116,7 +104,7 @@
},
"menuOptions": {
"DCInCutoff": {
"displayText": "GÇKYN\n",
"displayText": "GÇKYN",
"description": "\"Güç Kaynağı\". En düşük çalışma voltajını ayarlar. (DC 10V) (S 3.3V hücre başına)"
},
"MinVolCell": {
@@ -131,16 +119,12 @@
"displayText": "PD\ntimeout",
"description": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers"
},
"PDVpdo": {
"displayText": "PD\nVPDO",
"description": "Enables PPS & EPR modes"
},
"BoostTemperature": {
"displayText": "YKSC\n",
"displayText": "YKSC",
"description": "Yüksek Performans Modu Sıcaklığı"
},
"AutoStart": {
"displayText": "OTOBAŞ\n",
"displayText": "OTOBAŞ",
"description": "Güç verildiğinde otomatik olarak lehimleme modunda başlat. (K=Kapalı | L=Lehimleme Modu | U=Uyku Modu | S=Uyku Modu Oda Sıcaklığı)"
},
"TempChangeShortStep": {
@@ -155,76 +139,20 @@
"displayText": "Allow locking\nbuttons",
"description": "While soldering, hold down both buttons to toggle locking them (K=Kapalı | B=boost mode only | F=full locking)"
},
"ProfilePhases": {
"displayText": "Profile\nPhases",
"description": "Number of phases in profile mode"
},
"ProfilePreheatTemp": {
"displayText": "Preheat\nTemp",
"description": "Preheat to this temperature at the start of profile mode"
},
"ProfilePreheatSpeed": {
"displayText": "Preheat\nSpeed",
"description": "Preheat at this rate (degrees per second)"
},
"ProfilePhase1Temp": {
"displayText": "Phase 1\nTemp",
"description": "Target temperature for the end of this phase"
},
"ProfilePhase1Duration": {
"displayText": "Phase 1\nDuration",
"description": "Target duration of this phase (seconds)"
},
"ProfilePhase2Temp": {
"displayText": "Phase 2\nTemp",
"description": ""
},
"ProfilePhase2Duration": {
"displayText": "Phase 2\nDuration",
"description": ""
},
"ProfilePhase3Temp": {
"displayText": "Phase 3\nTemp",
"description": ""
},
"ProfilePhase3Duration": {
"displayText": "Phase 3\nDuration",
"description": ""
},
"ProfilePhase4Temp": {
"displayText": "Phase 4\nTemp",
"description": ""
},
"ProfilePhase4Duration": {
"displayText": "Phase 4\nDuration",
"description": ""
},
"ProfilePhase5Temp": {
"displayText": "Phase 5\nTemp",
"description": ""
},
"ProfilePhase5Duration": {
"displayText": "Phase 5\nDuration",
"description": ""
},
"ProfileCooldownSpeed": {
"displayText": "Cooldown\nSpeed",
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
},
"MotionSensitivity": {
"displayText": "HARHAS\n",
"displayText": "HARHAS",
"description": "Hareket Hassasiyeti (0=Kapalı | 1=En az duyarlı | ... | 9=En duyarlı)"
},
"SleepTemperature": {
"displayText": "BKSC\n",
"displayText": "BKSC",
"description": "Bekleme Modu Sıcaklığı (C)"
},
"SleepTimeout": {
"displayText": "BMZA\n",
"displayText": "BMZA",
"description": "Bekleme Modu Zaman Aşımı (Dakika | Saniye)"
},
"ShutdownTimeout": {
"displayText": "KPTZA\n",
"displayText": "KPTZA",
"description": "Kapatma Zaman Aşımı (Dakika)"
},
"HallEffSensitivity": {
@@ -232,19 +160,19 @@
"description": "Sensitivity to magnets (0=Kapalı | 1=En az duyarlı | ... | 9=En duyarlı)"
},
"TemperatureUnit": {
"displayText": "SCKBRM\n",
"displayText": "SCKBRM",
"description": "Sıcaklık Birimi (C=Celsius | F=Fahrenheit)"
},
"DisplayRotation": {
"displayText": "GRNYÖN\n",
"displayText": "GRNYÖN",
"description": "Görüntü Yönlendirme (R=Sağlak | L=Solak | O=Otomatik)"
},
"CooldownBlink": {
"displayText": "SĞGÖST\n",
"displayText": "SĞGÖST",
"description": "Soğutma ekranında uç hala sıcakken derece gösterilsin."
},
"ScrollingSpeed": {
"displayText": "YZKYHZ\n",
"displayText": "YZKYHZ",
"description": "Bu yazının kayma hızı (Y=Yavaş | H=Hızlı)"
},
"ReverseButtonTempChange": {
@@ -272,17 +200,13 @@
"description": "Set boot logo duration (s=seconds)"
},
"AdvancedIdle": {
"displayText": "AYRBİL\n",
"displayText": "AYRBİL",
"description": "Boş ekranda ayrıntılı bilgileri daha küçük bir yazı tipi ile göster."
},
"AdvancedSoldering": {
"displayText": "GELLHM\n",
"displayText": "GELLHM",
"description": "\"Gelişmiş Lehimleme\" Lehimleme yaparken detaylı bilgi göster"
},
"BluetoothLE": {
"displayText": "Bluetooth\n",
"description": "Enables BLE"
},
"PowerLimit": {
"displayText": "Power\nlimit",
"description": "Havyanın kullanacağı en yüksek güç (W=Watts)"
@@ -292,7 +216,7 @@
"description": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
},
"VoltageCalibration": {
"displayText": "VOL KAL?\n",
"displayText": "VOL KAL?",
"description": "Voltaj Girişi Kalibrasyonu. Düğmeler ayarlar, çıkmak için uzun bas."
},
"PowerPulsePower": {
@@ -308,12 +232,16 @@
"description": "Keep-awake-pulse duration (x 250ms)"
},
"SettingsReset": {
"displayText": "SIFIRLA?\n",
"displayText": "SIFIRLA?",
"description": "Bütün ayarları sıfırlar"
},
"LanguageSwitch": {
"displayText": "Dil:\n TR Türkçe",
"description": ""
},
"BLEEnabled": {
"displayText": "BLE\n Enabled",
"description": ""
}
}
}

View File

@@ -1,9 +1,9 @@
{
"languageCode": "UK",
"languageLocalName": "Українська",
"tempUnitFahrenheit": false,
"tempUnitFahrenheit": true,
"messagesWarn": {
"CalibrationDone": {
"CJCCalibrationDone": {
"message": "КХС\nвідкалібровано!"
},
"ResetOKMessage": {
@@ -30,9 +30,6 @@
"WarningThermalRunaway": {
"message": "Некерований\nрозігрів"
},
"WarningTipShorted": {
"message": "!Tip Shorted!"
},
"SettingsCalibrationWarning": {
"message": "Під час наступного завантаження переконайтеся, що жало і ручка мають кімнатну температуру!"
},
@@ -46,34 +43,25 @@
"message": "АККУМ--"
},
"UndervoltageString": {
"message": "Низька напруга\n"
"message": "Низька напруга"
},
"InputVoltageString": {
"message": "Жив.(B): \n"
"message": "Жив.(B): "
},
"SleepingSimpleString": {
"message": "ZzZzz"
},
"SleepingAdvancedString": {
"message": "Очікування...\n"
"message": "Очікування..."
},
"SleepingTipAdvancedString": {
"message": "Жало: \n"
"message": "Жало:"
},
"OffString": {
"message": "Вимк"
},
"ProfilePreheatString": {
"message": "Попередній\nрозігрів"
},
"ProfileCooldownString": {
"message": "Охолодження\n"
},
"DeviceFailedValidationWarning": {
"message": "Вірогідно ваш пристрій підробний!"
},
"TooHotToStartProfileWarning": {
"message": "Занадто гараче для\nзміни профілів"
}
},
"characters": {
@@ -82,7 +70,7 @@
"SettingAutoChar": "A",
"SettingOffChar": "B",
"SettingSlowChar": "Н",
"SettingMediumChar": "С",
"SettingMediumChar": "M",
"SettingFastChar": "М",
"SettingStartNoneChar": "В",
"SettingStartSolderingChar": "П",
@@ -131,10 +119,6 @@
"displayText": "PD\nзатримка",
"description": "Затримка у 100мс інкрементах для PD для сумісності з деякими QC зарядними пристроями (0: вимкнено)"
},
"PDVpdo": {
"displayText": "PD\nVPDO",
"description": "Вмикає режими PPS & EPR."
},
"BoostTemperature": {
"displayText": "Темпер.\nТурбо",
"description": "Температура в \"Турбо\" режимі"
@@ -155,62 +139,6 @@
"displayText": "Дозволити\nблок. кнопок",
"description": "Під час пайки тривале натискання обох кнопок заблокує їх (В=Вимк | Т=Тільки турбо | П=Повне)"
},
"ProfilePhases": {
"displayText": "Етапи\nпрофілів",
"description": "Кількість етапів в режимі профілів"
},
"ProfilePreheatTemp": {
"displayText": "Температура\nПоп.Розігріву",
"description": "Попередньо розігріти до цієї температури на початку режимку профілів"
},
"ProfilePreheatSpeed": {
"displayText": "Швидкість\nПоп.Розігріву",
"description": "Розігрівати з такою швидкістю (градусів в секунду)"
},
"ProfilePhase1Temp": {
"displayText": "Етап 1\nТемпература",
"description": "Температура в кінці цього етапу"
},
"ProfilePhase1Duration": {
"displayText": "Етап 1\nТривалість",
"description": "Тривалість цього етапу (секунд)"
},
"ProfilePhase2Temp": {
"displayText": "Етап 2\nТемпература",
"description": ""
},
"ProfilePhase2Duration": {
"displayText": "Етап 2\nТривалість",
"description": ""
},
"ProfilePhase3Temp": {
"displayText": "Етап 3\nТемпература",
"description": ""
},
"ProfilePhase3Duration": {
"displayText": "Етап 3\nТривалість",
"description": ""
},
"ProfilePhase4Temp": {
"displayText": "Етап 4\nТемпература",
"description": ""
},
"ProfilePhase4Duration": {
"displayText": "Етап 4\nТривалість",
"description": ""
},
"ProfilePhase5Temp": {
"displayText": "Етап 5\nТемпература",
"description": ""
},
"ProfilePhase5Duration": {
"displayText": "Етап 5\nТривалість",
"description": ""
},
"ProfileCooldownSpeed": {
"displayText": "Швидкість\nОхолодження",
"description": "Швидкість охолодження в кінці режиму профілів (градусів в секунду)"
},
"MotionSensitivity": {
"displayText": "Чутливість\nсенсору руху",
"description": "Акселерометр (0=Вимк. | 1=мін. чутливості | ... | 9=макс. чутливості)"
@@ -245,7 +173,7 @@
},
"ScrollingSpeed": {
"displayText": "Швидкість\nтексту",
"description": "Швидкість прокрутки тексту (Н=Низькa | М=Максимальна)"
"description": "Швидкість прокрутки тексту (П=повільно | Ш=швидко)"
},
"ReverseButtonTempChange": {
"displayText": "Інвертувати\nкнопки +-?",
@@ -253,7 +181,7 @@
},
"AnimSpeed": {
"displayText": "Швидкість\nанімації",
"description": "Швидкість анімації іконок у головному меню (В=Вимк | Н=Низькa | С=Середня | М=Максимальна)"
"description": "Швидкість анімації іконок у головному меню (Мілісекунди) (В=Вимк | Н=Низькa | С=Середня | М=Макс)"
},
"AnimLoop": {
"displayText": "Циклічна\nанімація",
@@ -279,10 +207,6 @@
"displayText": "Детальний\nрежим пайки",
"description": "Показувати детальну інформацію при пайці."
},
"BluetoothLE": {
"displayText": "Bluetooth\n",
"description": "Увімкнути BLE"
},
"PowerLimit": {
"displayText": "Макс.\nпотуж.",
"description": "Макс. потужність, яку може використовувати паяльник (Ват)"
@@ -314,6 +238,10 @@
"LanguageSwitch": {
"displayText": "Мова:\n UK Українська",
"description": ""
},
"BLEEnabled": {
"displayText": "BLE\n Enabled",
"description": ""
}
}
}

View File

@@ -1,9 +1,9 @@
{
"languageCode": "VI",
"languageLocalName": "Tieng Viet",
"tempUnitFahrenheit": false,
"tempUnitFahrenheit": true,
"messagesWarn": {
"CalibrationDone": {
"CJCCalibrationDone": {
"message": "Calibration\ndone!"
},
"ResetOKMessage": {
@@ -30,9 +30,6 @@
"WarningThermalRunaway": {
"message": "Nhiet\nTat gia nhiet"
},
"WarningTipShorted": {
"message": "!Tip Shorted!"
},
"SettingsCalibrationWarning": {
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
@@ -46,34 +43,25 @@
"message": "DC thap"
},
"UndervoltageString": {
"message": "Đien áp thap\n"
"message": "Đien áp thap"
},
"InputVoltageString": {
"message": "Đau vào V: \n"
"message": "Đau vào V: "
},
"SleepingSimpleString": {
"message": "Zzzz"
},
"SleepingAdvancedString": {
"message": "Đang ngu...\n"
"message": "Đang ngu..."
},
"SleepingTipAdvancedString": {
"message": "Meo: \n"
"message": "Meo:"
},
"OffString": {
"message": "Tat"
},
"ProfilePreheatString": {
"message": "Preheat\n"
},
"ProfileCooldownString": {
"message": "Cooldown\n"
},
"DeviceFailedValidationWarning": {
"message": "Your device is most likely a counterfeit!"
},
"TooHotToStartProfileWarning": {
"message": "Too hot to\nstart profile"
}
},
"characters": {
@@ -131,10 +119,6 @@
"displayText": "PD\nsau",
"description": "Thoi gian cho đàm phán PD trong các buoc 100ms đe tuong thích voi mot so bo sac QC"
},
"PDVpdo": {
"displayText": "PD\nVPDO",
"description": "Enables PPS & EPR modes"
},
"BoostTemperature": {
"displayText": "Tăng\nnhiet đo",
"description": "Nhiet đo dùng trong che đo \"tăng cuong\""
@@ -155,62 +139,6 @@
"displayText": "Cho phép khóa\ncác nút",
"description": "Trong khi hàn, giu ca 2 nút đe khóa(D=tat | B=chi che đo tăng cuong | F=khóa hoàn toàn)"
},
"ProfilePhases": {
"displayText": "Profile\nPhases",
"description": "Number of phases in profile mode"
},
"ProfilePreheatTemp": {
"displayText": "Preheat\nTemp",
"description": "Preheat to this temperature at the start of profile mode"
},
"ProfilePreheatSpeed": {
"displayText": "Preheat\nSpeed",
"description": "Preheat at this rate (degrees per second)"
},
"ProfilePhase1Temp": {
"displayText": "Phase 1\nTemp",
"description": "Target temperature for the end of this phase"
},
"ProfilePhase1Duration": {
"displayText": "Phase 1\nDuration",
"description": "Target duration of this phase (seconds)"
},
"ProfilePhase2Temp": {
"displayText": "Phase 2\nTemp",
"description": ""
},
"ProfilePhase2Duration": {
"displayText": "Phase 2\nDuration",
"description": ""
},
"ProfilePhase3Temp": {
"displayText": "Phase 3\nTemp",
"description": ""
},
"ProfilePhase3Duration": {
"displayText": "Phase 3\nDuration",
"description": ""
},
"ProfilePhase4Temp": {
"displayText": "Phase 4\nTemp",
"description": ""
},
"ProfilePhase4Duration": {
"displayText": "Phase 4\nDuration",
"description": ""
},
"ProfilePhase5Temp": {
"displayText": "Phase 5\nTemp",
"description": ""
},
"ProfilePhase5Duration": {
"displayText": "Phase 5\nDuration",
"description": ""
},
"ProfileCooldownSpeed": {
"displayText": "Cooldown\nSpeed",
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
},
"MotionSensitivity": {
"displayText": "Cam bien\ncu đong",
"description": "- 0=tat | 1=đo nhay thap nhat| ... | 9=đo nhay cao nhat"
@@ -279,10 +207,6 @@
"displayText": "Chi tiet\nmàn hình hàn",
"description": "-Hien thi thông tin bang phông chu nho hon trên màn hình hàn"
},
"BluetoothLE": {
"displayText": "Bluetooth\n",
"description": "Enables BLE"
},
"PowerLimit": {
"displayText": "Công suat\ngioi han",
"description": "-Công suat toi đa mà tay hàn có the su dung (W=watt)"
@@ -314,6 +238,10 @@
"LanguageSwitch": {
"displayText": "Ngôn ngu:\n VI Tieng Viet",
"description": ""
},
"BLEEnabled": {
"displayText": "BLE\n Enabled",
"description": ""
}
}
}

View File

@@ -3,7 +3,7 @@
"languageLocalName": "廣東話 (香港)",
"tempUnitFahrenheit": true,
"messagesWarn": {
"CalibrationDone": {
"CJCCalibrationDone": {
"message": "Calibration done!"
},
"ResetOKMessage": {
@@ -30,14 +30,11 @@
"WarningThermalRunaway": {
"message": "加熱失控"
},
"WarningTipShorted": {
"message": "!Tip Shorted!"
},
"SettingsCalibrationWarning": {
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
"CJCCalibrating": {
"message": "calibrating"
"message": "calibrating\n"
},
"SettingsResetWarning": {
"message": "你係咪確定要將全部設定重設到預設值?"
@@ -58,22 +55,13 @@
"message": "Sleeping..."
},
"SleepingTipAdvancedString": {
"message": "Tip: "
"message": "Tip:"
},
"OffString": {
"message": "關"
},
"ProfilePreheatString": {
"message": "Preheat"
},
"ProfileCooldownString": {
"message": "Cooldown"
},
"DeviceFailedValidationWarning": {
"message": "依支焫雞好有可能係冒牌貨!"
},
"TooHotToStartProfileWarning": {
"message": "Too hot to start profile"
}
},
"characters": {
@@ -131,10 +119,6 @@
"displayText": "PD逾時",
"description": "設定USB PD協定交涉嘅逾時時限為兼容某啲QC電源而設 <x100ms亳秒>"
},
"PDVpdo": {
"displayText": "PD VPDO",
"description": "Enables PPS & EPR modes"
},
"BoostTemperature": {
"displayText": "增熱温度",
"description": "喺增熱模式時使用嘅温度"
@@ -155,62 +139,6 @@
"displayText": "撳掣鎖定",
"description": "喺焊接模式時,同時長撳兩粒掣啓用撳掣鎖定 <無=停用 | 增=淨係容許增熱模式 | 全=鎖定全部>"
},
"ProfilePhases": {
"displayText": "Profile Phases",
"description": "Number of phases in profile mode"
},
"ProfilePreheatTemp": {
"displayText": "Preheat Temp",
"description": "Preheat to this temperature at the start of profile mode"
},
"ProfilePreheatSpeed": {
"displayText": "Preheat Speed",
"description": "Preheat at this rate (degrees per second)"
},
"ProfilePhase1Temp": {
"displayText": "Phase 1 Temp",
"description": "Target temperature for the end of this phase"
},
"ProfilePhase1Duration": {
"displayText": "Phase 1 Duration",
"description": "Target duration of this phase (seconds)"
},
"ProfilePhase2Temp": {
"displayText": "Phase 2 Temp",
"description": ""
},
"ProfilePhase2Duration": {
"displayText": "Phase 2 Duration",
"description": ""
},
"ProfilePhase3Temp": {
"displayText": "Phase 3 Temp",
"description": ""
},
"ProfilePhase3Duration": {
"displayText": "Phase 3 Duration",
"description": ""
},
"ProfilePhase4Temp": {
"displayText": "Phase 4 Temp",
"description": ""
},
"ProfilePhase4Duration": {
"displayText": "Phase 4 Duration",
"description": ""
},
"ProfilePhase5Temp": {
"displayText": "Phase 5 Temp",
"description": ""
},
"ProfilePhase5Duration": {
"displayText": "Phase 5 Duration",
"description": ""
},
"ProfileCooldownSpeed": {
"displayText": "Cooldown Speed",
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
},
"MotionSensitivity": {
"displayText": "動作敏感度",
"description": "0=停用 | 1=最低敏感度 | ... | 9=最高敏感度"
@@ -279,10 +207,6 @@
"displayText": "詳細焊接畫面",
"description": "喺焊接模式畫面以英文細字顯示詳細嘅資料"
},
"BluetoothLE": {
"displayText": "Bluetooth",
"description": "Enables BLE"
},
"PowerLimit": {
"displayText": "功率限制",
"description": "限制焫雞可用嘅最大功率 <W=watt>"
@@ -314,6 +238,10 @@
"LanguageSwitch": {
"displayText": "語言: 廣東話",
"description": ""
},
"BLEEnabled": {
"displayText": "BLE\n Enabled",
"description": ""
}
}
}

View File

@@ -3,7 +3,7 @@
"languageLocalName": "简体中文",
"tempUnitFahrenheit": true,
"messagesWarn": {
"CalibrationDone": {
"CJCCalibrationDone": {
"message": "Calibration done!"
},
"ResetOKMessage": {
@@ -30,14 +30,11 @@
"WarningThermalRunaway": {
"message": "加热失控"
},
"WarningTipShorted": {
"message": "!Tip Shorted!"
},
"SettingsCalibrationWarning": {
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
"CJCCalibrating": {
"message": "calibrating"
"message": "calibrating\n"
},
"SettingsResetWarning": {
"message": "你是否确定要将全部设定重置为默认值?"
@@ -58,22 +55,13 @@
"message": "Zzzz..."
},
"SleepingTipAdvancedString": {
"message": "<--- "
"message": "--->"
},
"OffString": {
"message": "关"
},
"ProfilePreheatString": {
"message": "Preheat"
},
"ProfileCooldownString": {
"message": "Cooldown"
},
"DeviceFailedValidationWarning": {
"message": "这支电烙铁很有可能是冒牌货!"
},
"TooHotToStartProfileWarning": {
"message": "Too hot to start profile"
}
},
"characters": {
@@ -131,10 +119,6 @@
"displayText": "PD超时",
"description": "设定USB-PD协议交涉的超时时限为兼容某些QC电源而设 <x100ms亳秒>"
},
"PDVpdo": {
"displayText": "PD VPDO",
"description": "Enables PPS & EPR modes"
},
"BoostTemperature": {
"displayText": "增热温度",
"description": "增热模式时使用的温度"
@@ -155,62 +139,6 @@
"displayText": "按键锁定",
"description": "焊接模式时,同时长按两个按键启用按键锁定 <无=禁用 | 增=只容许增热模式 | 全=完全锁定>"
},
"ProfilePhases": {
"displayText": "Profile Phases",
"description": "Number of phases in profile mode"
},
"ProfilePreheatTemp": {
"displayText": "Preheat Temp",
"description": "Preheat to this temperature at the start of profile mode"
},
"ProfilePreheatSpeed": {
"displayText": "Preheat Speed",
"description": "Preheat at this rate (degrees per second)"
},
"ProfilePhase1Temp": {
"displayText": "Phase 1 Temp",
"description": "Target temperature for the end of this phase"
},
"ProfilePhase1Duration": {
"displayText": "Phase 1 Duration",
"description": "Target duration of this phase (seconds)"
},
"ProfilePhase2Temp": {
"displayText": "Phase 2 Temp",
"description": ""
},
"ProfilePhase2Duration": {
"displayText": "Phase 2 Duration",
"description": ""
},
"ProfilePhase3Temp": {
"displayText": "Phase 3 Temp",
"description": ""
},
"ProfilePhase3Duration": {
"displayText": "Phase 3 Duration",
"description": ""
},
"ProfilePhase4Temp": {
"displayText": "Phase 4 Temp",
"description": ""
},
"ProfilePhase4Duration": {
"displayText": "Phase 4 Duration",
"description": ""
},
"ProfilePhase5Temp": {
"displayText": "Phase 5 Temp",
"description": ""
},
"ProfilePhase5Duration": {
"displayText": "Phase 5 Duration",
"description": ""
},
"ProfileCooldownSpeed": {
"displayText": "Cooldown Speed",
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
},
"MotionSensitivity": {
"displayText": "动作灵敏度",
"description": "0=禁用 | 1=最低灵敏度 | ... | 9=最高灵敏度"
@@ -279,10 +207,6 @@
"displayText": "焊接画面详情",
"description": "焊接模式画面以英语小字体显示详请"
},
"BluetoothLE": {
"displayText": "Bluetooth",
"description": "Enables BLE"
},
"PowerLimit": {
"displayText": "功率限制",
"description": "限制烙铁可用的最大功率 <W=瓦特>"
@@ -314,6 +238,10 @@
"LanguageSwitch": {
"displayText": "语言:简体中文",
"description": ""
},
"BLEEnabled": {
"displayText": "BLE\n Enabled",
"description": ""
}
}
}
}

View File

@@ -3,7 +3,7 @@
"languageLocalName": "正體中文",
"tempUnitFahrenheit": true,
"messagesWarn": {
"CalibrationDone": {
"CJCCalibrationDone": {
"message": "Calibration done!"
},
"ResetOKMessage": {
@@ -30,14 +30,11 @@
"WarningThermalRunaway": {
"message": "加熱失控"
},
"WarningTipShorted": {
"message": "!Tip Shorted!"
},
"SettingsCalibrationWarning": {
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
"CJCCalibrating": {
"message": "calibrating"
"message": "calibrating\n"
},
"SettingsResetWarning": {
"message": "你是否確定要將全部設定重設到預設值?"
@@ -58,22 +55,13 @@
"message": "Sleeping..."
},
"SleepingTipAdvancedString": {
"message": "Tip: "
"message": "Tip:"
},
"OffString": {
"message": "關"
},
"ProfilePreheatString": {
"message": "Preheat"
},
"ProfileCooldownString": {
"message": "Cooldown"
},
"DeviceFailedValidationWarning": {
"message": "這支電烙鐵很有可能是冒牌貨!"
},
"TooHotToStartProfileWarning": {
"message": "Too hot to start profile"
}
},
"characters": {
@@ -131,10 +119,6 @@
"displayText": "PD逾時",
"description": "設定USB PD協定交涉的逾時時限為兼容某些QC電源而設 <x100ms亳秒>"
},
"PDVpdo": {
"displayText": "PD VPDO",
"description": "Enables PPS & EPR modes"
},
"BoostTemperature": {
"displayText": "增熱溫度",
"description": "於增熱模式時使用的溫度"
@@ -155,62 +139,6 @@
"displayText": "按鍵鎖定",
"description": "於焊接模式時,同時長按兩個按鍵啟用按鍵鎖定 <無=停用 | 增=只容許增熱模式 | 全=鎖定全部>"
},
"ProfilePhases": {
"displayText": "Profile Phases",
"description": "Number of phases in profile mode"
},
"ProfilePreheatTemp": {
"displayText": "Preheat Temp",
"description": "Preheat to this temperature at the start of profile mode"
},
"ProfilePreheatSpeed": {
"displayText": "Preheat Speed",
"description": "Preheat at this rate (degrees per second)"
},
"ProfilePhase1Temp": {
"displayText": "Phase 1 Temp",
"description": "Target temperature for the end of this phase"
},
"ProfilePhase1Duration": {
"displayText": "Phase 1 Duration",
"description": "Target duration of this phase (seconds)"
},
"ProfilePhase2Temp": {
"displayText": "Phase 2 Temp",
"description": ""
},
"ProfilePhase2Duration": {
"displayText": "Phase 2 Duration",
"description": ""
},
"ProfilePhase3Temp": {
"displayText": "Phase 3 Temp",
"description": ""
},
"ProfilePhase3Duration": {
"displayText": "Phase 3 Duration",
"description": ""
},
"ProfilePhase4Temp": {
"displayText": "Phase 4 Temp",
"description": ""
},
"ProfilePhase4Duration": {
"displayText": "Phase 4 Duration",
"description": ""
},
"ProfilePhase5Temp": {
"displayText": "Phase 5 Temp",
"description": ""
},
"ProfilePhase5Duration": {
"displayText": "Phase 5 Duration",
"description": ""
},
"ProfileCooldownSpeed": {
"displayText": "Cooldown Speed",
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
},
"MotionSensitivity": {
"displayText": "動作敏感度",
"description": "0=停用 | 1=最低敏感度 | ... | 9=最高敏感度"
@@ -279,10 +207,6 @@
"displayText": "詳細焊接畫面",
"description": "於焊接模式畫面以英文小字型顯示詳細資料"
},
"BluetoothLE": {
"displayText": "Bluetooth",
"description": "Enables BLE"
},
"PowerLimit": {
"displayText": "功率限制",
"description": "限制烙鐵可用的最大功率 <W=watt瓦特>"
@@ -314,6 +238,10 @@
"LanguageSwitch": {
"displayText": "語言:正體中文",
"description": ""
},
"BLEEnabled": {
"displayText": "BLE\n Enabled",
"description": ""
}
}
}
}

View File

@@ -1,7 +1,7 @@
{
"messagesWarn": [{
"id": "CalibrationDone",
"description": "Confirmation message indicating calibration is complete."
"id": "CJCCalibrationDone",
"description": "Confirmation message indicating CJC calibration is complete."
},
{
"id": "ResetOKMessage",
@@ -17,9 +17,6 @@
},
{
"id": "NoPowerDeliveryMessage",
"include": [
"POW_PD"
],
"description": "The IC required for USB-PD could not be communicated with. This is an error warning that USB-PD WILL NOT FUNCTION. Generally indicative of either a hardware or software issues."
},
{
@@ -37,12 +34,7 @@
{
"id": "WarningThermalRunaway",
"description": "Warning text shown when the software has disabled the heater as a safety precaution as the temperature reading didn't react as expected."
},
{
"id": "WarningTipShorted",
"description": "Warning text shown when the software has detected that the users tip is likely shorted."
},
{
}, {
"id": "SettingsCalibrationWarning",
"description": "Confirmation message shown before performing an offset calibration. Should warn the user to make sure tip and handle are at the same temperature."
},
@@ -57,66 +49,32 @@
{
"id": "UVLOWarningString",
"maxLen": 8,
"include": [
"POW_DC"
],
"description": "Warning text shown when the unit turns off due to undervoltage in simple mode."
},
{
"id": "UndervoltageString",
"maxLen": 15,
"include": [
"POW_DC"
],
"description": "Warning text shown when the unit turns off due to undervoltage in advanced mode."
},
{
"id": "InputVoltageString",
"maxLen": 11,
"note": "Preferably end with a space",
"include": [
"POW_DC"
],
"description": "Prefix text for 'Input Voltage' shown before showing the input voltage reading."
},
{
"id": "ProfilePreheatString",
"maxLen": 9,
"include": [
"PROFILE_SUPPORT"
],
"description": "Shown in profile mode while preheating"
},
{
"id": "ProfileCooldownString",
"maxLen": 9,
"include": [
"PROFILE_SUPPORT"
],
"description": "Shown in profile mode while cooling down"
},
{
"id": "SleepingSimpleString",
"maxLen": 4,
"exclude": [
"NO_SLEEP_MODE"
],
"description": "The text shown to indicate the unit is in sleep mode when the advanced view is NOT on."
},
{
"id": "SleepingAdvancedString",
"maxLen": 15,
"exclude": [
"NO_SLEEP_MODE"
],
"description": "The text shown to indicate the unit is in sleep mode when the advanced view is turned on."
},
{
"id": "SleepingTipAdvancedString",
"maxLen": 6,
"exclude": [
"NO_SLEEP_MODE"
],
"description": "The prefix text shown before tip temperature when the unit is sleeping with advanced view on."
},
{
@@ -128,18 +86,9 @@
"id": "DeviceFailedValidationWarning",
"default": "Device may be\ncounterfeit",
"description": "Warning shown if the device may be a clone or counterfeit unit."
},
{
"id": "TooHotToStartProfileWarning",
"default": "Too hot to\nstart profile",
"include": [
"PROFILE_SUPPORT"
],
"description": "Shown when profile mode is started while the device is too hot."
}
],
"characters": [
{
"characters": [{
"id": "SettingRightChar",
"len": 1,
"description": "Shown for fixed Right-handed display rotation."
@@ -213,15 +162,10 @@
"description": "Shown when the locking mode is set to lock all buttons."
}
],
"menuGroups": [
{
"menuGroups": [{
"id": "PowerMenu",
"maxLen": 5,
"maxLen2": 11,
"include": [
"POW_DC",
"POW_QC"
],
"description": "Menu for settings related to power. Main settings to do with the input voltage."
},
{
@@ -249,52 +193,30 @@
"description": "Advanced settings. Misc catchall for settings that don't fit anywhere else or settings that require some thought before use."
}
],
"menuOptions": [
{
"menuOptions": [{
"id": "DCInCutoff",
"maxLen": 5,
"maxLen2": 11,
"include": [
"POW_DC"
],
"description": "When the device is powered by a battery, this adjusts the low voltage threshold for when the unit should turn off the heater to protect the battery."
},
{
"id": "MinVolCell",
"maxLen": 4,
"maxLen2": 9,
"include": [
"POW_DC"
],
"description": "When powered by a battery, this adjusts the minimum voltage per cell before shutdown. (This is multiplied by the cell count.)"
},
{
"id": "QCMaxVoltage",
"maxLen": 8,
"maxLen2": 15,
"include": [
"POW_QC"
],
"description": "This adjusts the maximum voltage the QC negotiation will adjust to. Does NOT affect USB-PD. Should be set safely based on the current rating of your power supply."
},
{
"id": "PDNegTimeout",
"maxLen": 8,
"maxLen2": 15,
"include": [
"POW_PD"
],
"description": "How long until firmware stops trying to negotiate for USB-PD and tries QC instead. Longer times may help dodgy / old PD adapters, faster times move onto PD quickly. Units of 100ms. Recommended to keep small values."
},
{
"id": "PDVpdo",
"maxLen": 7,
"maxLen2": 15,
"include": [
"POW_PD"
],
"description": "Enabled PPS & EPR modes."
},
{
"id": "BoostTemperature",
"maxLen": 4,
@@ -325,132 +247,6 @@
"maxLen2": 13,
"description": "If locking the buttons against accidental presses is enabled."
},
{
"id": "ProfilePhases",
"maxLen": 6,
"maxLen2": 13,
"include": [
"PROFILE_SUPPORT"
],
"description": "set the number of phases for profile mode."
},
{
"id": "ProfilePreheatTemp",
"maxLen": 4,
"maxLen2": 9,
"include": [
"PROFILE_SUPPORT"
],
"description": "Preheat to this temperature at the start of profile mode."
},
{
"id": "ProfilePreheatSpeed",
"maxLen": 5,
"maxLen2": 11,
"include": [
"PROFILE_SUPPORT"
],
"description": "How fast the temperature is allowed to rise during the preheat phase at the start of profile mode."
},
{
"id": "ProfilePhase1Temp",
"maxLen": 4,
"maxLen2": 9,
"include": [
"PROFILE_SUPPORT"
],
"description": "Target temperature for the end of phase 1 of profile mode."
},
{
"id": "ProfilePhase1Duration",
"maxLen": 4,
"maxLen2": 9,
"include": [
"PROFILE_SUPPORT"
],
"description": "Duration of phase 1 of profile mode. The phase might actually take longer if it takes longer to reach the target temperature."
},
{
"id": "ProfilePhase2Temp",
"maxLen": 4,
"maxLen2": 9,
"include": [
"PROFILE_SUPPORT"
],
"description": "Target temperature for the end of phase 2 of profile mode."
},
{
"id": "ProfilePhase2Duration",
"maxLen": 4,
"maxLen2": 9,
"include": [
"PROFILE_SUPPORT"
],
"description": "Duration of phase 2 of profile mode. The phase might actually take longer if it takes longer to reach the target temperature."
},
{
"id": "ProfilePhase3Temp",
"maxLen": 4,
"maxLen2": 9,
"include": [
"PROFILE_SUPPORT"
],
"description": "Target temperature for the end of phase 3 of profile mode."
},
{
"id": "ProfilePhase3Duration",
"maxLen": 4,
"maxLen2": 9,
"include": [
"PROFILE_SUPPORT"
],
"description": "Duration of phase 3 of profile mode. The phase might actually take longer if it takes longer to reach the target temperature."
},
{
"id": "ProfilePhase4Temp",
"maxLen": 4,
"maxLen2": 9,
"include": [
"PROFILE_SUPPORT"
],
"description": "Target temperature for the end of phase 5 of profile mode."
},
{
"id": "ProfilePhase4Duration",
"maxLen": 4,
"maxLen2": 9,
"include": [
"PROFILE_SUPPORT"
],
"description": "Duration of phase 5 of profile mode. The phase might actually take longer if it takes longer to reach the target temperature."
},
{
"id": "ProfilePhase5Temp",
"maxLen": 4,
"maxLen2": 9,
"include": [
"PROFILE_SUPPORT"
],
"description": "Target temperature for the end of phase 5 of profile mode."
},
{
"id": "ProfilePhase5Duration",
"maxLen": 4,
"maxLen2": 9,
"include": [
"PROFILE_SUPPORT"
],
"description": "Duration of phase 5 of profile mode. The phase might actually take longer if it takes longer to reach the target temperature."
},
{
"id": "ProfileCooldownSpeed",
"maxLen": 5,
"maxLen2": 11,
"include": [
"PROFILE_SUPPORT"
],
"description": "How fast the temperature is allowed to drop during the cooldown phase at the end of profile mode."
},
{
"id": "MotionSensitivity",
"maxLen": 6,
@@ -461,18 +257,12 @@
"id": "SleepTemperature",
"maxLen": 4,
"maxLen2": 9,
"exclude": [
"NO_SLEEP_MODE"
],
"description": "Temperature the device will drop down to while asleep. Typically around halfway between off and soldering temperature."
},
{
"id": "SleepTimeout",
"maxLen": 4,
"maxLen2": 9,
"exclude": [
"NO_SLEEP_MODE"
],
"description": "How long of a period without movement / button-pressing is required before the device drops down to the sleep temperature."
},
{
@@ -485,9 +275,6 @@
"id": "HallEffSensitivity",
"maxLen": 6,
"maxLen2": 13,
"include": [
"HALL_SENSOR"
],
"description": "If the unit has a hall effect sensor (Pinecil), this adjusts how sensitive it is at detecting a magnet to put the device into sleep mode."
},
{
@@ -500,9 +287,6 @@
"id": "DisplayRotation",
"maxLen": 6,
"maxLen2": 13,
"exclude": [
"NO_DISPLAY_ROTATE"
],
"description": "If the display should rotate automatically or if it should be fixed for left- or right-handed mode."
},
{
@@ -565,15 +349,6 @@
"maxLen2": 13,
"description": "Should the device show an 'advanced' soldering view. This is a text-based view that shows more information at the cost of no nice graphics."
},
{
"id": "BluetoothLE",
"maxLen": 7,
"maxLen2": 15,
"include": [
"BLE_ENABLED"
],
"description": "Should BLE be enabled at boot time."
},
{
"id": "PowerLimit",
"maxLen": 5,
@@ -621,6 +396,12 @@
"maxLen": 7,
"maxLen2": 15,
"description": "Changes the device language on multi-lingual builds."
},
{
"id": "BLEEnabled",
"maxLen": 7,
"maxLen2": 15,
"description": "Should BLE be enabled at boot time."
}
]
}

2
build.sh Normal file
View File

@@ -0,0 +1,2 @@
#!/bin/sh
docker-compose run --rm builder /bin/bash /build/ci/buildAll.sh

13
ci/buildAll.sh Executable file
View File

@@ -0,0 +1,13 @@
#!/bin/sh
set -e
set -u
mkdir -p /build/ci/artefacts
# Build STM code
cd /build/source/source/
bash ./build.sh || exit 1
echo "All Firmware built"
# Copy out all the final resulting files we would like to store for the next op
cp -r /build/source/source/Hexfile/*.hex /build/ci/artefacts/
cp -r /build/source/source/Hexfile/*.bin /build/ci/artefacts/

View File

@@ -0,0 +1 @@
8312c4c91799885f222f663fc81f9a31 gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2

View File

@@ -0,0 +1 @@
add5b6a9b12987d0e72f55a4d2cd0f3b nuclei_riscv_newlibc_prebuilt_linux64_2020.08.tar.bz2

View File

@@ -1,12 +1,11 @@
version: "3"
name: "ironos"
services:
builder:
stdin_open: true
tty: true
build:
context: .
dockerfile: scripts/IronOS.Dockerfile
command: /bin/sh
volumes:
- ./:/build/ironos:Z
- ./ci:/build/ci:Z
- ./:/build/source:Z

View File

@@ -1,23 +1,8 @@
# Project info
site_name: IronOS
site_url: https://ralim.github.io/IronOS/
site_description: "IronOS Open Source Soldering Iron firmware for Miniware and Pinecil"
# Repo config
repo_url: https://github.com/ralim/IronOS/
# Dir & location config
docs_dir: ../Documentation
edit_uri: edit/dev/Documentation/
# Theme and config
theme:
name: readthedocs
highlightsjs: true
hljs_languages:
- yaml
# Navigation structure
site_description: "IronOS Open Source Soldering Iron firmware for Miniware and Pinecil"
docs_dir: Documentation
nav:
- Home: index.md
- Getting Started: GettingStarted.md
@@ -39,20 +24,7 @@ nav:
- Hardware Notes: Hardware.md
- Troubleshooting: Troubleshooting.md
- Known Hardware Issues: HardwareIssues.md
- Power sources: PowerSources.md
- Translations: Translation.md
- Development: Development.md
# Plugins
plugins:
- search
- autolinks
- awesome-pages
- git-revision-date
# Markdown Extensions
markdown_extensions:
- attr_list
- pymdownx.emoji:
emoji_index: !!python/name:pymdownx.emoji.twemoji
emoji_generator: !!python/name:pymdownx.emoji.to_svg
theme: readthedocs

View File

@@ -1,35 +0,0 @@
# Default Reference Distro for development env & deploy:
# * Alpine Linux, version 3.16 *
FROM alpine:3.16
LABEL maintainer="Ben V. Brown <ralim@ralimtek.com>"
# Default current dir when container starts
WORKDIR /build/ironos
# Installing the two compilers (ARM & RISCV), python3 & pip, clang tools, etc.:
## - compilers: gcc-*, newlib-*
## - python3: py*, black (required to check Python code formatting)
## - misc: findutils, make, git, diffutils, zip
## - musl-dev (required for the multi lang firmwares)
## - clang (required for clang-format to check C++ code formatting)
## - shellcheck (to check sh scripts)
ARG APK_COMPS="gcc-riscv-none-elf gcc-arm-none-eabi newlib-riscv-none-elf \
newlib-arm-none-eabi"
ARG APK_PYTHON="python3 py3-pip black"
ARG APK_MISC="findutils make git diffutils zip"
ARG APK_DEV="musl-dev clang bash clang-extra-tools shellcheck"
# PIP packages to check & test Python code
ARG PIP_PKGS='bdflib flake8'
# Install system packages using alpine package manager
RUN apk add --no-cache ${APK_COMPS} ${APK_PYTHON} ${APK_MISC} ${APK_DEV}
# Install Python3 packages as modules using pip
RUN python3 -m pip install ${PIP_PKGS}
# Git trust to avoid related warning
RUN git config --global --add safe.directory /build/ironos
COPY . /build/ironos

View File

@@ -1,213 +0,0 @@
#!/usr/bin/env bash
# little helper for docker deployment to:
# - start development environment for IronOS ("shell" sub-command)
# - generate full set of builds ("build" sub-command)
# - probably doing some other routines (check source briefly before running undocumented commands!)
#set -x
#set -e
### helper functions
# brief help (some supported commands may be missing!)
usage()
{
echo -e "\nUsage: ${0} [CMD]\n"
echo "CMD (docker related):"
echo -e "\tshell - start docker container with shell inside to work on IronOS with all tools needed"
echo -e "\tbuild - compile builds of IronOS inside docker container for supported hardware"
echo -e "\tclean - delete created docker container (but not pre-downloaded data for it)\n"
echo "CMD (helper routines):"
echo -e "\tdocs_readme - generate & OVERWRITE(!) README.md inside Documentation/ based on nav section from mkdocs.yml if it changed\n"
echo -e "\tcheck_style_file SRC - run code style checks based on clang-format & custom parsers for source code file SRC\n"
echo -e "\tcheck_style_log - run clang-format using source/Makefile and generate gcc-compatible error log in source/check-style.log\n"
echo -e "STORAGE NOTICE: for \"shell\" and \"build\" commands extra files will be downloaded so make sure that you have ~5GB of free space.\n"
}
# Documentation/README.md automagical generation routine
docs_readme()
{
# WARNING: ON RUN Documentaion/README.md MAY BE OVERWRITTEN WITHOUT ANY WARNINGS / CONFIRMATIONS !!!
# Returns:
## 0 to the environment & silence - if there are no any changes in README.md nor updates in mkdocs.yml
## 1 to the environment (as error) & note message - if the update of README.md in repo is required
yml="scripts/IronOS-mkdocs.yml"
md_old="Documentation/README.md"
md_new="Documentation/README"
# ^^^^ hardcoded paths relative to IronOS/ to make this func very trivial
# file overwritten section looks out of style but hoping to make shellcheck happy
cat << EOF > "${md_new}"
<!-- THIS FILE IS AUTOGENERATED by "scripts/deploy.sh docs_readme" based on nav section in ${yml} config -->
<!-- THIS FILE IS NOT SUPPOSED TO BE EDITED MANUALLY -->
#### This is autogenerated README for brief navigation through github over official documentation for IronOS project
#### This documentation is also available [here online](https://ralim.github.io/IronOS)
EOF
# it probably will become unexplainable in a few months but so far it works:
sed '1,/^nav/d; /^ *$/,$d; s,- ,- [,; s,: ,](../Documentation/,; s,.md,.md),; s,:$,],; s,/Pinecil ,/Pinecil%20,; /^ - \[.*\]$/ s,\[,,; s,]$,,' "${yml}" >> "${md_new}"
ret=0
if [ -z "$(diff -q "${md_old}" "${md_new}")" ]; then
rm "${md_new}"
ret=0
else
mv "${md_new}" "${md_old}"
echo ""
echo "${yml} seems to be updated..."
echo "... while ${md_old} is out-of-date!"
echo ""
echo "Please, update ${md_old} in your local working copy by command:"
echo ""
echo " $ ./scripts/deploy.sh docs_readme"
echo ""
echo "And then commit & push changes to update ${md_old} in the repo:"
echo ""
echo " $ git commit ${md_old} -m \"${md_old}: update autogenerated file\" && git push"
echo ""
ret=1
fi;
return "${ret}"
}
# Helper function to check code style using clang-format & grep/sed custom parsers:
# - basic logic moved from source/Makefile : `check-style` target for better maintainance since a lot of sh script involved;
# - output goes in gcc-like error compatible format for IDEs/editors.
check_style_file()
{
ret=0
src="${1}"
test ! -f "${src}" && echo "ERROR!!! Provided file ${src} is not available to check/read!!!" && exit 1
# count lines using diff between beauty-fied file & original file to detect format issue
var="$(clang-format "$src" | diff "$src" - | wc -l)"
if [ "${var}" -ne 0 ]; then
# show full log error or, if LIST=anything provided, then show only filename of interest (implemented for debug purposes mainly)
if [ -z "${LIST}" ]; then
# sed is here only for pretty logging
clang-format "${src}" | diff "${src}" - | sed 's/^---/-------------------------------------------------------------------------------/; s/^< /--- /; s/^> /+++ /; /^[0-9].*/ s/[acd,].*$/ERROR1/; /^[0-9].*/ s,^,\n\n\n\n'"${src}"':,; /ERROR1$/ s,ERROR1$,:1: error: clang-format code style mismatch:,; '
else
echo "${src}"
fi;
ret=1
fi;
# - clang-format has neat option for { } in condition blocks but it's available only since version 15:
# * https://clang.llvm.org/docs/ClangFormatStyleOptions.html#insertbraces
# - since reference env is alpine 3.16 with clang-format 13, implement custom parser to do the similar thing here with grep:
# it used to trace missing { and } for if/else/do/while/for BUT IT'S VERY SPECULATIVE, very-very hacky & dirty.
# - if file is problematic but filename only requested make final grep in pipe silent ... UPD: make code messy but shellcheck happy
if [ -z "${LIST}" ]; then
grep -H -n -e "^ .*if .*)$" -e "^ .*else$" -e "^ .* do$" -e "^ .*while .*)$" -e "^ .*for .*)$" "${src}" | grep -v -e "^.*//" -e "^.*:.*: .*if ((.*[^)])$" | sed 's,^,\n\n,; s,: ,:1: error: probably missing { or } for conditional or loop block:\n>>>,;' | grep -e "^.*$"
else
grep -H -n -e "^ .*if .*)$" -e "^ .*else$" -e "^ .* do$" -e "^ .*while .*)$" -e "^ .*for .*)$" "${src}" | grep -v -e "^.*//" -e "^.*:.*: .*if ((.*[^)])$" | sed 's,^,\n\n,; s,: ,:1: error: probably missing { or } for conditional or loop block:\n>>>,;' | grep -q -e "^.*$"
fi;
if [ "${?}" -ne 1 ]; then
# ... and only print the filename
test -z "${LIST}" || echo "${src}"
ret=1;
fi;
return "${ret}"
}
# check_style routine for those who too lazy to do it everytime manually
check_style_log()
{
log="source/check-style.log"
make -C source check-style 2>&1 | tee "${log}"
chmod 0666 "${log}"
sed -i -e 's,\r,,g' "${log}"
return 0
}
### main
docker_conf="Env.yml"
# get absolute location of project root dir to make docker happy with config(s)
# (successfully tested on relatively POSIX-compliant Dash shell)
# this script
script_file="/deploy.sh"
# IronOS/scripts/deploy.sh
script_path="${PWD}"/"${0}"
# IronOS/scripts/
script_dir=${script_path%"${script_file}"}
# IronOS/
root_dir="${script_dir}/.."
# IronOS/Env.yml
docker_file="-f ${root_dir}/${docker_conf}"
# allow providing custom path to docker tool using DOCKER_BIN external env. var.
# (compose sub-command must be included, i.e. DOCKER_BIN="/usr/local/bin/docker compose" ./deploy.sh)
if [ -z "${DOCKER_BIN}" ]; then
docker_bin=""
else
docker_bin="${DOCKER_BIN}"
fi;
# detect availability of docker
docker_compose="$(command -v docker-compose)"
if [ -n "${docker_compose}" ] && [ -z "${docker_bin}" ]; then
docker_bin="${docker_compose}"
fi;
docker_tool="$(command -v docker)"
if [ -n "${docker_tool}" ] && [ -z "${docker_bin}" ]; then
docker_bin="${docker_tool} compose"
fi;
# give function argument a name
cmd="${1}"
# if only README.md for Documentation update is required then run it & exit
if [ "docs_readme" = "${cmd}" ]; then
docs_readme
exit "${?}"
fi;
if [ "check_style_file" = "${cmd}" ]; then
check_style_file "${2}"
exit "${?}"
fi;
if [ "check_style_log" = "${cmd}" ]; then
check_style_log
exit "${?}"
fi;
# if docker is not presented in any way show warning & exit
if [ -z "${docker_bin}" ]; then
echo "ERROR: Can't find docker-compose nor docker tool. Please, install docker and try again."
exit 1
fi;
# construct command to run
if [ -z "${cmd}" ] || [ "${cmd}" = "shell" ]; then
docker_cmd="run --rm builder"
elif [ "${cmd}" = "build" ]; then
docker_cmd="run --rm builder make build-all OUT=${OUT}"
elif [ "${cmd}" = "clean" ]; then
docker rmi ironos-builder:latest
exit "${?}"
else
usage
exit 1
fi;
# change dir to project root dir & run constructed command
cd "${root_dir}" || exit 1
echo -e "\n====>>>> Firing up & starting container..."
if [ "${cmd}" = "shell" ]; then
echo -e "\t* type \"exit\" to end the session when done;"
fi;
echo -e "\t* type \"${0} clean\" to delete created container (but not cached data)"
echo -e "\n====>>>> ${docker_bin} ${docker_file} ${docker_cmd}\n"
eval "${docker_bin} ${docker_file} ${docker_cmd}"
exit "${?}"

View File

@@ -19,7 +19,6 @@ AllowShortFunctionsOnASingleLine: All
AllowShortLambdasOnASingleLine: All
AllowShortIfStatementsOnASingleLine: Never
AllowShortLoopsOnASingleLine: false
AllowShortEnumsOnASingleLine: false ### <<< Keeps enums as is
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false

View File

@@ -94,18 +94,11 @@ enum StatusLED {
};
void setStatusLED(const enum StatusLED state);
void setBuzzer(bool on);
// preStartChecks are run until they return 0
// By the PID, after each ADC sample comes in
// For example, on the MHP30 this is used to figure out the resistance of the hotplate
uint8_t preStartChecks();
uint8_t preStartChecksDone();
// Check if the tip or output mosfet is shorted (if possible)
bool isTipShorted();
// Show the boot logo
void showBootLogo(void);
#ifdef __cplusplus
}
#endif

View File

@@ -20,8 +20,6 @@ void power_check();
uint8_t getTipResistanceX10();
uint8_t getTipThermalMass();
uint8_t getTipInertia();
#ifdef __cplusplus
}

View File

@@ -1,7 +1,6 @@
// BSP mapping functions
#include "BSP.h"
#include "BootLogo.h"
#include "I2C_Wrapper.hpp"
#include "Pins.h"
#include "Setup.h"
@@ -456,6 +455,8 @@ void setStatusLED(const enum StatusLED state) {
} break;
case LED_HOT:
ws2812.led_set_color(0, 0xFF, 0, 0); // red
// We have hit the right temp, run buzzer for a short period
buzzerEnd = xTaskGetTickCount() + TICKS_SECOND / 3;
break;
case LED_COOLING_STILL_HOT:
ws2812.led_set_color(0, 0xFF, 0x8C, 0x00); // Orange
@@ -464,6 +465,11 @@ void setStatusLED(const enum StatusLED state) {
ws2812.led_update();
lastState = state;
}
if (state == LED_HOT && xTaskGetTickCount() < buzzerEnd) {
setBuzzer(true);
} else {
setBuzzer(false);
}
}
uint64_t getDeviceID() {
//
@@ -472,7 +478,4 @@ uint64_t getDeviceID() {
uint8_t preStartChecksDone() { return 1; }
uint8_t getTipThermalMass() { return TIP_THERMAL_MASS; }
uint8_t getTipInertia() { return TIP_THERMAL_MASS; }
void showBootLogo(void) { BootLogo::handleShowingLogo((uint8_t *)FLASH_LOGOADDR); }
uint8_t getTipThermalMass() { return TIP_THERMAL_MASS; }

View File

@@ -123,7 +123,7 @@ extern uint32_t SystemCoreClock;
#define INCLUDE_vTaskDelete 0
#define INCLUDE_vTaskCleanUpResources 0
#define INCLUDE_vTaskSuspend 0
#define INCLUDE_vTaskDelayUntil 1
#define INCLUDE_vTaskDelayUntil 0
#define INCLUDE_vTaskDelay 1
#define INCLUDE_xTaskGetSchedulerState 1
#define INCLUDE_uxTaskGetStackHighWaterMark 1

View File

@@ -49,7 +49,7 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {
}
bool getFUS302IRQLow() {
#ifdef POW_PD
#if POW_PD
// Return true if the IRQ line is still held low
return HAL_GPIO_ReadPin(INT_PD_GPIO_Port, INT_PD_Pin) == GPIO_PIN_RESET;
#else

View File

@@ -7,7 +7,7 @@
#include "configuration.h"
void power_check() {
#ifdef POW_PD
#if POW_PD
// Cant start QC until either PD works or fails
if (USBPowerDelivery::negotiationComplete()) {
@@ -18,5 +18,4 @@ void power_check() {
bool getIsPoweredByDCIN() { return false; }
uint8_t getTipResistanceX10() { return TIP_RESISTANCE; }
bool isTipShorted() { return false; }
uint8_t getTipResistanceX10() { return TIP_RESISTANCE; }

View File

@@ -47,9 +47,9 @@ void Setup_HAL() {
MX_IWDG_Init();
HAL_ADC_Start(&hadc2);
HAL_ADCEx_MultiModeStart_DMA(&hadc1, ADCReadings,
(ADC_SAMPLES * ADC_CHANNELS)); // start DMA of normal readings
// HAL_ADCEx_InjectedStart(&hadc1); // enable injected readings
// HAL_ADCEx_InjectedStart(&hadc2); // enable injected readings
(ADC_SAMPLES * ADC_CHANNELS)); // start DMA of normal readings
// HAL_ADCEx_InjectedStart(&hadc1); // enable injected readings
// HAL_ADCEx_InjectedStart(&hadc2); // enable injected readings
}
// channel 0 -> temperature sensor, 1-> VIN, 2-> tip
@@ -154,9 +154,8 @@ static void MX_ADC1_Init(void) {
SET_BIT(hadc1.Instance->CR1, (ADC_CR1_EOSIE)); // Enable end of Normal
// Run ADC internal calibration
while (HAL_ADCEx_Calibration_Start(&hadc1) != HAL_OK) {
while (HAL_ADCEx_Calibration_Start(&hadc1) != HAL_OK)
;
}
}
/* ADC2 init function */
@@ -192,9 +191,8 @@ static void MX_ADC2_Init(void) {
HAL_ADC_ConfigChannel(&hadc2, &sConfig);
// Run ADC internal calibration
while (HAL_ADCEx_Calibration_Start(&hadc2) != HAL_OK) {
while (HAL_ADCEx_Calibration_Start(&hadc2) != HAL_OK)
;
}
}
/* I2C1 init function */
static void MX_I2C1_Init(void) {

View File

@@ -10,14 +10,14 @@
#include "BSP.h"
#include "configuration.h"
#include "stm32f1xx_hal.h"
#ifdef I2C_SOFT_BUS_2
#ifdef I2C_SOFT
#define SOFT_SCL2_HIGH() HAL_GPIO_WritePin(SCL2_GPIO_Port, SCL2_Pin, GPIO_PIN_SET)
#define SOFT_SCL2_LOW() HAL_GPIO_WritePin(SCL2_GPIO_Port, SCL2_Pin, GPIO_PIN_RESET)
#define SOFT_SDA2_HIGH() HAL_GPIO_WritePin(SDA2_GPIO_Port, SDA2_Pin, GPIO_PIN_SET)
#define SOFT_SDA2_LOW() HAL_GPIO_WritePin(SDA2_GPIO_Port, SDA2_Pin, GPIO_PIN_RESET)
#define SOFT_SDA2_READ() (HAL_GPIO_ReadPin(SDA2_GPIO_Port, SDA2_Pin) == GPIO_PIN_SET ? 1 : 0)
#define SOFT_SCL2_READ() (HAL_GPIO_ReadPin(SCL2_GPIO_Port, SCL2_Pin) == GPIO_PIN_SET ? 1 : 0)
#define SOFT_SCL_HIGH() HAL_GPIO_WritePin(SCL2_GPIO_Port, SCL2_Pin, GPIO_PIN_SET)
#define SOFT_SCL_LOW() HAL_GPIO_WritePin(SCL2_GPIO_Port, SCL2_Pin, GPIO_PIN_RESET)
#define SOFT_SDA_HIGH() HAL_GPIO_WritePin(SDA2_GPIO_Port, SDA2_Pin, GPIO_PIN_SET)
#define SOFT_SDA_LOW() HAL_GPIO_WritePin(SDA2_GPIO_Port, SDA2_Pin, GPIO_PIN_RESET)
#define SOFT_SDA_READ() (HAL_GPIO_ReadPin(SDA2_GPIO_Port, SDA2_Pin) == GPIO_PIN_SET ? 1 : 0)
#define SOFT_SCL_READ() (HAL_GPIO_ReadPin(SCL2_GPIO_Port, SCL2_Pin) == GPIO_PIN_SET ? 1 : 0)
#define SOFT_I2C_DELAY() \
{ \
for (int xx = 0; xx < 20; xx++) { \

View File

@@ -1,10 +1,11 @@
#ifndef CONFIGURATION_H_
#define CONFIGURATION_H_
#include "Settings.h"
#include "configuration.h"
#include <stdint.h>
/**
* Configuration.h
* Define here your default pre settings for MHP30
* Define here your default pre settings for TS80 or TS100
*
*/
@@ -29,8 +30,8 @@
* How many seconds/minutes we wait until going to sleep/shutdown.
* Values -> SLEEP_TIME * 10; i.e. 5*10 = 50 Seconds!
*/
#define SLEEP_TIME 5 // x10 Seconds
#define SHUTDOWN_TIME 0 // Minutes -- Default shutdown to being off
#define SLEEP_TIME 5 // x10 Seconds
#define SHUTDOWN_TIME 10 // Minutes
/**
* Auto start off for safety.
@@ -59,15 +60,6 @@
#define ORIENTATION_MODE 0 // 0: Right 1:Left 2:Automatic - Default right
#define REVERSE_BUTTON_TEMP_CHANGE 0 // 0:Default 1:Reverse - Reverse the plus and minus button assigment for temperature change
/**
* OLED Brightness
*
*/
#define MIN_BRIGHTNESS 0 // Min OLED brightness selectable
#define MAX_BRIGHTNESS 100 // Max OLED brightness selectable
#define BRIGHTNESS_STEP 25 // OLED brightness increment
#define DEFAULT_BRIGHTNESS 25 // default OLED brightness
/**
* Temp change settings
*/
@@ -85,9 +77,13 @@
#define ADC_MAX_READING (4096 * 8) // Maximum reading of the adc
#define ADC_VDD_MV 3300 // ADC max reading millivolts
#ifdef MODEL_TS100
#define POWER_PULSE_DEFAULT 0
#else
#define POWER_PULSE_DEFAULT 5
#endif
#define POWER_PULSE_WAIT_DEFAULT 4 // Default rate of the power pulse: 4*2500 = 10000 ms = 10 s
#define POWER_PULSE_DURATION_DEFAULT 1 // Default duration of the power pulse: 1*250 = 250 ms
#define POWER_PULSE_DEFAULT 5
/**
* OLED Orientation Sensitivity on Automatic mode!
@@ -141,7 +137,7 @@
#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 50 // Min soldering temp selectable °F
#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
@@ -150,27 +146,22 @@
#define ACCEL_SC7
#define ACCEL_MSA
#define PROFILE_SUPPORT
#define POW_PD 1
#define POW_PD_EXT 0
#define POW_PD 1
#define TEMP_NTC
#define I2C_SOFT_BUS_2
#define I2C_SOFT
#define BATTFILTERDEPTH 8
#define OLED_I2CBB2
#define OLED_I2CBB
#define ACCEL_EXITS_ON_MOVEMENT
#define NEEDS_VBUS_PROBE 0
#define HARDWARE_MAX_WATTAGE_X10 650
#define TIP_THERMAL_MASS 65 // TODO, needs refinement
#define TIP_RESISTANCE 60 // x10 ohms, ~6 typical
#endif /* MHP30 */
#endif
#ifdef ACCEL_EXITS_ON_MOVEMENT
#define NO_SLEEP_MODE
#endif
#endif
#define FLASH_LOGOADDR (0x08000000 + (126 * 1024))
#define SETTINGS_START_PAGE (0x08000000 + (127 * 1024))
#endif /* CONFIGURATION_H_ */
#define FLASH_LOGOADDR (0x08000000 + (62 * 1024))

View File

@@ -10,6 +10,9 @@
#include "stm32f1xx_hal.h"
#include "string.h"
#define SETTINGS_START_PAGE (0x08000000 + (127 * 1024))
void flash_save_buffer(const uint8_t *buffer, const uint16_t length) {
FLASH_EraseInitTypeDef pEraseInit;
pEraseInit.TypeErase = FLASH_TYPEERASE_PAGES;
@@ -30,9 +33,9 @@ void flash_save_buffer(const uint8_t *buffer, const uint16_t length) {
HAL_FLASH_Unlock();
for (uint16_t i = 0; i < (length / 2); i++) {
resetWatchdog();
HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, SETTINGS_START_PAGE + (i * sizeof(uint16_t)), data[i]);
HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, SETTINGS_START_PAGE+ (i*sizeof(uint16_t)), data[i]);
}
HAL_FLASH_Lock();
}
void flash_read_buffer(uint8_t *buffer, const uint16_t length) { memcpy(buffer, (uint8_t *)SETTINGS_START_PAGE, length); }
void flash_read_buffer(uint8_t *buffer, const uint16_t length) { memcpy(buffer, (uint8_t*)SETTINGS_START_PAGE, length); }

View File

@@ -1,5 +1,5 @@
#include "configuration.h"
#ifdef POW_PD
#if POW_PD
#include "BSP.h"
#include "I2C_Wrapper.hpp"
#include "Pins.h"

View File

@@ -6,7 +6,7 @@
*/
#include "BSP.h"
#include "I2CBB2.hpp"
#include "I2CBB.hpp"
#include "Pins.h"
#include "Setup.h"
#include <I2C_Wrapper.hpp>
@@ -17,7 +17,7 @@ void preRToSInit() {
HAL_Init();
Setup_HAL(); // Setup all the HAL objects
BSPInit();
I2CBB2::init();
I2CBB::init();
/* Init the IPC objects */
FRToSI2C::FRToSInit();
}

View File

@@ -1,12 +1,10 @@
// BSP mapping functions
#include "BSP.h"
#include "BootLogo.h"
#include "I2C_Wrapper.hpp"
#include "Pins.h"
#include "Setup.h"
#include "TipThermoModel.h"
#include "USBPD.h"
#include "configuration.h"
#include "history.hpp"
#include "main.hpp"
@@ -19,7 +17,7 @@ const uint16_t powerPWM = 255;
static const uint8_t holdoffTicks = 14; // delay of 8 ms
static const uint8_t tempMeasureTicks = 14;
uint16_t totalPWM; // htimADC.Init.Period, the full PWM cycle
uint16_t totalPWM; // htim2.Init.Period, the full PWM cycle
static bool fastPWM;
static bool infastPWM;
@@ -101,20 +99,20 @@ uint16_t getInputVoltageX10(uint16_t divisor, uint8_t sample) {
static void switchToFastPWM(void) {
// 10Hz
infastPWM = true;
totalPWM = powerPWM + tempMeasureTicks + holdoffTicks;
htimADC.Instance->ARR = totalPWM;
htimADC.Instance->CCR1 = powerPWM + holdoffTicks;
htimADC.Instance->PSC = 2690;
infastPWM = true;
totalPWM = powerPWM + tempMeasureTicks + holdoffTicks;
htim2.Instance->ARR = totalPWM;
htim2.Instance->CCR1 = powerPWM + holdoffTicks;
htim2.Instance->PSC = 2690;
}
static void switchToSlowPWM(void) {
// 5Hz
infastPWM = false;
totalPWM = powerPWM + tempMeasureTicks / 2 + holdoffTicks / 2;
htimADC.Instance->ARR = totalPWM;
htimADC.Instance->CCR1 = powerPWM + holdoffTicks / 2;
htimADC.Instance->PSC = 2690 * 2;
infastPWM = false;
totalPWM = powerPWM + tempMeasureTicks / 2 + holdoffTicks / 2;
htim2.Instance->ARR = totalPWM;
htim2.Instance->CCR1 = powerPWM + holdoffTicks / 2;
htim2.Instance->PSC = 2690 * 2;
}
void setTipPWM(const uint8_t pulse, const bool shouldUseFastModePWM) {
@@ -128,30 +126,20 @@ void setTipPWM(const uint8_t pulse, const bool shouldUseFastModePWM) {
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
// Period has elapsed
if (htim->Instance == ADC_CONTROL_TIMER) {
if (htim->Instance == TIM2) {
// we want to turn on the output again
PWMSafetyTimer--;
// We decrement this safety value so that lockups in the
// scheduler will not cause the PWM to become locked in an
// active driving state.
// While we could assume this could never happen, its a small price for
// increased safety
#ifdef TIP_HAS_DIRECT_PWM
htimADC.Instance->CCR4 = powerPWM;
if (pendingPWM && PWMSafetyTimer) {
htimTip.Instance->CCR1 = pendingPWM;
HAL_TIM_PWM_Start(&htimTip, PWM_Out_CHANNEL);
// We decrement this safety value so that lockups in the
// scheduler will not cause the PWM to become locked in an
// active driving state.
// While we could assume this could never happen, its a small price for
// increased safety
htim2.Instance->CCR4 = pendingPWM;
if (htim2.Instance->CCR4 && PWMSafetyTimer) {
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);
} else {
HAL_TIM_PWM_Stop(&htimTip, PWM_Out_CHANNEL);
HAL_TIM_PWM_Stop(&htim3, TIM_CHANNEL_1);
}
#else
htimADC.Instance->CCR4 = pendingPWM;
if (htimADC.Instance->CCR4 && PWMSafetyTimer) {
HAL_TIM_PWM_Start(&htimTip, PWM_Out_CHANNEL);
} else {
HAL_TIM_PWM_Stop(&htimTip, PWM_Out_CHANNEL);
}
#endif
if (fastPWM != infastPWM) {
if (fastPWM) {
switchToFastPWM();
@@ -169,11 +157,10 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim) {
// This was a when the PWM for the output has timed out
if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_4) {
HAL_TIM_PWM_Stop(&htimTip, PWM_Out_CHANNEL);
HAL_TIM_PWM_Stop(&htim3, TIM_CHANNEL_1);
}
}
void unstick_I2C() {
#ifndef I2C_SOFT_BUS_1
GPIO_InitTypeDef GPIO_InitStruct;
int timeout = 100;
int timeout_cnt = 0;
@@ -240,7 +227,6 @@ void unstick_I2C() {
// Call initialization function.
HAL_I2C_Init(&hi2c1);
#endif
}
uint8_t getButtonA() { return HAL_GPIO_ReadPin(KEY_A_GPIO_Port, KEY_A_Pin) == GPIO_PIN_RESET ? 1 : 0; }
@@ -252,169 +238,22 @@ void reboot() { NVIC_SystemReset(); }
void delay_ms(uint16_t count) { HAL_Delay(count); }
uint8_t lastTipResistance = 0; // default to unknown
const uint8_t numTipResistanceReadings = 3;
uint32_t tipResistanceReadings[3] = {0, 0, 0};
uint8_t tipResistanceReadingSlot = 0;
bool isTipDisconnected() {
bool isTipDisconnected() {
uint16_t tipDisconnectedThres = TipThermoModel::getTipMaxInC() - 5;
uint32_t tipTemp = TipThermoModel::getTipInC();
return tipTemp > tipDisconnectedThres;
}
void setStatusLED(const enum StatusLED state) {}
void setBuzzer(bool on) {}
#ifdef TIP_RESISTANCE_SENSE_Pin
// We want to calculate lastTipResistance
// If tip is connected, and the tip is cold and the tip is not being heated
// We can use the GPIO to inject a small current into the tip and measure this
// The gpio is 100k -> diode -> tip -> gnd
// Source is 3.3V-0.5V
// Which is around 0.028mA this will induce:
// 6 ohm tip -> 3.24mV (Real world ~= 3320)
// 8 ohm tip -> 4.32mV (Real world ~= 4500)
// Which is definitely measureable
// Taking shortcuts here as we know we only really have to pick apart 6 and 8 ohm tips
// These are reported as 60 and 75 respectively
void performTipResistanceSampleReading() {
// 0 = read then turn on pullup, 1 = read then turn off pullup, 2 = read again
tipResistanceReadings[tipResistanceReadingSlot] = TipThermoModel::convertTipRawADCTouV(getTipRawTemp(1));
HAL_GPIO_WritePin(TIP_RESISTANCE_SENSE_GPIO_Port, TIP_RESISTANCE_SENSE_Pin, (tipResistanceReadingSlot == 0) ? GPIO_PIN_SET : GPIO_PIN_RESET);
tipResistanceReadingSlot++;
}
bool tipShorted = false;
void FinishMeasureTipResistance() {
// Otherwise we now have the 4 samples;
// _^_ order, 2 delta's, combine these
int32_t calculatedSkew = tipResistanceReadings[0] - tipResistanceReadings[2]; // If positive tip is cooling
calculatedSkew /= 2; // divide by two to get offset per time constant
int32_t reading = (((tipResistanceReadings[1] - tipResistanceReadings[0]) + calculatedSkew) // jump 1 - skew
+ // +
((tipResistanceReadings[1] - tipResistanceReadings[2]) + calculatedSkew) // jump 2 - skew
) //
/ 2; // Take average
// // As we are only detecting two resistances; we can split the difference for now
uint8_t newRes = 0;
if (reading > 1200) {
// return; // Change nothing as probably disconnected tip
tipResistanceReadingSlot = lastTipResistance = 0;
return;
} else if (reading < 200) {
tipShorted = true;
} else if (reading < 800) {
newRes = 62;
} else {
newRes = 80;
}
lastTipResistance = newRes;
}
volatile bool tipMeasurementOccuring = true;
volatile TickType_t nextTipMeasurement = 100;
void performTipMeasurementStep() {
// Wait 200ms for settle time
if (xTaskGetTickCount() < (nextTipMeasurement)) {
return;
}
nextTipMeasurement = xTaskGetTickCount() + (TICKS_100MS * 5);
if (tipResistanceReadingSlot < numTipResistanceReadings) {
performTipResistanceSampleReading();
return;
}
// We are sensing the resistance
FinishMeasureTipResistance();
tipMeasurementOccuring = false;
}
#endif
uint8_t preStartChecks() {
#ifdef TIP_RESISTANCE_SENSE_Pin
performTipMeasurementStep();
if (preStartChecksDone() != 1) {
return 0;
}
#endif
#ifdef HAS_SPLIT_POWER_PATH
// We want to enable the power path that has the highest voltage
// Nominally one will be ~=0 and one will be high. Unless you jamb both in, then both _may_ be high, or device may be dead
{
uint16_t dc = getRawDCVin();
uint16_t pd = getRawPDVin();
if (dc > pd) {
HAL_GPIO_WritePin(DC_SELECT_GPIO_Port, DC_SELECT_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(PD_SELECT_GPIO_Port, PD_SELECT_Pin, GPIO_PIN_RESET);
} else {
HAL_GPIO_WritePin(PD_SELECT_GPIO_Port, PD_SELECT_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(DC_SELECT_GPIO_Port, DC_SELECT_Pin, GPIO_PIN_RESET);
}
}
#endif
#ifdef POW_PD
// If we are in the middle of negotiating PD, wait until timeout
// Before turning on the heater
if (!USBPowerDelivery::negotiationComplete()) {
return 0;
}
#endif
return 1;
}
void setStatusLED(const enum StatusLED state) {}
uint8_t preStartChecks() { return 1; }
uint64_t getDeviceID() {
//
return HAL_GetUIDw0() | ((uint64_t)HAL_GetUIDw1() << 32);
}
uint8_t preStartChecksDone() {
#ifdef TIP_RESISTANCE_SENSE_Pin
return (lastTipResistance == 0 || tipResistanceReadingSlot < numTipResistanceReadings || tipMeasurementOccuring || tipShorted) ? 0 : 1;
#else
return 1;
#endif
}
uint8_t getTipResistanceX10() { return TIP_RESISTANCE; }
uint8_t getTipResistanceX10() {
#ifdef TIP_RESISTANCE_SENSE_Pin
// Return tip resistance in x10 ohms
// We can measure this using the op-amp
return lastTipResistance;
#else
return TIP_RESISTANCE;
#endif
}
#ifdef TIP_RESISTANCE_SENSE_Pin
bool isTipShorted() { return tipShorted; }
#else
bool isTipShorted() { return false; }
#endif
uint8_t getTipThermalMass() {
#ifdef TIP_RESISTANCE_SENSE_Pin
if (lastTipResistance >= 80) {
return TIP_THERMAL_MASS;
}
return 45;
#else
return TIP_THERMAL_MASS;
#endif
}
uint8_t getTipInertia() {
#ifdef TIP_RESISTANCE_SENSE_Pin
if (lastTipResistance >= 80) {
return TIP_THERMAL_MASS;
}
return 10;
#else
return TIP_THERMAL_MASS;
#endif
}
uint8_t preStartChecksDone() { return 1; }
void showBootLogo(void) { BootLogo::handleShowingLogo((uint8_t *)FLASH_LOGOADDR); }
uint8_t getTipThermalMass() { return TIP_THERMAL_MASS; }

View File

@@ -123,7 +123,7 @@ extern uint32_t SystemCoreClock;
#define INCLUDE_vTaskDelete 0
#define INCLUDE_vTaskCleanUpResources 0
#define INCLUDE_vTaskSuspend 0
#define INCLUDE_vTaskDelayUntil 1
#define INCLUDE_vTaskDelayUntil 0
#define INCLUDE_vTaskDelay 1
#define INCLUDE_xTaskGetSchedulerState 1
#define INCLUDE_uxTaskGetStackHighWaterMark 1

View File

@@ -46,7 +46,7 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {
}
bool getFUS302IRQLow() {
#ifdef POW_PD
#if POW_PD
// Return true if the IRQ line is still held low
return HAL_GPIO_ReadPin(INT_PD_GPIO_Port, INT_PD_Pin) == GPIO_PIN_RESET;
#else

View File

@@ -6,145 +6,87 @@
*/
#ifndef BSP_MINIWARE_PINS_H_
#define BSP_MINIWARE_PINS_H_
#include "configuration.h"
#define BSP_MINIWARE_PINS_H_
#include "configuration.h"
#ifdef MODEL_TS100
#ifdef MODEL_TS100
#define KEY_B_Pin GPIO_PIN_6
#define KEY_B_GPIO_Port GPIOA
#define TMP36_INPUT_Pin GPIO_PIN_7
#define TMP36_INPUT_GPIO_Port GPIOA
#define TMP36_ADC1_CHANNEL ADC_CHANNEL_7
#define TMP36_ADC2_CHANNEL ADC_CHANNEL_7
#define TIP_TEMP_Pin GPIO_PIN_0
#define TIP_TEMP_GPIO_Port GPIOB
#define TIP_TEMP_ADC1_CHANNEL ADC_CHANNEL_8
#define TIP_TEMP_ADC2_CHANNEL ADC_CHANNEL_8
#define VIN_Pin GPIO_PIN_1
#define VIN_GPIO_Port GPIOB
#define VIN_ADC1_CHANNEL ADC_CHANNEL_9
#define VIN_ADC2_CHANNEL ADC_CHANNEL_9
#define OLED_RESET_Pin GPIO_PIN_8
#define OLED_RESET_GPIO_Port GPIOA
#define KEY_A_Pin GPIO_PIN_9
#define KEY_A_GPIO_Port GPIOA
#define INT_Orientation_Pin GPIO_PIN_3
#define INT_Orientation_GPIO_Port GPIOB
#define PWM_Out_Pin GPIO_PIN_4
#define PWM_Out_GPIO_Port GPIOB
#define PWM_Out_CHANNEL TIM_CHANNEL_1
#define TIP_CONTROL_TIMER TIM3
#define ADC_CONTROL_TIMER TIM2
#define ADC_CONTROL_TIMER_IRQ TIM2_IRQn
#define ADC_TRIGGER ADC_EXTERNALTRIGINJECCONV_T2_TRGO
#define INT_Movement_Pin GPIO_PIN_5
#define INT_Movement_GPIO_Port GPIOB
#define SCL_Pin GPIO_PIN_6
#define SCL_GPIO_Port GPIOB
#define SDA_Pin GPIO_PIN_7
#define SDA_GPIO_Port GPIOB
#endif
#define KEY_B_Pin GPIO_PIN_6
#define KEY_B_GPIO_Port GPIOA
#define TMP36_INPUT_Pin GPIO_PIN_7
#define TMP36_INPUT_GPIO_Port GPIOA
#define TMP36_ADC1_CHANNEL ADC_CHANNEL_7
#define TMP36_ADC2_CHANNEL ADC_CHANNEL_7
#define TIP_TEMP_Pin GPIO_PIN_0
#define TIP_TEMP_GPIO_Port GPIOB
#define TIP_TEMP_ADC1_CHANNEL ADC_CHANNEL_8
#define TIP_TEMP_ADC2_CHANNEL ADC_CHANNEL_8
#define VIN_Pin GPIO_PIN_1
#define VIN_GPIO_Port GPIOB
#define VIN_ADC1_CHANNEL ADC_CHANNEL_9
#define VIN_ADC2_CHANNEL ADC_CHANNEL_9
#define OLED_RESET_Pin GPIO_PIN_8
#define OLED_RESET_GPIO_Port GPIOA
#define KEY_A_Pin GPIO_PIN_9
#define KEY_A_GPIO_Port GPIOA
#define INT_Orientation_Pin GPIO_PIN_3
#define INT_Orientation_GPIO_Port GPIOB
#define PWM_Out_Pin GPIO_PIN_4
#define PWM_Out_GPIO_Port GPIOB
#define PWM_Out_CHANNEL TIM_CHANNEL_1
#define PWM_Out_CCR
#define INT_Movement_Pin GPIO_PIN_5
#define INT_Movement_GPIO_Port GPIOB
#define SCL_Pin GPIO_PIN_6
#define SCL_GPIO_Port GPIOB
#define SDA_Pin GPIO_PIN_7
#define SDA_GPIO_Port GPIOB
#endif
#ifdef MODEL_TS101
#if defined(MODEL_TS80) + defined(MODEL_TS80P) > 0
// TS80 & TS80P pin map
#define KEY_B_Pin GPIO_PIN_0
#define KEY_B_GPIO_Port GPIOB
#define TMP36_INPUT_Pin GPIO_PIN_4
#define TMP36_INPUT_GPIO_Port GPIOA
#define TMP36_ADC1_CHANNEL ADC_CHANNEL_4
#define TMP36_ADC2_CHANNEL ADC_CHANNEL_4
#define TIP_TEMP_Pin GPIO_PIN_3
#define TIP_TEMP_GPIO_Port GPIOA
#define TIP_TEMP_ADC1_CHANNEL ADC_CHANNEL_3
#define TIP_TEMP_ADC2_CHANNEL ADC_CHANNEL_3
#define KEY_B_Pin GPIO_PIN_10
#define KEY_B_GPIO_Port GPIOA
#define TMP36_INPUT_Pin GPIO_PIN_4
#define TMP36_INPUT_GPIO_Port GPIOA
#define TMP36_ADC1_CHANNEL ADC_CHANNEL_4
#define TMP36_ADC2_CHANNEL ADC_CHANNEL_4
#define TIP_TEMP_Pin GPIO_PIN_3
#define TIP_TEMP_GPIO_Port GPIOA
#define TIP_TEMP_ADC1_CHANNEL ADC_CHANNEL_3
#define TIP_TEMP_ADC2_CHANNEL ADC_CHANNEL_3
#define VIN_Pin GPIO_PIN_2
#define VIN_GPIO_Port GPIOA
#define VIN_ADC1_CHANNEL ADC_CHANNEL_2
#define VIN_ADC2_CHANNEL ADC_CHANNEL_2
#define PD_VIN_Pin GPIO_PIN_6
#define PD_VIN_GPIO_Port GPIOA
#define PD_VIN_ADC1_CHANNEL ADC_CHANNEL_6
#define PD_VIN_ADC2_CHANNEL ADC_CHANNEL_6
#define OLED_RESET_Pin GPIO_PIN_7
#define OLED_RESET_GPIO_Port GPIOA
#define KEY_A_Pin GPIO_PIN_8
#define KEY_A_GPIO_Port GPIOA
#define PWM_Out_Pin GPIO_PIN_0
#define PWM_Out_GPIO_Port GPIOA
#define PWM_Out_CHANNEL TIM_CHANNEL_1
#define TIP_CONTROL_TIMER TIM2
#define ADC_CONTROL_TIMER TIM4
#define ADC_CONTROL_TIMER_IRQ TIM4_IRQn
#define ADC_TRIGGER ADC_EXTERNALTRIGINJECCONV_T4_TRGO
#define SCL_Pin GPIO_PIN_0
#define SCL_GPIO_Port GPIOB
#define SDA_Pin GPIO_PIN_1
#define SDA_GPIO_Port GPIOB
// PD controller
#define SCL2_Pin GPIO_PIN_6
#define SCL2_GPIO_Port GPIOB
#define SDA2_Pin GPIO_PIN_5
#define SDA2_GPIO_Port GPIOB
#define INT_PD_Pin GPIO_PIN_7
#define INT_PD_GPIO_Port GPIOB
// Selecting the DC source to route to theg
#define DC_SELECT_Pin GPIO_PIN_4
#define DC_SELECT_GPIO_Port GPIOB
#define PD_SELECT_Pin GPIO_PIN_15
#define PD_SELECT_GPIO_Port GPIOA
#define VIN_Pin GPIO_PIN_2
#define VIN_GPIO_Port GPIOA
#define VIN_ADC1_CHANNEL ADC_CHANNEL_2
#define VIN_ADC2_CHANNEL ADC_CHANNEL_2
#define OLED_RESET_Pin GPIO_PIN_15
#define OLED_RESET_GPIO_Port GPIOA
#define KEY_A_Pin GPIO_PIN_1
#define KEY_A_GPIO_Port GPIOB
#define INT_Orientation_Pin GPIO_PIN_4
#define INT_Orientation_GPIO_Port GPIOB
#define PWM_Out_Pin GPIO_PIN_6
#define PWM_Out_GPIO_Port GPIOA
#define PWM_Out_CHANNEL TIM_CHANNEL_1
#define INT_Movement_Pin GPIO_PIN_5
#define INT_Movement_GPIO_Port GPIOB
#define SCL_Pin GPIO_PIN_6
#define SCL_GPIO_Port GPIOB
#define SDA_Pin GPIO_PIN_7
#define SDA_GPIO_Port GPIOB
#define SCL2_Pin GPIO_PIN_5
#define SCL2_GPIO_Port GPIOA
#define SDA2_Pin GPIO_PIN_1
#define SDA2_GPIO_Port GPIOA
#define TIP_RESISTANCE_SENSE_Pin GPIO_PIN_1
#define TIP_RESISTANCE_SENSE_GPIO_Port GPIOA
#endif
#endif
#if defined(MODEL_TS80) + defined(MODEL_TS80P) > 0
// TS80 & TS80P pin map
#define KEY_B_Pin GPIO_PIN_0
#define KEY_B_GPIO_Port GPIOB
#define TMP36_INPUT_Pin GPIO_PIN_4
#define TMP36_INPUT_GPIO_Port GPIOA
#define TMP36_ADC1_CHANNEL ADC_CHANNEL_4
#define TMP36_ADC2_CHANNEL ADC_CHANNEL_4
#define TIP_TEMP_Pin GPIO_PIN_3
#define TIP_TEMP_GPIO_Port GPIOA
#define TIP_TEMP_ADC1_CHANNEL ADC_CHANNEL_3
#define TIP_TEMP_ADC2_CHANNEL ADC_CHANNEL_3
#define VIN_Pin GPIO_PIN_2
#define VIN_GPIO_Port GPIOA
#define VIN_ADC1_CHANNEL ADC_CHANNEL_2
#define VIN_ADC2_CHANNEL ADC_CHANNEL_2
#define OLED_RESET_Pin GPIO_PIN_15
#define OLED_RESET_GPIO_Port GPIOA
#define KEY_A_Pin GPIO_PIN_1
#define KEY_A_GPIO_Port GPIOB
#define INT_Orientation_Pin GPIO_PIN_4
#define INT_Orientation_GPIO_Port GPIOB
#define PWM_Out_Pin GPIO_PIN_6
#define PWM_Out_GPIO_Port GPIOA
#define PWM_Out_CHANNEL TIM_CHANNEL_1
#define TIP_CONTROL_TIMER TIM3
#define ADC_CONTROL_TIMER TIM2
#define ADC_CONTROL_TIMER_IRQ TIM2_IRQn
#define ADC_TRIGGER ADC_EXTERNALTRIGINJECCONV_T2_TRGO
#define INT_Movement_Pin GPIO_PIN_5
#define INT_Movement_GPIO_Port GPIOB
#define SCL_Pin GPIO_PIN_6
#define SCL_GPIO_Port GPIOB
#define SDA_Pin GPIO_PIN_7
#define SDA_GPIO_Port GPIOB
#define SCL2_Pin GPIO_PIN_5
#define SCL2_GPIO_Port GPIOA
#define SDA2_Pin GPIO_PIN_1
#define SDA2_GPIO_Port GPIOA
#endif
#ifdef MODEL_TS80P
// TS80P pin map
#define INT_PD_Pin GPIO_PIN_9
#define INT_PD_GPIO_Port GPIOA
#endif
#ifdef MODEL_TS80P
// TS80P pin map
#define INT_PD_Pin GPIO_PIN_9
#define INT_PD_GPIO_Port GPIOA
#endif
#endif /* BSP_MINIWARE_PINS_H_ */

View File

@@ -5,9 +5,9 @@
#include "Settings.h"
#include "USBPD.h"
#include "configuration.h"
#include "stm32f1xx_hal.h"
void power_check() {
#ifdef POW_PD
#if POW_PD
// Cant start QC until either PD works or fails
if (!USBPowerDelivery::negotiationComplete()) {
return;
@@ -25,10 +25,7 @@ bool getIsPoweredByDCIN() {
#if defined(MODEL_TS80) + defined(MODEL_TS80P) > 0
return false;
#endif
#ifdef MODEL_TS101
// TODO have to check what we are using
return HAL_GPIO_ReadPin(DC_SELECT_GPIO_Port, DC_SELECT_Pin) == GPIO_PIN_SET;
#endif
#ifdef MODEL_TS100
return true;
#endif

View File

@@ -18,8 +18,8 @@ DMA_HandleTypeDef hdma_i2c1_rx;
DMA_HandleTypeDef hdma_i2c1_tx;
IWDG_HandleTypeDef hiwdg;
TIM_HandleTypeDef htimADC;
TIM_HandleTypeDef htimTip;
TIM_HandleTypeDef htim2;
TIM_HandleTypeDef htim3;
#define ADC_FILTER_LEN 4
#define ADC_SAMPLES 16
uint16_t ADCReadings[ADC_SAMPLES]; // Used to store the adc readings for the handle cold junction temp
@@ -29,8 +29,8 @@ static void SystemClock_Config(void);
static void MX_ADC1_Init(void);
static void MX_I2C1_Init(void);
static void MX_IWDG_Init(void);
static void MX_TIP_CONTROL_TIMER_Init(void);
static void MX_ADC_CONTROL_TIMER_Init(void);
static void MX_TIM3_Init(void);
static void MX_TIM2_Init(void);
static void MX_DMA_Init(void);
static void MX_GPIO_Init(void);
static void MX_ADC2_Init(void);
@@ -45,13 +45,11 @@ void Setup_HAL() {
MX_GPIO_Init();
MX_DMA_Init();
#ifndef I2C_SOFT_BUS_1
MX_I2C1_Init();
#endif
MX_ADC1_Init();
MX_ADC2_Init();
MX_TIP_CONTROL_TIMER_Init();
MX_ADC_CONTROL_TIMER_Init();
MX_TIM3_Init();
MX_TIM2_Init();
MX_IWDG_Init();
HAL_ADC_Start_DMA(&hadc1, (uint32_t *)ADCReadings, (ADC_SAMPLES)); // start DMA of normal readings
HAL_ADCEx_InjectedStart(&hadc1); // enable injected readings
@@ -70,41 +68,7 @@ uint16_t getADCHandleTemp(uint8_t sample) {
return filter.average() >> 1;
}
#ifdef HAS_SPLIT_POWER_PATH
static history<uint16_t, ADC_FILTER_LEN> filteredDC = {{0}, 0, 0};
static history<uint16_t, ADC_FILTER_LEN> filteredPD = {{0}, 0, 0};
uint16_t getRawDCVin() { return filteredDC.average(); }
uint16_t getRawPDVin() { return filteredPD.average(); }
#endif
uint16_t getADCVin(uint8_t sample) {
#ifdef HAS_SPLIT_POWER_PATH
// In split power path operation, we need to read both inputs, and return the larger
if (sample) {
{
uint16_t latestADC = 0;
latestADC += hadc2.Instance->JDR1;
latestADC += hadc2.Instance->JDR2;
latestADC <<= 3;
filteredDC.update(latestADC);
}
{
uint16_t latestADC = 0;
latestADC += hadc2.Instance->JDR3;
latestADC += hadc2.Instance->JDR4;
latestADC <<= 3;
filteredPD.update(latestADC);
}
}
uint16_t dc = filteredDC.average();
uint16_t pd = filteredPD.average();
if (dc > pd) {
return dc;
}
return pd;
#else
static history<uint16_t, ADC_FILTER_LEN> filter = {{0}, 0, 0};
if (sample) {
uint16_t latestADC = 0;
@@ -113,11 +77,10 @@ uint16_t getADCVin(uint8_t sample) {
latestADC += hadc2.Instance->JDR2;
latestADC += hadc2.Instance->JDR3;
latestADC += hadc2.Instance->JDR4;
latestADC <<= 1;
latestADC <<= 3;
filter.update(latestADC);
}
return filter.average();
#endif
}
// Returns either average or instant value. When sample is set the samples from the injected ADC are copied to the filter and then the raw reading is returned
uint16_t getTipRawTemp(uint8_t sample) {
@@ -215,7 +178,7 @@ static void MX_ADC1_Init(void) {
sConfigInjected.InjectedRank = 1;
sConfigInjected.InjectedNbrOfConversion = 4;
sConfigInjected.InjectedSamplingTime = ADC_SAMPLETIME_28CYCLES_5;
sConfigInjected.ExternalTrigInjecConv = ADC_TRIGGER;
sConfigInjected.ExternalTrigInjecConv = ADC_EXTERNALTRIGINJECCONV_T2_TRGO;
sConfigInjected.AutoInjectedConv = DISABLE;
sConfigInjected.InjectedDiscontinuousConvMode = DISABLE;
sConfigInjected.InjectedOffset = 0;
@@ -229,9 +192,8 @@ static void MX_ADC1_Init(void) {
HAL_ADCEx_InjectedConfigChannel(&hadc1, &sConfigInjected);
SET_BIT(hadc1.Instance->CR1, (ADC_CR1_JEOCIE)); // Enable end of injected conv irq
// Run ADC internal calibration
while (HAL_ADCEx_Calibration_Start(&hadc1) != HAL_OK) {
while (HAL_ADCEx_Calibration_Start(&hadc1) != HAL_OK)
;
}
}
/* ADC2 init function */
@@ -241,7 +203,7 @@ static void MX_ADC2_Init(void) {
/**Common config
*/
hadc2.Instance = ADC2;
hadc2.Init.ScanConvMode = ADC_SCAN_ENABLE;
hadc2.Init.ScanConvMode = ADC_SCAN_DISABLE;
hadc2.Init.ContinuousConvMode = ENABLE;
hadc2.Init.DiscontinuousConvMode = DISABLE;
hadc2.Init.ExternalTrigConv = ADC_SOFTWARE_START;
@@ -255,27 +217,21 @@ static void MX_ADC2_Init(void) {
sConfigInjected.InjectedRank = ADC_INJECTED_RANK_1;
sConfigInjected.InjectedNbrOfConversion = 4;
sConfigInjected.InjectedSamplingTime = ADC_SAMPLETIME_28CYCLES_5;
sConfigInjected.ExternalTrigInjecConv = ADC_TRIGGER;
sConfigInjected.ExternalTrigInjecConv = ADC_EXTERNALTRIGINJECCONV_T2_TRGO;
sConfigInjected.AutoInjectedConv = DISABLE;
sConfigInjected.InjectedDiscontinuousConvMode = DISABLE;
sConfigInjected.InjectedOffset = 0;
HAL_ADCEx_InjectedConfigChannel(&hadc2, &sConfigInjected);
sConfigInjected.InjectedRank = ADC_INJECTED_RANK_2;
HAL_ADCEx_InjectedConfigChannel(&hadc2, &sConfigInjected);
#ifdef HAS_SPLIT_POWER_PATH
sConfigInjected.InjectedChannel = PD_VIN_ADC2_CHANNEL;
#endif
sConfigInjected.InjectedRank = ADC_INJECTED_RANK_3;
HAL_ADCEx_InjectedConfigChannel(&hadc2, &sConfigInjected);
sConfigInjected.InjectedRank = ADC_INJECTED_RANK_4;
HAL_ADCEx_InjectedConfigChannel(&hadc2, &sConfigInjected);
// Run ADC internal calibration
while (HAL_ADCEx_Calibration_Start(&hadc2) != HAL_OK) {
while (HAL_ADCEx_Calibration_Start(&hadc2) != HAL_OK)
;
}
}
/* I2C1 init function */
static void MX_I2C1_Init(void) {
@@ -303,43 +259,35 @@ static void MX_IWDG_Init(void) {
}
/* TIM3 init function */
static void MX_TIP_CONTROL_TIMER_Init(void) {
static void MX_TIM3_Init(void) {
TIM_ClockConfigTypeDef sClockSourceConfig;
TIM_MasterConfigTypeDef sMasterConfig;
TIM_OC_InitTypeDef sConfigOC;
htimTip.Instance = TIP_CONTROL_TIMER;
#ifdef TIP_HAS_DIRECT_PWM
htimTip.Init.Prescaler = 100;
#else
htimTip.Init.Prescaler = 3;
#endif
htimTip.Init.CounterMode = TIM_COUNTERMODE_UP;
htimTip.Init.Period = 255; // 5 Khz PWM freq
htimTip.Init.ClockDivision = TIM_CLOCKDIVISION_DIV4; // 4mhz before div
htimTip.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; // Preload the ARR register (though we dont use this)
HAL_TIM_Base_Init(&htimTip);
htim3.Instance = TIM3;
htim3.Init.Prescaler = 8;
htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
htim3.Init.Period = 100; // 5 Khz PWM freq
htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV4; // 4mhz before div
htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; // Preload the ARR register (though we dont use this)
HAL_TIM_Base_Init(&htim3);
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
HAL_TIM_ConfigClockSource(&htimTip, &sClockSourceConfig);
HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig);
HAL_TIM_PWM_Init(&htimTip);
HAL_TIM_PWM_Init(&htim3);
HAL_TIM_OC_Init(&htimTip);
HAL_TIM_OC_Init(&htim3);
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
HAL_TIMEx_MasterConfigSynchronization(&htimTip, &sMasterConfig);
HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig);
sConfigOC.OCMode = TIM_OCMODE_PWM1;
#ifdef TIP_HAS_DIRECT_PWM
sConfigOC.Pulse = 0; // PWM is direct to tip
#else
sConfigOC.Pulse = 127; // 50% duty cycle, that is AC coupled through the cap to provide an on signal (This does not do tip at 50% duty cycle)
#endif
sConfigOC.OCMode = TIM_OCMODE_PWM1;
sConfigOC.Pulse = 50; // 50% duty cycle, that is AC coupled through the cap
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
sConfigOC.OCFastMode = TIM_OCFAST_ENABLE;
HAL_TIM_PWM_ConfigChannel(&htimTip, &sConfigOC, PWM_Out_CHANNEL);
HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, PWM_Out_CHANNEL);
GPIO_InitTypeDef GPIO_InitStruct;
@@ -354,12 +302,12 @@ static void MX_TIP_CONTROL_TIMER_Init(void) {
// Remap TIM3_CH1 to be on PB4
__HAL_AFIO_REMAP_TIM3_PARTIAL();
#else
// No re-map required
// No re-map required
#endif
HAL_TIM_PWM_Start(&htimTip, PWM_Out_CHANNEL);
HAL_TIM_PWM_Start(&htim3, PWM_Out_CHANNEL);
}
/* TIM3 init function */
static void MX_ADC_CONTROL_TIMER_Init(void) {
static void MX_TIM2_Init(void) {
/*
* We use the channel 1 to trigger the ADC at end of PWM period
* And we use the channel 4 as the PWM modulation source using Interrupts
@@ -370,30 +318,30 @@ static void MX_ADC_CONTROL_TIMER_Init(void) {
// Timer 2 is fairly slow as its being used to run the PWM and trigger the ADC
// in the PWM off time.
htimADC.Instance = ADC_CONTROL_TIMER;
htim2.Instance = TIM2;
// dummy value, will be reconfigured by BSPInit()
htimADC.Init.Prescaler = 2000; // 2 MHz timer clock/2000 = 1 kHz tick rate
htim2.Init.Prescaler = 2000; // 2 MHz timer clock/2000 = 1 kHz tick rate
// pwm out is 10k from tim3, we want to run our PWM at around 10hz or slower on the output stage
// These values give a rate of around 3.5 Hz for "fast" mode and 1.84 Hz for "slow"
htimADC.Init.CounterMode = TIM_COUNTERMODE_UP;
htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
// dummy value, will be reconfigured by BSPInit()
htimADC.Init.Period = powerPWM + 14 * 2;
htim2.Init.Period = powerPWM + 14 * 2;
htimADC.Init.ClockDivision = TIM_CLOCKDIVISION_DIV4; // 8 MHz (x2 APB1) before divide
htimADC.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
htimADC.Init.RepetitionCounter = 0;
HAL_TIM_Base_Init(&htimADC);
htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV4; // 8 MHz (x2 APB1) before divide
htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
htim2.Init.RepetitionCounter = 0;
HAL_TIM_Base_Init(&htim2);
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
HAL_TIM_ConfigClockSource(&htimADC, &sClockSourceConfig);
HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig);
HAL_TIM_PWM_Init(&htimADC);
HAL_TIM_OC_Init(&htimADC);
HAL_TIM_PWM_Init(&htim2);
HAL_TIM_OC_Init(&htim2);
sMasterConfig.MasterOutputTrigger = TIM_TRGO_OC1;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
HAL_TIMEx_MasterConfigSynchronization(&htimADC, &sMasterConfig);
HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig);
sConfigOC.OCMode = TIM_OCMODE_PWM1;
// dummy value, will be reconfigured by BSPInit() in the BSP.cpp
@@ -406,15 +354,15 @@ static void MX_ADC_CONTROL_TIMER_Init(void) {
* */
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
sConfigOC.OCFastMode = TIM_OCFAST_ENABLE;
HAL_TIM_PWM_ConfigChannel(&htimADC, &sConfigOC, TIM_CHANNEL_1);
HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1);
sConfigOC.Pulse = 0; // default to entirely off
HAL_TIM_OC_ConfigChannel(&htimADC, &sConfigOC, TIM_CHANNEL_4);
HAL_TIM_OC_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4);
HAL_TIM_Base_Start_IT(&htimADC);
HAL_TIM_PWM_Start(&htimADC, TIM_CHANNEL_1);
HAL_TIM_PWM_Start_IT(&htimADC, TIM_CHANNEL_4);
HAL_NVIC_SetPriority(ADC_CONTROL_TIMER_IRQ, 15, 0);
HAL_NVIC_EnableIRQ(ADC_CONTROL_TIMER_IRQ);
HAL_TIM_Base_Start_IT(&htim2);
HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1);
HAL_TIM_PWM_Start_IT(&htim2, TIM_CHANNEL_4);
HAL_NVIC_SetPriority(TIM2_IRQn, 15, 0);
HAL_NVIC_EnableIRQ(TIM2_IRQn);
}
/**
@@ -498,8 +446,8 @@ static void MX_GPIO_Init(void) {
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
#endif
#else
/* TS80 */
/* Leave USB lines open circuit*/
/* TS80 */
/* Leave USB lines open circuit*/
#endif
@@ -514,45 +462,12 @@ static void MX_GPIO_Init(void) {
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(OLED_RESET_GPIO_Port, &GPIO_InitStruct);
HAL_GPIO_WritePin(OLED_RESET_GPIO_Port, OLED_RESET_Pin, GPIO_PIN_RESET);
// Pull down LCD reset
HAL_GPIO_WritePin(OLED_RESET_GPIO_Port, OLED_RESET_Pin, GPIO_PIN_RESET);
HAL_Delay(30);
HAL_GPIO_WritePin(OLED_RESET_GPIO_Port, OLED_RESET_Pin, GPIO_PIN_SET);
#ifdef DC_SELECT_Pin
GPIO_InitStruct.Pin = DC_SELECT_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(DC_SELECT_GPIO_Port, &GPIO_InitStruct);
HAL_GPIO_WritePin(DC_SELECT_GPIO_Port, DC_SELECT_Pin, GPIO_PIN_RESET);
#endif
#ifdef PD_SELECT_Pin
GPIO_InitStruct.Pin = PD_SELECT_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(PD_SELECT_GPIO_Port, &GPIO_InitStruct);
HAL_GPIO_WritePin(PD_SELECT_GPIO_Port, PD_SELECT_Pin, GPIO_PIN_RESET);
#endif
#ifdef TIP_RESISTANCE_SENSE_Pin
GPIO_InitStruct.Pin = TIP_RESISTANCE_SENSE_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(TIP_RESISTANCE_SENSE_GPIO_Port, &GPIO_InitStruct);
HAL_GPIO_WritePin(TIP_RESISTANCE_SENSE_GPIO_Port, TIP_RESISTANCE_SENSE_Pin, GPIO_PIN_RESET);
#endif
#ifdef INT_PD_Pin
GPIO_InitStruct.Pin = INT_PD_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(INT_PD_GPIO_Port, &GPIO_InitStruct);
#endif
}
#ifdef USE_FULL_ASSERT
void assert_failed(uint8_t *file, uint32_t line) { asm("bkpt"); }

View File

@@ -7,7 +7,7 @@
#ifndef SETUP_H_
#define SETUP_H_
#include "configuration.h"
#ifdef __cplusplus
extern "C" {
#endif
@@ -24,18 +24,13 @@ extern I2C_HandleTypeDef hi2c1;
extern IWDG_HandleTypeDef hiwdg;
extern TIM_HandleTypeDef htimADC;
extern TIM_HandleTypeDef htimTip;
extern TIM_HandleTypeDef htim2;
extern TIM_HandleTypeDef htim3;
void Setup_HAL();
uint16_t getADCHandleTemp(uint8_t sample);
uint16_t getADCVin(uint8_t sample);
void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); // Since the hal header file does not define this one
#ifdef HAS_SPLIT_POWER_PATH
uint16_t getRawDCVin();
uint16_t getRawPDVin();
#endif
#ifdef __cplusplus
}
#endif

Some files were not shown because too many files have changed in this diff Show More