1
0
forked from me/IronOS

Compare commits

..

296 Commits
v2.20 ... v2.21

Author SHA1 Message Date
Ben V. Brown
5d96470e45 Merge pull request #1653 from Ralim/dev
Release 2.21
2023-04-09 19:51:01 +10:00
Ben V. Brown
1a087ca624 Merge branch 'master' into dev 2023-04-09 19:47:50 +10:00
discip
422b5b7563 unifying (#1657) 2023-04-07 23:42:14 +00:00
discip
38625b2f7e Merge pull request #1658 from Ralim/discip-patch-1
correcting MAX_POWER_LIMIT to 120
2023-04-08 01:36:12 +02:00
discip
cd592c94af Merge pull request #1654 from federicodilo/patch-5
Update translation_IT.json
2023-04-08 01:35:24 +02:00
discip
cc180f7d1a correcting MAX_POWER_LIMIT to 120 2023-04-08 01:19:07 +02:00
Federico Di Lorenzo
00a36f0fa0 Update translation_IT.json 2023-04-07 19:20:23 +02:00
Federico Di Lorenzo
0b5a617f8f Update translation_IT.json 2023-04-07 19:18:45 +02:00
Federico Di Lorenzo
25ccfc2204 Update translation_IT.json 2023-04-07 12:02:48 +02:00
Ben V. Brown
75c2589a6d Update version.h 2023-04-07 13:42:41 +10:00
River M
e5b1a364f3 fix typo on run command alignment (#1652)
* fix: edit button mkdocs

* fix: edit button on mkdocs

- should open edit page for  dev branch and requires  login if person is not already logged into github

* add favicons for the  mkdocs

* Delete android-chrome-192x192.png

* Delete android-chrome-512x512.png

* Delete favicon-16x16.png

* Delete favicon.ico

* Delete favicon-32x32.png

* Delete apple-touch-icon.png

* Create temp

* add favicon for mkdocs

* mkdocs - highlighting for source code

- Enables highlighting of source code in code blocks
- allow highlighting for other languages that are not default 23
- add favicon and custom location (until  folder names are changed to /docs  and /doc/img

* Delete temp

* Add files via upload

* organize mkdocs

* add mkdocs extensions & plugins

* remove favicon

* Delete favicon.ico

* Delete font-license.txt

* fix mkdocs for  markdown extensions

fixed the name since  this is not a materials theme.

* add plugins  to mkdocs

* add mkdocs git-revision-date

displays the last revision date of the current page of the documentation based on Git. this could be displayed at the bottom of each page.

* add plugins for MKdocs

* closes ticket  https://github.com/Ralim/IronOS/issues/1649

* clean up mkdocs plugins

break up code line as it's getting too long with more plugins.

* fix pip install comand

* fix typo

---------

Co-authored-by: Ben V. Brown <5425387+Ralim@users.noreply.github.com>
2023-04-07 13:04:43 +10:00
River M
da52357d87 add plugins for mkdocs features (#1650) 2023-04-07 12:47:06 +10:00
River M
8c90d3dee2 fix mkdocs markdown extensions (#1648)
* fix: edit button mkdocs

* fix: edit button on mkdocs

- should open edit page for  dev branch and requires  login if person is not already logged into github

* add favicons for the  mkdocs

* Delete android-chrome-192x192.png

* Delete android-chrome-512x512.png

* Delete favicon-16x16.png

* Delete favicon.ico

* Delete favicon-32x32.png

* Delete apple-touch-icon.png

* Create temp

* add favicon for mkdocs

* mkdocs - highlighting for source code

- Enables highlighting of source code in code blocks
- allow highlighting for other languages that are not default 23
- add favicon and custom location (until  folder names are changed to /docs  and /doc/img

* Delete temp

* Add files via upload

* organize mkdocs

* add mkdocs extensions & plugins

* remove favicon

* Delete favicon.ico

* Delete font-license.txt

* fix mkdocs for  markdown extensions

fixed the name since  this is not a materials theme.

* add plugins  to mkdocs

* add mkdocs git-revision-date

displays the last revision date of the current page of the documentation based on Git. this could be displayed at the bottom of each page.
2023-04-06 07:13:37 +10:00
River M
84095a80e8 fix Mkdocs edit button (#1642)
* fix: edit button mkdocs

* fix: edit button on mkdocs

- should open edit page for  dev branch and requires  login if person is not already logged into github

* add favicons for the  mkdocs

* Delete android-chrome-192x192.png

* Delete android-chrome-512x512.png

* Delete favicon-16x16.png

* Delete favicon.ico

* Delete favicon-32x32.png

* Delete apple-touch-icon.png

* Create temp

* add favicon for mkdocs

* mkdocs - highlighting for source code

- Enables highlighting of source code in code blocks
- allow highlighting for other languages that are not default 23
- add favicon and custom location (until  folder names are changed to /docs  and /doc/img

* Delete temp

* Add files via upload

* organize mkdocs

* add mkdocs extensions & plugins

* remove favicon

* Delete favicon.ico

* Delete font-license.txt
2023-04-04 16:19:17 +10:00
discip
ab3f5bd695 Merge pull request #1641 from discip/power_limit_display_fix
fixing power limit display
2023-04-04 01:00:16 +02:00
discip
a6926519d1 Update settingsGUI.cpp 2023-04-02 01:14:46 +02:00
Samuelrmlink
445069c92b USBPDDebug: Check whether VPDO is EPR or PPS (#1600)
* USBPDDebug: Check whether VPDO is EPR or PPS.

* USBPDDebug - Allow trailing zeros after a decimal point.

---------

Co-authored-by: discip <53649486+discip@users.noreply.github.com>
2023-04-02 00:14:45 +11:00
discip
e5e77aa475 Merge pull request #1616 from Ralim/discip-patch-1
implementing #1594
2023-04-01 05:24:33 +02:00
Ben V. Brown
0bbf8fb4c6 Merge branch 'dev' into discip-patch-1 2023-04-01 14:20:58 +11:00
Ben V. Brown
f6975b0aa2 Update ble_handlers.cpp 2023-04-01 14:20:10 +11:00
slycordinator
dcfb6507a6 Added Variables to Dockerfile (#1597)
Co-authored-by: discip <53649486+discip@users.noreply.github.com>
Co-authored-by: Ben V. Brown <5425387+Ralim@users.noreply.github.com>
2023-04-01 03:05:11 +00:00
discip
45c00dc767 Merge branch 'dev' into discip-patch-1 2023-03-31 22:59:31 +02:00
Ben V. Brown
e13f118788 Change to 128bit UUID's (#1608)
* Change to 128bit UUID's

* Make attrs const for BLE

* Forcefully set docker project name

* Cleaner UUIDS

* Cant use const attrs

* Adjust ram sections

* Update UUID decode

* Settings uuids

* Fix missed decoder for writing

---------

Co-authored-by: discip <53649486+discip@users.noreply.github.com>
2023-03-29 12:45:09 +11:00
discip
f937c8d7bd Merge pull request #1637 from StevenSeifried/translation_DE_update
Update translation_DE.json
2023-03-26 23:07:23 +02:00
Steven Seifried
9f7d7835ec Updated translation_DE.json 2023-03-26 22:56:37 +02:00
discip
fe9043fddf Merge branch 'dev' into discip-patch-1 2023-03-26 13:16:56 +02:00
Ben V. Brown
79187c3f5e Forcefully set docker project name 2023-03-26 12:48:30 +11:00
discip
3a4638ef42 Merge branch 'dev' into discip-patch-1 2023-03-26 01:47:47 +01:00
discip
fdff919508 Merge pull request #1632 from discip/fixing-translation_RO-using-diacritics
Update translation_RO.json
2023-03-26 01:45:08 +01:00
discip
9c8abbdfc2 Readjusting brightness (Pinecil v2) (#1622) 2023-03-26 11:43:56 +11:00
discip
744dd6b898 Merge branch 'dev' into discip-patch-1 2023-03-26 00:48:41 +01:00
discip
c192792b8f Merge branch 'dev' into fixing-translation_RO-using-diacritics 2023-03-26 00:47:32 +01:00
discip
070064e59e adapting 10 °C > 50 °F (#1636)
* Update configuration.h

* Update configuration.h

* Update configuration.h
2023-03-25 23:46:44 +00:00
discip
b41c44a191 Merge branch 'Ralim:dev' into fixing-translation_RO-using-diacritics 2023-03-24 23:04:19 +01:00
Vladimir
6177d4e2a4 Add building steps for Pinecil V2 to Development.md (#1634) 2023-03-24 13:19:52 +00:00
Vladimir
11bad84ce7 Add FW version to BLE characteristic (#1633)
Implements #1610
2023-03-24 19:15:05 +11:00
discip
2a27c38999 Update translation_RO.json 2023-03-21 06:48:21 +01:00
discip
d8b6fac176 Merge branch 'dev' into discip-patch-1 2023-03-20 22:12:50 +01:00
discip
0384288a37 Update translation_RO.json 2023-03-20 21:56:58 +01:00
discip
ccbee21872 Merge pull request #1631 from patridge/patch-1
Update settings icon description
2023-03-20 21:36:06 +01:00
Adam Patridge
9247075458 Fix Markdown link typo 2023-03-20 11:30:26 -07:00
Adam Patridge
d834a3395c Update settings icon description 2023-03-20 11:23:24 -07:00
discip
bed400e527 Merge branch 'dev' into discip-patch-1 2023-03-17 22:37:16 +01:00
discip
2a2acfe649 Merge pull request #1628 from mobycl1ck/patch-1
Update translation_RO.json
2023-03-17 22:35:44 +01:00
discip
e2456c3ac1 Apply suggestions from code review 2023-03-17 22:32:38 +01:00
mobycl1ck
b4900daecc Update translation_RO.json 2023-03-17 17:41:18 +01:00
discip
60f0437bf8 Merge branch 'dev' into discip-patch-1 2023-03-15 20:05:11 +01:00
discip
5a75cd077c Merge pull request #1627 from G-Pereira/patch-1
Update translation_PT.json
2023-03-15 20:03:44 +01:00
Gonçalo Pereira
87115b274d Update translation_PT.json 2023-03-15 13:26:47 +00:00
discip
cc2b072b4a Merge pull request #1626 from Ralim/discip-patch-2
Update translation_EN.json
2023-03-15 08:42:29 +01:00
discip
91f6c42c4a Update translation_EN.json 2023-03-15 00:19:01 +01:00
discip
c7bdbbb4b5 Merge branch 'dev' into discip-patch-1 2023-03-14 22:35:47 +01:00
discip
0a4560efac Merge pull request #1625 from River-Mochi/dev
Corrected value in °F to match value in °C
2023-03-14 22:35:07 +01:00
discip
656f1a3275 Merge branch 'dev' into discip-patch-1 2023-03-14 22:24:47 +01:00
discip
b32d5abda4 Merge branch 'dev' into dev 2023-03-14 22:24:02 +01:00
discip
72c1e1906d Merge pull request #1612 from ViPeR5000/dev
update translation_pt.jason
2023-03-14 22:23:49 +01:00
discip
36d5c05c8d Merge branch 'dev' into discip-patch-1 2023-03-14 22:21:52 +01:00
discip
2863b9321b Merge branch 'dev' into dev 2023-03-14 22:21:01 +01:00
discip
f0d1cdb3ff Merge branch 'dev' into dev 2023-03-14 22:20:37 +01:00
discip
ecef4002c4 Apply suggestions from code review 2023-03-14 22:19:54 +01:00
discip
e247010055 Merge pull request #1612 from ViPeR5000/dev
update translation_pt.jason
2023-03-14 22:19:00 +01:00
discip
e5c2eb8bbc Apply suggestions from code review 2023-03-14 22:08:01 +01:00
River M
8ea8632bb9 Update configuration.h 2023-03-14 14:05:45 -07:00
discip
53f74f3490 Merge branch 'dev' into dev 2023-03-13 23:27:26 +01:00
discip
3e3d0bbb84 Merge branch 'dev' into discip-patch-1 2023-03-13 23:27:01 +01:00
discip
ccc44bd217 Merge pull request #1623 from Devnol/dev
Add new EL translation strings
2023-03-13 22:57:55 +01:00
Panos Koutsoumanis
3371d001fc Update Translations/translation_EL.json
Co-authored-by: discip <53649486+discip@users.noreply.github.com>
2023-03-13 23:55:28 +02:00
Panos Koutsoumanis
9014f16ff3 Update Translations/translation_EL.json
Co-authored-by: discip <53649486+discip@users.noreply.github.com>
2023-03-13 23:55:18 +02:00
Devnol
3ab2ec9f84 Add new EL translation strings
Signed-off-by: Devnol <pgkoutsoumanis@gmail.com>
2023-03-13 23:34:55 +02:00
discip
2319eebe65 Update ble_handlers.cpp 2023-03-13 18:38:16 +01:00
discip
495954fd1c Merge branch 'dev' into dev 2023-03-11 15:30:31 +01:00
discip
1d47a85598 Merge branch 'dev' into discip-patch-1 2023-03-11 15:14:41 +01:00
discip
e12903ec28 Update ble_handlers.cpp 2023-03-11 13:56:47 +01:00
Marek Kraus
73be260b98 Merge pull request #1617 from StevenSeifried/translation_DE
Updated translation_DE.json
2023-03-11 13:47:21 +01:00
discip
dc47eb4221 Update translation_DE.json
unified translation
2023-03-11 13:44:23 +01:00
Steven Seifried
8a4a9cfc07 Updated translation_DE.json 2023-03-11 09:58:53 +01:00
Marek Kraus
e5aa51290d Merge pull request #1611 from DjordjeMandic/patch-1
Update README.md to fix small typo
2023-03-11 08:01:31 +01:00
Djordje
631b7ed7fc Update README.md
Fix small typo from #1588
2023-03-11 01:47:01 +01:00
discip
6174d80586 Update ble_handlers.cpp 2023-03-11 01:45:44 +01:00
discip
d88eed4e18 Update ble_handlers.cpp
Tried to implement #1594
2023-03-11 01:26:35 +01:00
Rui Melo
b021c85fdc update translation_pt.jason
update translation_pt.jason
2023-03-08 14:09:05 +00:00
Foxie The Dev
5022eca8af Fix README badges (#1607)
Fix badge image sources, and their target link locations to be up to date and correct.
2023-03-05 12:28:54 +11:00
River M
344c1a649d Update documents, esp. Pinecil V2 instructions (#1604)
* Update README.md

* Update Pinecil V2.md

* Update Pinecil V2.md

update very outdated instructions on how to update Pinecil V2.

* Update Pinecil V1.md

* Update Pinecil V2.md

* Update Pinecil V2.md
2023-03-02 17:58:46 +11:00
Ben V. Brown
6fc27e1544 Merge pull request #1596 from dmitrygribenchuk/translation
update translation
2023-02-24 07:51:30 +11:00
Dmitry Gribenchuk
682662d8e3 update translation_BE.json translation_PL.json translation_RU.json translation_UK.json 2023-02-23 21:52:20 +02:00
discip
68d18a4fb0 Merge pull request #1593 from Ralim/discip-patch-1
minor formatting fix
2023-02-23 01:20:31 +01:00
discip
36f5a14920 minor formatting fix 2023-02-23 01:19:28 +01:00
Ben V. Brown
8bff89ac02 Merge pull request #1592 from NeilHanlon/ble-fixes
Fix updating certain settings over BLE
2023-02-23 09:11:09 +11:00
Neil Hanlon
2a244df7b1 Fix typo in BLE settings mapping 2023-02-22 01:28:04 -05:00
Neil Hanlon
a76049acde Fix bug in setSettingsValue for values constrained between 0 and 1
Fixed a bug in the `setSettingValue` function that caused valid values
within the allowed range to be incorrectly constrained to the minimum
value, when the default value of the option was zero and the allowed
range was from zero to one. The bug was fixed by updating the order of
the `if` statements in the function to ensure that the range check is
done before the value is set. This ensures that valid values within the
range are correctly retained, while out-of-range values are still
constrained to the allowed range.
2023-02-22 01:26:06 -05:00
Neil Hanlon
b1658ec6ee Handle updating certain settings updates over BLE - Fixes #1560 2023-02-22 01:25:49 -05:00
Ben V. Brown
bb151f2dc5 Merge pull request #1588 from DjordjeMandic/patch-2
Update README.md to explain why TS80 is not recommended
2023-02-21 14:55:49 +11:00
Djordje
85b72ec9f8 Update README.md
Add explanation why TS80 is no longer recommended
2023-02-21 03:06:22 +01:00
Ben V. Brown
f29ec5cd99 Merge pull request #1582 from Samuelrmlink/PPSctrl
Added VPDO option for disabling PPS/EPR PDOs.
2023-02-20 11:53:15 +11:00
Samuelrmlink
669e3819e8 Add BLE characteristic - PD VPDOs Enabled 2023-02-19 16:59:26 -06:00
Samuelrmlink
20b4f80255 Attempt to reduce translation size.
TS80P build failed Github checks.
2023-02-19 16:34:29 -06:00
Samuel Hedrick
cd21b49e8c Added BLE characteristic - PD VPDOs Enabled 2023-02-19 16:22:46 -06:00
Samuel Hedrick
6729caa586 Added English strings to other language .json files. 2023-02-19 16:03:49 -06:00
Samuel Hedrick
9892dd0423 Added VPDO option for disabling PPS/EPR PDOs. 2023-02-19 14:13:50 -06:00
Ben V. Brown
eb5d6ea9fd Make BLE name more unique 2023-02-18 18:16:44 +11:00
Ben V. Brown
fe159ba747 Merge pull request #1572 from Samuelrmlink/dev
Fixed USB-PD policy bug.
2023-02-16 16:11:56 +11:00
Samuel Hedrick
5265d7b1ac Fixed USB-PD policy bug.
Some PPS chargers that advertise 7 PDOs are affected.
This includes the Samsung EP-TA845 - likely others as well.
2023-02-15 20:50:23 -06:00
Ben V. Brown
0dd0dc4983 Merge pull request #1567 from Ralim/ble-settings-reset
BLE Settings rename + Unique Name
2023-02-12 11:06:45 +11:00
Ben V. Brown
4a2d59b01c Added 37th option 2023-02-11 22:16:17 +11:00
Ben V. Brown
07cad37bcc Move extras to end of settings 2023-02-11 22:14:49 +11:00
Ben V. Brown
39148d11ed Shift settings to be 0 based; and add reset command 2023-02-11 22:09:26 +11:00
Ben V. Brown
5aacbeaecc Add unqiue id to BLE name 2023-02-11 20:39:41 +11:00
Ben V. Brown
c384194b7f Silence warnings 2023-02-11 19:54:30 +11:00
Ben V. Brown
ac1934f8de Fixup some of the includes for the ble lib 2023-02-11 19:47:58 +11:00
Ben V. Brown
662829ebd9 Merge pull request #1565 from federicodilo/patch-4
Small update in translation_IT.json
2023-02-07 20:06:17 +11:00
Federico Di Lorenzo
daaa9549cf Update translation_IT.json 2023-02-07 09:54:38 +01:00
Ben V. Brown
ee6ae1f3f1 Merge pull request #1557 from cohaolain/ble-adv-mods
Use the scan response to advertise some of the available service UUID…
2023-02-05 12:59:24 +11:00
Ciarán Ó hAoláin
b5f78bbeda Use the scan response to advertise some of the available service UUIDs rather than just repeating the device name 2023-02-05 00:41:57 +00:00
Alexandrebafoil
e23c361a57 Update translation_FR.json (#1556)
Addition of the missing French translations
2023-02-05 08:46:26 +11:00
Thomas White
8e7e58018a expand bulk data to match individual value data (#1555)
* track and return Operating mode with BLE

* move global variable to fix build on other platforms

* formatting

* expand bulk data to match individual value data

* formatting

* fix accidental single line if

---------

Co-authored-by: Ben V. Brown <5425387+Ralim@users.noreply.github.com>
2023-02-05 00:04:51 +11:00
Thomas White
9802a622d5 Track and return Operating Mode with BLE (#1553)
Track and return Operating Mode with BLE
2023-02-04 09:33:43 +11:00
Ben V. Brown
e19e1a066d Use alpine packaged black
Closes #1554
2023-02-04 09:30:05 +11:00
Ben V. Brown
bb76dfeff6 Merge pull request #1535 from Ralim/testing-fix-for-timer-slot-miss
Change timing scheduler to only run main timer once ADC is done
2023-01-30 17:33:32 +11:00
Ben V. Brown
4ddc9a28f9 Merge branch 'dev' into testing-fix-for-timer-slot-miss 2023-01-30 17:28:03 +11:00
Ben V. Brown
0b6c5ff837 👋 Goodbye Weblate
Dropping weblate for now as its just not reliable.
2023-01-30 17:26:41 +11:00
Ben V. Brown
586fd3b288 Merge pull request #1548 from discip/fix_languages
fixing languages & reverting unwanted weblate changes
2023-01-30 17:11:06 +11:00
discip
67df8c71ba Update translation_EN.json 2023-01-28 14:15:18 +01:00
discip
ce7e228fe5 Update translation_DE.json 2023-01-28 14:14:56 +01:00
discip
760d8c83cb Update translation_JA_JP.json 2023-01-28 14:14:23 +01:00
discip
36fbf760cb Update translation_ES.json 2023-01-28 14:13:19 +01:00
discip
af2b88cb59 fixing languages & reverting unwanted weblate changes 2023-01-28 02:17:23 +01:00
Ben V. Brown
07d85c8211 Merge pull request #1543 from discip/patch-1
simplification
2023-01-25 06:53:28 +11:00
discip
fc10a24a89 simplification 2023-01-24 18:22:50 +01:00
Ben V. Brown
939efbbf4f Merge branch 'testing-fix-for-timer-slot-miss' of ssh://github.com/Ralim/IronOS into testing-fix-for-timer-slot-miss 2023-01-24 18:57:00 +11:00
Ben V. Brown
7e103ccf2d Wait for full ADC Burst 2023-01-24 18:56:49 +11:00
Ben V. Brown
9e967b03d7 Merge pull request #1542 from Ralim/translations
Merging newest translations into dev
2023-01-24 18:41:52 +11:00
Ralim
0559e0f90a Translated using Weblate (Slovenian)
Currently translated at 99.1% (116 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/sl/
2023-01-24 08:37:16 +01:00
Ralim
bd5d341d2f Translated using Weblate (Hungarian)
Currently translated at 99.1% (116 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/hu/
2023-01-24 08:22:19 +01:00
Ben V. Brown
a84df7b94e Merge branch 'dev' into testing-fix-for-timer-slot-miss 2023-01-24 18:15:45 +11:00
Ben V. Brown
f3b4abf434 Update IRQ.cpp 2023-01-24 18:11:44 +11:00
discip
b5179099a7 Translated using Weblate (Chinese (Traditional))
Currently translated at 99.1% (116 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/zh_Hant/
2023-01-24 02:30:11 +01:00
discip
b4ee3ec853 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.1% (116 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/zh_Hans/
2023-01-24 02:30:11 +01:00
discip
7c8f80bb3b Translated using Weblate (Yue (yue_HK))
Currently translated at 99.1% (116 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/yue_HK/
2023-01-24 02:30:11 +01:00
discip
3ca35c1b4a Translated using Weblate (Vietnamese)
Currently translated at 99.1% (116 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/vi/
2023-01-24 02:30:11 +01:00
discip
51553e3068 Translated using Weblate (Turkish)
Currently translated at 100.0% (117 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/tr/
2023-01-24 02:30:11 +01:00
discip
a3a1000fdf Translated using Weblate (Swedish)
Currently translated at 99.1% (116 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/sv/
2023-01-24 02:30:11 +01:00
discip
44b802d78b Translated using Weblate (Serbian (latin))
Currently translated at 99.1% (116 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/sr_Latn/
2023-01-24 02:30:11 +01:00
discip
2546b8851f Translated using Weblate (Serbian (cyrillic))
Currently translated at 99.1% (116 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/sr_Cyrl/
2023-01-24 02:30:11 +01:00
discip
2e1cdf7acf Translated using Weblate (Slovenian)
Currently translated at 99.1% (116 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/sl/
2023-01-24 02:30:11 +01:00
discip
2e01845dc1 Translated using Weblate (Slovak)
Currently translated at 99.1% (116 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/sk/
2023-01-24 02:30:11 +01:00
discip
29d97721a9 Translated using Weblate (Romanian)
Currently translated at 100.0% (117 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/ro/
2023-01-24 02:30:11 +01:00
discip
efbfbbe5f9 Translated using Weblate (Portuguese)
Currently translated at 99.1% (116 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/pt/
2023-01-24 02:30:11 +01:00
discip
5830587c81 Translated using Weblate (Polish)
Currently translated at 99.1% (116 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/pl/
2023-01-24 02:30:11 +01:00
discip
eb8ebb1d48 Translated using Weblate (Dutch (Belgium))
Currently translated at 99.1% (116 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/nl_BE/
2023-01-24 02:30:11 +01:00
discip
295d06f3a3 Translated using Weblate (Dutch)
Currently translated at 99.1% (116 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/nl/
2023-01-24 02:30:11 +01:00
discip
d5956bfdea Translated using Weblate (Norwegian Bokmål)
Currently translated at 97.4% (114 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/nb_NO/
2023-01-24 02:30:11 +01:00
discip
afa9925462 Translated using Weblate (Lithuanian)
Currently translated at 99.1% (116 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/lt/
2023-01-24 02:30:11 +01:00
discip
809498dc8e Translated using Weblate (French)
Currently translated at 99.1% (116 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/fr/
2023-01-24 02:30:11 +01:00
discip
c103f7677f Translated using Weblate (Finnish)
Currently translated at 99.1% (116 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/fi/
2023-01-24 02:30:11 +01:00
discip
406cc10a00 Translated using Weblate (Greek)
Currently translated at 100.0% (117 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/el/
2023-01-24 02:30:11 +01:00
discip
95920df373 Translated using Weblate (Danish)
Currently translated at 99.1% (116 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/da/
2023-01-24 02:30:11 +01:00
discip
f9fb14a4e1 Translated using Weblate (Czech)
Currently translated at 99.1% (116 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/cs/
2023-01-24 02:30:11 +01:00
discip
6ba613a195 Translated using Weblate (Bulgarian)
Currently translated at 99.1% (116 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/bg/
2023-01-24 02:30:10 +01:00
discip
5cda43f7cc Translated using Weblate (Ukrainian)
Currently translated at 99.1% (116 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/uk/
2023-01-24 02:30:10 +01:00
discip
8a970907f3 Translated using Weblate (Turkish)
Currently translated at 99.1% (116 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/tr/
2023-01-24 02:30:10 +01:00
discip
a9b6737acc Translated using Weblate (Russian)
Currently translated at 99.1% (116 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/ru/
2023-01-24 02:30:10 +01:00
discip
81fec64393 Translated using Weblate (Polish)
Currently translated at 99.1% (116 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/pl/
2023-01-24 02:30:10 +01:00
discip
5cd99cea42 Translated using Weblate (Norwegian Bokmål)
Currently translated at 96.5% (113 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/nb_NO/
2023-01-24 02:30:10 +01:00
discip
2920865cad Translated using Weblate (Italian)
Currently translated at 99.1% (116 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/it/
2023-01-24 02:30:10 +01:00
discip
2770c86c83 Translated using Weblate (Hungarian)
Currently translated at 99.1% (116 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/hu/
2023-01-24 02:30:10 +01:00
discip
f5921d1afc Translated using Weblate (Croatian)
Currently translated at 100.0% (117 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/hr/
2023-01-24 02:30:10 +01:00
discip
8956e3fd3a 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 02:30:10 +01:00
discip
88c091b7ec 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-24 02:30:10 +01:00
discip
0d3cbf0475 Translated using Weblate (Belarusian)
Currently translated at 99.1% (116 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/be/
2023-01-24 02:30:10 +01:00
discip
8e84ecbcfa Translated using Weblate (Spanish)
Currently translated at 99.1% (116 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/es/
2023-01-24 02:30:10 +01:00
discip
e4e6590535 Translated using Weblate (English)
Currently translated at 94.0% (110 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/en/
2023-01-24 02:30:10 +01:00
Ben V. Brown
b697647773 Merge pull request #1536 from Ralim/wattage-estimator-rollover
Drop decimal when > 99.9W
2023-01-24 12:29:58 +11:00
Ben V. Brown
786d20284e Merge branch 'dev' into wattage-estimator-rollover 2023-01-24 11:10:21 +11:00
Ben V. Brown
fcbbe6d924 Merge pull request #1540 from Ralim/translations
Merging newest translations into dev
2023-01-24 11:09:46 +11:00
Ben V. Brown
6bd3378c6a Merge pull request #1539 from federicodilo/patch-3
Update translation_IT.json
2023-01-24 11:08:32 +11:00
Ralim
7599fece75 Translated using Weblate (English)
Currently translated at 94.0% (110 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/en/
2023-01-24 01:06:47 +01:00
gallegonovato
a63e09fbc6 Translated using Weblate (Spanish)
Currently translated at 99.1% (116 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/es/
2023-01-24 01:01:36 +01:00
discip
eea644a37a Translated using Weblate (English)
Currently translated at 94.0% (110 of 117 strings)

Translation: IronOS/Main Firmware
Translate-URL: https://hosted.weblate.org/projects/ironos/main-firmware/en/
2023-01-24 01:01:35 +01:00
Federico Di Lorenzo
caa3df9165 Update translation_IT.json 2023-01-23 18:12:09 +01:00
Ben V. Brown
cae3ac93fd Merge pull request #1537 from Ralim/Settings-Toggle-For-BLE
Settings toggle for ble
2023-01-23 21:51:05 +11:00
Ben V. Brown
26f71b2c2f Add BLE Enabled to advanced menu 2023-01-23 18:05:59 +11:00
Ben V. Brown
07a5d45e17 Translation updates for BLEEnabled 2023-01-23 18:01:43 +11:00
Ben V. Brown
82499f4e83 Setting setup for BLEEnabled 2023-01-23 18:01:35 +11:00
Ben V. Brown
14948255e3 Create setting entry for BLE 2023-01-23 17:54:57 +11:00
Ben V. Brown
c2d69f91a6 Drop decimal when > 99.9W 2023-01-23 17:49:40 +11:00
Ben V. Brown
7ede4d2d44 Update weblate.yml 2023-01-23 17:44:52 +11:00
Ben V. Brown
5fe019f40b Change timing scheduler to only run main timer once ADC is done 2023-01-23 17:40:06 +11:00
Ben V. Brown
5faa092eb6 Merge pull request #1434 from Ralim/BLE
Basic BLE support for Pinecil V2
2023-01-23 17:25:34 +11:00
Ben V. Brown
4e37c7bea7 Merge branch 'dev' into BLE 2023-01-23 17:22:06 +11:00
Ben V. Brown
f28ca72f7c Merge pull request #1533 from discip/patch-1
Just a small typo correction and a suggestion for clearer wording.
2023-01-23 09:03:15 +11:00
discip
ef5649a022 Just a small typo correction and a suggestion for clearer wording. 2023-01-22 22:56:19 +01:00
Ben V. Brown
bf277e573f Merge pull request #1493 from Ralim/new-translations-format
New translations format
2023-01-23 08:48:26 +11:00
Ben V. Brown
c5d92efa60 Merge branch 'dev' into BLE 2023-01-22 22:35:51 +11:00
Ben V. Brown
d1da7e75d2 Fix missing definition for Reset message 2023-01-22 22:33:18 +11:00
Ben V. Brown
1c8a614100 Import all upgraded translations 2023-01-22 22:20:17 +11:00
Ben V. Brown
05628daba2 Merge branch 'dev' into new-translations-format 2023-01-22 22:05:13 +11:00
Ben V. Brown
f9ce1ef046 Fix stupid typo 2023-01-22 22:01:08 +11:00
Erkan Colak
cc37899b1b Expanded the build script to build customizable multiple languages and models firmwares (#1520)
* Expanded the build script to build customizable multiple languages and models firmwares.

* Fixed build pipeline uses lower cases  for Pinecil* devices

* fixed shellcheck suggestions reported by reviewdog

fixed shellcheck suggestions reported by reviewdog
2023-01-17 08:12:30 +11:00
Purdea Andrei
b96dbb2377 Miniware+Pinecil: fix number of items in uVtoDegC array. This only af… (#1531)
Miniware+Pinecil: fix number of items in uVtoDegC array. This only affects us in case we go above 500degC, in which case we'll be reading invalid memory
2023-01-16 19:30:37 +11:00
Purdea Andrei
e9f63cdfd8 Fix the calibrate voltage screen, when it exits, it used to overlay t… (#1530)
Fix the calibrate voltage screen, when it exits, it used to overlay the calibrated divider over the previous displayed image, causing confusion. Now it clears the screen before printing the calibrated value
2023-01-16 13:54:34 +11:00
discip
7f43562a4f Reboot after reset (#1513) 2023-01-06 15:06:03 +11:00
Ben V. Brown
706b3246a1 Test better reboots 2023-01-03 18:46:26 +11:00
Ben V. Brown
77f213e63c Decompress both fonts correctly 2023-01-03 17:26:50 +11:00
discip
7fd7873b62 updated Menu.md (#1512)
Update Menu.md
2022-12-31 22:54:45 +11:00
discip
1b84097e07 fixes cooldown flashing (#1515)
* unify rate of cooldown flashing

* adjusted flashing threshold

* revert adjusted flashing threshold

* revert follow-up
2022-12-31 22:41:00 +11:00
Ben V. Brown
3e2da605ab Merge pull request #1511 from dmitrygribenchuk/translations
update translation
2022-12-30 21:05:16 +11:00
Dmitry Gribenchuk
8b556ea068 update translation_BE.json translation_PL.json 2022-12-30 09:38:51 +02:00
Ben V. Brown
f42627edd9 Merge pull request #1509 from dmitrygribenchuk/translations
update translation
2022-12-30 10:03:13 +11:00
Dmitry Gribenchuk
81e43ee3c8 update translation_BE.json translation_PL.json translation_RU.json 2022-12-29 11:12:37 +02:00
Ben V. Brown
bff3da4e8d Merge pull request #1507 from discip/boost_off
makes the 'boost mode' deactivatable (as originally intended)
2022-12-29 13:31:14 +11:00
discip
02a495d44b Update Settings.cpp 2022-12-29 02:36:43 +01:00
Ben V. Brown
0d65cd14fb Merge pull request #1502 from discip/removed_unused_lines
Remove unused lines in translation files
2022-12-29 08:31:07 +11:00
discip
7a30b04347 Update translation_RU.json 2022-12-28 15:15:13 +01:00
discip
2fd1bb6baf Merge branch 'dev' into removed_unused_lines 2022-12-28 15:05:19 +01:00
Ben V. Brown
c9bfaba909 Merge pull request #1506 from Ralim/master
Master
2022-12-28 22:40:45 +11:00
Ben V. Brown
dc35fbc4ad Merge pull request #1500 from JugglerLKR/master
Update translation_RU.json
2022-12-28 21:04:50 +11:00
discip
f27a849921 Merge branch 'dev' into removed_unused_lines 2022-12-28 09:22:44 +01:00
Ben V. Brown
7c8664fb22 Merge branch 'dev' into BLE 2022-12-28 14:24:49 +11:00
Ben V. Brown
45a4ff90aa Merge pull request #1499 from jonnieZG/master
Updated translation_HR.json
2022-12-28 14:24:33 +11:00
Ben V. Brown
68fe8c9f2f Merge branch 'dev' into master 2022-12-28 13:17:00 +11:00
Ben V. Brown
7383494dde Merge pull request #1504 from WillCap397/patch-1
Update translation_IT.json
2022-12-28 11:16:26 +11:00
Ben V. Brown
d16dce06c0 Merge branch 'dev' into patch-1 2022-12-28 11:14:41 +11:00
Ben V. Brown
6523c1ed44 Merge pull request #1505 from lalamper/HU_translate
Update translation_HU.json
2022-12-28 11:13:42 +11:00
Lalamper
dee4884252 translate missing parts 2022-12-27 22:47:25 +01:00
WillCap397
a0764c08a5 Update translation_IT.json
fixed a typo in the first lines, changed "impostazioni iniziali" with "impostazioni di default", replaced "Voltaggio" with "Tensione" since Voltaggio is considered incorrect by most technicians an is likely an "italianization" of Voltage instead of a proper translation
2022-12-24 22:39:46 +01:00
discip
d68d3f8a1f Update translation_EN.json 2022-12-16 23:28:29 +01:00
discip
325ac498e8 removed some unused lines 6 reordered others 2022-12-16 23:14:38 +01:00
JugglerLKR
f4320e9565 Update translation_RU.json
updated some translation. new missing desc "" translation. CJC calibration translation
2022-12-14 15:42:55 +03:00
discip
f4bcfed7bd Add files via upload 2022-12-14 11:35:49 +01:00
discip
80d7423278 Add files via upload 2022-12-14 02:54:46 +01:00
jonnieZG
f6b4efbee7 Update translation_HR.json
Updated Croatian translations
2022-12-13 13:21:32 +01:00
Ben V. Brown
14daf701e8 Merge pull request #1416 from Ralim/dev
Release 2.20
2022-12-13 22:38:25 +11:00
Ben V. Brown
afb7628983 FIXUP! Bugfix auto fontstyle 2022-12-11 13:52:43 +11:00
Ben V. Brown
c5d1637fec Update README.md 2022-12-08 07:16:32 +11:00
Ben V. Brown
fba69977d8 Update README.md 2022-12-07 18:46:36 +11:00
Ben V. Brown
e9cf66734f Update make_translation.py 2022-12-07 18:42:42 +11:00
Ben V. Brown
ec675da1d6 Update Translation.md 2022-12-07 18:37:40 +11:00
Ben V. Brown
6abdc70c99 Update make_translation.py 2022-12-07 18:30:20 +11:00
Ben V. Brown
80ed1c42ae Remove unused descriptions 2022-12-05 22:33:57 +11:00
Ben V. Brown
98cbce6552 Format 2022-12-05 22:29:10 +11:00
Ben V. Brown
e9a28c3671 Unify more of the font generation logic between both paths and coalesce all fonts 2022-12-05 22:26:03 +11:00
Ben V. Brown
79eee9fc6c Migrate translations to new format 2022-12-05 22:26:03 +11:00
Ben V. Brown
2a6dd45d56 Bugfix: Correct binning of symbols 2022-12-05 22:26:03 +11:00
Ben V. Brown
cc21dac1dc Create migrate.py 2022-12-05 22:26:03 +11:00
Ben V. Brown
fdc31467aa Use size encoded symbols
Update make_translation.py
2022-12-05 22:26:03 +11:00
Ben V. Brown
800f2ba9e6 Expose double encoded symbols 2022-12-04 21:28:50 +11:00
Ben V. Brown
fa42f0aa61 Mild progress on refactoring 2022-12-04 20:49:45 +11:00
Ben V. Brown
ab12fbaf71 Always big text for description 2022-12-04 15:15:52 +11:00
Ben V. Brown
73b4119d49 Refactor text lists 2022-12-04 15:14:21 +11:00
Ben V. Brown
3e19bb5a90 Update Translation.h 2022-12-03 23:23:49 +11:00
Ben V. Brown
0c1e3a1b75 Reworking to simplified layout for translations 2022-12-03 23:23:43 +11:00
Ben V. Brown
6c7243edd6 New translations definitions 2022-12-03 21:18:48 +11:00
Ben V. Brown
4ffefecc12 Remove old editors 2022-12-03 20:38:37 +11:00
Ben V. Brown
b6aaf30c58 Merge branch 'dev' into BLE 2022-11-25 16:31:03 +11:00
Ben V. Brown
686ffe516e Fill out more characteristics 2022-11-22 08:38:50 +11:00
Ben V. Brown
bdb6986311 Merge branch 'test-slow-i2c' into BLE 2022-11-20 22:16:19 +11:00
Ben V. Brown
d48b74736f Hook Settings to being exposed 2022-11-20 22:15:58 +11:00
Ben V. Brown
1c6bbc2c06 Hook up power source enum 2022-11-20 21:28:15 +11:00
Ben V. Brown
d0ed30ecb6 Split display checksum out 2022-11-20 21:16:38 +11:00
Ben V. Brown
bbb0cfe713 Critical wrap I2C 2022-11-20 21:15:55 +11:00
Ben V. Brown
5e98f05f07 Update ble_handlers.cpp 2022-11-20 20:55:21 +11:00
Ben V. Brown
ca2ceb5008 Update Makefile 2022-11-20 20:55:19 +11:00
Ben V. Brown
28924ccfa6 Merge branch 'test-slow-i2c' into BLE 2022-11-20 20:38:31 +11:00
Ben V. Brown
36b60e250d rough status handler done 2022-11-20 18:04:45 +11:00
Ben V. Brown
e88c064390 Set device name and appearance in makefile 2022-11-20 17:59:35 +11:00
Ben V. Brown
493af2ae1e Split handlers out 2022-11-20 17:59:25 +11:00
Ben V. Brown
60a3f8320e Update ble_characteristics.h 2022-11-20 17:59:11 +11:00
Ben V. Brown
d97313cac8 Fix c++ for config 2022-11-20 17:59:08 +11:00
Ben V. Brown
3f34d240fe Formatting improvements 2022-11-20 17:15:37 +11:00
Ben V. Brown
a160f7e7ad Update Makefile 2022-11-20 17:10:54 +11:00
Ben V. Brown
28011a3993 Organising a bit 2022-11-20 16:43:33 +11:00
Ben V. Brown
99df4b3307 Binary blobs 2022-11-20 16:43:33 +11:00
Ben V. Brown
3f05088ffb Update Makefile 2022-11-20 16:43:33 +11:00
Ben V. Brown
8b85febf8e Update ble_config.h 2022-11-20 16:43:07 +11:00
Ben V. Brown
4ab33eaee8 Start sec 2022-11-20 16:43:07 +11:00
Ben V. Brown
ea7d270146 Dump PC in assert failure 2022-11-20 16:43:07 +11:00
Ben V. Brown
e594768e7f Fix linker 2022-11-20 16:43:07 +11:00
Ben V. Brown
dd0ac6d5ef Update ble.c 2022-11-20 16:43:07 +11:00
Ben V. Brown
dd8e02b299 c++ guard 2022-11-20 16:43:07 +11:00
Ben V. Brown
17f72ba945 Update Makefile 2022-11-20 16:43:07 +11:00
Ben V. Brown
ea3c6e74e6 Add extra heap 2022-11-20 16:42:54 +11:00
Ben V. Brown
a7ca43da7f 👋 2022-11-20 16:42:54 +11:00
Ben V. Brown
1162094682 Match their ld 2022-11-20 16:42:54 +11:00
Ben V. Brown
d5f33814aa Update FreeRTOS 2022-11-20 16:42:54 +11:00
Ben V. Brown
6c69c2e241 Update bl702_flash.ld 2022-11-20 16:42:54 +11:00
Ben V. Brown
6a2dc1a9d2 Update Makefile 2022-11-20 16:42:54 +11:00
Ben V. Brown
69bf966015 Update FreeRTOSConfig.h 2022-11-20 16:42:26 +11:00
Ben V. Brown
4fcbb8656c . 2022-11-20 16:42:26 +11:00
Ben V. Brown
0a215e3996 Update system_bl702.c 2022-11-20 16:42:26 +11:00
Ben V. Brown
8a857ce757 ble linker 2022-11-20 16:42:26 +11:00
Ben V. Brown
721c7d36f3 rem dup 2022-11-20 16:42:26 +11:00
Ben V. Brown
a6bb022997 Update hex.c 2022-11-20 16:42:26 +11:00
Ben V. Brown
ea3bd86b52 Update Makefile 2022-11-20 16:42:26 +11:00
Ben V. Brown
69c2d475e3 Update postRTOS.cpp 2022-11-20 16:41:46 +11:00
Ben V. Brown
736bedc51a Scratch 2022-11-20 16:41:46 +11:00
Ben V. Brown
0c18c45490 Import BLE 2022-11-20 16:41:46 +11:00
324 changed files with 97715 additions and 30583 deletions

View File

@@ -28,7 +28,12 @@ jobs:
fetch-depth: 0 fetch-depth: 0
- uses: actions/setup-python@v4 - uses: actions/setup-python@v4
- run: pip install --upgrade pip && pip install mkdocs mkdocs-gen-files
- 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: git config user.name 'github-actions[bot]' && git config user.email 'github-actions[bot]@users.noreply.github.com' - run: git config user.name 'github-actions[bot]' && git config user.email 'github-actions[bot]@users.noreply.github.com'
- name: Publish docs - name: Publish docs

View File

@@ -140,14 +140,14 @@ jobs:
steps: steps:
- name: deps - name: deps
run: apk add --no-cache python3 py3-pip make git run: apk add --no-cache python3 py3-pip make git black
- uses: actions/checkout@v3 - uses: actions/checkout@v3
with: with:
submodules: true submodules: true
- name: install black - name: install black
run: python3 -m pip install bdflib black flake8 run: python3 -m pip install bdflib flake8
- name: Check formatting with clang-format - name: Check formatting with clang-format
run: cd source && make clean && make check-style run: cd source && make clean && make check-style

View File

@@ -1,25 +0,0 @@
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: false
github_token: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -8,12 +8,20 @@ WORKDIR /build
# Misc -> findutils make git # Misc -> findutils make git
# musl-dev is required for the multi lang firmwares # musl-dev is required for the multi lang firmwares
# clang is required for clang-format (for dev) # clang is required for clang-format (for dev)
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"
ARG APK_DEV="musl-dev clang bash clang-extra-tools"
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 # PIP packages
ARG PIP_PKGS='bdflib'
RUN apk add --no-cache ${APK_COMPS} ${APK_PYTHON} ${APK_MISC} ${APK_DEV}
# Install Python3 packages # Install Python3 packages
RUN python3 -m pip install bdflib black RUN python3 -m pip install ${PIP_PKGS}
# Git trust # Git trust
RUN git config --global --add safe.directory /build/source RUN git config --global --add safe.directory /build/source

View File

@@ -104,3 +104,40 @@ 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. Follow the same idea as the STM Cube IDE notes above.
## Building Pinecil V2 ## 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
./start_dev.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/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

@@ -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). 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. 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` and Pinecil needs `.dfu`. 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 Flash according to details below.
### Bleeding edge / latest ### Bleeding edge / latest
@@ -26,13 +26,16 @@ Then this works the same as a production release (use the correct file).
# Pinecil V1 # Pinecil V1
- The MCU used in Pinecil supports usb-dfu. Reference [Pinecil Wiki](https://wiki.pine64.org/wiki/Pinecil). - The MCU used in Pinecil supports usb-dfu. Reference [Pinecil Wiki](https://wiki.pine64.org/wiki/Pinecil) for hardware and firmware instructions.
- 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. - 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.
- Troubleshooting: if you have issues using the Pine64 Updater or your install fails, please go to troubleshooting tips below. - Troubleshooting: if you have issues using the Pine64 Updater or your install fails, please go to troubleshooting tips below.
- 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. - 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.
- 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. - 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. - 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 [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. - 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.
## Linux and Mac ## Linux and Mac

View File

@@ -12,21 +12,25 @@ 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). 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. 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` and Pinecil needs `.dfu`. 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 Flash according to details below.
### Bleeding edge / latest ### Bleeding edge / latest
For the _latest_ code, you will need to download the zip file from the artifacts page on the build for what you want. 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 you would like. 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.
In general you probably want `master`. In general you probably want `master`.
Once you click on a run, scroll down to the "Artifacts" section and then click on your model to download a zip file. 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.
Then this works the same as a production release (use the correct file). Then this works the same as a production release (use the correct file).
# Pinecil V2 # Pinecil V2
- The MCU in V2 is Bouffalo BL706 and does _not_ use usb-dfu for flashing as the previous MCU did. - The MCU in Pinecil V2 is Bouffalo BL706 and does _not_ use usb-dfu for flashing as the previous Pinecil V1 MCU did.
- The current firmware (2.18) is very fresh and no upgrade is available/needed. - See the Pinecil Wiki page [here](https://wiki.pine64.org/wiki/Pinecil#Firmware_&_Updates) for instructions.
- When an update is released for V2, then IronOS will also include an update method to follow. - 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.
- Background on the [BL706 chipset](https://lupyuen.github.io/articles/bl706) - Background on the [BL706 chipset](https://lupyuen.github.io/articles/bl706)

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. 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 spanner like icon represents that pressing the button near the rear of the soldering iron will enter the settings menu. 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.
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. 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.

View File

@@ -39,11 +39,13 @@ To calibrate your iron:
7. Press both buttons at the same time to Save and Exit to the menu 7. Press both buttons at the same time to Save and Exit to the menu
### Calibrate Tip CJC ### Calibrate Tip CJC
This performs a Tip Cold Junction Calibration (CJC) ([see Temperature for details](https://ralim.github.io/IronOS/Temperature/)). This is normally not needed unless you have an issue with tip temperature or your tips are wearing out prematurely. Changing tip lengths does not necessarily mean a calibration is needed. Check first that your tips are not defective, and measured resistance is close to specifications (Pinecil/TS100 short tips 6.2 Ω, long tips 8 Ω, TS80(P) ~4.5 Ω). This calibrates the [Cold Junction Compensation](https://ralim.github.io/IronOS/Temperature/) *(CJC)* for the tip. This is normally not needed unless you have an issue with tip temperature or your tips are wearing out prematurely. Changing tip lengths does not necessarily mean a calibration is needed. Check first that your tips are not defective and measured resistance is close to specifications *[Pinecil / TS100 short tips **6.2 Ω**, long tips **8 Ω**, TS80/P ~**4.5 Ω**]*.
What this is for: some tips have an offset on their readings which causes issues, i.e., the actual temperature of the tip is much higher than displayed. To calibrate this out, perform the following steps. What this is for:<br>
Some tips have an offset on their readings which causes issues, i.e. The actual temperature of the tip is much higher than displayed. Follow the steps below to calibrate this.
Caution: if the method below is not followed, the iron could be worse than before calibration. If you need to repeat the method, first unplug and let the handle/PCB cool down to room temperature. Caution:<br>
If the method below is not followed, the iron could be worse than before calibration. If you need to repeat the method, first unplug and let the handle/PCB cool down to room temperature.
1. Connect power to your device. 1. Connect power to your device.
2. Go to **`Advanced Settings`** using (`-/B`) and press (`+/A`) to select it. Use (`-/B`) to scroll to **`Calibrate CJC at next boot`** and confirm with (`+/A`). 2. Go to **`Advanced Settings`** using (`-/B`) and press (`+/A`) to select it. Use (`-/B`) to scroll to **`Calibrate CJC at next boot`** and confirm with (`+/A`).
@@ -52,11 +54,11 @@ Caution: if the method below is not followed, the iron could be worse than befor
4. Unplug you device. 4. Unplug you device.
5. **Critical: Make sure a tip is attached & wait until the tip & handle are at room temperature.** (Wait a reasonable amount of time after having used the device.) 5. **Critical: Make sure a tip is attached & wait until the tip & handle are at room temperature.** (Wait a reasonable amount of time after having used the device.)
6. Power the device and ideally keep it out of your hands (You know it might get warm.). 6. Power the device and ideally keep it out of your hands (You know it might get warm.).
7. The display shows **`....`** for a short time while the device measures and compares the tip and handle voltages. 7. The display shows **`calibrating ....`** for a short time while the device measures and compares the tip and handle voltages.
8. As a result the new *Offset value* is displayed. This value can later be viewed in the **`Debug menu`**. 8. **`Calibration done!`** is displayed for 3 seconds. The new offset value can later be viewed in the **`Debug menu`**.
9. Calibration is done and the device proceeds booting. 9. Calibration is done and the device proceeds booting.
Note: offsets are dependant on your tip, temperature sensor, and the MCU. It's the culmination of tolerances at rest. Typical values are 700-1000 range. This is only designed to be used at boot while cold (ambient room temperature), as temperatures drift apart as soon as power is connected. Doing this reading repeatedly could result in wide varience of the offset number and/or incorrect calibration. Note: offsets are dependant on your tip, temperature sensor, and the MCU. It's the culmination of tolerances at rest. Typical values are 700-1000 range. This is only designed to be used at boot while cold (ambient / room temperature), as temperatures drift apart as soon as power is connected. Doing this reading repeatedly could result in wide varience of the offset number and/or incorrect calibration.
### Boost mode ### Boost mode

View File

@@ -1,6 +1,12 @@
# Translation # Translation
If you would like to contribute a translation, use the [Translation Editor](http://htmlpreview.github.io/?https://github.com/Ralim/ts100/blob/master/Translations/TranslationEditor.html).
[Open a reference language file and optionally a target language file](https://github.com/Ralim/ts100/tree/master/Translations). 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.
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. 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.

View File

@@ -1,6 +1,7 @@
![CI](https://github.com/Ralim/ts100/workflows/CI%20Build%20all/badge.svg) [![CI Build](https://github.com/Ralim/IronOS/actions/workflows/push.yml/badge.svg)](https://github.com/Ralim/IronOS/actions/workflows/push.yml)
![GitHub all](https://img.shields.io/github/downloads/ralim/IronOS/total) [![Total Downloads](https://img.shields.io/github/downloads/ralim/IronOS/total)](https://github.com/Ralim/IronOS)
![Latest Release](https://img.shields.io/github/v/release/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)
# IronOS - Flexible Soldering iron control Firmware # IronOS - Flexible Soldering iron control Firmware
@@ -26,11 +27,13 @@ _This firmware does **NOT** support the USB port while running for changing sett
| Pinecil V1 | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ✔️ | | Pinecil V1 | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ✔️ |
| Pinecil V2 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | | Pinecil V2 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| TS80P | ❌ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ✔️ | | TS80P | ❌ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ✔️ |
| TS100 | ✔️ | ❌ | ❌ | ❌ | ❌ | ✔️ | | | TS100 | ✔️ | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌* |
| TS80 | ❌ | ✔️ | ❌ | ❌ | ❌ | ✔️ | ❌ | | TS80 | ❌ | ✔️ | ❌ | ❌ | ❌ | ✔️ | ❌** |
\*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_**. \*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_**.
## Getting Started ## Getting Started
To get started with IronOS firmware, please jump to [Getting Started Guide](https://ralim.github.io/IronOS/GettingStarted/). To get started with IronOS firmware, please jump to [Getting Started Guide](https://ralim.github.io/IronOS/GettingStarted/).
@@ -79,6 +82,12 @@ When on the main screen and having the tip plugged in, the unit shows a pair of
Operation details are over in the [Menu information.](https://ralim.github.io/IronOS/Menu/) Operation details are over in the [Menu information.](https://ralim.github.io/IronOS/Menu/)
## 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.
## Thanks ## Thanks
If you love this firmware and want to continue my caffeine addiction, you can do so [here](https://paypal.me/RalimTek) (or email me for other options). If you love this firmware and want to continue my caffeine addiction, you can do so [here](https://paypal.me/RalimTek) (or email me for other options).

View File

@@ -1,652 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>IronOS Translation Editor</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="translations_commons.js"></script>
<script src="translations_def.js"></script>
<script>
var app;
var defMap = {};
function save() {
saveJSON(
app.current,
"translation_" + app.current.languageCode + ".json"
);
}
function view() {
showJSON(
app.current,
"translation_" + app.current.languageCode + ".json"
);
}
function fileChanged(e) {
var target = e;
var id = target.id;
var file = target.files[0];
if (!file) {
return;
}
var fr = new FileReader();
fr.onload = function (e) {
try {
var json = JSON.parse(e.target.result);
} catch (ex) {
console.log(ex);
alert("Invalid JSON file: " + file.name);
return;
}
if (id == "referent-lang-file") {
if (checkTranslationFile(file.name)) {
app.referent = json;
app.meta.referentLoaded = true;
}
} else if (id == "current-lang-file") {
if (checkTranslationFile(file.name)) {
app.current = json;
if (!app.current.fonts) {
app.current.fonts = ["ascii_basic"];
}
app.meta.currentLoaded = true;
}
}
synchronizeData();
};
fr.readAsText(file);
}
function synchronizeData() {
app.obsolete = {};
copyMissing(
app.def.messages,
app.referent.messages,
app.current.messages
);
copyMissing(
app.def.characters,
app.referent.characters,
app.current.characters
);
copyMissing(
app.def.menuGroups,
app.referent.menuGroups,
app.current.menuGroups
);
copyMissing(
app.def.menuOptions,
app.referent.menuOptions,
app.current.menuOptions
);
}
/**
* Copy all missing properties from referent to current
* for each entry in definition
*/
function copyMissing(defList, referentMap, currentMap) {
if (
!isDefined(defList) ||
!isDefined(referentMap) ||
!isDefined(currentMap)
) {
return;
}
var len = defList.length;
for (var i = 0; i < len; i++) {
var id = defList[i].id;
if (!isDefined(referentMap[id])) {
referentMap[id] = "";
}
if (!isDefined(currentMap[id])) {
currentMap[id] = referentMap[id];
}
}
processObsolete(defList, currentMap);
}
// Passes through all entries from the given map.
// If a corresponding entry is not found in the defList, it is removed from the map, and added into the obsolete map.
function processObsolete(defList, map) {
// Index list to map for faster search
var defMap = copyArrayToMap(defList);
Object.keys(map).forEach(function (key) {
if (!isDefined(defMap[key])) {
app.obsolete[key] = { id: key, value: map[key] };
delete map[key];
}
});
}
function length(obj, mode) {
if (!isDefined(mode) || mode == 0) {
// return direct length
return obj.length;
}
// return the longest length in text2 array
return Math.max(
isDefinedNN(obj.text2[0]) ? obj.text2[0].length : 0,
isDefinedNN(obj.text2[1]) ? obj.text2[1].length : 0
);
}
function getAttribute(obj, attribute) {
var d = "2";
var v = obj[attribute + d];
if (isDefined(v)) return v;
return obj[attribute];
}
function loaded() {
app = new Vue({
el: "#app",
data: {
meta: {
referentLoaded: false,
currentLoaded: false,
},
def: {},
referent: {
messages: {},
},
current: {
loaded: false,
},
obsolete: {},
fontToAdd: "latin_extended",
},
methods: {
validateInput: function (valMap, id, mode) {
var d = defMap[id];
var vLen = 0;
if (!isDefined(mode)) mode = 0;
try {
// Sum for complex length
for (var i = 0; i < d.lenSum.fields.length; i++) {
vLen += length(valMap[d.lenSum.fields[i]], mode);
}
d = d.lenSum;
} catch (e) {
// Single field length
vLen = length(valMap[id], mode);
}
var maxLen = getAttribute(d, "maxLen", mode == 2);
var minLen = getAttribute(d, "minLen", mode == 2);
var len = getAttribute(d, "len", mode == 2);
if (
(isNumber(maxLen) && vLen > maxLen) ||
(isNumber(minLen) && vLen < minLen) ||
(isNumber(len) && vLen != len)
) {
return "invalid";
}
},
constraintString: function (e) {
var str = "";
var delim = "";
var v;
d = "2";
if (isDefinedNN(e.lenSum)) {
str =
"len(" +
(e.lenSum.fields + "").replace(/,/g, " + ") +
") -> ";
e = e.lenSum;
}
v = getAttribute(e, "len", d);
if (isNumber(v)) {
str += delim + "len=" + v;
delim = " and ";
}
v = getAttribute(e, "minLen", d);
if (isNumber(v)) {
str += delim + "len>=" + v;
delim = " and ";
}
v = getAttribute(e, "maxLen", d);
if (isNumber(v)) {
str += delim + "len<=" + v;
delim = " and ";
}
return str;
},
getWholeScreenMessageMaxLen: function (valMap, id, prop) {
var v = prop ? valMap[id][prop] : valMap[id];
var maxLen;
if (this.isSmall(v)) {
maxLen = defMap[id].maxLen2 || 16;
} else {
maxLen = defMap[id].maxLen || 8;
}
return maxLen;
},
validateWholeScreenMessage: function (valMap, id, prop) {
var v = prop ? valMap[id][prop] : valMap[id];
var maxLen = this.getWholeScreenMessageMaxLen(valMap, id, prop);
if (this.isSmall(v)) {
if (v[0].length === 0) {
return "invalid";
} else if (Math.max(v[0].length, v[1].length) > maxLen) {
return "invalid";
}
} else {
if (v.length > maxLen) {
return "invalid";
}
}
},
constraintWholeScreenMessage: function (valMap, id, prop) {
return (
"len <= " + this.getWholeScreenMessageMaxLen(valMap, id, prop)
);
},
isSmall: function (v) {
return v instanceof Array;
},
convertToLarge: function (valMap, id, prop) {
var v = prop ? valMap[id][prop] : valMap[id];
var message = v[0] + (v[1] !== "" ? " " + v[1] : "");
if (prop) {
valMap[id][prop] = message;
} else {
valMap[id] = message;
}
},
convertToSmall: function (valMap, id, prop) {
var v = prop ? valMap[id][prop] : valMap[id];
var message = [v, ""];
if (prop) {
valMap[id][prop] = message;
} else {
valMap[id] = message;
}
},
removeFont: function (i) {
this.current.fonts.splice(i, 1);
},
addFont: function () {
this.current.fonts.push(this.fontToAdd);
},
},
});
app.def = def;
copyArrayToMap(app.def.messages, defMap);
copyArrayToMap(app.def.messagesWarn, defMap);
copyArrayToMap(app.def.characters, defMap);
copyArrayToMap(app.def.menuGroups, defMap);
copyArrayToMap(app.def.menuOptions, defMap);
}
window.onload = loaded;
</script>
<link href="translations.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="app">
<h1>
IronOS Translation Editor<span v-if="meta.currentLoaded">
- {{ current.languageLocalName }} [{{current.languageCode}}]</span
>
</h1>
<table class="header data">
<tr>
<td class="label">Reference Language</td>
<td class="value">
<input
type="file"
id="referent-lang-file"
onchange="fileChanged(this)"
accept=".json"
/>
<span class="selected" v-if="meta.referentLoaded"
>{{ referent.languageLocalName }}
[{{referent.languageCode}}]</span
>
</td>
</tr>
<tr v-if="meta.referentLoaded">
<td class="label">Current Language</td>
<td class="value">
<input
type="file"
id="current-lang-file"
onchange="fileChanged(this)"
accept=".json"
/>
<span class="selected" v-if="meta.currentLoaded"
>{{ current.languageLocalName }} [{{current.languageCode}}]</span
>
</td>
</tr>
<tr v-if="meta.currentLoaded">
<td class="label">Local Language Code</td>
<td class="value">
<input
type="text"
v-model="current.languageCode"
maxlength="8"
v-on:change="current.languageCode=current.languageCode.toUpperCase()"
class="short"
/>
</td>
</tr>
<tr v-if="meta.currentLoaded">
<td class="label">Local Language Name</td>
<td class="value">
<input
type="text"
v-model="current.languageLocalName"
class="short"
/>
</td>
</tr>
<tr v-if="meta.currentLoaded">
<td class="label">
Font tables to use<br />("ascii_basic" must be first)
</td>
<td class="value">
<ul>
<li v-for="(font, i) in current.fonts">
<button
type="button"
@click="removeFont(i)"
:disabled="i == 0 && font == 'ascii_basic'"
>
-
</button>
{{ font }}
</li>
</ul>
<select v-model="fontToAdd">
<!-- <option value="ascii_basic">ascii_basic: ASCII Basic</option> -->
<option value="latin_extended">
latin_extended: Latin Extended
</option>
<option value="greek">greek: Greek Glyphs</option>
<option value="cyrillic">cyrillic: Cyrillic Glyphs</option>
<option value="cjk">cjk: Chinese/Japanese/Korean</option>
</select>
<button type="button" @click="addFont()">Add</button>
</td>
</tr>
</table>
<div v-if="def.messages && referent.messages && current.messages">
<div class="footer">
<input type="button" value="Save" onclick="save()" />
<input type="button" value="View" onclick="view()" />
</div>
<div v-if="Object.keys(obsolete).length > 0">
<h2>Obsolete</h2>
<table class="data">
<tr v-for="entry in obsolete">
<td class="label"><div class="stringId">{{entry.id}}</div></td>
<td class="value"><div class="ref">{{entry.value}}</div></td>
</tr>
</table>
</div>
<h2>Messages and Strings</h2>
<table class="data">
<tr
v-for="message in def.messages"
v-bind:class="validateInput(current.messages, message.id)"
>
<td class="label"><div class="stringId">{{message.id}}</div></td>
<td class="value">
<div class="constraint">{{constraintString(message)}}</div>
<div class="label">Description</div>
<div class="ref">{{message.description}}</div>
<div class="label">Reference</div>
<div class="ref">{{referent.messages[message.id]}}</div>
<div class="note" v-if="message.note">{{message.note}}</div>
<div class="tran">
<input
:id="'in_'+message.id"
type="text"
v-model="current.messages[message.id]"
v-bind:class="{unchanged : current.messages[message.id] == referent.messages[message.id], empty : current.messages[message.id]==''}"
/>
</div>
</td>
</tr>
</table>
<h2>Warning Messages</h2>
<table class="data">
<tr
v-for="message in def.messagesWarn"
v-bind:class="validateWholeScreenMessage(current.messagesWarn, message.id)"
>
<td class="label"><div class="stringId">{{message.id}}</div></td>
<td class="value">
<div class="constraint">
{{constraintWholeScreenMessage(current.messagesWarn,
message.id)}}
</div>
<div class="label">Description</div>
<div class="ref">{{message.description}}</div>
<div class="label">Reference</div>
<div class="ref">{{referent.messagesWarn[message.id]}}</div>
<div class="note" v-if="message.note">{{message.note}}</div>
<div
class="tran"
v-if="isSmall(current.messagesWarn[message.id])"
>
<input
:id="'in_'+message.id+'_0'"
type="text"
v-model="current.messagesWarn[message.id][0]"
v-bind:class="{unchanged : current.messagesWarn[message.id][0] == referent.messagesWarn[message.id][0] && current.messagesWarn[message.id][1] == referent.messagesWarn[message.id][1], empty : current.messagesWarn[message.id][0] == '' && current.messagesWarn[message.id][1] == ''}"
/>
<input
:id="'in_'+message.id+'_1'"
type="text"
v-model="current.messagesWarn[message.id][1]"
v-bind:class="{unchanged : current.messagesWarn[message.id][0] == referent.messagesWarn[message.id][0] && current.messagesWarn[message.id][1] == referent.messagesWarn[message.id][1], empty : current.messagesWarn[message.id][0] == '' && current.messagesWarn[message.id][1] == ''}"
/>
<button
type="button"
@click="convertToLarge(current.messagesWarn, message.id)"
>
Convert to large text
</button>
</div>
<div class="tran" v-else>
<input
:id="'in_'+message.id"
type="text"
v-model="current.messagesWarn[message.id]"
v-bind:class="{unchanged : current.messagesWarn[message.id] == referent.messagesWarn[message.id], empty : current.messagesWarn[message.id]==''}"
/>
<button
type="button"
@click="convertToSmall(current.messagesWarn, message.id)"
>
Convert to small text
</button>
</div>
</td>
</tr>
</table>
<h2>Characters</h2>
<table class="data">
<tr
v-for="char in def.characters"
v-bind:class="validateInput(current.characters, char.id)"
>
<td class="label"><div class="stringId">{{char.id}}</div></td>
<td class="value">
<div class="constraint">{{constraintString(char)}}</div>
<div class="label">Description</div>
<div class="ref">{{char.description}}</div>
<div class="label">Reference</div>
<div class="ref">{{referent.characters[char.id]}}</div>
<div class="tran">
<input
type="text"
v-model="current.characters[char.id]"
v-bind:class="{unchanged : current.characters[char.id] == referent.characters[char.id], empty : current.characters[char.id].length != 1}"
/>
</div>
</td>
</tr>
</table>
<h2>Menu Groups</h2>
<table class="data">
<tr
v-for="menu in def.menuGroups"
v-bind:class="validateWholeScreenMessage(current.menuGroups, menu.id, 'text2')"
>
<td class="label"><div class="stringId">{{menu.id}}</div></td>
<td class="value">
<div class="label">Menu Name</div>
<div class="constraint">
{{constraintWholeScreenMessage(current.menuGroups, menu.id,
'text2')}}
</div>
<div class="label">Description</div>
<div class="ref">{{menu.description}}</div>
<div class="label">Reference</div>
<div class="ref">{{referent.menuGroups[menu.id].text2}}</div>
<div
class="tran"
v-if="isSmall(current.menuGroups[menu.id].text2)"
>
<input
type="text"
v-model="current.menuGroups[menu.id].text2[0]"
v-bind:class="{unchanged : current.menuGroups[menu.id].text2[0] == referent.menuGroups[menu.id].text2[0] && current.menuGroups[menu.id].text2[1] == referent.menuGroups[menu.id].text2[1], empty : current.menuGroups[menu.id].text2[0] == '' && current.menuGroups[menu.id].text2[1] == ''}"
/>
<input
type="text"
v-model="current.menuGroups[menu.id].text2[1]"
v-bind:class="{unchanged : current.menuGroups[menu.id].text2[0] == referent.menuGroups[menu.id].text2[0] && current.menuGroups[menu.id].text2[1] == referent.menuGroups[menu.id].text2[1], empty : current.menuGroups[menu.id].text2[0] == '' && current.menuGroups[menu.id].text2[1] == ''}"
/>
<button
type="button"
@click="convertToLarge(current.menuGroups, menu.id, 'text2')"
>
Convert to large text
</button>
</div>
<div class="tran" v-else>
<input
type="text"
v-model="current.menuGroups[menu.id].text2"
v-bind:class="{unchanged : current.menuGroups[menu.id].text2 == referent.menuGroups[menu.id].text2, empty : current.menuGroups[menu.id].text2==''}"
/>
<button
type="button"
@click="convertToSmall(current.menuGroups, menu.id, 'text2')"
>
Convert to small text
</button>
</div>
<div class="label">Description</div>
<div class="ref">{{referent.menuGroups[menu.id].desc}}</div>
<div class="tran">
<input
type="text"
v-model="current.menuGroups[menu.id].desc"
v-bind:class="{unchanged : current.menuGroups[menu.id].desc == referent.menuGroups[menu.id].desc, empty : current.menuGroups[menu.id].desc == ''}"
/>
</div>
</td>
</tr>
</table>
<h2>Menu Options</h2>
<table class="data">
<tr
v-for="menu in def.menuOptions"
v-bind:class="validateWholeScreenMessage(current.menuOptions, menu.id, 'text2')"
>
<td class="label"><div class="stringId">{{menu.id}}</div></td>
<td class="value">
<div v-bind:class="{hidden : false}">
<div class="label">Menu Name</div>
<div class="constraint">
{{constraintWholeScreenMessage(current.menuOptions, menu.id,
'text2')}}
</div>
<div class="label">Description</div>
<div class="ref">{{menu.description}}</div>
<div class="label">Reference</div>
<div class="ref">{{referent.menuOptions[menu.id].text2}}</div>
<div
class="tran"
v-if="isSmall(current.menuOptions[menu.id].text2)"
>
<input
type="text"
v-model="current.menuOptions[menu.id].text2[0]"
v-bind:class="{unchanged : current.menuOptions[menu.id].text2[0] == referent.menuOptions[menu.id].text2[0] && current.menuOptions[menu.id].text2[1] == referent.menuOptions[menu.id].text2[1], empty : current.menuOptions[menu.id].text2[0] == '' && current.menuOptions[menu.id].text2[1] == ''}"
/>
<input
type="text"
v-model="current.menuOptions[menu.id].text2[1]"
v-bind:class="{unchanged : current.menuOptions[menu.id].text2[0] == referent.menuOptions[menu.id].text2[0] && current.menuOptions[menu.id].text2[1] == referent.menuOptions[menu.id].text2[1], empty : current.menuOptions[menu.id].text2[0] == '' && current.menuOptions[menu.id].text2[1] == ''}"
/>
<button
type="button"
@click="convertToLarge(current.menuOptions, menu.id, 'text2')"
>
Convert to large text
</button>
</div>
<div class="tran" v-else>
<input
type="text"
v-model="current.menuOptions[menu.id].text2"
v-bind:class="{unchanged : current.menuOptions[menu.id].text2 == referent.menuOptions[menu.id].text2, empty : current.menuOptions[menu.id].text2==''}"
/>
<button
type="button"
@click="convertToSmall(current.menuOptions, menu.id, 'text2')"
>
Convert to small text
</button>
</div>
</div>
<div class="label">Description</div>
<div class="ref">{{referent.menuOptions[menu.id].desc}}</div>
<div class="tran">
<input
type="text"
v-model="current.menuOptions[menu.id].desc"
v-bind:class="{unchanged : current.menuOptions[menu.id].desc == referent.menuOptions[menu.id].desc, empty : current.menuOptions[menu.id].desc == ''}"
/>
</div>
</td>
</tr>
</table>
<div class="footer">
<input type="button" value="Save" onclick="save()" />
<input type="button" value="View" onclick="view()" />
</div>
</div>
</div>
</body>
</html>

View File

@@ -1,322 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>TS100 Translation Parser</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="translations_commons.js"></script>
<script src="translations_def.js"></script>
<script>
var app;
var defMap = {};
var langMap = {};
var lang;
var defMsgMap;
var defCharMap;
var defGrpMap;
var defOptMap;
function save(langCode){
saveJSON(langMap[langCode], "translation_"+langCode.toLowerCase()+".json");
}
function view(langCode){
showJSON(langMap[langCode], "translation_"+langCode.toLowerCase()+".json");
}
function translationFileSelected(e) {
var target = e;
var id = target.id;
var file = target.files[0];
if (!file) {
return;
}
var fr = new FileReader();
fr.onload = function(e) {
parseTranslationFile(file.name, e.target.result);
}
fr.readAsText(file);
}
function parseTranslationFile(name, src) {
// remove multiline comments
src = src.replace(/\/\*[\s\S.]*?\*\//mg, "");
// remove single-line comments
src = src.replace(/\/\/.*/mg, "");
// remove empty lines
src = src.replace(/^\s*\n/gm, "");
var langCode = "";
var srcLines = src.split("\n");
var reMessage = /const\s+char\s*\*\s+([\w\d]+)\s*=\s*"(.*)"/;
var reSettingsDescStart = /const\s+char\s*\*\s+SettingsDescriptions\[/;
var reSettingsNamesStart = /const\s+char\s*\*\s+SettingsShortNames\[/;
var reSettingsMenuDescStart = /const\s+char\s*\*\s+SettingsMenuEntriesDescriptions\[/;
var reChar = /const\s+char\s+([\w\d]+)\s*=\s*'(\w)'/;
var reMenuMode = /SettingsShortNameType\s*=\s*SHORT_NAME_(\w+)_LINE/;
var reMenuStart = /\s*const\s+char\s*\*\s+SettingsMenuEntries\[/;
// var reString = /^\s*"(.*)"/;
var reString = /"(.*)"/;
var reSingleLine = /{\s*"(.*)"\s*}/;
var reDoubleLine = /{\s*"(.*)"\s*,\s*"(.*)"\s*}/;
var mode = '';
var entryIndex = 0;
for (var li = 0; li < srcLines.length; li++) {
// trim lines
line = srcLines[li] = srcLines[li].trim();
// if entering a new lang block
if (startsWith(line, "#ifdef LANG_")) {
mode = 'new-language';
langCode = line.substring(12);
lang = langMap[langCode];
// use existing or instantiate new
if (!isDefined(lang)) {
lang = {
languageCode: langCode,
cyrillicGlyphs: false,
messages: {},
characters: {},
menuGroups: {},
menuOptions: {}
};
langMap[langCode] = lang;
app.languages[app.languages.length] = langCode;
}
entryIndex = 0;
continue;
}
// Use Cyrillic glyphs
if (startsWith(line, "#define CYRILLIC_GLYPHS")) {
lang.cyrillicGlyphs = true;
entryIndex = 0;
continue;
}
// Menu type
reMenuMode.lastIndex = 0;
match = reMenuMode.exec(line);
if (match) {
entryIndex = 0;
continue;
}
// Messages
reMessage.lastIndex = 0;
match = reMessage.exec(line);
if (match) {
lang.messages[match[1]] = xunescape(match[2]);
entryIndex = 0;
continue;
}
// Chars descriptions
reChar.lastIndex = 0;
match = reChar.exec(line);
if (match) {
// found description block start
mode = 'char';
lang.characters[match[1]] = xunescape(match[2]);
entryIndex = 0;
continue;
}
// Settings descriptions
reSettingsDescStart.lastIndex = 0;
match = reSettingsDescStart.exec(line);
if (match) {
// found description block start
mode = 'settingsDesc';
entryIndex = 0;
continue;
}
reSettingsNamesStart.lastIndex = 0;
match = reSettingsNamesStart.exec(line);
if (match) {
// found description block start
mode = 'settingsNames';
entryIndex = 0;
continue;
}
reMenuStart.lastIndex = 0;
match = reMenuStart.exec(line);
if (match) {
// found description block start
mode = 'menu';
entryIndex = 0;
continue;
}
reSettingsMenuDescStart.lastIndex = 0;
match = reSettingsMenuDescStart.exec(line);
if (match) {
// found description block start
mode = 'menuDesc';
entryIndex = 0;
continue;
}
if (mode == 'menu') {
// processing menu group names
reString.lastIndex = 0;
match = reString.exec(line);
if (match) {
// found description string
var entry = getMenuGroup(entryIndex);
var m = match[1].split("\\n");
entry.text2[0] = xunescape(m[0]);
entry.text2[1] = xunescape(m[1]);
entryIndex++;
}
} else if (mode == 'menuDesc') {
// processing menu group descriptions
reString.lastIndex = 0;
match = reString.exec(line);
if (match) {
// found description string
var entry = getMenuGroup(entryIndex);
entry.desc = xunescape(match[1]);
entryIndex++;
}
} else if (mode == 'settingsDesc') {
// processing option descriptions
reString.lastIndex = 0;
match = reString.exec(line);
if (match) {
// found description string
var entry = getMenuOption(entryIndex);
entry.desc = xunescape(match[1]);
entryIndex++;
}
} else if (mode == 'settingsNames') {
reDoubleLine.lastIndex = 0;
match = reDoubleLine.exec(line);
if (match) {
var entry = getMenuOption(entryIndex);
entry.text2[0] = xunescape(match[1]);
entry.text2[1] = xunescape(match[2]);
entryIndex++;
} else {
reSingleLine.lastIndex = 0;
match = reSingleLine.exec(line);
if (match) {
var entry = getMenuOption(entryIndex);
entry.text = xunescape(match[1]);
entryIndex++;
}
}
}
}
app.done = 1;
}
function getMenuOption(entryIndex) {
var optionDef = def.menuOptions[entryIndex];
if (!isDefined(optionDef)) {
var s = "Could not find menu option with index "+entryIndex;
alert(s);
throw s;
}
var id = optionDef.id;
var entry = lang.menuOptions[id];
if (!isDefined(entry)) {
entry =
{
"text2": ["", ""],
"desc": ""
}
lang.menuOptions[id] = entry;
}
return entry;
}
function getMenuGroup(entryIndex) {
var optionDef = def.menuGroups[entryIndex];
if (!isDefined(optionDef)) {
var s = "Could not find menu group with index "+entryIndex;
alert(s);
throw s;
}
var id = optionDef.id;
var entry = lang.menuGroups[id];
if (!isDefined(entry)) {
entry =
{
"text2": ["", ""],
"desc": ""
}
lang.menuGroups[id] = entry;
}
return entry;
}
function markSaved(lang) {
document.getElementById("row_"+lang).classList.add("saved");
}
function loaded() {
app = new Vue({
el : '#app',
data : {
languages: [],
done : false,
def : {
}
},
methods : {
vSave : function(lang) {
save(lang);
markSaved(lang);
},
vView : function(lang) {
view(lang);
markSaved(lang);
}
}
});
app.def = def;
defMsgMap = copyArrayToMap(app.def.messages);
defCharMap = copyArrayToMap(app.def.characters);
defGrpMap = copyArrayToMap(app.def.menuGroups);
defOptMap = copyArrayToMap(app.def.menuOptions);
}
window.onload=loaded;
</script>
<link href="translations.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="app">
<h1>TS100 Translation Parser</h1>
<table class="header data">
<tr>
<td class="label">Translation.cpp</td>
<td class="value">
<input type="file" id="translation-cpp-file" onchange="translationFileSelected(this)" accept=".cpp">
</td>
</tr>
</table>
<div class="data" v-if="done">
<div class="value" v-for="lang in languages" :id="'row_'+lang">
<input type="button" :value="'Save '+lang" v-on:click="vSave(lang)">
<input type="button" :value="'View '+lang" v-on:click="vView(lang)">
</div>
</div>
</div>
</body>
</html>

View File

@@ -996,6 +996,12 @@ ALL_FONTS = [
NAME_GREEK, NAME_GREEK,
NAME_CJK, # CJK must come last NAME_CJK, # CJK must come last
] ]
ALL_PRE_RENDERED_FONTS = [
NAME_ASCII_BASIC,
NAME_LATIN_EXTENDED,
NAME_CYRILLIC,
NAME_GREEK,
]
def get_font_maps_for_name( def get_font_maps_for_name(

View File

@@ -11,7 +11,7 @@ logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)
HERE = Path(__file__).resolve().parent HERE = Path(__file__).resolve().parent
TRANSLATION_DEFS_PATH = os.path.join(HERE, "translations_def.js") TRANSLATION_DEFS_PATH = os.path.join(HERE, "translations_definitions.json")
ENGLISH_TRANSLATION_PATH = os.path.join(HERE, "translation_EN.json") ENGLISH_TRANSLATION_PATH = os.path.join(HERE, "translation_EN.json")
MENU_DOCS_FILE_PATH = os.path.join(HERE.parent, "Documentation/Settings.md") MENU_DOCS_FILE_PATH = os.path.join(HERE.parent, "Documentation/Settings.md")
@@ -99,8 +99,8 @@ def main() -> None:
json_dir = HERE json_dir = HERE
print(json_dir) print(json_dir)
logging.info("Loading translation definitions") logging.info("Loading translation definitions")
defs = load_json(TRANSLATION_DEFS_PATH, True) defs = load_json(TRANSLATION_DEFS_PATH)
eng_translation = load_json(ENGLISH_TRANSLATION_PATH, False) eng_translation = load_json(ENGLISH_TRANSLATION_PATH)
with open(MENU_DOCS_FILE_PATH, "w") as outputf: with open(MENU_DOCS_FILE_PATH, "w") as outputf:
write_header(outputf) write_header(outputf)
write_menu_categories(outputf, defs, eng_translation) write_menu_categories(outputf, defs, eng_translation)

File diff suppressed because it is too large Load Diff

75
Translations/migrate.py Executable file
View File

@@ -0,0 +1,75 @@
#!/usr/bin/env python3
import json
import os
import sys
# Migrate json files to use "\n" encoding rather than []
def load_json(filename: str) -> dict:
with open(filename, "r", encoding="utf8") as f:
return json.loads(f.read())
def save_json(filename: str, data: dict):
with open(filename, "w", encoding="utf8") as f:
json.dump(data, f, indent=4, ensure_ascii=False)
file_name = sys.argv[1]
print(file_name)
data = load_json(file_name)
# Migrate messages to be delimited
for key in data["messagesWarn"]:
old_message = data["messagesWarn"][key]
if isinstance(old_message, list):
print(old_message)
new_message = "\n".join(old_message)
data["messagesWarn"][key] = {"message": new_message}
else:
data["messagesWarn"][key] = {"message": old_message}
for key in data["messages"]:
old_message = data["messages"][key]
if isinstance(old_message, list):
print(old_message)
new_message = "\n".join(old_message)
data["messagesWarn"][key] = {"message": new_message}
else:
data["messagesWarn"][key] = {"message": old_message}
del data["messages"]
print("Part 2")
# for menu-groups break out the text2 field
for key in data["menuGroups"]:
old_data = data["menuGroups"][key]
if isinstance(old_data.get("text2", ""), list):
new_data = "\n".join(old_data["text2"])
data["menuGroups"][key]["displayText"] = new_data
del data["menuGroups"][key]["text2"]
else:
data["menuGroups"][key]["displayText"] = old_data["text2"].replace("\n", "")
del data["menuGroups"][key]["text2"]
data["menuGroups"][key]["description"] = data["menuGroups"][key]["desc"]
del data["menuGroups"][key]["desc"]
print("Part 3")
# for menu-groups break out the text2 field
for key in data["menuOptions"]:
old_data = data["menuOptions"][key]
if isinstance(old_data.get("text2", ""), list):
new_data = "\n".join(old_data["text2"])
data["menuOptions"][key]["displayText"] = new_data
del data["menuOptions"][key]["text2"]
else:
data["menuOptions"][key]["displayText"] = old_data["text2"].replace("\n", "")
del data["menuOptions"][key]["text2"]
data["menuOptions"][key]["description"] = data["menuOptions"][key]["desc"]
del data["menuOptions"][key]["desc"]
save_json(file_name, data)

View File

@@ -2,44 +2,67 @@
"languageCode": "BE", "languageCode": "BE",
"languageLocalName": "Беларуская", "languageLocalName": "Беларуская",
"tempUnitFahrenheit": false, "tempUnitFahrenheit": false,
"messages": {
"SettingsCalibrationWarning": "Пераканайцеся, што пры наступнай загрузцы наканечнік і ручка маюць пакаёвую тэмпературу!",
"CJCCalibrating": "каліброўка",
"SettingsResetWarning": "Вы ўпэннены, што жадаеце зкінуць налады да першапачатковых значэнняў?",
"UVLOWarningString": "НАПРУГА--",
"UndervoltageString": "Нізкая напруга",
"InputVoltageString": "Сілкаванне В: ",
"SleepingSimpleString": "Zzzz",
"SleepingAdvancedString": "Чаканне...",
"SleepingTipAdvancedString": "Джала:",
"OffString": "Выкл.",
"DeviceFailedValidationWarning": "Ваша прылада, хутчэй за ўсё, падробка!"
},
"messagesWarn": { "messagesWarn": {
"CJCCalibrationDone": [ "CJCCalibrationDone": {
"Calibration", "message": "Каліброўка\nзроблена!"
"done!" },
], "ResetOKMessage": {
"ResetOKMessage": "Скід OK", "message": "Скід OK"
"SettingsResetMessage": [ },
"Налады", "SettingsResetMessage": {
"зкінуты!" "message": "Налады\nзкінуты!"
], },
"NoAccelerometerMessage": [ "NoAccelerometerMessage": {
"Ня вызначаны", "message": "Ня вызначаны\nакселерометр!"
"акселерометр!" },
], "NoPowerDeliveryMessage": {
"NoPowerDeliveryMessage": [ "message": "Няма USB-PD IC\nвыяўлены!"
"Няма USB-PD IC", },
"выяўлены!" "LockingKeysString": {
], "message": "ЗАМКНУТЫ"
"LockingKeysString": "ЗАМКНУТЫ", },
"UnlockingKeysString": "АДЫМКНУТЫ", "UnlockingKeysString": {
"WarningKeysLockedString": "!ЗАМКНУТЫ!", "message": "АДЫМКНУТЫ"
"WarningThermalRunaway": [ },
"Цеплавы", "WarningKeysLockedString": {
"Уцякач" "message": "!ЗАМКНУТЫ!"
] },
"WarningThermalRunaway": {
"message": "Некантралюемае\nразаграванне"
},
"SettingsCalibrationWarning": {
"message": "Пераканайцеся, што пры наступнай загрузцы наканечнік і ручка маюць пакаёвую тэмпературу!"
},
"CJCCalibrating": {
"message": "каліброўка\n"
},
"SettingsResetWarning": {
"message": "Вы ўпэннены, што жадаеце зкінуць налады да першапачатковых значэнняў?"
},
"UVLOWarningString": {
"message": "НАПРУГА--"
},
"UndervoltageString": {
"message": "Нізкая напруга\n"
},
"InputVoltageString": {
"message": "Сілкаванне В: \n"
},
"SleepingSimpleString": {
"message": "Zzzz"
},
"SleepingAdvancedString": {
"message": "Чаканне...\n"
},
"SleepingTipAdvancedString": {
"message": "Джала: \n"
},
"OffString": {
"message": "Выкл."
},
"DeviceFailedValidationWarning": {
"message": "Ваша прылада, хутчэй за ўсё, падробка!"
}
}, },
"characters": { "characters": {
"SettingRightChar": "П", "SettingRightChar": "П",
@@ -53,289 +76,176 @@
"SettingStartSolderingChar": "П", "SettingStartSolderingChar": "П",
"SettingStartSleepChar": "Ч", "SettingStartSleepChar": "Ч",
"SettingStartSleepOffChar": "К", "SettingStartSleepOffChar": "К",
"SettingSensitivityOff": "А",
"SettingSensitivityLow": "Н",
"SettingSensitivityMedium": "С",
"SettingSensitivityHigh": "В",
"SettingLockDisableChar": "А", "SettingLockDisableChar": "А",
"SettingLockBoostChar": "Т", "SettingLockBoostChar": "Т",
"SettingLockFullChar": "П" "SettingLockFullChar": "П"
}, },
"menuGroups": { "menuGroups": {
"PowerMenu": { "PowerMenu": {
"text2": [ "displayText": "Налады\nсілкавання",
"Налады", "description": ""
"сілкавання"
],
"desc": ""
}, },
"SolderingMenu": { "SolderingMenu": {
"text2": [ "displayText": "Налады\nпайкі",
"Налады", "description": ""
"пайкі"
],
"desc": ""
}, },
"PowerSavingMenu": { "PowerSavingMenu": {
"text2": [ "displayText": "Рэжымы\nсну",
"Рэжымы", "description": ""
"сну"
],
"desc": ""
}, },
"UIMenu": { "UIMenu": {
"text2": [ "displayText": "Налады\nінтэрфейсу",
"Налады", "description": ""
"інтэрфейсу"
],
"desc": ""
}, },
"AdvancedMenu": { "AdvancedMenu": {
"text2": [ "displayText": "Дадатковыя\nналады",
"Дадатковыя", "description": ""
"налады"
],
"desc": ""
} }
}, },
"menuOptions": { "menuOptions": {
"DCInCutoff": { "DCInCutoff": {
"text2": [ "displayText": "Крыніца\nсілкавання",
"Крыніца", "description": "Крыніца сілкавання. Усталюе напругу адсечкі. (DC 10В) (S 3,3В на ячэйку, без абмежавання магутнасці)"
"сілкавання"
],
"desc": "Крыніца сілкавання. Усталюе напругу адсечкі. (DC 10В) (S 3,3В на ячэйку, без абмежавання магутнасці)"
}, },
"MinVolCell": { "MinVolCell": {
"text2": [ "displayText": "Мін.\nнапр.",
"Мін.", "description": "Мінімальная дазволеная напруга на ячэйку (3S: 3 - 3,7V | 4S: 2,4 - 3,7V)"
"напр."
],
"desc": "Мінімальная дазволеная напруга на ячэйку (3S: 3 - 3,7V | 4S: 2,4 - 3,7V)"
}, },
"QCMaxVoltage": { "QCMaxVoltage": {
"text2": [ "displayText": "Магутнасць\nсілкавання",
"Магутнасць", "description": "Магутнасць выкарыстоўваемай крыніцы сілкавання"
"сілкавання"
],
"desc": "Магутнасць выкарыстоўваемай крыніцы сілкавання"
}, },
"PDNegTimeout": { "PDNegTimeout": {
"text2": [ "displayText": "PD\nпрыпынак",
"PD", "description": "Час чакання ўзгаднення PD з крокам 100 мс для сумяшчальнасці з некаторымі зараднымі зараднымі прыладамі QC (0: адключана)"
"прыпынак" },
], "PDVpdo": {
"desc": "Час чакання ўзгаднення PD з крокам 100 мс для сумяшчальнасці з некаторымі зараднымі зараднымі прыладамі QC (0: адключана)" "displayText": "PD\nVPDO",
"description": "Уключае рэжымы PPS & EPR."
}, },
"BoostTemperature": { "BoostTemperature": {
"text2": [ "displayText": "t° турба\nрэжыму",
"t° турба", "description": "Тэмпература джала ў турба-рэжыме"
"рэжыму"
],
"desc": "Тэмпература джала ў турба-рэжыме"
}, },
"AutoStart": { "AutoStart": {
"text2": [ "displayText": "Аўта\nстарт",
"Аўта", "description": "Рэжым, у якім запускаецца паяльнік пры падачы сілкавання (В=Выкл. | П=Пайка | Ч=Чаканне | К=Чаканне пры комн. тэмп.)"
"старт"
],
"desc": "Рэжым, у якім запускаецца паяльнік пры падачы сілкавання (В=Выкл. | П=Пайка | Ч=Чаканне | К=Чаканне пры комн. тэмп.)"
}, },
"TempChangeShortStep": { "TempChangeShortStep": {
"text2": [ "displayText": "Крок тэмп.\nкар. нац.",
"Крок тэмп.", "description": "Крок вымярэння тэмпературы пры кароткім націску кнопак"
"кар. нац."
],
"desc": "Крок вымярэння тэмпературы пры кароткім націску кнопак"
}, },
"TempChangeLongStep": { "TempChangeLongStep": {
"text2": [ "displayText": "Крок тэмп.\nпад. нац.",
"Крок тэмп.", "description": "Крок вымярэння тэмпературы пры падоўжаным націску кнопак"
"пад. нац."
],
"desc": "Крок вымярэння тэмпературы пры падоўжаным націску кнопак"
}, },
"LockingMode": { "LockingMode": {
"text2": [ "displayText": "Дазволіць\nблок. кнопак",
"Дазволіць", "description": "Пры рабоце падоўжаны націск дзьвух кнопак блакуе іх (А=Адключана | Т=Толькі турба | П=Поўная блакіроўка)"
"блок. кнопак"
],
"desc": "Пры рабоце падоўжаны націск дзьвух кнопак блакуе іх (А=Адключана | Т=Толькі турба | П=Поўная блакіроўка)"
}, },
"MotionSensitivity": { "MotionSensitivity": {
"text2": [ "displayText": "Адчувальнасць\nакселерометра",
"Адчувальнасць", "description": "Адчувальнасць акселерометра (0=Выкл. | 1=Мін. | ... | 9=Макс.)"
"акселерометра"
],
"desc": "Адчувальнасць акселерометра (0=Выкл. | 1=Мін. | ... | 9=Макс.)"
}, },
"SleepTemperature": { "SleepTemperature": {
"text2": [ "displayText": "Тэмп.\nчакання",
"Тэмп.", "description": "Тэмпература рэжыму чакання"
"чакання"
],
"desc": "Тэмпература рэжыму чакання"
}, },
"SleepTimeout": { "SleepTimeout": {
"text2": [ "displayText": "Таймаўт\nчакання",
"Таймаўт", "description": "Час да пераходу ў рэжым чакання (Хвіліны | Секунды)"
"чакання"
],
"desc": "Час да пераходу ў рэжым чакання (Хвіліны | Секунды)"
}, },
"ShutdownTimeout": { "ShutdownTimeout": {
"text2": [ "displayText": "Таймаут\nвыключэння",
"Таймаут", "description": "Час да адключэння паяльніка (Хвіліны)"
"выключэння"
],
"desc": "Час да адключэння паяльніка (Хвіліны)"
}, },
"HallEffSensitivity": { "HallEffSensitivity": {
"text2": [ "displayText": "Эфект Хола\nадчувальнасць",
"Эфект Хола", "description": "Узровень адчувальнасці датчыка хола ў рэжыме сну (0=Выкл. | 1=Мін. | ... | 9=Макс.)"
"адчувальнасць"
],
"desc": "Узровень адчувальнасці датчыка хола ў рэжыме сну (0=Выкл. | 1=Мін. | ... | 9=Макс.)"
}, },
"TemperatureUnit": { "TemperatureUnit": {
"text2": [ "displayText": "Адзінкі\nтэмпературы",
"Адзінкі", "description": "Адзінкі вымярэння тэмпературы (C=Цэльcія | F=Фарэнгейта)"
"тэмпературы"
],
"desc": "Адзінкі вымярэння тэмпературы (C=Цэльcія | F=Фарэнгейта)"
}, },
"DisplayRotation": { "DisplayRotation": {
"text2": [ "displayText": "Арыентацыя\nэкрану",
"Арыентацыя", "description": "Арыентацыя экрану (П=Правая рука | Л=Левая рука | А=Аўта)"
"экрану"
],
"desc": "Арыентацыя экрану (П=Правая рука | Л=Левая рука | А=Аўта)"
}, },
"CooldownBlink": { "CooldownBlink": {
"text2": [ "displayText": "Мігценне t°\nпры астуджэнні",
"Мігценне t°", "description": "Міргаць тэмпературай на экране астуджэння, пакуль джала яшчэ гарачае"
"пры астуджэнні"
],
"desc": "Міргаць тэмпературай на экране астуджэння, пакуль джала яшчэ гарачае"
}, },
"ScrollingSpeed": { "ScrollingSpeed": {
"text2": [ "displayText": "Хуткацсь\nтексту",
"Хуткацсь", "description": "Хуткасць гартання тэксту (М=марудна | Х=хутка)"
"тексту"
],
"desc": "Хуткасць гартання тэксту (М=марудна | Х=хутка)"
}, },
"ReverseButtonTempChange": { "ReverseButtonTempChange": {
"text2": [ "displayText": "Інвертаваць\nкнопкі",
"Інвертаваць", "description": "Інвертаваць кнопкі вымярэння тэмпературы"
"кнопкі"
],
"desc": "Інвертаваць кнопкі вымярэння тэмпературы"
}, },
"AnimSpeed": { "AnimSpeed": {
"text2": [ "displayText": "Хуткасць\nанімацыі",
"Хуткасць", "description": "Хуткасць анімацыі гузікаў у галоўным меню (Мілісекунды) (А=Адключана | Н=Нізкая | С=Сярэдняя | В=Высокая)"
"анімацыі"
],
"desc": "Хуткасць анімацыі гузікаў у галоўным меню (Мілісекунды) (А=Адключана | Н=Нізкая | С=Сярэдняя | В=Высокая)"
}, },
"AnimLoop": { "AnimLoop": {
"text2": [ "displayText": "Зацыкленая\nанімацыя",
"Зацыкленая", "description": "Зацыкленая анімацыя гузікаў у галоўным меню"
"анімацыя"
],
"desc": "Зацыкленая анімацыя гузікаў у галоўным меню"
}, },
"Brightness": { "Brightness": {
"text2": [ "displayText": "Экран\nЯркасць",
кран", "description": "Адрэгулюйце кантраснасць / яркасць OLED-экрана"
"Яркасць"
],
"desc": "Адрэгулюйце кантраснасць / яркасць OLED-экрана"
}, },
"ColourInversion": { "ColourInversion": {
"text2": [ "displayText": "Экран\nІнвертаваць",
кран", "description": "Інвертаваць колеры OLED-экрана"
"Інвертаваць"
],
"desc": "Інвертаваць колеры OLED-экрана"
}, },
"LOGOTime": { "LOGOTime": {
"text2": [ "displayText": "Лагатып загрузкі\nпрацягласць",
агатып загрузкі", "description": "Усталяваць працягласць лагатыпа загрузкі (s=Секунды)"
"працягласць"
],
"desc": "Усталяваць працягласць лагатыпа загрузкі (s=Секунды)"
}, },
"AdvancedIdle": { "AdvancedIdle": {
"text2": [ "displayText": "Падрабязны\nрэжым чакання",
"Падрабязны", "description": "Адлюстроўваць дэталёвую инфармацыю паменьшаным шрыфтом на экране чакання"
"рэжым чакання"
],
"desc": "Адлюстроўваць дэталёвую инфармацыю паменьшаным шрыфтом на экране чакання"
}, },
"AdvancedSoldering": { "AdvancedSoldering": {
"text2": [ "displayText": "Падрабязны\nэкран пайкі",
"Падрабязны", "description": "Паказваць дэталёвую інформацыю на экране пайкі"
"экран пайкі" },
], "BluetoothLE": {
"desc": "Паказваць дэталёвую інформацыю на экране пайкі" "displayText": "Bluetooth\n",
"description": "Enables BLE"
}, },
"PowerLimit": { "PowerLimit": {
"text2": [ "displayText": "Межы\nмагутнасці",
"Межы", "description": "Максімальная магутнасць, якую можа выкарыстоўваць паяльнік (Ватт)"
"магутнасці"
],
"desc": "Максімальная магутнасць, якую можа выкарыстоўваць паяльнік (Ватт)"
}, },
"CalibrateCJC": { "CalibrateCJC": {
"text2": [ "displayText": "Каліброўка тэмпературы\nпры наступнай загрузцы",
"Каліброўка тэмпературы", "description": "Каліброўка тэмпературы пры наступным уключэнні (не патрабуецца, калі розніца тэмператур меньш за 5°C)"
"пры наступнай загрузцы"
],
"desc": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
}, },
"VoltageCalibration": { "VoltageCalibration": {
"text2": [ "displayText": "Каліброўка\nнапругі",
"Каліброўка", "description": "Каліброўка ўваходнай напругі (падоўжаны націск для выхаду)"
"напругі"
],
"desc": "Каліброўка ўваходнай напругі (падоўжаны націск для выхаду)"
}, },
"PowerPulsePower": { "PowerPulsePower": {
"text2": [ "displayText": "Сіла імп.\nсілкав. Вт",
"Сіла імп.", "description": "Моц імпульса ўтрымливаючага ад сну павербанку ці іншай крыніцы сілкавання"
"сілкав. Вт"
],
"desc": "Моц імпульса ўтрымливаючага ад сну павербанку ці іншай крыніцы сілкавання"
}, },
"PowerPulseWait": { "PowerPulseWait": {
"text2": [ "displayText": "Імпульс магутнасці\nчас чакання",
"Імпульс магутнасці", "description": "Час чакання перад запускам кожнага імпульсу няспання (x 2.5 с)"
"час чакання"
],
"desc": "Час чакання перад запускам кожнага імпульсу няспання (x 2.5 с)"
}, },
"PowerPulseDuration": { "PowerPulseDuration": {
"text2": [ "displayText": "Імпульс магутнасці\nпрацягласць",
"Імпульс магутнасці", "description": "Працягласць імпульсу няспання (x 250 мс)"
"працягласць"
],
"desc": "Працягласць імпульсу няспання (x 250 мс)"
}, },
"SettingsReset": { "SettingsReset": {
"text2": [ "displayText": "Скід\nналадаў",
"Скід", "description": "Скід наладаў да першапачатковых значэнняў"
"наладаў"
],
"desc": "Скід наладаў да першапачатковых значэнняў"
}, },
"LanguageSwitch": { "LanguageSwitch": {
"text2": [ "displayText": "Мова:\n BY Беларуская",
"Мова:", "description": ""
" BY Беларуская"
],
"desc": ""
} }
} }
} }

View File

@@ -2,44 +2,67 @@
"languageCode": "BG", "languageCode": "BG",
"languageLocalName": "Български", "languageLocalName": "Български",
"tempUnitFahrenheit": false, "tempUnitFahrenheit": false,
"messages": {
"SettingsCalibrationWarning": "Before rebooting, make sure tip & handle are at room temperature!",
"CJCCalibrating": "calibrating",
"SettingsResetWarning": "Сигурни ли сте, че искате да върнете фабричните настройки?",
"UVLOWarningString": "Ниско DC Напрежение",
"UndervoltageString": "Ниско Напрежение",
"InputVoltageString": "Входно V: ",
"SleepingSimpleString": "Сън",
"SleepingAdvancedString": "Хър Хър Хър...",
"SleepingTipAdvancedString": "Връх:",
"OffString": "Изкл.",
"DeviceFailedValidationWarning": "Your device is most likely a counterfeit!"
},
"messagesWarn": { "messagesWarn": {
"CJCCalibrationDone": [ "CJCCalibrationDone": {
"Calibration", "message": "Calibration\ndone!"
"done!" },
], "ResetOKMessage": {
"ResetOKMessage": "Нулиране", "message": "Нулиране"
"SettingsResetMessage": [ },
"Настройките бяха", "SettingsResetMessage": {
"нулирани!" "message": "Настройките бяха\nнулирани!"
], },
"NoAccelerometerMessage": [ "NoAccelerometerMessage": {
"No accelerometer", "message": "No accelerometer\ndetected!"
"detected!" },
], "NoPowerDeliveryMessage": {
"NoPowerDeliveryMessage": [ "message": "No USB-PD IC\ndetected!"
"No USB-PD IC", },
"detected!" "LockingKeysString": {
], "message": "LOCKED"
"LockingKeysString": "LOCKED", },
"UnlockingKeysString": "UNLOCKED", "UnlockingKeysString": {
"WarningKeysLockedString": "!LOCKED!", "message": "UNLOCKED"
"WarningThermalRunaway": [ },
"Thermal", "WarningKeysLockedString": {
"Runaway" "message": "!LOCKED!"
] },
"WarningThermalRunaway": {
"message": "Thermal\nRunaway"
},
"SettingsCalibrationWarning": {
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
"CJCCalibrating": {
"message": "calibrating\n"
},
"SettingsResetWarning": {
"message": "Сигурни ли сте, че искате да върнете фабричните настройки?"
},
"UVLOWarningString": {
"message": "Ниско DC Напрежение"
},
"UndervoltageString": {
"message": "Ниско Напрежение\n"
},
"InputVoltageString": {
"message": "Входно V: \n"
},
"SleepingSimpleString": {
"message": "Сън"
},
"SleepingAdvancedString": {
"message": "Хър Хър Хър...\n"
},
"SleepingTipAdvancedString": {
"message": "Връх: \n"
},
"OffString": {
"message": "Изкл."
},
"DeviceFailedValidationWarning": {
"message": "Your device is most likely a counterfeit!"
}
}, },
"characters": { "characters": {
"SettingRightChar": "R", "SettingRightChar": "R",
@@ -53,289 +76,176 @@
"SettingStartSolderingChar": "Р", "SettingStartSolderingChar": "Р",
"SettingStartSleepChar": "С", "SettingStartSleepChar": "С",
"SettingStartSleepOffChar": "П", "SettingStartSleepOffChar": "П",
"SettingSensitivityOff": "O",
"SettingSensitivityLow": "L",
"SettingSensitivityMedium": "M",
"SettingSensitivityHigh": "H",
"SettingLockDisableChar": "D", "SettingLockDisableChar": "D",
"SettingLockBoostChar": "B", "SettingLockBoostChar": "B",
"SettingLockFullChar": "F" "SettingLockFullChar": "F"
}, },
"menuGroups": { "menuGroups": {
"PowerMenu": { "PowerMenu": {
"text2": [ "displayText": "Power\nsettings",
"Power", "description": ""
"settings"
],
"desc": ""
}, },
"SolderingMenu": { "SolderingMenu": {
"text2": [ "displayText": "Поялник\nНастройки",
"Поялник", "description": ""
"Настройки"
],
"desc": ""
}, },
"PowerSavingMenu": { "PowerSavingMenu": {
"text2": [ "displayText": "Режими\nНастройки",
"Режими", "description": ""
"Настройки"
],
"desc": ""
}, },
"UIMenu": { "UIMenu": {
"text2": [ "displayText": "Интерфейс\nНастройки",
"Интерфейс", "description": ""
"Настройки"
],
"desc": ""
}, },
"AdvancedMenu": { "AdvancedMenu": {
"text2": [ "displayText": "Разширени\nНастройки",
"Разширени", "description": ""
"Настройки"
],
"desc": ""
} }
}, },
"menuOptions": { "menuOptions": {
"DCInCutoff": { "DCInCutoff": {
"text2": [ "displayText": "Източник\nзахранване",
"Източник", "description": "Източник на захранване. Минимално напрежение. (DC 10V) (S 3,3V за клетка)"
"захранване"
],
"desc": "Източник на захранване. Минимално напрежение. (DC 10V) (S 3,3V за клетка)"
}, },
"MinVolCell": { "MinVolCell": {
"text2": [ "displayText": "Minimum\nvoltage",
"Minimum", "description": "Minimum allowed voltage per battery cell (3S: 3 - 3,7V | 4-6S: 2,4 - 3,7V)"
"voltage"
],
"desc": "Minimum allowed voltage per battery cell (3S: 3 - 3,7V | 4-6S: 2,4 - 3,7V)"
}, },
"QCMaxVoltage": { "QCMaxVoltage": {
"text2": [ "displayText": "Мощност на\nзахранване",
"Мощност на", "description": "Мощност на избраното захранване"
"захранване"
],
"desc": "Мощност на избраното захранване"
}, },
"PDNegTimeout": { "PDNegTimeout": {
"text2": [ "displayText": "PD\ntimeout",
"PD", "description": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers"
"timeout" },
], "PDVpdo": {
"desc": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers" "displayText": "PD\nVPDO",
"description": "Enables PPS & EPR modes"
}, },
"BoostTemperature": { "BoostTemperature": {
"text2": [ "displayText": "Турбо\nтемп.",
"Турбо", "description": "Температура за \"турбо\" режим"
"темп."
],
"desc": "Температура за \"турбо\" режим"
}, },
"AutoStart": { "AutoStart": {
"text2": [ "displayText": "Автоматичен\nработен режим",
"Автоматичен", "description": "Режим на поялника при включване на захранването. (И=Изключен | Р=Работен | С=Сън | П=Сън температура помещение)"
"работен режим"
],
"desc": "Режим на поялника при включване на захранването. (И=Изключен | Р=Работен | С=Сън | П=Сън температура помещение)"
}, },
"TempChangeShortStep": { "TempChangeShortStep": {
"text2": [ "displayText": "Промяна T\nбързо?",
"Промяна T", "description": "Промяна на температура при бързо натискане на бутон!"
"бързо?"
],
"desc": "Промяна на температура при бързо натискане на бутон!"
}, },
"TempChangeLongStep": { "TempChangeLongStep": {
"text2": [ "displayText": "Промяна Т\nзадържане?",
"Промяна Т", "description": "Промяна на температура при задържане на бутон!"
"задържане?"
],
"desc": "Промяна на температура при задържане на бутон!"
}, },
"LockingMode": { "LockingMode": {
"text2": [ "displayText": "Allow locking\nbuttons",
"Allow locking", "description": "While soldering, hold down both buttons to toggle locking them (D=disable | B=boost mode only | F=full locking)"
"buttons"
],
"desc": "While soldering, hold down both buttons to toggle locking them (D=disable | B=boost mode only | F=full locking)"
}, },
"MotionSensitivity": { "MotionSensitivity": {
"text2": [ "displayText": "Усещане\nза движение",
"Усещане", "description": "Усещане за движение (0=Изключено | 1=Слабо | ... | 9=Силно)"
"за движение"
],
"desc": "Усещане за движение (0=Изключено | 1=Слабо | ... | 9=Силно)"
}, },
"SleepTemperature": { "SleepTemperature": {
"text2": [ "displayText": "Темп.\nсън",
"Темп.", "description": "Температура при режим \"сън\" (C)"
"сън"
],
"desc": "Температура при режим \"сън\" (C)"
}, },
"SleepTimeout": { "SleepTimeout": {
"text2": [ "displayText": "Време\nсън",
"Време", "description": "Включване в режим \"сън\" след: (Минути | Секунди)"
"сън"
],
"desc": "Включване в режим \"сън\" след: (Минути | Секунди)"
}, },
"ShutdownTimeout": { "ShutdownTimeout": {
"text2": [ "displayText": "Време\nизкл.",
"Време", "description": "Изключване след (Минути)"
"изкл."
],
"desc": "Изключване след (Минути)"
}, },
"HallEffSensitivity": { "HallEffSensitivity": {
"text2": [ "displayText": "Hall sensor\nsensitivity",
"Hall sensor", "description": "Sensitivity to magnets (0=Изключено | 1=Слабо | ... | 9=Силно)"
"sensitivity"
],
"desc": "Sensitivity to magnets (0=Изключено | 1=Слабо | ... | 9=Силно)"
}, },
"TemperatureUnit": { "TemperatureUnit": {
"text2": [ "displayText": "Единици за\nтемпература",
"Единици за", "description": "Единици за температура (C=Целзии | F=Фаренхайт)"
"температура"
],
"desc": "Единици за температура (C=Целзии | F=Фаренхайт)"
}, },
"DisplayRotation": { "DisplayRotation": {
"text2": [ "displayText": "Ориентация\nна дисплея",
"Ориентация", "description": "Ориентация на дисплея (R=Дясна Ръка | L=Лява Ръка | A=Автоматично)"
"на дисплея"
],
"desc": "Ориентация на дисплея (R=Дясна Ръка | L=Лява Ръка | A=Автоматично)"
}, },
"CooldownBlink": { "CooldownBlink": {
"text2": [ "displayText": "Мигай при\nтопъл поялник",
"Мигай при", "description": "След изключване от работен режим, индикатора за температура да мига докато човката на поялника все още е топла"
"топъл поялник"
],
"desc": "След изключване от работен режим, индикатора за температура да мига докато човката на поялника все още е топла"
}, },
"ScrollingSpeed": { "ScrollingSpeed": {
"text2": [ "displayText": "Скорост\nна текста",
"Скорост", "description": "Скорост на движение на този текст"
"на текста"
],
"desc": "Скорост на движение на този текст"
}, },
"ReverseButtonTempChange": { "ReverseButtonTempChange": {
"text2": [ "displayText": "Размяна\nбутони +-?",
"Размяна", "description": "Обръщане на бутоните \"+\" и \"-\" за промяна на температурата на върха на поялника"
"бутони +-?"
],
"desc": "Обръщане на бутоните \"+\" и \"-\" за промяна на температурата на върха на поялника"
}, },
"AnimSpeed": { "AnimSpeed": {
"text2": [ "displayText": "Anim.\nspeed",
"Anim.", "description": "Pace of icon animations in menu (O=off | S=slow | M=medium | F=fast)"
"speed"
],
"desc": "Pace of icon animations in menu (O=off | S=slow | M=medium | F=fast)"
}, },
"AnimLoop": { "AnimLoop": {
"text2": [ "displayText": "Anim.\nloop",
"Anim.", "description": "Loop icon animations in main menu"
"loop"
],
"desc": "Loop icon animations in main menu"
}, },
"Brightness": { "Brightness": {
"text2": [ "displayText": "Screen\nbrightness",
"Screen", "description": "Adjust the OLED screen brightness"
"brightness"
],
"desc": "Adjust the OLED screen brightness"
}, },
"ColourInversion": { "ColourInversion": {
"text2": [ "displayText": "Invert\nscreen",
"Invert", "description": "Invert the OLED screen colors"
"screen"
],
"desc": "Invert the OLED screen colors"
}, },
"LOGOTime": { "LOGOTime": {
"text2": [ "displayText": "Boot logo\nduration",
"Boot logo", "description": "Set boot logo duration (s=seconds)"
"duration"
],
"desc": "Set boot logo duration (s=seconds)"
}, },
"AdvancedIdle": { "AdvancedIdle": {
"text2": [ "displayText": "Детайлен\nекран в покой",
"Детайлен", "description": "Покажи детайлна информация със ситен шрифт на екрана в режим на покой."
"екран в покой"
],
"desc": "Покажи детайлна информация със ситен шрифт на екрана в режим на покой."
}, },
"AdvancedSoldering": { "AdvancedSoldering": {
"text2": [ "displayText": "Детайлен\nработен екран",
"Детайлен", "description": "Детайлна информация в работен режим при запояване"
"работен екран" },
], "BluetoothLE": {
"desc": "Детайлна информация в работен режим при запояване" "displayText": "Bluetooth\n",
"description": "Enables BLE"
}, },
"PowerLimit": { "PowerLimit": {
"text2": [ "displayText": "Лимит на\nмощност",
"Лимит на", "description": "Максимална мощност на поялника (Watt)"
"мощност"
],
"desc": "Максимална мощност на поялника (Watt)"
}, },
"CalibrateCJC": { "CalibrateCJC": {
"text2": [ "displayText": "Calibrate CJC\nat next boot",
"Calibrate CJC", "description": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5 C)"
"at next boot"
],
"desc": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5 C)"
}, },
"VoltageCalibration": { "VoltageCalibration": {
"text2": [ "displayText": "Калибриране\nнапрежение?",
"Калибриране", "description": "Калибриране на входното напрежение. Задръжте бутонa за изход"
"напрежение?"
],
"desc": "Калибриране на входното напрежение. Задръжте бутонa за изход"
}, },
"PowerPulsePower": { "PowerPulsePower": {
"text2": [ "displayText": "Захранващ\nимпулс",
"Захранващ", "description": "Поддържане на интензивност на захранващия импулс"
"импулс"
],
"desc": "Поддържане на интензивност на захранващия импулс"
}, },
"PowerPulseWait": { "PowerPulseWait": {
"text2": [ "displayText": "Power pulse\ndelay",
"Power pulse", "description": "Delay before keep-awake-pulse is triggered (x 2,5с)"
"delay"
],
"desc": "Delay before keep-awake-pulse is triggered (x 2,5с)"
}, },
"PowerPulseDuration": { "PowerPulseDuration": {
"text2": [ "displayText": "Power pulse\nduration",
"Power pulse", "description": "Keep-awake-pulse duration (x 250мс)"
"duration"
],
"desc": "Keep-awake-pulse duration (x 250мс)"
}, },
"SettingsReset": { "SettingsReset": {
"text2": [ "displayText": "Фабрични\nнастройки?",
"Фабрични", "description": "Връщане на фабрични настройки"
"настройки?"
],
"desc": "Връщане на фабрични настройки"
}, },
"LanguageSwitch": { "LanguageSwitch": {
"text2": [ "displayText": "Език:\n BG Български",
"Език:", "description": ""
" BG Български"
],
"desc": ""
} }
} }
} }

View File

@@ -2,44 +2,67 @@
"languageCode": "CS", "languageCode": "CS",
"languageLocalName": "Český", "languageLocalName": "Český",
"tempUnitFahrenheit": false, "tempUnitFahrenheit": false,
"messages": {
"SettingsCalibrationWarning": "Before rebooting, make sure tip & handle are at room temperature!",
"CJCCalibrating": "calibrating",
"SettingsResetWarning": "Opravdu chcete resetovat zařízení do továrního nastavení?",
"UVLOWarningString": "Nízké DC",
"UndervoltageString": "Nízké napětí",
"InputVoltageString": "Napětí: ",
"SleepingSimpleString": "Zzz ",
"SleepingAdvancedString": "Režim spánku...",
"SleepingTipAdvancedString": "Hrot:",
"OffString": "Vyp",
"DeviceFailedValidationWarning": "Your device is most likely a counterfeit!"
},
"messagesWarn": { "messagesWarn": {
"CJCCalibrationDone": [ "CJCCalibrationDone": {
"Calibration", "message": "Calibration\ndone!"
"done!" },
], "ResetOKMessage": {
"ResetOKMessage": "Reset OK", "message": "Reset OK"
"SettingsResetMessage": [ },
"Nějaká nastavení", "SettingsResetMessage": {
"byla změněna!" "message": "Nějaká nastavení\nbyla změněna!"
], },
"NoAccelerometerMessage": [ "NoAccelerometerMessage": {
"Akcelerometr", "message": "Akcelerometr\nnebyl detekován!"
"nebyl detekován!" },
], "NoPowerDeliveryMessage": {
"NoPowerDeliveryMessage": [ "message": "Žádný IO USB-PD\nnebyl detekován!"
"Žádný IO USB-PD", },
"nebyl detekován!" "LockingKeysString": {
], "message": "ZAMČENO"
"LockingKeysString": "ZAMČENO", },
"UnlockingKeysString": "ODEMČENO", "UnlockingKeysString": {
"WarningKeysLockedString": "ZAMČENO!", "message": "ODEMČENO"
"WarningThermalRunaway": [ },
"Teplotní", "WarningKeysLockedString": {
"Ochrana" "message": "ZAMČENO!"
] },
"WarningThermalRunaway": {
"message": "Teplotní\nOchrana"
},
"SettingsCalibrationWarning": {
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
"CJCCalibrating": {
"message": "calibrating\n"
},
"SettingsResetWarning": {
"message": "Opravdu chcete resetovat zařízení do továrního nastavení?"
},
"UVLOWarningString": {
"message": "Nízké DC"
},
"UndervoltageString": {
"message": "Nízké napětí\n"
},
"InputVoltageString": {
"message": "Napětí: \n"
},
"SleepingSimpleString": {
"message": "Zzz "
},
"SleepingAdvancedString": {
"message": "Režim spánku...\n"
},
"SleepingTipAdvancedString": {
"message": "Hrot: \n"
},
"OffString": {
"message": "Vyp"
},
"DeviceFailedValidationWarning": {
"message": "Your device is most likely a counterfeit!"
}
}, },
"characters": { "characters": {
"SettingRightChar": "P", "SettingRightChar": "P",
@@ -53,289 +76,176 @@
"SettingStartSolderingChar": "P", "SettingStartSolderingChar": "P",
"SettingStartSleepChar": "S", "SettingStartSleepChar": "S",
"SettingStartSleepOffChar": "M", "SettingStartSleepOffChar": "M",
"SettingSensitivityOff": "O",
"SettingSensitivityLow": "M",
"SettingSensitivityMedium": "S",
"SettingSensitivityHigh": "V",
"SettingLockDisableChar": "Z", "SettingLockDisableChar": "Z",
"SettingLockBoostChar": "B", "SettingLockBoostChar": "B",
"SettingLockFullChar": "U" "SettingLockFullChar": "U"
}, },
"menuGroups": { "menuGroups": {
"PowerMenu": { "PowerMenu": {
"text2": [ "displayText": "Napájecí\nnastavení",
"Napájecí", "description": ""
"nastavení"
],
"desc": ""
}, },
"SolderingMenu": { "SolderingMenu": {
"text2": [ "displayText": "Pájecí\nnastavení",
"Pájecí", "description": ""
"nastavení"
],
"desc": ""
}, },
"PowerSavingMenu": { "PowerSavingMenu": {
"text2": [ "displayText": "Režim\nspánku",
"Režim", "description": ""
"spánku"
],
"desc": ""
}, },
"UIMenu": { "UIMenu": {
"text2": [ "displayText": "Uživatelské\nrozhraní",
"Uživatelské", "description": ""
"rozhraní"
],
"desc": ""
}, },
"AdvancedMenu": { "AdvancedMenu": {
"text2": [ "displayText": "Pokročilá\nnastavení",
"Pokročilá", "description": ""
"nastavení"
],
"desc": ""
} }
}, },
"menuOptions": { "menuOptions": {
"DCInCutoff": { "DCInCutoff": {
"text2": [ "displayText": "Zdroj\nnapájení",
"Zdroj", "description": "Při nižším napětí ukončit pájení (DC 10V) (S 3,3V na článek, zakázat omezení napájení)."
"napájení"
],
"desc": "Při nižším napětí ukončit pájení (DC 10V) (S 3,3V na článek, zakázat omezení napájení)."
}, },
"MinVolCell": { "MinVolCell": {
"text2": [ "displayText": "Minimální\nnapětí",
"Minimální", "description": "Minimální dovolené napětí po článku (3S: 3 - 3,7V | 4-6S: 2,4 - 3,7V)"
"napětí"
],
"desc": "Minimální dovolené napětí po článku (3S: 3 - 3,7V | 4-6S: 2,4 - 3,7V)"
}, },
"QCMaxVoltage": { "QCMaxVoltage": {
"text2": [ "displayText": "Napětí\nQC",
"Napětí", "description": "Maximální napětí QC pro jednání páječkou"
"QC"
],
"desc": "Maximální napětí QC pro jednání páječkou"
}, },
"PDNegTimeout": { "PDNegTimeout": {
"text2": [ "displayText": "PD\ntimeout",
"PD", "description": "Maximální prodleva při jednání PD ve 100ms krocích pro kompatibilitu s některými QC nabíječkami"
"timeout" },
], "PDVpdo": {
"desc": "Maximální prodleva při jednání PD ve 100ms krocích pro kompatibilitu s některými QC nabíječkami" "displayText": "PD\nVPDO",
"description": "Enables PPS & EPR modes"
}, },
"BoostTemperature": { "BoostTemperature": {
"text2": [ "displayText": "Teplota\nboostu",
"Teplota", "description": "Teplota hrotu v \"režimu boost\""
"boostu"
],
"desc": "Teplota hrotu v \"režimu boost\""
}, },
"AutoStart": { "AutoStart": {
"text2": [ "displayText": "Chování\npři startu",
"Chování", "description": "V=vypnuto | P=pájecí teplota | S=spánková teplota | M=zahřát hrot po pohybu"
"při startu"
],
"desc": "V=vypnuto | P=pájecí teplota | S=spánková teplota | M=zahřát hrot po pohybu"
}, },
"TempChangeShortStep": { "TempChangeShortStep": {
"text2": [ "displayText": "Krok teploty\nkrátký?",
"Krok teploty", "description": "Velikost přídavku při změně teploty krátkým stiskem tlačítka"
"krátký?"
],
"desc": "Velikost přídavku při změně teploty krátkým stiskem tlačítka"
}, },
"TempChangeLongStep": { "TempChangeLongStep": {
"text2": [ "displayText": "Krok teploty\ndlouhý?",
"Krok teploty", "description": "Velikost přídavku při změně teploty dlouhým stiskem tlačítka"
"dlouhý?"
],
"desc": "Velikost přídavku při změně teploty dlouhým stiskem tlačítka"
}, },
"LockingMode": { "LockingMode": {
"text2": [ "displayText": "Povolit zamč.\ntlačítek",
"Povolit zamč.", "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í)"
"tlačítek"
],
"desc": "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í)"
}, },
"MotionSensitivity": { "MotionSensitivity": {
"text2": [ "displayText": "Citlivost\nna pohyb",
"Citlivost", "description": "0=vyp | 1=nejméně citlivé | ... | 9=nejvíce citlivé"
"na pohyb"
],
"desc": "0=vyp | 1=nejméně citlivé | ... | 9=nejvíce citlivé"
}, },
"SleepTemperature": { "SleepTemperature": {
"text2": [ "displayText": "Teplota\nve spánku",
"Teplota", "description": "Teplota hrotu v režimu spánku."
"ve spánku"
],
"desc": "Teplota hrotu v režimu spánku."
}, },
"SleepTimeout": { "SleepTimeout": {
"text2": [ "displayText": "Čas\ndo spánku",
"Čas", "description": "\"Režim spánku\" naběhne v (s=sekundách | m=minutách)"
"do spánku"
],
"desc": "\"Režim spánku\" naběhne v (s=sekundách | m=minutách)"
}, },
"ShutdownTimeout": { "ShutdownTimeout": {
"text2": [ "displayText": "Čas do\nvypnutí",
"Čas do", "description": "Interval automatického vypnutí (m=minut)"
"vypnutí"
],
"desc": "Interval automatického vypnutí (m=minut)"
}, },
"HallEffSensitivity": { "HallEffSensitivity": {
"text2": [ "displayText": "Citlivost\nHall. čidla",
"Citlivost", "description": "Citlivost Hallova čidla pro detekci spánku (0=vypnuto | 1=nejméně citlivé | ... | 9=nejvíce citlivé)"
"Hall. čidla"
],
"desc": "Citlivost Hallova čidla pro detekci spánku (0=vypnuto | 1=nejméně citlivé | ... | 9=nejvíce citlivé)"
}, },
"TemperatureUnit": { "TemperatureUnit": {
"text2": [ "displayText": "Jednotka\nteploty",
"Jednotka", "description": "C=Celsius | F=Fahrenheit"
"teploty"
],
"desc": "C=Celsius | F=Fahrenheit"
}, },
"DisplayRotation": { "DisplayRotation": {
"text2": [ "displayText": "Orientace\nobrazovky",
"Orientace", "description": "P=pravák | L=levák | A=automaticky"
"obrazovky"
],
"desc": "P=pravák | L=levák | A=automaticky"
}, },
"CooldownBlink": { "CooldownBlink": {
"text2": [ "displayText": "Blikáni při\nchladnutí",
"Blikáni při", "description": "Blikat teplotou při chladnutí dokud je hrot horký"
"chladnutí"
],
"desc": "Blikat teplotou při chladnutí dokud je hrot horký"
}, },
"ScrollingSpeed": { "ScrollingSpeed": {
"text2": [ "displayText": "Rychlost\nposouvání",
"Rychlost", "description": "Rychlost posouvání popisků podobných tomuto (P=pomalu | R=rychle)"
"posouvání"
],
"desc": "Rychlost posouvání popisků podobných tomuto (P=pomalu | R=rychle)"
}, },
"ReverseButtonTempChange": { "ReverseButtonTempChange": {
"text2": [ "displayText": "Prohodit\ntl. +-?",
"Prohodit", "description": "Prohodit tlačítka pro změnu teploty"
"tl. +-?"
],
"desc": "Prohodit tlačítka pro změnu teploty"
}, },
"AnimSpeed": { "AnimSpeed": {
"text2": [ "displayText": "Anim.\nrychlost",
"Anim.", "description": "Tempo animace ikon v menu (O=vypnuto | P=pomalu | S=středně | R=rychle)"
"rychlost"
],
"desc": "Tempo animace ikon v menu (O=vypnuto | P=pomalu | S=středně | R=rychle)"
}, },
"AnimLoop": { "AnimLoop": {
"text2": [ "displayText": "Anim.\nsmyčka",
"Anim.", "description": "Animovat ikony hlavního menu ve smyčce"
"smyčka"
],
"desc": "Animovat ikony hlavního menu ve smyčce"
}, },
"Brightness": { "Brightness": {
"text2": [ "displayText": "Jas\nobrazovky",
"Jas", "description": "Upravit jas OLED"
"obrazovky"
],
"desc": "Upravit jas OLED"
}, },
"ColourInversion": { "ColourInversion": {
"text2": [ "displayText": "Invertovat\nobrazovku",
"Invertovat", "description": "Invertovat barvy na OLED"
"obrazovku"
],
"desc": "Invertovat barvy na OLED"
}, },
"LOGOTime": { "LOGOTime": {
"text2": [ "displayText": "Trvání\nboot loga",
"Trvání", "description": "Nastavení doby trvání boot loga (s=sekundy)"
"boot loga"
],
"desc": "Nastavení doby trvání boot loga (s=sekundy)"
}, },
"AdvancedIdle": { "AdvancedIdle": {
"text2": [ "displayText": "Podrobná obr.\nnečinnosti",
"Podrobná obr.", "description": "Zobrazit detailní informace malým fontem na obrazovce nečinnosti"
"nečinnosti"
],
"desc": "Zobrazit detailní informace malým fontem na obrazovce nečinnosti"
}, },
"AdvancedSoldering": { "AdvancedSoldering": {
"text2": [ "displayText": "Podrobná obr.\npájení",
"Podrobná obr.", "description": "Zobrazit detailní informace malým fontem na obrazovce pájení"
"pájení" },
], "BluetoothLE": {
"desc": "Zobrazit detailní informace malým fontem na obrazovce pájení" "displayText": "Bluetooth\n",
"description": "Enables BLE"
}, },
"PowerLimit": { "PowerLimit": {
"text2": [ "displayText": "Omezení\nVýkonu",
"Omezení", "description": "Maximální příkon páječky (W=watt)"
"Výkonu"
],
"desc": "Maximální příkon páječky (W=watt)"
}, },
"CalibrateCJC": { "CalibrateCJC": {
"text2": [ "displayText": "Calibrate CJC\nat next boot",
"Calibrate CJC", "description": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
"at next boot"
],
"desc": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
}, },
"VoltageCalibration": { "VoltageCalibration": {
"text2": [ "displayText": "Kalibrovat\nvstupní napětí?",
"Kalibrovat", "description": "Začít kalibraci vstupního napětí (dlouhý stisk pro ukončení)"
"vstupní napětí?"
],
"desc": "Začít kalibraci vstupního napětí (dlouhý stisk pro ukončení)"
}, },
"PowerPulsePower": { "PowerPulsePower": {
"text2": [ "displayText": "Napájecí\npulz",
"Napájecí", "description": "Intenzita výkonu pulzu pro udržení páječky vzhůru (watt)"
"pulz"
],
"desc": "Intenzita výkonu pulzu pro udržení páječky vzhůru (watt)"
}, },
"PowerPulseWait": { "PowerPulseWait": {
"text2": [ "displayText": "Prodleva\nnapáj. pulzu",
"Prodleva", "description": "Prodleva než je spuštěn pulz pro udržení páječky vzhůru pulzu pro udržení páječky vzhůru (x 2,5s)"
"napáj. pulzu"
],
"desc": "Prodleva než je spuštěn pulz pro udržení páječky vzhůru pulzu pro udržení páječky vzhůru (x 2,5s)"
}, },
"PowerPulseDuration": { "PowerPulseDuration": {
"text2": [ "displayText": "Délka\nnapáj. pulzu",
"Délka", "description": "Délka pulzu pro udržení páječky vzhůru (x 250ms)"
"napáj. pulzu"
],
"desc": "Délka pulzu pro udržení páječky vzhůru (x 250ms)"
}, },
"SettingsReset": { "SettingsReset": {
"text2": [ "displayText": "Obnovit tovární\nnastavení?",
"Obnovit tovární", "description": "Obnovit všechna nastavení na výchozí"
"nastavení?"
],
"desc": "Obnovit všechna nastavení na výchozí"
}, },
"LanguageSwitch": { "LanguageSwitch": {
"text2": [ "displayText": "Jazyk:\n CS Český",
"Jazyk:", "description": ""
" CS Český"
],
"desc": ""
} }
} }
} }

View File

@@ -2,44 +2,67 @@
"languageCode": "DA", "languageCode": "DA",
"languageLocalName": "Dansk", "languageLocalName": "Dansk",
"tempUnitFahrenheit": false, "tempUnitFahrenheit": false,
"messages": {
"SettingsCalibrationWarning": "Before rebooting, make sure tip & handle are at room temperature!",
"CJCCalibrating": "calibrating",
"SettingsResetWarning": "Er du sikker du vil resette indstillingerne til standard?",
"UVLOWarningString": "Lav Volt",
"UndervoltageString": "Undervolt",
"InputVoltageString": "Input V: ",
"SleepingSimpleString": "Zzzz",
"SleepingAdvancedString": "Dvale...",
"SleepingTipAdvancedString": "Tip:",
"OffString": "Off",
"DeviceFailedValidationWarning": "Din enhed er højst sandsyneligt en Kopivare!"
},
"messagesWarn": { "messagesWarn": {
"CJCCalibrationDone": [ "CJCCalibrationDone": {
"Calibration", "message": "Calibration\ndone!"
"done!" },
], "ResetOKMessage": {
"ResetOKMessage": "Reset OK", "message": "Reset OK"
"SettingsResetMessage": [ },
"Visse indstillinger", "SettingsResetMessage": {
"Er blevet ændret!" "message": "Visse indstillinger\nEr blevet ændret!"
], },
"NoAccelerometerMessage": [ "NoAccelerometerMessage": {
"ingen accelerometer", "message": "ingen accelerometer\nfundet!"
"fundet!" },
], "NoPowerDeliveryMessage": {
"NoPowerDeliveryMessage": [ "message": "ingen USB-PD IC\nFundet!"
"ingen USB-PD IC", },
"Fundet!" "LockingKeysString": {
], "message": "LÅST"
"LockingKeysString": "LÅST", },
"UnlockingKeysString": "ULÅST", "UnlockingKeysString": {
"WarningKeysLockedString": "!LÅST!", "message": "ULÅST"
"WarningThermalRunaway": [ },
"Thermal", "WarningKeysLockedString": {
"Runaway" "message": "!LÅST!"
] },
"WarningThermalRunaway": {
"message": "Thermal\nRunaway"
},
"SettingsCalibrationWarning": {
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
"CJCCalibrating": {
"message": "calibrating\n"
},
"SettingsResetWarning": {
"message": "Er du sikker du vil resette indstillingerne til standard?"
},
"UVLOWarningString": {
"message": "Lav Volt"
},
"UndervoltageString": {
"message": "Undervolt\n"
},
"InputVoltageString": {
"message": "Input V: \n"
},
"SleepingSimpleString": {
"message": "Zzzz"
},
"SleepingAdvancedString": {
"message": "Dvale...\n"
},
"SleepingTipAdvancedString": {
"message": "Tip: \n"
},
"OffString": {
"message": "Off"
},
"DeviceFailedValidationWarning": {
"message": "Din enhed er højst sandsyneligt en Kopivare!"
}
}, },
"characters": { "characters": {
"SettingRightChar": "H", "SettingRightChar": "H",
@@ -53,289 +76,176 @@
"SettingStartSolderingChar": "L", "SettingStartSolderingChar": "L",
"SettingStartSleepChar": "D", "SettingStartSleepChar": "D",
"SettingStartSleepOffChar": "R", "SettingStartSleepOffChar": "R",
"SettingSensitivityOff": "O",
"SettingSensitivityLow": "L",
"SettingSensitivityMedium": "M",
"SettingSensitivityHigh": "H",
"SettingLockDisableChar": "D", "SettingLockDisableChar": "D",
"SettingLockBoostChar": "B", "SettingLockBoostChar": "B",
"SettingLockFullChar": "F" "SettingLockFullChar": "F"
}, },
"menuGroups": { "menuGroups": {
"PowerMenu": { "PowerMenu": {
"text2": [ "displayText": "Strøm\nIndstillinger",
"Strøm", "description": ""
"Indstillinger"
],
"desc": ""
}, },
"SolderingMenu": { "SolderingMenu": {
"text2": [ "displayText": "Lodde\nIndstillinger",
"Lodde", "description": ""
"Indstillinger"
],
"desc": ""
}, },
"PowerSavingMenu": { "PowerSavingMenu": {
"text2": [ "displayText": "Dvale\nmode",
"Dvale", "description": ""
"mode"
],
"desc": ""
}, },
"UIMenu": { "UIMenu": {
"text2": [ "displayText": "Bruger\nGrændseflade",
"Bruger", "description": ""
"Grændseflade"
],
"desc": ""
}, },
"AdvancedMenu": { "AdvancedMenu": {
"text2": [ "displayText": "Advancerede\nIndstillinger",
"Advancerede", "description": ""
"Indstillinger"
],
"desc": ""
} }
}, },
"menuOptions": { "menuOptions": {
"DCInCutoff": { "DCInCutoff": {
"text2": [ "displayText": "Strøm\nKilde",
"Strøm", "description": "Strømforsyning. Indstil Cutoff Spændingen. (DC 10V) (S 3,3V per celle)"
"Kilde"
],
"desc": "Strømforsyning. Indstil Cutoff Spændingen. (DC 10V) (S 3,3V per celle)"
}, },
"MinVolCell": { "MinVolCell": {
"text2": [ "displayText": "Minimum\nSpænding",
"Minimum", "description": "Minimum tilladt spænding pr. celle (3S: 3 - 3,7V | 4-6S: 2,4 - 3,7V)"
"Spænding"
],
"desc": "Minimum tilladt spænding pr. celle (3S: 3 - 3,7V | 4-6S: 2,4 - 3,7V)"
}, },
"QCMaxVoltage": { "QCMaxVoltage": {
"text2": [ "displayText": "QC\nSpænding",
"QC", "description": "Max QC spænding Loddekolben skal forhandle sig til"
"Spænding"
],
"desc": "Max QC spænding Loddekolben skal forhandle sig til"
}, },
"PDNegTimeout": { "PDNegTimeout": {
"text2": [ "displayText": "PD\ntimeout",
"PD", "description": "PD-forhandlingstimeout i trin på 100 ms for kompatibilitet med nogle QC-opladere"
"timeout" },
], "PDVpdo": {
"desc": "PD-forhandlingstimeout i trin på 100 ms for kompatibilitet med nogle QC-opladere" "displayText": "PD\nVPDO",
"description": "Enables PPS & EPR modes"
}, },
"BoostTemperature": { "BoostTemperature": {
"text2": [ "displayText": "Boost\ntemp",
"Boost", "description": "Temperatur i \"boost mode\""
"temp"
],
"desc": "Temperatur i \"boost mode\""
}, },
"AutoStart": { "AutoStart": {
"text2": [ "displayText": "Start-up\nOpførsel",
"Start-up", "description": "Start automatisk med lodning når strøm sættes til. (S=Slukket | L=Lodning | D=Dvale tilstand | R=Dvale tilstand rumtemperatur)"
"Opførsel"
],
"desc": "Start automatisk med lodning når strøm sættes til. (S=Slukket | L=Lodning | D=Dvale tilstand | R=Dvale tilstand rumtemperatur)"
}, },
"TempChangeShortStep": { "TempChangeShortStep": {
"text2": [ "displayText": "Temp ændring\nkort",
"Temp ændring", "description": "Temperatur-ændring-stigning ved kort tryk på knappen"
"kort"
],
"desc": "Temperatur-ændring-stigning ved kort tryk på knappen"
}, },
"TempChangeLongStep": { "TempChangeLongStep": {
"text2": [ "displayText": "Temp ændring\nlang",
"Temp ændring", "description": "Temperatur-ændring-stigning ved lang tryk på knappen"
"lang"
],
"desc": "Temperatur-ændring-stigning ved lang tryk på knappen"
}, },
"LockingMode": { "LockingMode": {
"text2": [ "displayText": "Tillad låsning\naf knapperne",
"Tillad låsning", "description": "Hold begge knapper nede under lodning for at låse dem (D=deaktiver | B=kun boost-tilstand | F=fuld låsning)"
"af knapperne"
],
"desc": "Hold begge knapper nede under lodning for at låse dem (D=deaktiver | B=kun boost-tilstand | F=fuld låsning)"
}, },
"MotionSensitivity": { "MotionSensitivity": {
"text2": [ "displayText": "Bevægelses\nfølsomhed",
"Bevægelses", "description": "Bevægelsesfølsomhed (0=Slukket | 1=Mindst følsom | ... | 9=Mest følsom)"
"følsomhed"
],
"desc": "Bevægelsesfølsomhed (0=Slukket | 1=Mindst følsom | ... | 9=Mest følsom)"
}, },
"SleepTemperature": { "SleepTemperature": {
"text2": [ "displayText": "Dvale\ntemp",
"Dvale", "description": "Dvale Temperatur (C)"
"temp"
],
"desc": "Dvale Temperatur (C)"
}, },
"SleepTimeout": { "SleepTimeout": {
"text2": [ "displayText": "Dvale\ntimeout",
"Dvale", "description": "Dvale Timeout (Minutter | Sekunder)"
"timeout"
],
"desc": "Dvale Timeout (Minutter | Sekunder)"
}, },
"ShutdownTimeout": { "ShutdownTimeout": {
"text2": [ "displayText": "Sluknings\ntimeout",
"Sluknings", "description": "sluknings Timeout (Minutter)"
"timeout"
],
"desc": "sluknings Timeout (Minutter)"
}, },
"HallEffSensitivity": { "HallEffSensitivity": {
"text2": [ "displayText": "Hall sensor\nfølsomhed",
"Hall sensor", "description": "følsomhed overfor magneten (0=Slukket | 1=Mindst følsom | ... | 9=Mest følsom)"
"følsomhed"
],
"desc": "følsomhed overfor magneten (0=Slukket | 1=Mindst følsom | ... | 9=Mest følsom)"
}, },
"TemperatureUnit": { "TemperatureUnit": {
"text2": [ "displayText": "Temperatur\nEnhed",
"Temperatur", "description": "Temperatur Enhed (C=Celsius | F=Fahrenheit)"
"Enhed"
],
"desc": "Temperatur Enhed (C=Celsius | F=Fahrenheit)"
}, },
"DisplayRotation": { "DisplayRotation": {
"text2": [ "displayText": "Skærm\nOrientering",
"Skærm", "description": "Skærm Orientering (H=Højre Håndet | V=Venstre Håndet | A=Automatisk)"
"Orientering"
],
"desc": "Skærm Orientering (H=Højre Håndet | V=Venstre Håndet | A=Automatisk)"
}, },
"CooldownBlink": { "CooldownBlink": {
"text2": [ "displayText": "Køl ned\nBlinkning",
"Køl ned", "description": "Blink temperaturen på skærmen, mens spidsen stadig er varm."
"Blinkning"
],
"desc": "Blink temperaturen på skærmen, mens spidsen stadig er varm."
}, },
"ScrollingSpeed": { "ScrollingSpeed": {
"text2": [ "displayText": "Scrolling\nHastighed",
"Scrolling", "description": "Hastigheden infotekst ruller forbi med (S=Langsom | F=Hurtigt)"
"Hastighed"
],
"desc": "Hastigheden infotekst ruller forbi med (S=Langsom | F=Hurtigt)"
}, },
"ReverseButtonTempChange": { "ReverseButtonTempChange": {
"text2": [ "displayText": "Skift\n+ - tasterne",
"Skift", "description": "Skift tildeling af knapper til temperaturjustering"
"+ - tasterne"
],
"desc": "Skift tildeling af knapper til temperaturjustering"
}, },
"AnimSpeed": { "AnimSpeed": {
"text2": [ "displayText": "Anim.\nHastighed",
"Anim.", "description": "Hastigheden for ikonanimationer i menuen (O=fra | S=langsomt | M=medium | F=hurtigt)"
"Hastighed"
],
"desc": "Hastigheden for ikonanimationer i menuen (O=fra | S=langsomt | M=medium | F=hurtigt)"
}, },
"AnimLoop": { "AnimLoop": {
"text2": [ "displayText": "Anim.\nsløfe",
"Anim.", "description": "ikonanimation sløfe i hovedmenuen"
"sløfe"
],
"desc": "ikonanimation sløfe i hovedmenuen"
}, },
"Brightness": { "Brightness": {
"text2": [ "displayText": "Skærm\nlysstyrke",
"Skærm", "description": "Juster lysstyrken på OLED-skærmen"
"lysstyrke"
],
"desc": "Juster lysstyrken på OLED-skærmen"
}, },
"ColourInversion": { "ColourInversion": {
"text2": [ "displayText": "spejlvende\nskærm",
"spejlvende", "description": "spejlvende farverne på OLED-skærmen"
"skærm"
],
"desc": "spejlvende farverne på OLED-skærmen"
}, },
"LOGOTime": { "LOGOTime": {
"text2": [ "displayText": "opstartslogo\nvarighed",
"opstartslogo", "description": "Indstiller varigheden for opstartslogoet (s=sekunder)"
"varighed"
],
"desc": "Indstiller varigheden for opstartslogoet (s=sekunder)"
}, },
"AdvancedIdle": { "AdvancedIdle": {
"text2": [ "displayText": "Detaljeret\nStandby skærm",
"Detaljeret", "description": "Vis detialieret information med en mindre skriftstørrelse på standby skærmen."
"Standby skærm"
],
"desc": "Vis detialieret information med en mindre skriftstørrelse på standby skærmen."
}, },
"AdvancedSoldering": { "AdvancedSoldering": {
"text2": [ "displayText": "Detaljeret\nloddeskærm",
"Detaljeret", "description": "Vis detaljeret information mens der loddes"
"loddeskærm" },
], "BluetoothLE": {
"desc": "Vis detaljeret information mens der loddes" "displayText": "Bluetooth\n",
"description": "Enables BLE"
}, },
"PowerLimit": { "PowerLimit": {
"text2": [ "displayText": "Strøm\nbegrænsning",
"Strøm", "description": "Maksimal effekt Loddekolben kan bruge (W=watt)"
"begrænsning"
],
"desc": "Maksimal effekt Loddekolben kan bruge (W=watt)"
}, },
"CalibrateCJC": { "CalibrateCJC": {
"text2": [ "displayText": "kalibrere CJK\nunder næste opstart",
"kalibrere CJK", "description": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
"under næste opstart"
],
"desc": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
}, },
"VoltageCalibration": { "VoltageCalibration": {
"text2": [ "displayText": "Kalibrere\ninput spændingen?",
"Kalibrere", "description": "VIN kalibrering. Knapperne justere, Lang tryk for at gå ud"
"input spændingen?"
],
"desc": "VIN kalibrering. Knapperne justere, Lang tryk for at gå ud"
}, },
"PowerPulsePower": { "PowerPulsePower": {
"text2": [ "displayText": "Strøm\npuls",
"Strøm", "description": "Intensiteten af strøm for hold-vågen-puls (watt)"
"puls"
],
"desc": "Intensiteten af strøm for hold-vågen-puls (watt)"
}, },
"PowerPulseWait": { "PowerPulseWait": {
"text2": [ "displayText": "Strøm puls\nForsinkelse",
"Strøm puls", "description": "Forsinkelse før hold-vågen-puls udløses (x 2,5s)"
"Forsinkelse"
],
"desc": "Forsinkelse før hold-vågen-puls udløses (x 2,5s)"
}, },
"PowerPulseDuration": { "PowerPulseDuration": {
"text2": [ "displayText": "Strøm puls\nvarighed",
"Strøm puls", "description": "Hold-vågen-pulsvarighed (x 250ms)"
"varighed"
],
"desc": "Hold-vågen-pulsvarighed (x 250ms)"
}, },
"SettingsReset": { "SettingsReset": {
"text2": [ "displayText": "Gendan fabriks\nIndstillinger",
"Gendan fabriks", "description": "Gendan alle indstillinger"
"Indstillinger"
],
"desc": "Gendan alle indstillinger"
}, },
"LanguageSwitch": { "LanguageSwitch": {
"text2": [ "displayText": "Sprog:\n DA Dansk",
"Sprog:", "description": ""
" DA Dansk"
],
"desc": ""
} }
} }
} }

View File

@@ -2,44 +2,67 @@
"languageCode": "DE", "languageCode": "DE",
"languageLocalName": "Deutsch", "languageLocalName": "Deutsch",
"tempUnitFahrenheit": false, "tempUnitFahrenheit": false,
"messages": {
"SettingsCalibrationWarning": "Vor dem Neustart bitte sicherstellen, dass Lötspitze & Gerät Raumtemperatur haben!",
"CJCCalibrating": "kalibriere",
"SettingsResetWarning": "Sicher, dass alle Werte zurückgesetzt werden sollen?",
"UVLOWarningString": "V niedr.",
"UndervoltageString": "Unterspannung",
"InputVoltageString": "V Eingang: ",
"SleepingSimpleString": "Zzzz",
"SleepingAdvancedString": "Ruhemodus...",
"SleepingTipAdvancedString": "Temp:",
"OffString": "Aus",
"DeviceFailedValidationWarning": "Höchstwahrscheinlich ist das Gerät eine Fälschung!"
},
"messagesWarn": { "messagesWarn": {
"CJCCalibrationDone": [ "CJCCalibrationDone": {
"Erfolgreich", "message": "Erfolgreich\nkalibriert!"
"kalibriert!" },
], "ResetOKMessage": {
"ResetOKMessage": "Reset OK", "message": "Reset OK"
"SettingsResetMessage": [ },
"Einstellungen", "SettingsResetMessage": {
"zurückgesetzt!" "message": "Einstellungen\nzurückgesetzt!"
], },
"NoAccelerometerMessage": [ "NoAccelerometerMessage": {
"Bewegungssensor", "message": "Bewegungssensor\nnicht erkannt!"
"nicht erkannt!" },
], "NoPowerDeliveryMessage": {
"NoPowerDeliveryMessage": [ "message": "USB-PD IC\nnicht erkannt!"
"USB-PD IC", },
"nicht erkannt!" "LockingKeysString": {
], "message": "GESPERRT"
"LockingKeysString": "GESPERRT", },
"UnlockingKeysString": "ENTSPERRT", "UnlockingKeysString": {
"WarningKeysLockedString": "!GESPERRT!", "message": "ENTSPERRT"
"WarningThermalRunaway": [ },
"Thermal", "WarningKeysLockedString": {
"Runaway" "message": "!GESPERRT!"
] },
"WarningThermalRunaway": {
"message": "Thermal\nRunaway"
},
"SettingsCalibrationWarning": {
"message": "Vor dem Neustart bitte sicherstellen, dass Lötspitze & Gerät Raumtemperatur haben!"
},
"CJCCalibrating": {
"message": "kalibriere\n"
},
"SettingsResetWarning": {
"message": "Sicher, dass alle Werte zurückgesetzt werden sollen?"
},
"UVLOWarningString": {
"message": "V niedr."
},
"UndervoltageString": {
"message": "Unterspannung\n"
},
"InputVoltageString": {
"message": "V Eingang: \n"
},
"SleepingSimpleString": {
"message": "Zzzz"
},
"SleepingAdvancedString": {
"message": "Ruhemodus...\n"
},
"SleepingTipAdvancedString": {
"message": "Temp: \n"
},
"OffString": {
"message": "Aus"
},
"DeviceFailedValidationWarning": {
"message": "Höchstwahrscheinlich ist das Gerät eine Fälschung!"
}
}, },
"characters": { "characters": {
"SettingRightChar": "R", "SettingRightChar": "R",
@@ -53,289 +76,176 @@
"SettingStartSolderingChar": "L", "SettingStartSolderingChar": "L",
"SettingStartSleepChar": "R", "SettingStartSleepChar": "R",
"SettingStartSleepOffChar": "K", "SettingStartSleepOffChar": "K",
"SettingSensitivityOff": "A",
"SettingSensitivityLow": "N",
"SettingSensitivityMedium": "M",
"SettingSensitivityHigh": "H",
"SettingLockDisableChar": "A", "SettingLockDisableChar": "A",
"SettingLockBoostChar": "B", "SettingLockBoostChar": "B",
"SettingLockFullChar": "V" "SettingLockFullChar": "V"
}, },
"menuGroups": { "menuGroups": {
"PowerMenu": { "PowerMenu": {
"text2": [ "displayText": "Energie-\neinstellungen",
"Energie-", "description": ""
"einstellungen"
],
"desc": ""
}, },
"SolderingMenu": { "SolderingMenu": {
"text2": [ "displayText": "Löt-\neinstellungen",
"Löt-", "description": ""
"einstellungen"
],
"desc": ""
}, },
"PowerSavingMenu": { "PowerSavingMenu": {
"text2": [ "displayText": "Ruhe-\nmodus",
"Ruhe-", "description": ""
"modus"
],
"desc": ""
}, },
"UIMenu": { "UIMenu": {
"text2": [ "displayText": "Anzeige-\neinstellungen",
"Anzeige-", "description": ""
"einstellungen"
],
"desc": ""
}, },
"AdvancedMenu": { "AdvancedMenu": {
"text2": [ "displayText": "Erweiterte\nEinstellungen",
"Erweiterte", "description": ""
"Einstellungen"
],
"desc": ""
} }
}, },
"menuOptions": { "menuOptions": {
"DCInCutoff": { "DCInCutoff": {
"text2": [ "displayText": "Spannungs-\nquelle",
"Spannungs-", "description": "Spannungsquelle (Abschaltspannung) (DC=10V | nS=n*3.3V für n LiIon-Zellen)"
"quelle"
],
"desc": "Spannungsquelle (Abschaltspannung) (DC=10V | nS=n*3.3V für n LiIon-Zellen)"
}, },
"MinVolCell": { "MinVolCell": {
"text2": [ "displayText": "Minimale\nSpannung",
"Minimale", "description": "Minimal zulässige Spannung pro Zelle (3S: 3 - 3,7V | 4-6S: 2,4 - 3,7V)"
"Spannung"
],
"desc": "Minimal zulässige Spannung pro Zelle (3S: 3 - 3,7V | 4-6S: 2,4 - 3,7V)"
}, },
"QCMaxVoltage": { "QCMaxVoltage": {
"text2": [ "displayText": "Spannungs-\nmaximum",
"Spannungs-", "description": "Maximal zulässige Spannung der verwendeten Spannungsversorgung (V=Volt)"
"maximum"
],
"desc": "Maximal zulässige Spannung der verwendeten Spannungsversorgung (V=Volt)"
}, },
"PDNegTimeout": { "PDNegTimeout": {
"text2": [ "displayText": "PD\ntimeout",
"PD", "description": "PD Abfragedauer in 100ms Schritten (Kompatibilität mit best. QC-Ladegeräten)"
"timeout" },
], "PDVpdo": {
"desc": "PD Abfragedauer in 100ms Schritten (Kompatibilität mit best. QC-Ladegeräten)" "displayText": "PD\nVPDO",
"description": "Aktiviert PPS & EPR"
}, },
"BoostTemperature": { "BoostTemperature": {
"text2": [ "displayText": "Boost-\ntemperatur",
"Boost-", "description": "Temperatur der Lötspitze im Boostmodus"
"temperatur"
],
"desc": "Temperatur der Lötspitze im Boostmodus"
}, },
"AutoStart": { "AutoStart": {
"text2": [ "displayText": "Start im\nLötmodus",
"Start im", "description": "Heizverhalten beim Einschalten der Spannungsversorgung (A=aus | L=Lötmodus | R=Ruhemodus | K=Ruhemodus mit kalter Spitze)"
"Lötmodus"
],
"desc": "Heizverhalten beim Einschalten der Spannungsversorgung (A=aus | L=Lötmodus | R=Ruhemodus | K=Ruhemodus mit kalter Spitze)"
}, },
"TempChangeShortStep": { "TempChangeShortStep": {
"text2": [ "displayText": "Temp-Schritt\nDruck kurz",
"Temp-Schritt", "description": "Schrittweite für Temperaturwechsel bei kurzem Tastendruck"
"Druck kurz"
],
"desc": "Schrittweite für Temperaturwechsel bei kurzem Tastendruck"
}, },
"TempChangeLongStep": { "TempChangeLongStep": {
"text2": [ "displayText": "Temp-Schritt\nDruck lang",
"Temp-Schritt", "description": "Schrittweite für Temperaturwechsel bei langem Tastendruck"
"Druck lang"
],
"desc": "Schrittweite für Temperaturwechsel bei langem Tastendruck"
}, },
"LockingMode": { "LockingMode": {
"text2": [ "displayText": "Tasten-\nsperre",
"Tasten-", "description": "Langes drücken beider Tasten im Lötmodus sperrt diese (A=aus | B=nur Boost | V=vollständig)"
"sperre"
],
"desc": "Langes drücken beider Tasten im Lötmodus sperrt diese (A=aus | B=nur Boost | V=vollständig)"
}, },
"MotionSensitivity": { "MotionSensitivity": {
"text2": [ "displayText": "Bewegungs-\nempfindlichk.",
"Bewegungs-", "description": "0=aus | 1=minimal | ... | 9=maximal"
"empfindlichk."
],
"desc": "0=aus | 1=minimal | ... | 9=maximal"
}, },
"SleepTemperature": { "SleepTemperature": {
"text2": [ "displayText": "Ruhe-\ntemperatur",
"Ruhe-", "description": "Ruhetemperatur der Spitze"
"temperatur"
],
"desc": "Ruhetemperatur der Spitze"
}, },
"SleepTimeout": { "SleepTimeout": {
"text2": [ "displayText": "Ruhever-\nzögerung",
"Ruhever-", "description": "Dauer vor Übergang in den Ruhemodus (s=Sekunden | m=Minuten)"
"zögerung"
],
"desc": "Dauer vor Übergang in den Ruhemodus (s=Sekunden | m=Minuten)"
}, },
"ShutdownTimeout": { "ShutdownTimeout": {
"text2": [ "displayText": "Abschalt-\nverzög.",
"Abschalt-", "description": "Dauer vor automatischer Abschaltung (m=Minuten)"
"verzög."
],
"desc": "Dauer vor automatischer Abschaltung (m=Minuten)"
}, },
"HallEffSensitivity": { "HallEffSensitivity": {
"text2": [ "displayText": "Empfindlichkeit\nder Hall-Sonde",
"Empfindlichkeit", "description": "Empfindlichkeit der Hall-Sonde um den Ruhemodus auszulösen (0=aus | 1=minimal | ... | 9=maximal)"
"der Hall-Sonde"
],
"desc": "Empfindlichkeit der Hall-Sonde um den Ruhemodus auszulösen (0=aus | 1=minimal | ... | 9=maximal)"
}, },
"TemperatureUnit": { "TemperatureUnit": {
"text2": [ "displayText": "Temperatur-\neinheit",
"Temperatur-", "description": "C=°Celsius | F=°Fahrenheit"
"einheit"
],
"desc": "C=°Celsius | F=°Fahrenheit"
}, },
"DisplayRotation": { "DisplayRotation": {
"text2": [ "displayText": "Anzeige-\nausrichtung",
"Anzeige-", "description": "R=rechtshändig | L=linkshändig | A=automatisch"
"ausrichtung"
],
"desc": "R=rechtshändig | L=linkshändig | A=automatisch"
}, },
"CooldownBlink": { "CooldownBlink": {
"text2": [ "displayText": "Abkühl-\nblinken",
"Abkühl-", "description": "Temperaturanzeige blinkt beim Abkühlen, solange Spitze heiß ist"
"blinken"
],
"desc": "Temperaturanzeige blinkt beim Abkühlen, solange Spitze heiß ist"
}, },
"ScrollingSpeed": { "ScrollingSpeed": {
"text2": [ "displayText": "Scroll-\ngeschw.",
"Scroll-", "description": "Scrollgeschwindigkeit der Erläuterungen (L=langsam | S=schnell)"
"geschw."
],
"desc": "Scrollgeschwindigkeit der Erläuterungen (L=langsam | S=schnell)"
}, },
"ReverseButtonTempChange": { "ReverseButtonTempChange": {
"text2": [ "displayText": "+- Tasten\numkehren",
"+- Tasten", "description": "Tastenbelegung zur Temperaturänderung umkehren"
"umkehren?"
],
"desc": "Tastenbelegung zur Temperaturänderung umkehren"
}, },
"AnimSpeed": { "AnimSpeed": {
"text2": [ "displayText": "Anim.\nGeschw.",
"Anim.", "description": "Geschwindigkeit der Icon-Animationen im Menü (A=aus | L=langsam | M=mittel | S=schnell)"
"Geschw."
],
"desc": "Geschwindigkeit der Icon-Animationen im Menü (A=aus | L=langsam | M=mittel | S=schnell)"
}, },
"AnimLoop": { "AnimLoop": {
"text2": [ "displayText": "Anim.\nSchleife",
"Anim.", "description": "Icon-Animationen im Hauptmenü wiederholen"
"Schleife"
],
"desc": "Icon-Animationen im Hauptmenü wiederholen"
}, },
"Brightness": { "Brightness": {
"text2": [ "displayText": "Bildschirm-\nhelligkeit",
"Bildschirm-", "description": "Verändert die Helligkeit des OLED-Displays"
"kontrast"
],
"desc": "Verändert die Helligkeit des OLED-Displays"
}, },
"ColourInversion": { "ColourInversion": {
"text2": [ "displayText": "Farben\numkehren",
"Farben", "description": "Invertiert die Farben des OLED-Displays"
"umkehren"
],
"desc": "Invertiert die Farben des OLED-Displays"
}, },
"LOGOTime": { "LOGOTime": {
"text2": [ "displayText": "Startlogo-\ndauer",
"Startlogo-", "description": "Legt die Dauer der Anzeige des Startlogos fest (s=Sekunden)"
"dauer"
],
"desc": "Legt die Dauer der Anzeige des Startlogos fest (s=Sekunden)"
}, },
"AdvancedIdle": { "AdvancedIdle": {
"text2": [ "displayText": "Detaillierte\nRuheansicht",
"Detaillierte", "description": "Detaillierte Anzeige im Ruhemodus"
"Ruheansicht"
],
"desc": "Detaillierte Anzeige im Ruhemodus"
}, },
"AdvancedSoldering": { "AdvancedSoldering": {
"text2": [ "displayText": "Detaillierte\nLötansicht",
"Detaillierte", "description": "Detaillierte Anzeige im Lötmodus"
"Lötansicht" },
], "BluetoothLE": {
"desc": "Detaillierte Anzeige im Lötmodus" "displayText": "Bluetooth\n",
"description": "Aktiviert Bluetooth LE"
}, },
"PowerLimit": { "PowerLimit": {
"text2": [ "displayText": "Leistungs-\nmaximum",
"Leistungs-", "description": "Maximal zulässige Leistungsaufnahme des Lötkolbens (W=Watt)"
"maximum"
],
"desc": "Maximal zulässige Leistungsaufnahme des Lötkolbens (W=Watt)"
}, },
"CalibrateCJC": { "CalibrateCJC": {
"text2": [ "displayText": "Temperatur\nkalibrieren",
"Temperatur", "description": "Beim nächsten Start wird die Kaltstellenkompensation kalibriert (nicht nötig wenn Delta T < 5°C)"
"kalibrieren?"
],
"desc": "Beim nächsten Start wird die Kaltstellenkompensation kalibriert (nicht nötig wenn Delta T < 5°C)"
}, },
"VoltageCalibration": { "VoltageCalibration": {
"text2": [ "displayText": "Eingangsspannung\nkalibrieren",
"Eingangsspannung", "description": "Kalibrierung der Eingangsspannung (Langer Tastendruck zum Verlassen)"
"kalibrieren?"
],
"desc": "Kalibrierung der Eingangsspannung (Langer Tastendruck zum Verlassen)"
}, },
"PowerPulsePower": { "PowerPulsePower": {
"text2": [ "displayText": "Leistungs-\nimpuls",
"Leistungs-", "description": "Powerbank mit einem Impuls wach halten (Watt)"
"impuls"
],
"desc": "Powerbank mit einem Impuls wach halten (Watt)"
}, },
"PowerPulseWait": { "PowerPulseWait": {
"text2": [ "displayText": "Impuls-\nverzögerung",
"Impuls-", "description": "Dauer vor Abgabe von Wachhalteimpulsen (x 2,5s)"
"verzögerung"
],
"desc": "Dauer vor Abgabe von Wachhalteimpulsen (x 2,5s)"
}, },
"PowerPulseDuration": { "PowerPulseDuration": {
"text2": [ "displayText": "Impuls-\ndauer",
"Impuls-", "description": "Dauer des Wachhalteimpulses (x 250ms)"
"dauer"
],
"desc": "Dauer des Wachhalteimpulses (x 250ms)"
}, },
"SettingsReset": { "SettingsReset": {
"text2": [ "displayText": "Einstellungen\nzurücksetzen",
"Einstellungen", "description": "Werte auf Werkseinstellungen zurücksetzen"
"zurücksetzen?"
],
"desc": "Werte auf Werkseinstellungen zurücksetzen"
}, },
"LanguageSwitch": { "LanguageSwitch": {
"text2": [ "displayText": "Sprache:\n DE Deutsch",
"Sprache:", "description": ""
" DE Deutsch"
],
"desc": ""
} }
} }
} }

View File

@@ -2,47 +2,67 @@
"languageCode": "EL", "languageCode": "EL",
"languageLocalName": "Greek", "languageLocalName": "Greek",
"tempUnitFahrenheit": true, "tempUnitFahrenheit": true,
"messages": {
"SettingsCalibrationWarning": "Before rebooting, make sure tip & handle are at room temperature!",
"CJCCalibrating": "calibrating",
"SettingsResetWarning": "Σίγουρα θέλετε επαναφορά αρχικών ρυθμίσεων;",
"UVLOWarningString": "Χαμηλ DC",
"UndervoltageString": "Υπόταση",
"InputVoltageString": "Είσοδος V: ",
"SleepingSimpleString": "Zzzz",
"SleepingAdvancedString": "Υπνος...",
"SleepingTipAdvancedString": "Μύτη:",
"OffString": "Απ.",
"DeviceFailedValidationWarning": "Your device is most likely a counterfeit!"
},
"messagesWarn": { "messagesWarn": {
"CJCCalibrationDone": [ "CJCCalibrationDone": {
"Calibration", "message": "Βαθμονόμηση\nολοκληρώθηκε!"
"done!" },
], "ResetOKMessage": {
"ResetOKMessage": "Επαν. OK", "message": "Επαν. OK"
"SettingsResetMessage": [ },
"Κάποιες ρυθμ.", "SettingsResetMessage": {
"άλλαξαν" "message": "Κάποιες ρυθμ.\nάλλαξαν"
], },
"NoAccelerometerMessage": [ "NoAccelerometerMessage": {
"Δεν εντοπίστηκε", "message": "Δεν εντοπίστηκε\nεπιταχυνσιόμετρο"
"επιταχυνσιόμετρο" },
], "NoPowerDeliveryMessage": {
"NoPowerDeliveryMessage": [ "message": "Δεν εντοπίστηκε\nκύκλωμα USB-PD"
"Δεν εντοπίστηκε", },
"κύκλωμα USB-PD" "LockingKeysString": {
], "message": "ΚΛΕΙΔ."
"LockingKeysString": "ΚΛΕΙΔ.", },
"UnlockingKeysString": "ΞΕΚΛΕΙΔ.", "UnlockingKeysString": {
"WarningKeysLockedString": [ "message": "ΞΕΚΛΕΙΔ."
"ΚΛΕΙΔΩΜΕΝΑ", },
"ΠΛΗΚΤΡΑ!" "WarningKeysLockedString": {
], "message": "ΚΛΕΙΔΩΜΕΝΑ\nΠΛΗΚΤΡΑ!"
"WarningThermalRunaway": [ },
"Θερμική", "WarningThermalRunaway": {
"Φυγή" "message": "Θερμική\nΦυγή"
] },
"SettingsCalibrationWarning": {
"message": "Πριν την επανεκκίνηση, βεβαιωθείτε ότι η μύτη και η συσκ. είναι σε θερμ. δωματίου!"
},
"CJCCalibrating": {
"message": "βαθμονόμηση\n"
},
"SettingsResetWarning": {
"message": "Σίγουρα θέλετε επαναφορά αρχικών ρυθμίσεων;"
},
"UVLOWarningString": {
"message": "Χαμηλ DC"
},
"UndervoltageString": {
"message": "Υπόταση\n"
},
"InputVoltageString": {
"message": "Είσοδος V: \n"
},
"SleepingSimpleString": {
"message": "Zzzz"
},
"SleepingAdvancedString": {
"message": "Υπνος...\n"
},
"SleepingTipAdvancedString": {
"message": "Μύτη: \n"
},
"OffString": {
"message": "Απ."
},
"DeviceFailedValidationWarning": {
"message": "Η συσκευή σας ίσως να μην είναι αυθεντική!"
}
}, },
"characters": { "characters": {
"SettingRightChar": "R", "SettingRightChar": "R",
@@ -56,289 +76,176 @@
"SettingStartSolderingChar": "Κ", "SettingStartSolderingChar": "Κ",
"SettingStartSleepChar": "Ζ", "SettingStartSleepChar": "Ζ",
"SettingStartSleepOffChar": "Υ", "SettingStartSleepOffChar": "Υ",
"SettingSensitivityOff": "0",
"SettingSensitivityLow": "Χ",
"SettingSensitivityMedium": "Μ",
"SettingSensitivityHigh": "Υ",
"SettingLockDisableChar": "Α", "SettingLockDisableChar": "Α",
"SettingLockBoostChar": "B", "SettingLockBoostChar": "B",
"SettingLockFullChar": "Π" "SettingLockFullChar": "Π"
}, },
"menuGroups": { "menuGroups": {
"PowerMenu": { "PowerMenu": {
"text2": [ "displayText": "Ρυθμίσεις\nενέργειας",
"Ρυθμίσεις", "description": ""
"ενέργειας"
],
"desc": ""
}, },
"SolderingMenu": { "SolderingMenu": {
"text2": [ "displayText": "Ρυθμίσεις\nκόλλησης",
"Ρυθμίσεις", "description": ""
"κόλλησης"
],
"desc": ""
}, },
"PowerSavingMenu": { "PowerSavingMenu": {
"text2": [ "displayText": "Λειτουργία\nύπνου",
"Λειτουργία", "description": ""
"ύπνου"
],
"desc": ""
}, },
"UIMenu": { "UIMenu": {
"text2": [ "displayText": "Διεπαφή\nχρήστη",
"Διεπαφή", "description": ""
"χρήστη"
],
"desc": ""
}, },
"AdvancedMenu": { "AdvancedMenu": {
"text2": [ "displayText": "Προηγμένες\nρυθμίσεις",
"Προηγμένες", "description": ""
"ρυθμίσεις"
],
"desc": ""
} }
}, },
"menuOptions": { "menuOptions": {
"DCInCutoff": { "DCInCutoff": {
"text2": [ "displayText": "Πηγή\nενέργειας",
"Πηγή", "description": "Πηγή ενέργειας. Oρισμός τάσης απενεργοποίησης. (DC 10V) (S 3.3V ανα μπαταρία, απενεργοποίηση ενεργειακού ορίου)"
"ενέργειας"
],
"desc": "Πηγή ενέργειας. Oρισμός τάσης απενεργοποίησης. (DC 10V) (S 3.3V ανα κυψέλη, απενεργοποίηση ενεργειακού ορίου)"
}, },
"MinVolCell": { "MinVolCell": {
"text2": [ "displayText": "Ελάχιστη\nτάση",
"Ελάχιστη", "description": "Ελάχιστη επιτρεπτή τάση ανα μπαταρία (3 σε σειρά: 3 - 3.7V | 4-6 σε σειρά: 2.4 - 3.7V)"
"τάση"
],
"desc": "Ελάχιστη επιτρεπτή τάση ανα κυψέλη (3 σε σειρά: 3 - 3.7V | 4-6 σε σειρά: 2.4 - 3.7V)"
}, },
"QCMaxVoltage": { "QCMaxVoltage": {
"text2": [ "displayText": "Τάση\nQC",
"Τάση", "description": "Μέγιστη τάση QC που να ζητείται από το τροφοδοτικό"
"QC"
],
"desc": "Μέγιστη τάση QC που να ζητά το κολλητήρι από το τροφοδοτικό"
}, },
"PDNegTimeout": { "PDNegTimeout": {
"text2": [ "displayText": "χρονικό όριο\nPD",
"χρονικό όριο", "description": "Χρονικό όριο διαπραγμάτευσης PD σε βήματα 100ms για συμβατότητα με κάποιους φορτιστές QC"
"PD" },
], "PDVpdo": {
"desc": "Χρονικό όριο διαπραγμάτευσης PD σε βήματα 100ms για συμβατότητα με κάποιους φορτιστές QC" "displayText": "PD\nVPDO",
"description": "Ενεργοποιεί λειτουργίες PPS & EPR."
}, },
"BoostTemperature": { "BoostTemperature": {
"text2": [ "displayText": "Θερμοκ.\nboost",
"Θερμοκ.", "description": "Θερμοκρασία στη \"λειτουργία boost\""
"boost"
],
"desc": "Θερμοκρασία στη \"λειτουργία boost\""
}, },
"AutoStart": { "AutoStart": {
"text2": [ "displayText": "Ζέσταμα\nκατά την εν.",
"Ζέσταμα", "description": "0=off | Κ=θερμ. κόλλησης | Z=αναμονή σε θερμοκρασία ύπνου μέχρι την κίνηση | Υ=αναμονή χωρίς ζέσταμα μέχρι την κίνηση"
"κατά την εν."
],
"desc": "0=off | Κ=θερμ. κόλλησης | Z=αναμονή σε θερμοκρασία ύπνου μέχρι την κίνηση | Υ=αναμονή χωρίς ζέσταμα μέχρι την κίνηση"
}, },
"TempChangeShortStep": { "TempChangeShortStep": {
"text2": [ "displayText": "Αλλαγή θερμοκ.\nστιγμιαίο",
"Αλλαγή θερμοκ.", "description": "Βήμα αλλαγής θερμοκρασίας σε στιγμιαίο πάτημα πλήκτρου"
"στιγμιαίο"
],
"desc": "Βήμα αλλαγής θερμοκρασίας σε στιγμιαίο πάτημα πλήκτρου"
}, },
"TempChangeLongStep": { "TempChangeLongStep": {
"text2": [ "displayText": "Αλλαγή θερμοκ.\nπαρατεταμένο",
"Αλλαγή θερμοκ.", "description": "Βήμα αλλαγής θερμοκρασίας σε παρατεταμένο πάτημα πλήκτρου"
"παρατεταμένο"
],
"desc": "Βήμα αλλαγής θερμοκρασίας σε παρατεταμένο πάτημα πλήκτρου"
}, },
"LockingMode": { "LockingMode": {
"text2": [ "displayText": "Κλείδωμα\nπλήκτρων",
"Κλείδωμα", "description": "Κατά την κόλληση, κρατήστε και τα δύο πλήκτρα για κλείδωμα (A=απενεργοποίηση | B=μόνο λειτ. boost | Π=πλήρες κλείδωμα)"
"πλήκτρων"
],
"desc": "Κατά την κόλληση, κρατήστε και τα δύο πλήκτρα για κλείδωμα (A=απενεργοποίηση | B=μόνο λειτ. boost | Π=πλήρες κλείδωμα)"
}, },
"MotionSensitivity": { "MotionSensitivity": {
"text2": [ "displayText": "Ευαισθησία\nκίνησης",
"Ευαισθησία", "description": "0=off | 1=λιγότερο ευαίσθητο | ... | 9=περισσότερο ευαίσθητο"
"κίνησης"
],
"desc": "0=off | 1=λιγότερο ευαίσθητο | ... | 9=περισσότερο ευαίσθητο"
}, },
"SleepTemperature": { "SleepTemperature": {
"text2": [ "displayText": "Θερμοκρ.\nύπνου",
"Θερμοκρ.", "description": "Θερμοκρασία μύτης σε λειτ. ύπνου"
"ύπνου"
],
"desc": "Θερμοκρασία μύτης σε λειτ. ύπνου"
}, },
"SleepTimeout": { "SleepTimeout": {
"text2": [ "displayText": "Έναρξη\nύπνου",
"Έναρξη", "description": "Χρονικό διάστημα πρίν την ενεργοποίηση λειτουργίας ύπνου (Δ=δευτ. | Λ=λεπτά)"
"ύπνου"
],
"desc": "Χρονικό διάστημα πρίν την ενεργοποίηση λειτουργίας ύπνου (Δ=δευτ. | Λ=λεπτά)"
}, },
"ShutdownTimeout": { "ShutdownTimeout": {
"text2": [ "displayText": "Έναρξη\nαπενεργ.",
"Έναρξη", "description": "Χρονικό διάστημα πρίν την απενεργοποίηση του κολλητηριού (Λ=λεπτά)"
"απενεργ."
],
"desc": "Χρονικό διάστημα πρίν την απενεργοποίηση του κολλητηριού (Λ=λεπτά)"
}, },
"HallEffSensitivity": { "HallEffSensitivity": {
"text2": [ "displayText": "Ευαισθ. αισθ. \nφαιν. Hall",
"Ευαισθ. αισθ. ", "description": "Ευαισθησία του αισθητήρα φαινομένου Hall για εντοπισμό αδράνειας (0=off | 1=λιγότερο ευαίσθητο | ... | 9=περισσότερο ευαίσθητο)"
"φαιν. Hall"
],
"desc": "Ευαισθησία του αισθητήρα φαινομένου Hall για εντοπισμό αδράνειας (0=off | 1=λιγότερο ευαίσθητο | ... | 9=περισσότερο ευαίσθητο)"
}, },
"TemperatureUnit": { "TemperatureUnit": {
"text2": [ "displayText": "Μονάδες\nθερμοκρασίας",
"Μονάδες", "description": "C=Κελσίου | F=Φαρενάιτ"
"θερμοκρασίας"
],
"desc": "C=Κελσίου | F=Φαρενάιτ"
}, },
"DisplayRotation": { "DisplayRotation": {
"text2": [ "displayText": "Διάταξη\nοθόνης",
"Διάταξη", "description": "R=δεξιόχειρες | L=αριστερόχειρες | Α=αυτόματο"
"οθόνης"
],
"desc": "R=δεξιόχειρες | L=αριστερόχειρες | Α=αυτόματο"
}, },
"CooldownBlink": { "CooldownBlink": {
"text2": [ "displayText": "Αναβοσβήσιμο\nψύξης",
"Αναβοσβήσιμο", "description": "Αναβοσβήσιμο της ενδειξης θερμοκρασίας κατά την παύση θέρμανσης όταν η μύτη είναι ακόμα καυτή"
"ψύξης"
],
"desc": "Αναβοσβήσιμο της ενδειξης θερμοκρασίας κατά την παύση θέρμανσης όταν η μύτη είναι ακόμα καυτή"
}, },
"ScrollingSpeed": { "ScrollingSpeed": {
"text2": [ "displayText": "Ταχύτητα\nκύλισης",
"Ταχύτητα", "description": "Ταχύτητα κύλισης κειμένου (Α=αργά | Γ=γρήγορα)"
"κύλισης"
],
"desc": "Ταχύτητα κύλισης κειμένου (Α=αργά | Γ=γρήγορα)"
}, },
"ReverseButtonTempChange": { "ReverseButtonTempChange": {
"text2": [ "displayText": "Αντιστροφή\nπλήκτρων + -",
"Αντιστροφή", "description": "Αντιστροφή διάταξης πλήκτρων στη ρύθμιση θερμοκρασίας"
"πλήκτρων + -"
],
"desc": "Αντιστροφή διάταξης πλήκτρων στη ρύθμιση θερμοκρασίας"
}, },
"AnimSpeed": { "AnimSpeed": {
"text2": [ "displayText": "Ταχύτητα\nκιν. εικονιδ.",
"Ταχύτητα", "description": "Ρυθμός κίνησης εικονιδίων στο μενού (0=off | Α=αργός | Μ=μέτριος | Γ=γρήγορος)"
"κιν. εικονιδ."
],
"desc": "Ρυθμός κίνησης εικονιδίων στο μενού (0=off | Α=αργός | Μ=μέτριος | Γ=γρήγορος)"
}, },
"AnimLoop": { "AnimLoop": {
"text2": [ "displayText": "Επανάληψη\nκιν. εικονιδ.",
"Επανάληψη", "description": "Επανάληψη κίνησης εικονιδίων στο αρχικό μενού"
"κιν. εικονιδ."
],
"desc": "Επανάληψη κίνησης εικονιδίων στο αρχικό μενού"
}, },
"Brightness": { "Brightness": {
"text2": [ "displayText": "Αντίθεση\nοθόνης",
"Αντίθεση", "description": "Ρύθμιση φωτεινότητας οθόνης OLED"
"οθόνης"
],
"desc": "Ρύθμιση φωτεινότητας οθόνης OLED"
}, },
"ColourInversion": { "ColourInversion": {
"text2": [ "displayText": "Αντιστροφή\nχρωμάτων",
"Αντιστροφή", "description": "Αντιστροφή χρωμάτων οθόνης OLED"
"χρωμάτων"
],
"desc": "Αντιστροφή χρωμάτων οθόνης OLED"
}, },
"LOGOTime": { "LOGOTime": {
"text2": [ "displayText": "Διάρκεια\nlogo εκκίνησης",
"Boot logo", "description": "Διάρκεια εμφάνισης της εικόνας εκκίνησης (s=seconds)"
"duration"
],
"desc": "Sets the duration for the boot logo (s=seconds)"
}, },
"AdvancedIdle": { "AdvancedIdle": {
"text2": [ "displayText": "Λεπτομερής\nοθ. αδράνειας",
"Λεπτομερής", "description": "Προβολή λεπτομερών πληροφοριών σε μικρότερη γραμματοσειρά στην οθόνη αδράνειας"
"οθ. αδράνειας"
],
"desc": "Προβολή λεπτομερών πληροφοριών σε μικρότερη γραμματοσειρά στην οθόνη αδράνειας"
}, },
"AdvancedSoldering": { "AdvancedSoldering": {
"text2": [ "displayText": "Λεπτομερής\nοθ. κόλλησης",
"Λεπτομερής", "description": "Προβολή λεπτομερών πληροφοριών σε μικρότερη γραμματοσειρά στην οθόνη κόλλησης"
"οθ. κόλλησης" },
], "BluetoothLE": {
"desc": "Προβολή λεπτομερών πληροφοριών σε μικρότερη γραμματοσειρά στην οθόνη κόλλησης" "displayText": "Bluetooth\n",
"description": "Enables BLE"
}, },
"PowerLimit": { "PowerLimit": {
"text2": [ "displayText": "Ενεργειακό\nόριο",
"Ενεργειακό", "description": "Μέγιστη ενέργεια που μπορεί να χρησιμοποιεί το κολλητήρι (W=watt)"
"όριο"
],
"desc": "Μέγιστη ενέργεια που μπορεί να χρησιμοποιεί το κολλητήρι (W=watt)"
}, },
"CalibrateCJC": { "CalibrateCJC": {
"text2": [ "displayText": "Βαθμονόμηση CJC\nσε επόμενη έναρξη",
"Calibrate CJC", "description": "Στην επόμενη εκκίνηση θα γίνει βαθμονόμηση θερμοκρασίας (δεν απαιτείται αν Δθερμ < 5 C)"
"at next boot"
],
"desc": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5 C)"
}, },
"VoltageCalibration": { "VoltageCalibration": {
"text2": [ "displayText": "Βαθμονόμηση\nτάσης εισόδου;",
"Βαθμονόμηση", "description": "Έναρξη βαθμονόμησης τάσης εισόδου (κράτημα για έξοδο)"
"τάσης εισόδου;"
],
"desc": "Έναρξη βαθμονόμησης τάσης εισόδου (κράτημα για έξοδο)"
}, },
"PowerPulsePower": { "PowerPulsePower": {
"text2": [ "displayText": "Παλμός\nενέργειας",
"Παλμός", "description": "Ένταση ενέργειας παλμού διατήρησης λειτουργίας (W=watt)"
"ενέργειας"
],
"desc": "Ένταση ενέργειας παλμού διατήρησης λειτουργίας (W=watt)"
}, },
"PowerPulseWait": { "PowerPulseWait": {
"text2": [ "displayText": "Καθυστέρηση\nπαλμού ενέργ.",
"Καθυστέρηση", "description": "Καθυστέρηση πριν την ενεργοποίση παλμού διατήρησης λειτουργίας (x 2.5s)"
"παλμού ενέργ."
],
"desc": "Καθυστέρηση πριν την ενεργοποίση παλμού διατήρησης λειτουργίας (x 2.5s)"
}, },
"PowerPulseDuration": { "PowerPulseDuration": {
"text2": [ "displayText": "Διάρκεια\nπαλμού ενέργ.",
"Διάρκεια", "description": "Διάρκεια παλμού διατήρησης ενέργειας (x 250ms)"
"παλμού ενέργ."
],
"desc": "Διάρκεια παλμού διατήρησης ενέργειας (x 250ms)"
}, },
"SettingsReset": { "SettingsReset": {
"text2": [ "displayText": "Επαναφορά\nεργ. ρυθμίσεων;",
"Επαναφορά", "description": "Επαναφορά στις προεπιλεγμένες ρυθμίσεις"
"εργ. ρυθμίσεων;"
],
"desc": "Επαναφορά στις προεπιλεγμένες ρυθμίσεις"
}, },
"LanguageSwitch": { "LanguageSwitch": {
"text2": [ "displayText": "Γλώσσα:\n EL Ελληνικά",
"Γλώσσα:", "description": ""
" GR Ελληνικά"
],
"desc": ""
} }
} }
} }

View File

@@ -2,44 +2,67 @@
"languageCode": "EN", "languageCode": "EN",
"languageLocalName": "English", "languageLocalName": "English",
"tempUnitFahrenheit": true, "tempUnitFahrenheit": true,
"messages": {
"SettingsCalibrationWarning": "Before rebooting, make sure tip & handle are at room temperature!",
"CJCCalibrating": "calibrating",
"SettingsResetWarning": "Are you sure you want to restore default settings?",
"UVLOWarningString": "DC LOW",
"UndervoltageString": "Undervoltage",
"InputVoltageString": "Input V: ",
"SleepingSimpleString": "Zzzz",
"SleepingAdvancedString": "Sleeping...",
"SleepingTipAdvancedString": "Tip:",
"OffString": "Off",
"DeviceFailedValidationWarning": "Your device is most likely a counterfeit!"
},
"messagesWarn": { "messagesWarn": {
"CJCCalibrationDone": [ "CJCCalibrationDone": {
"Calibration", "message": "Calibration\ndone!"
"done!" },
], "ResetOKMessage": {
"ResetOKMessage": "Reset OK", "message": "Reset OK"
"SettingsResetMessage": [ },
"Certain settings", "SettingsResetMessage": {
"changed!" "message": "Certain settings\nchanged!"
], },
"NoAccelerometerMessage": [ "NoAccelerometerMessage": {
"No accelerometer", "message": "No accelerometer\ndetected!"
"detected!" },
], "NoPowerDeliveryMessage": {
"NoPowerDeliveryMessage": [ "message": "No USB-PD IC\ndetected!"
"No USB-PD IC", },
"detected!" "LockingKeysString": {
], "message": "LOCKED"
"LockingKeysString": "LOCKED", },
"UnlockingKeysString": "UNLOCKED", "UnlockingKeysString": {
"WarningKeysLockedString": "!LOCKED!", "message": "UNLOCKED"
"WarningThermalRunaway": [ },
"Thermal", "WarningKeysLockedString": {
"Runaway" "message": "!LOCKED!"
] },
"WarningThermalRunaway": {
"message": "Thermal\nRunaway"
},
"SettingsCalibrationWarning": {
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
"CJCCalibrating": {
"message": "calibrating\n"
},
"SettingsResetWarning": {
"message": "Are you sure you want to restore default settings?"
},
"UVLOWarningString": {
"message": "DC LOW"
},
"UndervoltageString": {
"message": "Undervoltage\n"
},
"InputVoltageString": {
"message": "Input V: \n"
},
"SleepingSimpleString": {
"message": "Zzzz"
},
"SleepingAdvancedString": {
"message": "Sleeping...\n"
},
"SleepingTipAdvancedString": {
"message": "Tip: \n"
},
"OffString": {
"message": "Off"
},
"DeviceFailedValidationWarning": {
"message": "Your device is most likely a counterfeit!"
}
}, },
"characters": { "characters": {
"SettingRightChar": "R", "SettingRightChar": "R",
@@ -53,289 +76,176 @@
"SettingStartSolderingChar": "S", "SettingStartSolderingChar": "S",
"SettingStartSleepChar": "Z", "SettingStartSleepChar": "Z",
"SettingStartSleepOffChar": "R", "SettingStartSleepOffChar": "R",
"SettingSensitivityOff": "O",
"SettingSensitivityLow": "L",
"SettingSensitivityMedium": "M",
"SettingSensitivityHigh": "H",
"SettingLockDisableChar": "D", "SettingLockDisableChar": "D",
"SettingLockBoostChar": "B", "SettingLockBoostChar": "B",
"SettingLockFullChar": "F" "SettingLockFullChar": "F"
}, },
"menuGroups": { "menuGroups": {
"PowerMenu": { "PowerMenu": {
"text2": [ "displayText": "Power\nsettings",
"Power", "description": ""
"settings"
],
"desc": "Settings for Power Supply (Batteries, Quick Charge, PD etc)"
}, },
"SolderingMenu": { "SolderingMenu": {
"text2": [ "displayText": "Soldering\nsettings",
"Soldering", "description": ""
"settings"
],
"desc": "Soldering settings, boost modes; how the iron operates"
}, },
"PowerSavingMenu": { "PowerSavingMenu": {
"text2": [ "displayText": "Sleep\nmode",
"Sleep", "description": ""
"mode"
],
"desc": "Sleep modes; methods we use to save power on the device by shutting down"
}, },
"UIMenu": { "UIMenu": {
"text2": [ "displayText": "User\ninterface",
"User", "description": ""
"interface"
],
"desc": "User interactions (how it looks, animations, units etc)"
}, },
"AdvancedMenu": { "AdvancedMenu": {
"text2": [ "displayText": "Advanced\nsettings",
"Advanced", "description": ""
"settings"
],
"desc": "Advanced or Misc options."
} }
}, },
"menuOptions": { "menuOptions": {
"DCInCutoff": { "DCInCutoff": {
"text2": [ "displayText": "Power\nsource",
"Power", "description": "Set cutoff voltage to prevent battery overdrainage (DC 10V) (S=3.3V per cell, disable PWR limit)"
"source"
],
"desc": "Set cutoff voltage to prevent battery overdrainage (DC 10V) (S=3.3V per cell, disable PWR limit)"
}, },
"MinVolCell": { "MinVolCell": {
"text2": [ "displayText": "Minimum\nvoltage",
"Minimum", "description": "Minimum allowed voltage per battery cell (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)"
"voltage"
],
"desc": "Minimum allowed voltage per battery cell (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)"
}, },
"QCMaxVoltage": { "QCMaxVoltage": {
"text2": [ "displayText": "QC\nvoltage",
"QC", "description": "Max QC voltage the iron should negotiate for"
"voltage"
],
"desc": "Max QC voltage the iron should negotiate for"
}, },
"PDNegTimeout": { "PDNegTimeout": {
"text2": [ "displayText": "PD\ntimeout",
"PD", "description": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers"
"timeout" },
], "PDVpdo": {
"desc": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers" "displayText": "PD\nVPDO",
"description": "Enables PPS & EPR modes"
}, },
"BoostTemperature": { "BoostTemperature": {
"text2": [ "displayText": "Boost\ntemp",
"Boost", "description": "Tip temperature used in \"boost mode\""
"temp"
],
"desc": "Tip temperature used in \"boost mode\""
}, },
"AutoStart": { "AutoStart": {
"text2": [ "displayText": "Start-up\nbehavior",
"Start-up", "description": "O=off | S=heat to soldering temp | Z=standby at sleep temp until moved | R=standby without heating until moved"
"behavior"
],
"desc": "O=off | S=heat to soldering temp | Z=standby at sleep temp until moved | R=standby without heating until moved"
}, },
"TempChangeShortStep": { "TempChangeShortStep": {
"text2": [ "displayText": "Temp change\nshort",
"Temp change", "description": "Temperature-change-increment on short button press"
"short"
],
"desc": "Temperature-change-increment on short button press"
}, },
"TempChangeLongStep": { "TempChangeLongStep": {
"text2": [ "displayText": "Temp change\nlong",
"Temp change", "description": "Temperature-change-increment on long button press"
"long"
],
"desc": "Temperature-change-increment on long button press"
}, },
"LockingMode": { "LockingMode": {
"text2": [ "displayText": "Allow locking\nbuttons",
"Allow locking", "description": "While soldering, hold down both buttons to toggle locking them (D=disable | B=boost mode only | F=full locking)"
"buttons"
],
"desc": "While soldering, hold down both buttons to toggle locking them (D=disable | B=boost mode only | F=full locking)"
}, },
"MotionSensitivity": { "MotionSensitivity": {
"text2": [ "displayText": "Motion\nsensitivity",
"Motion", "description": "0=off | 1=least sensitive | ... | 9=most sensitive"
"sensitivity"
],
"desc": "0=off | 1=least sensitive | ... | 9=most sensitive"
}, },
"SleepTemperature": { "SleepTemperature": {
"text2": [ "displayText": "Sleep\ntemp",
"Sleep", "description": "Tip temperature while in \"sleep mode\""
"temp"
],
"desc": "Tip temperature while in \"sleep mode\""
}, },
"SleepTimeout": { "SleepTimeout": {
"text2": [ "displayText": "Sleep\ntimeout",
"Sleep", "description": "Interval before \"sleep mode\" starts (s=seconds | m=minutes)"
"timeout"
],
"desc": "Interval before \"sleep mode\" starts (s=seconds | m=minutes)"
}, },
"ShutdownTimeout": { "ShutdownTimeout": {
"text2": [ "displayText": "Shutdown\ntimeout",
"Shutdown", "description": "Interval before the iron shuts down (m=minutes)"
"timeout"
],
"desc": "Interval before the iron shuts down (m=minutes)"
}, },
"HallEffSensitivity": { "HallEffSensitivity": {
"text2": [ "displayText": "Hall sensor\nsensitivity",
"Hall sensor", "description": "Sensitivity to magnets (0=off | 1=least sensitive | ... | 9=most sensitive)"
"sensitivity"
],
"desc": "Sensitivity to magnets (0=off | 1=least sensitive | ... | 9=most sensitive)"
}, },
"TemperatureUnit": { "TemperatureUnit": {
"text2": [ "displayText": "Temperature\nunit",
"Temperature", "description": "C=°Celsius | F=°Fahrenheit"
"unit"
],
"desc": "C=°Celsius | F=°Fahrenheit"
}, },
"DisplayRotation": { "DisplayRotation": {
"text2": [ "displayText": "Display\norientation",
"Display", "description": "R=right-handed | L=left-handed | A=automatic"
"orientation"
],
"desc": "R=right-handed | L=left-handed | A=automatic"
}, },
"CooldownBlink": { "CooldownBlink": {
"text2": [ "displayText": "Cooldown\nflashing",
"Cooldown", "description": "Flash temp reading at idle while tip is hot"
"flashing"
],
"desc": "Flash temp reading at idle while tip is hot"
}, },
"ScrollingSpeed": { "ScrollingSpeed": {
"text2": [ "displayText": "Scrolling\nspeed",
"Scrolling", "description": "Scrolling speed of info text (S=slow | F=fast)"
"speed"
],
"desc": "Speed info text scrolls past at (S=slow | F=fast)"
}, },
"ReverseButtonTempChange": { "ReverseButtonTempChange": {
"text2": [ "displayText": "Swap\n+ - keys",
"Swap", "description": "Reverse assignment of buttons for temperature adjustment"
"+ - keys"
],
"desc": "Reverse assignment of buttons for temperature adjustment"
}, },
"AnimSpeed": { "AnimSpeed": {
"text2": [ "displayText": "Anim.\nspeed",
"Anim.", "description": "Pace of icon animations in menu (O=off | S=slow | M=medium | F=fast)"
"speed"
],
"desc": "Pace of icon animations in menu (O=off | S=slow | M=medium | F=fast)"
}, },
"AnimLoop": { "AnimLoop": {
"text2": [ "displayText": "Anim.\nloop",
"Anim.", "description": "Loop icon animations in main menu"
"loop"
],
"desc": "Loop icon animations in main menu"
}, },
"Brightness": { "Brightness": {
"text2": [ "displayText": "Screen\nbrightness",
"Screen", "description": "Adjust the OLED screen brightness"
"brightness"
],
"desc": "Adjust the OLED screen brightness"
}, },
"ColourInversion": { "ColourInversion": {
"text2": [ "displayText": "Invert\nscreen",
"Invert", "description": "Invert the OLED screen colors"
"screen"
],
"desc": "Invert the OLED screen colors"
}, },
"LOGOTime": { "LOGOTime": {
"text2": [ "displayText": "Boot logo\nduration",
"Boot logo", "description": "Set boot logo duration (s=seconds)"
"duration"
],
"desc": "Set boot logo duration (s=seconds)"
}, },
"AdvancedIdle": { "AdvancedIdle": {
"text2": [ "displayText": "Detailed\nidle screen",
"Detailed", "description": "Display detailed info in a smaller font on idle screen"
"idle screen"
],
"desc": "Display detailed info in a smaller font on idle screen"
}, },
"AdvancedSoldering": { "AdvancedSoldering": {
"text2": [ "displayText": "Detailed\nsolder screen",
"Detailed", "description": "Display detailed info in a smaller font on soldering screen"
"solder screen" },
], "BluetoothLE": {
"desc": "Display detailed info in a smaller font on soldering screen" "displayText": "Bluetooth\n",
"description": "Enables BLE"
}, },
"PowerLimit": { "PowerLimit": {
"text2": [ "displayText": "Power\nlimit",
"Power", "description": "Maximum power the iron can use (W=watt)"
"limit"
],
"desc": "Maximum power the iron can use (W=watt)"
}, },
"CalibrateCJC": { "CalibrateCJC": {
"text2": [ "displayText": "Calibrate CJC\nat next boot",
"Calibrate CJC", "description": "Calibrate Cold Junction Compensation at next boot (not required if Delta T is < 5°C)"
"at next boot"
],
"desc": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
}, },
"VoltageCalibration": { "VoltageCalibration": {
"text2": [ "displayText": "Calibrate\ninput voltage",
"Calibrate", "description": "Start VIN calibration (long press to exit)"
"input voltage"
],
"desc": "Start VIN calibration (long press to exit)"
}, },
"PowerPulsePower": { "PowerPulsePower": {
"text2": [ "displayText": "Power\npulse",
"Power", "description": "Intensity of power of keep-awake-pulse (W=watt)"
"pulse"
],
"desc": "Intensity of power of keep-awake-pulse (watt)"
}, },
"PowerPulseWait": { "PowerPulseWait": {
"text2": [ "displayText": "Power pulse\ndelay",
"Power pulse", "description": "Delay before keep-awake-pulse is triggered (x 2.5s)"
"delay"
],
"desc": "Delay before keep-awake-pulse is triggered (x 2.5s)"
}, },
"PowerPulseDuration": { "PowerPulseDuration": {
"text2": [ "displayText": "Power pulse\nduration",
"Power pulse", "description": "Keep-awake-pulse duration (x 250ms)"
"duration"
],
"desc": "Keep-awake-pulse duration (x 250ms)"
}, },
"SettingsReset": { "SettingsReset": {
"text2": [ "displayText": "Restore default\nsettings",
"Restore default", "description": "Reset all settings to default"
"settings"
],
"desc": "Reset all settings to default"
}, },
"LanguageSwitch": { "LanguageSwitch": {
"text2": [ "displayText": "Language:\n EN English",
"Language:", "description": ""
" EN English"
],
"desc": "Toggle active language"
} }
} }
} }

View File

@@ -1,45 +1,68 @@
{ {
"languageCode": "ES", "languageCode": "ES",
"languageLocalName": "Castellano", "languageLocalName": "Castellano",
"tempUnitFahrenheit": false, "tempUnitFahrenheit": true,
"messages": {
"SettingsCalibrationWarning": "Before rebooting, make sure tip & handle are at room temperature!",
"CJCCalibrating": "calibrating",
"SettingsResetWarning": "¿Quieres restablecer los ajustes?",
"UVLOWarningString": "CC BAJA",
"UndervoltageString": "Voltaje bajo",
"InputVoltageString": "Voltaje: ",
"SleepingSimpleString": "Zzzz",
"SleepingAdvancedString": "En reposo...",
"SleepingTipAdvancedString": "Punta:",
"OffString": " No",
"DeviceFailedValidationWarning": "Your device is most likely a counterfeit!"
},
"messagesWarn": { "messagesWarn": {
"CJCCalibrationDone": [ "CJCCalibrationDone": {
"Calibration", "message": "Calibration\ndone!"
"done!" },
], "ResetOKMessage": {
"ResetOKMessage": "Hecho.", "message": "Hecho"
"SettingsResetMessage": [ },
"Ajustes", "SettingsResetMessage": {
"¡Reiniciados!" "message": "Ajustes\n¡Reiniciados!"
], },
"NoAccelerometerMessage": [ "NoAccelerometerMessage": {
"Sin acelerómetro", "message": "Sin acelerómetro\n¡Detectado!"
"¡Detectado!" },
], "NoPowerDeliveryMessage": {
"NoPowerDeliveryMessage": [ "message": "Sin USB-PD IC\n¡Detectado!"
"Sin USB-PD IC", },
"¡Detectado!" "LockingKeysString": {
], "message": "BLOQUEADO"
"LockingKeysString": " BLOQUEADO", },
"UnlockingKeysString": "DESBLOQUEADO", "UnlockingKeysString": {
"WarningKeysLockedString": "¡BLOQUEADO!", "message": "DESBLOQUEADO"
"WarningThermalRunaway": [ },
"Thermal", "WarningKeysLockedString": {
"Runaway" "message": "¡BLOQUEADO!"
] },
"WarningThermalRunaway": {
"message": "Térmico\nFuera de control"
},
"SettingsCalibrationWarning": {
"message": "¡Antes de reiniciar, asegúrese de que la punta y el mango estén a temperatura ambiente!"
},
"CJCCalibrating": {
"message": "calibrando\n"
},
"SettingsResetWarning": {
"message": "¿Quieres restablecer los ajustes?"
},
"UVLOWarningString": {
"message": "CC BAJA"
},
"UndervoltageString": {
"message": "Voltaje bajo\n"
},
"InputVoltageString": {
"message": "Voltaje: \n"
},
"SleepingSimpleString": {
"message": "Reposo"
},
"SleepingAdvancedString": {
"message": "En reposo...\n"
},
"SleepingTipAdvancedString": {
"message": "Punta: \n"
},
"OffString": {
"message": "No"
},
"DeviceFailedValidationWarning": {
"message": "¡Lo más probable es que su dispositivo sea una falsificación!"
}
}, },
"characters": { "characters": {
"SettingRightChar": "D", "SettingRightChar": "D",
@@ -53,290 +76,176 @@
"SettingStartSolderingChar": "S", "SettingStartSolderingChar": "S",
"SettingStartSleepChar": "R", "SettingStartSleepChar": "R",
"SettingStartSleepOffChar": "F", "SettingStartSleepOffChar": "F",
"SettingSensitivityOff": "O",
"SettingSensitivityLow": "L",
"SettingSensitivityMedium": "M",
"SettingSensitivityHigh": "H",
"SettingLockDisableChar": "D", "SettingLockDisableChar": "D",
"SettingLockBoostChar": "B", "SettingLockBoostChar": "B",
"SettingLockFullChar": "F" "SettingLockFullChar": "F"
}, },
"menuGroups": { "menuGroups": {
"PowerMenu": { "PowerMenu": {
"text2": [ "displayText": "Potencia\najustes",
"Potencia", "description": ""
"ajustes"
],
"desc": ""
}, },
"SolderingMenu": { "SolderingMenu": {
"text2": [ "displayText": "Soldadura\najustes",
"Soldadura", "description": ""
"ajustes"
],
"desc": ""
}, },
"PowerSavingMenu": { "PowerSavingMenu": {
"text2": [ "displayText": "Modos de\nreposo",
"Modos de", "description": ""
"reposo"
],
"desc": ""
}, },
"UIMenu": { "UIMenu": {
"text2": [ "displayText": "Interfaz\nde usuario",
"Interfaz", "description": ""
"de usuario"
],
"desc": ""
}, },
"AdvancedMenu": { "AdvancedMenu": {
"text2": [ "displayText": "Ajustes\navanzados",
"Ajustes", "description": ""
"avanzados"
],
"desc": ""
} }
}, },
"menuOptions": { "menuOptions": {
"DCInCutoff": { "DCInCutoff": {
"text2": [ "displayText": "Fuente\nde energía",
"Fuente", "description": "Elige el tipo de fuente para limitar el voltaje (DC 10V) (S 3,3V por pila, ilimitado)"
"de energía"
],
"desc": "Elige el tipo de fuente para limitar el voltaje (DC 10V) (S 3,3V por pila, ilimitado)"
}, },
"MinVolCell": { "MinVolCell": {
"text2": [ "displayText": "Mínimo\nvoltaje",
"Mínimo", "description": "voltaje mínimo permitido por célula (3S: 3 - 3,7V | 4-6S: 2,4 - 3,7V)"
"voltaje"
],
"desc": "voltaje mínimo permitido por célula (3S: 3 - 3,7V | 4-6S: 2,4 - 3,7V)"
}, },
"QCMaxVoltage": { "QCMaxVoltage": {
"text2": [ "displayText": "Potencia de\nentrada",
"Potencia de", "description": "Potencia en vatios del adaptador de corriente utilizado"
"entrada"
],
"desc": "Potencia en vatios del adaptador de corriente utilizado."
}, },
"PDNegTimeout": { "PDNegTimeout": {
"text2": [ "displayText": "PD\ntiempo de espera",
"PD", "description": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers (0: disabled)"
"timeout" },
], "PDVpdo": {
"desc": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers (0: disabled)" "displayText": "PD\nVPDO",
"description": "Enables PPS & EPR modes"
}, },
"BoostTemperature": { "BoostTemperature": {
"text2": [ "displayText": "Ajustar la\ntemp. extra",
"Ajustar la", "description": "Temperatura de la punta utilizada en el \"modo de impulso\""
"temp. extra"
],
"desc": "Temperatura momentánea que se alcanza al apretar el botón del modo extra."
}, },
"AutoStart": { "AutoStart": {
"text2": [ "displayText": "Calentar\nal enchufar",
"Calentar", "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)"
"al enchufar"
],
"desc": "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": { "TempChangeShortStep": {
"text2": [ "displayText": "Cambio temp.\npuls. cortas",
"Cambio temp.", "description": "Aumento de la temperatura al pulsar brevemente un botón"
"puls. cortas"
],
"desc": "Subir y bajar X grados de temperatura con cada pulsación corta de los botones +/-."
}, },
"TempChangeLongStep": { "TempChangeLongStep": {
"text2": [ "displayText": "Cambio temp.\npuls. largas",
"Cambio temp.", "description": "Aumento de la temperatura al pulsar prolongadamente un botón"
"puls. largas"
],
"desc": "Subir y bajar X grados de temperatura con cada pulsación larga de los botones +/-."
}, },
"LockingMode": { "LockingMode": {
"text2": [ "displayText": "Permitir botones\nbloqueo",
"Permitir botones", "description": "Mientras suelda, mantenga pulsados ambos botones para alternar su bloqueo (D=desactivar | B=sólo modo boost | F=bloqueo total)"
"bloqueo"
],
"desc": "Al soldar, una pulsación larga en ambos botones los bloquea (D=desactivar | B=sólo potenciar | F=bloqueo total)."
}, },
"MotionSensitivity": { "MotionSensitivity": {
"text2": [ "displayText": "Detección de\nmovimiento",
"Detección de", "description": "Tiempo de reacción al agarrar (0=no | 1=menos sensible | ... | 9=más sensible)"
"movimiento"
],
"desc": "Tiempo de reacción al agarrar (0=no | 1=menos sensible | ... | 9=más sensible)"
}, },
"SleepTemperature": { "SleepTemperature": {
"text2": [ "displayText": "Temperatura\nen reposo",
"Temperatura", "description": "Temperatura de la punta en \"reposo\""
"en reposo"
],
"desc": "Temperatura de la punta en reposo."
}, },
"SleepTimeout": { "SleepTimeout": {
"text2": [ "displayText": "Entrar\nen reposo",
"Entrar", "description": "Tiempo de inactividad para entrar en reposo (min | seg)"
"en reposo"
],
"desc": "Tiempo de inactividad para entrar en reposo (min | seg)"
}, },
"ShutdownTimeout": { "ShutdownTimeout": {
"text2": [ "displayText": "Tiempo de\napagado",
"Tiempo de", "description": "Tiempo de inactividad para apagarse (en minutos)"
"apagado"
],
"desc": "Tiempo de inactividad para apagarse (en minutos)"
}, },
"HallEffSensitivity": { "HallEffSensitivity": {
"text2": [ "displayText": "Hall Eff\nSensibilidad",
"Hall Eff", "description": "Sensibilidad del sensor de efecto Hall en la detección de reposo (0=no | 1=menos sensible | ... | 9=más sensible)"
"Sensibilidad"
],
"desc": "Sensibilidad del sensor de efecto Hall en la detección de reposo (0=no | 1=menos sensible | ... | 9=más sensible)"
}, },
"TemperatureUnit": { "TemperatureUnit": {
"text2": [ "displayText": "Unidad de\ntemperatura",
"Unidad de", "description": "Unidad de temperatura (C=centígrados | F=Fahrenheit)"
"temperatura"
],
"desc": "Unidad de temperatura (C=centígrados | F=Fahrenheit)"
}, },
"DisplayRotation": { "DisplayRotation": {
"text2": [ "displayText": "Orientación\nde pantalla",
"Orientación", "description": "Orientación de la pantalla (D=diestro | I=zurdo | A=automático)"
"de pantalla"
],
"desc": "Orientación de la pantalla (D=diestro | I=zurdo | A=automático)"
}, },
"CooldownBlink": { "CooldownBlink": {
"text2": [ "displayText": "Parpadear\nal enfriar",
"Parpadear", "description": "Lectura de la temperatura al ralentí mientras la punta está caliente"
"al enfriar"
],
"desc": "La temperatura en pantalla parpadea mientras la punta siga caliente."
}, },
"ScrollingSpeed": { "ScrollingSpeed": {
"text2": [ "displayText": "Velocidad\ndel texto",
"Velocidad", "description": "Velocidad de desplazamiento del texto (R=rápida | L=lenta)"
"del texto"
],
"desc": "Velocidad de desplazamiento del texto (R=rápida | L=lenta)"
}, },
"ReverseButtonTempChange": { "ReverseButtonTempChange": {
"text2": [ "displayText": "Invertir\nbotones +/-",
"Invertir", "description": "Intercambio inversa de los botones para ajustar la temperatura"
"botones +/-"
],
"desc": "Intercambia las funciones de subir y bajar la temperatura de los botones +/- para que funcionen al revés."
}, },
"AnimSpeed": { "AnimSpeed": {
"text2": [ "displayText": "Anim.\nvelocidad",
"Anim.", "description": "Velocidad de las animaciones de los iconos en el menú (O=off | L=low | M=medium | R=high)"
"velocidad"
],
"desc": "Velocidad de las animaciones de los iconos en el menú (O=off | L=low | M=medium | R=high)"
}, },
"AnimLoop": { "AnimLoop": {
"text2": [ "displayText": "Anim.\nbucle",
"Anim.", "description": "Animaciones de iconos en bucle en el menú raíz"
"bucle"
],
"desc": "Animaciones de iconos en bucle en el menú raíz"
}, },
"Brightness": { "Brightness": {
"text2": [ "displayText": "Pantalla\nbrillo",
"Pantalla", "description": "Ajusta el brillo de la pantalla OLED"
"brillo"
],
"desc": "Ajusta el brillo de la pantalla OLED"
}, },
"ColourInversion": { "ColourInversion": {
"text2": [ "displayText": "Invertir\npantalla",
"Invertir", "description": "Invertir la pantalla OLED"
"pantalla"
],
"desc": "Invertir la pantalla OLED"
}, },
"LOGOTime": { "LOGOTime": {
"text2": [ "displayText": "logo inicial\nduración",
"logo inicial", "description": "Duración de la animación del logo inicial (s=segundos)"
"duración"
],
"desc": "Duración de la animación del logo inicial (s=segundos)"
}, },
"AdvancedIdle": { "AdvancedIdle": {
"text2": [ "displayText": "Info extra en\nmodo reposo",
"Info extra en", "description": "Mostrar información detallada en una fuente más pequeña en la pantalla inactiva"
"modo reposo"
],
"desc": "Muestra información detallada en letra pequeña al reposar."
}, },
"AdvancedSoldering": { "AdvancedSoldering": {
"text2": [ "displayText": "Info extra\nal soldar",
"Info extra", "description": "Mostrar información detallada en una fuente más pequeña en la pantalla de soldadura"
"al soldar" },
], "BluetoothLE": {
"desc": "Muestra más datos por pantalla cuando se está soldando." "displayText": "Bluetooth\n",
"description": "Habilita BLE"
}, },
"PowerLimit": { "PowerLimit": {
"text2": [ "displayText": "Potencia\nlímite",
"Ajustar la", "description": "Elige el límite de potencia máxima del soldador (en vatios)"
"potenc. máx."
],
"desc": "Elige el límite de potencia máxima del soldador (en vatios)"
}, },
"CalibrateCJC": { "CalibrateCJC": {
"text2": [ "displayText": "Calibrar CJC\nen el próximo inicio",
"Calibrar CJC", "description": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
"en el próximo inicio"
],
"desc": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
}, },
"VoltageCalibration": { "VoltageCalibration": {
"text2": [ "displayText": "Calibrar voltaje\nde entrada",
"Calibrar voltaje", "description": "Iniciar calibración VIN (pulsación larga para salir)"
"de entrada"
],
"desc": "Calibra VIN. Ajusta con ambos botones y mantén pulsado para salir."
}, },
"PowerPulsePower": { "PowerPulsePower": {
"text2": [ "displayText": "Pulsos bat.\nconstantes",
"Pulsos bat.", "description": "Intensidad de la potencia del pulso de mantenimiento del estado de vigilia (W=vatio)"
"constantes"
],
"desc": "Aplica unos pulsos necesarios para mantener encendidas ciertas baterías portátiles. En vatios."
}, },
"PowerPulseWait": { "PowerPulseWait": {
"text2": [ "displayText": "Impulso de potencia\ntiempo de espera",
"Impulso de potencia", "description": "Tiempo de espera antes de disparar cada pulso de mantenimiento de la vigilia (x 2,5s)"
"tiempo de espera"
],
"desc": "Tiempo de espera antes de disparar cada pulso de mantenimiento de la vigilia (x 2,5s)"
}, },
"PowerPulseDuration": { "PowerPulseDuration": {
"text2": [ "displayText": "Impulso de potencia\nduración",
"Impulso de potencia", "description": "Duración del impulso de mantenimiento de la vigilia (x 250ms)"
"duración"
],
"desc": "Duración del impulso de mantenimiento de la vigilia (x 250ms)"
}, },
"SettingsReset": { "SettingsReset": {
"text2": [ "displayText": "Volver a ajustes\nde fábrica",
"Volver a ajustes", "description": "Restablecer todos los ajustes por defecto"
"de fábrica"
],
"desc": "Restablece todos los ajustes a los valores originales."
}, },
"LanguageSwitch": { "LanguageSwitch": {
"text2": [ "displayText": "Idioma:\n ES Castellano",
"Idioma:", "description": ""
" ES Castellano"
],
"desc": ""
} }
} }
} }

View File

@@ -2,44 +2,67 @@
"languageCode": "FI", "languageCode": "FI",
"languageLocalName": "Suomi", "languageLocalName": "Suomi",
"tempUnitFahrenheit": false, "tempUnitFahrenheit": false,
"messages": {
"SettingsCalibrationWarning": "Before rebooting, make sure tip & handle are at room temperature!",
"CJCCalibrating": "calibrating",
"SettingsResetWarning": "Haluatko varmasti palauttaa oletusarvot?",
"UVLOWarningString": "DC ALH.",
"UndervoltageString": "Alijännite",
"InputVoltageString": "Jännite: ",
"SleepingSimpleString": "Zzzz",
"SleepingAdvancedString": "Lepotila...",
"SleepingTipAdvancedString": "Kärki:",
"OffString": "Off",
"DeviceFailedValidationWarning": "Your device is most likely a counterfeit!"
},
"messagesWarn": { "messagesWarn": {
"CJCCalibrationDone": [ "CJCCalibrationDone": {
"Calibration", "message": "Calibration\ndone!"
"done!" },
], "ResetOKMessage": {
"ResetOKMessage": "Palautus", "message": "Palautus"
"SettingsResetMessage": [ },
"Asetukset", "SettingsResetMessage": {
"palautettu!" "message": "Asetukset\npalautettu!"
], },
"NoAccelerometerMessage": [ "NoAccelerometerMessage": {
"Kiihtyvyysanturi", "message": "Kiihtyvyysanturi\npuuttuu!"
"puuttuu!" },
], "NoPowerDeliveryMessage": {
"NoPowerDeliveryMessage": [ "message": "USB-PD IC\npuuttuu!"
"USB-PD IC", },
"puuttuu!" "LockingKeysString": {
], "message": " LUKITTU"
"LockingKeysString": " LUKITTU", },
"UnlockingKeysString": "AUKI", "UnlockingKeysString": {
"WarningKeysLockedString": "!LUKKO!", "message": "AUKI"
"WarningThermalRunaway": [ },
"Thermal", "WarningKeysLockedString": {
"Runaway" "message": "!LUKKO!"
] },
"WarningThermalRunaway": {
"message": "Thermal\nRunaway"
},
"SettingsCalibrationWarning": {
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
"CJCCalibrating": {
"message": "calibrating\n"
},
"SettingsResetWarning": {
"message": "Haluatko varmasti palauttaa oletusarvot?"
},
"UVLOWarningString": {
"message": "DC ALH."
},
"UndervoltageString": {
"message": "Alijännite\n"
},
"InputVoltageString": {
"message": "Jännite: \n"
},
"SleepingSimpleString": {
"message": "Zzzz"
},
"SleepingAdvancedString": {
"message": "Lepotila...\n"
},
"SleepingTipAdvancedString": {
"message": "Kärki: \n"
},
"OffString": {
"message": "Off"
},
"DeviceFailedValidationWarning": {
"message": "Your device is most likely a counterfeit!"
}
}, },
"characters": { "characters": {
"SettingRightChar": "O", "SettingRightChar": "O",
@@ -53,289 +76,176 @@
"SettingStartSolderingChar": "J", "SettingStartSolderingChar": "J",
"SettingStartSleepChar": "L", "SettingStartSleepChar": "L",
"SettingStartSleepOffChar": "H", "SettingStartSleepOffChar": "H",
"SettingSensitivityOff": "P",
"SettingSensitivityLow": "A",
"SettingSensitivityMedium": "K",
"SettingSensitivityHigh": "S",
"SettingLockDisableChar": "P", "SettingLockDisableChar": "P",
"SettingLockBoostChar": "V", "SettingLockBoostChar": "V",
"SettingLockFullChar": "K" "SettingLockFullChar": "K"
}, },
"menuGroups": { "menuGroups": {
"PowerMenu": { "PowerMenu": {
"text2": [ "displayText": "Virta-\nasetukset",
"Virta-", "description": ""
"asetukset"
],
"desc": ""
}, },
"SolderingMenu": { "SolderingMenu": {
"text2": [ "displayText": "Juotos-\nasetukset",
"Juotos-", "description": ""
"asetukset"
],
"desc": ""
}, },
"PowerSavingMenu": { "PowerSavingMenu": {
"text2": [ "displayText": "Lepotilan\nasetukset",
"Lepotilan", "description": ""
"asetukset"
],
"desc": ""
}, },
"UIMenu": { "UIMenu": {
"text2": [ "displayText": "Käyttö-\nliittymä",
"Käyttö-", "description": ""
"liittymä"
],
"desc": ""
}, },
"AdvancedMenu": { "AdvancedMenu": {
"text2": [ "displayText": "Lisä-\nasetukset",
"Lisä-", "description": ""
"asetukset"
],
"desc": ""
} }
}, },
"menuOptions": { "menuOptions": {
"DCInCutoff": { "DCInCutoff": {
"text2": [ "displayText": "Virtalähde\nDC",
"Virtalähde", "description": "Virtalähde. Asettaa katkaisujännitteen. (DC 10V) (S 3.3V per kenno, poistaa virtarajoitukset)"
"DC"
],
"desc": "Virtalähde. Asettaa katkaisujännitteen. (DC 10V) (S 3.3V per kenno, poistaa virtarajoitukset)"
}, },
"MinVolCell": { "MinVolCell": {
"text2": [ "displayText": "Pienin\njännite",
"Pienin", "description": "Pienin sallittu jännite per kenno (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)"
"jännite"
],
"desc": "Pienin sallittu jännite per kenno (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)"
}, },
"QCMaxVoltage": { "QCMaxVoltage": {
"text2": [ "displayText": "QC\njännite",
"QC", "description": "Ensisijainen maksimi QC jännite"
"jännite"
],
"desc": "Ensisijainen maksimi QC jännite"
}, },
"PDNegTimeout": { "PDNegTimeout": {
"text2": [ "displayText": "PD\ntimeout",
"PD", "description": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers"
"timeout" },
], "PDVpdo": {
"desc": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers" "displayText": "PD\nVPDO",
"description": "Enables PPS & EPR modes"
}, },
"BoostTemperature": { "BoostTemperature": {
"text2": [ "displayText": "Tehostus-\nlämpötila",
"Tehostus-", "description": "Tehostustilan lämpötila"
"lämpötila"
],
"desc": "Tehostustilan lämpötila"
}, },
"AutoStart": { "AutoStart": {
"text2": [ "displayText": "Autom.\nkäynnistys",
"Autom.", "description": "Käynnistää virrat kytkettäessä juotostilan automaattisesti. (E=Ei käytössä | J=juotostila | L=Lepotila | H=Lepotila huoneenlämpö)"
"käynnistys"
],
"desc": "Käynnistää virrat kytkettäessä juotostilan automaattisesti. (E=Ei käytössä | J=juotostila | L=Lepotila | H=Lepotila huoneenlämpö)"
}, },
"TempChangeShortStep": { "TempChangeShortStep": {
"text2": [ "displayText": "Lämmön muutos\nlyhyt painal.",
"Lämmön muutos", "description": "Lämpötilan muutos lyhyellä painalluksella"
"lyhyt painal."
],
"desc": "Lämpötilan muutos lyhyellä painalluksella"
}, },
"TempChangeLongStep": { "TempChangeLongStep": {
"text2": [ "displayText": "Lämmön muutos\npitkä painal.",
"Lämmön muutos", "description": "Lämpötilan muutos pitkällä painalluksella"
"pitkä painal."
],
"desc": "Lämpötilan muutos pitkällä painalluksella"
}, },
"LockingMode": { "LockingMode": {
"text2": [ "displayText": "Salli nappien\nlukitus",
"Salli nappien", "description": "Kolvatessa paina molempia näppäimiä lukitaksesi ne (P=pois | V=vain tehostus | K=kaikki)"
"lukitus"
],
"desc": "Kolvatessa paina molempia näppäimiä lukitaksesi ne (P=pois | V=vain tehostus | K=kaikki)"
}, },
"MotionSensitivity": { "MotionSensitivity": {
"text2": [ "displayText": "Liikkeen\nherkkyys",
"Liikkeen", "description": "0=pois päältä | 1=vähäinen herkkyys | ... | 9=suurin herkkyys"
"herkkyys"
],
"desc": "0=pois päältä | 1=vähäinen herkkyys | ... | 9=suurin herkkyys"
}, },
"SleepTemperature": { "SleepTemperature": {
"text2": [ "displayText": "Lepotilan\nlämpötila",
"Lepotilan", "description": "Kärjen lämpötila \"lepotilassa\""
"lämpötila"
],
"desc": "Kärjen lämpötila \"lepotilassa\""
}, },
"SleepTimeout": { "SleepTimeout": {
"text2": [ "displayText": "Lepotilan\nviive",
"Lepotilan", "description": "\"Lepotilan\" ajastus (s=sekuntia | m=minuuttia)"
"viive"
],
"desc": "\"Lepotilan\" ajastus (s=sekuntia | m=minuuttia)"
}, },
"ShutdownTimeout": { "ShutdownTimeout": {
"text2": [ "displayText": "Sammutus\nviive",
"Sammutus", "description": "Automaattisen sammutuksen ajastus (m=minuuttia)"
"viive"
],
"desc": "Automaattisen sammutuksen ajastus (m=minuuttia)"
}, },
"HallEffSensitivity": { "HallEffSensitivity": {
"text2": [ "displayText": "Hall-\nherk.",
"Hall-", "description": "Hall-efektianturin herkkyys lepotilan tunnistuksessa (0=pois päältä | 1=vähäinen herkkyys | ... | 9=suurin herkkyys)"
"herk."
],
"desc": "Hall-efektianturin herkkyys lepotilan tunnistuksessa (0=pois päältä | 1=vähäinen herkkyys | ... | 9=suurin herkkyys)"
}, },
"TemperatureUnit": { "TemperatureUnit": {
"text2": [ "displayText": "Lämpötilan\nyksikkö",
"Lämpötilan", "description": "C=celsius, F=fahrenheit"
"yksikkö"
],
"desc": "C=celsius, F=fahrenheit"
}, },
"DisplayRotation": { "DisplayRotation": {
"text2": [ "displayText": "Näytön\nkierto",
"Näytön", "description": "O=oikeakätinen | V=vasenkätinen | A=automaattinen"
"kierto"
],
"desc": "O=oikeakätinen | V=vasenkätinen | A=automaattinen"
}, },
"CooldownBlink": { "CooldownBlink": {
"text2": [ "displayText": "Jäähdytyksen\nvilkutus",
"Jäähdytyksen", "description": "Vilkuttaa jäähtyessä juotoskärjen lämpötilaa sen ollessa vielä vaarallisen kuuma"
"vilkutus"
],
"desc": "Vilkuttaa jäähtyessä juotoskärjen lämpötilaa sen ollessa vielä vaarallisen kuuma"
}, },
"ScrollingSpeed": { "ScrollingSpeed": {
"text2": [ "displayText": "Selityksien\nnopeus",
"Selityksien", "description": "Selityksien vieritysnopeus (H=hidas | N=nopea)"
"nopeus"
],
"desc": "Selityksien vieritysnopeus (H=hidas | N=nopea)"
}, },
"ReverseButtonTempChange": { "ReverseButtonTempChange": {
"text2": [ "displayText": "Suunnanvaihto\n+ - näppäimille",
"Suunnanvaihto", "description": "Lämpötilapainikkeiden suunnan vaihtaminen"
"+ - näppäimille"
],
"desc": "Lämpötilapainikkeiden suunnan vaihtaminen"
}, },
"AnimSpeed": { "AnimSpeed": {
"text2": [ "displayText": "Animaation\nnopeus",
"Animaation", "description": "Animaatioiden nopeus valikossa (P=pois | A=alhainen | K=keskiverto | S=suuri)"
"nopeus"
],
"desc": "Animaatioiden nopeus valikossa (P=pois | A=alhainen | K=keskiverto | S=suuri)"
}, },
"AnimLoop": { "AnimLoop": {
"text2": [ "displayText": "Animaation\ntoistaminen",
"Animaation", "description": "Toista animaatiot valikossa"
"toistaminen"
],
"desc": "Toista animaatiot valikossa"
}, },
"Brightness": { "Brightness": {
"text2": [ "displayText": "Screen\nbrightness",
"Screen", "description": "Adjust the OLED screen brightness"
"brightness"
],
"desc": "Adjust the OLED screen brightness"
}, },
"ColourInversion": { "ColourInversion": {
"text2": [ "displayText": "Invert\nscreen",
"Invert", "description": "Invert the OLED screen colors"
"screen"
],
"desc": "Invert the OLED screen colors"
}, },
"LOGOTime": { "LOGOTime": {
"text2": [ "displayText": "Boot logo\nduration",
"Boot logo", "description": "Set boot logo duration (s=seconds)"
"duration"
],
"desc": "Set boot logo duration (s=seconds)"
}, },
"AdvancedIdle": { "AdvancedIdle": {
"text2": [ "displayText": "Tiedot\nlepotilassa",
"Tiedot", "description": "Näyttää yksityiskohtaisemmat pienemmällä fontilla tiedot lepotilassa."
"lepotilassa"
],
"desc": "Näyttää yksityiskohtaisemmat pienemmällä fontilla tiedot lepotilassa."
}, },
"AdvancedSoldering": { "AdvancedSoldering": {
"text2": [ "displayText": "Tarkempi\njuotosnäyttö",
"Tarkempi", "description": "Näyttää yksityiskohtaisemmat tiedot pienellä fontilla juotostilassa"
"juotosnäyttö" },
], "BluetoothLE": {
"desc": "Näyttää yksityiskohtaisemmat tiedot pienellä fontilla juotostilassa" "displayText": "Bluetooth\n",
"description": "Enables BLE"
}, },
"PowerLimit": { "PowerLimit": {
"text2": [ "displayText": "Tehon-\nrajoitus",
"Tehon-", "description": "Suurin sallittu teho (Watti)"
"rajoitus"
],
"desc": "Suurin sallittu teho (Watti)"
}, },
"CalibrateCJC": { "CalibrateCJC": {
"text2": [ "displayText": "Calibrate CJC\nat next boot",
"Calibrate CJC", "description": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
"at next boot"
],
"desc": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
}, },
"VoltageCalibration": { "VoltageCalibration": {
"text2": [ "displayText": "Kalibroi\ntulojännite?",
"Kalibroi", "description": "Tulojännitten kalibrointi (VIN) (paina pitkään poistuaksesi)"
"tulojännite?"
],
"desc": "Tulojännitten kalibrointi (VIN) (paina pitkään poistuaksesi)"
}, },
"PowerPulsePower": { "PowerPulsePower": {
"text2": [ "displayText": "Herätyspulssin\nvoimakkuus",
"Herätyspulssin", "description": "Herätyspulssin voimakkuus (Watti)"
"voimakkuus"
],
"desc": "Herätyspulssin voimakkuus (Watti)"
}, },
"PowerPulseWait": { "PowerPulseWait": {
"text2": [ "displayText": "Pulssin\nodotusaika",
"Pulssin", "description": "Odotusaika herätyspulssin lähetykseen (x 2.5s)"
"odotusaika"
],
"desc": "Odotusaika herätyspulssin lähetykseen (x 2.5s)"
}, },
"PowerPulseDuration": { "PowerPulseDuration": {
"text2": [ "displayText": "Pulssin\nkesto",
"Pulssin", "description": "Herätyspulssin kesto (x 250ms)"
"kesto"
],
"desc": "Herätyspulssin kesto (x 250ms)"
}, },
"SettingsReset": { "SettingsReset": {
"text2": [ "displayText": "Palauta\ntehdasasetukset?",
"Palauta", "description": "Palauta kaikki asetukset oletusarvoihin"
"tehdasasetukset?"
],
"desc": "Palauta kaikki asetukset oletusarvoihin"
}, },
"LanguageSwitch": { "LanguageSwitch": {
"text2": [ "displayText": "Kieli:\n FI Suomi",
"Kieli:", "description": ""
" FI Suomi"
],
"desc": ""
} }
} }
} }

View File

@@ -2,44 +2,67 @@
"languageCode": "FR", "languageCode": "FR",
"languageLocalName": "Français", "languageLocalName": "Français",
"tempUnitFahrenheit": false, "tempUnitFahrenheit": false,
"messages": {
"SettingsCalibrationWarning": "Before rebooting, make sure tip & handle are at room temperature!",
"CJCCalibrating": "calibrating",
"SettingsResetWarning": "Voulez-vous vraiment réinitialiser les paramètres aux valeurs par défaut ?",
"UVLOWarningString": "DC FAIBL",
"UndervoltageString": "Sous-tension",
"InputVoltageString": "V d'entrée: ",
"SleepingSimpleString": "Zzzz",
"SleepingAdvancedString": "En veille...",
"SleepingTipAdvancedString": "Panne:",
"OffString": "Off",
"DeviceFailedValidationWarning": "Votre appareil semble être une contrefaçon !"
},
"messagesWarn": { "messagesWarn": {
"CJCCalibrationDone": [ "CJCCalibrationDone": {
"Calibration", "message": "Étalonnage\nterminé!"
"done!" },
], "ResetOKMessage": {
"ResetOKMessage": "Reset OK", "message": "Reset OK"
"SettingsResetMessage": [ },
"Réglages", "SettingsResetMessage": {
"réinitialisés !" "message": "Réglages\nréinitialisés !"
], },
"NoAccelerometerMessage": [ "NoAccelerometerMessage": {
"Accéléromètre", "message": "Accéléromètre\nnon détecté !"
"non détecté !" },
], "NoPowerDeliveryMessage": {
"NoPowerDeliveryMessage": [ "message": "USB-PD\nnon détecté !"
"USB-PD", },
"non détecté !" "LockingKeysString": {
], "message": "VERROUIL"
"LockingKeysString": "VERROUIL", },
"UnlockingKeysString": "DEVERROU", "UnlockingKeysString": {
"WarningKeysLockedString": "! VERR. !", "message": "DEVERROU"
"WarningThermalRunaway": [ },
"Emballement", "WarningKeysLockedString": {
"thermique" "message": "! VERR. !"
] },
"WarningThermalRunaway": {
"message": "Emballement\nthermique"
},
"SettingsCalibrationWarning": {
"message": "Avant de redémarrer, assurez-vous que la panne et la poignée sont à température ambiante !"
},
"CJCCalibrating": {
"message": "Etalonnage\n"
},
"SettingsResetWarning": {
"message": "Voulez-vous vraiment réinitialiser les paramètres aux valeurs par défaut ?"
},
"UVLOWarningString": {
"message": "DC FAIBL"
},
"UndervoltageString": {
"message": "Sous-tension\n"
},
"InputVoltageString": {
"message": "V d'entrée: \n"
},
"SleepingSimpleString": {
"message": "Zzzz"
},
"SleepingAdvancedString": {
"message": "En veille...\n"
},
"SleepingTipAdvancedString": {
"message": "Panne: \n"
},
"OffString": {
"message": "Off"
},
"DeviceFailedValidationWarning": {
"message": "Votre appareil semble être une contrefaçon !"
}
}, },
"characters": { "characters": {
"SettingRightChar": "D", "SettingRightChar": "D",
@@ -53,289 +76,176 @@
"SettingStartSolderingChar": "A", "SettingStartSolderingChar": "A",
"SettingStartSleepChar": "V", "SettingStartSleepChar": "V",
"SettingStartSleepOffChar": "O", "SettingStartSleepOffChar": "O",
"SettingSensitivityOff": "D",
"SettingSensitivityLow": "B",
"SettingSensitivityMedium": "M",
"SettingSensitivityHigh": "H",
"SettingLockDisableChar": "D", "SettingLockDisableChar": "D",
"SettingLockBoostChar": "B", "SettingLockBoostChar": "B",
"SettingLockFullChar": "V" "SettingLockFullChar": "V"
}, },
"menuGroups": { "menuGroups": {
"PowerMenu": { "PowerMenu": {
"text2": [ "displayText": "Paramètres\nd'alim.",
"Paramètres", "description": ""
"d'alim."
],
"desc": ""
}, },
"SolderingMenu": { "SolderingMenu": {
"text2": [ "displayText": "Paramètres\nde soudure",
"Paramètres", "description": ""
"de soudure"
],
"desc": ""
}, },
"PowerSavingMenu": { "PowerSavingMenu": {
"text2": [ "displayText": "Mode\nveille",
"Mode", "description": ""
"veille"
],
"desc": ""
}, },
"UIMenu": { "UIMenu": {
"text2": [ "displayText": "Interface\nutilisateur",
"Interface", "description": ""
"utilisateur"
],
"desc": ""
}, },
"AdvancedMenu": { "AdvancedMenu": {
"text2": [ "displayText": "Options\navancées",
"Options", "description": ""
"avancées"
],
"desc": ""
} }
}, },
"menuOptions": { "menuOptions": {
"DCInCutoff": { "DCInCutoff": {
"text2": [ "displayText": "Source\nd'alim.",
"Source", "description": "Source d'alimentation. Règle la tension de coupure (DC 10V) (S 3.3V par cellules, désactive la limite de puissance)"
"d'alim."
],
"desc": "Source d'alimentation. Règle la tension de coupure (DC 10V) (S 3.3V par cellules, désactive la limite de puissance)"
}, },
"MinVolCell": { "MinVolCell": {
"text2": [ "displayText": "Tension\nminimale",
"Tension", "description": "Tension minimale autorisée par cellule (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)"
"minimale"
],
"desc": "Tension minimale autorisée par cellule (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)"
}, },
"QCMaxVoltage": { "QCMaxVoltage": {
"text2": [ "displayText": "Tension\nQC",
"Tension", "description": "Tension maximale désirée avec une alimentation QC"
"QC"
],
"desc": "Tension maximale désirée avec une alimentation QC"
}, },
"PDNegTimeout": { "PDNegTimeout": {
"text2": [ "displayText": "Délai\nexpir. PD",
"Délai", "description": "Délai de la negociation PD par étapes de 100ms pour la compatiblité avec certains chargeurs QC"
"expir. PD" },
], "PDVpdo": {
"desc": "Délai de la negociation PD par étapes de 100ms pour la compatiblité avec certains chargeurs QC" "displayText": "PD\nVPDO",
"description": "Enables PPS & EPR modes"
}, },
"BoostTemperature": { "BoostTemperature": {
"text2": [ "displayText": "Temp.\nboost",
"Temp.", "description": "Température utilisée en \"mode boost\""
"boost"
],
"desc": "Température utilisée en \"mode boost\""
}, },
"AutoStart": { "AutoStart": {
"text2": [ "displayText": "Chauffer au\ndémarrage",
"Chauffer au", "description": "D=désactivé | A=activé | V=mode veille | O=mode veille à température ambiante"
"démarrage"
],
"desc": "D=désactivé | A=activé | V=mode veille | O=mode veille à température ambiante"
}, },
"TempChangeShortStep": { "TempChangeShortStep": {
"text2": [ "displayText": "Incrément\nappui court",
"Incrément", "description": "Incrément de changement de température sur appui court"
"appui court"
],
"desc": "Incrément de changement de température sur appui court"
}, },
"TempChangeLongStep": { "TempChangeLongStep": {
"text2": [ "displayText": "Incrément\nappui long",
"Incrément", "description": "Incrément de changement de température sur appui long"
"appui long"
],
"desc": "Incrément de changement de température sur appui long"
}, },
"LockingMode": { "LockingMode": {
"text2": [ "displayText": "Verrouiller\nles boutons",
"Verrouiller", "description": "Pendant la soudure, appuyer sur les deux boutons pour les verrouiller (D=désactivé | B=boost seulement | V=verr. total)"
"les boutons"
],
"desc": "Pendant la soudure, appuyer sur les deux boutons pour les verrouiller (D=désactivé | B=boost seulement | V=verr. total)"
}, },
"MotionSensitivity": { "MotionSensitivity": {
"text2": [ "displayText": "Sensibilité\nau mouvement",
"Sensibilité", "description": "0=désactivé | 1=peu sensible | ... | 9=très sensible"
"au mouvement"
],
"desc": "0=désactivé | 1=peu sensible | ... | 9=très sensible"
}, },
"SleepTemperature": { "SleepTemperature": {
"text2": [ "displayText": "Temp.\nveille",
"Temp.", "description": "Température de la panne en \"mode veille\""
"veille"
],
"desc": "Température de la panne en \"mode veille\""
}, },
"SleepTimeout": { "SleepTimeout": {
"text2": [ "displayText": "Délai\nveille",
"Délai", "description": "Délai avant mise en veille (s=secondes | m=minutes)"
"veille"
],
"desc": "Délai avant mise en veille (s=secondes | m=minutes)"
}, },
"ShutdownTimeout": { "ShutdownTimeout": {
"text2": [ "displayText": "Délai\narrêt",
"Délai", "description": "Délai avant l'arrêt du fer à souder (m=minutes)"
"arrêt"
],
"desc": "Délai avant l'arrêt du fer à souder (m=minutes)"
}, },
"HallEffSensitivity": { "HallEffSensitivity": {
"text2": [ "displayText": "Sensibilité\ncapteur effet hall",
"Sensibilité", "description": "Sensibilité du capteur à effet Hall pour la mise en veille (0=désactivé | 1=peu sensible | ... | 9=très sensible)"
"capteur effet hall"
],
"desc": "Sensibilité du capteur à effet Hall pour la mise en veille (0=désactivé | 1=peu sensible | ... | 9=très sensible)"
}, },
"TemperatureUnit": { "TemperatureUnit": {
"text2": [ "displayText": "Unité de\ntempérature",
"Unité de", "description": "C=Celsius | F=Fahrenheit"
"température"
],
"desc": "C=Celsius | F=Fahrenheit"
}, },
"DisplayRotation": { "DisplayRotation": {
"text2": [ "displayText": "Orientation\nde l'écran",
"Orientation", "description": "D=droitier | G=gaucher | A=automatique"
"de l'écran"
],
"desc": "D=droitier | G=gaucher | A=automatique"
}, },
"CooldownBlink": { "CooldownBlink": {
"text2": [ "displayText": "Refroidir en\nclignotant",
"Refroidir en", "description": "Faire clignoter la température lors du refroidissement tant que la panne est chaude"
"clignotant"
],
"desc": "Faire clignoter la température lors du refroidissement tant que la panne est chaude"
}, },
"ScrollingSpeed": { "ScrollingSpeed": {
"text2": [ "displayText": "Vitesse de\ndéfilement",
"Vitesse de", "description": "Vitesse de défilement du texte (R=rapide | L=lent)"
"défilement"
],
"desc": "Vitesse de défilement du texte (R=rapide | L=lent)"
}, },
"ReverseButtonTempChange": { "ReverseButtonTempChange": {
"text2": [ "displayText": "Inverser les\ntouches + -",
"Inverser les", "description": "Inverser les boutons d'ajustement de température"
"touches + -"
],
"desc": "Inverser les boutons d'ajustement de température"
}, },
"AnimSpeed": { "AnimSpeed": {
"text2": [ "displayText": "Vitesse\nanim. icônes",
"Vitesse", "description": "Vitesse des animations des icônes dans le menu (D=désactivé | L=lente | M=moyenne | R=rapide)"
"anim. icônes"
],
"desc": "Vitesse des animations des icônes dans le menu (D=désactivé | L=lente | M=moyenne | R=rapide)"
}, },
"AnimLoop": { "AnimLoop": {
"text2": [ "displayText": "Rejouer\nanim. icônes",
"Rejouer", "description": "Rejouer en boucle les animations des icônes dans le menu principal"
"anim. icônes"
],
"desc": "Rejouer en boucle les animations des icônes dans le menu principal"
}, },
"Brightness": { "Brightness": {
"text2": [ "displayText": "Luminosité\nde l'écran",
"Luminosité", "description": "Ajuster la luminosité de l'écran OLED"
"de l'écran"
],
"desc": "Ajuster la luminosité de l'écran OLED"
}, },
"ColourInversion": { "ColourInversion": {
"text2": [ "displayText": "Inverser\nles couleurs",
"Inverser", "description": "Inverser les couleurs de l'écran OLED"
"les couleurs"
],
"desc": "Inverser les couleurs de l'écran OLED"
}, },
"LOGOTime": { "LOGOTime": {
"text2": [ "displayText": "Durée logo\nau démarrage",
"Durée logo", "description": "Définit la durée d'affichage du logo au démarrage (s=secondes)"
"au démarrage"
],
"desc": "Définit la durée d'affichage du logo au démarrage (s=secondes)"
}, },
"AdvancedIdle": { "AdvancedIdle": {
"text2": [ "displayText": "Écran veille\ndétaillé",
cran veille", "description": "Afficher les informations détaillées sur l'écran de veille"
"détaillé"
],
"desc": "Afficher les informations détaillées sur l'écran de veille"
}, },
"AdvancedSoldering": { "AdvancedSoldering": {
"text2": [ "displayText": "Écran soudure\ndétaillé",
cran soudure", "description": "Afficher les informations détaillées sur l'écran de soudure"
"détaillé" },
], "BluetoothLE": {
"desc": "Afficher les informations détaillées sur l'écran de soudure" "displayText": "Bluetooth\n",
"description": "Enables BLE"
}, },
"PowerLimit": { "PowerLimit": {
"text2": [ "displayText": "Limite de\npuissance",
"Limite de", "description": "Puissance maximale utilisable (W=watts)"
"puissance"
],
"desc": "Puissance maximale utilisable (W=watts)"
}, },
"CalibrateCJC": { "CalibrateCJC": {
"text2": [ "displayText": "Étalonner CJC\nau prochain démarage",
"Calibrate CJC", "description": "Au prochain démarrage, la compensation de soudure froide sera calibrée (non nécessaire si Delta T est < 5°C)."
"at next boot"
],
"desc": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
}, },
"VoltageCalibration": { "VoltageCalibration": {
"text2": [ "displayText": "Étalonner\ntension d'entrée",
"Étalonner", "description": "Étalonner tension d'entrée (appui long pour quitter)"
"tension d'entrée"
],
"desc": "Étalonner tension d'entrée (appui long pour quitter)"
}, },
"PowerPulsePower": { "PowerPulsePower": {
"text2": [ "displayText": "Puissance\nimpulsions",
"Puissance", "description": "Puissance des impulsions pour éviter la mise en veille des batteries (watts)"
"impulsions"
],
"desc": "Puissance des impulsions pour éviter la mise en veille des batteries (watts)"
}, },
"PowerPulseWait": { "PowerPulseWait": {
"text2": [ "displayText": "Délai entre\nles impulsions",
"Délai entre", "description": "Délai entre chaque impulsion pour empêcher la mise en veille (x 2.5s)"
"les impulsions"
],
"desc": "Délai entre chaque impulsion pour empêcher la mise en veille (x 2.5s)"
}, },
"PowerPulseDuration": { "PowerPulseDuration": {
"text2": [ "displayText": "Durée des\nimpulsions",
"Durée des", "description": "Durée des impulsions pour empêcher la mise en veille (x 250ms)"
"impulsions"
],
"desc": "Durée des impulsions pour empêcher la mise en veille (x 250ms)"
}, },
"SettingsReset": { "SettingsReset": {
"text2": [ "displayText": "Réinitialisation\nd'usine",
"Réinitialisation", "description": "Réinitialiser tous les réglages"
"d'usine"
],
"desc": "Réinitialiser tous les réglages"
}, },
"LanguageSwitch": { "LanguageSwitch": {
"text2": [ "displayText": "Langue:\n FR Français",
"Langue:", "description": ""
" FR Français"
],
"desc": ""
} }
} }
} }

View File

@@ -2,340 +2,250 @@
"languageCode": "HR", "languageCode": "HR",
"languageLocalName": "Hrvatski", "languageLocalName": "Hrvatski",
"tempUnitFahrenheit": false, "tempUnitFahrenheit": false,
"messages": {
"SettingsCalibrationWarning": "Before rebooting, make sure tip & handle are at room temperature!",
"CJCCalibrating": "calibrating",
"SettingsResetWarning": "Jeste li sigurni da želite sve postavke vratiti na tvorničke vrijednosti?",
"UVLOWarningString": "BATERIJA",
"UndervoltageString": "PRENIZAK NAPON",
"InputVoltageString": "Napajanje: ",
"SleepingSimpleString": "Zzz ",
"SleepingAdvancedString": "SPAVANJE...",
"SleepingTipAdvancedString": "Vrh: ",
"OffString": "Off",
"DeviceFailedValidationWarning": "Your device is most likely a counterfeit!"
},
"messagesWarn": { "messagesWarn": {
"CJCCalibrationDone": [ "CJCCalibrationDone": {
"Calibration", "message": "Kalibracija\ndovršena!"
"done!" },
], "ResetOKMessage": {
"ResetOKMessage": "Reset OK", "message": "Reset OK"
"SettingsResetMessage": [ },
"Certain settings", "SettingsResetMessage": {
"were changed!" "message": "Neke postavke\nsu izmijenjene!"
], },
"NoAccelerometerMessage": [ "NoAccelerometerMessage": {
"No accelerometer", "message": "Akcelerometar\nnije pronađen!"
"detected!" },
], "NoPowerDeliveryMessage": {
"NoPowerDeliveryMessage": [ "message": "USB-PD IC\nnije pronađen!"
"No USB-PD IC", },
"detected!" "LockingKeysString": {
], "message": "ZAKLJUČ"
"LockingKeysString": "LOCKED", },
"UnlockingKeysString": "UNLOCKED", "UnlockingKeysString": {
"WarningKeysLockedString": "!LOCKED!", "message": "OTKLJUČ"
"WarningThermalRunaway": [ },
"Thermal", "WarningKeysLockedString": {
"Runaway" "message": "ZAKLJUČ!"
] },
"WarningThermalRunaway": {
"message": "Neispravan\ngrijač"
},
"SettingsCalibrationWarning": {
"message": "Prije restarta provjerite da su vrh i ručka na sobnoj temperaturi!"
},
"CJCCalibrating": {
"message": "kalibriram\n"
},
"SettingsResetWarning": {
"message": "Jeste li sigurni da želite sve postavke vratiti na tvorničke vrijednosti?"
},
"UVLOWarningString": {
"message": "BAT!!!"
},
"UndervoltageString": {
"message": "PRENIZAK NAPON\n"
},
"InputVoltageString": {
"message": "Napon V: \n"
},
"SleepingSimpleString": {
"message": "Zzz "
},
"SleepingAdvancedString": {
"message": "SPAVAM...\n"
},
"SleepingTipAdvancedString": {
"message": "Vrh: \n"
},
"OffString": {
"message": "Off"
},
"DeviceFailedValidationWarning": {
"message": "Vaš uređaj je najvjerojatnije krivotvoren!"
}
}, },
"characters": { "characters": {
"SettingRightChar": "D", "SettingRightChar": "D",
"SettingLeftChar": "L", "SettingLeftChar": "L",
"SettingAutoChar": "A", "SettingAutoChar": "A",
"SettingOffChar": "O", "SettingOffChar": "U",
"SettingSlowChar": "S", "SettingSlowChar": "S",
"SettingMediumChar": "M", "SettingMediumChar": "M",
"SettingFastChar": "B", "SettingFastChar": "B",
"SettingStartNoneChar": "I", "SettingStartNoneChar": "U",
"SettingStartSolderingChar": "L", "SettingStartSolderingChar": "L",
"SettingStartSleepChar": "R", "SettingStartSleepChar": "T",
"SettingStartSleepOffChar": "S", "SettingStartSleepOffChar": "H",
"SettingSensitivityOff": "O", "SettingLockDisableChar": "O",
"SettingSensitivityLow": "L",
"SettingSensitivityMedium": "M",
"SettingSensitivityHigh": "H",
"SettingLockDisableChar": "D",
"SettingLockBoostChar": "B", "SettingLockBoostChar": "B",
"SettingLockFullChar": "F" "SettingLockFullChar": "Z"
}, },
"menuGroups": { "menuGroups": {
"PowerMenu": { "PowerMenu": {
"text2": [ "displayText": "Postavke\nnapajanja",
"Power", "description": ""
"settings"
],
"desc": ""
}, },
"SolderingMenu": { "SolderingMenu": {
"text2": [ "displayText": "Postavke\nlemljenja",
"Postavke", "description": ""
"lemljenja"
],
"desc": ""
}, },
"PowerSavingMenu": { "PowerSavingMenu": {
"text2": [ "displayText": "Ušteda\nenergije",
"Ušteda", "description": ""
"energije"
],
"desc": ""
}, },
"UIMenu": { "UIMenu": {
"text2": [ "displayText": "Korisničko\nsučelje",
"Korisničko", "description": ""
"sučelje"
],
"desc": ""
}, },
"AdvancedMenu": { "AdvancedMenu": {
"text2": [ "displayText": "Napredne\nopcije",
"Napredne", "description": ""
"opcije"
],
"desc": ""
} }
}, },
"menuOptions": { "menuOptions": {
"DCInCutoff": { "DCInCutoff": {
"text2": [ "displayText": "Izvor\nnapajanja",
"Izvor", "description": "Izvor napajanja. Postavlja napon isključivanja. (DC 10V) (S 3.3V po ćeliji)"
"napajanja"
],
"desc": "Izvor napajanja. Postavlja napon isključivanja. (DC 10V) (S 3.3V po ćeliji)"
}, },
"MinVolCell": { "MinVolCell": {
"text2": [ "displayText": "Najniži\nnapon",
"Minimum", "description": "Najniži dozvoljeni napon po ćeliji baterije (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)"
"voltage"
],
"desc": "Minimum allowed voltage per battery cell (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)"
}, },
"QCMaxVoltage": { "QCMaxVoltage": {
"text2": [ "displayText": "Snaga\nnapajanja",
"Snaga", "description": "Snaga modula za napajanje"
"napajanja"
],
"desc": "Snaga modula za napajanje"
}, },
"PDNegTimeout": { "PDNegTimeout": {
"text2": [ "displayText": "USB-PD\ntimeout",
"PD", "description": "Timeout za USB-Power Delivery u koracima od 100ms za kompatibilnost s nekim QC punjačima"
"timeout" },
], "PDVpdo": {
"desc": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers" "displayText": "PD\nVPDO",
"description": "Enables PPS & EPR modes"
}, },
"BoostTemperature": { "BoostTemperature": {
"text2": [ "displayText": "Boost\ntemp",
"Boost", "description": "Temperatura u pojačanom (Boost) načinu."
"temp"
],
"desc": "Temperatura u pojačanom (Boost) načinu."
}, },
"AutoStart": { "AutoStart": {
"text2": [ "displayText": "Auto\nstart",
"Auto", "description": "Ako je aktivno, lemilica po uključivanju napajanja odmah počinje grijati. (U=ugašeno | L=lemljenje | T=spavanje toplo | H=spavanje hladno)"
"start"
],
"desc": "Ako je aktivno, lemilica po uključivanju napajanja odmah počinje grijati. (I=isključeno | L=lemljenje | R=rezervni | S=rezervni sobna temperatura)"
}, },
"TempChangeShortStep": { "TempChangeShortStep": {
"text2": [ "displayText": "Korak temp\nkratki pritisak",
"Temp change", "description": "Korak temperature pri kratkom pritisku tipke"
"short"
],
"desc": "Temperature-change-increment on short button press"
}, },
"TempChangeLongStep": { "TempChangeLongStep": {
"text2": [ "displayText": "Korak temp\ndugi pritisak",
"Temp change", "description": "Korak temperature pri dugačkom pritisku tipke"
"long"
],
"desc": "Temperature-change-increment on long button press"
}, },
"LockingMode": { "LockingMode": {
"text2": [ "displayText": "Zaključavanje\ntipki",
"Allow locking", "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)"
"buttons"
],
"desc": "While soldering, hold down both buttons to toggle locking them (D=disable | B=boost mode only | F=full locking)"
}, },
"MotionSensitivity": { "MotionSensitivity": {
"text2": [ "displayText": "Osjetljivost\npokreta",
"Osjetljivost", "description": "Osjetljivost prepoznavanja pokreta. (0=ugašeno | 1=najmanje osjetljivo | ... | 9=najosjetljivije)"
"pokreta"
],
"desc": "Osjetljivost prepoznavanja pokreta. (0=Ugašeno | 1=Najmanje osjetljivo | ... | 9=Najosjetljivije)"
}, },
"SleepTemperature": { "SleepTemperature": {
"text2": [ "displayText": "Temp\nspavanja",
"Temp", "description": "Temperatura na koju se spušta lemilica nakon određenog vremena mirovanja (C | F)"
"spavanja"
],
"desc": "Temperatura na koju se spušta lemilica nakon određenog vremena mirovanja. (C | F)"
}, },
"SleepTimeout": { "SleepTimeout": {
"text2": [ "displayText": "Vrijeme\nspavanja",
"Vrijeme", "description": "Vrijeme mirovanja nakon kojega lemilica spušta temperaturu. (Minute | Sekunde)"
"spavanja"
],
"desc": "Vrijeme mirovanja nakon kojega lemilica spušta temperaturu. (Minute | Sekunde)"
}, },
"ShutdownTimeout": { "ShutdownTimeout": {
"text2": [ "displayText": "Vrijeme\ngašenja",
"Vrijeme", "description": "Vrijeme mirovanja nakon kojega će se lemilica ugasiti (Minute)"
"gašenja"
],
"desc": "Vrijeme mirovanja nakon kojega će se lemilica ugasiti. (Minute)"
}, },
"HallEffSensitivity": { "HallEffSensitivity": {
"text2": [ "displayText": "Osjetljivost\nHall senzora",
"Hall sensor", "description": "Osjetljivost senzora magnetskog polja za detekciju spavanja (U=Ugašeno | N=Najmanja | S=Srednja | V=Visoka)"
"sensitivity"
],
"desc": "Sensitivity of the Hall effect sensor to detect sleep (0=Ugašeno | 1=Najmanje osjetljivo | ... | 9=Najosjetljivije)"
}, },
"TemperatureUnit": { "TemperatureUnit": {
"text2": [ "displayText": "Jedinica\ntemperature",
"Jedinica", "description": "Jedinica temperature (C=Celzij | F=Fahrenheit)"
"temperature"
],
"desc": "Jedinica temperature. (C=Celzij | F=Fahrenheit)"
}, },
"DisplayRotation": { "DisplayRotation": {
"text2": [ "displayText": "Rotacija\nekrana",
"Rotacija", "description": "Orijentacija ekrana (D=desnoruki | L=ljevoruki | A=automatski)"
"ekrana"
],
"desc": "Orijentacija ekrana. (D=Desnoruki | L=Ljevoruki | A=Automatski)"
}, },
"CooldownBlink": { "CooldownBlink": {
"text2": [ "displayText": "Upozorenje\npri hlađenju",
"Upozorenje", "description": "Bljeskanje temperature prilikom hlađenja, ako je lemilica vruća"
"pri hlađenju"
],
"desc": "Bljeskanje temperature prilikom hlađenja, ako je lemilica vruća."
}, },
"ScrollingSpeed": { "ScrollingSpeed": {
"text2": [ "displayText": "Brzina\nporuka",
"Brzina", "description": "Brzina kretanja dugačkih poruka (B=brzo | S=sporo)"
"poruka"
],
"desc": "Brzina kretanja dugačkih poruka. (B=brzo | S=sporo)"
}, },
"ReverseButtonTempChange": { "ReverseButtonTempChange": {
"text2": [ "displayText": "Zamjena\n+ - tipki",
"Swap", "description": "Zamjenjuje funkciju gornje i donje tipke za podešavanje temperature"
"+ - keys"
],
"desc": "Reverse assignment of buttons for temperature adjustment"
}, },
"AnimSpeed": { "AnimSpeed": {
"text2": [ "displayText": "Brzina\nanimacije",
"Anim.", "description": "Brzina animacije ikona u menijima (U=ugašeno | S=sporo | M=srednje | B=brzo)"
"speed"
],
"desc": "Pace of icon animations in menu (O=off | S=slow | M=medium | B=fast)"
}, },
"AnimLoop": { "AnimLoop": {
"text2": [ "displayText": "Ponavljanje\nanimacije",
"Anim.", "description": "Hoće li se animacije menija vrtiti u petlji - samo ako brzina animacije nije na \"Ugašeno\""
"loop"
],
"desc": "Loop icon animations in main menu"
}, },
"Brightness": { "Brightness": {
"text2": [ "displayText": "Svjetlina\nekrana",
"Screen", "description": "Podešavanje svjetline OLED ekrana. Veća svjetlina može dugotrajno dovesti do pojave duhova na ekranu."
"brightness"
],
"desc": "Adjust the OLED screen brightness"
}, },
"ColourInversion": { "ColourInversion": {
"text2": [ "displayText": "Inverzija\nekrana",
"Invert", "description": "Inverzan prikaz slike na ekranu"
"screen"
],
"desc": "Invert the OLED screen colors"
}, },
"LOGOTime": { "LOGOTime": {
"text2": [ "displayText": "Trajanje\nboot logotipa",
"Boot logo", "description": "Trajanje prikaza boot logotipa (s=seconds)"
"duration"
],
"desc": "Set boot logo duration (s=seconds)"
}, },
"AdvancedIdle": { "AdvancedIdle": {
"text2": [ "displayText": "Detalji\npri čekanju",
"Detalji", "description": "Prikazivanje detaljnih informacija tijekom čekanja"
"pri čekanju"
],
"desc": "Prikazivanje detaljnih informacija tijekom čekanja."
}, },
"AdvancedSoldering": { "AdvancedSoldering": {
"text2": [ "displayText": "Detalji\npri lemljenju",
"Detalji", "description": "Prikazivanje detaljnih informacija tijekom lemljenja"
"pri lemljenju" },
], "BluetoothLE": {
"desc": "Prikazivanje detaljnih informacija tijekom lemljenja." "displayText": "Bluetooth\n",
"description": "Enables BLE"
}, },
"PowerLimit": { "PowerLimit": {
"text2": [ "displayText": "Ograničenje\nsnage",
"Power", "description": "Najveća snaga koju lemilica smije vući iz napajanja (W=watt)"
"limit"
],
"desc": "Maximum power the iron can use (W=watt)"
}, },
"CalibrateCJC": { "CalibrateCJC": {
"text2": [ "displayText": "Kalibracija kod\nsljed. starta",
"Calibrate CJC", "description": "Kod sljedećeg starta izvršit će se kalibracija (nije potrebno ako je pogreška manja od 5°C)"
"at next boot"
],
"desc": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
}, },
"VoltageCalibration": { "VoltageCalibration": {
"text2": [ "displayText": "Kalibracija\nnapajanja",
"Kalibracija", "description": "Kalibracija ulaznog napona napajanja (Podešavanje tipkama, dugački pritisak za kraj)"
"napona napajanja"
],
"desc": "Kalibracija ulaznog napona. Podešavanje gumbima, dugački pritisak za kraj."
}, },
"PowerPulsePower": { "PowerPulsePower": {
"text2": [ "displayText": "Snaga period.\npulsa napajanja",
"Power", "description": "Intenzitet periodičkog pulsa kojega lemilica povlači kako se USB napajanje ne bi ugasilo (W=watt)"
"pulse"
],
"desc": "Intensity of power of keep-awake-pulse (W=watt)"
}, },
"PowerPulseWait": { "PowerPulseWait": {
"text2": [ "displayText": "Interval per.\npulsa nap.",
"Power pulse", "description": "Razmak periodičkih pulseva koje lemilica povlači kako se USB napajanje ne bi ugasilo (x 2.5s)"
"delay"
],
"desc": "Delay before keep-awake-pulse is triggered (x 2.5s)"
}, },
"PowerPulseDuration": { "PowerPulseDuration": {
"text2": [ "displayText": "Trajanje per.\npulsa nap.",
"Power pulse", "description": "Trajanje periodičkog pulsa kojega lemilica povlači kako se USB napajanje ne bi ugasilo (x 250ms)"
"duration"
],
"desc": "Keep-awake-pulse duration (x 250ms)"
}, },
"SettingsReset": { "SettingsReset": {
"text2": [ "displayText": "Tvorničke\npostavke",
"Tvorničke", "description": "Vraćanje svih postavki na tvorničke vrijednosti"
"postavke"
],
"desc": "Vraćanje svih postavki na tvorničke vrijednosti."
}, },
"LanguageSwitch": { "LanguageSwitch": {
"text2": [ "displayText": "Jezik:\n HR Hrvatski",
"Jezik:", "description": ""
" HR Hrvatski"
],
"desc": ""
} }
} }
} }

View File

@@ -2,44 +2,67 @@
"languageCode": "HU", "languageCode": "HU",
"languageLocalName": "Magyar", "languageLocalName": "Magyar",
"tempUnitFahrenheit": false, "tempUnitFahrenheit": false,
"messages": {
"SettingsCalibrationWarning": "Before rebooting, make sure tip & handle are at room temperature!",
"CJCCalibrating": "calibrating",
"SettingsResetWarning": "Biztos visszaállítja a beállításokat alapértékekre?",
"UVLOWarningString": "DC TÚL KEVÉS",
"UndervoltageString": "Alulfeszültség",
"InputVoltageString": "Bemenet V: ",
"SleepingSimpleString": "Zzzz",
"SleepingAdvancedString": "Alvás...",
"SleepingTipAdvancedString": "Hegy:",
"OffString": "Ki",
"DeviceFailedValidationWarning": "Your device is most likely a counterfeit!"
},
"messagesWarn": { "messagesWarn": {
"CJCCalibrationDone": [ "CJCCalibrationDone": {
"Calibration", "message": "Kalibráció\nkész!"
"done!" },
], "ResetOKMessage": {
"ResetOKMessage": "Törlés OK", "message": "Törlés OK"
"SettingsResetMessage": [ },
"Beállítások", "SettingsResetMessage": {
"visszaállítva!" "message": "Beállítások\nvisszaállítva!"
], },
"NoAccelerometerMessage": [ "NoAccelerometerMessage": {
"Nincs", "message": "Nincs\ngyorsulásmérő!"
"gyorsulásmérő!" },
], "NoPowerDeliveryMessage": {
"NoPowerDeliveryMessage": [ "message": "Nincs\nUSB-PD IC!"
"Nincs", },
"USB-PD IC!" "LockingKeysString": {
], "message": "LEZÁRVA"
"LockingKeysString": "LEZÁRVA", },
"UnlockingKeysString": "FELOLDVA", "UnlockingKeysString": {
"WarningKeysLockedString": "!LEZÁRVA!", "message": "FELOLDVA"
"WarningThermalRunaway": [ },
"Kontrollálatlan", "WarningKeysLockedString": {
"hőmérséklet!" "message": "!LEZÁRVA!"
] },
"WarningThermalRunaway": {
"message": "Kontrollálatlan\nhőmérséklet!"
},
"SettingsCalibrationWarning": {
"message": "Újraindítás előtt a hegy és az eszköz legyen szobahőmérsékletű!"
},
"CJCCalibrating": {
"message": "Kalibrálás\n"
},
"SettingsResetWarning": {
"message": "Biztos visszaállítja a beállításokat alapértékekre?"
},
"UVLOWarningString": {
"message": "DC túl alacsony"
},
"UndervoltageString": {
"message": "Alulfeszültség\n"
},
"InputVoltageString": {
"message": "Bemenet V: \n"
},
"SleepingSimpleString": {
"message": "Zzzz"
},
"SleepingAdvancedString": {
"message": "Alvás...\n"
},
"SleepingTipAdvancedString": {
"message": "Hegy: \n"
},
"OffString": {
"message": "Ki"
},
"DeviceFailedValidationWarning": {
"message": "Az eszköz valószínűleg nem eredeti!"
}
}, },
"characters": { "characters": {
"SettingRightChar": "J", "SettingRightChar": "J",
@@ -53,289 +76,176 @@
"SettingStartSolderingChar": "F", "SettingStartSolderingChar": "F",
"SettingStartSleepChar": "A", "SettingStartSleepChar": "A",
"SettingStartSleepOffChar": "Sz", "SettingStartSleepOffChar": "Sz",
"SettingSensitivityOff": "0",
"SettingSensitivityLow": "A",
"SettingSensitivityMedium": "K",
"SettingSensitivityHigh": "M",
"SettingLockDisableChar": "K", "SettingLockDisableChar": "K",
"SettingLockBoostChar": "B", "SettingLockBoostChar": "B",
"SettingLockFullChar": "T" "SettingLockFullChar": "T"
}, },
"menuGroups": { "menuGroups": {
"PowerMenu": { "PowerMenu": {
"text2": [ "displayText": "Táp\nbeállítások",
"Táp", "description": ""
"beállítások"
],
"desc": ""
}, },
"SolderingMenu": { "SolderingMenu": {
"text2": [ "displayText": "Forrasztási\nbeállítások",
"Forrasztási", "description": ""
"beállítások"
],
"desc": ""
}, },
"PowerSavingMenu": { "PowerSavingMenu": {
"text2": [ "displayText": "Alvási\nmódok",
"Alvási", "description": ""
"módok"
],
"desc": ""
}, },
"UIMenu": { "UIMenu": {
"text2": [ "displayText": "Felhasználói\nfelület",
"Felhasználói", "description": ""
"felület"
],
"desc": ""
}, },
"AdvancedMenu": { "AdvancedMenu": {
"text2": [ "displayText": "Haladó\nbeállítások",
"Haladó", "description": ""
"beállítások"
],
"desc": ""
} }
}, },
"menuOptions": { "menuOptions": {
"DCInCutoff": { "DCInCutoff": {
"text2": [ "displayText": "Áram\nforrás",
"Áram", "description": "Kikapcsolási feszültség beállítása (DC:10V | S:3.3V/LiPo cella | ki)"
"forrás"
],
"desc": "Kikapcsolási feszültség beállítása (DC:10V | S:3.3V/LiPo cella | ki)"
}, },
"MinVolCell": { "MinVolCell": {
"text2": [ "displayText": "Minimum\nfeszültség",
"Minimum", "description": "Minimális engedélyezett cellafeszültség (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)"
"feszültség"
],
"desc": "Minimális engedélyezett cellafeszültség (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)"
}, },
"QCMaxVoltage": { "QCMaxVoltage": {
"text2": [ "displayText": "Max. USB\nfeszültség",
"Max. USB", "description": "Maximális USB feszültség (QuickCharge)"
"feszültség"
],
"desc": "Maximális USB feszültség (QuickCharge)"
}, },
"PDNegTimeout": { "PDNegTimeout": {
"text2": [ "displayText": "PD\nidőtúllépés",
"PD", "description": "PD egyeztetés időkerete (kompatibilitás QC töltőkkel) (x 100ms)"
"időtúllépés" },
], "PDVpdo": {
"desc": "PD egyeztetés időkerete (kompatibilitás QC töltőkkel) (x 100ms)" "displayText": "PD\nVPDO",
"description": "Enables PPS & EPR modes"
}, },
"BoostTemperature": { "BoostTemperature": {
"text2": [ "displayText": "Boost\nhőmérséklet",
"Boost", "description": "Hőmérséklet \"boost\" módban"
"hőmérséklet"
],
"desc": "Hőmérséklet \"boost\" módban"
}, },
"AutoStart": { "AutoStart": {
"text2": [ "displayText": "Automatikus\nindítás",
"Automatikus", "description": "Bekapcsolás után automatikusan lépjen forrasztás módba (K=ki | F=forrasztás | A=alvó mód | Sz=szobahőmérséklet)"
"indítás"
],
"desc": "Bekapcsolás után automatikusan lépjen forrasztás módba (K=ki | F=forrasztás | A=alvó mód | Sz=szobahőmérséklet)"
}, },
"TempChangeShortStep": { "TempChangeShortStep": {
"text2": [ "displayText": "Hőm. állítás\nrövid",
"Hőm. állítás", "description": "Hőmérséklet állítás rövid gombnyomásra (C | F)"
"rövid"
],
"desc": "Hőmérséklet állítás rövid gombnyomásra (C | F)"
}, },
"TempChangeLongStep": { "TempChangeLongStep": {
"text2": [ "displayText": "Hőm. állítás\nhosszú",
"Hőm. állítás", "description": "Hőmérséklet állítás hosszú gombnyomásra (C | F)"
"hosszú"
],
"desc": "Hőmérséklet állítás hosszú gombnyomásra (C | F)"
}, },
"LockingMode": { "LockingMode": {
"text2": [ "displayText": "Lezárás\nengedélyezés",
"Lezárá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)"
"engedélyezés"
],
"desc": "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)"
}, },
"MotionSensitivity": { "MotionSensitivity": {
"text2": [ "displayText": "Mozgás\nérzékenység",
"Mozgás", "description": "Mozgás érzékenység beállítása (0=kikapcsolva | 1=legkevésbé érzékeny | ... | 9=legérzékenyebb)"
"érzékenység"
],
"desc": "Mozgás érzékenység beállítása (0=kikapcsolva | 1=legkevésbé érzékeny | ... | 9=legérzékenyebb)"
}, },
"SleepTemperature": { "SleepTemperature": {
"text2": [ "displayText": "Alvási\nhőmérséklet",
"Alvási", "description": "Hőmérséklet alvó módban (C | F)"
"hőmérséklet"
],
"desc": "Hőmérséklet alvó módban (C | F)"
}, },
"SleepTimeout": { "SleepTimeout": {
"text2": [ "displayText": "Alvás\nidőzítő",
"Alvás", "description": "Alvási időzítő (perc | másodperc)"
"időzítő"
],
"desc": "Alvási időzítő (perc | másodperc)"
}, },
"ShutdownTimeout": { "ShutdownTimeout": {
"text2": [ "displayText": "Kikapcsolás\nidőzítő",
"Kikapcsolás", "description": "Kikapcsolási időzítő (perc)"
"időzítő"
],
"desc": "Kikapcsolási időzítő (perc)"
}, },
"HallEffSensitivity": { "HallEffSensitivity": {
"text2": [ "displayText": "Alvásérzékelő\nérzékenység",
"Alvásérzékelő", "description": "Alvásérzékelő gyorsulásmérő érzékenysége (0=kikapcsolva | 1=legkevésbé érzékeny | ... | 9=legérzékenyebb)"
"érzékenység"
],
"desc": "Alvásérzékelő gyorsulásmérő érzékenysége (0=kikapcsolva | 1=legkevésbé érzékeny | ... | 9=legérzékenyebb)"
}, },
"TemperatureUnit": { "TemperatureUnit": {
"text2": [ "displayText": "Hőmérséklet\nmértékegysége",
"Hőmérséklet", "description": "Hőmérséklet mértékegysége (C=Celsius | F=Fahrenheit)"
"mértékegysége"
],
"desc": "Hőmérséklet mértékegysége (C=Celsius | F=Fahrenheit)"
}, },
"DisplayRotation": { "DisplayRotation": {
"text2": [ "displayText": "Kijelző\ntájolása",
"Kijelző", "description": "Kijelző tájolása (J=jobbkezes | B=balkezes | A=automatikus)"
"tájolása"
],
"desc": "Kijelző tájolása (J=jobbkezes | B=balkezes | A=automatikus)"
}, },
"CooldownBlink": { "CooldownBlink": {
"text2": [ "displayText": "Villogás\nhűléskor",
"Villogás", "description": "Villogjon a hőmérséklet kijelzése hűlés közben, amíg a forrasztó hegy forró"
"hűléskor"
],
"desc": "Villogjon a hőmérséklet kijelzése hűlés közben, amíg a forrasztó hegy forró"
}, },
"ScrollingSpeed": { "ScrollingSpeed": {
"text2": [ "displayText": "Görgetés\nsebessége",
"Görgetés", "description": "Szöveggörgetés sebessége"
"sebessége"
],
"desc": "Szöveggörgetés sebessége"
}, },
"ReverseButtonTempChange": { "ReverseButtonTempChange": {
"text2": [ "displayText": "+/- gomb\nmegfordítása",
"+/- gomb", "description": "Forrasztó hegy hőmérsékletállító gombok felcserélése"
"megfordítása"
],
"desc": "Forrasztó hegy hőmérsékletállító gombok felcserélése"
}, },
"AnimSpeed": { "AnimSpeed": {
"text2": [ "displayText": "Animáció\nsebessége",
"Animáció", "description": "Menüikonok animációjának sebessége (0=ki | L=lassú | K=közepes | Gy=gyors)"
"sebessége"
],
"desc": "Menüikonok animációjának sebessége (0=ki | L=lassú | K=közepes | Gy=gyors)"
}, },
"AnimLoop": { "AnimLoop": {
"text2": [ "displayText": "Folytonos\nanimáció",
"Folytonos", "description": "Főmenü ikonjainak folytonos animációja"
"animáció"
],
"desc": "Főmenü ikonjainak folytonos animációja"
}, },
"Brightness": { "Brightness": {
"text2": [ "displayText": "Képernyő\nkontraszt",
"Képernyő", "description": "Képernyő kontrasztjának állítása"
"kontraszt"
],
"desc": "Képernyő kontrasztjának állítása"
}, },
"ColourInversion": { "ColourInversion": {
"text2": [ "displayText": "Képernyő\ninvertálás",
"Képernyő", "description": "Képernyő színeinek invertálása"
"invertálás"
],
"desc": "Képernyő színeinek invertálása"
}, },
"LOGOTime": { "LOGOTime": {
"text2": [ "displayText": "Boot logo\nmegjelenítés",
"Boot logo", "description": "Boot logo megjelenítési idejének beállítása (s=seconds)"
"duration"
],
"desc": "Set boot logo duration (s=seconds)"
}, },
"AdvancedIdle": { "AdvancedIdle": {
"text2": [ "displayText": "Részletes\nkészenlét",
"Részletes", "description": "Részletes információk megjelenítése kisebb betűméretben a készenléti képernyőn"
"készenlét"
],
"desc": "Részletes információk megjelenítése kisebb betűméretben a készenléti képernyőn"
}, },
"AdvancedSoldering": { "AdvancedSoldering": {
"text2": [ "displayText": "Részletes\nforrasztás infó",
"Részletes", "description": "Részletes információk megjelenítése forrasztás közben"
"forrasztás infó" },
], "BluetoothLE": {
"desc": "Részletes információk megjelenítése forrasztás közben" "displayText": "Bluetooth\n",
"description": "Enables BLE"
}, },
"PowerLimit": { "PowerLimit": {
"text2": [ "displayText": "Teljesítmény\nmaximum",
"Teljesítmény", "description": "Maximális felvett teljesitmény beállitása"
"maximum"
],
"desc": "Maximális felvett teljesitmény beállitása"
}, },
"CalibrateCJC": { "CalibrateCJC": {
"text2": [ "displayText": "Calibrate CJC\nköv. indításnál",
"Calibrate CJC", "description": "Következő indításnál a hegy Cold Junction Compensation kalibrálása (nem szükséges ha Delta T kisebb mint 5°C)"
"at next boot"
],
"desc": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
}, },
"VoltageCalibration": { "VoltageCalibration": {
"text2": [ "displayText": "Bemeneti fesz.\nkalibrálása?",
"Bemeneti fesz.", "description": "Bemeneti feszültség kalibrálása (hosszan nyomva kilép)"
"kalibrálása?"
],
"desc": "Bemeneti feszültség kalibrálása (hosszan nyomva kilép)"
}, },
"PowerPulsePower": { "PowerPulsePower": {
"text2": [ "displayText": "Ébr. pulzus\nnagysága",
"Ébr. pulzus", "description": "Powerbankot ébrentartó áramfelvételi pulzusok nagysága (W)"
"nagysága"
],
"desc": "Powerbankot ébrentartó áramfelvételi pulzusok nagysága (W)"
}, },
"PowerPulseWait": { "PowerPulseWait": {
"text2": [ "displayText": "Ébr. pulzus\nidőköze",
"Ébr. pulzus", "description": "Powerbankot ébrentartó áramfelvételi pulzusok időköze (x 2.5s)"
"időköze"
],
"desc": "Powerbankot ébrentartó áramfelvételi pulzusok időköze (x 2.5s)"
}, },
"PowerPulseDuration": { "PowerPulseDuration": {
"text2": [ "displayText": "Ébr. pulzus\nidőtartama",
"Ébr. pulzus", "description": "Powerbankot ébrentartó áramfelvételi pulzusok időtartama (x 250ms)"
"időtartama"
],
"desc": "Powerbankot ébrentartó áramfelvételi pulzusok időtartama (x 250ms)"
}, },
"SettingsReset": { "SettingsReset": {
"text2": [ "displayText": "Gyári\nbeállítások?",
"Gyári", "description": "Beállítások alaphelyzetbe állítása"
"beállítások?"
],
"desc": "Beállítások alaphelyzetbe állítása"
}, },
"LanguageSwitch": { "LanguageSwitch": {
"text2": [ "displayText": "Nyelv:\n HU Magyar",
"Nyelv:", "description": ""
" HU Magyar"
],
"desc": ""
} }
} }
} }

View File

@@ -2,44 +2,67 @@
"languageCode": "IT", "languageCode": "IT",
"languageLocalName": "Italiano", "languageLocalName": "Italiano",
"tempUnitFahrenheit": false, "tempUnitFahrenheit": false,
"messages": {
"SettingsCalibrationWarning": "Prima di riavvire assicurati che la punta e l'impugnatura siano a temperatura ambiente!",
"CJCCalibrating": "Calibrazione in corso",
"SettingsResetWarning": "Ripristinare le impostazioni iniziali?",
"UVLOWarningString": "DC BASSA",
"UndervoltageString": "DC INSUFFICIENTE",
"InputVoltageString": "V in:",
"SleepingSimpleString": "Zzz ",
"SleepingAdvancedString": "Riposo",
"SleepingTipAdvancedString": "Punta:",
"OffString": "OFF",
"DeviceFailedValidationWarning": "È probabile che il dispositivo in uso sia contraffatto!"
},
"messagesWarn": { "messagesWarn": {
"CJCCalibrationDone": [ "CJCCalibrationDone": {
"Calibrazione", "message": "Calibrazione\ncompletata!"
"completata!" },
], "ResetOKMessage": {
"ResetOKMessage": "Reset OK", "message": "Reset OK"
"SettingsResetMessage": [ },
"Impostazioni", "SettingsResetMessage": {
"ripristinate" "message": "Impostazioni\nripristinate"
], },
"NoAccelerometerMessage": [ "NoAccelerometerMessage": {
"Accelerometro", "message": "Accelerometro\nnon rilevato"
"non rilevato" },
], "NoPowerDeliveryMessage": {
"NoPowerDeliveryMessage": [ "message": "USB PD\nnon rilevato"
"USB PD", },
"non rilevato" "LockingKeysString": {
], "message": "Blocc."
"LockingKeysString": "Blocc.", },
"UnlockingKeysString": "Sblocc.", "UnlockingKeysString": {
"WarningKeysLockedString": "BLOCCATO", "message": "Sblocc."
"WarningThermalRunaway": [ },
"Temperatura", "WarningKeysLockedString": {
"fuori controllo" "message": "BLOCCATO"
] },
"WarningThermalRunaway": {
"message": "Temperatura\nfuori controllo"
},
"SettingsCalibrationWarning": {
"message": "Prima di riavviare assicurati che la punta e l'impugnatura siano a temperatura ambiente!"
},
"CJCCalibrating": {
"message": "Calibrazione in corso\n"
},
"SettingsResetWarning": {
"message": "Ripristinare le impostazioni predefinite?"
},
"UVLOWarningString": {
"message": "DC BASSA"
},
"UndervoltageString": {
"message": "DC INSUFFICIENTE\n"
},
"InputVoltageString": {
"message": "V in: \n"
},
"SleepingSimpleString": {
"message": "Zzz "
},
"SleepingAdvancedString": {
"message": "Riposo\n"
},
"SleepingTipAdvancedString": {
"message": "Punta: \n"
},
"OffString": {
"message": "OFF"
},
"DeviceFailedValidationWarning": {
"message": "È probabile che questo dispositivo sia contraffatto!"
}
}, },
"characters": { "characters": {
"SettingRightChar": "D", "SettingRightChar": "D",
@@ -53,289 +76,176 @@
"SettingStartSolderingChar": "S", "SettingStartSolderingChar": "S",
"SettingStartSleepChar": "R", "SettingStartSleepChar": "R",
"SettingStartSleepOffChar": "A", "SettingStartSleepOffChar": "A",
"SettingSensitivityOff": "O",
"SettingSensitivityLow": "B",
"SettingSensitivityMedium": "M",
"SettingSensitivityHigh": "A",
"SettingLockDisableChar": "D", "SettingLockDisableChar": "D",
"SettingLockBoostChar": "T", "SettingLockBoostChar": "T",
"SettingLockFullChar": "C" "SettingLockFullChar": "C"
}, },
"menuGroups": { "menuGroups": {
"PowerMenu": { "PowerMenu": {
"text2": [ "displayText": "Opzioni\nalimentaz",
"Opzioni", "description": ""
"alimentaz"
],
"desc": ""
}, },
"SolderingMenu": { "SolderingMenu": {
"text2": [ "displayText": "Opzioni\nsaldatura",
"Opzioni", "description": ""
"saldatura"
],
"desc": ""
}, },
"PowerSavingMenu": { "PowerSavingMenu": {
"text2": [ "displayText": "Risparmio\nenergetico",
"Risparmio", "description": ""
"energetico"
],
"desc": ""
}, },
"UIMenu": { "UIMenu": {
"text2": [ "displayText": "Interfaccia\nutente",
"Interfaccia", "description": ""
"utente"
],
"desc": ""
}, },
"AdvancedMenu": { "AdvancedMenu": {
"text2": [ "displayText": "Opzioni\navanzate",
"Opzioni", "description": ""
"avanzate"
],
"desc": ""
} }
}, },
"menuOptions": { "menuOptions": {
"DCInCutoff": { "DCInCutoff": {
"text2": [ "displayText": "Sorgente\nalimentaz",
"Sorgente", "description": "Imposta una tensione minima di alimentazione attraverso la selezione di una sorgente [DC: 10 V; 3S/4S/5S/6S: 3,3 V per cella]"
"alimentaz"
],
"desc": "Imposta una tensione minima di alimentazione attraverso la selezione di una sorgente [DC: 10 V; 3S/4S/5S/6S: 3,3 V per cella]"
}, },
"MinVolCell": { "MinVolCell": {
"text2": [ "displayText": "Tensione\nmin celle",
"Tensione", "description": "Modifica la tensione di minima carica delle celle di una batteria Li-Po [3S: 3,0-3,7 V; 4S/5S/6S: 2,4-3,7 V]"
"min celle"
],
"desc": "Modifica la tensione di minima carica delle celle di una batteria Li-Po [3S: 3,0-3,7 V; 4S/5S/6S: 2,4-3,7 V]"
}, },
"QCMaxVoltage": { "QCMaxVoltage": {
"text2": [ "displayText": "Tensione\nQC",
"Voltaggio", "description": "Imposta la massima tensione negoziabile con un alimentatore Quick Charge [volt]"
"QC"
],
"desc": "Imposta il massimo voltaggio negoziabile con un alimentatore Quick Charge [volt]"
}, },
"PDNegTimeout": { "PDNegTimeout": {
"text2": [ "displayText": "Abilitazione\nUSB PD",
"Abilitazione", "description": "Regola il massimo tempo utile per la negoziazione del protocollo USB Power Delivery con alimentatori compatibili [0: disattiva; multipli di 100 ms]"
"USB PD" },
], "PDVpdo": {
"desc": "Regola il massimo tempo utile per la negoziazione del protocollo USB Power Delivery con alimentatori compatibili [0: disattiva; multipli di 100 ms]" "displayText": "PD\nVPDO",
"description": "Abilita le modalità Power Delivery PPS ed EPR"
}, },
"BoostTemperature": { "BoostTemperature": {
"text2": [ "displayText": "Temp\nTurbo",
"Temp", "description": "Imposta la temperatura della funzione Turbo [°C/°F]"
"Turbo"
],
"desc": "Imposta la temperatura della funzione Turbo [°C/°F]"
}, },
"AutoStart": { "AutoStart": {
"text2": [ "displayText": "Avvio\nautomatico",
"Avvio", "description": "Attiva automaticamente il saldatore quando viene alimentato [D: disattiva; S: saldatura; R: riposo; A: temperatura ambiente]"
"automatico"
],
"desc": "Attiva automaticamente il saldatore quando viene alimentato [D: disattiva; S: saldatura; R: riposo; A: temperatura ambiente]"
}, },
"TempChangeShortStep": { "TempChangeShortStep": {
"text2": [ "displayText": "Temp passo\nbreve",
"Temp passo", "description": "Imposta il passo dei valori di temperatura per una breve pressione dei tasti"
"breve"
],
"desc": "Imposta il passo dei valori di temperatura per una breve pressione dei tasti"
}, },
"TempChangeLongStep": { "TempChangeLongStep": {
"text2": [ "displayText": "Temp passo\nlungo",
"Temp passo", "description": "Imposta il passo dei valori di temperatura per una lunga pressione dei tasti"
"lungo"
],
"desc": "Imposta il passo dei valori di temperatura per una lunga pressione dei tasti"
}, },
"LockingMode": { "LockingMode": {
"text2": [ "displayText": "Blocco\ntasti",
"Blocco", "description": "Blocca i tasti durante la modalità Saldatura; tieni premuto entrambi per bloccare o sbloccare [D: disattiva; T: consenti Turbo; C: blocco completo]"
"tasti"
],
"desc": "Blocca i tasti durante la modalità Saldatura; tieni premuto entrambi per bloccare o sbloccare [D: disattiva; T: consenti Turbo; C: blocco completo]"
}, },
"MotionSensitivity": { "MotionSensitivity": {
"text2": [ "displayText": "Sensibilità\nal movimento",
"Sensibilità", "description": "Imposta la sensibilità al movimento per uscire dalla modalità Riposo [0: nessuna; 1: minima; 9: massima]"
"al movimento"
],
"desc": "Imposta la sensibilità al movimento per uscire dalla modalità Riposo [0: nessuna; 1: minima; 9: massima]"
}, },
"SleepTemperature": { "SleepTemperature": {
"text2": [ "displayText": "Temp\nriposo",
"Temp", "description": "Imposta la temperatura da mantenere in modalità Riposo [°C/°F]"
"riposo"
],
"desc": "Imposta la temperatura da mantenere in modalità Riposo [°C/°F]"
}, },
"SleepTimeout": { "SleepTimeout": {
"text2": [ "displayText": "Timer\nriposo",
"Timer", "description": "Imposta il timer per entrare in modalità Riposo [secondi/minuti]"
"riposo"
],
"desc": "Imposta il timer per entrare in modalità Riposo [secondi/minuti]"
}, },
"ShutdownTimeout": { "ShutdownTimeout": {
"text2": [ "displayText": "Timer\nspegnimento",
"Timer", "description": "Imposta il timer per lo spegnimento [minuti]"
"spegnimento"
],
"desc": "Imposta il timer per lo spegnimento [minuti]"
}, },
"HallEffSensitivity": { "HallEffSensitivity": {
"text2": [ "displayText": "Sensore\nHall",
"Sensore", "description": "Regola la sensibilità del sensore ad effetto Hall per entrare in modalità Riposo [0: nessuna; 1: minima; 9: massima]"
"Hall"
],
"desc": "Regola la sensibilità del sensore ad effetto Hall per entrare in modalità Riposo [0: nessuna; 1: minima; 9: massima]"
}, },
"TemperatureUnit": { "TemperatureUnit": {
"text2": [ "displayText": "Unità di\ntemperatura",
"Unità di", "description": "Scegli l'unità di misura per la temperatura [C: grado Celsius; F: grado Farenheit]"
"temperatura"
],
"desc": "Scegli l'unità di misura per la temperatura [C: grado Celsius; F: grado Farenheit]"
}, },
"DisplayRotation": { "DisplayRotation": {
"text2": [ "displayText": "Orientamento\nschermo",
"Orientamento", "description": "Imposta l'orientamento dello schermo [D: mano destra; S: mano sinistra; A: automatico]"
"schermo"
],
"desc": "Imposta l'orientamento dello schermo [D: mano destra; S: mano sinistra; A: automatico]"
}, },
"CooldownBlink": { "CooldownBlink": {
"text2": [ "displayText": "Avviso\npunta calda",
"Avviso", "description": "Evidenzia il valore di temperatura durante il raffreddamento se la punta è ancora calda"
"punta calda"
],
"desc": "Evidenzia il valore di temperatura durante il raffreddamento se la punta è ancora calda"
}, },
"ScrollingSpeed": { "ScrollingSpeed": {
"text2": [ "displayText": "Velocità\ntesto",
"Velocità", "description": "Imposta la velocità di scorrimento del testo [L: lenta; V: veloce]"
"testo"
],
"desc": "Imposta la velocità di scorrimento del testo [L: lenta; V: veloce]"
}, },
"ReverseButtonTempChange": { "ReverseButtonTempChange": {
"text2": [ "displayText": "Inversione\ntasti",
"Inversione", "description": "Inverti i tasti per aumentare o diminuire la temperatura della punta"
"tasti"
],
"desc": "Inverti i tasti per aumentare o diminuire la temperatura della punta"
}, },
"AnimSpeed": { "AnimSpeed": {
"text2": [ "displayText": "Velocità\nanimazioni",
"Velocità", "description": "Imposta la velocità di riproduzione delle animazioni del menù principale [O: OFF; L: lenta; M: media; V: veloce]"
"animazioni"
],
"desc": "Imposta la velocità di riproduzione delle animazioni del menù principale [O: OFF; L: lenta; M: media; V: veloce]"
}, },
"AnimLoop": { "AnimLoop": {
"text2": [ "displayText": "Ciclo\nanimazioni",
"Ciclo", "description": "Abilita la riproduzione ciclica delle animazioni del menù principale"
"animazioni"
],
"desc": "Abilita la riproduzione ciclica delle animazioni del menù principale"
}, },
"Brightness": { "Brightness": {
"text2": [ "displayText": "Luminosità\nschermo",
"Luminosità", "description": "Regola la luminosità dello schermo [1: minimo; 10: massimo]"
"schermo"
],
"desc": "Regola la luminosità dello schermo [1: minimo; 10: massimo]"
}, },
"ColourInversion": { "ColourInversion": {
"text2": [ "displayText": "Inverti\ncolori",
"Inverti", "description": "Inverti i colori dello schermo"
"colori"
],
"desc": "Inverti i colori dello schermo"
}, },
"LOGOTime": { "LOGOTime": {
"text2": [ "displayText": "Durata\nlogo",
"Durata", "description": "Imposta la permanenza sullo schermo del logo iniziale [secondi]"
"logo"
],
"desc": "Imposta la permanenza sullo schermo del logo iniziale [secondi]"
}, },
"AdvancedIdle": { "AdvancedIdle": {
"text2": [ "displayText": "Interfaccia\ntestuale",
"Interfaccia", "description": "Mostra informazioni dettagliate all'interno della schermata principale"
"testuale"
],
"desc": "Mostra informazioni dettagliate all'interno della schermata principale"
}, },
"AdvancedSoldering": { "AdvancedSoldering": {
"text2": [ "displayText": "Dettagli\nsaldatura",
"Dettagli", "description": "Mostra informazioni dettagliate durante la modalità Saldatura"
"saldatura" },
], "BluetoothLE": {
"desc": "Mostra informazioni dettagliate durante la modalità Saldatura" "displayText": "Bluetooth\n",
"description": "Abilita BLE"
}, },
"PowerLimit": { "PowerLimit": {
"text2": [ "displayText": "Limite\npotenza",
"Limite", "description": "Imposta il valore di potenza massima erogabile al saldatore [watt]"
"potenza"
],
"desc": "Imposta il valore di potenza massima erogabile al saldatore [watt]"
}, },
"CalibrateCJC": { "CalibrateCJC": {
"text2": [ "displayText": "Calibra T\nall'avvio",
"Calibra T", "description": "Calibra le rilevazioni di temperatura al prossimo riavvio (non necessario se il Delta T<5 °C)"
"all'avvio"
],
"desc": "Calibra le rilevazioni di temperatura al prossimo riavvio (non necessario se il Delta T<5 °C)"
}, },
"VoltageCalibration": { "VoltageCalibration": {
"text2": [ "displayText": "Calibrazione\ntensione",
"Calibrazione", "description": "Calibra la tensione in ingresso; regola con entrambi i tasti, tieni premuto il tasto superiore per uscire"
"tensione"
],
"desc": "Calibra la tensione in ingresso; regola con entrambi i tasti, tieni premuto il tasto superiore per uscire"
}, },
"PowerPulsePower": { "PowerPulsePower": {
"text2": [ "displayText": "Potenza\nimpulso",
"Potenza", "description": "Regola la potenza di un \"impulso sveglia\" atto a prevenire lo standby eventuale dell'alimentatore [watt]"
"impulso"
],
"desc": "Regola la potenza di un \"impulso sveglia\" atto a prevenire lo standby eventuale dell'alimentatore [watt]"
}, },
"PowerPulseWait": { "PowerPulseWait": {
"text2": [ "displayText": "Distanza\nimpulsi",
"Distanza", "description": "Imposta il tempo che deve intercorrere tra due \"impulsi sveglia\" [multipli di 2,5 s]"
"impulsi"
],
"desc": "Imposta il tempo che deve intercorrere tra due \"impulsi sveglia\" [multipli di 2,5 s]"
}, },
"PowerPulseDuration": { "PowerPulseDuration": {
"text2": [ "displayText": "Durata\nimpulso",
"Durata", "description": "Regola la durata dell'«impulso sveglia» [multipli di 250 ms]"
"impulso"
],
"desc": "Regola la durata dell'«impulso sveglia» [multipli di 250 ms]"
}, },
"SettingsReset": { "SettingsReset": {
"text2": [ "displayText": "Ripristino\nimpostazioni",
"Ripristino", "description": "Ripristina le impostazioni predefinite"
"impostazioni"
],
"desc": "Ripristina le impostazioni allo stato iniziale"
}, },
"LanguageSwitch": { "LanguageSwitch": {
"text2": [ "displayText": "Lingua:\n IT Italiano",
"Lingua:", "description": ""
" IT Italiano"
],
"desc": ""
} }
} }
} }

View File

@@ -2,29 +2,67 @@
"languageCode": "JA_JP", "languageCode": "JA_JP",
"languageLocalName": "日本語", "languageLocalName": "日本語",
"tempUnitFahrenheit": true, "tempUnitFahrenheit": true,
"messages": {
"SettingsCalibrationWarning": "Before rebooting, make sure tip & handle are at room temperature!",
"CJCCalibrating": "calibrating",
"SettingsResetWarning": "設定をリセットしますか?",
"UVLOWarningString": "電圧が低すぎます",
"UndervoltageString": "Undervoltage",
"InputVoltageString": "Input V: ",
"SleepingSimpleString": "Zzzz",
"SleepingAdvancedString": "Sleeping...",
"SleepingTipAdvancedString": "Tip:",
"OffString": "オフ",
"DeviceFailedValidationWarning": "このデバイスはおそらく偽造品です"
},
"messagesWarn": { "messagesWarn": {
"CJCCalibrationDone": "Calibration done!", "CJCCalibrationDone": {
"ResetOKMessage": "リセットOK", "message": "Calibration done!"
"SettingsResetMessage": "初期化されました", },
"NoAccelerometerMessage": "加速度計未検出", "ResetOKMessage": {
"NoPowerDeliveryMessage": "PD IC未検出", "message": "リセットOK"
"LockingKeysString": "ボタンロック", },
"UnlockingKeysString": "ロックを解除", "SettingsResetMessage": {
"WarningKeysLockedString": "!入力ロック中!", "message": "初期化されました"
"WarningThermalRunaway": "過熱" },
"NoAccelerometerMessage": {
"message": "加速度計未検出"
},
"NoPowerDeliveryMessage": {
"message": "PD IC未検出"
},
"LockingKeysString": {
"message": "ボタンロック"
},
"UnlockingKeysString": {
"message": "ロックを解除"
},
"WarningKeysLockedString": {
"message": "!入力ロック中!"
},
"WarningThermalRunaway": {
"message": "過熱"
},
"SettingsCalibrationWarning": {
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
"CJCCalibrating": {
"message": "calibrating"
},
"SettingsResetWarning": {
"message": "設定をリセットしますか?"
},
"UVLOWarningString": {
"message": "電圧が低すぎます"
},
"UndervoltageString": {
"message": "Undervoltage"
},
"InputVoltageString": {
"message": "Input V: "
},
"SleepingSimpleString": {
"message": "Zzzz"
},
"SleepingAdvancedString": {
"message": "Sleeping..."
},
"SleepingTipAdvancedString": {
"message": "Tip: "
},
"OffString": {
"message": "オフ"
},
"DeviceFailedValidationWarning": {
"message": "このデバイスはおそらく偽造品です"
}
}, },
"characters": { "characters": {
"SettingRightChar": "右", "SettingRightChar": "右",
@@ -38,175 +76,176 @@
"SettingStartSolderingChar": "熱", "SettingStartSolderingChar": "熱",
"SettingStartSleepChar": "待", "SettingStartSleepChar": "待",
"SettingStartSleepOffChar": "室", "SettingStartSleepOffChar": "室",
"SettingSensitivityOff": "×",
"SettingSensitivityLow": "低",
"SettingSensitivityMedium": "中",
"SettingSensitivityHigh": "高",
"SettingLockDisableChar": "×", "SettingLockDisableChar": "×",
"SettingLockBoostChar": "ブ", "SettingLockBoostChar": "ブ",
"SettingLockFullChar": "全" "SettingLockFullChar": "全"
}, },
"menuGroups": { "menuGroups": {
"PowerMenu": { "PowerMenu": {
"text2": "電源設定", "displayText": "電源設定",
"desc": "" "description": ""
}, },
"SolderingMenu": { "SolderingMenu": {
"text2": "半田付け設定", "displayText": "半田付け設定",
"desc": "" "description": ""
}, },
"PowerSavingMenu": { "PowerSavingMenu": {
"text2": "待機設定", "displayText": "待機設定",
"desc": "" "description": ""
}, },
"UIMenu": { "UIMenu": {
"text2": "UI設定", "displayText": "UI設定",
"desc": "" "description": ""
}, },
"AdvancedMenu": { "AdvancedMenu": {
"text2": "高度な設定", "displayText": "高度な設定",
"desc": "" "description": ""
} }
}, },
"menuOptions": { "menuOptions": {
"DCInCutoff": { "DCInCutoff": {
"text2": "下限電圧", "displayText": "下限電圧",
"desc": "下限電圧を指定する <DC=10V | S=セルあたり3.3V、電力制限を無効化>" "description": "下限電圧を指定する <DC=10V | S=セルあたり3.3V、電力制限を無効化>"
}, },
"MinVolCell": { "MinVolCell": {
"text2": "最低電圧", "displayText": "最低電圧",
"desc": "セルあたりの最低電圧 <ボルト> <3S: 3.0V - 3.7V, 4/5/6S: 2.4V - 3.7V>" "description": "セルあたりの最低電圧 <ボルト> <3S: 3.0V - 3.7V, 4/5/6S: 2.4V - 3.7V>"
}, },
"QCMaxVoltage": { "QCMaxVoltage": {
"text2": "QC電圧", "displayText": "QC電圧",
"desc": "QC電源使用時に要求する目標電圧" "description": "QC電源使用時に要求する目標電圧"
}, },
"PDNegTimeout": { "PDNegTimeout": {
"text2": [ "displayText": "PD\ntimeout",
"PD", "description": "一部のQC電源との互換性のため、PDネゴシエーションをタイムアウトする時間 <x100msミリ秒>"
"timeout" },
], "PDVpdo": {
"desc": "一部のQC電源との互換性のため、PDネゴシエーションをタイムアウトする時間 <x100msミリ秒>" "displayText": "PD VPDO",
"description": "Enables PPS & EPR modes"
}, },
"BoostTemperature": { "BoostTemperature": {
"text2": "ブースト温度", "displayText": "ブースト温度",
"desc": "ブーストモードで使用される温度" "description": "ブーストモードで使用される温度"
}, },
"AutoStart": { "AutoStart": {
"text2": "自動加熱", "displayText": "自動加熱",
"desc": "電源投入時に自動的に加熱する <×=オフ | 熱=半田付けモード | 待=スタンバイモード | 室=室温スタンバイモード>" "description": "電源投入時に自動的に加熱する <×=オフ | 熱=半田付けモード | 待=スタンバイモード | 室=室温スタンバイモード>"
}, },
"TempChangeShortStep": { "TempChangeShortStep": {
"text2": "温度変化 短", "displayText": "温度変化 短",
"desc": "ボタンを短く押した時の温度変化値" "description": "ボタンを短く押した時の温度変化値"
}, },
"TempChangeLongStep": { "TempChangeLongStep": {
"text2": "温度変化 長", "displayText": "温度変化 長",
"desc": "ボタンを長押しした時の温度変化値" "description": "ボタンを長押しした時の温度変化値"
}, },
"LockingMode": { "LockingMode": {
"text2": "ボタンロック", "displayText": "ボタンロック",
"desc": "半田付けモード時に両方のボタンを長押しし、ボタンロックする <×=オフ | ブ=ブーストのみ許可 | 全=すべてをロック>" "description": "半田付けモード時に両方のボタンを長押しし、ボタンロックする <×=オフ | ブ=ブーストのみ許可 | 全=すべてをロック>"
}, },
"MotionSensitivity": { "MotionSensitivity": {
"text2": "動きの感度", "displayText": "動きの感度",
"desc": "0=オフ | 1=最低感度 | ... | 9=最高感度" "description": "0=オフ | 1=最低感度 | ... | 9=最高感度"
}, },
"SleepTemperature": { "SleepTemperature": {
"text2": "待機温度", "displayText": "待機温度",
"desc": "スタンバイ時のコテ先温度" "description": "スタンバイ時のコテ先温度"
}, },
"SleepTimeout": { "SleepTimeout": {
"text2": "待機遅延", "displayText": "待機遅延",
"desc": "スタンバイモードに入るまでの待機時間 <s=秒 | m=分>" "description": "スタンバイモードに入るまでの待機時間 <s=秒 | m=分>"
}, },
"ShutdownTimeout": { "ShutdownTimeout": {
"text2": "自動オフ", "displayText": "自動オフ",
"desc": "自動電源オフまでの待機時間 <m=分>" "description": "自動電源オフまでの待機時間 <m=分>"
}, },
"HallEffSensitivity": { "HallEffSensitivity": {
"text2": "磁界感度", "displayText": "磁界感度",
"desc": "スタンバイモードに入るのに使用される磁場センサーの感度 <0=オフ | 1=最低感度 | ... | 9=最高感度>" "description": "スタンバイモードに入るのに使用される磁場センサーの感度 <0=オフ | 1=最低感度 | ... | 9=最高感度>"
}, },
"TemperatureUnit": { "TemperatureUnit": {
"text2": "温度単位", "displayText": "温度単位",
"desc": "C=摂氏 | F=華氏" "description": "C=摂氏 | F=華氏"
}, },
"DisplayRotation": { "DisplayRotation": {
"text2": "画面の向き", "displayText": "画面の向き",
"desc": "右=右利き | 左=左利き | 自=自動" "description": "右=右利き | 左=左利き | 自=自動"
}, },
"CooldownBlink": { "CooldownBlink": {
"text2": "冷却中に点滅", "displayText": "冷却中に点滅",
"desc": "加熱の停止後、コテ先が熱い間は温度表示を点滅する" "description": "加熱の停止後、コテ先が熱い間は温度表示を点滅する"
}, },
"ScrollingSpeed": { "ScrollingSpeed": {
"text2": "スクロール速度", "displayText": "スクロール速度",
"desc": "テキストをスクロールする速さ <遅=遅い | 速=速い>" "description": "テキストをスクロールする速さ <遅=遅い | 速=速い>"
}, },
"ReverseButtonTempChange": { "ReverseButtonTempChange": {
"text2": "キー入れ替え", "displayText": "キー入れ替え",
"desc": "温度設定時に+ボタンと-ボタンを入れ替える" "description": "温度設定時に+ボタンと-ボタンを入れ替える"
}, },
"AnimSpeed": { "AnimSpeed": {
"text2": "動画の速度", "displayText": "動画の速度",
"desc": "メニューアイコンのアニメーションの速さ <×=再生しない | 遅=低速 | 中=中速 | 速=高速>" "description": "メニューアイコンのアニメーションの速さ <×=再生しない | 遅=低速 | 中=中速 | 速=高速>"
}, },
"AnimLoop": { "AnimLoop": {
"text2": "動画をループ", "displayText": "動画をループ",
"desc": "メニューアイコンのアニメーションをループする" "description": "メニューアイコンのアニメーションをループする"
}, },
"Brightness": { "Brightness": {
"text2": "画面輝度", "displayText": "画面輝度",
"desc": "画面の明るさ・コントラストを変更する" "description": "画面の明るさ・コントラストを変更する"
}, },
"ColourInversion": { "ColourInversion": {
"text2": "色反転", "displayText": "色反転",
"desc": "画面の色を反転する" "description": "画面の色を反転する"
}, },
"LOGOTime": { "LOGOTime": {
"text2": "起動画面", "displayText": "起動画面",
"desc": "起動画面の表示時間を設定する" "description": "起動画面の表示時間を設定する"
}, },
"AdvancedIdle": { "AdvancedIdle": {
"text2": "詳細な待受画面", "displayText": "詳細な待受画面",
"desc": "待ち受け画面に詳細情報を表示する" "description": "待ち受け画面に詳細情報を表示する"
}, },
"AdvancedSoldering": { "AdvancedSoldering": {
"text2": "詳細な作業画面", "displayText": "詳細な作業画面",
"desc": "半田付け画面に詳細情報を表示する" "description": "半田付け画面に詳細情報を表示する"
},
"BluetoothLE": {
"displayText": "Bluetooth",
"description": "Enables BLE"
}, },
"PowerLimit": { "PowerLimit": {
"text2": "電力制限", "displayText": "電力制限",
"desc": "最大電力を制限する <W=ワット>" "description": "最大電力を制限する <W=ワット>"
}, },
"CalibrateCJC": { "CalibrateCJC": {
"text2": "Calibrate CJC", "displayText": "Calibrate CJC",
"desc": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5 C)" "description": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5 C)"
}, },
"VoltageCalibration": { "VoltageCalibration": {
"text2": "電圧校正", "displayText": "電圧校正",
"desc": "入力電圧(VIN)の校正を開始する <長押しで終了>" "description": "入力電圧(VIN)の校正を開始する <長押しで終了>"
}, },
"PowerPulsePower": { "PowerPulsePower": {
"text2": "電力パルス", "displayText": "電力パルス",
"desc": "電源をオンに保つための電力パルス <ワット>" "description": "電源をオンに保つための電力パルス <ワット>"
}, },
"PowerPulseWait": { "PowerPulseWait": {
"text2": "パルス間隔", "displayText": "パルス間隔",
"desc": "電源をオンに保つための電力パルスの時間間隔 <x2.5s(秒)>" "description": "電源をオンに保つための電力パルスの時間間隔 <x2.5s(秒)>"
}, },
"PowerPulseDuration": { "PowerPulseDuration": {
"text2": "パルス時間長", "displayText": "パルス時間長",
"desc": "電源をオンに保つための電力パルスの時間長 <x250msミリ秒>" "description": "電源をオンに保つための電力パルスの時間長 <x250msミリ秒>"
}, },
"SettingsReset": { "SettingsReset": {
"text2": "設定をリセット", "displayText": "設定をリセット",
"desc": "すべての設定を初期化する" "description": "すべての設定を初期化する"
}, },
"LanguageSwitch": { "LanguageSwitch": {
"text2": "言語: 日本語", "displayText": "言語: 日本語",
"desc": "" "description": ""
} }
} }
} }

View File

@@ -2,44 +2,67 @@
"languageCode": "LT", "languageCode": "LT",
"languageLocalName": "Lietuvių", "languageLocalName": "Lietuvių",
"tempUnitFahrenheit": false, "tempUnitFahrenheit": false,
"messages": {
"SettingsCalibrationWarning": "Before rebooting, make sure tip & handle are at room temperature!",
"CJCCalibrating": "calibrating",
"SettingsResetWarning": "Ar norite atstatyti nustatymus į numatytas reikšmes?",
"UVLOWarningString": "MAŽ VOLT",
"UndervoltageString": "Žema įtampa",
"InputVoltageString": "Įvestis V: ",
"SleepingSimpleString": "Zzzz",
"SleepingAdvancedString": "Miegu...",
"SleepingTipAdvancedString": "Antg:",
"OffString": "Išj",
"DeviceFailedValidationWarning": "Your device is most likely a counterfeit!"
},
"messagesWarn": { "messagesWarn": {
"CJCCalibrationDone": [ "CJCCalibrationDone": {
"Calibration", "message": "Calibration\ndone!"
"done!" },
], "ResetOKMessage": {
"ResetOKMessage": "Atstatyta", "message": "Atstatyta"
"SettingsResetMessage": [ },
"Nust. atstatyti!", "SettingsResetMessage": {
"" "message": "Nust. \natstatyti!"
], },
"NoAccelerometerMessage": [ "NoAccelerometerMessage": {
"Nerastas", "message": "Nerastas\nakselerometras!"
"akselerometras!" },
], "NoPowerDeliveryMessage": {
"NoPowerDeliveryMessage": [ "message": "Nerastas\nUSB-PD IC!"
"Nerastas", },
"USB-PD IC!" "LockingKeysString": {
], "message": "UŽRAKIN"
"LockingKeysString": "UŽRAKIN", },
"UnlockingKeysString": "ATRAKIN", "UnlockingKeysString": {
"WarningKeysLockedString": "!UŽRAK!", "message": "ATRAKIN"
"WarningThermalRunaway": [ },
"Perkaitimo", "WarningKeysLockedString": {
"pavojus" "message": "!UŽRAK!"
] },
"WarningThermalRunaway": {
"message": "Perkaitimo\npavojus"
},
"SettingsCalibrationWarning": {
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
"CJCCalibrating": {
"message": "calibrating\n"
},
"SettingsResetWarning": {
"message": "Ar norite atstatyti nustatymus į numatytas reikšmes?"
},
"UVLOWarningString": {
"message": "MAŽ VOLT"
},
"UndervoltageString": {
"message": "Žema įtampa\n"
},
"InputVoltageString": {
"message": "Įvestis V: \n"
},
"SleepingSimpleString": {
"message": "Zzzz"
},
"SleepingAdvancedString": {
"message": "Miegu...\n"
},
"SleepingTipAdvancedString": {
"message": "Antg: \n"
},
"OffString": {
"message": "Išj"
},
"DeviceFailedValidationWarning": {
"message": "Your device is most likely a counterfeit!"
}
}, },
"characters": { "characters": {
"SettingRightChar": "D", "SettingRightChar": "D",
@@ -53,289 +76,176 @@
"SettingStartSolderingChar": "T", "SettingStartSolderingChar": "T",
"SettingStartSleepChar": "M", "SettingStartSleepChar": "M",
"SettingStartSleepOffChar": "K", "SettingStartSleepOffChar": "K",
"SettingSensitivityOff": "I",
"SettingSensitivityLow": "Ž",
"SettingSensitivityMedium": "V",
"SettingSensitivityHigh": "A",
"SettingLockDisableChar": "I", "SettingLockDisableChar": "I",
"SettingLockBoostChar": "T", "SettingLockBoostChar": "T",
"SettingLockFullChar": "V" "SettingLockFullChar": "V"
}, },
"menuGroups": { "menuGroups": {
"PowerMenu": { "PowerMenu": {
"text2": [ "displayText": "Maitinimo\nnustatymai",
"Maitinimo", "description": ""
"nustatymai"
],
"desc": ""
}, },
"SolderingMenu": { "SolderingMenu": {
"text2": [ "displayText": "Litavimo\nnustatymai",
"Litavimo", "description": ""
"nustatymai"
],
"desc": ""
}, },
"PowerSavingMenu": { "PowerSavingMenu": {
"text2": [ "displayText": "Miego\nrežimai",
"Miego", "description": ""
"režimai"
],
"desc": ""
}, },
"UIMenu": { "UIMenu": {
"text2": [ "displayText": "Naudotojo\nsąsaja",
"Naudotojo", "description": ""
"sąsaja"
],
"desc": ""
}, },
"AdvancedMenu": { "AdvancedMenu": {
"text2": [ "displayText": "Išplėsti.\nnustatymai",
"Išplėsti.", "description": ""
"nustatymai"
],
"desc": ""
} }
}, },
"menuOptions": { "menuOptions": {
"DCInCutoff": { "DCInCutoff": {
"text2": [ "displayText": "Maitinimo\nšaltinis",
"Maitinimo", "description": "Išjungimo įtampa. (DC 10V) (arba celių [S] kiekis [3.3V per celę])"
"šaltinis"
],
"desc": "Išjungimo įtampa. (DC 10V) (arba celių [S] kiekis [3.3V per celę])"
}, },
"MinVolCell": { "MinVolCell": {
"text2": [ "displayText": "Minimalus\nvoltažas",
"Minimalus", "description": "Minimalus voltažas, kuris yra leidžiamas kiekvienam baterijos elementui (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)"
"voltažas"
],
"desc": "Minimalus voltažas, kuris yra leidžiamas kiekvienam baterijos elementui (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)"
}, },
"QCMaxVoltage": { "QCMaxVoltage": {
"text2": [ "displayText": "QC mait.\nįtampa",
"QC mait.", "description": "Maksimali QC maitinimo bloko įtampa"
"įtampa"
],
"desc": "Maksimali QC maitinimo bloko įtampa"
}, },
"PDNegTimeout": { "PDNegTimeout": {
"text2": [ "displayText": "PD\nlaikas",
"PD", "description": "PD suderinimo laikas žingsniais po 100ms suderinamumui su kai kuriais QC įkrovikliais"
"laikas" },
], "PDVpdo": {
"desc": "PD suderinimo laikas žingsniais po 100ms suderinamumui su kai kuriais QC įkrovikliais" "displayText": "PD\nVPDO",
"description": "Enables PPS & EPR modes"
}, },
"BoostTemperature": { "BoostTemperature": {
"text2": [ "displayText": "Turbo\ntemperat.",
"Turbo", "description": "Temperatūra turbo režimu"
"temperat."
],
"desc": "Temperatūra turbo režimu"
}, },
"AutoStart": { "AutoStart": {
"text2": [ "displayText": "Automatinis\npaleidimas",
"Automatinis", "description": "Ar pradėti kaitininti iš karto įjungus lituoklį (N=Ne | T=Taip | M=Miegas | K=Miegoti kambario temperatūroje)"
"paleidimas"
],
"desc": "Ar pradėti kaitininti iš karto įjungus lituoklį (N=Ne | T=Taip | M=Miegas | K=Miegoti kambario temperatūroje)"
}, },
"TempChangeShortStep": { "TempChangeShortStep": {
"text2": [ "displayText": "Temp.keitim.\ntrump.spust.",
"Temp.keitim.", "description": "Temperatūros keitimo žingsnis trumpai spustėlėjus mygtuką"
"trump.spust."
],
"desc": "Temperatūros keitimo žingsnis trumpai spustėlėjus mygtuką"
}, },
"TempChangeLongStep": { "TempChangeLongStep": {
"text2": [ "displayText": "Temp.keitim.\nilgas pasp.",
"Temp.keitim.", "description": "Temperatūros keitimo žingsnis ilgai paspaudus mygtuką"
"ilgas pasp."
],
"desc": "Temperatūros keitimo žingsnis ilgai paspaudus mygtuką"
}, },
"LockingMode": { "LockingMode": {
"text2": [ "displayText": "Mygtukų\nužraktas",
"Mygtukų", "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)"
"užraktas"
],
"desc": "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)"
}, },
"MotionSensitivity": { "MotionSensitivity": {
"text2": [ "displayText": "Judesio\njautrumas",
"Judesio", "description": "Judesio jautrumas (0=Išjungta | 1=Mažiausias | ... | 9=Didžiausias)"
"jautrumas"
],
"desc": "Judesio jautrumas (0=Išjungta | 1=Mažiausias | ... | 9=Didžiausias)"
}, },
"SleepTemperature": { "SleepTemperature": {
"text2": [ "displayText": "Miego\ntemperat.",
"Miego", "description": "Antgalio temperatūra miego režimu"
"temperat."
],
"desc": "Antgalio temperatūra miego režimu"
}, },
"SleepTimeout": { "SleepTimeout": {
"text2": [ "displayText": "Miego\nlaikas",
"Miego", "description": "Užmigimo laikas (sekundės | minutės)"
"laikas"
],
"desc": "Užmigimo laikas (sekundės | minutės)"
}, },
"ShutdownTimeout": { "ShutdownTimeout": {
"text2": [ "displayText": "Išjungimo\nlaikas",
"Išjungimo", "description": "Išjungimo laikas (minutės)"
"laikas"
],
"desc": "Išjungimo laikas (minutės)"
}, },
"HallEffSensitivity": { "HallEffSensitivity": {
"text2": [ "displayText": "Holo\njutiklis",
"Holo", "description": "Holo jutiklio jautrumas nustatant miegą (0=Išjungta | 1=Mažiausias | ... | 9=Didžiausias)"
"jutiklis"
],
"desc": "Holo jutiklio jautrumas nustatant miegą (0=Išjungta | 1=Mažiausias | ... | 9=Didžiausias)"
}, },
"TemperatureUnit": { "TemperatureUnit": {
"text2": [ "displayText": "Temperatūros\nvienetai",
"Temperatūros", "description": "Temperatūros vienetai (C=Celsijus | F=Farenheitas)"
"vienetai"
],
"desc": "Temperatūros vienetai (C=Celsijus | F=Farenheitas)"
}, },
"DisplayRotation": { "DisplayRotation": {
"text2": [ "displayText": "Ekrano\norientacija",
"Ekrano", "description": "Ekrano orientacija (D=Dešiniarankiams | K=Kairiarankiams | A=Automatinė)"
"orientacija"
],
"desc": "Ekrano orientacija (D=Dešiniarankiams | K=Kairiarankiams | A=Automatinė)"
}, },
"CooldownBlink": { "CooldownBlink": {
"text2": [ "displayText": "Atvėsimo\nmirksėjimas",
"Atvėsimo", "description": "Ar mirksėti temperatūrą ekrane kol vėstantis antgalis vis dar karštas?"
"mirksėjimas"
],
"desc": "Ar mirksėti temperatūrą ekrane kol vėstantis antgalis vis dar karštas?"
}, },
"ScrollingSpeed": { "ScrollingSpeed": {
"text2": [ "displayText": "Aprašymo\ngreitis",
"Aprašymo", "description": "Greitis, kuriuo šis tekstas slenka"
"greitis"
],
"desc": "Greitis, kuriuo šis tekstas slenka"
}, },
"ReverseButtonTempChange": { "ReverseButtonTempChange": {
"text2": [ "displayText": "Sukeisti + -\nmygtukus?",
"Sukeisti + -", "description": "Sukeisti + - temperatūros keitimo mygtukus vietomis"
"mygtukus?"
],
"desc": "Sukeisti + - temperatūros keitimo mygtukus vietomis"
}, },
"AnimSpeed": { "AnimSpeed": {
"text2": [ "displayText": "Animacijų\ngreitis",
"Animacijų", "description": "Paveiksliukų animacijų greitis meniu punktuose (I=Išjungtas | L=Lėtas | V=Vidutinis | G=Greitas)"
"greitis"
],
"desc": "Paveiksliukų animacijų greitis meniu punktuose (I=Išjungtas | L=Lėtas | V=Vidutinis | G=Greitas)"
}, },
"AnimLoop": { "AnimLoop": {
"text2": [ "displayText": "Animacijų\npakartojimas",
"Animacijų", "description": "Leidžia kartoti animacijas be sustojimo pagrindiniame meniu"
"pakartojimas"
],
"desc": "Leidžia kartoti animacijas be sustojimo pagrindiniame meniu"
}, },
"Brightness": { "Brightness": {
"text2": [ "displayText": "Ekrano\nšviesumas",
"Ekrano", "description": "Nustato OLED ekrano kontrastą/šviesumą."
"šviesumas"
],
"desc": "Nustato OLED ekrano kontrastą/šviesumą."
}, },
"ColourInversion": { "ColourInversion": {
"text2": [ "displayText": "Ekrano\ninvertavimas",
"Ekrano", "description": "Invertuoja OLED ekrano spalvas"
"invertavimas"
],
"desc": "Invertuoja OLED ekrano spalvas"
}, },
"LOGOTime": { "LOGOTime": {
"text2": [ "displayText": "Boot logo\nduration",
"Boot logo", "description": "Set boot logo duration (s=seconds)"
"duration"
],
"desc": "Set boot logo duration (s=seconds)"
}, },
"AdvancedIdle": { "AdvancedIdle": {
"text2": [ "displayText": "Detalus lau-\nkimo ekranas",
"Detalus lau-", "description": "Ar rodyti papildomą informaciją mažesniu šriftu laukimo ekrane"
"kimo ekranas"
],
"desc": "Ar rodyti papildomą informaciją mažesniu šriftu laukimo ekrane"
}, },
"AdvancedSoldering": { "AdvancedSoldering": {
"text2": [ "displayText": "Detalus lita-\nvimo ekranas",
"Detalus lita-", "description": "Ar rodyti išsamią informaciją lituojant"
"vimo ekranas" },
], "BluetoothLE": {
"desc": "Ar rodyti išsamią informaciją lituojant" "displayText": "Bluetooth\n",
"description": "Enables BLE"
}, },
"PowerLimit": { "PowerLimit": {
"text2": [ "displayText": "Galios\nriba",
"Galios", "description": "Didžiausia galia, kurią gali naudoti lituoklis (Vatai)"
"riba"
],
"desc": "Didžiausia galia, kurią gali naudoti lituoklis (Vatai)"
}, },
"CalibrateCJC": { "CalibrateCJC": {
"text2": [ "displayText": "Calibrate CJC\nat next boot",
"Calibrate CJC", "description": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
"at next boot"
],
"desc": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
}, },
"VoltageCalibration": { "VoltageCalibration": {
"text2": [ "displayText": "Kalibruoti\nįvesties įtampą?",
"Kalibruoti", "description": "Įvesties įtampos kalibravimas. Trumpai paspauskite, norėdami nustatyti, ilgai paspauskite, kad išeitumėte."
"įvesties įtampą?"
],
"desc": "Įvesties įtampos kalibravimas. Trumpai paspauskite, norėdami nustatyti, ilgai paspauskite, kad išeitumėte."
}, },
"PowerPulsePower": { "PowerPulsePower": {
"text2": [ "displayText": "Galios\npulso W",
"Galios", "description": "Periodinis galios pulso intensyvumas maitinblokiui, neleidžiantis jam užmigti."
"pulso W"
],
"desc": "Periodinis galios pulso intensyvumas maitinblokiui, neleidžiantis jam užmigti."
}, },
"PowerPulseWait": { "PowerPulseWait": {
"text2": [ "displayText": "Galios pulso\ndažnumas",
"Galios pulso", "description": "Pasikartojantis laiko intervalas (x 2.5s), ties kuriuo kartojamas galios pulsas maitinblokiui, neleidžiantis jam užmigti"
"dažnumas"
],
"desc": "Pasikartojantis laiko intervalas (x 2.5s), ties kuriuo kartojamas galios pulsas maitinblokiui, neleidžiantis jam užmigti"
}, },
"PowerPulseDuration": { "PowerPulseDuration": {
"text2": [ "displayText": "Galios pulso\ntrukmė",
"Galios pulso", "description": "Galios pulso aktyvioji trukmė (x 250ms)"
"trukmė"
],
"desc": "Galios pulso aktyvioji trukmė (x 250ms)"
}, },
"SettingsReset": { "SettingsReset": {
"text2": [ "displayText": "Atstatyti\nnustatymus?",
"Atstatyti", "description": "Nustato nustatymus į numatytuosius"
"nustatymus?"
],
"desc": "Nustato nustatymus į numatytuosius"
}, },
"LanguageSwitch": { "LanguageSwitch": {
"text2": [ "displayText": "Kalba:\n LT Lietuvių",
"Kalba:", "description": ""
" LT Lietuvių"
],
"desc": ""
} }
} }
} }

View File

@@ -2,44 +2,67 @@
"languageCode": "NB", "languageCode": "NB",
"languageLocalName": "Norsk bokmål", "languageLocalName": "Norsk bokmål",
"tempUnitFahrenheit": false, "tempUnitFahrenheit": false,
"messages": {
"SettingsCalibrationWarning": "Before rebooting, make sure tip & handle are at room temperature!",
"CJCCalibrating": "calibrating",
"SettingsResetWarning": "Er du sikker på at du vil tilbakestille til standardinnstillinger?",
"UVLOWarningString": "Lavspenn",
"UndervoltageString": "Underspenning",
"InputVoltageString": "Innspenn.: ",
"SleepingSimpleString": "Zzzz",
"SleepingAdvancedString": "Dvale...",
"SleepingTipAdvancedString": "Spiss:",
"OffString": "Av",
"DeviceFailedValidationWarning": "Enheten din er sannsynligvis en forfalskning!"
},
"messagesWarn": { "messagesWarn": {
"CJCCalibrationDone": [ "CJCCalibrationDone": {
"Calibration", "message": "Calibration\ndone!"
"done!" },
], "ResetOKMessage": {
"ResetOKMessage": "Tilbakestilling OK", "message": "Tilbakestilling OK"
"SettingsResetMessage": [ },
"Noen innstillinger", "SettingsResetMessage": {
"ble endret!" "message": "Noen innstillinger\nble endret!"
], },
"NoAccelerometerMessage": [ "NoAccelerometerMessage": {
"Ingen akselerometer", "message": "Ingen akselerometer\nfunnet!"
"funnet!" },
], "NoPowerDeliveryMessage": {
"NoPowerDeliveryMessage": [ "message": "Ingen USB-PD IC\nfunnet!"
"Ingen USB-PD IC", },
"funnet!" "LockingKeysString": {
], "message": "LÅST"
"LockingKeysString": "LÅST", },
"UnlockingKeysString": "ÅPNET", "UnlockingKeysString": {
"WarningKeysLockedString": "!LÅST!", "message": "ÅPNET"
"WarningThermalRunaway": [ },
"Termisk", "WarningKeysLockedString": {
"rømling" "message": "!LÅST!"
] },
"WarningThermalRunaway": {
"message": "Termisk\nrømling"
},
"SettingsCalibrationWarning": {
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
"CJCCalibrating": {
"message": "calibrating\n"
},
"SettingsResetWarning": {
"message": "Er du sikker på at du vil tilbakestille til standardinnstillinger?"
},
"UVLOWarningString": {
"message": "Lavspenn"
},
"UndervoltageString": {
"message": "Underspenning\n"
},
"InputVoltageString": {
"message": "Innspenn.: \n"
},
"SleepingSimpleString": {
"message": "Zzzz"
},
"SleepingAdvancedString": {
"message": "Dvale...\n"
},
"SleepingTipAdvancedString": {
"message": "Spiss: \n"
},
"OffString": {
"message": "Av"
},
"DeviceFailedValidationWarning": {
"message": "Enheten din er sannsynligvis en forfalskning!"
}
}, },
"characters": { "characters": {
"SettingRightChar": "H", "SettingRightChar": "H",
@@ -53,289 +76,176 @@
"SettingStartSolderingChar": "L", "SettingStartSolderingChar": "L",
"SettingStartSleepChar": "D", "SettingStartSleepChar": "D",
"SettingStartSleepOffChar": "R", "SettingStartSleepOffChar": "R",
"SettingSensitivityOff": "O",
"SettingSensitivityLow": "L",
"SettingSensitivityMedium": "M",
"SettingSensitivityHigh": "H",
"SettingLockDisableChar": "D", "SettingLockDisableChar": "D",
"SettingLockBoostChar": "B", "SettingLockBoostChar": "B",
"SettingLockFullChar": "F" "SettingLockFullChar": "F"
}, },
"menuGroups": { "menuGroups": {
"PowerMenu": { "PowerMenu": {
"text2": [ "displayText": "Effekt-\ninnst.",
"Effekt-", "description": ""
"innst."
],
"desc": ""
}, },
"SolderingMenu": { "SolderingMenu": {
"text2": [ "displayText": "Lodde-\ninnst.",
"Lodde-", "description": ""
"innst."
],
"desc": ""
}, },
"PowerSavingMenu": { "PowerSavingMenu": {
"text2": [ "displayText": "Dvale-\ninnst.",
"Dvale-", "description": ""
"innst."
],
"desc": ""
}, },
"UIMenu": { "UIMenu": {
"text2": [ "displayText": "Bruker-\ngrensesn.",
"Bruker-", "description": ""
"grensesn."
],
"desc": ""
}, },
"AdvancedMenu": { "AdvancedMenu": {
"text2": [ "displayText": "Avanserte\nvalg",
"Avanserte", "description": ""
"valg"
],
"desc": ""
} }
}, },
"menuOptions": { "menuOptions": {
"DCInCutoff": { "DCInCutoff": {
"text2": [ "displayText": "Kilde\n",
"Kilde", "description": "Strømforsyning. Sett nedre spenning for automatisk nedstenging. (DC 10V) (S 3.3V per celle)"
""
],
"desc": "Strømforsyning. Sett nedre spenning for automatisk nedstenging. (DC 10V) (S 3.3V per celle)"
}, },
"MinVolCell": { "MinVolCell": {
"text2": [ "displayText": "Minimum\nspenning",
"Minimum", "description": "Minimum tillatt spenning per celle (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)"
"spenning"
],
"desc": "Minimum tillatt spenning per celle (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)"
}, },
"QCMaxVoltage": { "QCMaxVoltage": {
"text2": [ "displayText": "QC-\nspenning",
"QC-", "description": "Maks QC-spenning bolten skal forhandle om"
"spenning"
],
"desc": "Maks QC-spenning bolten skal forhandle om"
}, },
"PDNegTimeout": { "PDNegTimeout": {
"text2": [ "displayText": "PD-\ntidsavb.",
"PD-", "description": "PD-forhandlingstidsavbrudd i steg på 100 ms for kompatibilitet med noen QC-ladere"
"tidsavb." },
], "PDVpdo": {
"desc": "PD-forhandlingstidsavbrudd i steg på 100 ms for kompatibilitet med noen QC-ladere" "displayText": "PD\nVPDO",
"description": "Enables PPS & EPR modes"
}, },
"BoostTemperature": { "BoostTemperature": {
"text2": [ "displayText": "KTmp\n",
"KTmp", "description": "Temperatur i \"kraft-modus\""
""
],
"desc": "Temperatur i \"kraft-modus\""
}, },
"AutoStart": { "AutoStart": {
"text2": [ "displayText": "AStart\n",
"AStart", "description": "Start automatisk med lodding når strøm kobles til. (I=Inaktiv | L=Lodding | D=Dvale | R=Dvale romtemperatur)"
""
],
"desc": "Start automatisk med lodding når strøm kobles til. (I=Inaktiv | L=Lodding | D=Dvale | R=Dvale romtemperatur)"
}, },
"TempChangeShortStep": { "TempChangeShortStep": {
"text2": [ "displayText": "Temp-endring\nkort",
"Temp-endring", "description": "Hvor mye temperaturen skal endres ved kort trykk på knapp"
"kort"
],
"desc": "Hvor mye temperaturen skal endres ved kort trykk på knapp"
}, },
"TempChangeLongStep": { "TempChangeLongStep": {
"text2": [ "displayText": "Temp-endring\nlang",
"Temp-endring", "description": "Hvor mye temperaturen skal endres ved langt trykk på knapp"
"lang"
],
"desc": "Hvor mye temperaturen skal endres ved langt trykk på knapp"
}, },
"LockingMode": { "LockingMode": {
"text2": [ "displayText": "Tillat å låse\nknapper",
"Tillat å låse", "description": "Mens du lodder, hold nede begge knapper for å bytte mellom låsemodus (D=deaktiver | B=kun boost | F=full lås)"
"knapper"
],
"desc": "Mens du lodder, hold nede begge knapper for å bytte mellom låsemodus (D=deaktiver | B=kun boost | F=full lås)"
}, },
"MotionSensitivity": { "MotionSensitivity": {
"text2": [ "displayText": "BSensr\n",
"BSensr", "description": "Bevegelsesfølsomhet (0=Inaktiv | 1=Minst følsom | ... | 9=Mest følsom)"
""
],
"desc": "Bevegelsesfølsomhet (0=Inaktiv | 1=Minst følsom | ... | 9=Mest følsom)"
}, },
"SleepTemperature": { "SleepTemperature": {
"text2": [ "displayText": "DTmp\n",
"DTmp", "description": "Dvaletemperatur (C)"
""
],
"desc": "Dvaletemperatur (C)"
}, },
"SleepTimeout": { "SleepTimeout": {
"text2": [ "displayText": "DTid\n",
"DTid", "description": "Tid før dvale (Minutter | Sekunder)"
""
],
"desc": "Tid før dvale (Minutter | Sekunder)"
}, },
"ShutdownTimeout": { "ShutdownTimeout": {
"text2": [ "displayText": "AvTid\n",
"AvTid", "description": "Tid før automatisk nedstenging (Minutter)"
""
],
"desc": "Tid før automatisk nedstenging (Minutter)"
}, },
"HallEffSensitivity": { "HallEffSensitivity": {
"text2": [ "displayText": "Hall-sensor\nfølsomhet",
"Hall-sensor", "description": "Sensitiviteten til Hall-effekt-sensoren for å detektere inaktivitet (0=Inaktiv | 1=Minst følsom | ... | 9=Mest følsom)"
"følsomhet"
],
"desc": "Sensitiviteten til Hall-effekt-sensoren for å detektere inaktivitet (0=Inaktiv | 1=Minst følsom | ... | 9=Mest følsom)"
}, },
"TemperatureUnit": { "TemperatureUnit": {
"text2": [ "displayText": "TmpEnh\n",
"TmpEnh", "description": "Temperaturskala (C=Celsius | F=Fahrenheit)"
""
],
"desc": "Temperaturskala (C=Celsius | F=Fahrenheit)"
}, },
"DisplayRotation": { "DisplayRotation": {
"text2": [ "displayText": "SkRetn\n",
"SkRetn", "description": "Skjermretning (H=Høyrehendt | V=Venstrehendt | A=Automatisk)"
""
],
"desc": "Skjermretning (H=Høyrehendt | V=Venstrehendt | A=Automatisk)"
}, },
"CooldownBlink": { "CooldownBlink": {
"text2": [ "displayText": "KjBlnk\n",
"KjBlnk", "description": "Blink temperaturen på skjermen mens spissen fortsatt er varm."
""
],
"desc": "Blink temperaturen på skjermen mens spissen fortsatt er varm."
}, },
"ScrollingSpeed": { "ScrollingSpeed": {
"text2": [ "displayText": "RullHa\n",
"RullHa", "description": "Hastigheten på rulletekst"
""
],
"desc": "Hastigheten på rulletekst"
}, },
"ReverseButtonTempChange": { "ReverseButtonTempChange": {
"text2": [ "displayText": "Bytt\n+ - kn.",
"Bytt", "description": "Bytt om på knappene for å stille temperatur"
"+ - kn."
],
"desc": "Bytt om på knappene for å stille temperatur"
}, },
"AnimSpeed": { "AnimSpeed": {
"text2": [ "displayText": "Anim.\nhastighet",
"Anim.", "description": "Hastigheten til animasjonene i menyen (O=off | S=slow | M=medium | F=fast)"
"hastighet"
],
"desc": "Hastigheten til animasjonene i menyen (O=off | S=slow | M=medium | F=fast)"
}, },
"AnimLoop": { "AnimLoop": {
"text2": [ "displayText": "Anim.\nloop",
"Anim.", "description": "Loop ikon-animasjoner i hovedmenyen"
"loop"
],
"desc": "Loop ikon-animasjoner i hovedmenyen"
}, },
"Brightness": { "Brightness": {
"text2": [ "displayText": "Skjerm-\nlysstyrke",
"Skjerm-", "description": "Juster lysstyrken til OLED-skjermen"
"lysstyrke"
],
"desc": "Juster lysstyrken til OLED-skjermen"
}, },
"ColourInversion": { "ColourInversion": {
"text2": [ "displayText": "Inverter\nskjerm",
"Inverter", "description": "Inverter fargene på OLED-skjermen"
"skjerm"
],
"desc": "Inverter fargene på OLED-skjermen"
}, },
"LOGOTime": { "LOGOTime": {
"text2": [ "displayText": "Oppstartlogo\nvarighet",
"Oppstartlogo", "description": "Setter varigheten til oppstartlogoen (s=sekunder)"
"varighet"
],
"desc": "Setter varigheten til oppstartlogoen (s=sekunder)"
}, },
"AdvancedIdle": { "AdvancedIdle": {
"text2": [ "displayText": "AvDvSk\n",
"AvDvSk", "description": "Vis detaljert informasjon med liten skrift på dvaleskjermen."
""
],
"desc": "Vis detaljert informasjon med liten skrift på dvaleskjermen."
}, },
"AdvancedSoldering": { "AdvancedSoldering": {
"text2": [ "displayText": "AvLdSk\n",
"AvLdSk", "description": "Vis detaljert informasjon ved lodding"
"" },
], "BluetoothLE": {
"desc": "Vis detaljert informasjon ved lodding" "displayText": "Bluetooth\n",
"description": "Enables BLE"
}, },
"PowerLimit": { "PowerLimit": {
"text2": [ "displayText": "Effekt-\ngrense",
"Effekt-", "description": "Maks effekt jernet kan bruke (W=watt)"
"grense"
],
"desc": "Maks effekt jernet kan bruke (W=watt)"
}, },
"CalibrateCJC": { "CalibrateCJC": {
"text2": [ "displayText": "TempKal?\n",
"TempKal?", "description": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
""
],
"desc": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
}, },
"VoltageCalibration": { "VoltageCalibration": {
"text2": [ "displayText": "KalSpIn?\n",
"KalSpIn?", "description": "Kalibrer spenning. Knappene justerer. Langt trykk for å gå ut"
""
],
"desc": "Kalibrer spenning. Knappene justerer. Langt trykk for å gå ut"
}, },
"PowerPulsePower": { "PowerPulsePower": {
"text2": [ "displayText": "Effekt-\npuls",
"Effekt-", "description": "Hvor høy effekt pulsen for å holde laderen våken skal ha (watt)"
"puls"
],
"desc": "Hvor høy effekt pulsen for å holde laderen våken skal ha (watt)"
}, },
"PowerPulseWait": { "PowerPulseWait": {
"text2": [ "displayText": "Effektpuls\nforsink.",
"Effektpuls", "description": "Forsinkelse før effektpulsen utløses (x 2.5s)"
"forsink."
],
"desc": "Forsinkelse før effektpulsen utløses (x 2.5s)"
}, },
"PowerPulseDuration": { "PowerPulseDuration": {
"text2": [ "displayText": "Effektpuls\nvarighet",
"Effektpuls", "description": "Hvor lenge holde-våken-pulsen varer (x 250ms)"
"varighet"
],
"desc": "Hvor lenge holde-våken-pulsen varer (x 250ms)"
}, },
"SettingsReset": { "SettingsReset": {
"text2": [ "displayText": "TilbStl?\n",
"TilbStl?", "description": "Tilbakestill alle innstillinger"
""
],
"desc": "Tilbakestill alle innstillinger"
}, },
"LanguageSwitch": { "LanguageSwitch": {
"text2": [ "displayText": "Språk:\n NB Norsk bm",
"Språk:", "description": ""
" NB Norsk bm"
],
"desc": ""
} }
} }
} }

View File

@@ -2,44 +2,67 @@
"languageCode": "NL", "languageCode": "NL",
"languageLocalName": "Nederlands", "languageLocalName": "Nederlands",
"tempUnitFahrenheit": false, "tempUnitFahrenheit": false,
"messages": {
"SettingsCalibrationWarning": "Before rebooting, make sure tip & handle are at room temperature!",
"CJCCalibrating": "calibrating",
"SettingsResetWarning": "Weet je zeker dat je de fabrieksinstellingen terug wilt zetten?",
"UVLOWarningString": "DC Laag",
"UndervoltageString": "Onderspanning",
"InputVoltageString": "Voeding V: ",
"SleepingSimpleString": "Zzzz",
"SleepingAdvancedString": "Slaapstand...",
"SleepingTipAdvancedString": "Punt:",
"OffString": "Uit",
"DeviceFailedValidationWarning": "Jouw toestel is wellicht een namaak-versie!"
},
"messagesWarn": { "messagesWarn": {
"CJCCalibrationDone": [ "CJCCalibrationDone": {
"Calibration", "message": "Calibration\ndone!"
"done!" },
], "ResetOKMessage": {
"ResetOKMessage": "Reset OK", "message": "Reset OK"
"SettingsResetMessage": [ },
"Instellingen", "SettingsResetMessage": {
"zijn gereset!" "message": "Instellingen\nzijn gereset!"
], },
"NoAccelerometerMessage": [ "NoAccelerometerMessage": {
"Geen accelerometer", "message": "Geen accelerometer\ngedetecteerd!"
"gedetecteerd!" },
], "NoPowerDeliveryMessage": {
"NoPowerDeliveryMessage": [ "message": "Geen USB-PD IC \ngedetecteerd!"
"Geen USB-PD IC ", },
"gedetecteerd!" "LockingKeysString": {
], "message": "GEBLOKKEERD"
"LockingKeysString": "GEBLOKKEERD", },
"UnlockingKeysString": "GEDEBLOKKEERD", "UnlockingKeysString": {
"WarningKeysLockedString": "!GEBLOKKEERD!", "message": "GEDEBLOKKEERD"
"WarningThermalRunaway": [ },
"Verwarming", "WarningKeysLockedString": {
"Oncontroleerbaar" "message": "!GEBLOKKEERD!"
] },
"WarningThermalRunaway": {
"message": "Verwarming\nOncontroleerbaar"
},
"SettingsCalibrationWarning": {
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
"CJCCalibrating": {
"message": "calibrating\n"
},
"SettingsResetWarning": {
"message": "Weet je zeker dat je de fabrieksinstellingen terug wilt zetten?"
},
"UVLOWarningString": {
"message": "DC Laag"
},
"UndervoltageString": {
"message": "Onderspanning\n"
},
"InputVoltageString": {
"message": "Voeding V: \n"
},
"SleepingSimpleString": {
"message": "Zzzz"
},
"SleepingAdvancedString": {
"message": "Slaapstand...\n"
},
"SleepingTipAdvancedString": {
"message": "Punt: \n"
},
"OffString": {
"message": "Uit"
},
"DeviceFailedValidationWarning": {
"message": "Jouw toestel is wellicht een namaak-versie!"
}
}, },
"characters": { "characters": {
"SettingRightChar": "R", "SettingRightChar": "R",
@@ -53,289 +76,176 @@
"SettingStartSolderingChar": "G", "SettingStartSolderingChar": "G",
"SettingStartSleepChar": "S", "SettingStartSleepChar": "S",
"SettingStartSleepOffChar": "B", "SettingStartSleepOffChar": "B",
"SettingSensitivityOff": "U",
"SettingSensitivityLow": "L",
"SettingSensitivityMedium": "G",
"SettingSensitivityHigh": "H",
"SettingLockDisableChar": "U", "SettingLockDisableChar": "U",
"SettingLockBoostChar": "B", "SettingLockBoostChar": "B",
"SettingLockFullChar": "V" "SettingLockFullChar": "V"
}, },
"menuGroups": { "menuGroups": {
"PowerMenu": { "PowerMenu": {
"text2": [ "displayText": "Voeding\ninstellingen",
"Voeding", "description": ""
"instellingen"
],
"desc": ""
}, },
"SolderingMenu": { "SolderingMenu": {
"text2": [ "displayText": "Soldeer\ninstellingen",
"Soldeer", "description": ""
"instellingen"
],
"desc": ""
}, },
"PowerSavingMenu": { "PowerSavingMenu": {
"text2": [ "displayText": "Slaap\nModes",
"Slaap", "description": ""
"Modes"
],
"desc": ""
}, },
"UIMenu": { "UIMenu": {
"text2": [ "displayText": "Weergave\ninstellingen",
"Weergave", "description": ""
"instellingen"
],
"desc": ""
}, },
"AdvancedMenu": { "AdvancedMenu": {
"text2": [ "displayText": "Geavanceerde\ninstellingen",
"Geavanceerde", "description": ""
"instellingen"
],
"desc": ""
} }
}, },
"menuOptions": { "menuOptions": {
"DCInCutoff": { "DCInCutoff": {
"text2": [ "displayText": "Spannings-\nbron",
"Spannings-", "description": "Spanningsbron. Stelt drempelspanning in. (DC 10V) (S 3.3V per cel)"
"bron"
],
"desc": "Spanningsbron. Stelt drempelspanning in. (DC 10V) (S 3.3V per cel)"
}, },
"MinVolCell": { "MinVolCell": {
"text2": [ "displayText": "Minimum\nvoltage",
"Minimum", "description": "Minimum toegestaan voltage per cell (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)"
"voltage"
],
"desc": "Minimum toegestaan voltage per cell (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)"
}, },
"QCMaxVoltage": { "QCMaxVoltage": {
"text2": [ "displayText": "QC\nvoltage",
"QC", "description": "Maximaal QC voltage dat gevraagd mag worden"
"Voltage"
],
"desc": "Maximaal QC voltage dat gevraagd mag worden"
}, },
"PDNegTimeout": { "PDNegTimeout": {
"text2": [ "displayText": "PD\ntimeout",
"PD", "description": "PD afstemmingsduur in stappen van 100ms (voor compatibiliteit met sommige QC laders)"
"timeout" },
], "PDVpdo": {
"desc": "PD afstemmingsduur in stappen van 100ms (voor compatibiliteit met sommige QC laders)" "displayText": "PD\nVPDO",
"description": "Enables PPS & EPR modes"
}, },
"BoostTemperature": { "BoostTemperature": {
"text2": [ "displayText": "Boost\ntemp",
"Boost", "description": "Punt temperatuur in boostmode"
"temp"
],
"desc": "Punt temperatuur in boostmode"
}, },
"AutoStart": { "AutoStart": {
"text2": [ "displayText": "Opstart\ngedrag",
"Opstart", "description": "Gedrag bij opstarten (U=Uit | G=Gebruiks-temperatuur | S=Slaapstand-temperatuur tot beweging | B=Uit tot beweging)"
"gedrag"
],
"desc": "Gedrag bij opstarten (U=Uit | G=Gebruiks-temperatuur | S=Slaapstand-temperatuur tot beweging | B=Uit tot beweging)"
}, },
"TempChangeShortStep": { "TempChangeShortStep": {
"text2": [ "displayText": "Temp veranderen\nkort",
"Temp veranderen", "description": "Temperatuur verandering bij kort drukken"
"kort"
],
"desc": "Temperatuur verandering bij kort drukken"
}, },
"TempChangeLongStep": { "TempChangeLongStep": {
"text2": [ "displayText": "Temp veranderen\nlang",
"Temp veranderen", "description": "Temperatuur verandering bij lang drukken"
"lang"
],
"desc": "Temperatuur verandering bij lang drukken"
}, },
"LockingMode": { "LockingMode": {
"text2": [ "displayText": "Knopblokkering\ninschakelen",
"Knopblokkering", "description": "Tijdens solderen lang op beide knoppen drukken blokkeert de knoppen (U=Uit | B=Alleen boost mode | V=Volledig blokkeren)"
"inschakelen"
],
"desc": "Tijdens solderen lang op beide knoppen drukken blokkeert de knoppen (U=Uit | B=Alleen boost mode | V=Volledig blokkeren)"
}, },
"MotionSensitivity": { "MotionSensitivity": {
"text2": [ "displayText": "Bewegings-\ngevoeligheid",
"Bewegings-", "description": "Bewegingsgevoeligheid (0=uit | 1=minst gevoelig | ... | 9=meest gevoelig)"
"gevoeligheid"
],
"desc": "Bewegingsgevoeligheid (0=uit | 1=minst gevoelig | ... | 9=meest gevoelig)"
}, },
"SleepTemperature": { "SleepTemperature": {
"text2": [ "displayText": "Slaap\ntemp",
"Slaap", "description": "Punt temperatuur in slaapstand"
"temp"
],
"desc": "Punt temperatuur in slaapstand"
}, },
"SleepTimeout": { "SleepTimeout": {
"text2": [ "displayText": "Slaap\ntime-out",
"Slaap", "description": "Tijd voordat slaapmodus wordt geactiveerd (S=seconden | M=minuten)"
"time-out"
],
"desc": "Tijd voordat slaapmodus wordt geactiveerd (S=seconden | M=minuten)"
}, },
"ShutdownTimeout": { "ShutdownTimeout": {
"text2": [ "displayText": "Uitschakel\ntime-out",
"Uitschakel", "description": "Tijd voordat soldeerbout automatisch uitschakelt (M=minuten)"
"time-out"
],
"desc": "Tijd voordat soldeerbout automatisch uitschakelt (M=minuten)"
}, },
"HallEffSensitivity": { "HallEffSensitivity": {
"text2": [ "displayText": "Hall sensor\ngevoeligheid",
"Hall sensor", "description": "Gevoeligheid van de Hall effect sensor om naar slaapmodus te gaan (0=uit | 1=minst gevoelig | ... | 9=meest gevoelig)"
"gevoeligheid"
],
"desc": "Gevoeligheid van de Hall effect sensor om naar slaapmodus te gaan (0=uit | 1=minst gevoelig | ... | 9=meest gevoelig)"
}, },
"TemperatureUnit": { "TemperatureUnit": {
"text2": [ "displayText": "Temperatuur\neenheid",
"Temperatuur", "description": "Temperatuureenheid (C=Celsius | F=Fahrenheit)"
"eenheid"
],
"desc": "Temperatuureenheid (C=Celsius | F=Fahrenheit)"
}, },
"DisplayRotation": { "DisplayRotation": {
"text2": [ "displayText": "Scherm-\noriëntatie",
"Scherm-", "description": "Schermoriëntatie (R=Rechtshandig | L=Linkshandig | A=Automatisch)"
"oriëntatie"
],
"desc": "Schermoriëntatie (R=Rechtshandig | L=Linkshandig | A=Automatisch)"
}, },
"CooldownBlink": { "CooldownBlink": {
"text2": [ "displayText": "Afkoel\nflitsen",
"Afkoel", "description": "Temperatuur laten flitsen in het hoofdmenu zo lang de punt nog warm is"
"flitsen"
],
"desc": "Temperatuur laten flitsen in het hoofdmenu zo lang de punt nog warm is"
}, },
"ScrollingSpeed": { "ScrollingSpeed": {
"text2": [ "displayText": "Scroll\nsnelheid",
"Scroll", "description": "Snelheid waarmee de tekst scrolt (S=Snel | L=Langzaam)"
"snelheid"
],
"desc": "Snelheid waarmee de tekst scrolt (S=Snel | L=Langzaam)"
}, },
"ReverseButtonTempChange": { "ReverseButtonTempChange": {
"text2": [ "displayText": "Draai\n+ - knoppen om",
"Draai", "description": "Keer de +- knoppen van de temperatuurregeling om"
"+ - knoppen om"
],
"desc": "Keer de +- knoppen van de temperatuurregeling om"
}, },
"AnimSpeed": { "AnimSpeed": {
"text2": [ "displayText": "Animatie\nsnelheid",
"Animatie", "description": "Tempo van de icoon animaties in het hoofdmenu (U=uit | L=langzaam | G=gemiddeld | S=snel)"
"snelheid"
],
"desc": "Tempo van de icoon animaties in het hoofdmenu (U=uit | L=langzaam | G=gemiddeld | S=snel)"
}, },
"AnimLoop": { "AnimLoop": {
"text2": [ "displayText": "Animatie\nherhaling",
"Animatie", "description": "Herhaal icoon animaties in hoofdmenu"
"herhaling"
],
"desc": "Herhaal icoon animaties in hoofdmenu"
}, },
"Brightness": { "Brightness": {
"text2": [ "displayText": "Scherm\nhelderheid",
"Scherm", "description": "Pas helderheid van het OLED scherm aan"
"helderheid"
],
"desc": "Pas helderheid van het OLED scherm aan"
}, },
"ColourInversion": { "ColourInversion": {
"text2": [ "displayText": "Inverteer\nscherm",
"Inverteer", "description": "Inverteer de kleuren van het OLED scherm"
"scherm"
],
"desc": "Inverteer de kleuren van het OLED scherm"
}, },
"LOGOTime": { "LOGOTime": {
"text2": [ "displayText": "Opstart logo\nduur",
"Opstart logo", "description": "Stelt de weergaveduur van het opstartlogo in (s=seconden)"
"duur"
],
"desc": "Stelt de weergaveduur van het opstartlogo in (s=seconden)"
}, },
"AdvancedIdle": { "AdvancedIdle": {
"text2": [ "displayText": "Gedetailleerd\nstartscherm",
"Gedetailleerd", "description": "Gedetailleerde informatie weergeven in een kleine letters op het startscherm."
"startscherm"
],
"desc": "Gedetailleerde informatie weergeven in een kleine letters op het startscherm."
}, },
"AdvancedSoldering": { "AdvancedSoldering": {
"text2": [ "displayText": "Gedetailleerd\nsoldeerscherm",
"Gedetailleerd", "description": "Gedetailleerde informatie weergeven in een kleiner lettertype op het soldeerscherm"
"soldeerscherm" },
], "BluetoothLE": {
"desc": "Gedetailleerde informatie weergeven in een kleiner lettertype op het soldeerscherm" "displayText": "Bluetooth\n",
"description": "Enables BLE"
}, },
"PowerLimit": { "PowerLimit": {
"text2": [ "displayText": "Vermogen\nlimiet",
"Vermogen", "description": "Maximaal vermogen (W=Watt)"
"limiet"
],
"desc": "Maximaal vermogen (W=Watt)"
}, },
"CalibrateCJC": { "CalibrateCJC": {
"text2": [ "displayText": "Calibrate CJC\nat next boot",
"Calibrate CJC", "description": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
"at next boot"
],
"desc": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
}, },
"VoltageCalibration": { "VoltageCalibration": {
"text2": [ "displayText": "Kalibreer\ninput-voltage?",
"Kalibreer", "description": "Start VIN Kalibratie (druk lang om te sluiten)"
"input-voltage?"
],
"desc": "Start VIN Kalibratie (druk lang om te sluiten)"
}, },
"PowerPulsePower": { "PowerPulsePower": {
"text2": [ "displayText": "Stroom\nPuls",
"Stroom", "description": "Intensiteit van stroompuls om voeding aan te houden (watt)"
"Puls"
],
"desc": "Intensiteit van stroompuls om voeding aan te houden (watt)"
}, },
"PowerPulseWait": { "PowerPulseWait": {
"text2": [ "displayText": "Stroompuls\ninterval",
"Stroompuls", "description": "Tijdsduur tussen voeding wakker-blijf-pulsen (x 2.5s)"
"interval"
],
"desc": "Tijdsduur tussen voeding wakker-blijf-pulsen (x 2.5s)"
}, },
"PowerPulseDuration": { "PowerPulseDuration": {
"text2": [ "displayText": "Power pulse\nduur",
"Power pulse", "description": "Duur van voeding-wakker-blijf-pulsen (x 250ms)"
"duur"
],
"desc": "Duur van voeding-wakker-blijf-pulsen (x 250ms)"
}, },
"SettingsReset": { "SettingsReset": {
"text2": [ "displayText": "Instellingen\nresetten?",
"Instellingen", "description": "Alle instellingen terugzetten naar fabrieksinstellingen"
"resetten?"
],
"desc": "Alle instellingen terugzetten naar fabrieksinstellingen"
}, },
"LanguageSwitch": { "LanguageSwitch": {
"text2": [ "displayText": "Taal:\n NL Nederlands",
"Taal:", "description": ""
" NL Nederlands"
],
"desc": ""
} }
} }
} }

View File

@@ -2,44 +2,67 @@
"languageCode": "NL_BE", "languageCode": "NL_BE",
"languageLocalName": "Vlaams", "languageLocalName": "Vlaams",
"tempUnitFahrenheit": false, "tempUnitFahrenheit": false,
"messages": {
"SettingsCalibrationWarning": "Before rebooting, make sure tip & handle are at room temperature!",
"CJCCalibrating": "calibrating",
"SettingsResetWarning": "Ben je zeker dat je alle standaardwaarden wil resetten?",
"UVLOWarningString": "Voedingsspanning LAAG",
"UndervoltageString": "Onderspanning",
"InputVoltageString": "Voedingsspanning: ",
"SleepingSimpleString": "Zzz ",
"SleepingAdvancedString": "Slaapstand...",
"SleepingTipAdvancedString": "Punt:",
"OffString": "Uit",
"DeviceFailedValidationWarning": "Your device is most likely a counterfeit!"
},
"messagesWarn": { "messagesWarn": {
"CJCCalibrationDone": [ "CJCCalibrationDone": {
"Calibration", "message": "Calibration\ndone!"
"done!" },
], "ResetOKMessage": {
"ResetOKMessage": "Reset OK", "message": "Reset OK"
"SettingsResetMessage": [ },
"Certain settings", "SettingsResetMessage": {
"were changed!" "message": "Certain settings\nwere changed!"
], },
"NoAccelerometerMessage": [ "NoAccelerometerMessage": {
"No accelerometer", "message": "No accelerometer\ndetected!"
"detected!" },
], "NoPowerDeliveryMessage": {
"NoPowerDeliveryMessage": [ "message": "No USB-PD IC\ndetected!"
"No USB-PD IC", },
"detected!" "LockingKeysString": {
], "message": "LOCKED"
"LockingKeysString": "LOCKED", },
"UnlockingKeysString": "UNLOCKED", "UnlockingKeysString": {
"WarningKeysLockedString": "!LOCKED!", "message": "UNLOCKED"
"WarningThermalRunaway": [ },
"Thermal", "WarningKeysLockedString": {
"Runaway" "message": "!LOCKED!"
] },
"WarningThermalRunaway": {
"message": "Thermal\nRunaway"
},
"SettingsCalibrationWarning": {
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
"CJCCalibrating": {
"message": "calibrating\n"
},
"SettingsResetWarning": {
"message": "Ben je zeker dat je alle standaardwaarden wil resetten?"
},
"UVLOWarningString": {
"message": "Voedingsspanning LAAG"
},
"UndervoltageString": {
"message": "Onderspanning\n"
},
"InputVoltageString": {
"message": "Voedingsspanning: \n"
},
"SleepingSimpleString": {
"message": "Zzz "
},
"SleepingAdvancedString": {
"message": "Slaapstand...\n"
},
"SleepingTipAdvancedString": {
"message": "Punt: \n"
},
"OffString": {
"message": "Uit"
},
"DeviceFailedValidationWarning": {
"message": "Your device is most likely a counterfeit!"
}
}, },
"characters": { "characters": {
"SettingRightChar": "R", "SettingRightChar": "R",
@@ -53,289 +76,176 @@
"SettingStartSolderingChar": "T", "SettingStartSolderingChar": "T",
"SettingStartSleepChar": "S", "SettingStartSleepChar": "S",
"SettingStartSleepOffChar": "K", "SettingStartSleepOffChar": "K",
"SettingSensitivityOff": "O",
"SettingSensitivityLow": "L",
"SettingSensitivityMedium": "M",
"SettingSensitivityHigh": "H",
"SettingLockDisableChar": "D", "SettingLockDisableChar": "D",
"SettingLockBoostChar": "B", "SettingLockBoostChar": "B",
"SettingLockFullChar": "F" "SettingLockFullChar": "F"
}, },
"menuGroups": { "menuGroups": {
"PowerMenu": { "PowerMenu": {
"text2": [ "displayText": "Power\nsettings",
"Power", "description": ""
"settings"
],
"desc": ""
}, },
"SolderingMenu": { "SolderingMenu": {
"text2": [ "displayText": "Soldeer\nInstellingen",
"Soldeer", "description": ""
"Instellingen"
],
"desc": ""
}, },
"PowerSavingMenu": { "PowerSavingMenu": {
"text2": [ "displayText": "Slaap\nstanden",
"Slaap", "description": ""
"standen"
],
"desc": ""
}, },
"UIMenu": { "UIMenu": {
"text2": [ "displayText": "Gebruikers-\nInterface",
"Gebruikers-", "description": ""
"Interface"
],
"desc": ""
}, },
"AdvancedMenu": { "AdvancedMenu": {
"text2": [ "displayText": "Gevorderde\nInstellingen",
"Gevorderde", "description": ""
"Instellingen"
],
"desc": ""
} }
}, },
"menuOptions": { "menuOptions": {
"DCInCutoff": { "DCInCutoff": {
"text2": [ "displayText": "Spannings-\nbron",
"Spannings-", "description": "Spanningsbron. Stelt minimumspanning in. (DC 10V) (S 3.3V per cel)"
"bron"
],
"desc": "Spanningsbron. Stelt minimumspanning in. (DC 10V) (S 3.3V per cel)"
}, },
"MinVolCell": { "MinVolCell": {
"text2": [ "displayText": "Minimum\nvoltage",
"Minimum", "description": "Minimum allowed voltage per cell (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)"
"voltage"
],
"desc": "Minimum allowed voltage per cell (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)"
}, },
"QCMaxVoltage": { "QCMaxVoltage": {
"text2": [ "displayText": "Vermogen\nWatt",
"Vermogen", "description": "Vermogen van de adapter"
"Watt"
],
"desc": "Vermogen van de adapter"
}, },
"PDNegTimeout": { "PDNegTimeout": {
"text2": [ "displayText": "PD\ntimeout",
"PD", "description": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers"
"timeout" },
], "PDVpdo": {
"desc": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers" "displayText": "PD\nVPDO",
"description": "Enables PPS & EPR modes"
}, },
"BoostTemperature": { "BoostTemperature": {
"text2": [ "displayText": "Verhogings\ntemp",
"Verhogings", "description": "Verhogingstemperatuur"
"temp"
],
"desc": "Verhogingstemperatuur"
}, },
"AutoStart": { "AutoStart": {
"text2": [ "displayText": "Auto\nstart",
"Auto", "description": "Breng de soldeerbout op temperatuur bij het opstarten. (F=Uit | T=Soldeertemperatuur | S=Slaapstand-temperatuur | K=Slaapstand kamertemperatuur)"
"start"
],
"desc": "Breng de soldeerbout op temperatuur bij het opstarten. (F=Uit | T=Soldeertemperatuur | S=Slaapstand-temperatuur | K=Slaapstand kamertemperatuur)"
}, },
"TempChangeShortStep": { "TempChangeShortStep": {
"text2": [ "displayText": "Temp change\nshort",
"Temp change", "description": "Temperature-change-increment on short button press"
"short"
],
"desc": "Temperature-change-increment on short button press"
}, },
"TempChangeLongStep": { "TempChangeLongStep": {
"text2": [ "displayText": "Temp change\nlong",
"Temp change", "description": "Temperature-change-increment on long button press"
"long"
],
"desc": "Temperature-change-increment on long button press"
}, },
"LockingMode": { "LockingMode": {
"text2": [ "displayText": "Allow locking\nbuttons",
"Allow locking", "description": "While soldering, hold down both buttons to toggle locking them (D=disable | B=boost mode only | F=full locking)"
"buttons"
],
"desc": "While soldering, hold down both buttons to toggle locking them (D=disable | B=boost mode only | F=full locking)"
}, },
"MotionSensitivity": { "MotionSensitivity": {
"text2": [ "displayText": "Bewegings-\ngevoeligheid",
"Bewegings-", "description": "Bewegingsgevoeligheid (0=uit | 1=minst gevoelig | ... | 9=meest gevoelig)"
"gevoeligheid"
],
"desc": "Bewegingsgevoeligheid (0=uit | 1=minst gevoelig | ... | 9=meest gevoelig)"
}, },
"SleepTemperature": { "SleepTemperature": {
"text2": [ "displayText": "Slaap\ntemp",
"Slaap", "description": "Temperatuur in slaapstand (°C)"
"temp"
],
"desc": "Temperatuur in slaapstand (°C)"
}, },
"SleepTimeout": { "SleepTimeout": {
"text2": [ "displayText": "Slaap\ntime-out",
"Slaap", "description": "Slaapstand time-out (Minuten | Seconden)"
"time-out"
],
"desc": "Slaapstand time-out (Minuten | Seconden)"
}, },
"ShutdownTimeout": { "ShutdownTimeout": {
"text2": [ "displayText": "Uitschakel\ntime-out",
"Uitschakel", "description": "Automatisch afsluiten time-out (Minuten)"
"time-out"
],
"desc": "Automatisch afsluiten time-out (Minuten)"
}, },
"HallEffSensitivity": { "HallEffSensitivity": {
"text2": [ "displayText": "Hall sensor\nsensitivity",
"Hall sensor", "description": "Sensitivity to magnets (0=uit | 1=minst gevoelig | ... | 9=meest gevoelig)"
"sensitivity"
],
"desc": "Sensitivity to magnets (0=uit | 1=minst gevoelig | ... | 9=meest gevoelig)"
}, },
"TemperatureUnit": { "TemperatureUnit": {
"text2": [ "displayText": "Temperatuur\nschaal",
"Temperatuur", "description": "Temperatuurschaal (°C=Celsius | °F=Fahrenheit)"
"schaal"
],
"desc": "Temperatuurschaal (°C=Celsius | °F=Fahrenheit)"
}, },
"DisplayRotation": { "DisplayRotation": {
"text2": [ "displayText": "Scherm-\noriëntatie",
"Scherm-", "description": "Schermoriëntatie (R=Rechtshandig | L=Linkshandig | A=Automatisch)"
"oriëntatie"
],
"desc": "Schermoriëntatie (R=Rechtshandig | L=Linkshandig | A=Automatisch)"
}, },
"CooldownBlink": { "CooldownBlink": {
"text2": [ "displayText": "Afkoel\nknipper",
"Afkoel", "description": "Temperatuur knippert in hoofdmenu tijdens afkoeling."
"knipper"
],
"desc": "Temperatuur knippert in hoofdmenu tijdens afkoeling."
}, },
"ScrollingSpeed": { "ScrollingSpeed": {
"text2": [ "displayText": "Scrol\nsnelheid",
"Scrol", "description": "Scrolsnelheid van de tekst."
"snelheid"
],
"desc": "Scrolsnelheid van de tekst."
}, },
"ReverseButtonTempChange": { "ReverseButtonTempChange": {
"text2": [ "displayText": "Swap\n+ - keys",
"Swap", "description": "Reverse assignment of buttons for temperature adjustment"
"+ - keys"
],
"desc": "Reverse assignment of buttons for temperature adjustment"
}, },
"AnimSpeed": { "AnimSpeed": {
"text2": [ "displayText": "Anim.\nspeed",
"Anim.", "description": "Pace of icon animations in menu (O=off | T=slow | M=medium | S=fast)"
"speed"
],
"desc": "Pace of icon animations in menu (O=off | T=slow | M=medium | S=fast)"
}, },
"AnimLoop": { "AnimLoop": {
"text2": [ "displayText": "Anim.\nloop",
"Anim.", "description": "Loop icon animations in main menu"
"loop"
],
"desc": "Loop icon animations in main menu"
}, },
"Brightness": { "Brightness": {
"text2": [ "displayText": "Screen\nbrightness",
"Screen", "description": "Adjust the OLED screen brightness"
"brightness"
],
"desc": "Adjust the OLED screen brightness"
}, },
"ColourInversion": { "ColourInversion": {
"text2": [ "displayText": "Invert\nscreen",
"Invert", "description": "Invert the OLED screen colors"
"screen"
],
"desc": "Invert the OLED screen colors"
}, },
"LOGOTime": { "LOGOTime": {
"text2": [ "displayText": "Boot logo\nduration",
"Boot logo", "description": "Set boot logo duration (s=seconds)"
"duration"
],
"desc": "Set boot logo duration (s=seconds)"
}, },
"AdvancedIdle": { "AdvancedIdle": {
"text2": [ "displayText": "Gedetailleerd\nslaapscherm",
"Gedetailleerd", "description": "Gedetailleerde informatie in een kleiner lettertype in het slaapscherm."
"slaapscherm"
],
"desc": "Gedetailleerde informatie in een kleiner lettertype in het slaapscherm."
}, },
"AdvancedSoldering": { "AdvancedSoldering": {
"text2": [ "displayText": "Gedetailleerd\nsoldeerscherm",
"Gedetailleerd", "description": "Gedetailleerde informatie in kleiner lettertype in soldeerscherm."
"soldeerscherm" },
], "BluetoothLE": {
"desc": "Gedetailleerde informatie in kleiner lettertype in soldeerscherm." "displayText": "Bluetooth\n",
"description": "Enables BLE"
}, },
"PowerLimit": { "PowerLimit": {
"text2": [ "displayText": "Power\nlimit",
"Power", "description": "Maximum power the iron can use (W=watt)"
"limit"
],
"desc": "Maximum power the iron can use (W=watt)"
}, },
"CalibrateCJC": { "CalibrateCJC": {
"text2": [ "displayText": "Calibrate CJC\nat next boot",
"Calibrate CJC", "description": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
"at next boot"
],
"desc": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
}, },
"VoltageCalibration": { "VoltageCalibration": {
"text2": [ "displayText": "Calibreer\nvoedingsspanning?",
"Calibreer", "description": "VIN Calibreren. Bevestigen door knoppen lang in te drukken."
"voedingsspanning?"
],
"desc": "VIN Calibreren. Bevestigen door knoppen lang in te drukken."
}, },
"PowerPulsePower": { "PowerPulsePower": {
"text2": [ "displayText": "Power\npulse",
"Power", "description": "Intensity of power of keep-awake-pulse (W=watt)"
"pulse"
],
"desc": "Intensity of power of keep-awake-pulse (W=watt)"
}, },
"PowerPulseWait": { "PowerPulseWait": {
"text2": [ "displayText": "Power pulse\ndelay",
"Power pulse", "description": "Delay before keep-awake-pulse is triggered (x 2.5s)"
"delay"
],
"desc": "Delay before keep-awake-pulse is triggered (x 2.5s)"
}, },
"PowerPulseDuration": { "PowerPulseDuration": {
"text2": [ "displayText": "Power pulse\nduration",
"Power pulse", "description": "Keep-awake-pulse duration (x 250ms)"
"duration"
],
"desc": "Keep-awake-pulse duration (x 250ms)"
}, },
"SettingsReset": { "SettingsReset": {
"text2": [ "displayText": "Instellingen\nresetten?",
"Instellingen", "description": "Alle instellingen resetten."
"resetten?"
],
"desc": "Alle instellingen resetten."
}, },
"LanguageSwitch": { "LanguageSwitch": {
"text2": [ "displayText": "Spraak:\n NL_BE Vlaams",
"Spraak:", "description": ""
" NL_BE Vlaams"
],
"desc": ""
} }
} }
} }

View File

@@ -2,44 +2,67 @@
"languageCode": "PL", "languageCode": "PL",
"languageLocalName": "Polski", "languageLocalName": "Polski",
"tempUnitFahrenheit": false, "tempUnitFahrenheit": false,
"messages": {
"SettingsCalibrationWarning": "Upewnij się, że końcówka i uchwyt mają temperaturę pokojową podczas następnego rozruchu!",
"CJCCalibrating": "kalibracja",
"SettingsResetWarning": "Czy na pewno chcesz przywrócić ustawienia fabryczne?",
"UVLOWarningString": "NIS. NAP",
"UndervoltageString": "Zbyt niskie nap.",
"InputVoltageString": "Nap. wej.:",
"SleepingSimpleString": "Zzz!",
"SleepingAdvancedString": "Tr. uśpienia",
"SleepingTipAdvancedString": "Grot:",
"OffString": "Wył",
"DeviceFailedValidationWarning": "Twoje urządzenie jest najprawdopodobniej podróbką!"
},
"messagesWarn": { "messagesWarn": {
"CJCCalibrationDone": [ "CJCCalibrationDone": {
"Calibration", "message": "Kalibracja\nwykonana!"
"done!" },
], "ResetOKMessage": {
"ResetOKMessage": "Reset OK", "message": "Reset OK"
"SettingsResetMessage": [ },
"Ust. zresetowane", "SettingsResetMessage": {
"" "message": "Ust. \nzresetowane"
], },
"NoAccelerometerMessage": [ "NoAccelerometerMessage": {
"Nie rozpoznano", "message": "Nie rozpoznano\nakcelerometru!"
"akcelerometru!" },
], "NoPowerDeliveryMessage": {
"NoPowerDeliveryMessage": [ "message": "Nie rozpoznano\nkont. USB-PD IC!"
"Nie rozpoznano", },
"kont. USB-PD IC!" "LockingKeysString": {
], "message": " ZABLOK."
"LockingKeysString": " ZABLOK.", },
"UnlockingKeysString": "ODBLOK.", "UnlockingKeysString": {
"WarningKeysLockedString": "!ZABLOK!", "message": "ODBLOK."
"WarningThermalRunaway": [ },
"Ucieczka", "WarningKeysLockedString": {
"termiczna" "message": "!ZABLOK!"
] },
"WarningThermalRunaway": {
"message": "Ucieczka\ntermiczna"
},
"SettingsCalibrationWarning": {
"message": "Upewnij się, że końcówka i uchwyt mają temperaturę pokojową podczas następnego rozruchu!"
},
"CJCCalibrating": {
"message": "kalibracja\n"
},
"SettingsResetWarning": {
"message": "Czy na pewno chcesz przywrócić ustawienia fabryczne?"
},
"UVLOWarningString": {
"message": "NIS. NAP"
},
"UndervoltageString": {
"message": "Zbyt niskie nap.\n"
},
"InputVoltageString": {
"message": "Nap. wej.: \n"
},
"SleepingSimpleString": {
"message": "Zzz!"
},
"SleepingAdvancedString": {
"message": "Tr. uśpienia\n"
},
"SleepingTipAdvancedString": {
"message": "Grot: \n"
},
"OffString": {
"message": "Wył"
},
"DeviceFailedValidationWarning": {
"message": "Twoje urządzenie jest najprawdopodobniej podróbką!"
}
}, },
"characters": { "characters": {
"SettingRightChar": "P", "SettingRightChar": "P",
@@ -53,289 +76,176 @@
"SettingStartSolderingChar": "T", "SettingStartSolderingChar": "T",
"SettingStartSleepChar": "Z", "SettingStartSleepChar": "Z",
"SettingStartSleepOffChar": "O", "SettingStartSleepOffChar": "O",
"SettingSensitivityOff": "O",
"SettingSensitivityLow": "N",
"SettingSensitivityMedium": "Ś",
"SettingSensitivityHigh": "W",
"SettingLockDisableChar": "W", "SettingLockDisableChar": "W",
"SettingLockBoostChar": "B", "SettingLockBoostChar": "B",
"SettingLockFullChar": "P" "SettingLockFullChar": "P"
}, },
"menuGroups": { "menuGroups": {
"PowerMenu": { "PowerMenu": {
"text2": [ "displayText": "Ustawienia\nzasilania",
"Ustawienia", "description": ""
"zasilania"
],
"desc": ""
}, },
"SolderingMenu": { "SolderingMenu": {
"text2": [ "displayText": "Lutowanie\n",
"Lutowanie", "description": ""
""
],
"desc": ""
}, },
"PowerSavingMenu": { "PowerSavingMenu": {
"text2": [ "displayText": "Oszcz.\nenergii",
"Oszcz.", "description": ""
"energii"
],
"desc": ""
}, },
"UIMenu": { "UIMenu": {
"text2": [ "displayText": "Interfejs\nużytkownika",
"Interfejs", "description": ""
"użytkownika"
],
"desc": ""
}, },
"AdvancedMenu": { "AdvancedMenu": {
"text2": [ "displayText": "Ustawienia\nzaawans.",
"Ustawienia", "description": ""
"zaawans."
],
"desc": ""
} }
}, },
"menuOptions": { "menuOptions": {
"DCInCutoff": { "DCInCutoff": {
"text2": [ "displayText": "Źródło\nzasilania",
"Źródło", "description": "Źródło zasilania. Ustaw napięcie odcięcia. (DC 10V) (S 3.3V dla ogniw Li, wyłącz limit mocy)"
"zasilania"
],
"desc": "Źródło zasilania. Ustaw napięcie odcięcia. (DC 10V) (S 3.3V dla ogniw Li, wyłącz limit mocy)"
}, },
"MinVolCell": { "MinVolCell": {
"text2": [ "displayText": "Minimalne\nnapięcie",
"Minimalne", "description": "Minimalne dozwolone napięcie na komórkę (3S: 3 - 3,7V | 4-6S: 2,4 - 3,7V)"
"napięcie"
],
"desc": "Minimalne dozwolone napięcie na komórkę (3S: 3 - 3,7V | 4-6S: 2,4 - 3,7V)"
}, },
"QCMaxVoltage": { "QCMaxVoltage": {
"text2": [ "displayText": "QC\nnapięcie",
"QC", "description": "Maksymalne napięcie, które lutownica będzie próbowała wynegocjować z ładowarką Quick Charge (V)"
"napięcie"
],
"desc": "Maksymalne napięcie, które lutownica będzie próbowała wynegocjować z ładowarką Quick Charge (V)"
}, },
"PDNegTimeout": { "PDNegTimeout": {
"text2": [ "displayText": "Limit czasu\nPD",
"Limit czasu", "description": "Limit czasu negocjacji PD w krokach co 100 ms dla zgodności z niektórymi ładowarkami QC (0: wyłączone)"
"PD" },
], "PDVpdo": {
"desc": "Limit czasu negocjacji PD w krokach co 100 ms dla zgodności z niektórymi ładowarkami QC (0: wyłączone)" "displayText": "PD\nVPDO",
"description": "Włącza tryby PPS & EPR."
}, },
"BoostTemperature": { "BoostTemperature": {
"text2": [ "displayText": "Temp.\nboost",
"Temp.", "description": "Temperatura w trybie \"boost\" "
"boost"
],
"desc": "Temperatura w trybie \"boost\" "
}, },
"AutoStart": { "AutoStart": {
"text2": [ "displayText": "Aut. uruch.\ntr. lutowania",
"Aut. uruch.", "description": "Automatyczne uruchamianie trybu lutowania po włączeniu zasilania. (B: wyłączone | T: lutowanie | Z: uśpienie | O: uśpienie w temp. pokojowej)"
"tr. lutowania"
],
"desc": "Automatyczne uruchamianie trybu lutowania po włączeniu zasilania. (B: wyłączone | T: lutowanie | Z: uśpienie | O: uśpienie w temp. pokojowej)"
}, },
"TempChangeShortStep": { "TempChangeShortStep": {
"text2": [ "displayText": "Zm. temp.\nkr. przyc.",
"Zm. temp.", "description": "Wartość zmiany temperatury, po krótkim przyciśnięciu (°C)"
"kr. przyc."
],
"desc": "Wartość zmiany temperatury, po krótkim przyciśnięciu (°C)"
}, },
"TempChangeLongStep": { "TempChangeLongStep": {
"text2": [ "displayText": "Zm. temp.\ndł. przyc.",
"Zm. temp.", "description": "Wartość zmiany temperatury, po długim przyciśnięciu (°C)"
"dł. przyc."
],
"desc": "Wartość zmiany temperatury, po długim przyciśnięciu (°C)"
}, },
"LockingMode": { "LockingMode": {
"text2": [ "displayText": "Blokada\nprzycisków",
"Blokada", "description": "W trybie lutowania, wciśnij oba przyciski aby je zablokować (O=Wyłączona | B=tylko Boost | P=pełna blokada)"
"przycisków"
],
"desc": "W trybie lutowania, wciśnij oba przyciski aby je zablokować (O=Wyłączona | B=tylko Boost | P=pełna blokada)"
}, },
"MotionSensitivity": { "MotionSensitivity": {
"text2": [ "displayText": "Czułość\nwykr. ruchu",
"Czułość", "description": "Czułość wykrywania ruchu (0: Wyłączona | 1: Minimalna | ... | 9: Maksymalna)"
"wykr. ruchu"
],
"desc": "Czułość wykrywania ruchu (0: Wyłączona | 1: Minimalna | ... | 9: Maksymalna)"
}, },
"SleepTemperature": { "SleepTemperature": {
"text2": [ "displayText": "Temp.\nuśpienia",
"Temp.", "description": "Temperatura w trybie uśpienia (°C)"
"uśpienia"
],
"desc": "Temperatura w trybie uśpienia (°C)"
}, },
"SleepTimeout": { "SleepTimeout": {
"text2": [ "displayText": "Czas do\nuśpienia",
"Czas do", "description": "Czas do przejścia w tryb uśpienia (minuty | sekundy)"
"uśpienia"
],
"desc": "Czas do przejścia w tryb uśpienia (minuty | sekundy)"
}, },
"ShutdownTimeout": { "ShutdownTimeout": {
"text2": [ "displayText": "Czas do\nwyłączenia",
"Czas do", "description": "Czas do wyłączenia (minuty)"
"wyłączenia"
],
"desc": "Czas do wyłączenia (minuty)"
}, },
"HallEffSensitivity": { "HallEffSensitivity": {
"text2": [ "displayText": "Czułość\ncz. Halla",
"Czułość", "description": "Czułość czujnika Halla, używanego do przechodznia w tryb uśpienia (0: Wyłączona | 1: Minimalna | ... | 9: Maksymalna)"
"cz. Halla"
],
"desc": "Czułość czujnika Halla, używanego do przechodznia w tryb uśpienia (0: Wyłączona | 1: Minimalna | ... | 9: Maksymalna)"
}, },
"TemperatureUnit": { "TemperatureUnit": {
"text2": [ "displayText": "Jednostka\ntemperatury",
"Jednostka", "description": "Jednostka temperatury (C: Celciusz | F: Fahrenheit)"
"temperatury"
],
"desc": "Jednostka temperatury (C: Celciusz | F: Fahrenheit)"
}, },
"DisplayRotation": { "DisplayRotation": {
"text2": [ "displayText": "Obrót\nekranu",
"Obrót", "description": "Obrót ekranu (P: dla praworęcznych | L: dla leworęcznych | A: automatycznie)"
"ekranu"
],
"desc": "Obrót ekranu (P: dla praworęcznych | L: dla leworęcznych | A: automatycznie)"
}, },
"CooldownBlink": { "CooldownBlink": {
"text2": [ "displayText": "Mig. podczas\nwychładzania",
"Mig. podczas", "description": "Temperatura miga podczas wychładzania, gdy grot jest wciąż gorący"
"wychładzania"
],
"desc": "Temperatura miga podczas wychładzania, gdy grot jest wciąż gorący"
}, },
"ScrollingSpeed": { "ScrollingSpeed": {
"text2": [ "displayText": "Sz. przew.\ntekstu",
"Sz. przew.", "description": "Szybkość przewijania tekstu"
"tekstu"
],
"desc": "Szybkość przewijania tekstu"
}, },
"ReverseButtonTempChange": { "ReverseButtonTempChange": {
"text2": [ "displayText": "Zamień przyc.\n+ -",
"Zamień przyc.", "description": "Zamienia działanie przycisków zmiany temperatury grotu"
"+ -"
],
"desc": "Zamienia działanie przycisków zmiany temperatury grotu"
}, },
"AnimSpeed": { "AnimSpeed": {
"text2": [ "displayText": "Prędkosć\nanimacji",
"Prędkosć", "description": "Prędkość animacji ikon w menu (O: wył. | W: mała | M: średnia | S: duża)"
"animacji"
],
"desc": "Prędkość animacji ikon w menu (O: wył. | W: mała | M: średnia | S: duża)"
}, },
"AnimLoop": { "AnimLoop": {
"text2": [ "displayText": "Zapętlona\nanimacja",
"Zapętlona", "description": "Zapętla animację ikon w menu głównym"
"animacja"
],
"desc": "Zapętla animację ikon w menu głównym"
}, },
"Brightness": { "Brightness": {
"text2": [ "displayText": "Jasność\nwyświetlacza",
"Jasność", "description": "Regulacja kontrastu/jasności wyświetlacza OLED"
"wyświetlacza"
],
"desc": "Regulacja kontrastu/jasności wyświetlacza OLED"
}, },
"ColourInversion": { "ColourInversion": {
"text2": [ "displayText": "Odwrócenie\nkolorów",
"Odwrócenie", "description": "Odwrócenie kolorów wyświetlacza OLED"
"kolorów"
],
"desc": "Odwrócenie kolorów wyświetlacza OLED"
}, },
"LOGOTime": { "LOGOTime": {
"text2": [ "displayText": "Długość wyś.\nloga",
"Długość wyś.", "description": "Ustawia czas wyświetlania loga podczas uruchamiania (s=sekund)"
"loga"
],
"desc": "Ustawia czas wyświetlania loga podczas uruchamiania (s=sekund)"
}, },
"AdvancedIdle": { "AdvancedIdle": {
"text2": [ "displayText": "Szeczegółowy\nekran bezczy.",
"Szeczegółowy", "description": "Wyświetla szczegółowe informacje za pomocą mniejszej czcionki na ekranie bezczynności"
"ekran bezczy."
],
"desc": "Wyświetla szczegółowe informacje za pomocą mniejszej czcionki na ekranie bezczynności"
}, },
"AdvancedSoldering": { "AdvancedSoldering": {
"text2": [ "displayText": "Sz. inf. w\ntr. lutowania",
"Sz. inf. w", "description": "Wyświetl szczegółowe informacje w trybie lutowania"
"tr. lutowania" },
], "BluetoothLE": {
"desc": "Wyświetl szczegółowe informacje w trybie lutowania" "displayText": "Bluetooth\n",
"description": "Enables BLE"
}, },
"PowerLimit": { "PowerLimit": {
"text2": [ "displayText": "Ogr.\nmocy",
"Ogr.", "description": "Maksymalna moc (W), jakiej może użyć lutownica"
"mocy"
],
"desc": "Maksymalna moc (W), jakiej może użyć lutownica"
}, },
"CalibrateCJC": { "CalibrateCJC": {
"text2": [ "displayText": "Kalibracja temperatury\nprzy następnym uruchomieniu",
"Kalibracja temperatury", "description": "Kalibracja temperatury przy następnym włączeniu (nie jest wymagana, jeśli różnica temperatur jest mniejsza niż 5°C"
"przy następnym uruchomieniu"
],
"desc": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
}, },
"VoltageCalibration": { "VoltageCalibration": {
"text2": [ "displayText": "Kalibracja\nnapięcia",
"Kalibracja", "description": "Kalibracja napięcia wejściowego. Krótkie naciśnięcie, aby ustawić, długie naciśnięcie, aby wyjść."
"napięcia"
],
"desc": "Kalibracja napięcia wejściowego. Krótkie naciśnięcie, aby ustawić, długie naciśnięcie, aby wyjść."
}, },
"PowerPulsePower": { "PowerPulsePower": {
"text2": [ "displayText": "Moc\nimpulsu",
"Moc", "description": "W przypadku używania powerbanku, utrzymuj moc na poziomie (W) aby nie uśpić powerbanku"
"impulsu"
],
"desc": "W przypadku używania powerbanku, utrzymuj moc na poziomie (W) aby nie uśpić powerbanku"
}, },
"PowerPulseWait": { "PowerPulseWait": {
"text2": [ "displayText": "Czas między\nimp. mocy",
"Czas między", "description": "Czas między kolejnymi impulsami mocy zapobiegającymi usypianiu powerbanku (x2,5 s)"
"imp. mocy"
],
"desc": "Czas między kolejnymi impulsami mocy zapobiegającymi usypianiu powerbanku (x2,5 s)"
}, },
"PowerPulseDuration": { "PowerPulseDuration": {
"text2": [ "displayText": "Długość\nimpulsu mocy",
"Długość", "description": "Długość impulsu mocy zapobiegającego usypianiu powerbanku (x250 ms)"
"impulsu mocy"
],
"desc": "Długość impulsu mocy zapobiegającego usypianiu powerbanku (x250 ms)"
}, },
"SettingsReset": { "SettingsReset": {
"text2": [ "displayText": "Ustawienia\nfabryczne",
"Ustawienia", "description": "Resetuje wszystkie ustawienia"
"fabryczne"
],
"desc": "Resetuje wszystkie ustawienia"
}, },
"LanguageSwitch": { "LanguageSwitch": {
"text2": [ "displayText": "Język:\n PL Polski",
"Język:", "description": ""
" PL Polski"
],
"desc": ""
} }
} }
} }

View File

@@ -2,44 +2,67 @@
"languageCode": "PT", "languageCode": "PT",
"languageLocalName": "Português", "languageLocalName": "Português",
"tempUnitFahrenheit": false, "tempUnitFahrenheit": false,
"messages": {
"SettingsCalibrationWarning": "Before rebooting, make sure tip & handle are at room temperature!",
"CJCCalibrating": "calibrating",
"SettingsResetWarning": "Definições de fábrica?",
"UVLOWarningString": "DC BAIXO",
"UndervoltageString": "Subtensão",
"InputVoltageString": "Tensão ",
"SleepingSimpleString": "Zzzz",
"SleepingAdvancedString": "Repouso...",
"SleepingTipAdvancedString": "Ponta:",
"OffString": "Off",
"DeviceFailedValidationWarning": "Your device is most likely a counterfeit!"
},
"messagesWarn": { "messagesWarn": {
"CJCCalibrationDone": [ "CJCCalibrationDone": {
"Calibration", "message": "Calibração\nefetuada!"
"done!" },
], "ResetOKMessage": {
"ResetOKMessage": "Reset OK", "message": "Reset OK"
"SettingsResetMessage": [ },
"Certain settings", "SettingsResetMessage": {
"were changed!" "message": "Algumas configurações\nforam alteradas!"
], },
"NoAccelerometerMessage": [ "NoAccelerometerMessage": {
"No accelerometer", "message": "Acelerómetro não\ndetectado!"
"detected!" },
], "NoPowerDeliveryMessage": {
"NoPowerDeliveryMessage": [ "message": "USB-PD IC não\ndetectado!"
"No USB-PD IC", },
"detected!" "LockingKeysString": {
], "message": "Bloqueado"
"LockingKeysString": "LOCKED", },
"UnlockingKeysString": "UNLOCKED", "UnlockingKeysString": {
"WarningKeysLockedString": "!LOCKED!", "message": "Desbloqueado"
"WarningThermalRunaway": [ },
"Thermal", "WarningKeysLockedString": {
"Runaway" "message": "!Bloqueado!"
] },
"WarningThermalRunaway": {
"message": "Thermal\nRunaway"
},
"SettingsCalibrationWarning": {
"message": "Antes de reninciar certifique-se que o ferro est à temperatura ambiente!"
},
"CJCCalibrating": {
"message": "calibrar\n"
},
"SettingsResetWarning": {
"message": "Definições de fábrica?"
},
"UVLOWarningString": {
"message": "DC BAIXO"
},
"UndervoltageString": {
"message": "Subtensão\n"
},
"InputVoltageString": {
"message": "Tensão: \n"
},
"SleepingSimpleString": {
"message": "Zzzz"
},
"SleepingAdvancedString": {
"message": "Repouso...\n"
},
"SleepingTipAdvancedString": {
"message": "Ponta: \n"
},
"OffString": {
"message": "Off"
},
"DeviceFailedValidationWarning": {
"message": "Seu dispositivo provavelmente é falsificado!"
}
}, },
"characters": { "characters": {
"SettingRightChar": "D", "SettingRightChar": "D",
@@ -53,289 +76,176 @@
"SettingStartSolderingChar": "S", "SettingStartSolderingChar": "S",
"SettingStartSleepChar": "H", "SettingStartSleepChar": "H",
"SettingStartSleepOffChar": "A", "SettingStartSleepOffChar": "A",
"SettingSensitivityOff": "O",
"SettingSensitivityLow": "L",
"SettingSensitivityMedium": "M",
"SettingSensitivityHigh": "H",
"SettingLockDisableChar": "D", "SettingLockDisableChar": "D",
"SettingLockBoostChar": "B", "SettingLockBoostChar": "B",
"SettingLockFullChar": "F" "SettingLockFullChar": "F"
}, },
"menuGroups": { "menuGroups": {
"PowerMenu": { "PowerMenu": {
"text2": [ "displayText": "Configurações de\nenergia",
"Power", "description": ""
"settings"
],
"desc": ""
}, },
"SolderingMenu": { "SolderingMenu": {
"text2": [ "displayText": "Configurações\nSolda",
"Configurações", "description": ""
"Solda"
],
"desc": ""
}, },
"PowerSavingMenu": { "PowerSavingMenu": {
"text2": [ "displayText": "Modos\nRepouso",
"Modos", "description": ""
"Repouso"
],
"desc": ""
}, },
"UIMenu": { "UIMenu": {
"text2": [ "displayText": "Interface\nUtilizador",
"Interface", "description": ""
"Utilizador"
],
"desc": ""
}, },
"AdvancedMenu": { "AdvancedMenu": {
"text2": [ "displayText": "Menu\nAvançado",
"Menu", "description": ""
"Avançado"
],
"desc": ""
} }
}, },
"menuOptions": { "menuOptions": {
"DCInCutoff": { "DCInCutoff": {
"text2": [ "displayText": "Fonte\nalimentação",
"Fonte", "description": "Fonte de alimentação. Define a tensão de corte. (DC=10V) (S=3.3V/célula)"
"alimentação"
],
"desc": "Fonte de alimentação. Define a tensão de corte. (DC=10V) (S=3.3V/célula)"
}, },
"MinVolCell": { "MinVolCell": {
"text2": [ "displayText": "Tensão\nmínima",
"Minimum", "description": "Tensão mínima permitida por célula de bateria (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)"
"voltage"
],
"desc": "Minimum allowed voltage per battery cell (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)"
}, },
"QCMaxVoltage": { "QCMaxVoltage": {
"text2": [ "displayText": "Potência\nFonte",
"Potência", "description": "Potência da fonte usada (Watt)"
"Fonte"
],
"desc": "Potência da fonte usada (Watt)"
}, },
"PDNegTimeout": { "PDNegTimeout": {
"text2": [ "displayText": "PD tempo\nlimite",
"PD", "description": "Tempo limite de negoiciação de PD de 100ms para compatibilidade com alguns carregadores é (0: disabled)"
"timeout" },
], "PDVpdo": {
"desc": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers (0: disabled)" "displayText": "PD\nVPDO",
"description": "Activa o modo PPS & EPR"
}, },
"BoostTemperature": { "BoostTemperature": {
"text2": [ "displayText": "Modo turbo\ntemperat.",
"Modo turbo", "description": "Ajuste de temperatura do \"modo turbo\""
"temperat."
],
"desc": "Ajuste de temperatura do \"modo turbo\""
}, },
"AutoStart": { "AutoStart": {
"text2": [ "displayText": "Aquecimento\nautomático",
"Partida", "description": "Aquece a ponta automaticamente ao ligar (D=desligar | S=soldagem | H=hibernar | A=hibernar temp. ambiente)"
"automática"
],
"desc": "Aquece a ponta automaticamente ao ligar (D=desligar | S=soldagem | H=hibernar | A=hibernar temp. ambiente)"
}, },
"TempChangeShortStep": { "TempChangeShortStep": {
"text2": [ "displayText": "Temp mudança\ncurta",
"Temp change", "description": "A temperatura será aumentada com um click curto"
"short"
],
"desc": "Temperature-change-increment on short button press"
}, },
"TempChangeLongStep": { "TempChangeLongStep": {
"text2": [ "displayText": "Temp mudança\nlonga",
"Temp change", "description": "A temperatura será aumentada com um click longo"
"long"
],
"desc": "Temperature-change-increment on long button press"
}, },
"LockingMode": { "LockingMode": {
"text2": [ "displayText": "Permitir bloquear\nbutões",
"Allow locking", "description": "Durante a solda primir os dois butões para alternar entre (D=disativas | B=boost mode | F=bloqueio total)"
"buttons"
],
"desc": "While soldering, hold down both buttons to toggle locking them (D=disable | B=boost mode only | F=full locking)"
}, },
"MotionSensitivity": { "MotionSensitivity": {
"text2": [ "displayText": "Sensibilidade\nmovimento",
"Sensibilidade", "description": "Sensibilidade ao movimento (0=Desligado | 1=Menor | ... | 9=Maior)"
"movimento"
],
"desc": "Sensibilidade ao movimento (0=Desligado | 1=Menor | ... | 9=Maior)"
}, },
"SleepTemperature": { "SleepTemperature": {
"text2": [ "displayText": "Temperatura\nrepouso",
"Temperat.", "description": "Temperatura de repouso (C)"
"repouso"
],
"desc": "Temperatura de repouso (C)"
}, },
"SleepTimeout": { "SleepTimeout": {
"text2": [ "displayText": "Tempo\nrepouso",
"Tempo", "description": "Tempo para repouso (Minutos | Segundos)"
"repouso"
],
"desc": "Tempo para repouso (Minutos | Segundos)"
}, },
"ShutdownTimeout": { "ShutdownTimeout": {
"text2": [ "displayText": "Tempo\ndesligar",
"Tempo", "description": "Tempo para desligar (Minutos)"
"desligam."
],
"desc": "Tempo para desligamento (Minutos)"
}, },
"HallEffSensitivity": { "HallEffSensitivity": {
"text2": [ "displayText": "Sensibilidade de\nmagentismo",
"Hall sensor", "description": "Sensibilidade de magnetismo (0=Desligado | 1=Menor | ... | 9=Maior)"
"sensitivity"
],
"desc": "Sensitivity to magnets (0=Desligado | 1=Menor | ... | 9=Maior)"
}, },
"TemperatureUnit": { "TemperatureUnit": {
"text2": [ "displayText": "Unidade\ntemperatura",
"Unidade", "description": "Unidade de temperatura (C=Celsius | F=Fahrenheit)"
"temperatura"
],
"desc": "Unidade de temperatura (C=Celsius | F=Fahrenheit)"
}, },
"DisplayRotation": { "DisplayRotation": {
"text2": [ "displayText": "Orientação\necrã",
"Orientação", "description": "Orientação do ecrã (D=estro | C=anhoto | A=utomática)"
"tela"
],
"desc": "Orientação da tela (D=estro | C=anhoto | A=utomática)"
}, },
"CooldownBlink": { "CooldownBlink": {
"text2": [ "displayText": "Piscar ao\narrefecer",
"Piscar ao", "description": "Faz o valor da temperatura piscar durante o arrefecimento"
"arrefecer"
],
"desc": "Faz o valor da temperatura piscar durante o arrefecimento"
}, },
"ScrollingSpeed": { "ScrollingSpeed": {
"text2": [ "displayText": "Velocidade\ntexto ajuda",
"Velocidade", "description": "Velocidade a que o texto é mostrado"
"texto ajuda"
],
"desc": "Velocidade a que o texto é exibido"
}, },
"ReverseButtonTempChange": { "ReverseButtonTempChange": {
"text2": [ "displayText": "Mudar\n+ - teclas",
"Swap", "description": "Inverter o alinhamento dos butões para ajudar a temperatura"
"+ - keys"
],
"desc": "Reverse assignment of buttons for temperature adjustment"
}, },
"AnimSpeed": { "AnimSpeed": {
"text2": [ "displayText": "Velocidade de\nanimação",
"Anim.", "description": "Sitio das animações no menu (O=off | S=lentas | M=medias | F=rapidas)"
"speed"
],
"desc": "Pace of icon animations in menu (O=off | S=slow | M=medium | F=fast)"
}, },
"AnimLoop": { "AnimLoop": {
"text2": [ "displayText": "Repetir\nanimações",
"Anim.", "description": "Repetir icon de animações no ecrã principal"
"loop"
],
"desc": "Loop icon animations in main menu"
}, },
"Brightness": { "Brightness": {
"text2": [ "displayText": "Screen\nbrightness",
"Screen", "description": "Ajustar o brilho do ecrã OLED"
"brightness"
],
"desc": "Adjust the OLED screen brightness"
}, },
"ColourInversion": { "ColourInversion": {
"text2": [ "displayText": "Inverter\necrã",
"Invert", "description": "Inverter as cores do ecrã OLED"
"screen"
],
"desc": "Invert the OLED screen colors"
}, },
"LOGOTime": { "LOGOTime": {
"text2": [ "displayText": "Duração do\nlogo no arranque",
"Boot logo", "description": "Definir a duração do logotipo no arranque em (s=segundos)"
"duration"
],
"desc": "Set boot logo duration (s=seconds)"
}, },
"AdvancedIdle": { "AdvancedIdle": {
"text2": [ "displayText": "Ecrã repouso\navançada",
"Tela repouso", "description": "Mostra informações avançadas quando em espera"
"avançada"
],
"desc": "Exibe informações avançadas quando em espera"
}, },
"AdvancedSoldering": { "AdvancedSoldering": {
"text2": [ "displayText": "Ecrã trabalho\navançado",
"Tela trabalho", "description": "Mostra informações avançadas durante o uso"
"avançada" },
], "BluetoothLE": {
"desc": "Exibe informações avançadas durante o uso" "displayText": "Bluetooth\n",
"description": "Enables BLE"
}, },
"PowerLimit": { "PowerLimit": {
"text2": [ "displayText": "Limite de\npotência",
"Power", "description": "Potência máxima a usar (W=watt)"
"limit"
],
"desc": "Maximum power the iron can use (W=watt)"
}, },
"CalibrateCJC": { "CalibrateCJC": {
"text2": [ "displayText": "Calibrar CJC\nno prozimo arranque",
"Calibrate CJC", "description": "No próximo arranque CJC será calibrada (não será necessário caso o Delta T seja < 5°C)"
"at next boot"
],
"desc": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
}, },
"VoltageCalibration": { "VoltageCalibration": {
"text2": [ "displayText": "Calibrar\ntensão",
"Calibrar", "description": "Calibra a tensão de alimentação. Use os botões para ajustar o valor. Mantenha pressionado para sair"
"tensão"
],
"desc": "Calibra a tensão de alimentação. Use os botões para ajustar o valor. Mantenha pressionado para sair"
}, },
"PowerPulsePower": { "PowerPulsePower": {
"text2": [ "displayText": "Potência\ndo pulso",
"Power", "description": "Intensidade de potência de arranque (W=watt)"
"pulse"
],
"desc": "Intensity of power of keep-awake-pulse (W=watt)"
}, },
"PowerPulseWait": { "PowerPulseWait": {
"text2": [ "displayText": "Espera do\npulso",
"Power pulse", "description": "Espera entre o acordar e o envio da rectivação (x 2.5s)"
"delay"
],
"desc": "Delay before keep-awake-pulse is triggered (x 2.5s)"
}, },
"PowerPulseDuration": { "PowerPulseDuration": {
"text2": [ "displayText": "Duração\npulso",
"Power pulse", "description": "Manter os inplosus de rectivação em (x 250ms)"
"duration"
],
"desc": "Keep-awake-pulse duration (x 250ms)"
}, },
"SettingsReset": { "SettingsReset": {
"text2": [ "displayText": "Reset de\nfábrica?",
"Reset de", "description": "Repôe todos os ajustes"
"fábrica?"
],
"desc": "Reverte todos ajustes"
}, },
"LanguageSwitch": { "LanguageSwitch": {
"text2": [ "displayText": "Idioma:\n PT Português",
"Idioma:", "description": ""
" PT Português"
],
"desc": ""
} }
} }
} }

View File

@@ -2,44 +2,67 @@
"languageCode": "RO", "languageCode": "RO",
"languageLocalName": "Română", "languageLocalName": "Română",
"tempUnitFahrenheit": true, "tempUnitFahrenheit": true,
"messages": {
"SettingsCalibrationWarning": "Before rebooting, make sure tip & handle are at room temperature!",
"CJCCalibrating": "calibrating",
"SettingsResetWarning": "Sigur doriti să restaurati la setările implicite?",
"UVLOWarningString": "DC LOW",
"UndervoltageString": "Sub tensiune",
"InputVoltageString": "Intrare V: ",
"SleepingSimpleString": "Zzzz",
"SleepingAdvancedString": "Adormit...",
"SleepingTipAdvancedString": "Tip:",
"OffString": "Nu",
"DeviceFailedValidationWarning": "Your device is most likely a counterfeit!"
},
"messagesWarn": { "messagesWarn": {
"CJCCalibrationDone": [ "CJCCalibrationDone": {
"Calibration", "message": "Calibration\ndone!"
"done!" },
], "ResetOKMessage": {
"ResetOKMessage": "Reset OK", "message": "Reset OK"
"SettingsResetMessage": [ },
"Setările au fost", "SettingsResetMessage": {
"resetate!" "message": "Setările au fost\nresetate!"
], },
"NoAccelerometerMessage": [ "NoAccelerometerMessage": {
"Nu accelerometru", "message": "Fără accelerometru\ndetectat!"
"detectat!" },
], "NoPowerDeliveryMessage": {
"NoPowerDeliveryMessage": [ "message": "Fără USB-PD IC\ndetectat!"
"Fără USB-PD IC", },
"detectat!" "LockingKeysString": {
], "message": "BLOCAT"
"LockingKeysString": "BLOCAT", },
"UnlockingKeysString": "DEBLOCAT", "UnlockingKeysString": {
"WarningKeysLockedString": "!BLOCAT!", "message": "DEBLOCAT"
"WarningThermalRunaway": [ },
"Incalzire", "WarningKeysLockedString": {
"Esuata" "message": "!BLOCAT!"
] },
"WarningThermalRunaway": {
"message": "Încălzire\nEşuată"
},
"SettingsCalibrationWarning": {
"message": "Înainte de repornire, asiguraţi-vă că vârful şi mânerul sunt la temperatura camerei!"
},
"CJCCalibrating": {
"message": "calibrare\n"
},
"SettingsResetWarning": {
"message": "Sigur doriţi să restauraţi la setările implicite?"
},
"UVLOWarningString": {
"message": "DC SCĂZUT"
},
"UndervoltageString": {
"message": "Voltaj scăzut\n"
},
"InputVoltageString": {
"message": "Intrare V: \n"
},
"SleepingSimpleString": {
"message": "Zzzz"
},
"SleepingAdvancedString": {
"message": "Adormit...\n"
},
"SleepingTipAdvancedString": {
"message": "Tip: \n"
},
"OffString": {
"message": "Nu"
},
"DeviceFailedValidationWarning": {
"message": "Dispozitivul dvs. este cel mai probabil un fals!"
}
}, },
"characters": { "characters": {
"SettingRightChar": "D", "SettingRightChar": "D",
@@ -53,289 +76,176 @@
"SettingStartSolderingChar": "S", "SettingStartSolderingChar": "S",
"SettingStartSleepChar": "Z", "SettingStartSleepChar": "Z",
"SettingStartSleepOffChar": "R", "SettingStartSleepOffChar": "R",
"SettingSensitivityOff": "O",
"SettingSensitivityLow": "L",
"SettingSensitivityMedium": "M",
"SettingSensitivityHigh": "H",
"SettingLockDisableChar": "D", "SettingLockDisableChar": "D",
"SettingLockBoostChar": "B", "SettingLockBoostChar": "B",
"SettingLockFullChar": "F" "SettingLockFullChar": "F"
}, },
"menuGroups": { "menuGroups": {
"PowerMenu": { "PowerMenu": {
"text2": [ "displayText": "Setări de\nalimentare",
"Setări de", "description": ""
"alimentare"
],
"desc": ""
}, },
"SolderingMenu": { "SolderingMenu": {
"text2": [ "displayText": "Setări de\nlipire",
"Setări de", "description": ""
"lipire"
],
"desc": ""
}, },
"PowerSavingMenu": { "PowerSavingMenu": {
"text2": [ "displayText": "Modul\nrepaus",
"Modul", "description": ""
"repaus"
],
"desc": ""
}, },
"UIMenu": { "UIMenu": {
"text2": [ "displayText": "Interfaţă\nutilizator",
"Interfată", "description": ""
"utilizator"
],
"desc": ""
}, },
"AdvancedMenu": { "AdvancedMenu": {
"text2": [ "displayText": "Opţiuni\navansate",
"Optiuni", "description": ""
"avansate"
],
"desc": ""
} }
}, },
"menuOptions": { "menuOptions": {
"DCInCutoff": { "DCInCutoff": {
"text2": [ "displayText": "Sursa de\nalimentare",
"Sursa de", "description": "Sursa de alimentare. Setează tensiunea de întrerupere. (DC 10V) (S 3.3V per celulă, dezactivaţi limita de alimentare)"
"alimentare"
],
"desc": "Sursa de alimentare. Setează tensiunea de întrerupere. (DC 10V) (S 3.3V per celulă, dezactivati limita de alimentare)"
}, },
"MinVolCell": { "MinVolCell": {
"text2": [ "displayText": "Voltaj\nminim",
"Voltaj", "description": "Tensiunea minimă admisă pe celulă (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)"
"minim"
],
"desc": "Tensiunea minimă admisă pe celulă (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)"
}, },
"QCMaxVoltage": { "QCMaxVoltage": {
"text2": [ "displayText": "QC\nvoltaj",
"QC", "description": "Tensiunea maximă QC dorită pentru care negociază letconul"
"voltaj"
],
"desc": "Tensiunea maximă QC dorită pentru care negociază letconul"
}, },
"PDNegTimeout": { "PDNegTimeout": {
"text2": [ "displayText": "PD\ntimeout",
"PD", "description": "Timp limită de negociere pentru tranzacţia PD, în paşi de 100ms, pentru compatibilitate cu alimentatoarele QC"
"timeout" },
], "PDVpdo": {
"desc": "Timp limita de negociere pentru tranzactia PD, in pasi de 100ms, pentru compatibilitate cu alimentatoarele QC" "displayText": "PD\nVPDO",
"description": "Enables PPS & EPR modes"
}, },
"BoostTemperature": { "BoostTemperature": {
"text2": [ "displayText": "Modifică\ntemp. impuls",
"Boost", "description": "Temperatura utilizată în \"modul de impuls\""
"temp"
],
"desc": "Temperatura utilizată în \"modul boost\""
}, },
"AutoStart": { "AutoStart": {
"text2": [ "displayText": "Auto\nstart",
"Auto", "description": "Start letcon în modul de lipire la pornire (O=oprit | S=lipire | Z=repaus | R=repaus la temperatura camerei)"
"start"
],
"desc": "Start letcon în modul de lipire la pornire (O=oprit | S=lipire | Z=repaus | R=repaus la temperatura camerei)"
}, },
"TempChangeShortStep": { "TempChangeShortStep": {
"text2": [ "displayText": "Schimbare temp.\napăsare scută",
"Schimbare temp.", "description": "Schimbarea temperaturii la apăsarea scurtă a butonului"
"apăsare scută"
],
"desc": "Schimbarea temperaturii la apăsarea scurtă a butonului"
}, },
"TempChangeLongStep": { "TempChangeLongStep": {
"text2": [ "displayText": "Schimbare temp.\napăsare lungă",
"Schimbare temp.", "description": "Schimbarea temperaturii la apăsarea lungă a butonului"
"apăsare lungă"
],
"desc": "Schimbarea temperaturii la apăsarea lungă a butonului"
}, },
"LockingMode": { "LockingMode": {
"text2": [ "displayText": "Blocare\nbutoane",
"Blocare", "description": "Când lipiţi, apăsaţi lung ambele butoane, pentru a le bloca (D=dezactivare | B=numai \"modul boost\" | F=blocare completă)"
"butoane"
],
"desc": "Când lipiti, apăsati lung ambele butoane, pentru a le bloca (D=dezactivare | B=numai \"modul boost\" | F=blocare completă)"
}, },
"MotionSensitivity": { "MotionSensitivity": {
"text2": [ "displayText": "Sensibilitate\nla miscare",
"Sensibilitate", "description": "Sensibilitate senzor miscare (0=oprit | 1=puţin sensibil | ... | 9=cel mai sensibil)"
"la miscare"
],
"desc": "Sensibilitate senzor miscare (0=oprit | 1=putin sensibil | ... | 9=cel mai sensibil)"
}, },
"SleepTemperature": { "SleepTemperature": {
"text2": [ "displayText": "Temp\nrepaus",
"Temp", "description": "Temperatura vârfului în \"modul repaus\""
"repaus"
],
"desc": "Temperatura vârfului în \"modul repaus\""
}, },
"SleepTimeout": { "SleepTimeout": {
"text2": [ "displayText": "Expirare\nrepaus",
"Expirare", "description": "Interval înainte de lansarea \"modului de repaus\" în (s=secunde | m=minute)"
"repaus"
],
"desc": "Interval înainte de lansarea \"modului de repaus\" în (s=secunde | m=minute)"
}, },
"ShutdownTimeout": { "ShutdownTimeout": {
"text2": [ "displayText": "Expirare\noprire",
"Expirare", "description": "Interval înainte ca letconul să se oprească (m=minute)"
"oprire"
],
"desc": "Interval înainte ca letconul să se oprească (m=minute)"
}, },
"HallEffSensitivity": { "HallEffSensitivity": {
"text2": [ "displayText": "Sensibilitate\nsenzor Hall",
"Sensibilitate", "description": "Sensibilitate senzor cu efect Hall pentru a detecta repausul (0=oprit | 1=putin sensibil | ... | 9=cel mai sensibil)"
"senzor Hall"
],
"desc": "Sensibilitate senzor cu efect Hall pentru a detecta repausul (0=oprit | 1=putin sensibil | ... | 9=cel mai sensibil)"
}, },
"TemperatureUnit": { "TemperatureUnit": {
"text2": [ "displayText": "Unitate de\ntemperatură",
"Unitate de", "description": "C=Celsius | F=Fahrenheit"
"temperatură"
],
"desc": "C=Celsius | F=Fahrenheit"
}, },
"DisplayRotation": { "DisplayRotation": {
"text2": [ "displayText": "Orientare\necran",
"Orientare", "description": "R=dreptaci | L=stângaci | A=auto"
"ecran"
],
"desc": "R=dreptaci | L=stângaci | A=auto"
}, },
"CooldownBlink": { "CooldownBlink": {
"text2": [ "displayText": "Clipeşte\nla răcire",
"Clipeste", "description": "Clipeşte temperatura după oprirea încălzirii, în timp ce vârful este încă fierbinte"
"la răcire"
],
"desc": "Clipeste temperatura după oprirea încălzirii, în timp ce vârful este încă fierbinte"
}, },
"ScrollingSpeed": { "ScrollingSpeed": {
"text2": [ "displayText": "Viteză\nderulare",
"Viteză", "description": "Viteză derulare text cu informatii la (S=lent | F=rapid)"
"derulare"
],
"desc": "Viteză derulare text cu informatii la (S=lent | F=rapid)"
}, },
"ReverseButtonTempChange": { "ReverseButtonTempChange": {
"text2": [ "displayText": "Inversare\n+ - butoane",
"Inversare", "description": "Inversarea butoanelor de reglare a temperaturii"
"+ - butoane"
],
"desc": "Inversarea butoanelor de reglare a temperaturii"
}, },
"AnimSpeed": { "AnimSpeed": {
"text2": [ "displayText": "Animaţii\nviteză",
"Animatii", "description": "Ritmul animaţiilor pictogramei din meniu (O=oprit | Î=încet | M=mediu | R=rapid)"
"viteză"
],
"desc": "Ritmul animatiilor pictogramei din meniu (O=oprit | Î=încet | M=mediu | R=rapid)"
}, },
"AnimLoop": { "AnimLoop": {
"text2": [ "displayText": "Animaţii\nbuclă",
"Animatii", "description": "Animaţii de pictograme în meniul principal"
"buclă"
],
"desc": "Animatii de pictograme în meniul principal"
}, },
"Brightness": { "Brightness": {
"text2": [ "displayText": "Ecranului\nluminozitatea",
"Ecranului", "description": "Ajusteaza luminozitatea ecranului"
"luminozitatea"
],
"desc": "Ajusteaza luminozitatea ecranului"
}, },
"ColourInversion": { "ColourInversion": {
"text2": [ "displayText": "Inversează\nculoarea",
"Inverseaza", "description": "Inversează culoarea ecranului"
"culoarea"
],
"desc": "Inverseaza culoarea ecranului"
}, },
"LOGOTime": { "LOGOTime": {
"text2": [ "displayText": "Durată\nlogo încărcare",
"Durată", "description": "Setaţi durată logo de pornire (s=secunde)"
"logo încărcare"
],
"desc": "Setati durata logo de pornire (s=secunde)"
}, },
"AdvancedIdle": { "AdvancedIdle": {
"text2": [ "displayText": "Detalii,\necran inactiv",
"Detalii,", "description": "Afisaţi informaţii detaliate într-un font mai mic pe ecranul de repaus"
"ecran inactiv"
],
"desc": "Afisati informatii detaliate într-un font mai mic pe ecranul de repaus"
}, },
"AdvancedSoldering": { "AdvancedSoldering": {
"text2": [ "displayText": "Detalii\necran lipire",
"Detalii", "description": "Afisaţi informaţii detaliate într-un font mai mic pe ecranul de lipire"
"ecran lipire" },
], "BluetoothLE": {
"desc": "Afisati informatii detaliate într-un font mai mic pe ecranul de lipire" "displayText": "Bluetooth\n",
"description": "Activează BLE"
}, },
"PowerLimit": { "PowerLimit": {
"text2": [ "displayText": "Putere\nlimită",
"Putere", "description": "Puterea maximă pe care letconul o poate folosi (W=watt)"
"limită"
],
"desc": "Puterea maximă pe care letconul o poate folosi (W=watt)"
}, },
"CalibrateCJC": { "CalibrateCJC": {
"text2": [ "displayText": "Calibrare CJC\nla următoarea pornire",
"Calibrare CJC", "description": "La următorul vârf de pornire, compensarea joncţiunii reci va fi calibrată (nu este necesară dacă Delta T este < 5°C)"
"la următoarea pornire"
],
"desc": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
}, },
"VoltageCalibration": { "VoltageCalibration": {
"text2": [ "displayText": "Calibrare tens.\nde intrare?",
"Calibrare tens.", "description": "Porniţi calibrarea VIN (apăsaţi lung pentru a ieşi)"
"de intrare?"
],
"desc": "Porniti calibrarea VIN (apăsati lung pentru a iesi)"
}, },
"PowerPulsePower": { "PowerPulsePower": {
"text2": [ "displayText": "Putere\npuls",
"Putere", "description": "Puterea pulsului de menţinere activă a blocului de alimentare (watt)"
"puls"
],
"desc": "Puterea pulsului de mentinere activa a blocului de alimentare (watt)"
}, },
"PowerPulseWait": { "PowerPulseWait": {
"text2": [ "displayText": "Întârziere\npuls putere",
"Întârziere", "description": "Perioada pulsului de mentinere (x 2.5s)"
"puls putere"
],
"desc": "Perioada pulsului de mentinere (x 2.5s)"
}, },
"PowerPulseDuration": { "PowerPulseDuration": {
"text2": [ "displayText": "Durată\npuls putere",
"Durată", "description": "Durata pulsului de menţinere (x 250ms)"
"puls putere"
],
"desc": "Durata pulsului de mentinere (x 250ms)"
}, },
"SettingsReset": { "SettingsReset": {
"text2": [ "displayText": "Setări\ndin fabrică",
"Setări", "description": "Reveniţi la setările din fabrică"
"din fabrică"
],
"desc": "Reveniti la setările din fabrică"
}, },
"LanguageSwitch": { "LanguageSwitch": {
"text2": [ "displayText": "Limbă:\n RO Română",
"Limbă:", "description": ""
" RO Română"
],
"desc": ""
} }
} }
} }

View File

@@ -2,44 +2,67 @@
"languageCode": "RU", "languageCode": "RU",
"languageLocalName": "Русский", "languageLocalName": "Русский",
"tempUnitFahrenheit": false, "tempUnitFahrenheit": false,
"messages": {
"SettingsCalibrationWarning": "Пожалуйста, убедитесь, что жало и корпус имеют комнатную температуру при следующей загрузке!",
"CJCCalibrating": "калибровка",
"SettingsResetWarning": "Вы уверены, что хотите сбросить настройки к значениям по умолчанию?",
"UVLOWarningString": "НАПРЯЖ--",
"UndervoltageString": "Низ. напряжение",
"InputVoltageString": "Питание В: ",
"SleepingSimpleString": "Zzzz",
"SleepingAdvancedString": "Ожидание...",
"SleepingTipAdvancedString": "Жало:",
"OffString": "Вык",
"DeviceFailedValidationWarning": "Скорее всего, это устройство подделка!"
},
"messagesWarn": { "messagesWarn": {
"CJCCalibrationDone": [ "CJCCalibrationDone": {
"Calibration", "message": "Калибровка\nзавершена!"
"done!" },
], "ResetOKMessage": {
"ResetOKMessage": "Сброс OK", "message": "Сброс OK"
"SettingsResetMessage": [ },
"Настройки", "SettingsResetMessage": {
"сброшены!" "message": "Настройки\nсброшены!"
], },
"NoAccelerometerMessage": [ "NoAccelerometerMessage": {
"Не определен", "message": "Не определен\nакселерометр!"
"акселерометр!" },
], "NoPowerDeliveryMessage": {
"NoPowerDeliveryMessage": [ "message": "USB-PD питание\nне обнаружено"
"USB-PD питание", },
"не обнаружено" "LockingKeysString": {
], "message": "ЗАБЛОК"
"LockingKeysString": "ЗАБЛОК", },
"UnlockingKeysString": "РАЗБЛОК", "UnlockingKeysString": {
"WarningKeysLockedString": "!ЗАБЛОК!", "message": "РАЗБЛОК"
"WarningThermalRunaway": [ },
"Thermal", "WarningKeysLockedString": {
"Runaway" "message": "!ЗАБЛОК!"
] },
"WarningThermalRunaway": {
"message": "Неуправляемый\nРазогрев"
},
"SettingsCalibrationWarning": {
"message": "Пожалуйста, убедитесь, что жало и корпус имеют комнатную температуру при следующей загрузке!"
},
"CJCCalibrating": {
"message": "калибровка\n"
},
"SettingsResetWarning": {
"message": "Вы уверены, что хотите сбросить настройки к значениям по умолчанию?"
},
"UVLOWarningString": {
"message": "НАПРЯЖ--"
},
"UndervoltageString": {
"message": "Низ. напряжение\n"
},
"InputVoltageString": {
"message": "Питание В: \n"
},
"SleepingSimpleString": {
"message": "Zzzz"
},
"SleepingAdvancedString": {
"message": "Ожидание...\n"
},
"SleepingTipAdvancedString": {
"message": "Жало: \n"
},
"OffString": {
"message": "Вык"
},
"DeviceFailedValidationWarning": {
"message": "Скорее всего, это устройство подделка!"
}
}, },
"characters": { "characters": {
"SettingRightChar": "П", "SettingRightChar": "П",
@@ -53,289 +76,176 @@
"SettingStartSolderingChar": "П", "SettingStartSolderingChar": "П",
"SettingStartSleepChar": "О", "SettingStartSleepChar": "О",
"SettingStartSleepOffChar": "К", "SettingStartSleepOffChar": "К",
"SettingSensitivityOff": "О",
"SettingSensitivityLow": "Н",
"SettingSensitivityMedium": "С",
"SettingSensitivityHigh": "В",
"SettingLockDisableChar": "О", "SettingLockDisableChar": "О",
"SettingLockBoostChar": "Т", "SettingLockBoostChar": "Т",
"SettingLockFullChar": "П" "SettingLockFullChar": "П"
}, },
"menuGroups": { "menuGroups": {
"PowerMenu": { "PowerMenu": {
"text2": [ "displayText": "Параметры\nпитания",
"Параметры", "description": ""
"питания"
],
"desc": ""
}, },
"SolderingMenu": { "SolderingMenu": {
"text2": [ "displayText": "Параметры\nпайки",
"Параметры", "description": ""
"пайки"
],
"desc": ""
}, },
"PowerSavingMenu": { "PowerSavingMenu": {
"text2": [ "displayText": "Режимы\nсна",
"Режимы", "description": ""
"сна"
],
"desc": ""
}, },
"UIMenu": { "UIMenu": {
"text2": [ "displayText": "Параметры\nинтерфейса",
"Параметры", "description": ""
"интерфейса"
],
"desc": ""
}, },
"AdvancedMenu": { "AdvancedMenu": {
"text2": [ "displayText": "Дополнител.\nнастройки",
"Дополнител.", "description": ""
"настройки"
],
"desc": ""
} }
}, },
"menuOptions": { "menuOptions": {
"DCInCutoff": { "DCInCutoff": {
"text2": [ "displayText": "Источник\nпитания",
"Источник", "description": "Источник питания. Устанавливает напряжение отсечки. (DC 10В) (S 3,3В на ячейку, без лимита мощности)"
"питания"
],
"desc": "Источник питания. Устанавливает напряжение отсечки. (DC 10В) (S 3,3В на ячейку, без лимита мощности)"
}, },
"MinVolCell": { "MinVolCell": {
"text2": [ "displayText": "Мин.\nнапр.",
"Мин.", "description": "Минимальное разрешенное напряжение на ячейку (3S: 3 - 3,7V | 4S-6S: 2,4 - 3,7V)"
"напр."
],
"desc": "Минимальное разрешенное напряжение на ячейку (3S: 3 - 3,7V | 4S-6S: 2,4 - 3,7V)"
}, },
"QCMaxVoltage": { "QCMaxVoltage": {
"text2": [ "displayText": "Ограничение\nнапряжения QC",
"Ограничение", "description": "Максимальное напряжение для согласования с QC источником питания"
"напряжения QC"
],
"desc": "Максимальное напряжение для согласования с QC источником питания"
}, },
"PDNegTimeout": { "PDNegTimeout": {
"text2": [ "displayText": "PD\nтайм-аут",
"PD", "description": "Power Delivery тайм-аут согласования с шагом 100 мс для совместимости с некоторыми быстрыми зарядными QC (0: отключено)"
"тайм-аут" },
], "PDVpdo": {
"desc": "Power Delivery тайм-аут согласования с шагом 100 мс для совместимости с некоторыми быстрыми зарядными QC (0: отключено)" "displayText": "PD\nVPDO",
"description": "Включает режимы PPS & EPR."
}, },
"BoostTemperature": { "BoostTemperature": {
"text2": [ "displayText": "t° турбо\nрежима",
"t° турбо", "description": "Температура жала в турбо-режиме"
"режима"
],
"desc": "Температура жала в турбо-режиме"
}, },
"AutoStart": { "AutoStart": {
"text2": [ "displayText": "Авто\nстарт",
"Авто", "description": "Режим, в котором запускается паяльник при подаче питания (В=Выкл. | П=Пайка | О=Ожидание | К=Ожидание при комн. темп.)"
"старт"
],
"desc": "Режим, в котором запускается паяльник при подаче питания (В=Выкл. | П=Пайка | О=Ожидание | К=Ожидание при комн. темп.)"
}, },
"TempChangeShortStep": { "TempChangeShortStep": {
"text2": [ "displayText": "Шаг темп.\nкор. наж.",
"Шаг темп.", "description": "Шаг изменения температуры при коротком нажатии кнопок"
"кор. наж."
],
"desc": "Шаг изменения температуры при коротком нажатии кнопок"
}, },
"TempChangeLongStep": { "TempChangeLongStep": {
"text2": [ "displayText": "Шаг темп.\nдлин. наж.",
"Шаг темп.", "description": "Шаг изменения температуры при длинном нажатии кнопок"
"длин. наж."
],
"desc": "Шаг изменения температуры при длинном нажатии кнопок"
}, },
"LockingMode": { "LockingMode": {
"text2": [ "displayText": "Разрешить\nблок. кнопок",
"Разрешить", "description": "При работе длинное нажатие обеих кнопок блокирует их (О=Отключено | Т=Только турбо | П=Полная блокировка)"
"блок. кнопок"
],
"desc": "При работе длинное нажатие обеих кнопок блокирует их (О=Отключено | Т=Только турбо | П=Полная блокировка)"
}, },
"MotionSensitivity": { "MotionSensitivity": {
"text2": [ "displayText": "Чувствительн.\nакселерометра",
"Чувствительн.", "description": "Чувствительность акселерометра (0=Выкл. | 1=мин. | ... | 9=макс.)"
"акселерометра"
],
"desc": "Чувствительность акселерометра (0=Выкл. | 1=Мин. | ... | 9=Макс.)"
}, },
"SleepTemperature": { "SleepTemperature": {
"text2": [ "displayText": "Темп.\nожидания",
"Темп.", "description": "Температура жала в режиме ожидания"
"ожидания"
],
"desc": "Температура режима ожидания"
}, },
"SleepTimeout": { "SleepTimeout": {
"text2": [ "displayText": "Таймаут\nожидания",
"Таймаут", "description": "Время до перехода в режим ожидания (Минуты | Секунды)"
"ожидания"
],
"desc": "Время до перехода в режим ожидания (Минуты | Секунды)"
}, },
"ShutdownTimeout": { "ShutdownTimeout": {
"text2": [ "displayText": "Таймаут\nвыключения",
"Таймаут", "description": "Время до выключения паяльника (минуты)"
"выключения"
],
"desc": "Время до отключения паяльника (Минуты)"
}, },
"HallEffSensitivity": { "HallEffSensitivity": {
"text2": [ "displayText": "Датчик\nХолла",
"Датчик", "description": "Чувствительность датчика Холла к переходу в спящий режим (0=Выкл. | 1=мин. | ... | 9=макс.)"
"Холла"
],
"desc": "Чувствительность датчика Холла к переходу в спящий режим (0=Выкл. | 1=Мин. | ... | 9=Макс.)"
}, },
"TemperatureUnit": { "TemperatureUnit": {
"text2": [ "displayText": "Единицы\nтемпературы",
"Единицы", "description": "Единицы измерения температуры (C=°Цельcия | F=°Фаренгейта)"
"температуры"
],
"desc": "Единицы измерения температуры (C=Цельcия | F=Фаренгейта)"
}, },
"DisplayRotation": { "DisplayRotation": {
"text2": [ "displayText": "Ориентация\nэкрана",
"Ориентация", "description": "Ориентация экрана (П=Правая рука | Л=Левая рука | А=Авто)"
"экрана"
],
"desc": "Ориентация экрана (П=Правая рука | Л=Левая рука | А=Авто)"
}, },
"CooldownBlink": { "CooldownBlink": {
"text2": [ "displayText": "Мигание t°\nпри остывании",
"Мигание t°", "description": "Мигать температурой на экране охлаждения, пока жало еще горячее"
"при остывании"
],
"desc": "Мигать температурой на экране охлаждения, пока жало еще горячее"
}, },
"ScrollingSpeed": { "ScrollingSpeed": {
"text2": [ "displayText": "Скорость\nтекста",
"Скорость", "description": "Скорость прокрутки текста (М=медленно | Б=быстро)"
"текста"
],
"desc": "Скорость прокрутки текста (М=медленно | Б=быстро)"
}, },
"ReverseButtonTempChange": { "ReverseButtonTempChange": {
"text2": [ "displayText": "Поменять\nкнопки+-",
"Инвертировать", "description": "Поменять кнопки изменения температуры"
"кнопки"
],
"desc": "Инвертировать кнопки изменения температуры"
}, },
"AnimSpeed": { "AnimSpeed": {
"text2": [ "displayText": "Скорость\nанимации",
"Скорость", "description": "Скорость анимации иконок в главном меню (Милисекунды) (О=Отключено | Н=Низкий | С=Средний | В=Высокий)"
"анимации"
],
"desc": "Скорость анимации иконок в главном меню (Милисекунды) (О=Отключено | Н=Низкий | С=Средний | В=Высокий)"
}, },
"AnimLoop": { "AnimLoop": {
"text2": [ "displayText": "Зацикленная\nанимация",
"Зацикленная", "description": "Зацикленная анимация иконок в главном меню"
"анимация"
],
"desc": "Зацикленная анимация иконок в главном меню"
}, },
"Brightness": { "Brightness": {
"text2": [ "displayText": "Яркость\nэкрана",
"Яркость", "description": "Настройки контраста/яркости OLED экрана"
"экрана"
],
"desc": "Настройки контраста/яркости OLED экрана"
}, },
"ColourInversion": { "ColourInversion": {
"text2": [ "displayText": "Инверсия\nэкрана",
"Инверсия", "description": "Инвертировать цвета на OLED экране"
"экрана"
],
"desc": "Инвертировать цвета на OLED экране"
}, },
"LOGOTime": { "LOGOTime": {
"text2": [ "displayText": "Длительность\nпоказа логотипа",
"Длительность", "description": "Длительность отображения логотипа (в секундах)"
"показа логотипа"
],
"desc": "Длительность отображения логотипа (в секундах)"
}, },
"AdvancedIdle": { "AdvancedIdle": {
"text2": [ "displayText": "Подробный\nреж. ожидания",
"Подробный", "description": "Отображать детальную информацию уменьшенным шрифтом на экране ожидания"
"реж. ожидания"
],
"desc": "Отображать детальную информацию уменьшенным шрифтом на экране ожидания"
}, },
"AdvancedSoldering": { "AdvancedSoldering": {
"text2": [ "displayText": "Подробный\nэкран пайки",
"Подробный", "description": "Показывать детальную информацию на экране пайки"
"экран пайки" },
], "BluetoothLE": {
"desc": "Показывать детальную информацию на экране пайки" "displayText": "Bluetooth\n",
"description": "Enables BLE"
}, },
"PowerLimit": { "PowerLimit": {
"text2": [ "displayText": "Предел\nмощности",
"Предел", "description": "Максимальная мощность, которую может использовать паяльник (Ватт)"
"мощности"
],
"desc": "Максимальная мощность, которую может использовать паяльник (Ватт)"
}, },
"CalibrateCJC": { "CalibrateCJC": {
"text2": [ "displayText": "Калибровка\nтемпературы",
"Калибровка", "description": "Калибровка температуры (CJC) при следующем включении (не требуется при разнице менее 5°C)"
"температуры"
],
"desc": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
}, },
"VoltageCalibration": { "VoltageCalibration": {
"text2": [ "displayText": "Калибровка\nнапряжения",
"Калибровка", "description": "Калибровка входного напряжения (долгое нажатие для выхода)"
"напряжения"
],
"desc": "Калибровка входного напряжения (долгое нажатие для выхода)"
}, },
"PowerPulsePower": { "PowerPulsePower": {
"text2": [ "displayText": "Сила имп.\nпитания Вт",
"Сила имп.", "description": "Сила импульса удерживающего от сна повербанк или другой источник питания"
"питания Вт"
],
"desc": "Сила импульса удерживающего от сна повербанк или другой источник питания"
}, },
"PowerPulseWait": { "PowerPulseWait": {
"text2": [ "displayText": "Пауза имп.\nпитания с",
"Пауза имп.", "description": "Пауза между импульсами удерживающими источник питания от сна (x 2,5с)"
"питания с"
],
"desc": "Пауза между импульсами удерживающими источник питания от сна (x 2,5с)"
}, },
"PowerPulseDuration": { "PowerPulseDuration": {
"text2": [ "displayText": "Длина имп.\nпитания мс",
"Длина имп.", "description": "Длина импульса удерживающего от сна источник питания (x 250мс)"
"питания мс"
],
"desc": "Длина импульса удерживающего от сна источник питания (x 250мс)"
}, },
"SettingsReset": { "SettingsReset": {
"text2": [ "displayText": "Сброс\nНастроек",
"Сброс", "description": "Сброс настроек к значеням по умолчанию"
"Настроек"
],
"desc": "Сброс настроек к значеням по умолчанию"
}, },
"LanguageSwitch": { "LanguageSwitch": {
"text2": [ "displayText": "Язык:\n RU Русский",
"Язык:", "description": ""
" RU Русский"
],
"desc": ""
} }
} }
} }

View File

@@ -2,44 +2,67 @@
"languageCode": "SK", "languageCode": "SK",
"languageLocalName": "Slovenčina", "languageLocalName": "Slovenčina",
"tempUnitFahrenheit": false, "tempUnitFahrenheit": false,
"messages": {
"SettingsCalibrationWarning": "Before rebooting, make sure tip & handle are at room temperature!",
"CJCCalibrating": "calibrating",
"SettingsResetWarning": "Naozaj chcete obnoviť továrenské nastavenia?",
"UVLOWarningString": "Nízke U!",
"UndervoltageString": "Nízke napätie",
"InputVoltageString": "Vstupné U: ",
"SleepingSimpleString": "Chrr",
"SleepingAdvancedString": "Pokojový režim.",
"SleepingTipAdvancedString": "Hrot:",
"OffString": "Vyp",
"DeviceFailedValidationWarning": "Vaše zariadenie je pravdepodobne falzifikát!"
},
"messagesWarn": { "messagesWarn": {
"CJCCalibrationDone": [ "CJCCalibrationDone": {
"Calibration", "message": "Calibration\ndone!"
"done!" },
], "ResetOKMessage": {
"ResetOKMessage": "Reset OK", "message": "Reset OK"
"SettingsResetMessage": [ },
"Nastavenia", "SettingsResetMessage": {
"resetované" "message": "Nastavenia\nresetované"
], },
"NoAccelerometerMessage": [ "NoAccelerometerMessage": {
"Bez pohybového", "message": "Bez pohybového\nsenzora!"
"senzora!" },
], "NoPowerDeliveryMessage": {
"NoPowerDeliveryMessage": [ "message": "Chýba čip\nUSB-PD!"
"Chýba čip", },
"USB-PD!" "LockingKeysString": {
], "message": "ZABLOK."
"LockingKeysString": "ZABLOK.", },
"UnlockingKeysString": "ODBLOK.", "UnlockingKeysString": {
"WarningKeysLockedString": "!ZABLOK!", "message": "ODBLOK."
"WarningThermalRunaway": [ },
"Únik", "WarningKeysLockedString": {
"Tepla" "message": "!ZABLOK!"
] },
"WarningThermalRunaway": {
"message": "Únik\nTepla"
},
"SettingsCalibrationWarning": {
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
"CJCCalibrating": {
"message": "calibrating\n"
},
"SettingsResetWarning": {
"message": "Naozaj chcete obnoviť továrenské nastavenia?"
},
"UVLOWarningString": {
"message": "Nízke U!"
},
"UndervoltageString": {
"message": "Nízke napätie\n"
},
"InputVoltageString": {
"message": "Vstupné U: \n"
},
"SleepingSimpleString": {
"message": "Chrr"
},
"SleepingAdvancedString": {
"message": "Pokojový režim.\n"
},
"SleepingTipAdvancedString": {
"message": "Hrot: \n"
},
"OffString": {
"message": "Vyp"
},
"DeviceFailedValidationWarning": {
"message": "Vaše zariadenie je pravdepodobne falzifikát!"
}
}, },
"characters": { "characters": {
"SettingRightChar": "P", "SettingRightChar": "P",
@@ -53,289 +76,176 @@
"SettingStartSolderingChar": "Z", "SettingStartSolderingChar": "Z",
"SettingStartSleepChar": "S", "SettingStartSleepChar": "S",
"SettingStartSleepOffChar": "I", "SettingStartSleepOffChar": "I",
"SettingSensitivityOff": "Z",
"SettingSensitivityLow": "N",
"SettingSensitivityMedium": "S",
"SettingSensitivityHigh": "V",
"SettingLockDisableChar": "Z", "SettingLockDisableChar": "Z",
"SettingLockBoostChar": "B", "SettingLockBoostChar": "B",
"SettingLockFullChar": "P" "SettingLockFullChar": "P"
}, },
"menuGroups": { "menuGroups": {
"PowerMenu": { "PowerMenu": {
"text2": [ "displayText": "Nastavenie\nvýkonu",
"Nastavenie", "description": ""
"výkonu"
],
"desc": ""
}, },
"SolderingMenu": { "SolderingMenu": {
"text2": [ "displayText": "Nastavenie\nspájkovania",
"Nastavenie", "description": ""
"spájkovania"
],
"desc": ""
}, },
"PowerSavingMenu": { "PowerSavingMenu": {
"text2": [ "displayText": "Úsporný\nrežim",
"Úsporný", "description": ""
"režim"
],
"desc": ""
}, },
"UIMenu": { "UIMenu": {
"text2": [ "displayText": "Nastavenie\nzobrazenia",
"Nastavenie", "description": ""
"zobrazenia"
],
"desc": ""
}, },
"AdvancedMenu": { "AdvancedMenu": {
"text2": [ "displayText": "Pokročilé\nnastavenia",
"Pokročilé", "description": ""
"nastavenia"
],
"desc": ""
} }
}, },
"menuOptions": { "menuOptions": {
"DCInCutoff": { "DCInCutoff": {
"text2": [ "displayText": "Zdroj\nnapätia",
"Zdroj", "description": "Zdroj napätia. Nastavenie napätia pre vypnutie (cutoff) (DC=10V | nS=n*3.3V pre LiIon články)"
"napätia"
],
"desc": "Zdroj napätia. Nastavenie napätia pre vypnutie (cutoff) (DC=10V | nS=n*3.3V pre LiIon články)"
}, },
"MinVolCell": { "MinVolCell": {
"text2": [ "displayText": "Minimálne\nnapätie",
"Minimálne", "description": "Minimálne napätie povolené na jeden článok (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)"
"napätie"
],
"desc": "Minimálne napätie povolené na jeden článok (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)"
}, },
"QCMaxVoltage": { "QCMaxVoltage": {
"text2": [ "displayText": "Obmedzenie QC\nnapätia",
"Obmedzenie QC", "description": "Maximálne QC napätie ktoré si má systém vyžiadať"
"napätia"
],
"desc": "Maximálne QC napätie ktoré si má systém vyžiadať"
}, },
"PDNegTimeout": { "PDNegTimeout": {
"text2": [ "displayText": "Čas vypršania\nPower Delivery",
"Čas vypršania", "description": "Čas vyjednávania Power Delivery v 100ms krokoch pre kompatibilitu s niektorými QC nabíjačkami (0: vypnuté)"
"Power Delivery" },
], "PDVpdo": {
"desc": "Čas vyjednávania Power Delivery v 100ms krokoch pre kompatibilitu s niektorými QC nabíjačkami (0: vypnuté)" "displayText": "PD\nVPDO",
"description": "Enables PPS & EPR modes"
}, },
"BoostTemperature": { "BoostTemperature": {
"text2": [ "displayText": "Boost\nteplota",
"Boost", "description": "Cieľová teplota pre prudký náhrev (v nastavených jednotkách)"
"teplota"
],
"desc": "Cieľová teplota pre prudký náhrev (v nastavených jednotkách)"
}, },
"AutoStart": { "AutoStart": {
"text2": [ "displayText": "Automatické\nspustenie",
"Automatické", "description": "Pri štarte spustiť režim spájkovania (V=Vyp | Z=Spájkovanie | S=Spanok | I=Spanok izbová teplota)"
"spustenie"
],
"desc": "Pri štarte spustiť režim spájkovania (V=Vyp | Z=Spájkovanie | S=Spanok | I=Spanok izbová teplota)"
}, },
"TempChangeShortStep": { "TempChangeShortStep": {
"text2": [ "displayText": "Malý krok\nteploty",
"Malý krok", "description": "Zmena teploty pri krátkom stlačení tlačidla"
"teploty"
],
"desc": "Zmena teploty pri krátkom stlačení tlačidla"
}, },
"TempChangeLongStep": { "TempChangeLongStep": {
"text2": [ "displayText": "Veľký krok\nteploty",
"Veľký krok", "description": "Zmena teploty pri držaní tlačidla"
"teploty"
],
"desc": "Zmena teploty pri držaní tlačidla"
}, },
"LockingMode": { "LockingMode": {
"text2": [ "displayText": "Povoliť zámok\ntlačidiel",
"Povoliť zámok", "description": "Zamknutie tlačidiel - dlhé stlačenie oboch naraz počas spájkovania (Z=Zakázať | B=Okrem boost | P=Plné zamknutie)"
"tlačidiel"
],
"desc": "Zamknutie tlačidiel - dlhé stlačenie oboch naraz počas spájkovania (Z=Zakázať | B=Okrem boost | P=Plné zamknutie)"
}, },
"MotionSensitivity": { "MotionSensitivity": {
"text2": [ "displayText": "Citlivosť\npohybu",
"Citlivosť", "description": "Citlivosť detekcie pohybu (0=Vyp | 1=Min | ... | 9=Max)"
"pohybu"
],
"desc": "Citlivosť detekcie pohybu (0=Vyp | 1=Min | ... | 9=Max)"
}, },
"SleepTemperature": { "SleepTemperature": {
"text2": [ "displayText": "Pokojová\nteplota",
"Pokojová", "description": "Pokojová teplota (v nastavených jednotkách)"
"teplota"
],
"desc": "Pokojová teplota (v nastavených jednotkách)"
}, },
"SleepTimeout": { "SleepTimeout": {
"text2": [ "displayText": "Pokojový\nrežim po",
"Pokojový", "description": "Pokojový režim po (s=sekundách | m=minútach)"
"režim po"
],
"desc": "Pokojový režim po (s=sekundách | m=minútach)"
}, },
"ShutdownTimeout": { "ShutdownTimeout": {
"text2": [ "displayText": "Vypnutie\npo",
"Vypnutie", "description": "Čas na vypnutie (minúty)"
"po"
],
"desc": "Čas na vypnutie (minúty)"
}, },
"HallEffSensitivity": { "HallEffSensitivity": {
"text2": [ "displayText": "Citliv.\nHall",
"Citliv.", "description": "Citlivosť Hallovho senzora pre detekciu spánku (0=Vyp | 1=Min | ... | 9=Max)"
"Hall"
],
"desc": "Citlivosť Hallovho senzora pre detekciu spánku (0=Vyp | 1=Min | ... | 9=Max)"
}, },
"TemperatureUnit": { "TemperatureUnit": {
"text2": [ "displayText": "Jednotka\nteploty",
"Jednotka", "description": "Jednotky merania teploty (C=stupne Celzia | F=stupne Fahrenheita)"
"teploty"
],
"desc": "Jednotky merania teploty (C=stupne Celzia | F=stupne Fahrenheita)"
}, },
"DisplayRotation": { "DisplayRotation": {
"text2": [ "displayText": "Orientácia\ndispleja",
"Orientácia", "description": "Orientácia displeja (P=Pravák | L=Ľavák | A=Auto)"
"displeja"
],
"desc": "Orientácia displeja (P=Pravák | L=Ľavák | A=Auto)"
}, },
"CooldownBlink": { "CooldownBlink": {
"text2": [ "displayText": "Blikanie pri\nchladnutí",
"Blikanie pri", "description": "Blikanie ukazovateľa teploty počas chladnutia hrotu"
"chladnutí"
],
"desc": "Blikanie ukazovateľa teploty počas chladnutia hrotu"
}, },
"ScrollingSpeed": { "ScrollingSpeed": {
"text2": [ "displayText": "Rýchlosť\nskrolovania",
"Rýchlosť", "description": "Rýchlosť pohybu tohto textu"
"skrolovania"
],
"desc": "Rýchlosť pohybu tohto textu"
}, },
"ReverseButtonTempChange": { "ReverseButtonTempChange": {
"text2": [ "displayText": "Otočenie\ntlačidiel +/-",
"Otočenie", "description": "Prehodenie tlačidiel na nastavovanie teploty"
"tlačidiel +/-"
],
"desc": "Prehodenie tlačidiel na nastavovanie teploty"
}, },
"AnimSpeed": { "AnimSpeed": {
"text2": [ "displayText": "Rýchlosť\nanimácií",
"Rýchlosť", "description": "Rýchlosť animácií ikoniek v menu (O=off | P=pomaly | S=stredne | R=rýchlo)"
"animácií"
],
"desc": "Rýchlosť animácií ikoniek v menu (O=off | P=pomaly | S=stredne | R=rýchlo)"
}, },
"AnimLoop": { "AnimLoop": {
"text2": [ "displayText": "Opakovanie\nanimácií",
"Opakovanie", "description": "Opakovanie animácií ikoniek v hlavnom menu"
"animácií"
],
"desc": "Opakovanie animácií ikoniek v hlavnom menu"
}, },
"Brightness": { "Brightness": {
"text2": [ "displayText": "Jas\nobrazovky",
"Jas", "description": "Mení jas/kontrast OLED displeja"
"obrazovky"
],
"desc": "Mení jas/kontrast OLED displeja"
}, },
"ColourInversion": { "ColourInversion": {
"text2": [ "displayText": "Invertovať\nobrazovku",
"Invertovať", "description": "Invertovať farby OLED displeja"
"obrazovku"
],
"desc": "Invertovať farby OLED displeja"
}, },
"LOGOTime": { "LOGOTime": {
"text2": [ "displayText": "Trvanie\nboot loga",
"Trvanie", "description": "Doba trvania boot loga (s=sekundy)"
"boot loga"
],
"desc": "Doba trvania boot loga (s=sekundy)"
}, },
"AdvancedIdle": { "AdvancedIdle": {
"text2": [ "displayText": "Detaily v\npokoj. režime",
"Detaily v", "description": "Zobraziť detailné informácie v pokojovom režime (T=Zap | F=Vyp)"
"pokoj. režime"
],
"desc": "Zobraziť detailné informácie v pokojovom režime (T=Zap | F=Vyp)"
}, },
"AdvancedSoldering": { "AdvancedSoldering": {
"text2": [ "displayText": "Detaily počas\nspájkovania",
"Detaily počas", "description": "Zobrazenie detailov počas spájkovania"
"spájkovania" },
], "BluetoothLE": {
"desc": "Zobrazenie detailov počas spájkovania" "displayText": "Bluetooth\n",
"description": "Enables BLE"
}, },
"PowerLimit": { "PowerLimit": {
"text2": [ "displayText": "Obmedzenie\nvýkonu",
"Obmedzenie", "description": "Obmedzenie výkonu podľa použitého zdroja (watt)"
"výkonu"
],
"desc": "Obmedzenie výkonu podľa použitého zdroja (watt)"
}, },
"CalibrateCJC": { "CalibrateCJC": {
"text2": [ "displayText": "Calibrate CJC\nat next boot",
"Calibrate CJC", "description": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
"at next boot"
],
"desc": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
}, },
"VoltageCalibration": { "VoltageCalibration": {
"text2": [ "displayText": "Kalibrácia\nnap. napätia",
"Kalibrácia", "description": "Kalibrácia napájacieho napätia. Krátke stlačenie mení nastavenie, dlhé stlačenie pre návrat"
"nap. napätia"
],
"desc": "Kalibrácia napájacieho napätia. Krátke stlačenie mení nastavenie, dlhé stlačenie pre návrat"
}, },
"PowerPulsePower": { "PowerPulsePower": {
"text2": [ "displayText": "Intenzita\nimpulzu",
"Intenzita", "description": "Impulz udržujúci napájací zdroj zapnutý (power banky) (watt)"
"impulzu"
],
"desc": "Impulz udržujúci napájací zdroj zapnutý (power banky) (watt)"
}, },
"PowerPulseWait": { "PowerPulseWait": {
"text2": [ "displayText": "Interval\nimpulzu",
"Interval", "description": "Interval medzi impulzami udržujúcimi napájací zdroj zapnutý (x 2.5s)"
"impulzu"
],
"desc": "Interval medzi impulzami udržujúcimi napájací zdroj zapnutý (x 2.5s)"
}, },
"PowerPulseDuration": { "PowerPulseDuration": {
"text2": [ "displayText": "Dĺžka\nimpulzu",
"Dĺžka impulzu", "description": "Dĺžka impulzu udržujúci napájací zdroj zapnutý (x 250ms)"
""
],
"desc": "Dĺžka impulzu udržujúci napájací zdroj zapnutý (x 250ms)"
}, },
"SettingsReset": { "SettingsReset": {
"text2": [ "displayText": "Obnovenie\nnastavení",
"Obnovenie", "description": "Obnovenie nastavení na pôvodné hodnoty"
"nastavení"
],
"desc": "Obnovenie nastavení na pôvodné hodnoty"
}, },
"LanguageSwitch": { "LanguageSwitch": {
"text2": [ "displayText": "Jazyk:\n SK Slovenčina",
"Jazyk:", "description": ""
" SK Slovenčina"
],
"desc": ""
} }
} }
} }

View File

@@ -2,44 +2,67 @@
"languageCode": "SL", "languageCode": "SL",
"languageLocalName": "Slovenščina", "languageLocalName": "Slovenščina",
"tempUnitFahrenheit": false, "tempUnitFahrenheit": false,
"messages": {
"SettingsCalibrationWarning": "Before rebooting, make sure tip & handle are at room temperature!",
"CJCCalibrating": "calibrating",
"SettingsResetWarning": "Res želite ponastaviti na privzete nastavitve?",
"UVLOWarningString": "NIZKA U",
"UndervoltageString": "Nizka napetost",
"InputVoltageString": "Vhodna U: ",
"SleepingSimpleString": "Zzzz",
"SleepingAdvancedString": "Spim...",
"SleepingTipAdvancedString": "Konica",
"OffString": "Off",
"DeviceFailedValidationWarning": "Your device is most likely a counterfeit!"
},
"messagesWarn": { "messagesWarn": {
"CJCCalibrationDone": [ "CJCCalibrationDone": {
"Calibration", "message": "Calibration\ndone!"
"done!" },
], "ResetOKMessage": {
"ResetOKMessage": "Reset OK", "message": "Reset OK"
"SettingsResetMessage": [ },
"Nastavitve OK!", "SettingsResetMessage": {
"" "message": "Nastavitve \nOK!"
], },
"NoAccelerometerMessage": [ "NoAccelerometerMessage": {
"Ni pospeševalnik", "message": "Ni \npospeševalnik"
"" },
], "NoPowerDeliveryMessage": {
"NoPowerDeliveryMessage": [ "message": "Ni USB-PD \nčipa!"
"Ni USB-PD čipa!", },
"" "LockingKeysString": {
], "message": "ZAKLENJ."
"LockingKeysString": "ZAKLENJ.", },
"UnlockingKeysString": "ODKLENJ.", "UnlockingKeysString": {
"WarningKeysLockedString": "ZAKLENJ.", "message": "ODKLENJ."
"WarningThermalRunaway": [ },
"Thermal", "WarningKeysLockedString": {
"Runaway" "message": "ZAKLENJ."
] },
"WarningThermalRunaway": {
"message": "Thermal\nRunaway"
},
"SettingsCalibrationWarning": {
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
"CJCCalibrating": {
"message": "calibrating\n"
},
"SettingsResetWarning": {
"message": "Res želite ponastaviti na privzete nastavitve?"
},
"UVLOWarningString": {
"message": "NIZKA U"
},
"UndervoltageString": {
"message": "Nizka napetost\n"
},
"InputVoltageString": {
"message": "Vhodna U: \n"
},
"SleepingSimpleString": {
"message": "Zzzz"
},
"SleepingAdvancedString": {
"message": "Spim...\n"
},
"SleepingTipAdvancedString": {
"message": "Konica \n"
},
"OffString": {
"message": "Off"
},
"DeviceFailedValidationWarning": {
"message": "Your device is most likely a counterfeit!"
}
}, },
"characters": { "characters": {
"SettingRightChar": "D", "SettingRightChar": "D",
@@ -53,289 +76,176 @@
"SettingStartSolderingChar": "S", "SettingStartSolderingChar": "S",
"SettingStartSleepChar": "Z", "SettingStartSleepChar": "Z",
"SettingStartSleepOffChar": "V", "SettingStartSleepOffChar": "V",
"SettingSensitivityOff": "U",
"SettingSensitivityLow": "N",
"SettingSensitivityMedium": "S",
"SettingSensitivityHigh": "V",
"SettingLockDisableChar": "O", "SettingLockDisableChar": "O",
"SettingLockBoostChar": "L", "SettingLockBoostChar": "L",
"SettingLockFullChar": "P" "SettingLockFullChar": "P"
}, },
"menuGroups": { "menuGroups": {
"PowerMenu": { "PowerMenu": {
"text2": [ "displayText": "Power\nsettings",
"Power", "description": ""
"settings"
],
"desc": ""
}, },
"SolderingMenu": { "SolderingMenu": {
"text2": [ "displayText": "Nastavitve\nspajkanja",
"Nastavitve", "description": ""
"spajkanja"
],
"desc": ""
}, },
"PowerSavingMenu": { "PowerSavingMenu": {
"text2": [ "displayText": "Način\nspanja",
"Način", "description": ""
"spanja"
],
"desc": ""
}, },
"UIMenu": { "UIMenu": {
"text2": [ "displayText": "Uporabniški\nvmesnik",
"Uporabniški", "description": ""
"vmesnik"
],
"desc": ""
}, },
"AdvancedMenu": { "AdvancedMenu": {
"text2": [ "displayText": "Napredne\nmožnosti",
"Napredne", "description": ""
"možnosti"
],
"desc": ""
} }
}, },
"menuOptions": { "menuOptions": {
"DCInCutoff": { "DCInCutoff": {
"text2": [ "displayText": "Vir\nnapajanja",
"Vir", "description": "Vir napajanja. Nastavi napetost izklopa. (DC 10V) (S 3.3V na celico)"
"napajanja"
],
"desc": "Vir napajanja. Nastavi napetost izklopa. (DC 10V) (S 3.3V na celico)"
}, },
"MinVolCell": { "MinVolCell": {
"text2": [ "displayText": "Minimum\nvoltage",
"Minimum", "description": "Minimum allowed voltage per battery cell (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)"
"voltage"
],
"desc": "Minimum allowed voltage per battery cell (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)"
}, },
"QCMaxVoltage": { "QCMaxVoltage": {
"text2": [ "displayText": "QC\nnapetost",
"QC", "description": "Moč napajalnega vira v vatih [W]"
"napetost"
],
"desc": "Moč napajalnega vira v vatih [W]"
}, },
"PDNegTimeout": { "PDNegTimeout": {
"text2": [ "displayText": "PD\ntimeout",
"PD", "description": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers"
"timeout" },
], "PDVpdo": {
"desc": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers" "displayText": "PD\nVPDO",
"description": "Enables PPS & EPR modes"
}, },
"BoostTemperature": { "BoostTemperature": {
"text2": [ "displayText": "Pospešena\ntemp.",
"Pospešena", "description": "Temperatura v pospešenem načinu"
"temp."
],
"desc": "Temperatura v pospešenem načinu"
}, },
"AutoStart": { "AutoStart": {
"text2": [ "displayText": "Samodejni\nzagon",
"Samodejni", "description": "Samodejno gretje konice ob vklopu (U=ugasnjeno | S=spajkanje | Z=spanje | V=spanje na sobni temperaturi)"
"zagon"
],
"desc": "Samodejno gretje konice ob vklopu (U=ugasnjeno | S=spajkanje | Z=spanje | V=spanje na sobni temperaturi)"
}, },
"TempChangeShortStep": { "TempChangeShortStep": {
"text2": [ "displayText": "Kratka sprememba\ntemperature?",
"Kratka sprememba", "description": "Temperatura se spremeni ob kratkem pritisku na gumb."
"temperature?"
],
"desc": "Temperatura se spremeni ob kratkem pritisku na gumb."
}, },
"TempChangeLongStep": { "TempChangeLongStep": {
"text2": [ "displayText": "Dolga sprememba\ntemperature?",
"Dolga sprememba", "description": "Temperatura se spremeni ob dolgem pritisku na gumb."
"temperature?"
],
"desc": "Temperatura se spremeni ob dolgem pritisku na gumb."
}, },
"LockingMode": { "LockingMode": {
"text2": [ "displayText": "Omogoči\nzaklep gumbov",
"Omogoči", "description": "Za zaklep med spajkanjem drži oba gumba (O=onemogoči | L=le pospešeno | P=polno)"
"zaklep gumbov"
],
"desc": "Za zaklep med spajkanjem drži oba gumba (O=onemogoči | L=le pospešeno | P=polno)"
}, },
"MotionSensitivity": { "MotionSensitivity": {
"text2": [ "displayText": "Občutljivost\npremikanja",
"Občutljivost", "description": "0=izklopljeno | 1=najmanjša | ... | 9=največja"
"premikanja"
],
"desc": "0=izklopljeno | 1=najmanjša | ... | 9=največja"
}, },
"SleepTemperature": { "SleepTemperature": {
"text2": [ "displayText": "Temp. med\nspanjem",
"Temp. med", "description": "Temperatura med spanjem"
"spanjem"
],
"desc": "Temperatura med spanjem"
}, },
"SleepTimeout": { "SleepTimeout": {
"text2": [ "displayText": "Čas do\nspanja",
"Čas do", "description": "Čas pred spanjem (s=sekunde | m=minute)"
"spanja"
],
"desc": "Čas pred spanjem (s=sekunde | m=minute)"
}, },
"ShutdownTimeout": { "ShutdownTimeout": {
"text2": [ "displayText": "Čas do\nizklopa",
"Čas do", "description": "Čas do izklopa (m=minute)"
"izklopa"
],
"desc": "Čas do izklopa (m=minute)"
}, },
"HallEffSensitivity": { "HallEffSensitivity": {
"text2": [ "displayText": "Občut.\nHall son",
"Občut.", "description": "Občutljivost Hallove sonde za zaznavanje spanja (0=izklopljeno | 1=najmanjša | ... | 9=največja)"
"Hall son"
],
"desc": "Občutljivost Hallove sonde za zaznavanje spanja (0=izklopljeno | 1=najmanjša | ... | 9=največja)"
}, },
"TemperatureUnit": { "TemperatureUnit": {
"text2": [ "displayText": "Enota za\ntemperaturo",
"Enota za", "description": "Enota za temperaturo (C=celzij | F=fahrenheit)"
"temperaturo"
],
"desc": "Enota za temperaturo (C=celzij | F=fahrenheit)"
}, },
"DisplayRotation": { "DisplayRotation": {
"text2": [ "displayText": "Orientacija\nzaslona",
"Orientacija", "description": "D=desničar | L=levičar | S=samodejno"
"zaslona"
],
"desc": "D=desničar | L=levičar | S=samodejno"
}, },
"CooldownBlink": { "CooldownBlink": {
"text2": [ "displayText": "Utripanje med\nhlajenjem",
"Utripanje med", "description": "Ko je konica še vroča, utripaj prikaz temperature med hlajenjem."
"hlajenjem"
],
"desc": "Ko je konica še vroča, utripaj prikaz temperature med hlajenjem."
}, },
"ScrollingSpeed": { "ScrollingSpeed": {
"text2": [ "displayText": "Hitrost\nbesedila",
"Hitrost", "description": "Hitrost, s katero se prikazuje besedilo (P=počasi | H=hitro)"
"besedila"
],
"desc": "Hitrost, s katero se prikazuje besedilo (P=počasi | H=hitro)"
}, },
"ReverseButtonTempChange": { "ReverseButtonTempChange": {
"text2": [ "displayText": "Obrni\ntipki + -?",
"Obrni", "description": "Zamenjaj funkciji gumbov."
"tipki + -?"
],
"desc": "Zamenjaj funkciji gumbov."
}, },
"AnimSpeed": { "AnimSpeed": {
"text2": [ "displayText": "Anim.\nspeed",
"Anim.", "description": "Pace of icon animations in menu (O=off | P=slow | M=medium | H=fast)"
"speed"
],
"desc": "Pace of icon animations in menu (O=off | P=slow | M=medium | H=fast)"
}, },
"AnimLoop": { "AnimLoop": {
"text2": [ "displayText": "Anim.\nloop",
"Anim.", "description": "Loop icon animations in main menu"
"loop"
],
"desc": "Loop icon animations in main menu"
}, },
"Brightness": { "Brightness": {
"text2": [ "displayText": "Screen\nbrightness",
"Screen", "description": "Adjust the OLED screen brightness"
"brightness"
],
"desc": "Adjust the OLED screen brightness"
}, },
"ColourInversion": { "ColourInversion": {
"text2": [ "displayText": "Invert\nscreen",
"Invert", "description": "Invert the OLED screen colors"
"screen"
],
"desc": "Invert the OLED screen colors"
}, },
"LOGOTime": { "LOGOTime": {
"text2": [ "displayText": "Boot logo\nduration",
"Boot logo", "description": "Set boot logo duration (s=seconds)"
"duration"
],
"desc": "Set boot logo duration (s=seconds)"
}, },
"AdvancedIdle": { "AdvancedIdle": {
"text2": [ "displayText": "Več info. na\nmir. zaslonu",
"Več info. na", "description": "Prikaži več informacij z manjšo pisavo na mirovalnem zaslonu."
"mir. zaslonu"
],
"desc": "Prikaži več informacij z manjšo pisavo na mirovalnem zaslonu."
}, },
"AdvancedSoldering": { "AdvancedSoldering": {
"text2": [ "displayText": "Več info na\nzaslonu spaj.",
"Več info na", "description": "Prikaže več informacij z manjšo pisavo na zaslonu med spajkanjem."
"zaslonu spaj." },
], "BluetoothLE": {
"desc": "Prikaže več informacij z manjšo pisavo na zaslonu med spajkanjem." "displayText": "Bluetooth\n",
"description": "Enables BLE"
}, },
"PowerLimit": { "PowerLimit": {
"text2": [ "displayText": "Meja\nmoči",
"Meja", "description": "Največja dovoljena moč v vatih [W]"
"moči"
],
"desc": "Največja dovoljena moč v vatih [W]"
}, },
"CalibrateCJC": { "CalibrateCJC": {
"text2": [ "displayText": "Calibrate CJC\nat next boot",
"Calibrate CJC", "description": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
"at next boot"
],
"desc": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
}, },
"VoltageCalibration": { "VoltageCalibration": {
"text2": [ "displayText": "Kalibriram\nvhodno napetost?",
"Kalibriram", "description": "Kalibracija VIN (nastavitve z gumbi, dolg pritisk za izhod)"
"vhodno napetost?"
],
"desc": "Kalibracija VIN (nastavitve z gumbi, dolg pritisk za izhod)"
}, },
"PowerPulsePower": { "PowerPulsePower": {
"text2": [ "displayText": "Pulz\nmoči",
"Pulz", "description": "Velikost moči za vzdrževanje budnosti."
"moči"
],
"desc": "Velikost moči za vzdrževanje budnosti."
}, },
"PowerPulseWait": { "PowerPulseWait": {
"text2": [ "displayText": "Power pulse\ndelay",
"Power pulse", "description": "Delay before keep-awake-pulse is triggered (x 2.5s)"
"delay"
],
"desc": "Delay before keep-awake-pulse is triggered (x 2.5s)"
}, },
"PowerPulseDuration": { "PowerPulseDuration": {
"text2": [ "displayText": "Power pulse\nduration",
"Power pulse", "description": "Keep-awake-pulse duration (x 250ms)"
"duration"
],
"desc": "Keep-awake-pulse duration (x 250ms)"
}, },
"SettingsReset": { "SettingsReset": {
"text2": [ "displayText": "Tovarniške\nnastavitve?",
"Tovarniške", "description": "Ponastavitev vseh nastavitev"
"nastavitve?"
],
"desc": "Ponastavitev vseh nastavitev"
}, },
"LanguageSwitch": { "LanguageSwitch": {
"text2": [ "displayText": "Jezik:\n SL Slovenščina",
"Jezik:", "description": ""
" SL Slovenščina"
],
"desc": ""
} }
} }
} }

View File

@@ -2,44 +2,67 @@
"languageCode": "SR_CYRL", "languageCode": "SR_CYRL",
"languageLocalName": "Српски", "languageLocalName": "Српски",
"tempUnitFahrenheit": false, "tempUnitFahrenheit": false,
"messages": {
"SettingsCalibrationWarning": "Before rebooting, make sure tip & handle are at room temperature!",
"CJCCalibrating": "calibrating",
"SettingsResetWarning": "Да ли заиста желите да вратите поставке на фабричке вредности?",
"UVLOWarningString": "НИЗ.НАП.",
"UndervoltageString": "ПРЕНИЗАК НАПОН",
"InputVoltageString": "Ул. напон: ",
"SleepingSimpleString": "Сан",
"SleepingAdvancedString": "Спавање...",
"SleepingTipAdvancedString": "Врх:",
"OffString": "Иск",
"DeviceFailedValidationWarning": "Your device is most likely a counterfeit!"
},
"messagesWarn": { "messagesWarn": {
"CJCCalibrationDone": [ "CJCCalibrationDone": {
"Calibration", "message": "Calibration\ndone!"
"done!" },
], "ResetOKMessage": {
"ResetOKMessage": "Reset OK", "message": "Reset OK"
"SettingsResetMessage": [ },
"Certain settings", "SettingsResetMessage": {
"were changed!" "message": "Certain settings\nwere changed!"
], },
"NoAccelerometerMessage": [ "NoAccelerometerMessage": {
"No accelerometer", "message": "No accelerometer\ndetected!"
"detected!" },
], "NoPowerDeliveryMessage": {
"NoPowerDeliveryMessage": [ "message": "No USB-PD IC\ndetected!"
"No USB-PD IC", },
"detected!" "LockingKeysString": {
], "message": "LOCKED"
"LockingKeysString": "LOCKED", },
"UnlockingKeysString": "UNLOCKED", "UnlockingKeysString": {
"WarningKeysLockedString": "!LOCKED!", "message": "UNLOCKED"
"WarningThermalRunaway": [ },
"Thermal", "WarningKeysLockedString": {
"Runaway" "message": "!LOCKED!"
] },
"WarningThermalRunaway": {
"message": "Thermal\nRunaway"
},
"SettingsCalibrationWarning": {
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
"CJCCalibrating": {
"message": "calibrating\n"
},
"SettingsResetWarning": {
"message": "Да ли заиста желите да вратите поставке на фабричке вредности?"
},
"UVLOWarningString": {
"message": "НИЗ.НАП."
},
"UndervoltageString": {
"message": "ПРЕНИЗАК НАПОН\n"
},
"InputVoltageString": {
"message": "Ул. напон: \n"
},
"SleepingSimpleString": {
"message": "Сан"
},
"SleepingAdvancedString": {
"message": "Спавање...\n"
},
"SleepingTipAdvancedString": {
"message": "Врх: \n"
},
"OffString": {
"message": "Иск"
},
"DeviceFailedValidationWarning": {
"message": "Your device is most likely a counterfeit!"
}
}, },
"characters": { "characters": {
"SettingRightChar": "Д", "SettingRightChar": "Д",
@@ -53,289 +76,176 @@
"SettingStartSolderingChar": "Л", "SettingStartSolderingChar": "Л",
"SettingStartSleepChar": "С", "SettingStartSleepChar": "С",
"SettingStartSleepOffChar": "X", "SettingStartSleepOffChar": "X",
"SettingSensitivityOff": "O",
"SettingSensitivityLow": "L",
"SettingSensitivityMedium": "M",
"SettingSensitivityHigh": "H",
"SettingLockDisableChar": "D", "SettingLockDisableChar": "D",
"SettingLockBoostChar": "B", "SettingLockBoostChar": "B",
"SettingLockFullChar": "F" "SettingLockFullChar": "F"
}, },
"menuGroups": { "menuGroups": {
"PowerMenu": { "PowerMenu": {
"text2": [ "displayText": "Power\nsettings",
"Power", "description": ""
"settings"
],
"desc": ""
}, },
"SolderingMenu": { "SolderingMenu": {
"text2": [ "displayText": "Поставке\nлемљења",
"Поставке", "description": ""
"лемљења"
],
"desc": ""
}, },
"PowerSavingMenu": { "PowerSavingMenu": {
"text2": [ "displayText": "Уштеда\nенергије",
"Уштеда", "description": ""
"енергије"
],
"desc": ""
}, },
"UIMenu": { "UIMenu": {
"text2": [ "displayText": "Корисничко\nсучеље",
"Корисничко", "description": ""
"сучеље"
],
"desc": ""
}, },
"AdvancedMenu": { "AdvancedMenu": {
"text2": [ "displayText": "Напредне\nпоставке",
"Напредне", "description": ""
"поставке"
],
"desc": ""
} }
}, },
"menuOptions": { "menuOptions": {
"DCInCutoff": { "DCInCutoff": {
"text2": [ "displayText": "Врста\nнапајања",
"Врста", "description": "Тип напајања; одређује најнижи радни напон. (DC=адаптер [10V] | S=батерија [3,3V по ћелији])"
"напајања"
],
"desc": "Тип напајања; одређује најнижи радни напон. (DC=адаптер [10V] | S=батерија [3,3V по ћелији])"
}, },
"MinVolCell": { "MinVolCell": {
"text2": [ "displayText": "Minimum\nvoltage",
"Minimum", "description": "Minimum allowed voltage per battery cell (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)"
"voltage"
],
"desc": "Minimum allowed voltage per battery cell (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)"
}, },
"QCMaxVoltage": { "QCMaxVoltage": {
"text2": [ "displayText": "Улазна\nснага",
"Улазна", "description": "Снага напајања у ватима."
"снага"
],
"desc": "Снага напајања у ватима."
}, },
"PDNegTimeout": { "PDNegTimeout": {
"text2": [ "displayText": "PD\ntimeout",
"PD", "description": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers"
"timeout" },
], "PDVpdo": {
"desc": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers" "displayText": "PD\nVPDO",
"description": "Enables PPS & EPR modes"
}, },
"BoostTemperature": { "BoostTemperature": {
"text2": [ "displayText": "Темп.\nпојачања",
"Темп.", "description": "Температура врха лемилице у току појачања."
"појачања"
],
"desc": "Температура врха лемилице у току појачања."
}, },
"AutoStart": { "AutoStart": {
"text2": [ "displayText": "Врући\nстарт",
"Врући", "description": "Лемилица одмах по покретању прелази у режим лемљења и греје се. (И=искључити | Л=лемљење | С=спавати | X=спавати собна температура)"
"старт"
],
"desc": "Лемилица одмах по покретању прелази у режим лемљења и греје се. (И=искључити | Л=лемљење | С=спавати | X=спавати собна температура)"
}, },
"TempChangeShortStep": { "TempChangeShortStep": {
"text2": [ "displayText": "Temp change\nshort",
"Temp change", "description": "Temperature-change-increment on short button press"
"short"
],
"desc": "Temperature-change-increment on short button press"
}, },
"TempChangeLongStep": { "TempChangeLongStep": {
"text2": [ "displayText": "Temp change\nlong",
"Temp change", "description": "Temperature-change-increment on long button press"
"long"
],
"desc": "Temperature-change-increment on long button press"
}, },
"LockingMode": { "LockingMode": {
"text2": [ "displayText": "Allow locking\nbuttons",
"Allow locking", "description": "While soldering, hold down both buttons to toggle locking them (D=disable | B=boost mode only | F=full locking)"
"buttons"
],
"desc": "While soldering, hold down both buttons to toggle locking them (D=disable | B=boost mode only | F=full locking)"
}, },
"MotionSensitivity": { "MotionSensitivity": {
"text2": [ "displayText": "Осетљивост\nна покрет",
"Осетљивост", "description": "Осетљивост сензора покрета. (0=искључено | 1=најмање осетљиво | ... | 9=најосетљивије)"
"на покрет"
],
"desc": "Осетљивост сензора покрета. (0=искључено | 1=најмање осетљиво | ... | 9=најосетљивије)"
}, },
"SleepTemperature": { "SleepTemperature": {
"text2": [ "displayText": "Темп.\nспавања",
"Темп.", "description": "Температура на коју се спушта лемилица након одређеног времена мировања. (C | F)"
"спавања"
],
"desc": "Температура на коју се спушта лемилица након одређеног времена мировања. (C | F)"
}, },
"SleepTimeout": { "SleepTimeout": {
"text2": [ "displayText": "Време до\nспавања",
"Време до", "description": "Време мировања након кога лемилица спушта температуру. (m=минути | s=секунде)"
"спавања"
],
"desc": "Време мировања након кога лемилица спушта температуру. (m=минути | s=секунде)"
}, },
"ShutdownTimeout": { "ShutdownTimeout": {
"text2": [ "displayText": "Време до\nгашења",
"Време до", "description": "Време мировања након кога се лемилица гаси. (m=минути)"
"гашења"
],
"desc": "Време мировања након кога се лемилица гаси. (m=минути)"
}, },
"HallEffSensitivity": { "HallEffSensitivity": {
"text2": [ "displayText": "Hall sensor\nsensitivity",
"Hall sensor", "description": "Sensitivity to magnets (0=искључено | 1=најмање осетљиво | ... | 9=најосетљивије)"
"sensitivity"
],
"desc": "Sensitivity to magnets (0=искључено | 1=најмање осетљиво | ... | 9=најосетљивије)"
}, },
"TemperatureUnit": { "TemperatureUnit": {
"text2": [ "displayText": "Јединица\nтемпературе",
"Јединица", "description": "Јединице у којима се приказује температура. (C=целзијус | F=фаренхајт)"
"температуре"
],
"desc": "Јединице у којима се приказује температура. (C=целзијус | F=фаренхајт)"
}, },
"DisplayRotation": { "DisplayRotation": {
"text2": [ "displayText": "Оријентација\nекрана",
"Оријентација", "description": "Како је окренут екран. (Д=за десноруке | Л=за леворуке | А=аутоматски)"
"екрана"
],
"desc": "Како је окренут екран. (Д=за десноруке | Л=за леворуке | А=аутоматски)"
}, },
"CooldownBlink": { "CooldownBlink": {
"text2": [ "displayText": "Упозорење\nпри хлађењу",
"Упозорење", "description": "Приказ температуре трепће приликом хлађења докле год је врх и даље врућ."
"при хлађењу"
],
"desc": "Приказ температуре трепће приликом хлађења докле год је врх и даље врућ."
}, },
"ScrollingSpeed": { "ScrollingSpeed": {
"text2": [ "displayText": "Брзина\nпорука",
"Брзина", "description": "Брзина кретања описних порука попут ове. (С=споро | Б=брзо)"
"порука"
],
"desc": "Брзина кретања описних порука попут ове. (С=споро | Б=брзо)"
}, },
"ReverseButtonTempChange": { "ReverseButtonTempChange": {
"text2": [ "displayText": "Swap\n+ - keys",
"Swap", "description": "Reverse assignment of buttons for temperature adjustment"
"+ - keys"
],
"desc": "Reverse assignment of buttons for temperature adjustment"
}, },
"AnimSpeed": { "AnimSpeed": {
"text2": [ "displayText": "Anim.\nspeed",
"Anim.", "description": "Pace of icon animations in menu (O=off | С=slow | M=medium | Б=fast)"
"speed"
],
"desc": "Pace of icon animations in menu (O=off | С=slow | M=medium | Б=fast)"
}, },
"AnimLoop": { "AnimLoop": {
"text2": [ "displayText": "Anim.\nloop",
"Anim.", "description": "Loop icon animations in main menu"
"loop"
],
"desc": "Loop icon animations in main menu"
}, },
"Brightness": { "Brightness": {
"text2": [ "displayText": "Screen\nbrightness",
"Screen", "description": "Adjust the OLED screen brightness"
"brightness"
],
"desc": "Adjust the OLED screen brightness"
}, },
"ColourInversion": { "ColourInversion": {
"text2": [ "displayText": "Invert\nscreen",
"Invert", "description": "Invert the OLED screen colors"
"screen"
],
"desc": "Invert the OLED screen colors"
}, },
"LOGOTime": { "LOGOTime": {
"text2": [ "displayText": "Boot logo\nduration",
"Boot logo", "description": "Set boot logo duration (s=seconds)"
"duration"
],
"desc": "Set boot logo duration (s=seconds)"
}, },
"AdvancedIdle": { "AdvancedIdle": {
"text2": [ "displayText": "Детаљи током\nмировања",
"Детаљи током", "description": "Приказивање детаљних информација на екрану током мировања."
"мировања"
],
"desc": "Приказивање детаљних информација на екрану током мировања."
}, },
"AdvancedSoldering": { "AdvancedSoldering": {
"text2": [ "displayText": "Детаљи током\nлемљења",
"Детаљи током", "description": "Приказивање детаљних информација на екрану током лемљења."
"лемљења" },
], "BluetoothLE": {
"desc": "Приказивање детаљних информација на екрану током лемљења." "displayText": "Bluetooth\n",
"description": "Enables BLE"
}, },
"PowerLimit": { "PowerLimit": {
"text2": [ "displayText": "Power\nlimit",
"Power", "description": "Maximum power the iron can use (W=watt)"
"limit"
],
"desc": "Maximum power the iron can use (W=watt)"
}, },
"CalibrateCJC": { "CalibrateCJC": {
"text2": [ "displayText": "Calibrate CJC\nat next boot",
"Calibrate CJC", "description": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5 C)"
"at next boot"
],
"desc": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5 C)"
}, },
"VoltageCalibration": { "VoltageCalibration": {
"text2": [ "displayText": "Калибрација\nулазног напона",
"Калибрација", "description": "Калибрисање улазног напона. Подешава се на тастере; дуги притисак за крај."
"улазног напона"
],
"desc": "Калибрисање улазног напона. Подешава се на тастере; дуги притисак за крај."
}, },
"PowerPulsePower": { "PowerPulsePower": {
"text2": [ "displayText": "Power\npulse",
"Power", "description": "Intensity of power of keep-awake-pulse (W=watt)"
"pulse"
],
"desc": "Intensity of power of keep-awake-pulse (W=watt)"
}, },
"PowerPulseWait": { "PowerPulseWait": {
"text2": [ "displayText": "Power pulse\ndelay",
"Power pulse", "description": "Delay before keep-awake-pulse is triggered (x 2.5с)"
"delay"
],
"desc": "Delay before keep-awake-pulse is triggered (x 2.5с)"
}, },
"PowerPulseDuration": { "PowerPulseDuration": {
"text2": [ "displayText": "Power pulse\nduration",
"Power pulse", "description": "Keep-awake-pulse duration (x 250мс)"
"duration"
],
"desc": "Keep-awake-pulse duration (x 250мс)"
}, },
"SettingsReset": { "SettingsReset": {
"text2": [ "displayText": "Фабричке\nпоставке",
"Фабричке", "description": "Враћање свих поставки на фабричке вредности."
"поставке"
],
"desc": "Враћање свих поставки на фабричке вредности."
}, },
"LanguageSwitch": { "LanguageSwitch": {
"text2": [ "displayText": "Jезик:\n SR Српски",
"Jезик:", "description": ""
" SR Српски"
],
"desc": ""
} }
} }
} }

View File

@@ -2,44 +2,67 @@
"languageCode": "SR_LATN", "languageCode": "SR_LATN",
"languageLocalName": "Srpski", "languageLocalName": "Srpski",
"tempUnitFahrenheit": false, "tempUnitFahrenheit": false,
"messages": {
"SettingsCalibrationWarning": "Before rebooting, make sure tip & handle are at room temperature!",
"CJCCalibrating": "calibrating",
"SettingsResetWarning": "Da li zaista želite da vratite postavke na fabričke vrednosti?",
"UVLOWarningString": "NIZ.NAP.",
"UndervoltageString": "PRENIZAK NAPON",
"InputVoltageString": "Ul. napon: ",
"SleepingSimpleString": "Zzz",
"SleepingAdvancedString": "Spavanje...",
"SleepingTipAdvancedString": "Vrh:",
"OffString": "Isk",
"DeviceFailedValidationWarning": "Your device is most likely a counterfeit!"
},
"messagesWarn": { "messagesWarn": {
"CJCCalibrationDone": [ "CJCCalibrationDone": {
"Calibration", "message": "Calibration\ndone!"
"done!" },
], "ResetOKMessage": {
"ResetOKMessage": "Reset OK", "message": "Reset OK"
"SettingsResetMessage": [ },
"Certain settings", "SettingsResetMessage": {
"were changed!" "message": "Certain settings\nwere changed!"
], },
"NoAccelerometerMessage": [ "NoAccelerometerMessage": {
"No accelerometer", "message": "No accelerometer\ndetected!"
"detected!" },
], "NoPowerDeliveryMessage": {
"NoPowerDeliveryMessage": [ "message": "No USB-PD IC\ndetected!"
"No USB-PD IC", },
"detected!" "LockingKeysString": {
], "message": "LOCKED"
"LockingKeysString": "LOCKED", },
"UnlockingKeysString": "UNLOCKED", "UnlockingKeysString": {
"WarningKeysLockedString": "!LOCKED!", "message": "UNLOCKED"
"WarningThermalRunaway": [ },
"Thermal", "WarningKeysLockedString": {
"Runaway" "message": "!LOCKED!"
] },
"WarningThermalRunaway": {
"message": "Thermal\nRunaway"
},
"SettingsCalibrationWarning": {
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
"CJCCalibrating": {
"message": "calibrating\n"
},
"SettingsResetWarning": {
"message": "Da li zaista želite da vratite postavke na fabričke vrednosti?"
},
"UVLOWarningString": {
"message": "NIZ.NAP."
},
"UndervoltageString": {
"message": "PRENIZAK NAPON\n"
},
"InputVoltageString": {
"message": "Ul. napon: \n"
},
"SleepingSimpleString": {
"message": "Zzz"
},
"SleepingAdvancedString": {
"message": "Spavanje...\n"
},
"SleepingTipAdvancedString": {
"message": "Vrh: \n"
},
"OffString": {
"message": "Isk"
},
"DeviceFailedValidationWarning": {
"message": "Your device is most likely a counterfeit!"
}
}, },
"characters": { "characters": {
"SettingRightChar": "D", "SettingRightChar": "D",
@@ -53,289 +76,176 @@
"SettingStartSolderingChar": "L", "SettingStartSolderingChar": "L",
"SettingStartSleepChar": "S", "SettingStartSleepChar": "S",
"SettingStartSleepOffChar": "X", "SettingStartSleepOffChar": "X",
"SettingSensitivityOff": "O",
"SettingSensitivityLow": "L",
"SettingSensitivityMedium": "M",
"SettingSensitivityHigh": "H",
"SettingLockDisableChar": "D", "SettingLockDisableChar": "D",
"SettingLockBoostChar": "B", "SettingLockBoostChar": "B",
"SettingLockFullChar": "F" "SettingLockFullChar": "F"
}, },
"menuGroups": { "menuGroups": {
"PowerMenu": { "PowerMenu": {
"text2": [ "displayText": "Power\nsettings",
"Power", "description": ""
"settings"
],
"desc": ""
}, },
"SolderingMenu": { "SolderingMenu": {
"text2": [ "displayText": "Postavke\nlemljenja",
"Postavke", "description": ""
"lemljenja"
],
"desc": ""
}, },
"PowerSavingMenu": { "PowerSavingMenu": {
"text2": [ "displayText": "Ušteda\nenergije",
"Ušteda", "description": ""
"energije"
],
"desc": ""
}, },
"UIMenu": { "UIMenu": {
"text2": [ "displayText": "Korisničko\nsučelje",
"Korisničko", "description": ""
"sučelje"
],
"desc": ""
}, },
"AdvancedMenu": { "AdvancedMenu": {
"text2": [ "displayText": "Napredne\npostavke",
"Napredne", "description": ""
"postavke"
],
"desc": ""
} }
}, },
"menuOptions": { "menuOptions": {
"DCInCutoff": { "DCInCutoff": {
"text2": [ "displayText": "Vrsta\nnapajanja",
"Vrsta", "description": "Tip napajanja; određuje najniži radni napon. (DC=adapter [10V], S=baterija [3,3V po ćeliji])"
"napajanja"
],
"desc": "Tip napajanja; određuje najniži radni napon. (DC=adapter [10V], S=baterija [3,3V po ćeliji])"
}, },
"MinVolCell": { "MinVolCell": {
"text2": [ "displayText": "Minimum\nvoltage",
"Minimum", "description": "Minimum allowed voltage per battery cell (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)"
"voltage"
],
"desc": "Minimum allowed voltage per battery cell (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)"
}, },
"QCMaxVoltage": { "QCMaxVoltage": {
"text2": [ "displayText": "Ulazna\nsnaga",
"Ulazna", "description": "Snaga napajanja u vatima."
"snaga"
],
"desc": "Snaga napajanja u vatima."
}, },
"PDNegTimeout": { "PDNegTimeout": {
"text2": [ "displayText": "PD\ntimeout",
"PD", "description": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers"
"timeout" },
], "PDVpdo": {
"desc": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers" "displayText": "PD\nVPDO",
"description": "Enables PPS & EPR modes"
}, },
"BoostTemperature": { "BoostTemperature": {
"text2": [ "displayText": "Temp.\npojačanja",
"Temp.", "description": "Temperatura vrha lemilice u toku pojačanja."
"pojačanja"
],
"desc": "Temperatura vrha lemilice u toku pojačanja."
}, },
"AutoStart": { "AutoStart": {
"text2": [ "displayText": "Vrući\nstart",
"Vrući", "description": "Lemilica odmah po pokretanju prelazi u režim lemljenja i greje se. (I=isključiti | L=lemljenje | S=spavati | X=spavati sobna temperatura)"
"start"
],
"desc": "Lemilica odmah po pokretanju prelazi u režim lemljenja i greje se. (I=isključiti | L=lemljenje | S=spavati | X=spavati sobna temperatura)"
}, },
"TempChangeShortStep": { "TempChangeShortStep": {
"text2": [ "displayText": "Temp change\nshort",
"Temp change", "description": "Temperature-change-increment on short button press"
"short"
],
"desc": "Temperature-change-increment on short button press"
}, },
"TempChangeLongStep": { "TempChangeLongStep": {
"text2": [ "displayText": "Temp change\nlong",
"Temp change", "description": "Temperature-change-increment on long button press"
"long"
],
"desc": "Temperature-change-increment on long button press"
}, },
"LockingMode": { "LockingMode": {
"text2": [ "displayText": "Allow locking\nbuttons",
"Allow locking", "description": "While soldering, hold down both buttons to toggle locking them (D=disable | B=boost mode only | F=full locking)"
"buttons"
],
"desc": "While soldering, hold down both buttons to toggle locking them (D=disable | B=boost mode only | F=full locking)"
}, },
"MotionSensitivity": { "MotionSensitivity": {
"text2": [ "displayText": "Osetljivost\nna pokret",
"Osetljivost", "description": "Osetljivost senzora pokreta. (0=isključeno | 1=najmanje osetljivo | ... | 9=najosetljivije)"
"na pokret"
],
"desc": "Osetljivost senzora pokreta. (0=isključeno | 1=najmanje osetljivo | ... | 9=najosetljivije)"
}, },
"SleepTemperature": { "SleepTemperature": {
"text2": [ "displayText": "Temp.\nspavanja",
"Temp.", "description": "Temperatura na koju se spušta lemilica nakon određenog vremena mirovanja. (C | F)"
"spavanja"
],
"desc": "Temperatura na koju se spušta lemilica nakon određenog vremena mirovanja. (C | F)"
}, },
"SleepTimeout": { "SleepTimeout": {
"text2": [ "displayText": "Vreme do\nspavanja",
"Vreme do", "description": "Vreme mirovanja nakon koga lemilica spušta temperaturu. (m=minuti | s=sekunde)"
"spavanja"
],
"desc": "Vreme mirovanja nakon koga lemilica spušta temperaturu. (m=minuti | s=sekunde)"
}, },
"ShutdownTimeout": { "ShutdownTimeout": {
"text2": [ "displayText": "Vreme do\ngašenja",
"Vreme do", "description": "Vreme mirovanja nakon koga se lemilica gasi. (m=minuti)"
"gašenja"
],
"desc": "Vreme mirovanja nakon koga se lemilica gasi. (m=minuti)"
}, },
"HallEffSensitivity": { "HallEffSensitivity": {
"text2": [ "displayText": "Hall sensor\nsensitivity",
"Hall sensor", "description": "Sensitivity to magnets (0=isključeno | 1=najmanje osetljivo | ... | 9=najosetljivije)"
"sensitivity"
],
"desc": "Sensitivity to magnets (0=isključeno | 1=najmanje osetljivo | ... | 9=najosetljivije)"
}, },
"TemperatureUnit": { "TemperatureUnit": {
"text2": [ "displayText": "Jedinica\ntemperature",
"Jedinica", "description": "Jedinice u kojima se prikazuje temperatura. (C=celzijus | F=farenhajt)"
"temperature"
],
"desc": "Jedinice u kojima se prikazuje temperatura. (C=celzijus | F=farenhajt)"
}, },
"DisplayRotation": { "DisplayRotation": {
"text2": [ "displayText": "Orijentacija\nekrana",
"Orijentacija", "description": "Kako je okrenut ekran. (D=za desnoruke | L=za levoruke | A=automatski)"
"ekrana"
],
"desc": "Kako je okrenut ekran. (D=za desnoruke | L=za levoruke | A=automatski)"
}, },
"CooldownBlink": { "CooldownBlink": {
"text2": [ "displayText": "Upozorenje\npri hlađenju",
"Upozorenje", "description": "Prikaz temperature trepće prilikom hlađenja dokle god je vrh i dalje vruć."
"pri hlađenju"
],
"desc": "Prikaz temperature trepće prilikom hlađenja dokle god je vrh i dalje vruć."
}, },
"ScrollingSpeed": { "ScrollingSpeed": {
"text2": [ "displayText": "Brzina\nporuka",
"Brzina", "description": "Brzina kretanja opisnih poruka poput ove. (S=sporo | B=brzo)"
"poruka"
],
"desc": "Brzina kretanja opisnih poruka poput ove. (S=sporo | B=brzo)"
}, },
"ReverseButtonTempChange": { "ReverseButtonTempChange": {
"text2": [ "displayText": "Swap\n+ - keys",
"Swap", "description": "Reverse assignment of buttons for temperature adjustment"
"+ - keys"
],
"desc": "Reverse assignment of buttons for temperature adjustment"
}, },
"AnimSpeed": { "AnimSpeed": {
"text2": [ "displayText": "Anim.\nspeed",
"Anim.", "description": "Pace of icon animations in menu (O=off | S=slow | M=medium | B=fast)"
"speed"
],
"desc": "Pace of icon animations in menu (O=off | S=slow | M=medium | B=fast)"
}, },
"AnimLoop": { "AnimLoop": {
"text2": [ "displayText": "Anim.\nloop",
"Anim.", "description": "Loop icon animations in main menu"
"loop"
],
"desc": "Loop icon animations in main menu"
}, },
"Brightness": { "Brightness": {
"text2": [ "displayText": "Screen\nbrightness",
"Screen", "description": "Adjust the OLED screen brightness"
"brightness"
],
"desc": "Adjust the OLED screen brightness"
}, },
"ColourInversion": { "ColourInversion": {
"text2": [ "displayText": "Invert\nscreen",
"Invert", "description": "Invert the OLED screen colors"
"screen"
],
"desc": "Invert the OLED screen colors"
}, },
"LOGOTime": { "LOGOTime": {
"text2": [ "displayText": "Boot logo\nduration",
"Boot logo", "description": "Set boot logo duration (s=seconds)"
"duration"
],
"desc": "Set boot logo duration (s=seconds)"
}, },
"AdvancedIdle": { "AdvancedIdle": {
"text2": [ "displayText": "Detalji tokom\nmirovanja",
"Detalji tokom", "description": "Prikazivanje detaljnih informacija na ekranu tokom mirovanja."
"mirovanja"
],
"desc": "Prikazivanje detaljnih informacija na ekranu tokom mirovanja."
}, },
"AdvancedSoldering": { "AdvancedSoldering": {
"text2": [ "displayText": "Detalji tokom\nlemljenja",
"Detalji tokom", "description": "Prikazivanje detaljnih informacija na ekranu tokom lemljenja."
"lemljenja" },
], "BluetoothLE": {
"desc": "Prikazivanje detaljnih informacija na ekranu tokom lemljenja." "displayText": "Bluetooth\n",
"description": "Enables BLE"
}, },
"PowerLimit": { "PowerLimit": {
"text2": [ "displayText": "Power\nlimit",
"Power", "description": "Maximum power the iron can use (W=watt)"
"limit"
],
"desc": "Maximum power the iron can use (W=watt)"
}, },
"CalibrateCJC": { "CalibrateCJC": {
"text2": [ "displayText": "Calibrate CJC\nat next boot",
"Calibrate CJC", "description": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
"at next boot"
],
"desc": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
}, },
"VoltageCalibration": { "VoltageCalibration": {
"text2": [ "displayText": "Kalibracija\nulaznog napona",
"Kalibracija", "description": "Kalibrisanje ulaznog napona. Podešava se na tastere; dugi pritisak za kraj."
"ulaznog napona"
],
"desc": "Kalibrisanje ulaznog napona. Podešava se na tastere; dugi pritisak za kraj."
}, },
"PowerPulsePower": { "PowerPulsePower": {
"text2": [ "displayText": "Power\npulse",
"Power", "description": "Intensity of power of keep-awake-pulse (W=watt)"
"pulse"
],
"desc": "Intensity of power of keep-awake-pulse (W=watt)"
}, },
"PowerPulseWait": { "PowerPulseWait": {
"text2": [ "displayText": "Power pulse\ndelay",
"Power pulse", "description": "Delay before keep-awake-pulse is triggered (x 2.5s)"
"delay"
],
"desc": "Delay before keep-awake-pulse is triggered (x 2.5s)"
}, },
"PowerPulseDuration": { "PowerPulseDuration": {
"text2": [ "displayText": "Power pulse\nduration",
"Power pulse", "description": "Keep-awake-pulse duration (x 250ms)"
"duration"
],
"desc": "Keep-awake-pulse duration (x 250ms)"
}, },
"SettingsReset": { "SettingsReset": {
"text2": [ "displayText": "Fabričke\npostavke",
"Fabričke", "description": "Vraćanje svih postavki na fabričke vrednosti."
"postavke"
],
"desc": "Vraćanje svih postavki na fabričke vrednosti."
}, },
"LanguageSwitch": { "LanguageSwitch": {
"text2": [ "displayText": "Jezik:\n SR Srpski",
"Jezik:", "description": ""
" SR Srpski"
],
"desc": ""
} }
} }
} }

View File

@@ -2,44 +2,67 @@
"languageCode": "SV", "languageCode": "SV",
"languageLocalName": "Svenska", "languageLocalName": "Svenska",
"tempUnitFahrenheit": false, "tempUnitFahrenheit": false,
"messages": {
"SettingsCalibrationWarning": "Before rebooting, make sure tip & handle are at room temperature!",
"CJCCalibrating": "calibrating",
"SettingsResetWarning": "Är du säker på att du vill återställa inställningarna?",
"UVLOWarningString": "DC LÅG",
"UndervoltageString": "Underspänning",
"InputVoltageString": "Inspän. V: ",
"SleepingSimpleString": "Zzzz",
"SleepingAdvancedString": "Viloläge...",
"SleepingTipAdvancedString": "Spets:",
"OffString": "Av",
"DeviceFailedValidationWarning": "Your device is most likely a counterfeit!"
},
"messagesWarn": { "messagesWarn": {
"CJCCalibrationDone": [ "CJCCalibrationDone": {
"Calibration", "message": "Calibration\ndone!"
"done!" },
], "ResetOKMessage": {
"ResetOKMessage": "Reset OK", "message": "Reset OK"
"SettingsResetMessage": [ },
"Inställningar", "SettingsResetMessage": {
"återställda" "message": "Inställningar\nåterställda"
], },
"NoAccelerometerMessage": [ "NoAccelerometerMessage": {
"Ingen", "message": "Ingen\naccelerometer"
"accelerometer" },
], "NoPowerDeliveryMessage": {
"NoPowerDeliveryMessage": [ "message": "Ingen USB-PD IC\nhittades!"
"Ingen USB-PD IC", },
"hittades!" "LockingKeysString": {
], "message": "LÅST"
"LockingKeysString": "LÅST", },
"UnlockingKeysString": "UPPLÅST", "UnlockingKeysString": {
"WarningKeysLockedString": "!LÅST!", "message": "UPPLÅST"
"WarningThermalRunaway": [ },
"Thermal", "WarningKeysLockedString": {
"Runaway" "message": "!LÅST!"
] },
"WarningThermalRunaway": {
"message": "Thermal\nRunaway"
},
"SettingsCalibrationWarning": {
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
"CJCCalibrating": {
"message": "calibrating\n"
},
"SettingsResetWarning": {
"message": "Är du säker på att du vill återställa inställningarna?"
},
"UVLOWarningString": {
"message": "DC LÅG"
},
"UndervoltageString": {
"message": "Underspänning\n"
},
"InputVoltageString": {
"message": "Inspän. V: \n"
},
"SleepingSimpleString": {
"message": "Zzzz"
},
"SleepingAdvancedString": {
"message": "Viloläge...\n"
},
"SleepingTipAdvancedString": {
"message": "Spets: \n"
},
"OffString": {
"message": "Av"
},
"DeviceFailedValidationWarning": {
"message": "Your device is most likely a counterfeit!"
}
}, },
"characters": { "characters": {
"SettingRightChar": "H", "SettingRightChar": "H",
@@ -53,289 +76,176 @@
"SettingStartSolderingChar": "L", "SettingStartSolderingChar": "L",
"SettingStartSleepChar": "V", "SettingStartSleepChar": "V",
"SettingStartSleepOffChar": "R", "SettingStartSleepOffChar": "R",
"SettingSensitivityOff": "A",
"SettingSensitivityLow": "L",
"SettingSensitivityMedium": "M",
"SettingSensitivityHigh": "H",
"SettingLockDisableChar": "A", "SettingLockDisableChar": "A",
"SettingLockBoostChar": "T", "SettingLockBoostChar": "T",
"SettingLockFullChar": "F" "SettingLockFullChar": "F"
}, },
"menuGroups": { "menuGroups": {
"PowerMenu": { "PowerMenu": {
"text2": [ "displayText": "Effekt-\ninställning",
"Effekt-", "description": ""
"inställning"
],
"desc": ""
}, },
"SolderingMenu": { "SolderingMenu": {
"text2": [ "displayText": "Lödnings-\ninställning",
"Lödnings-", "description": ""
"inställning"
],
"desc": ""
}, },
"PowerSavingMenu": { "PowerSavingMenu": {
"text2": [ "displayText": "Vilo-\nläge",
"Vilo-", "description": ""
"läge"
],
"desc": ""
}, },
"UIMenu": { "UIMenu": {
"text2": [ "displayText": "Användar-\ngränssnitt",
"Användar-", "description": ""
"gränssnitt"
],
"desc": ""
}, },
"AdvancedMenu": { "AdvancedMenu": {
"text2": [ "displayText": "Avancerade\nalternativ",
"Avancerade", "description": ""
"alternativ"
],
"desc": ""
} }
}, },
"menuOptions": { "menuOptions": {
"DCInCutoff": { "DCInCutoff": {
"text2": [ "displayText": "Ström-\nkälla",
"Ström-", "description": "Strömkälla. Anger lägsta spänning. (DC 10V) (S 3.3V per cell)"
"källa"
],
"desc": "Strömkälla. Anger lägsta spänning. (DC 10V) (S 3.3V per cell)"
}, },
"MinVolCell": { "MinVolCell": {
"text2": [ "displayText": "Minimim-\nspänning",
"Minimim-", "description": "Minimumspänning per cell (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)"
"spänning"
],
"desc": "Minimumspänning per cell (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)"
}, },
"QCMaxVoltage": { "QCMaxVoltage": {
"text2": [ "displayText": "QC\nspänning",
"QC", "description": "Maximal QC-spänning enheten skall efterfråga"
"spänning"
],
"desc": "Maximal QC-spänning enheten skall efterfråga"
}, },
"PDNegTimeout": { "PDNegTimeout": {
"text2": [ "displayText": "PD\ntimeout",
"PD", "description": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers"
"timeout" },
], "PDVpdo": {
"desc": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers" "displayText": "PD\nVPDO",
"description": "Enables PPS & EPR modes"
}, },
"BoostTemperature": { "BoostTemperature": {
"text2": [ "displayText": "Turbo-\ntemp",
"Turbo-", "description": "Temperatur i \"turbo-läge\""
"temp"
],
"desc": "Temperatur i \"turbo-läge\""
}, },
"AutoStart": { "AutoStart": {
"text2": [ "displayText": "Auto\nstart",
"Auto", "description": "Startar automatiskt lödpennan vid uppstart. (A=Av | L=Lödning | V=Viloläge | R=Viloläge Rumstemperatur)"
"start"
],
"desc": "Startar automatiskt lödpennan vid uppstart. (A=Av | L=Lödning | V=Viloläge | R=Viloläge Rumstemperatur)"
}, },
"TempChangeShortStep": { "TempChangeShortStep": {
"text2": [ "displayText": "Temp.just\nkorttryck",
"Temp.just", "description": "Temperaturjustering vid kort knapptryckning"
"korttryck"
],
"desc": "Temperaturjustering vid kort knapptryckning"
}, },
"TempChangeLongStep": { "TempChangeLongStep": {
"text2": [ "displayText": "Temp.just\nlångtryck",
"Temp.just", "description": "Temperaturjustering vid lång knapptryckning"
"långtryck"
],
"desc": "Temperaturjustering vid lång knapptryckning"
}, },
"LockingMode": { "LockingMode": {
"text2": [ "displayText": "Tillåt lås\nvia knappar",
"Tillåt lås", "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)"
"via knappar"
],
"desc": "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)"
}, },
"MotionSensitivity": { "MotionSensitivity": {
"text2": [ "displayText": "Rörelse-\nkänslighet",
"Rörelse-", "description": "Rörelsekänslighet (0=Av | 1=minst känslig | ... | 9=mest känslig)"
"känslighet"
],
"desc": "Rörelsekänslighet (0=Av | 1=minst känslig | ... | 9=mest känslig)"
}, },
"SleepTemperature": { "SleepTemperature": {
"text2": [ "displayText": "Vilo-\ntemp",
"Vilo-", "description": "Vilotemperatur (C)"
"temp"
],
"desc": "Vilotemperatur (C)"
}, },
"SleepTimeout": { "SleepTimeout": {
"text2": [ "displayText": "Vilo-\ntimeout",
"Vilo-", "description": "Vilo-timeout (m=Minuter | s=Sekunder)"
"timeout"
],
"desc": "Vilo-timeout (m=Minuter | s=Sekunder)"
}, },
"ShutdownTimeout": { "ShutdownTimeout": {
"text2": [ "displayText": "Avstängn.\ntimeout",
"Avstängn.", "description": "Avstängnings-timeout (Minuter)"
"timeout"
],
"desc": "Avstängnings-timeout (Minuter)"
}, },
"HallEffSensitivity": { "HallEffSensitivity": {
"text2": [ "displayText": "Sensor-\nkänslght",
"Sensor-", "description": "Känslighet för halleffekt-sensorn för viloläges-detektering (0=Av | 1=minst känslig | ... | 9=mest känslig)"
"känslght"
],
"desc": "Känslighet för halleffekt-sensorn för viloläges-detektering (0=Av | 1=minst känslig | ... | 9=mest känslig)"
}, },
"TemperatureUnit": { "TemperatureUnit": {
"text2": [ "displayText": "Temperatur-\nenheter",
"Temperatur-", "description": "Temperaturenhet (C=Celsius | F=Fahrenheit)"
"enheter"
],
"desc": "Temperaturenhet (C=Celsius | F=Fahrenheit)"
}, },
"DisplayRotation": { "DisplayRotation": {
"text2": [ "displayText": "Visnings\nläge",
"Visnings", "description": "Visningsläge (H=Högerhänt | V=Vänsterhänt | A=Automatisk)"
"läge"
],
"desc": "Visningsläge (H=Högerhänt | V=Vänsterhänt | A=Automatisk)"
}, },
"CooldownBlink": { "CooldownBlink": {
"text2": [ "displayText": "Nedkylnings-\nblink",
"Nedkylnings-", "description": "Blinka temperaturen medan spetsen kyls av och fortfarande är varm."
"blink"
],
"desc": "Blinka temperaturen medan spetsen kyls av och fortfarande är varm."
}, },
"ScrollingSpeed": { "ScrollingSpeed": {
"text2": [ "displayText": "Beskrivning\nrullhast.",
"Beskrivning", "description": "Hastighet som den här texten rullar i"
"rullhast."
],
"desc": "Hastighet som den här texten rullar i"
}, },
"ReverseButtonTempChange": { "ReverseButtonTempChange": {
"text2": [ "displayText": "Omvända\n+- knappar",
"Omvända", "description": "Omvänd ordning för temperaturjustering via plus/minus knapparna"
"+- knappar"
],
"desc": "Omvänd ordning för temperaturjustering via plus/minus knapparna"
}, },
"AnimSpeed": { "AnimSpeed": {
"text2": [ "displayText": "Anim.-\nhastighet",
"Anim.-", "description": "Animationshastighet för ikoner i menyer (A=av | L=långsam | M=medel | S=snabb)"
"hastighet"
],
"desc": "Animationshastighet för ikoner i menyer (A=av | L=långsam | M=medel | S=snabb)"
}, },
"AnimLoop": { "AnimLoop": {
"text2": [ "displayText": "Anim.\nloop",
"Anim.", "description": "Loopa animationer i huvudmeny"
"loop"
],
"desc": "Loopa animationer i huvudmeny"
}, },
"Brightness": { "Brightness": {
"text2": [ "displayText": "Screen\nbrightness",
"Screen", "description": "Adjust the OLED screen brightness"
"brightness"
],
"desc": "Adjust the OLED screen brightness"
}, },
"ColourInversion": { "ColourInversion": {
"text2": [ "displayText": "Invert\nscreen",
"Invert", "description": "Invert the OLED screen colors"
"screen"
],
"desc": "Invert the OLED screen colors"
}, },
"LOGOTime": { "LOGOTime": {
"text2": [ "displayText": "Boot logo\nduration",
"Boot logo", "description": "Set boot logo duration (s=seconds)"
"duration"
],
"desc": "Set boot logo duration (s=seconds)"
}, },
"AdvancedIdle": { "AdvancedIdle": {
"text2": [ "displayText": "Detaljerad\nvid inaktiv",
"Detaljerad", "description": "Visa detaljerad information i mindre typsnitt när inaktiv."
"vid inaktiv"
],
"desc": "Visa detaljerad information i mindre typsnitt när inaktiv."
}, },
"AdvancedSoldering": { "AdvancedSoldering": {
"text2": [ "displayText": "Detaljerad\nlödng.skärm",
"Detaljerad", "description": "Visa detaljerad information vid lödning"
"lödng.skärm" },
], "BluetoothLE": {
"desc": "Visa detaljerad information vid lödning" "displayText": "Bluetooth\n",
"description": "Enables BLE"
}, },
"PowerLimit": { "PowerLimit": {
"text2": [ "displayText": "Max-\neffekt",
"Max-", "description": "Maximal effekt som enheten kan använda (Watt)"
"effekt"
],
"desc": "Maximal effekt som enheten kan använda (Watt)"
}, },
"CalibrateCJC": { "CalibrateCJC": {
"text2": [ "displayText": "Calibrate CJC\nat next boot",
"Calibrate CJC", "description": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
"at next boot"
],
"desc": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
}, },
"VoltageCalibration": { "VoltageCalibration": {
"text2": [ "displayText": "Kalibrera\ninspänning?",
"Kalibrera", "description": "Inspänningskalibrering. Knapparna justerar, håll inne för avslut"
"inspänning?"
],
"desc": "Inspänningskalibrering. Knapparna justerar, håll inne för avslut"
}, },
"PowerPulsePower": { "PowerPulsePower": {
"text2": [ "displayText": "Power\npulse",
"Power", "description": "Intensity of power of keep-awake-pulse (W=watt)"
"pulse"
],
"desc": "Intensity of power of keep-awake-pulse (W=watt)"
}, },
"PowerPulseWait": { "PowerPulseWait": {
"text2": [ "displayText": "Power pulse\ndelay",
"Power pulse", "description": "Delay before keep-awake-pulse is triggered (x 2.5s)"
"delay"
],
"desc": "Delay before keep-awake-pulse is triggered (x 2.5s)"
}, },
"PowerPulseDuration": { "PowerPulseDuration": {
"text2": [ "displayText": "Power pulse\nduration",
"Power pulse", "description": "Keep-awake-pulse duration (x 250ms)"
"duration"
],
"desc": "Keep-awake-pulse duration (x 250ms)"
}, },
"SettingsReset": { "SettingsReset": {
"text2": [ "displayText": "Fabriks-\ninställ?",
"Fabriks-", "description": "Återställ alla inställningar"
"inställ?"
],
"desc": "Återställ alla inställningar"
}, },
"LanguageSwitch": { "LanguageSwitch": {
"text2": [ "displayText": "Språk:\n SV Svenska",
"Språk:", "description": ""
" SV Svenska"
],
"desc": ""
} }
} }
} }

View File

@@ -2,44 +2,67 @@
"languageCode": "TR", "languageCode": "TR",
"languageLocalName": "Türkçe", "languageLocalName": "Türkçe",
"tempUnitFahrenheit": false, "tempUnitFahrenheit": false,
"messages": {
"SettingsCalibrationWarning": "Before rebooting, make sure tip & handle are at room temperature!",
"CJCCalibrating": "calibrating",
"SettingsResetWarning": "Ayarları varsayılan değerlere sıfırlamak istediğinizden emin misiniz?",
"UVLOWarningString": "Güç Az",
"UndervoltageString": "Düşük Voltaj",
"InputVoltageString": "Giriş V: ",
"SleepingSimpleString": "Zzzz",
"SleepingAdvancedString": "Bekleme Modu ...",
"SleepingTipAdvancedString": "Uç:",
"OffString": "Kapalı",
"DeviceFailedValidationWarning": "Your device is most likely a counterfeit!"
},
"messagesWarn": { "messagesWarn": {
"CJCCalibrationDone": [ "CJCCalibrationDone": {
"Calibration", "message": "Calibration\ndone!"
"done!" },
], "ResetOKMessage": {
"ResetOKMessage": "Sıfırlama Tamam", "message": "Sıfırlama Tamam"
"SettingsResetMessage": [ },
"Ayarlar", "SettingsResetMessage": {
"Sıfırlandı" "message": "Ayarlar\nSıfırlandı"
], },
"NoAccelerometerMessage": [ "NoAccelerometerMessage": {
"No accelerometer", "message": "No accelerometer\ndetected!"
"detected!" },
], "NoPowerDeliveryMessage": {
"NoPowerDeliveryMessage": [ "message": "No USB-PD IC\ndetected!"
"No USB-PD IC", },
"detected!" "LockingKeysString": {
], "message": "LOCKED"
"LockingKeysString": "LOCKED", },
"UnlockingKeysString": "UNLOCKED", "UnlockingKeysString": {
"WarningKeysLockedString": "!LOCKED!", "message": "UNLOCKED"
"WarningThermalRunaway": [ },
"Thermal", "WarningKeysLockedString": {
"Runaway" "message": "!LOCKED!"
] },
"WarningThermalRunaway": {
"message": "Thermal\nRunaway"
},
"SettingsCalibrationWarning": {
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
"CJCCalibrating": {
"message": "calibrating\n"
},
"SettingsResetWarning": {
"message": "Ayarları varsayılan değerlere sıfırlamak istediğinizden emin misiniz?"
},
"UVLOWarningString": {
"message": "Güç Az"
},
"UndervoltageString": {
"message": "Düşük Voltaj\n"
},
"InputVoltageString": {
"message": "Giriş V: \n"
},
"SleepingSimpleString": {
"message": "Zzzz"
},
"SleepingAdvancedString": {
"message": "Bekleme Modu...\n"
},
"SleepingTipAdvancedString": {
"message": "Uç: \n"
},
"OffString": {
"message": "Kapalı"
},
"DeviceFailedValidationWarning": {
"message": "Your device is most likely a counterfeit!"
}
}, },
"characters": { "characters": {
"SettingRightChar": "R", "SettingRightChar": "R",
@@ -53,289 +76,176 @@
"SettingStartSolderingChar": "L", "SettingStartSolderingChar": "L",
"SettingStartSleepChar": "U", "SettingStartSleepChar": "U",
"SettingStartSleepOffChar": "S", "SettingStartSleepOffChar": "S",
"SettingSensitivityOff": "K",
"SettingSensitivityLow": "L",
"SettingSensitivityMedium": "O",
"SettingSensitivityHigh": "H",
"SettingLockDisableChar": "K", "SettingLockDisableChar": "K",
"SettingLockBoostChar": "B", "SettingLockBoostChar": "B",
"SettingLockFullChar": "F" "SettingLockFullChar": "F"
}, },
"menuGroups": { "menuGroups": {
"PowerMenu": { "PowerMenu": {
"text2": [ "displayText": "Power\nsettings",
"Power", "description": ""
"settings"
],
"desc": ""
}, },
"SolderingMenu": { "SolderingMenu": {
"text2": [ "displayText": "Lehimleme\nAyarları",
"Lehimleme", "description": ""
"Ayarları"
],
"desc": ""
}, },
"PowerSavingMenu": { "PowerSavingMenu": {
"text2": [ "displayText": "Uyku\nModları",
"Uyku", "description": ""
"Modları"
],
"desc": ""
}, },
"UIMenu": { "UIMenu": {
"text2": [ "displayText": "Kullanıcı\nArayüzü",
"Kullanıcı", "description": ""
"Arayüzü"
],
"desc": ""
}, },
"AdvancedMenu": { "AdvancedMenu": {
"text2": [ "displayText": "Gelişmiş\nAyarlar",
"Gelişmiş", "description": ""
"Ayarlar"
],
"desc": ""
} }
}, },
"menuOptions": { "menuOptions": {
"DCInCutoff": { "DCInCutoff": {
"text2": [ "displayText": "GÇKYN\n",
"GÇKYN", "description": "\"Güç Kaynağı\". En düşük çalışma voltajını ayarlar. (DC 10V) (S 3.3V hücre başına)"
""
],
"desc": "\"Güç Kaynağı\". En düşük çalışma voltajını ayarlar. (DC 10V) (S 3.3V hücre başına)"
}, },
"MinVolCell": { "MinVolCell": {
"text2": [ "displayText": "Minimum\nvoltage",
"Minimum", "description": "Minimum allowed voltage per battery cell (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)"
"voltage"
],
"desc": "Minimum allowed voltage per battery cell (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)"
}, },
"QCMaxVoltage": { "QCMaxVoltage": {
"text2": [ "displayText": "QC\nvoltage",
"QC", "description": "Max QC voltage the iron should negotiate for"
"voltage"
],
"desc": "Max QC voltage the iron should negotiate for"
}, },
"PDNegTimeout": { "PDNegTimeout": {
"text2": [ "displayText": "PD\ntimeout",
"PD", "description": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers"
"timeout" },
], "PDVpdo": {
"desc": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers" "displayText": "PD\nVPDO",
"description": "Enables PPS & EPR modes"
}, },
"BoostTemperature": { "BoostTemperature": {
"text2": [ "displayText": "YKSC\n",
"YKSC", "description": "Yüksek Performans Modu Sıcaklığı"
""
],
"desc": "Yüksek Performans Modu Sıcaklığı"
}, },
"AutoStart": { "AutoStart": {
"text2": [ "displayText": "OTOBAŞ\n",
"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ığı)"
""
],
"desc": "Güç verildiğinde otomatik olarak lehimleme modunda başlat. (K=Kapalı | L=Lehimleme Modu | U=Uyku Modu | S=Uyku Modu Oda Sıcaklığı)"
}, },
"TempChangeShortStep": { "TempChangeShortStep": {
"text2": [ "displayText": "Temp change\nshort",
"Temp change", "description": "Kısa basışlardaki sıcaklık derecesi atlama oranı"
"short"
],
"desc": "Kısa basışlardaki sıcaklık derecesi atlama oranı"
}, },
"TempChangeLongStep": { "TempChangeLongStep": {
"text2": [ "displayText": "Temp change\nlong",
"Temp change", "description": "Uzun başışlardaki sıcaklık derecesi atlama oranı"
"long"
],
"desc": "Uzun başışlardaki sıcaklık derecesi atlama oranı"
}, },
"LockingMode": { "LockingMode": {
"text2": [ "displayText": "Allow locking\nbuttons",
"Allow locking", "description": "While soldering, hold down both buttons to toggle locking them (K=Kapalı | B=boost mode only | F=full locking)"
"buttons"
],
"desc": "While soldering, hold down both buttons to toggle locking them (K=Kapalı | B=boost mode only | F=full locking)"
}, },
"MotionSensitivity": { "MotionSensitivity": {
"text2": [ "displayText": "HARHAS\n",
"HARHAS", "description": "Hareket Hassasiyeti (0=Kapalı | 1=En az duyarlı | ... | 9=En duyarlı)"
""
],
"desc": "Hareket Hassasiyeti (0=Kapalı | 1=En az duyarlı | ... | 9=En duyarlı)"
}, },
"SleepTemperature": { "SleepTemperature": {
"text2": [ "displayText": "BKSC\n",
"BKSC", "description": "Bekleme Modu Sıcaklığı (C)"
""
],
"desc": "Bekleme Modu Sıcaklığı (C)"
}, },
"SleepTimeout": { "SleepTimeout": {
"text2": [ "displayText": "BMZA\n",
"BMZA", "description": "Bekleme Modu Zaman Aşımı (Dakika | Saniye)"
""
],
"desc": "Bekleme Modu Zaman Aşımı (Dakika | Saniye)"
}, },
"ShutdownTimeout": { "ShutdownTimeout": {
"text2": [ "displayText": "KPTZA\n",
"KPTZA", "description": "Kapatma Zaman Aşımı (Dakika)"
""
],
"desc": "Kapatma Zaman Aşımı (Dakika)"
}, },
"HallEffSensitivity": { "HallEffSensitivity": {
"text2": [ "displayText": "Hall sensor\nsensitivity",
"Hall sensor", "description": "Sensitivity to magnets (0=Kapalı | 1=En az duyarlı | ... | 9=En duyarlı)"
"sensitivity"
],
"desc": "Sensitivity to magnets (0=Kapalı | 1=En az duyarlı | ... | 9=En duyarlı)"
}, },
"TemperatureUnit": { "TemperatureUnit": {
"text2": [ "displayText": "SCKBRM\n",
"SCKBRM", "description": "Sıcaklık Birimi (C=Celsius | F=Fahrenheit)"
""
],
"desc": "Sıcaklık Birimi (C=Celsius | F=Fahrenheit)"
}, },
"DisplayRotation": { "DisplayRotation": {
"text2": [ "displayText": "GRNYÖN\n",
"GRNYÖN", "description": "Görüntü Yönlendirme (R=Sağlak | L=Solak | O=Otomatik)"
""
],
"desc": "Görüntü Yönlendirme (R=Sağlak | L=Solak | O=Otomatik)"
}, },
"CooldownBlink": { "CooldownBlink": {
"text2": [ "displayText": "SĞGÖST\n",
"SĞGÖST", "description": "Soğutma ekranında uç hala sıcakken derece gösterilsin."
""
],
"desc": "Soğutma ekranında uç hala sıcakken derece gösterilsin."
}, },
"ScrollingSpeed": { "ScrollingSpeed": {
"text2": [ "displayText": "YZKYHZ\n",
"YZKYHZ", "description": "Bu yazının kayma hızı (Y=Yavaş | H=Hızlı)"
""
],
"desc": "Bu yazının kayma hızı (Y=Yavaş | H=Hızlı)"
}, },
"ReverseButtonTempChange": { "ReverseButtonTempChange": {
"text2": [ "displayText": "Swap\n+ - keys",
"Swap", "description": "\"Düğme Yerleri Rotasyonu\" Sıcaklık ayar düğmelerinin yerini değiştirin"
"+ - keys"
],
"desc": "\"Düğme Yerleri Rotasyonu\" Sıcaklık ayar düğmelerinin yerini değiştirin"
}, },
"AnimSpeed": { "AnimSpeed": {
"text2": [ "displayText": "Anim.\nspeed",
"Anim.", "description": "Pace of icon animations in menu (K=Kapalı | Y=Yavaş | O=Orta | H=Hızlı)"
"speed"
],
"desc": "Pace of icon animations in menu (K=Kapalı | Y=Yavaş | O=Orta | H=Hızlı)"
}, },
"AnimLoop": { "AnimLoop": {
"text2": [ "displayText": "Anim.\nloop",
"Anim.", "description": "Loop icon animations in main menu"
"loop"
],
"desc": "Loop icon animations in main menu"
}, },
"Brightness": { "Brightness": {
"text2": [ "displayText": "Screen\nbrightness",
"Screen", "description": "Adjust the OLED screen brightness"
"brightness"
],
"desc": "Adjust the OLED screen brightness"
}, },
"ColourInversion": { "ColourInversion": {
"text2": [ "displayText": "Invert\nscreen",
"Invert", "description": "Invert the OLED screen colors"
"screen"
],
"desc": "Invert the OLED screen colors"
}, },
"LOGOTime": { "LOGOTime": {
"text2": [ "displayText": "Boot logo\nduration",
"Boot logo", "description": "Set boot logo duration (s=seconds)"
"duration"
],
"desc": "Set boot logo duration (s=seconds)"
}, },
"AdvancedIdle": { "AdvancedIdle": {
"text2": [ "displayText": "AYRBİL\n",
"AYRBİL", "description": "Boş ekranda ayrıntılı bilgileri daha küçük bir yazı tipi ile göster."
""
],
"desc": "Boş ekranda ayrıntılı bilgileri daha küçük bir yazı tipi ile göster."
}, },
"AdvancedSoldering": { "AdvancedSoldering": {
"text2": [ "displayText": "GELLHM\n",
"GELLHM", "description": "\"Gelişmiş Lehimleme\" Lehimleme yaparken detaylı bilgi göster"
"" },
], "BluetoothLE": {
"desc": "\"Gelişmiş Lehimleme\" Lehimleme yaparken detaylı bilgi göster" "displayText": "Bluetooth\n",
"description": "Enables BLE"
}, },
"PowerLimit": { "PowerLimit": {
"text2": [ "displayText": "Power\nlimit",
"Power", "description": "Havyanın kullanacağı en yüksek güç (W=Watts)"
"limit"
],
"desc": "Havyanın kullanacağı en yüksek güç (W=Watts)"
}, },
"CalibrateCJC": { "CalibrateCJC": {
"text2": [ "displayText": "Calibrate CJC\nat next boot",
"Calibrate CJC", "description": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
"at next boot"
],
"desc": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
}, },
"VoltageCalibration": { "VoltageCalibration": {
"text2": [ "displayText": "VOL KAL?\n",
"VOL KAL?", "description": "Voltaj Girişi Kalibrasyonu. Düğmeler ayarlar, çıkmak için uzun bas."
""
],
"desc": "Voltaj Girişi Kalibrasyonu. Düğmeler ayarlar, çıkmak için uzun bas."
}, },
"PowerPulsePower": { "PowerPulsePower": {
"text2": [ "displayText": "Power\npulse",
"Power", "description": "Güç girişi voltajı ölçüm yoğunluğunu sık tut."
"pulse"
],
"desc": "Güç girişi voltajı ölçüm yoğunluğunu sık tut."
}, },
"PowerPulseWait": { "PowerPulseWait": {
"text2": [ "displayText": "Power pulse\ndelay",
"Power pulse", "description": "Delay before keep-awake-pulse is triggered (x 2.5s)"
"delay"
],
"desc": "Delay before keep-awake-pulse is triggered (x 2.5s)"
}, },
"PowerPulseDuration": { "PowerPulseDuration": {
"text2": [ "displayText": "Power pulse\nduration",
"Power pulse", "description": "Keep-awake-pulse duration (x 250ms)"
"duration"
],
"desc": "Keep-awake-pulse duration (x 250ms)"
}, },
"SettingsReset": { "SettingsReset": {
"text2": [ "displayText": "SIFIRLA?\n",
"SIFIRLA?", "description": "Bütün ayarları sıfırlar"
""
],
"desc": "Bütün ayarları sıfırlar"
}, },
"LanguageSwitch": { "LanguageSwitch": {
"text2": [ "displayText": "Dil:\n TR Türkçe",
"Dil:", "description": ""
" TR Türkçe"
],
"desc": ""
} }
} }
} }

View File

@@ -2,44 +2,67 @@
"languageCode": "UK", "languageCode": "UK",
"languageLocalName": "Українська", "languageLocalName": "Українська",
"tempUnitFahrenheit": false, "tempUnitFahrenheit": false,
"messages": {
"SettingsCalibrationWarning": "Під час наступного завантаження переконайтеся, що жало і ручка мають кімнатну температуру!",
"CJCCalibrating": "калібрування",
"SettingsResetWarning": "Ви дійсно хочете скинути налаштування до значень за замовчуванням? (A=Так, В=Ні)",
"UVLOWarningString": "АККУМ--",
"UndervoltageString": "Низька напруга",
"InputVoltageString": "Жив.(B): ",
"SleepingSimpleString": "ZzZzz",
"SleepingAdvancedString": "Очікування...",
"SleepingTipAdvancedString": "Жало:",
"OffString": "Вимк",
"DeviceFailedValidationWarning": "Вірогідно ваш пристрій підробний!"
},
"messagesWarn": { "messagesWarn": {
"CJCCalibrationDone": [ "CJCCalibrationDone": {
"КХС", "message": "КХС\nвідкалібровано!"
"відкалібровано!" },
], "ResetOKMessage": {
"ResetOKMessage": "Скид. OK", "message": "Скид. OK"
"SettingsResetMessage": [ },
"Налаштування", "SettingsResetMessage": {
"скинуті!" "message": "Налаштування\nскинуті!"
], },
"NoAccelerometerMessage": [ "NoAccelerometerMessage": {
"Акселерометр", "message": "Акселерометр\nне виявлено!"
"не виявлено!" },
], "NoPowerDeliveryMessage": {
"NoPowerDeliveryMessage": [ "message": "USB-PD IC\nне виявлено!"
"USB-PD IC", },
"не виявлено!" "LockingKeysString": {
], "message": "ЗАБЛОК."
"LockingKeysString": "ЗАБЛОК.", },
"UnlockingKeysString": "РОЗБЛОК.", "UnlockingKeysString": {
"WarningKeysLockedString": "!ЗАБЛОК!", "message": "РОЗБЛОК."
"WarningThermalRunaway": [ },
"Некерований", "WarningKeysLockedString": {
"розігрів" "message": "!ЗАБЛОК!"
] },
"WarningThermalRunaway": {
"message": "Некерований\nрозігрів"
},
"SettingsCalibrationWarning": {
"message": "Під час наступного завантаження переконайтеся, що жало і ручка мають кімнатну температуру!"
},
"CJCCalibrating": {
"message": "калібрування\n"
},
"SettingsResetWarning": {
"message": "Ви дійсно хочете скинути налаштування до значень за замовчуванням? (A=Так, В=Ні)"
},
"UVLOWarningString": {
"message": "АККУМ--"
},
"UndervoltageString": {
"message": "Низька напруга\n"
},
"InputVoltageString": {
"message": "Жив.(B): \n"
},
"SleepingSimpleString": {
"message": "ZzZzz"
},
"SleepingAdvancedString": {
"message": "Очікування...\n"
},
"SleepingTipAdvancedString": {
"message": "Жало: \n"
},
"OffString": {
"message": "Вимк"
},
"DeviceFailedValidationWarning": {
"message": "Вірогідно ваш пристрій підробний!"
}
}, },
"characters": { "characters": {
"SettingRightChar": "П", "SettingRightChar": "П",
@@ -53,289 +76,176 @@
"SettingStartSolderingChar": "П", "SettingStartSolderingChar": "П",
"SettingStartSleepChar": "О", "SettingStartSleepChar": "О",
"SettingStartSleepOffChar": "К", "SettingStartSleepOffChar": "К",
"SettingSensitivityOff": "В",
"SettingSensitivityLow": "Н",
"SettingSensitivityMedium": "С",
"SettingSensitivityHigh": "М",
"SettingLockDisableChar": "В", "SettingLockDisableChar": "В",
"SettingLockBoostChar": "Т", "SettingLockBoostChar": "Т",
"SettingLockFullChar": "П" "SettingLockFullChar": "П"
}, },
"menuGroups": { "menuGroups": {
"PowerMenu": { "PowerMenu": {
"text2": [ "displayText": "Параметри\nживлення",
"Параметри", "description": ""
"живлення"
],
"desc": ""
}, },
"SolderingMenu": { "SolderingMenu": {
"text2": [ "displayText": "Параметри\nпайки",
"Параметри", "description": ""
"пайки"
],
"desc": ""
}, },
"PowerSavingMenu": { "PowerSavingMenu": {
"text2": [ "displayText": "Режим\nсну",
"Режим", "description": ""
"сну"
],
"desc": ""
}, },
"UIMenu": { "UIMenu": {
"text2": [ "displayText": "Параметри\nінтерфейсу",
"Параметри", "description": ""
"інтерфейсу"
],
"desc": ""
}, },
"AdvancedMenu": { "AdvancedMenu": {
"text2": [ "displayText": "Додаткові\nпараметри",
"Додаткові", "description": ""
"параметри"
],
"desc": ""
} }
}, },
"menuOptions": { "menuOptions": {
"DCInCutoff": { "DCInCutoff": {
"text2": [ "displayText": "Джерело\nживлення",
"Джерело", "description": "Встановлює напругу відсічки. (DC - 10V) (3S - 9.9V | 4S - 13.2V | 5S - 16.5V | 6S - 19.8V)"
"живлення"
],
"desc": "Встановлює напругу відсічки. (DC - 10V) (3S - 9.9V | 4S - 13.2V | 5S - 16.5V | 6S - 19.8V)"
}, },
"MinVolCell": { "MinVolCell": {
"text2": [ "displayText": "Мін.\nнапруга",
"Мін.", "description": "Мінімальна дозволена напруга на комірку (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)"
"напруга"
],
"desc": "Мінімальна дозволена напруга на комірку (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)"
}, },
"QCMaxVoltage": { "QCMaxVoltage": {
"text2": [ "displayText": "Потужність\nдж. живлення",
"Потужність", "description": "Потужність джерела живлення в Ватах"
"дж. живлення"
],
"desc": "Потужність джерела живлення в Ватах"
}, },
"PDNegTimeout": { "PDNegTimeout": {
"text2": [ "displayText": "PD\nзатримка",
"PD", "description": "Затримка у 100мс інкрементах для PD для сумісності з деякими QC зарядними пристроями (0: вимкнено)"
"затримка" },
], "PDVpdo": {
"desc": "Затримка у 100мс інкрементах для PD для сумісності з деякими QC зарядними пристроями (0: вимкнено)" "displayText": "PD\nVPDO",
"description": "Вмикає режими PPS & EPR."
}, },
"BoostTemperature": { "BoostTemperature": {
"text2": [ "displayText": "Темпер.\nТурбо",
"Темпер.", "description": "Температура в \"Турбо\" режимі"
"Турбо"
],
"desc": "Температура в \"Турбо\" режимі"
}, },
"AutoStart": { "AutoStart": {
"text2": [ "displayText": "Гарячий\nстарт",
"Гарячий", "description": "Режим в якому запускається паяльник при ввімкненні (В=Вимк. | П=Пайка | О=Очікування | К=Очікування при кімн. темп.)"
"старт"
],
"desc": "Режим в якому запускається паяльник при ввімкненні (В=Вимк. | П=Пайка | О=Очікування | К=Очікування при кімн. темп.)"
}, },
"TempChangeShortStep": { "TempChangeShortStep": {
"text2": [ "displayText": "Зміна темп.\nкоротко?",
"Зміна темп.", "description": "Змінювати температуру при короткому натисканні!"
"коротко?"
],
"desc": "Змінювати температуру при короткому натисканні!"
}, },
"TempChangeLongStep": { "TempChangeLongStep": {
"text2": [ "displayText": "Зміна темп.\nдовго?",
"Зміна темп.", "description": "Змінювати температуру при довгому натисканні!"
"довго?"
],
"desc": "Змінювати температуру при довгому натисканні!"
}, },
"LockingMode": { "LockingMode": {
"text2": [ "displayText": "Дозволити\nблок. кнопок",
"Дозволити", "description": "Під час пайки тривале натискання обох кнопок заблокує їх (В=Вимк | Т=Тільки турбо | П=Повне)"
"блок. кнопок"
],
"desc": "Під час пайки тривале натискання обох кнопок заблокує їх (В=Вимк | Т=Тільки турбо | П=Повне)"
}, },
"MotionSensitivity": { "MotionSensitivity": {
"text2": [ "displayText": "Чутливість\nсенсору руху",
"Чутливість", "description": "Акселерометр (0=Вимк. | 1=мін. чутливості | ... | 9=макс. чутливості)"
"сенсору руху"
],
"desc": "Акселерометр (0=Вимк. | 1=мін. чутливості | ... | 9=макс. чутливості)"
}, },
"SleepTemperature": { "SleepTemperature": {
"text2": [ "displayText": "Темпер.\nсну",
"Темпер.", "description": "Температура режиму очікування (C° | F°)"
"сну"
],
"desc": "Температура режиму очікування (C° | F°)"
}, },
"SleepTimeout": { "SleepTimeout": {
"text2": [ "displayText": "Тайм-аут\nсну",
"Тайм-аут", "description": "Час до переходу в режим очікування (Хвилини | Секунди)"
"сну"
],
"desc": "Час до переходу в режим очікування (Хвилини | Секунди)"
}, },
"ShutdownTimeout": { "ShutdownTimeout": {
"text2": [ "displayText": "Часу до\nвимкнення",
"Часу до", "description": "Час до вимкнення (Хвилини)"
"вимкнення"
],
"desc": "Час до вимкнення (Хвилини)"
}, },
"HallEffSensitivity": { "HallEffSensitivity": {
"text2": [ "displayText": "Чутливість\nЕфекту Холла",
"Чутливість", "description": "Чутливість датчика ефекту Холла при виявленні сну (0=Вимк. | 1=мін. чутливості | ... | 9=макс. чутливості)"
"Ефекту Холла"
],
"desc": "Чутливість датчика ефекту Холла при виявленні сну (0=Вимк. | 1=мін. чутливості | ... | 9=макс. чутливості)"
}, },
"TemperatureUnit": { "TemperatureUnit": {
"text2": [ "displayText": "Формат темпе-\nратури(C°/F°)",
"Формат темпе-", "description": "Одиниця виміру температури (C=Цельсій | F=Фаренгейт)"
"ратури(C°/F°)"
],
"desc": "Одиниця виміру температури (C=Цельсій | F=Фаренгейт)"
}, },
"DisplayRotation": { "DisplayRotation": {
"text2": [ "displayText": "Автоповорот\nекрану",
"Автоповорот", "description": "Орієнтація дисплея (П=Правша | Л=Лівша | A=Автоповорот)"
"екрану"
],
"desc": "Орієнтація дисплея (П=Правша | Л=Лівша | A=Автоповорот)"
}, },
"CooldownBlink": { "CooldownBlink": {
"text2": [ "displayText": "Показ t° при\nохолодженні",
"Показ t° при", "description": "Показувати температуру на екрані охолодження, поки жало залишається гарячим, при цьому екран моргає"
"охолодженні"
],
"desc": "Показувати температуру на екрані охолодження, поки жало залишається гарячим, при цьому екран моргає"
}, },
"ScrollingSpeed": { "ScrollingSpeed": {
"text2": [ "displayText": "Швидкість\nтексту",
"Швидкість", "description": "Швидкість прокрутки тексту (П=повільно | Ш=швидко)"
"тексту"
],
"desc": "Швидкість прокрутки тексту (П=повільно | Ш=швидко)"
}, },
"ReverseButtonTempChange": { "ReverseButtonTempChange": {
"text2": [ "displayText": "Інвертувати\nкнопки +-?",
"Інвертувати", "description": "Інвертувати кнопки зміни температури."
"кнопки +-?"
],
"desc": "Інвертувати кнопки зміни температури."
}, },
"AnimSpeed": { "AnimSpeed": {
"text2": [ "displayText": "Швидкість\nанімації",
"Швидкість", "description": "Швидкість анімації іконок у головному меню (Мілісекунди) (В=Вимк | Н=Низькa | С=Середня | М=Макс)"
"анімації"
],
"desc": "Швидкість анімації іконок у головному меню (Мілісекунди) (В=Вимк | Н=Низькa | С=Середня | М=Макс)"
}, },
"AnimLoop": { "AnimLoop": {
"text2": [ "displayText": "Циклічна\nанімація",
"Циклічна", "description": "Циклічна анімація іконок в головному меню"
"анімація"
],
"desc": "Циклічна анімація іконок в головному меню"
}, },
"Brightness": { "Brightness": {
"text2": [ "displayText": "Яскравість\nекрану",
скравість", "description": "Налаштування контрасту/яскравості OLED екрану"
"екрану"
],
"desc": "Налаштування контрасту/яскравості OLED екрану"
}, },
"ColourInversion": { "ColourInversion": {
"text2": [ "displayText": "Інверт\nекрану",
"Інверт", "description": "Інвертувати кольори на OLED екрані"
"екрану"
],
"desc": "Інвертувати кольори на OLED екрані"
}, },
"LOGOTime": { "LOGOTime": {
"text2": [ "displayText": "Тривалість\nлоготипу завантаження",
"Тривалість", "description": "Встановити тривалість показу лого при завантаженні (с=секунд)"
"логотипу завантаження"
],
"desc": "Встановити тривалість показу лого при завантаженні (с=секунд)"
}, },
"AdvancedIdle": { "AdvancedIdle": {
"text2": [ "displayText": "Детальний ре-\nжим очікуван.",
"Детальний ре-", "description": "Показувати детальну інформацію маленьким шрифтом на домашньому екрані"
"жим очікуван."
],
"desc": "Показувати детальну інформацію маленьким шрифтом на домашньому екрані"
}, },
"AdvancedSoldering": { "AdvancedSoldering": {
"text2": [ "displayText": "Детальний\nрежим пайки",
"Детальний", "description": "Показувати детальну інформацію при пайці."
"режим пайки" },
], "BluetoothLE": {
"desc": "Показувати детальну інформацію при пайці." "displayText": "Bluetooth\n",
"description": "Enables BLE"
}, },
"PowerLimit": { "PowerLimit": {
"text2": [ "displayText": "Макс.\nпотуж.",
"Макс.", "description": "Макс. потужність, яку може використовувати паяльник (Ват)"
"потуж."
],
"desc": "Макс. потужність, яку може використовувати паяльник (Ват)"
}, },
"CalibrateCJC": { "CalibrateCJC": {
"text2": [ "displayText": "Калібрувати КХС\nпри наступному завантаженні",
"Калібрувати КХС", "description": "При наступному завантаження буде відкалібровано Компенсацію Холодного Спаю жала (непотрібне при різниці температур < 5°C)"
"при наступному завантаженні"
],
"desc": "При наступному завантаження буде відкалібровано Компенсацію Холодного Спаю жала (непотрібне при різниці температур < 5°C)"
}, },
"VoltageCalibration": { "VoltageCalibration": {
"text2": [ "displayText": "Калібрування\nнапруги",
"Калібрування", "description": "Калібрування напруги входу. Налаштувати кнопками, натиснути і утримати щоб завершити."
"напруги"
],
"desc": "Калібрування напруги входу. Налаштувати кнопками, натиснути і утримати щоб завершити."
}, },
"PowerPulsePower": { "PowerPulsePower": {
"text2": [ "displayText": "Пульс.\nНавантаж.",
"Пульс.", "description": "Деякі PowerBank-и з часом вимк. живлення, якщо пристрій споживає дуже мало енергії)"
"Навантаж."
],
"desc": "Деякі PowerBank-и з часом вимк. живлення, якщо пристрій споживає дуже мало енергії)"
}, },
"PowerPulseWait": { "PowerPulseWait": {
"text2": [ "displayText": "Час між імп.\nнапруги",
"Час між імп.", "description": "Час між імпульсами напруги яка не дає PowerBank-у заснути (x 2.5с)"
"напруги"
],
"desc": "Час між імпульсами напруги яка не дає PowerBank-у заснути (x 2.5с)"
}, },
"PowerPulseDuration": { "PowerPulseDuration": {
"text2": [ "displayText": "Тривалість\nімп. напруги",
"Тривалість", "description": "Тривалість імпульсу напруги яка не дає PowerBank-у заснути (x 250мс)"
"імп. напруги"
],
"desc": "Тривалість імпульсу напруги яка не дає PowerBank-у заснути (x 250мс)"
}, },
"SettingsReset": { "SettingsReset": {
"text2": [ "displayText": "Скинути всі\nналаштування?",
"Скинути всі", "description": "Скидання всіх параметрів до стандартних значень."
"налаштування?"
],
"desc": "Скидання всіх параметрів до стандартних значень."
}, },
"LanguageSwitch": { "LanguageSwitch": {
"text2": [ "displayText": "Мова:\n UK Українська",
"Мова:", "description": ""
" UK Українська"
],
"desc": ""
} }
} }
} }

View File

@@ -2,44 +2,67 @@
"languageCode": "VI", "languageCode": "VI",
"languageLocalName": "Tieng Viet", "languageLocalName": "Tieng Viet",
"tempUnitFahrenheit": false, "tempUnitFahrenheit": false,
"messages": {
"SettingsCalibrationWarning": "Before rebooting, make sure tip & handle are at room temperature!",
"CJCCalibrating": "calibrating",
"SettingsResetWarning": "Ban chac chan muon khôi phuc tat ca cài đat ve mac đinh?",
"UVLOWarningString": "DC thap",
"UndervoltageString": "Đien áp thap",
"InputVoltageString": "Đau vào V: ",
"SleepingSimpleString": "Zzzz",
"SleepingAdvancedString": "Đang ngu...",
"SleepingTipAdvancedString": "Meo:",
"OffString": "Tat",
"DeviceFailedValidationWarning": "Your device is most likely a counterfeit!"
},
"messagesWarn": { "messagesWarn": {
"CJCCalibrationDone": [ "CJCCalibrationDone": {
"Calibration", "message": "Calibration\ndone!"
"done!" },
], "ResetOKMessage": {
"ResetOKMessage": "Reset OK", "message": "Reset OK"
"SettingsResetMessage": [ },
"Mot so cài đat", "SettingsResetMessage": {
"đã thay đoi" "message": "Mot so cài đat\nđã thay đoi"
], },
"NoAccelerometerMessage": [ "NoAccelerometerMessage": {
"Không phát hien", "message": "Không phát hien\ngia toc ke!"
"gia toc ke!" },
], "NoPowerDeliveryMessage": {
"NoPowerDeliveryMessage": [ "message": "Không phát hien\nUSB-PD IC!"
"Không phát hien", },
"USB-PD IC!" "LockingKeysString": {
], "message": "Đã khóa"
"LockingKeysString": "Đã khóa", },
"UnlockingKeysString": "Mo khóa", "UnlockingKeysString": {
"WarningKeysLockedString": "Đã khóa!", "message": "Mo khóa"
"WarningThermalRunaway": [ },
"Nhiet", "WarningKeysLockedString": {
"Tat gia nhiet" "message": "Đã khóa!"
] },
"WarningThermalRunaway": {
"message": "Nhiet\nTat gia nhiet"
},
"SettingsCalibrationWarning": {
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
"CJCCalibrating": {
"message": "calibrating\n"
},
"SettingsResetWarning": {
"message": "Ban chac chan muon khôi phuc tat ca cài đat ve mac đinh?"
},
"UVLOWarningString": {
"message": "DC thap"
},
"UndervoltageString": {
"message": "Đien áp thap\n"
},
"InputVoltageString": {
"message": "Đau vào V: \n"
},
"SleepingSimpleString": {
"message": "Zzzz"
},
"SleepingAdvancedString": {
"message": "Đang ngu...\n"
},
"SleepingTipAdvancedString": {
"message": "Meo: \n"
},
"OffString": {
"message": "Tat"
},
"DeviceFailedValidationWarning": {
"message": "Your device is most likely a counterfeit!"
}
}, },
"characters": { "characters": {
"SettingRightChar": "R", "SettingRightChar": "R",
@@ -53,289 +76,176 @@
"SettingStartSolderingChar": "S", "SettingStartSolderingChar": "S",
"SettingStartSleepChar": "Z", "SettingStartSleepChar": "Z",
"SettingStartSleepOffChar": "R", "SettingStartSleepOffChar": "R",
"SettingSensitivityOff": "O",
"SettingSensitivityLow": "L",
"SettingSensitivityMedium": "M",
"SettingSensitivityHigh": "H",
"SettingLockDisableChar": "D", "SettingLockDisableChar": "D",
"SettingLockBoostChar": "B", "SettingLockBoostChar": "B",
"SettingLockFullChar": "F" "SettingLockFullChar": "F"
}, },
"menuGroups": { "menuGroups": {
"PowerMenu": { "PowerMenu": {
"text2": [ "displayText": "Cài đat\nnguon đien",
"Cài đat", "description": ""
"nguon đien"
],
"desc": ""
}, },
"SolderingMenu": { "SolderingMenu": {
"text2": [ "displayText": "Cài đat\ntay hàn",
"Cài đat", "description": ""
"tay hàn"
],
"desc": ""
}, },
"PowerSavingMenu": { "PowerSavingMenu": {
"text2": [ "displayText": "Che đo\nngu",
"Che đo", "description": ""
"ngu"
],
"desc": ""
}, },
"UIMenu": { "UIMenu": {
"text2": [ "displayText": "Giao dien\nnguoi dùng",
"Giao dien", "description": ""
"nguoi dùng"
],
"desc": ""
}, },
"AdvancedMenu": { "AdvancedMenu": {
"text2": [ "displayText": "Cài đat\nnâng cao",
"Cài đat", "description": ""
"nâng cao"
],
"desc": ""
} }
}, },
"menuOptions": { "menuOptions": {
"DCInCutoff": { "DCInCutoff": {
"text2": [ "displayText": "Nguon\nđien",
"Nguon", "description": "Nguon đien, đat đien áp giam. (DC 10V) (S 3.3V moi cell, tat gioi han công suat)"
"đien"
],
"desc": "Nguon đien, đat đien áp giam. (DC 10V) (S 3.3V moi cell, tat gioi han công suat)"
}, },
"MinVolCell": { "MinVolCell": {
"text2": [ "displayText": "Voltage\ntoi thieu",
"Voltage", "description": "Đien áp toi thieu cho phép trên moi cell (3S: 3 - 3,7V | 4-6S: 2,4 - 3,7V)"
"toi thieu"
],
"desc": "Đien áp toi thieu cho phép trên moi cell (3S: 3 - 3,7V | 4-6S: 2,4 - 3,7V)"
}, },
"QCMaxVoltage": { "QCMaxVoltage": {
"text2": [ "displayText": "QC\nvoltage",
"QC", "description": "Đien áp QC toi đa mà tay hàn yêu cau"
"voltage"
],
"desc": "Đien áp QC toi đa mà tay hàn yêu cau"
}, },
"PDNegTimeout": { "PDNegTimeout": {
"text2": [ "displayText": "PD\nsau",
"PD", "description": "Thoi gian cho đàm phán PD trong các buoc 100ms đe tuong thích voi mot so bo sac QC"
"sau" },
], "PDVpdo": {
"desc": "Thoi gian cho đàm phán PD trong các buoc 100ms đe tuong thích voi mot so bo sac QC" "displayText": "PD\nVPDO",
"description": "Enables PPS & EPR modes"
}, },
"BoostTemperature": { "BoostTemperature": {
"text2": [ "displayText": "Tăng\nnhiet đo",
"Tăng", "description": "Nhiet đo dùng trong che đo \"tăng cuong\""
"nhiet đo"
],
"desc": "Nhiet đo dùng trong che đo \"tăng cuong\""
}, },
"AutoStart": { "AutoStart": {
"text2": [ "displayText": "Nhiet đo\nđang tăng",
"Nhiet đo", "description": "- O=tat | S=nhiet đo hàn | Z=cho o nhiet đo ngu đen khi cu đong | R=cho mà không gia nhiet đen khi cu đong"
"đang tăng"
],
"desc": "- O=tat | S=nhiet đo hàn | Z=cho o nhiet đo ngu đen khi cu đong | R=cho mà không gia nhiet đen khi cu đong"
}, },
"TempChangeShortStep": { "TempChangeShortStep": {
"text2": [ "displayText": "Thay đoi n.đo\nan nút nhanh",
"Thay đoi n.đo", "description": "Biên đo tăng/giam nhiet đo khi an nút nhanh"
"an nút nhanh"
],
"desc": "Biên đo tăng/giam nhiet đo khi an nút nhanh"
}, },
"TempChangeLongStep": { "TempChangeLongStep": {
"text2": [ "displayText": "Thay đoi n.đo\nan nút lâu",
"Thay đoi n.đo", "description": "Biên đo tăng/giam nhiet đo khi an nút lâu"
"an nút lâu"
],
"desc": "Biên đo tăng/giam nhiet đo khi an nút lâu"
}, },
"LockingMode": { "LockingMode": {
"text2": [ "displayText": "Cho phép khóa\ncác nút",
"Cho phép khóa", "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)"
"các nút"
],
"desc": "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)"
}, },
"MotionSensitivity": { "MotionSensitivity": {
"text2": [ "displayText": "Cam bien\ncu đong",
"Cam bien", "description": "- 0=tat | 1=đo nhay thap nhat| ... | 9=đo nhay cao nhat"
"cu đong"
],
"desc": "- 0=tat | 1=đo nhay thap nhat| ... | 9=đo nhay cao nhat"
}, },
"SleepTemperature": { "SleepTemperature": {
"text2": [ "displayText": "Nhiet đo\nkhi ngu",
"Nhiet đo", "description": "Giam nhiet đo khi o \"Che đo ngu\""
"khi ngu"
],
"desc": "Giam nhiet đo khi o \"Che đo ngu\""
}, },
"SleepTimeout": { "SleepTimeout": {
"text2": [ "displayText": "Ngu\nsau",
"Ngu", "description": "- thoi gian truoc khi \"Che đo ngu\" bat đau (s=giây | m=phút)"
"sau"
],
"desc": "- thoi gian truoc khi \"Che đo ngu\" bat đau (s=giây | m=phút)"
}, },
"ShutdownTimeout": { "ShutdownTimeout": {
"text2": [ "displayText": "Tat\nsau",
"Tat", "description": "- khoang thoi gian truoc khi tay hàn tat (m=phút)"
"sau"
],
"desc": "- khoang thoi gian truoc khi tay hàn tat (m=phút)"
}, },
"HallEffSensitivity": { "HallEffSensitivity": {
"text2": [ "displayText": "Hall\nđo nhay",
"Hall", "description": "Đo nhay cam bien Hall đe phát hien che đo ngu (0=tat | 1=ít nhay nhat |...| 9=nhay nhat)"
"đo nhay"
],
"desc": "Đo nhay cam bien Hall đe phát hien che đo ngu (0=tat | 1=ít nhay nhat |...| 9=nhay nhat)"
}, },
"TemperatureUnit": { "TemperatureUnit": {
"text2": [ "displayText": "Đon vi\nnhiet đo",
"Đon vi", "description": "C= Đo C | F= Đo F"
"nhiet đo"
],
"desc": "C= Đo C | F= Đo F"
}, },
"DisplayRotation": { "DisplayRotation": {
"text2": [ "displayText": "Huong\nhien thi",
"Huong", "description": "- R=huong tay phai | L=huong tay trái | A=tu đong"
"hien thi"
],
"desc": "- R=huong tay phai | L=huong tay trái | A=tu đong"
}, },
"CooldownBlink": { "CooldownBlink": {
"text2": [ "displayText": "Nguoi đi\nchop mat",
"Nguoi đi", "description": "-Nhap nháy nhiet đo sau khi viec gia nhiet tam dung trong khi mui hàn van nóng"
"chop mat"
],
"desc": "-Nhap nháy nhiet đo sau khi viec gia nhiet tam dung trong khi mui hàn van nóng"
}, },
"ScrollingSpeed": { "ScrollingSpeed": {
"text2": [ "displayText": "Toc đo\ncuon",
"Toc đo", "description": "Toc đo cuon văn ban(S=cham | F=nhanh)"
"cuon"
],
"desc": "Toc đo cuon văn ban(S=cham | F=nhanh)"
}, },
"ReverseButtonTempChange": { "ReverseButtonTempChange": {
"text2": [ "displayText": "Đao nguoc\nnút + -",
"Đao nguoc", "description": "Đao nguoc chuc năng các nút đieu chinh nhiet đo"
"nút + -"
],
"desc": "Đao nguoc chuc năng các nút đieu chinh nhiet đo"
}, },
"AnimSpeed": { "AnimSpeed": {
"text2": [ "displayText": "Toc đo\nhoat anh",
"Toc đo", "description": "-Toc đo cua hoat anh menu (O=tat | S=cham | M=trung bình | F=nhanh)"
"hoat anh"
],
"desc": "-Toc đo cua hoat anh menu (O=tat | S=cham | M=trung bình | F=nhanh)"
}, },
"AnimLoop": { "AnimLoop": {
"text2": [ "displayText": "Hoat anh\nlap lai",
"Hoat anh", "description": "Lap lai các hoat anh trong màn hình chính"
"lap lai"
],
"desc": "Lap lai các hoat anh trong màn hình chính"
}, },
"Brightness": { "Brightness": {
"text2": [ "displayText": "Đo tuong phan\nmàn hình",
"Đo tuong phan", "description": "-Đieu chinh đo sáng màn hình OLED"
"màn hình"
],
"desc": "-Đieu chinh đo sáng màn hình OLED"
}, },
"ColourInversion": { "ColourInversion": {
"text2": [ "displayText": "Đao nguoc màu\nmàn hình",
"Đao nguoc màu", "description": "-Đao nguoc màu màn hình OLED"
"màn hình"
],
"desc": "-Đao nguoc màu màn hình OLED"
}, },
"LOGOTime": { "LOGOTime": {
"text2": [ "displayText": "Boot logo\nduration",
"Boot logo", "description": "Set boot logo duration (s=seconds)"
"duration"
],
"desc": "Set boot logo duration (s=seconds)"
}, },
"AdvancedIdle": { "AdvancedIdle": {
"text2": [ "displayText": "Chi tiet\nmàn hình cho",
"Chi tiet", "description": "- hien thi thông tin chi tiet bang phông chu nho hon trên màn hình cho"
"màn hình cho"
],
"desc": "- hien thi thông tin chi tiet bang phông chu nho hon trên màn hình cho"
}, },
"AdvancedSoldering": { "AdvancedSoldering": {
"text2": [ "displayText": "Chi tiet\nmàn hình hàn",
"Chi tiet", "description": "-Hien thi thông tin bang phông chu nho hon trên màn hình hàn"
"màn hình hàn" },
], "BluetoothLE": {
"desc": "-Hien thi thông tin bang phông chu nho hon trên màn hình hàn" "displayText": "Bluetooth\n",
"description": "Enables BLE"
}, },
"PowerLimit": { "PowerLimit": {
"text2": [ "displayText": "Công suat\ngioi han",
"Công suat", "description": "-Công suat toi đa mà tay hàn có the su dung (W=watt)"
"gioi han"
],
"desc": "-Công suat toi đa mà tay hàn có the su dung (W=watt)"
}, },
"CalibrateCJC": { "CalibrateCJC": {
"text2": [ "displayText": "Calibrate CJC\nat next boot",
"Calibrate CJC", "description": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
"at next boot"
],
"desc": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
}, },
"VoltageCalibration": { "VoltageCalibration": {
"text2": [ "displayText": "Hieu chinh\nđien áp đau vào?",
"Hieu chinh", "description": "-bat đau hieu chuan VIN (nhan và giu đe thoát)"
"đien áp đau vào?"
],
"desc": "-bat đau hieu chuan VIN (nhan và giu đe thoát)"
}, },
"PowerPulsePower": { "PowerPulsePower": {
"text2": [ "displayText": "Công suat\nkích nguon",
"Công suat", "description": "-Cuong đo công suat kích nguon (watt)"
"kích nguon"
],
"desc": "-Cuong đo công suat kích nguon (watt)"
}, },
"PowerPulseWait": { "PowerPulseWait": {
"text2": [ "displayText": "Trì hoãn\nđien áp kích",
"Trì hoãn", "description": "Trì hoãn truoc khi kích hoat kích nguon(x 2,5 giây)"
"đien áp kích"
],
"desc": "Trì hoãn truoc khi kích hoat kích nguon(x 2,5 giây)"
}, },
"PowerPulseDuration": { "PowerPulseDuration": {
"text2": [ "displayText": "Thoi luong\nkích nguon",
"Thoi luong", "description": "-thoi luong kích nguon (x 250ms)"
"kích nguon"
],
"desc": "-thoi luong kích nguon (x 250ms)"
}, },
"SettingsReset": { "SettingsReset": {
"text2": [ "displayText": "Khôi phuc\ncài đat goc?",
"Khôi phuc", "description": "-đat lai tat ca cài đat ve mac đinh"
"cài đat goc?"
],
"desc": "-đat lai tat ca cài đat ve mac đinh"
}, },
"LanguageSwitch": { "LanguageSwitch": {
"text2": [ "displayText": "Ngôn ngu:\n VI Tieng Viet",
"Ngôn ngu:", "description": ""
" VI Tieng Viet"
],
"desc": ""
} }
} }
} }

View File

@@ -2,29 +2,67 @@
"languageCode": "YUE_HK", "languageCode": "YUE_HK",
"languageLocalName": "廣東話 (香港)", "languageLocalName": "廣東話 (香港)",
"tempUnitFahrenheit": true, "tempUnitFahrenheit": true,
"messages": {
"SettingsCalibrationWarning": "Before rebooting, make sure tip & handle are at room temperature!",
"CJCCalibrating": "calibrating",
"SettingsResetWarning": "你係咪確定要將全部設定重設到預設值?",
"UVLOWarningString": "電壓過低",
"UndervoltageString": "Undervoltage",
"InputVoltageString": "Input V: ",
"SleepingSimpleString": "Zzzz",
"SleepingAdvancedString": "Sleeping...",
"SleepingTipAdvancedString": "Tip:",
"OffString": "關",
"DeviceFailedValidationWarning": "依支焫雞好有可能係冒牌貨!"
},
"messagesWarn": { "messagesWarn": {
"CJCCalibrationDone": "Calibration done!", "CJCCalibrationDone": {
"ResetOKMessage": "已重設!", "message": "Calibration done!"
"SettingsResetMessage": "設定已被重設!", },
"NoAccelerometerMessage": "未能偵測加速度計", "ResetOKMessage": {
"NoPowerDeliveryMessage": "未能偵測PD晶片", "message": "已重設!"
"LockingKeysString": "已鎖定", },
"UnlockingKeysString": "已解除鎖定", "SettingsResetMessage": {
"WarningKeysLockedString": "!撳掣鎖定!", "message": "設定已被重設!"
"WarningThermalRunaway": "加熱失控" },
"NoAccelerometerMessage": {
"message": "未能偵測加速度計"
},
"NoPowerDeliveryMessage": {
"message": "未能偵測PD晶片"
},
"LockingKeysString": {
"message": "已鎖定"
},
"UnlockingKeysString": {
"message": "已解除鎖定"
},
"WarningKeysLockedString": {
"message": "!撳掣鎖定!"
},
"WarningThermalRunaway": {
"message": "加熱失控"
},
"SettingsCalibrationWarning": {
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
"CJCCalibrating": {
"message": "calibrating"
},
"SettingsResetWarning": {
"message": "你係咪確定要將全部設定重設到預設值?"
},
"UVLOWarningString": {
"message": "電壓過低"
},
"UndervoltageString": {
"message": "Undervoltage"
},
"InputVoltageString": {
"message": "Input V: "
},
"SleepingSimpleString": {
"message": "Zzzz"
},
"SleepingAdvancedString": {
"message": "Sleeping..."
},
"SleepingTipAdvancedString": {
"message": "Tip: "
},
"OffString": {
"message": "關"
},
"DeviceFailedValidationWarning": {
"message": "依支焫雞好有可能係冒牌貨!"
}
}, },
"characters": { "characters": {
"SettingRightChar": "右", "SettingRightChar": "右",
@@ -38,172 +76,176 @@
"SettingStartSolderingChar": "焊", "SettingStartSolderingChar": "焊",
"SettingStartSleepChar": "待", "SettingStartSleepChar": "待",
"SettingStartSleepOffChar": "室", "SettingStartSleepOffChar": "室",
"SettingSensitivityOff": "關",
"SettingSensitivityLow": "低",
"SettingSensitivityMedium": "中",
"SettingSensitivityHigh": "高",
"SettingLockDisableChar": "無", "SettingLockDisableChar": "無",
"SettingLockBoostChar": "增", "SettingLockBoostChar": "增",
"SettingLockFullChar": "全" "SettingLockFullChar": "全"
}, },
"menuGroups": { "menuGroups": {
"PowerMenu": { "PowerMenu": {
"text2": "電源設定", "displayText": "電源設定",
"desc": "" "description": ""
}, },
"SolderingMenu": { "SolderingMenu": {
"text2": "焊接設定", "displayText": "焊接設定",
"desc": "" "description": ""
}, },
"PowerSavingMenu": { "PowerSavingMenu": {
"text2": "待機設定", "displayText": "待機設定",
"desc": "" "description": ""
}, },
"UIMenu": { "UIMenu": {
"text2": "使用者介面", "displayText": "使用者介面",
"desc": "" "description": ""
}, },
"AdvancedMenu": { "AdvancedMenu": {
"text2": "進階設定", "displayText": "進階設定",
"desc": "" "description": ""
} }
}, },
"menuOptions": { "menuOptions": {
"DCInCutoff": { "DCInCutoff": {
"text2": "電源", "displayText": "電源",
"desc": "輸入電源;設定自動停機電壓 <DC 10V> <S 鋰電池以每粒3.3V計算;依個設定會停用功率限制>" "description": "輸入電源;設定自動停機電壓 <DC 10V> <S 鋰電池以每粒3.3V計算;依個設定會停用功率限制>"
}, },
"MinVolCell": { "MinVolCell": {
"text2": "最低電壓", "displayText": "最低電壓",
"desc": "每粒電池嘅最低可用電壓 <伏特> <3S: 3.0V - 3.7V, 4/5/6S: 2.4V - 3.7V>" "description": "每粒電池嘅最低可用電壓 <伏特> <3S: 3.0V - 3.7V, 4/5/6S: 2.4V - 3.7V>"
}, },
"QCMaxVoltage": { "QCMaxVoltage": {
"text2": "QC電壓", "displayText": "QC電壓",
"desc": "使用QC電源時請求嘅最高目標電壓" "description": "使用QC電源時請求嘅最高目標電壓"
}, },
"PDNegTimeout": { "PDNegTimeout": {
"text2": "PD逾時", "displayText": "PD逾時",
"desc": "設定USB PD協定交涉嘅逾時時限為兼容某啲QC電源而設 <x100ms亳秒>" "description": "設定USB PD協定交涉嘅逾時時限為兼容某啲QC電源而設 <x100ms亳秒>"
},
"PDVpdo": {
"displayText": "PD VPDO",
"description": "Enables PPS & EPR modes"
}, },
"BoostTemperature": { "BoostTemperature": {
"text2": "增熱温度", "displayText": "增熱温度",
"desc": "喺增熱模式時使用嘅温度" "description": "喺增熱模式時使用嘅温度"
}, },
"AutoStart": { "AutoStart": {
"text2": "自動啓用", "displayText": "自動啓用",
"desc": "開機時自動啓用 <無=停用 | 焊=焊接模式 | 待=待機模式 | 室=室温待機>" "description": "開機時自動啓用 <無=停用 | 焊=焊接模式 | 待=待機模式 | 室=室温待機>"
}, },
"TempChangeShortStep": { "TempChangeShortStep": {
"text2": "温度調整 短", "displayText": "温度調整 短",
"desc": "調校温度時短撳一下嘅温度變幅" "description": "調校温度時短撳一下嘅温度變幅"
}, },
"TempChangeLongStep": { "TempChangeLongStep": {
"text2": "温度調整 長", "displayText": "温度調整 長",
"desc": "調校温度時長撳嘅温度變幅" "description": "調校温度時長撳嘅温度變幅"
}, },
"LockingMode": { "LockingMode": {
"text2": "撳掣鎖定", "displayText": "撳掣鎖定",
"desc": "喺焊接模式時,同時長撳兩粒掣啓用撳掣鎖定 <無=停用 | 增=淨係容許增熱模式 | 全=鎖定全部>" "description": "喺焊接模式時,同時長撳兩粒掣啓用撳掣鎖定 <無=停用 | 增=淨係容許增熱模式 | 全=鎖定全部>"
}, },
"MotionSensitivity": { "MotionSensitivity": {
"text2": "動作敏感度", "displayText": "動作敏感度",
"desc": "0=停用 | 1=最低敏感度 | ... | 9=最高敏感度" "description": "0=停用 | 1=最低敏感度 | ... | 9=最高敏感度"
}, },
"SleepTemperature": { "SleepTemperature": {
"text2": "待機温度", "displayText": "待機温度",
"desc": "喺待機模式時嘅焫雞咀温度" "description": "喺待機模式時嘅焫雞咀温度"
}, },
"SleepTimeout": { "SleepTimeout": {
"text2": "待機延時", "displayText": "待機延時",
"desc": "自動進入待機模式前嘅閒置等候時間 <s=秒 | m=分鐘>" "description": "自動進入待機模式前嘅閒置等候時間 <s=秒 | m=分鐘>"
}, },
"ShutdownTimeout": { "ShutdownTimeout": {
"text2": "自動熄機", "displayText": "自動熄機",
"desc": "自動熄機前嘅閒置等候時間 <m=分鐘>" "description": "自動熄機前嘅閒置等候時間 <m=分鐘>"
}, },
"HallEffSensitivity": { "HallEffSensitivity": {
"text2": "磁場敏感度", "displayText": "磁場敏感度",
"desc": "磁場感應器用嚟啓動待機模式嘅敏感度 <0=停用 | 1=最低敏感度 | ... | 9=最高敏感度>" "description": "磁場感應器用嚟啓動待機模式嘅敏感度 <0=停用 | 1=最低敏感度 | ... | 9=最高敏感度>"
}, },
"TemperatureUnit": { "TemperatureUnit": {
"text2": "温度單位", "displayText": "温度單位",
"desc": "C=攝氏 | F=華氏" "description": "C=攝氏 | F=華氏"
}, },
"DisplayRotation": { "DisplayRotation": {
"text2": "畫面方向", "displayText": "畫面方向",
"desc": "右=使用右手 | 左=使用左手 | 自=自動" "description": "右=使用右手 | 左=使用左手 | 自=自動"
}, },
"CooldownBlink": { "CooldownBlink": {
"text2": "降温時閃爍", "displayText": "降温時閃爍",
"desc": "停止加熱之後,當焫雞咀仲係熱嗰陣閃爍畫面" "description": "停止加熱之後,當焫雞咀仲係熱嗰陣閃爍畫面"
}, },
"ScrollingSpeed": { "ScrollingSpeed": {
"text2": "捲動速度", "displayText": "捲動速度",
"desc": "解說文字嘅捲動速度" "description": "解說文字嘅捲動速度"
}, },
"ReverseButtonTempChange": { "ReverseButtonTempChange": {
"text2": "反轉加減掣", "displayText": "反轉加減掣",
"desc": "反轉調校温度時加減掣嘅方向" "description": "反轉調校温度時加減掣嘅方向"
}, },
"AnimSpeed": { "AnimSpeed": {
"text2": "動畫速度", "displayText": "動畫速度",
"desc": "功能表圖示動畫嘅速度 <關=不顯示動畫 | 慢=慢速 | 中=中速 | 快=快速>" "description": "功能表圖示動畫嘅速度 <關=不顯示動畫 | 慢=慢速 | 中=中速 | 快=快速>"
}, },
"AnimLoop": { "AnimLoop": {
"text2": "動畫循環", "displayText": "動畫循環",
"desc": "循環顯示功能表圖示動畫" "description": "循環顯示功能表圖示動畫"
}, },
"Brightness": { "Brightness": {
"text2": "熒幕亮度", "displayText": "熒幕亮度",
"desc": "設定OLED熒幕嘅亮度" "description": "設定OLED熒幕嘅亮度"
}, },
"ColourInversion": { "ColourInversion": {
"text2": "熒幕反轉色", "displayText": "熒幕反轉色",
"desc": "反轉OLED熒幕嘅黑白色" "description": "反轉OLED熒幕嘅黑白色"
}, },
"LOGOTime": { "LOGOTime": {
"text2": "開機畫面", "displayText": "開機畫面",
"desc": "設定開機畫面顯示時長 <s=秒>" "description": "設定開機畫面顯示時長 <s=秒>"
}, },
"AdvancedIdle": { "AdvancedIdle": {
"text2": "詳細閒置畫面", "displayText": "詳細閒置畫面",
"desc": "喺閒置畫面以英文細字顯示詳細嘅資料" "description": "喺閒置畫面以英文細字顯示詳細嘅資料"
}, },
"AdvancedSoldering": { "AdvancedSoldering": {
"text2": "詳細焊接畫面", "displayText": "詳細焊接畫面",
"desc": "喺焊接模式畫面以英文細字顯示詳細嘅資料" "description": "喺焊接模式畫面以英文細字顯示詳細嘅資料"
},
"BluetoothLE": {
"displayText": "Bluetooth",
"description": "Enables BLE"
}, },
"PowerLimit": { "PowerLimit": {
"text2": "功率限制", "displayText": "功率限制",
"desc": "限制焫雞可用嘅最大功率 <W=watt>" "description": "限制焫雞可用嘅最大功率 <W=watt>"
}, },
"CalibrateCJC": { "CalibrateCJC": {
"text2": "校正CJC", "displayText": "校正CJC",
"desc": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5 C)" "description": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5 C)"
}, },
"VoltageCalibration": { "VoltageCalibration": {
"text2": "輸入電壓校正?", "displayText": "輸入電壓校正?",
"desc": "開始校正VIN輸入電壓 <長撳以退出>" "description": "開始校正VIN輸入電壓 <長撳以退出>"
}, },
"PowerPulsePower": { "PowerPulsePower": {
"text2": "電源脈衝", "displayText": "電源脈衝",
"desc": "為保持電源喚醒而通電所用嘅功率 <watt>" "description": "為保持電源喚醒而通電所用嘅功率 <watt>"
}, },
"PowerPulseWait": { "PowerPulseWait": {
"text2": "電源脈衝間隔", "displayText": "電源脈衝間隔",
"desc": "為保持電源喚醒,每次通電之間嘅間隔時間 <x2.5s(秒)>" "description": "為保持電源喚醒,每次通電之間嘅間隔時間 <x2.5s(秒)>"
}, },
"PowerPulseDuration": { "PowerPulseDuration": {
"text2": "電源脈衝時長", "displayText": "電源脈衝時長",
"desc": "為保持電源喚醒,每次通電脈衝嘅時間長度 <x250ms亳秒>" "description": "為保持電源喚醒,每次通電脈衝嘅時間長度 <x250ms亳秒>"
}, },
"SettingsReset": { "SettingsReset": {
"text2": "全部重設?", "displayText": "全部重設?",
"desc": "將所有設定重設到預設值" "description": "將所有設定重設到預設值"
}, },
"LanguageSwitch": { "LanguageSwitch": {
"text2": "語言: 廣東話", "displayText": "語言: 廣東話",
"desc": "" "description": ""
} }
} }
} }

View File

@@ -2,29 +2,67 @@
"languageCode": "ZH_CN", "languageCode": "ZH_CN",
"languageLocalName": "简体中文", "languageLocalName": "简体中文",
"tempUnitFahrenheit": true, "tempUnitFahrenheit": true,
"messages": {
"SettingsCalibrationWarning": "Before rebooting, make sure tip & handle are at room temperature!",
"CJCCalibrating": "calibrating",
"SettingsResetWarning": "你是否确定要将全部设定重置为默认值?",
"UVLOWarningString": "电压过低",
"UndervoltageString": "Undervoltage",
"InputVoltageString": "VIN: ",
"SleepingSimpleString": "Zzzz",
"SleepingAdvancedString": "Zzzz...",
"SleepingTipAdvancedString": "--->",
"OffString": "关",
"DeviceFailedValidationWarning": "这支电烙铁很有可能是冒牌货!"
},
"messagesWarn": { "messagesWarn": {
"CJCCalibrationDone": "Calibration done!", "CJCCalibrationDone": {
"ResetOKMessage": "已重置!", "message": "Calibration done!"
"SettingsResetMessage": "设定已被重置!", },
"NoAccelerometerMessage": "未检测到加速度计", "ResetOKMessage": {
"NoPowerDeliveryMessage": "未检测到PD电路", "message": "已重置!"
"LockingKeysString": "已锁定", },
"UnlockingKeysString": "已解锁", "SettingsResetMessage": {
"WarningKeysLockedString": "!按键锁定!", "message": "设定已被重置!"
"WarningThermalRunaway": "加热失控" },
"NoAccelerometerMessage": {
"message": "未检测到加速度计"
},
"NoPowerDeliveryMessage": {
"message": "未检测到PD电路"
},
"LockingKeysString": {
"message": "已锁定"
},
"UnlockingKeysString": {
"message": "已解锁"
},
"WarningKeysLockedString": {
"message": "!按键锁定!"
},
"WarningThermalRunaway": {
"message": "加热失控"
},
"SettingsCalibrationWarning": {
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
"CJCCalibrating": {
"message": "calibrating"
},
"SettingsResetWarning": {
"message": "你是否确定要将全部设定重置为默认值?"
},
"UVLOWarningString": {
"message": "电压过低"
},
"UndervoltageString": {
"message": "Undervoltage"
},
"InputVoltageString": {
"message": "VIN: "
},
"SleepingSimpleString": {
"message": "Zzzz"
},
"SleepingAdvancedString": {
"message": "Zzzz..."
},
"SleepingTipAdvancedString": {
"message": "<--- "
},
"OffString": {
"message": "关"
},
"DeviceFailedValidationWarning": {
"message": "这支电烙铁很有可能是冒牌货!"
}
}, },
"characters": { "characters": {
"SettingRightChar": "右", "SettingRightChar": "右",
@@ -38,172 +76,176 @@
"SettingStartSolderingChar": "焊", "SettingStartSolderingChar": "焊",
"SettingStartSleepChar": "待", "SettingStartSleepChar": "待",
"SettingStartSleepOffChar": "室", "SettingStartSleepOffChar": "室",
"SettingSensitivityOff": "关",
"SettingSensitivityLow": "低",
"SettingSensitivityMedium": "中",
"SettingSensitivityHigh": "高",
"SettingLockDisableChar": "无", "SettingLockDisableChar": "无",
"SettingLockBoostChar": "增", "SettingLockBoostChar": "增",
"SettingLockFullChar": "全" "SettingLockFullChar": "全"
}, },
"menuGroups": { "menuGroups": {
"PowerMenu": { "PowerMenu": {
"text2": "电源设置", "displayText": "电源设置",
"desc": "" "description": ""
}, },
"SolderingMenu": { "SolderingMenu": {
"text2": "焊接设置", "displayText": "焊接设置",
"desc": "" "description": ""
}, },
"PowerSavingMenu": { "PowerSavingMenu": {
"text2": "待机设置", "displayText": "待机设置",
"desc": "" "description": ""
}, },
"UIMenu": { "UIMenu": {
"text2": "用户界面", "displayText": "用户界面",
"desc": "" "description": ""
}, },
"AdvancedMenu": { "AdvancedMenu": {
"text2": "高级设置", "displayText": "高级设置",
"desc": "" "description": ""
} }
}, },
"menuOptions": { "menuOptions": {
"DCInCutoff": { "DCInCutoff": {
"text2": "下限电压", "displayText": "下限电压",
"desc": "设置自动停机电压 <DC=10V | S=每节锂电池3.3V;此设置会禁用功率限制>" "description": "设置自动停机电压 <DC=10V | S=每节锂电池3.3V;此设置会禁用功率限制>"
}, },
"MinVolCell": { "MinVolCell": {
"text2": "最低电压", "displayText": "最低电压",
"desc": "每节电池的最低允许电压 <V伏特> <3S: 3.0V - 3.7V, 4/5/6S: 2.4V - 3.7V>" "description": "每节电池的最低允许电压 <V伏特> <3S: 3.0V - 3.7V, 4/5/6S: 2.4V - 3.7V>"
}, },
"QCMaxVoltage": { "QCMaxVoltage": {
"text2": "QC电压", "displayText": "QC电压",
"desc": "使用QC电源时请求的最高目标电压" "description": "使用QC电源时请求的最高目标电压"
}, },
"PDNegTimeout": { "PDNegTimeout": {
"text2": "PD超时", "displayText": "PD超时",
"desc": "设定USB-PD协议交涉的超时时限为兼容某些QC电源而设 <x100ms亳秒>" "description": "设定USB-PD协议交涉的超时时限为兼容某些QC电源而设 <x100ms亳秒>"
},
"PDVpdo": {
"displayText": "PD VPDO",
"description": "Enables PPS & EPR modes"
}, },
"BoostTemperature": { "BoostTemperature": {
"text2": "增热温度", "displayText": "增热温度",
"desc": "增热模式时使用的温度" "description": "增热模式时使用的温度"
}, },
"AutoStart": { "AutoStart": {
"text2": "自动启动", "displayText": "自动启动",
"desc": "开机时自动启动 <无=禁用 | 焊=焊接模式 | 待=待机模式 | 室=室温待机>" "description": "开机时自动启动 <无=禁用 | 焊=焊接模式 | 待=待机模式 | 室=室温待机>"
}, },
"TempChangeShortStep": { "TempChangeShortStep": {
"text2": "短按温度调整", "displayText": "短按温度调整",
"desc": "调校温度时短按按键的温度变幅" "description": "调校温度时短按按键的温度变幅"
}, },
"TempChangeLongStep": { "TempChangeLongStep": {
"text2": "长按温度调整", "displayText": "长按温度调整",
"desc": "调校温度时长按按键的温度变幅" "description": "调校温度时长按按键的温度变幅"
}, },
"LockingMode": { "LockingMode": {
"text2": "按键锁定", "displayText": "按键锁定",
"desc": "焊接模式时,同时长按两个按键启用按键锁定 <无=禁用 | 增=只容许增热模式 | 全=完全锁定>" "description": "焊接模式时,同时长按两个按键启用按键锁定 <无=禁用 | 增=只容许增热模式 | 全=完全锁定>"
}, },
"MotionSensitivity": { "MotionSensitivity": {
"text2": "动作灵敏度", "displayText": "动作灵敏度",
"desc": "0=禁用 | 1=最低灵敏度 | ... | 9=最高灵敏度" "description": "0=禁用 | 1=最低灵敏度 | ... | 9=最高灵敏度"
}, },
"SleepTemperature": { "SleepTemperature": {
"text2": "待机温度", "displayText": "待机温度",
"desc": "待机模式时的烙铁头温度" "description": "待机模式时的烙铁头温度"
}, },
"SleepTimeout": { "SleepTimeout": {
"text2": "待机超时", "displayText": "待机超时",
"desc": "自动进入待机模式前的等候时间 <s=秒 | m=分钟>" "description": "自动进入待机模式前的等候时间 <s=秒 | m=分钟>"
}, },
"ShutdownTimeout": { "ShutdownTimeout": {
"text2": "自动关机", "displayText": "自动关机",
"desc": "自动关机前的等候时间 <m=分钟>" "description": "自动关机前的等候时间 <m=分钟>"
}, },
"HallEffSensitivity": { "HallEffSensitivity": {
"text2": "磁场灵敏度", "displayText": "磁场灵敏度",
"desc": "霍尔效应传感器用作启动待机模式的灵敏度 <0=禁用 | 1=最低灵敏度 | ... | 9=最高灵敏度>" "description": "霍尔效应传感器用作启动待机模式的灵敏度 <0=禁用 | 1=最低灵敏度 | ... | 9=最高灵敏度>"
}, },
"TemperatureUnit": { "TemperatureUnit": {
"text2": "温度单位", "displayText": "温度单位",
"desc": "C=摄氏 | F=华氏" "description": "C=摄氏 | F=华氏"
}, },
"DisplayRotation": { "DisplayRotation": {
"text2": "显示方向", "displayText": "显示方向",
"desc": "右=右手 | 左=左手 | 自=自动" "description": "右=右手 | 左=左手 | 自=自动"
}, },
"CooldownBlink": { "CooldownBlink": {
"text2": "降温时闪显", "displayText": "降温时闪显",
"desc": "停止加热之后,闪动温度显示提醒烙铁头仍处于高温状态" "description": "停止加热之后,闪动温度显示提醒烙铁头仍处于高温状态"
}, },
"ScrollingSpeed": { "ScrollingSpeed": {
"text2": "滚动速度", "displayText": "滚动速度",
"desc": "解说文字的滚动速度" "description": "解说文字的滚动速度"
}, },
"ReverseButtonTempChange": { "ReverseButtonTempChange": {
"text2": "调换加减键", "displayText": "调换加减键",
"desc": "调校温度时更换加减键的方向" "description": "调校温度时更换加减键的方向"
}, },
"AnimSpeed": { "AnimSpeed": {
"text2": "动画速度", "displayText": "动画速度",
"desc": "主菜单中功能图标动画的播放速度 <关=不显示动画 | 慢=慢速 | 中=中速 | 快=快速>" "description": "主菜单中功能图标动画的播放速度 <关=不显示动画 | 慢=慢速 | 中=中速 | 快=快速>"
}, },
"AnimLoop": { "AnimLoop": {
"text2": "动画循环", "displayText": "动画循环",
"desc": "主菜单中循环播放功能图标动画" "description": "主菜单中循环播放功能图标动画"
}, },
"Brightness": { "Brightness": {
"text2": "屏幕亮度", "displayText": "屏幕亮度",
"desc": "调整OLED屏幕的亮度" "description": "调整OLED屏幕的亮度"
}, },
"ColourInversion": { "ColourInversion": {
"text2": "反转屏幕颜色", "displayText": "反转屏幕颜色",
"desc": "反转OLED黑/白屏幕" "description": "反转OLED黑/白屏幕"
}, },
"LOGOTime": { "LOGOTime": {
"text2": "开机画面", "displayText": "开机画面",
"desc": "设定开机画面显示时长 <s=秒>" "description": "设定开机画面显示时长 <s=秒>"
}, },
"AdvancedIdle": { "AdvancedIdle": {
"text2": "闲置画面详情", "displayText": "闲置画面详情",
"desc": "闲置画面以英语小字体显示详情" "description": "闲置画面以英语小字体显示详情"
}, },
"AdvancedSoldering": { "AdvancedSoldering": {
"text2": "焊接画面详情", "displayText": "焊接画面详情",
"desc": "焊接模式画面以英语小字体显示详请" "description": "焊接模式画面以英语小字体显示详请"
},
"BluetoothLE": {
"displayText": "Bluetooth",
"description": "Enables BLE"
}, },
"PowerLimit": { "PowerLimit": {
"text2": "功率限制", "displayText": "功率限制",
"desc": "限制烙铁可用的最大功率 <W=瓦特>" "description": "限制烙铁可用的最大功率 <W=瓦特>"
}, },
"CalibrateCJC": { "CalibrateCJC": {
"text2": "校正CJC", "displayText": "校正CJC",
"desc": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5 C)" "description": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5 C)"
}, },
"VoltageCalibration": { "VoltageCalibration": {
"text2": "输入电压校正?", "displayText": "输入电压校正?",
"desc": "开始校正输入电压VIN<长按以退出>" "description": "开始校正输入电压VIN<长按以退出>"
}, },
"PowerPulsePower": { "PowerPulsePower": {
"text2": "电源脉冲", "displayText": "电源脉冲",
"desc": "为保持电源处于唤醒状态所用的功率 <Watt瓦特>" "description": "为保持电源处于唤醒状态所用的功率 <Watt瓦特>"
}, },
"PowerPulseWait": { "PowerPulseWait": {
"text2": "电源脉冲间隔", "displayText": "电源脉冲间隔",
"desc": "为保持电源处于唤醒状态,每次通电之间的间隔时间 <x2.5s(秒)>" "description": "为保持电源处于唤醒状态,每次通电之间的间隔时间 <x2.5s(秒)>"
}, },
"PowerPulseDuration": { "PowerPulseDuration": {
"text2": "电源脉冲时长", "displayText": "电源脉冲时长",
"desc": "为保持电源处于唤醒状态,每次通电脉冲的时间长度 <x250ms亳秒>" "description": "为保持电源处于唤醒状态,每次通电脉冲的时间长度 <x250ms亳秒>"
}, },
"SettingsReset": { "SettingsReset": {
"text2": "全部重置?", "displayText": "全部重置?",
"desc": "将所有设定重置为默认值" "description": "将所有设定重置为默认值"
}, },
"LanguageSwitch": { "LanguageSwitch": {
"text2": "语言:简体中文", "displayText": "语言:简体中文",
"desc": "" "description": ""
} }
} }
} }

View File

@@ -2,29 +2,67 @@
"languageCode": "ZH_TW", "languageCode": "ZH_TW",
"languageLocalName": "正體中文", "languageLocalName": "正體中文",
"tempUnitFahrenheit": true, "tempUnitFahrenheit": true,
"messages": {
"SettingsCalibrationWarning": "Before rebooting, make sure tip & handle are at room temperature!",
"CJCCalibrating": "calibrating",
"SettingsResetWarning": "你是否確定要將全部設定重設到預設值?",
"UVLOWarningString": "電壓過低",
"UndervoltageString": "Undervoltage",
"InputVoltageString": "Input V: ",
"SleepingSimpleString": "Zzzz",
"SleepingAdvancedString": "Sleeping...",
"SleepingTipAdvancedString": "Tip:",
"OffString": "關",
"DeviceFailedValidationWarning": "這支電烙鐵很有可能是冒牌貨!"
},
"messagesWarn": { "messagesWarn": {
"CJCCalibrationDone": "Calibration done!", "CJCCalibrationDone": {
"ResetOKMessage": "已重設!", "message": "Calibration done!"
"SettingsResetMessage": "設定已被重設!", },
"NoAccelerometerMessage": "未能偵測加速度計", "ResetOKMessage": {
"NoPowerDeliveryMessage": "未能偵測PD晶片", "message": "已重設!"
"LockingKeysString": "已鎖定", },
"UnlockingKeysString": "已解除鎖定", "SettingsResetMessage": {
"WarningKeysLockedString": "!按鍵鎖定!", "message": "設定已被重設!"
"WarningThermalRunaway": "加熱失控" },
"NoAccelerometerMessage": {
"message": "未能偵測加速度計"
},
"NoPowerDeliveryMessage": {
"message": "未能偵測PD晶片"
},
"LockingKeysString": {
"message": "已鎖定"
},
"UnlockingKeysString": {
"message": "已解除鎖定"
},
"WarningKeysLockedString": {
"message": "!按鍵鎖定!"
},
"WarningThermalRunaway": {
"message": "加熱失控"
},
"SettingsCalibrationWarning": {
"message": "Before rebooting, make sure tip & handle are at room temperature!"
},
"CJCCalibrating": {
"message": "calibrating"
},
"SettingsResetWarning": {
"message": "你是否確定要將全部設定重設到預設值?"
},
"UVLOWarningString": {
"message": "電壓過低"
},
"UndervoltageString": {
"message": "Undervoltage"
},
"InputVoltageString": {
"message": "Input V: "
},
"SleepingSimpleString": {
"message": "Zzzz"
},
"SleepingAdvancedString": {
"message": "Sleeping..."
},
"SleepingTipAdvancedString": {
"message": "Tip: "
},
"OffString": {
"message": "關"
},
"DeviceFailedValidationWarning": {
"message": "這支電烙鐵很有可能是冒牌貨!"
}
}, },
"characters": { "characters": {
"SettingRightChar": "右", "SettingRightChar": "右",
@@ -38,172 +76,176 @@
"SettingStartSolderingChar": "焊", "SettingStartSolderingChar": "焊",
"SettingStartSleepChar": "待", "SettingStartSleepChar": "待",
"SettingStartSleepOffChar": "室", "SettingStartSleepOffChar": "室",
"SettingSensitivityOff": "關",
"SettingSensitivityLow": "低",
"SettingSensitivityMedium": "中",
"SettingSensitivityHigh": "高",
"SettingLockDisableChar": "無", "SettingLockDisableChar": "無",
"SettingLockBoostChar": "增", "SettingLockBoostChar": "增",
"SettingLockFullChar": "全" "SettingLockFullChar": "全"
}, },
"menuGroups": { "menuGroups": {
"PowerMenu": { "PowerMenu": {
"text2": "電源設定", "displayText": "電源設定",
"desc": "" "description": ""
}, },
"SolderingMenu": { "SolderingMenu": {
"text2": "焊接設定", "displayText": "焊接設定",
"desc": "" "description": ""
}, },
"PowerSavingMenu": { "PowerSavingMenu": {
"text2": "待機設定", "displayText": "待機設定",
"desc": "" "description": ""
}, },
"UIMenu": { "UIMenu": {
"text2": "使用者介面", "displayText": "使用者介面",
"desc": "" "description": ""
}, },
"AdvancedMenu": { "AdvancedMenu": {
"text2": "進階設定", "displayText": "進階設定",
"desc": "" "description": ""
} }
}, },
"menuOptions": { "menuOptions": {
"DCInCutoff": { "DCInCutoff": {
"text2": "電源", "displayText": "電源",
"desc": "輸入電源;設定自動停機電壓 <DC 10V> <S 鋰電池以每顆3.3V計算;此設定會停用功率限制>" "description": "輸入電源;設定自動停機電壓 <DC 10V> <S 鋰電池以每顆3.3V計算;此設定會停用功率限制>"
}, },
"MinVolCell": { "MinVolCell": {
"text2": "最低電壓", "displayText": "最低電壓",
"desc": "每顆電池的最低可用電壓 <伏特> <3S: 3.0V - 3.7V, 4/5/6S: 2.4V - 3.7V>" "description": "每顆電池的最低可用電壓 <伏特> <3S: 3.0V - 3.7V, 4/5/6S: 2.4V - 3.7V>"
}, },
"QCMaxVoltage": { "QCMaxVoltage": {
"text2": "QC電壓", "displayText": "QC電壓",
"desc": "使用QC電源時請求的最高目標電壓" "description": "使用QC電源時請求的最高目標電壓"
}, },
"PDNegTimeout": { "PDNegTimeout": {
"text2": "PD逾時", "displayText": "PD逾時",
"desc": "設定USB PD協定交涉的逾時時限為兼容某些QC電源而設 <x100ms亳秒>" "description": "設定USB PD協定交涉的逾時時限為兼容某些QC電源而設 <x100ms亳秒>"
},
"PDVpdo": {
"displayText": "PD VPDO",
"description": "Enables PPS & EPR modes"
}, },
"BoostTemperature": { "BoostTemperature": {
"text2": "增熱溫度", "displayText": "增熱溫度",
"desc": "於增熱模式時使用的溫度" "description": "於增熱模式時使用的溫度"
}, },
"AutoStart": { "AutoStart": {
"text2": "自動啟用", "displayText": "自動啟用",
"desc": "開機時自動啟用 <無=停用 | 焊=焊接模式 | 待=待機模式 | 室=室溫待機>" "description": "開機時自動啟用 <無=停用 | 焊=焊接模式 | 待=待機模式 | 室=室溫待機>"
}, },
"TempChangeShortStep": { "TempChangeShortStep": {
"text2": "溫度調整 短", "displayText": "溫度調整 短",
"desc": "調校溫度時短按一下的溫度變幅" "description": "調校溫度時短按一下的溫度變幅"
}, },
"TempChangeLongStep": { "TempChangeLongStep": {
"text2": "溫度調整 長", "displayText": "溫度調整 長",
"desc": "調校溫度時長按按鍵的溫度變幅" "description": "調校溫度時長按按鍵的溫度變幅"
}, },
"LockingMode": { "LockingMode": {
"text2": "按鍵鎖定", "displayText": "按鍵鎖定",
"desc": "於焊接模式時,同時長按兩個按鍵啟用按鍵鎖定 <無=停用 | 增=只容許增熱模式 | 全=鎖定全部>" "description": "於焊接模式時,同時長按兩個按鍵啟用按鍵鎖定 <無=停用 | 增=只容許增熱模式 | 全=鎖定全部>"
}, },
"MotionSensitivity": { "MotionSensitivity": {
"text2": "動作敏感度", "displayText": "動作敏感度",
"desc": "0=停用 | 1=最低敏感度 | ... | 9=最高敏感度" "description": "0=停用 | 1=最低敏感度 | ... | 9=最高敏感度"
}, },
"SleepTemperature": { "SleepTemperature": {
"text2": "待機溫度", "displayText": "待機溫度",
"desc": "於待機模式時的烙鐵頭溫度" "description": "於待機模式時的烙鐵頭溫度"
}, },
"SleepTimeout": { "SleepTimeout": {
"text2": "待機延時", "displayText": "待機延時",
"desc": "自動進入待機模式前的閒置等候時間 <s=秒 | m=分鐘>" "description": "自動進入待機模式前的閒置等候時間 <s=秒 | m=分鐘>"
}, },
"ShutdownTimeout": { "ShutdownTimeout": {
"text2": "自動關機", "displayText": "自動關機",
"desc": "自動關機前的閒置等候時間 <m=分鐘>" "description": "自動關機前的閒置等候時間 <m=分鐘>"
}, },
"HallEffSensitivity": { "HallEffSensitivity": {
"text2": "磁場敏感度", "displayText": "磁場敏感度",
"desc": "磁場感應器用作啟動待機模式的敏感度 <0=停用 | 1=最低敏感度 | ... | 9=最高敏感度>" "description": "磁場感應器用作啟動待機模式的敏感度 <0=停用 | 1=最低敏感度 | ... | 9=最高敏感度>"
}, },
"TemperatureUnit": { "TemperatureUnit": {
"text2": "溫標", "displayText": "溫標",
"desc": "C=攝氏 | F=華氏" "description": "C=攝氏 | F=華氏"
}, },
"DisplayRotation": { "DisplayRotation": {
"text2": "畫面方向", "displayText": "畫面方向",
"desc": "右=使用右手 | 左=使用左手 | 自=自動" "description": "右=使用右手 | 左=使用左手 | 自=自動"
}, },
"CooldownBlink": { "CooldownBlink": {
"text2": "降溫時閃爍", "displayText": "降溫時閃爍",
"desc": "停止加熱之後,當烙鐵頭仍處於高溫時閃爍畫面" "description": "停止加熱之後,當烙鐵頭仍處於高溫時閃爍畫面"
}, },
"ScrollingSpeed": { "ScrollingSpeed": {
"text2": "捲動速度", "displayText": "捲動速度",
"desc": "解說文字的捲動速度" "description": "解說文字的捲動速度"
}, },
"ReverseButtonTempChange": { "ReverseButtonTempChange": {
"text2": "調換加減鍵", "displayText": "調換加減鍵",
"desc": "調校溫度時調換加減鍵的方向" "description": "調校溫度時調換加減鍵的方向"
}, },
"AnimSpeed": { "AnimSpeed": {
"text2": "動畫速度", "displayText": "動畫速度",
"desc": "功能表圖示動畫的速度 <關=不顯示動畫 | 慢=慢速 | 中=中速 | 快=快速>" "description": "功能表圖示動畫的速度 <關=不顯示動畫 | 慢=慢速 | 中=中速 | 快=快速>"
}, },
"AnimLoop": { "AnimLoop": {
"text2": "動畫循環", "displayText": "動畫循環",
"desc": "循環顯示功能表圖示動畫" "description": "循環顯示功能表圖示動畫"
}, },
"Brightness": { "Brightness": {
"text2": "螢幕亮度", "displayText": "螢幕亮度",
"desc": "設定OLED螢幕的亮度" "description": "設定OLED螢幕的亮度"
}, },
"ColourInversion": { "ColourInversion": {
"text2": "螢幕反轉色", "displayText": "螢幕反轉色",
"desc": "反轉OLED螢幕的黑白色彩" "description": "反轉OLED螢幕的黑白色彩"
}, },
"LOGOTime": { "LOGOTime": {
"text2": "開機畫面", "displayText": "開機畫面",
"desc": "設定開機畫面顯示時長 <s=秒>" "description": "設定開機畫面顯示時長 <s=秒>"
}, },
"AdvancedIdle": { "AdvancedIdle": {
"text2": "詳細閒置畫面", "displayText": "詳細閒置畫面",
"desc": "於閒置畫面以英文小字型顯示詳細資料" "description": "於閒置畫面以英文小字型顯示詳細資料"
}, },
"AdvancedSoldering": { "AdvancedSoldering": {
"text2": "詳細焊接畫面", "displayText": "詳細焊接畫面",
"desc": "於焊接模式畫面以英文小字型顯示詳細資料" "description": "於焊接模式畫面以英文小字型顯示詳細資料"
},
"BluetoothLE": {
"displayText": "Bluetooth",
"description": "Enables BLE"
}, },
"PowerLimit": { "PowerLimit": {
"text2": "功率限制", "displayText": "功率限制",
"desc": "限制烙鐵可用的最大功率 <W=watt瓦特>" "description": "限制烙鐵可用的最大功率 <W=watt瓦特>"
}, },
"CalibrateCJC": { "CalibrateCJC": {
"text2": "校正CJC", "displayText": "校正CJC",
"desc": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5 C)" "description": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5 C)"
}, },
"VoltageCalibration": { "VoltageCalibration": {
"text2": "輸入電壓校正?", "displayText": "輸入電壓校正?",
"desc": "開始校正VIN輸入電壓 <長按以退出>" "description": "開始校正VIN輸入電壓 <長按以退出>"
}, },
"PowerPulsePower": { "PowerPulsePower": {
"text2": "電源脈衝", "displayText": "電源脈衝",
"desc": "為保持電源喚醒而通電所用的功率 <watt瓦特>" "description": "為保持電源喚醒而通電所用的功率 <watt瓦特>"
}, },
"PowerPulseWait": { "PowerPulseWait": {
"text2": "電源脈衝間隔", "displayText": "電源脈衝間隔",
"desc": "為保持電源喚醒,每次通電之間的間隔時間 <x2.5s(秒)>" "description": "為保持電源喚醒,每次通電之間的間隔時間 <x2.5s(秒)>"
}, },
"PowerPulseDuration": { "PowerPulseDuration": {
"text2": "電源脈衝時長", "displayText": "電源脈衝時長",
"desc": "為保持電源喚醒,每次通電脈衝的時間長度 <x250ms亳秒>" "description": "為保持電源喚醒,每次通電脈衝的時間長度 <x250ms亳秒>"
}, },
"SettingsReset": { "SettingsReset": {
"text2": "全部重設?", "displayText": "全部重設?",
"desc": "將所有設定重設到預設值" "description": "將所有設定重設到預設值"
}, },
"LanguageSwitch": { "LanguageSwitch": {
"text2": "語言:正體中文", "displayText": "語言:正體中文",
"desc": "" "description": ""
} }
} }
} }

View File

@@ -1,110 +0,0 @@
* {
font-family: sans-serif;
}
h1 {
color: #66A;
}
h1 span {
color: #000;
}
table.data, div.data {
border: 1px solid #888;
width: 100%;
}
div.value {
margin: 2px;
}
.header input {
width: 50% !important;
}
input.short {
width: 150px !important;
font-family: monospace;
}
.header .selected {
display: block;
font-family: monospace;
}
.stringId {
font-family: monospace;
font-weight: bold;
}
.label {
background-color: #ddf;
padding: 0.5em;
width: 20%;
color: #66A;
}
.value {
background-color: #eef;
}
.value .label {
width: 99%;
font-weight: bold;
}
td input {
width: 99%;
}
input.unchanged, input.empty, .unchanged input, .empty input {
background-color: #ffc;
}
input.invalid, .invalid input {
background-color: #f99;
}
.ref, .tran input {
font-family: monospace;
}
.ref::before, .ref::after {
color: #99F;
font-family: sans-serif;
content: "\"";
}
.note {
color : #66A;
font-style: italic;
}
div.constraint {
float: right;
display: inline-block;
font-family: monospace;
color: #66A;
}
.invalid .constraint {
color: #f00;
}
.value {
font-size: smaller;
}
.hidden {
display: none;
}
.footer {
margin-top: 0.5em;
margin-bottom: 0.5em;
}
.saved {
background-color: #ddd;
}

View File

@@ -1,68 +0,0 @@
function saveToFile(txt, filename){
var a = document.createElement('a');
a.setAttribute("style", "display: none");
document.body.appendChild(a);
a.setAttribute('href', 'data:application/json;charset=utf-8,'+encodeURIComponent(txt));
a.setAttribute('download', filename);
a.click();
document.body.removeChild(a);
}
function saveJSON(obj, filename){
var txt = JSON.stringify(obj,"", "\t");
saveToFile(txt, filename);
}
function showJSON(obj, filename) {
var txt = JSON.stringify(obj,"", "\t");
var a = window.open("", "_blank").document;
a.write("<PLAINTEXT>");
a.write(txt);
a.title = filename;
}
function startsWith(str, prefix) {
return str.substring(0, prefix.length) == prefix;
}
function endsWith(str, suffix) {
return str.substring(str.length-suffix.length) == suffix;
}
function isDefined(obj) {
return typeof obj !== 'undefined';
}
function isNumber(obj) {
return isDefined(obj) && obj != null;
}
function isDefinedNN(obj) {
return isDefined(obj) && obj != null;
}
function padLeft(str, chr, maxLen) {
str = str.toString();
return str.length < maxLen ? padLeft(chr + str, chr, maxLen) : str;
}
// sourceArray contains a list of objects that have a property "id". This methods makes a map using the "id" as a key, and the owning object as a value.
function copyArrayToMap(sourceArray, map) {
if (!isDefined(map)) {
map = {};
}
var len = sourceArray.length;
for (var i = 0; i<len; i++) {
var v = sourceArray[i];
map[v.id] = v;
}
return map;
}
function checkTranslationFile(fileName) {
return startsWith(fileName, "translation_") && endsWith(fileName, ".json") || confirm("Are you sure that you want to use "+fileName+" instead of a translation_*.json file?");
}
function xunescape(str) {
return str.replace(/\\/g, "");
}

View File

@@ -1,424 +0,0 @@
var def = ///
{
"messages": [{
"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."
},
{
"id": "CJCCalibrating",
"description": "Message indicating CJC is being calibrated."
},
{
"id": "SettingsResetWarning",
"description": "Warning shown before confirming a settings reset."
},
{
"id": "UVLOWarningString",
"maxLen": 8,
"description": "Warning text shown when the unit turns off due to undervoltage in simple mode."
},
{
"id": "UndervoltageString",
"maxLen": 15,
"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",
"description": "Prefix text for 'Input Voltage' shown before showing the input voltage reading."
},
{
"id": "SleepingSimpleString",
"maxLen": 4,
"description": "The text shown to indicate the unit is in sleep mode when the advanced view is NOT on."
},
{
"id": "SleepingAdvancedString",
"maxLen": 15,
"description": "The text shown to indicate the unit is in sleep mode when the advanced view is turned on."
},
{
"id": "SleepingTipAdvancedString",
"maxLen": 6,
"description": "The prefix text shown before tip temperature when the unit is sleeping with advanced view on."
},
{
"id": "OffString",
"maxLen": 3,
"description": "Shown when a setting is turned off."
},
{
"id": "DeviceFailedValidationWarning",
"default": "Device may be\ncounterfeit",
"description": "Warning shown if the device may be a clone or counterfeit unit."
}
],
"messagesWarn": [{
"id": "CJCCalibrationDone",
"description": "Confirmation message indicating CJC calibration is complete."
},
{
"id": "ResetOKMessage",
"description": "Confirmation message shown after a successful settings-reset."
},
{
"id": "SettingsResetMessage",
"description": "Shown after a firmware update when certain settings have been reset to factory defaults due to incompatible firmware changes."
},
{
"id": "NoAccelerometerMessage",
"description": "No accelerometer could be communicated with. This means that either the device's accelerometer is broken or unknown to IronOS. All motion-based settings are disabled and motion-based features will not work."
},
{
"id": "NoPowerDeliveryMessage",
"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."
},
{
"id": "LockingKeysString",
"description": "Shown when keys are locked"
},
{
"id": "UnlockingKeysString",
"description": "Shown when keys are unlocked"
},
{
"id": "WarningKeysLockedString",
"description": "Warning that is shown when input is ignored due to the key lock being on"
},
{
"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."
}
],
"characters": [{
"id": "SettingRightChar",
"len": 1,
"description": "Shown for fixed Right-handed display rotation."
},
{
"id": "SettingLeftChar",
"len": 1,
"description": "Shown for fixed Left-handed display rotation."
},
{
"id": "SettingAutoChar",
"len": 1,
"description": "Shown for automatic display rotation."
},
{
"id": "SettingFastChar",
"len": 1,
"description": "Shown when a setting is set to a fast value i.e. animation speed"
},
{
"id": "SettingSlowChar",
"len": 1,
"description": "Shown when a setting is set to a slow value i.e. animation speed"
},
{
"id": "SettingMediumChar",
"len": 1,
"description": "Shown when a setting is set to a medium value i.e. animation speed"
},
{
"id": "SettingOffChar",
"len": 1,
"description": "Shown when a setting is turned off"
},
{
"id": "SettingStartSolderingChar",
"len": 1,
"description": "Shown when the auto start mode is set to go straight to soldering."
},
{
"id": "SettingStartSleepChar",
"len": 1,
"description": "Shown when the auto start mode is set to start in sleep mode."
},
{
"id": "SettingStartSleepOffChar",
"len": 1,
"description": "Shown when the auto start state is set to go to an off state, but on movement wake into soldering mode."
},
{
"id": "SettingStartNoneChar",
"len": 1,
"description": "Shown when autostart state is to do nothing and go to a normal boot"
},
{
"id": "SettingSensitivityOff",
"len": 1,
"description": "Shown when a sensitivity (hall effect sensor) is disabled. Turning off the sensor."
},
{
"id": "SettingSensitivityLow",
"len": 1,
"description": "Shown when a sensitivity (hall effect) is not very sensitive"
},
{
"id": "SettingSensitivityMedium",
"len": 1,
"description": "Shown when a sensitivity (hall effect) is average sensitive"
},
{
"id": "SettingSensitivityHigh",
"len": 1,
"description": "Shown when a sensitivity (hall effect) is highly sensitive"
},
{
"id": "SettingLockDisableChar",
"len": 1,
"default": "D",
"description": "Shown when locking mode is turned off."
},
{
"id": "SettingLockBoostChar",
"len": 1,
"default": "B",
"description": "Shown when the locking mode is set to lock all buttons except for boost mode."
},
{
"id": "SettingLockFullChar",
"len": 1,
"default": "F",
"description": "Shown when the locking mode is set to lock all buttons."
}
],
"menuGroups": [{
"id": "PowerMenu",
"maxLen": 5,
"maxLen2": 11,
"description": "Menu for settings related to power. Main settings to do with the input voltage."
},
{
"id": "SolderingMenu",
"maxLen": 5,
"maxLen2": 11,
"description": "Settings for soldering mode, such as boost temps, the increment used when pressing buttons and if button locking is enabled."
},
{
"id": "PowerSavingMenu",
"maxLen": 5,
"maxLen2": 11,
"description": "Settings to do with power saving, such as sleep mode, sleep temps, and shutdown modes."
},
{
"id": "UIMenu",
"maxLen": 5,
"maxLen2": 11,
"description": "User interface related settings, such as units."
},
{
"id": "AdvancedMenu",
"maxLen": 5,
"maxLen2": 11,
"description": "Advanced settings. Misc catchall for settings that don't fit anywhere else or settings that require some thought before use."
}
],
"menuOptions": [{
"id": "DCInCutoff",
"maxLen": 5,
"maxLen2": 11,
"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,
"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,
"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,
"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": "BoostTemperature",
"maxLen": 4,
"maxLen2": 9,
"description": "When the unit is in soldering mode. You can hold down the button at the front of the device to temporarily override the soldering temperature to this value. This SETS the temperature, it does not ADD to it."
},
{
"id": "AutoStart",
"maxLen": 6,
"maxLen2": 13,
"description": "When the device powers up, should it enter into a special mode. These settings set it to either start into soldering mode, sleeping mode or auto mode (Enters into soldering mode on the first movement)."
},
{
"id": "TempChangeShortStep",
"maxLen": 8,
"maxLen2": 15,
"description": "Factor by which the temperature is changed with a quick press of the buttons."
},
{
"id": "TempChangeLongStep",
"maxLen": 6,
"maxLen2": 15,
"description": "Factor by which the temperature is changed with a hold of the buttons."
},
{
"id": "LockingMode",
"maxLen": 6,
"maxLen2": 13,
"description": "If locking the buttons against accidental presses is enabled."
},
{
"id": "MotionSensitivity",
"maxLen": 6,
"maxLen2": 13,
"description": "Scale of how sensitive the device is to movement. Higher numbers == more sensitive. 0 == motion detection turned off."
},
{
"id": "SleepTemperature",
"maxLen": 4,
"maxLen2": 9,
"description": "Temperature the device will drop down to while asleep. Typically around halfway between off and soldering temperature."
},
{
"id": "SleepTimeout",
"maxLen": 4,
"maxLen2": 9,
"description": "How long of a period without movement / button-pressing is required before the device drops down to the sleep temperature."
},
{
"id": "ShutdownTimeout",
"maxLen": 5,
"maxLen2": 11,
"description": "How long of a period without movement / button-pressing is required before the device turns off the tip heater completely and returns to the main idle screen."
},
{
"id": "HallEffSensitivity",
"maxLen": 6,
"maxLen2": 13,
"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."
},
{
"id": "TemperatureUnit",
"maxLen": 6,
"maxLen2": 13,
"description": "If the device shows temperatures in °C or °F."
},
{
"id": "DisplayRotation",
"maxLen": 6,
"maxLen2": 13,
"description": "If the display should rotate automatically or if it should be fixed for left- or right-handed mode."
},
{
"id": "CooldownBlink",
"maxLen": 6,
"maxLen2": 13,
"description": "If the idle screen should blink the tip temperature for attention while the tip is over 50°C. Intended as a 'tip is still hot' warning."
},
{
"id": "ScrollingSpeed",
"maxLen": 6,
"maxLen2": 11,
"description": "How fast the description text scrolls when hovering on a menu. Faster speeds may induce tearing, but allow reading the whole description faster."
},
{
"id": "ReverseButtonTempChange",
"maxLen": 6,
"maxLen2": 15,
"description": "Swaps which button increments and decrements on temperature change screens."
},
{
"id": "AnimSpeed",
"maxLen": 6,
"maxLen2": 13,
"description": "How fast should the menu animations loop, or if they should not loop at all."
},
{
"id": "AnimLoop",
"maxLen": 6,
"maxLen2": 13,
"description": "Should the menu animations loop. Only visible if the animation speed is not set to \"Off\""
},
{
"id": "Brightness",
"maxLen": 7,
"maxLen2": 15,
"description": "Display brightness. Higher values age the OLED faster due to burn-in. (However, it is notable that most of these screens die from other causes first.)"
},
{
"id": "ColourInversion",
"maxLen": 7,
"maxLen2": 15,
"description": "Inverts the entire OLED."
},
{
"id": "LOGOTime",
"maxLen": 7,
"maxLen2": 15,
"description": "Sets the duration for the boot logo (s=seconds)."
},
{
"id": "AdvancedIdle",
"maxLen": 6,
"maxLen2": 13,
"description": "Should the device show an 'advanced' view on the idle screen. The advanced view uses text to show more details than the typical icons."
},
{
"id": "AdvancedSoldering",
"maxLen": 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": "PowerLimit",
"maxLen": 5,
"maxLen2": 11,
"description": "Allows setting a custom wattage for the device to aim to keep the AVERAGE power below. The unit can't control its peak power no matter how you set this. (Except for MHP30 which will regulate nicely to this). If USB-PD is in use, the limit will be set to the lower of this and the supplies advertised wattage."
},
{
"id": "CalibrateCJC",
"maxLen": 8,
"maxLen2": 15,
"description": "Used to calibrate the ADC+Op-amp offsets for the tip. This calibration must be performed when the tip temperature and the handle temperature are equal. Generally not required unless your device is reading more than 5°C off target."
},
{
"id": "VoltageCalibration",
"maxLen": 8,
"maxLen2": 15,
"description": "Enters an adjustment mode where you can gradually adjust the measured voltage to compensate for any unit-to-unit variance in the voltage sense resistors."
},
{
"id": "PowerPulsePower",
"maxLen": 6,
"maxLen2": 15,
"description": "Enables and sets the wattage of the power pulse. Power pulse causes the device to briefly turn on the heater to draw power to avoid power banks going to sleep."
},
{
"id": "PowerPulseWait",
"maxLen": 6,
"maxLen2": 13,
"description": "Adjusts the time interval between power pulses. Longer gaps reduce undesired heating of the tip, but needs to be fast enough to keep your power bank awake."
},
{
"id": "PowerPulseDuration",
"maxLen": 6,
"maxLen2": 13,
"description": "How long should the power pulse go for. Some power banks require seeing the power draw be sustained for a certain duration to keep awake. Should be kept as short as possible to avoid wasting power / undesired heating of the tip."
},
{
"id": "SettingsReset",
"maxLen": 8,
"maxLen2": 15,
"description": "Resets all settings and calibrations to factory defaults. Does NOT erase custom user boot up logo's."
},
{
"id": "LanguageSwitch",
"maxLen": 7,
"maxLen2": 15,
"description": "Changes the device language on multi-lingual builds."
}
]
}

View File

@@ -0,0 +1,413 @@
{
"messagesWarn": [{
"id": "CJCCalibrationDone",
"description": "Confirmation message indicating CJC calibration is complete."
},
{
"id": "ResetOKMessage",
"description": "Shown when the settings are reset to factory defaults by the user."
},
{
"id": "SettingsResetMessage",
"description": "Shown when certain settings are reset to factory defaults due to incompatible firmware changes."
},
{
"id": "NoAccelerometerMessage",
"description": "No accelerometer could be communicated with. This means that either the device's accelerometer is broken or unknown to IronOS. All motion-based settings are disabled and motion-based features will not work."
},
{
"id": "NoPowerDeliveryMessage",
"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."
},
{
"id": "LockingKeysString",
"description": "Shown when keys are locked"
},
{
"id": "UnlockingKeysString",
"description": "Shown when keys are unlocked"
},
{
"id": "WarningKeysLockedString",
"description": "Warning that is shown when input is ignored due to the key lock being on"
},
{
"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": "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."
},
{
"id": "CJCCalibrating",
"description": "Message indicating CJC is being calibrated."
},
{
"id": "SettingsResetWarning",
"description": "Confirmation message shown before confirming a settings reset."
},
{
"id": "UVLOWarningString",
"maxLen": 8,
"description": "Warning text shown when the unit turns off due to undervoltage in simple mode."
},
{
"id": "UndervoltageString",
"maxLen": 15,
"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",
"description": "Prefix text for 'Input Voltage' shown before showing the input voltage reading."
},
{
"id": "SleepingSimpleString",
"maxLen": 4,
"description": "The text shown to indicate the unit is in sleep mode when the advanced view is NOT on."
},
{
"id": "SleepingAdvancedString",
"maxLen": 15,
"description": "The text shown to indicate the unit is in sleep mode when the advanced view is turned on."
},
{
"id": "SleepingTipAdvancedString",
"maxLen": 6,
"description": "The prefix text shown before tip temperature when the unit is sleeping with advanced view on."
},
{
"id": "OffString",
"maxLen": 3,
"description": "Shown when a setting is turned off."
},
{
"id": "DeviceFailedValidationWarning",
"default": "Device may be\ncounterfeit",
"description": "Warning shown if the device may be a clone or counterfeit unit."
}
],
"characters": [{
"id": "SettingRightChar",
"len": 1,
"description": "Shown for fixed Right-handed display rotation."
},
{
"id": "SettingLeftChar",
"len": 1,
"description": "Shown for fixed Left-handed display rotation."
},
{
"id": "SettingAutoChar",
"len": 1,
"description": "Shown for automatic display rotation."
},
{
"id": "SettingOffChar",
"len": 1,
"description": "Shown when a setting is turned off"
},
{
"id": "SettingSlowChar",
"len": 1,
"description": "Shown when a setting is set to a slow value i.e. animation speed"
},
{
"id": "SettingMediumChar",
"len": 1,
"description": "Shown when a setting is set to a medium value i.e. animation speed"
},
{
"id": "SettingFastChar",
"len": 1,
"description": "Shown when a setting is set to a fast value i.e. animation speed"
},
{
"id": "SettingStartNoneChar",
"len": 1,
"description": "Shown when autostart state is to do nothing and go to a normal boot"
},
{
"id": "SettingStartSolderingChar",
"len": 1,
"description": "Shown when the auto start mode is set to go straight to soldering."
},
{
"id": "SettingStartSleepChar",
"len": 1,
"description": "Shown when the auto start mode is set to start in sleep mode."
},
{
"id": "SettingStartSleepOffChar",
"len": 1,
"description": "Shown when the auto start state is set to go to an off state, but on movement wake into soldering mode."
},
{
"id": "SettingLockDisableChar",
"len": 1,
"default": "D",
"description": "Shown when locking mode is turned off."
},
{
"id": "SettingLockBoostChar",
"len": 1,
"default": "B",
"description": "Shown when the locking mode is set to lock all buttons except for boost mode."
},
{
"id": "SettingLockFullChar",
"len": 1,
"default": "F",
"description": "Shown when the locking mode is set to lock all buttons."
}
],
"menuGroups": [{
"id": "PowerMenu",
"maxLen": 5,
"maxLen2": 11,
"description": "Menu for settings related to power. Main settings to do with the input voltage."
},
{
"id": "SolderingMenu",
"maxLen": 5,
"maxLen2": 11,
"description": "Settings for soldering mode, such as boost temps, the increment used when pressing buttons and if button locking is enabled."
},
{
"id": "PowerSavingMenu",
"maxLen": 5,
"maxLen2": 11,
"description": "Settings to do with power saving, such as sleep mode, sleep temps, and shutdown modes."
},
{
"id": "UIMenu",
"maxLen": 5,
"maxLen2": 11,
"description": "User interface related settings, such as units."
},
{
"id": "AdvancedMenu",
"maxLen": 5,
"maxLen2": 11,
"description": "Advanced settings. Misc catchall for settings that don't fit anywhere else or settings that require some thought before use."
}
],
"menuOptions": [{
"id": "DCInCutoff",
"maxLen": 5,
"maxLen2": 11,
"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,
"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,
"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,
"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,
"description": "Enabled PPS & EPR modes."
},
{
"id": "BoostTemperature",
"maxLen": 4,
"maxLen2": 9,
"description": "When the unit is in soldering mode. You can hold down the button at the front of the device to temporarily override the soldering temperature to this value. This SETS the temperature, it does not ADD to it."
},
{
"id": "AutoStart",
"maxLen": 6,
"maxLen2": 13,
"description": "When the device powers up, should it enter into a special mode. These settings set it to either start into soldering mode, sleeping mode or auto mode (Enters into soldering mode on the first movement)."
},
{
"id": "TempChangeShortStep",
"maxLen": 8,
"maxLen2": 15,
"description": "Factor by which the temperature is changed with a quick press of the buttons."
},
{
"id": "TempChangeLongStep",
"maxLen": 6,
"maxLen2": 15,
"description": "Factor by which the temperature is changed with a hold of the buttons."
},
{
"id": "LockingMode",
"maxLen": 6,
"maxLen2": 13,
"description": "If locking the buttons against accidental presses is enabled."
},
{
"id": "MotionSensitivity",
"maxLen": 6,
"maxLen2": 13,
"description": "Scale of how sensitive the device is to movement. Higher numbers == more sensitive. 0 == motion detection turned off."
},
{
"id": "SleepTemperature",
"maxLen": 4,
"maxLen2": 9,
"description": "Temperature the device will drop down to while asleep. Typically around halfway between off and soldering temperature."
},
{
"id": "SleepTimeout",
"maxLen": 4,
"maxLen2": 9,
"description": "How long of a period without movement / button-pressing is required before the device drops down to the sleep temperature."
},
{
"id": "ShutdownTimeout",
"maxLen": 5,
"maxLen2": 11,
"description": "How long of a period without movement / button-pressing is required before the device turns off the tip heater completely and returns to the main idle screen."
},
{
"id": "HallEffSensitivity",
"maxLen": 6,
"maxLen2": 13,
"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."
},
{
"id": "TemperatureUnit",
"maxLen": 6,
"maxLen2": 13,
"description": "If the device shows temperatures in °C or °F."
},
{
"id": "DisplayRotation",
"maxLen": 6,
"maxLen2": 13,
"description": "If the display should rotate automatically or if it should be fixed for left- or right-handed mode."
},
{
"id": "CooldownBlink",
"maxLen": 6,
"maxLen2": 13,
"description": "If the idle screen should blink the tip temperature for attention while the tip is over 50°C. Intended as a 'tip is still hot' warning."
},
{
"id": "ScrollingSpeed",
"maxLen": 6,
"maxLen2": 11,
"description": "How fast the description text scrolls when hovering on a menu. Faster speeds may induce tearing, but allow reading the whole description faster."
},
{
"id": "ReverseButtonTempChange",
"maxLen": 6,
"maxLen2": 15,
"description": "Swaps which button increments and decrements on temperature change screens."
},
{
"id": "AnimSpeed",
"maxLen": 6,
"maxLen2": 13,
"description": "How fast should the menu animations loop, or if they should not loop at all."
},
{
"id": "AnimLoop",
"maxLen": 6,
"maxLen2": 13,
"description": "Should the menu animations loop. Only visible if the animation speed is not set to \"Off\""
},
{
"id": "Brightness",
"maxLen": 7,
"maxLen2": 15,
"description": "Display brightness. Higher values age the OLED faster due to burn-in. (However, it is notable that most of these screens die from other causes first.)"
},
{
"id": "ColourInversion",
"maxLen": 7,
"maxLen2": 15,
"description": "Inverts the entire OLED."
},
{
"id": "LOGOTime",
"maxLen": 7,
"maxLen2": 15,
"description": "Sets the duration for the boot logo (s=seconds)."
},
{
"id": "AdvancedIdle",
"maxLen": 6,
"maxLen2": 13,
"description": "Should the device show an 'advanced' view on the idle screen. The advanced view uses text to show more details than the typical icons."
},
{
"id": "AdvancedSoldering",
"maxLen": 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,
"description": "Should BLE be enabled at boot time."
},
{
"id": "PowerLimit",
"maxLen": 5,
"maxLen2": 11,
"description": "Allows setting a custom wattage for the device to aim to keep the AVERAGE power below. The unit can't control its peak power no matter how you set this. (Except for MHP30 which will regulate nicely to this). If USB-PD is in use, the limit will be set to the lower of this and the supplies advertised wattage."
},
{
"id": "CalibrateCJC",
"maxLen": 8,
"maxLen2": 15,
"description": "Used to calibrate the ADC+Op-amp offsets for the tip. This calibration must be performed when the tip temperature and the handle temperature are equal. Generally not required unless your device is reading more than 5°C off target."
},
{
"id": "VoltageCalibration",
"maxLen": 8,
"maxLen2": 15,
"description": "Enters an adjustment mode where you can gradually adjust the measured voltage to compensate for any unit-to-unit variance in the voltage sense resistors."
},
{
"id": "PowerPulsePower",
"maxLen": 6,
"maxLen2": 15,
"description": "Enables and sets the wattage of the power pulse. Power pulse causes the device to briefly turn on the heater to draw power to avoid power banks going to sleep."
},
{
"id": "PowerPulseWait",
"maxLen": 6,
"maxLen2": 13,
"description": "Adjusts the time interval between power pulses. Longer gaps reduce undesired heating of the tip, but needs to be fast enough to keep your power bank awake."
},
{
"id": "PowerPulseDuration",
"maxLen": 6,
"maxLen2": 13,
"description": "How long should the power pulse go for. Some power banks require seeing the power draw be sustained for a certain duration to keep awake. Should be kept as short as possible to avoid wasting power / undesired heating of the tip."
},
{
"id": "SettingsReset",
"maxLen": 8,
"maxLen2": 15,
"description": "Resets all settings and calibrations to factory defaults. Does NOT erase custom user boot up logo's."
},
{
"id": "LanguageSwitch",
"maxLen": 7,
"maxLen2": 15,
"description": "Changes the device language on multi-lingual builds."
}
]
}

View File

@@ -1,4 +1,5 @@
version: "3" version: "3"
name: "ironos"
services: services:
builder: builder:
stdin_open: true stdin_open: true

View File

@@ -1,8 +1,21 @@
# Project info
site_name: IronOS site_name: IronOS
site_url: https://ralim.github.io/IronOS/ site_url: https://ralim.github.io/IronOS/
repo_url: https://github.com/ralim/IronOS/
site_description: "IronOS Open Source Soldering Iron firmware for Miniware and Pinecil" site_description: "IronOS Open Source Soldering Iron firmware for Miniware and Pinecil"
# repo config
repo_url: https://github.com/ralim/IronOS/
docs_dir: Documentation docs_dir: Documentation
edit_uri: edit/dev/Documentation/
# Theme and config
theme:
name: readthedocs
highlightsjs: true
hljs_languages:
- yaml
nav: nav:
- Home: index.md - Home: index.md
- Getting Started: GettingStarted.md - Getting Started: GettingStarted.md
@@ -27,4 +40,17 @@ nav:
- Translations: Translation.md - Translations: Translation.md
- Development: Development.md - Development: Development.md
theme: readthedocs # 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

View File

@@ -60,6 +60,15 @@
#define ORIENTATION_MODE 0 // 0: Right 1:Left 2:Automatic - Default right #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 #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 * Temp change settings
*/ */
@@ -137,7 +146,7 @@
#define MAX_TEMP_C 350 // Max soldering temp selectable °C #define MAX_TEMP_C 350 // Max soldering temp selectable °C
#define MAX_TEMP_F 660 // Max soldering temp selectable °F #define MAX_TEMP_F 660 // Max soldering temp selectable °F
#define MIN_TEMP_C 10 // Min soldering temp selectable °C #define MIN_TEMP_C 10 // Min soldering temp selectable °C
#define MIN_TEMP_F 60 // Min soldering temp selectable °F #define MIN_TEMP_F 50 // Min soldering temp selectable °F
#define MIN_BOOST_TEMP_C 150 // The min settable temp for boost mode °C #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 MIN_BOOST_TEMP_F 300 // The min settable temp for boost mode °F
#define NO_DISPLAY_ROTATE // Disable OLED rotation by accel #define NO_DISPLAY_ROTATE // Disable OLED rotation by accel

View File

@@ -125,6 +125,6 @@ const int32_t uVtoDegC[] = {
38137, 500, // 38137, 500, //
}; };
#endif #endif
const int uVtoDegCItems = sizeof(uVtoDegC) / (2 * sizeof(uint16_t)); const int uVtoDegCItems = sizeof(uVtoDegC) / (2 * sizeof(uVtoDegC[0]));
uint32_t TipThermoModel::convertuVToDegC(uint32_t tipuVDelta) { return Utils::InterpolateLookupTable(uVtoDegC, uVtoDegCItems, tipuVDelta); } uint32_t TipThermoModel::convertuVToDegC(uint32_t tipuVDelta) { return Utils::InterpolateLookupTable(uVtoDegC, uVtoDegCItems, tipuVDelta); }

View File

@@ -59,6 +59,15 @@
#define ORIENTATION_MODE 2 // 0: Right 1:Left 2:Automatic - Default Automatic #define ORIENTATION_MODE 2 // 0: Right 1:Left 2:Automatic - Default Automatic
#define REVERSE_BUTTON_TEMP_CHANGE 0 // 0:Default 1:Reverse - Reverse the plus and minus button assigment for temperature change #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 * Temp change settings
*/ */
@@ -141,7 +150,7 @@
#define MAX_TEMP_C 450 // Max soldering temp selectable °C #define MAX_TEMP_C 450 // Max soldering temp selectable °C
#define MAX_TEMP_F 850 // Max soldering temp selectable °F #define MAX_TEMP_F 850 // Max soldering temp selectable °F
#define MIN_TEMP_C 10 // Min soldering temp selectable °C #define MIN_TEMP_C 10 // Min soldering temp selectable °C
#define MIN_TEMP_F 60 // Min soldering temp selectable °F #define MIN_TEMP_F 50 // Min soldering temp selectable °F
#define MIN_BOOST_TEMP_C 250 // The min settable temp for boost mode °C #define MIN_BOOST_TEMP_C 250 // The min settable temp for boost mode °C
#define MIN_BOOST_TEMP_F 480 // The min settable temp for boost mode °F #define MIN_BOOST_TEMP_F 480 // The min settable temp for boost mode °F

View File

@@ -72,10 +72,7 @@ void unstick_I2C() {
uint8_t getButtonA() { return (gpio_input_bit_get(KEY_A_GPIO_Port, KEY_A_Pin) == SET) ? 1 : 0; } uint8_t getButtonA() { return (gpio_input_bit_get(KEY_A_GPIO_Port, KEY_A_Pin) == SET) ? 1 : 0; }
uint8_t getButtonB() { return (gpio_input_bit_get(KEY_B_GPIO_Port, KEY_B_Pin) == SET) ? 1 : 0; } uint8_t getButtonB() { return (gpio_input_bit_get(KEY_B_GPIO_Port, KEY_B_Pin) == SET) ? 1 : 0; }
void reboot() { void reboot() { eclic_system_reset(); }
// Spin for watchdog
for (;;) {}
}
void delay_ms(uint16_t count) { delay_1ms(count); } void delay_ms(uint16_t count) { delay_1ms(count); }
uint32_t __get_IPSR(void) { uint32_t __get_IPSR(void) {

View File

@@ -67,6 +67,6 @@ const int32_t uVtoDegC[] = {
}; };
#endif #endif
const int uVtoDegCItems = sizeof(uVtoDegC) / (2 * sizeof(uint16_t)); const int uVtoDegCItems = sizeof(uVtoDegC) / (2 * sizeof(uVtoDegC[0]));
uint32_t TipThermoModel::convertuVToDegC(uint32_t tipuVDelta) { return Utils::InterpolateLookupTable(uVtoDegC, uVtoDegCItems, tipuVDelta); } uint32_t TipThermoModel::convertuVToDegC(uint32_t tipuVDelta) { return Utils::InterpolateLookupTable(uVtoDegC, uVtoDegCItems, tipuVDelta); }

View File

@@ -59,6 +59,15 @@
#define ORIENTATION_MODE 2 // 0: Right 1:Left 2:Automatic - Default Automatic #define ORIENTATION_MODE 2 // 0: Right 1:Left 2:Automatic - Default Automatic
#define REVERSE_BUTTON_TEMP_CHANGE 0 // 0:Default 1:Reverse - Reverse the plus and minus button assigment for temperature change #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 * Temp change settings
*/ */
@@ -132,7 +141,7 @@
#define MAX_TEMP_C 450 // Max soldering temp selectable °C #define MAX_TEMP_C 450 // Max soldering temp selectable °C
#define MAX_TEMP_F 850 // Max soldering temp selectable °F #define MAX_TEMP_F 850 // Max soldering temp selectable °F
#define MIN_TEMP_C 10 // Min soldering temp selectable °C #define MIN_TEMP_C 10 // Min soldering temp selectable °C
#define MIN_TEMP_F 60 // Min soldering temp selectable °F #define MIN_TEMP_F 50 // Min soldering temp selectable °F
#define MIN_BOOST_TEMP_C 250 // The min settable temp for boost mode °C #define MIN_BOOST_TEMP_C 250 // The min settable temp for boost mode °C
#define MIN_BOOST_TEMP_F 480 // The min settable temp for boost mode °F #define MIN_BOOST_TEMP_F 480 // The min settable temp for boost mode °F

View File

@@ -126,8 +126,7 @@ uint8_t getButtonB() {
} }
void reboot() { void reboot() {
// Spin for watchdog hal_system_reset();
for (;;) {}
} }
void delay_ms(uint16_t count) { void delay_ms(uint16_t count) {

View File

@@ -4,7 +4,7 @@
#define portCHAR char #define portCHAR char
#define configSUPPORT_STATIC_ALLOCATION 1 #define configSUPPORT_STATIC_ALLOCATION 1
#define configSUPPORT_DYNAMIC_ALLOCATION 0 #define configSUPPORT_DYNAMIC_ALLOCATION 1
#define CLINT_CTRL_ADDR (0x02000000UL) #define CLINT_CTRL_ADDR (0x02000000UL)
#define configCLINT_BASE_ADDRESS CLINT_CTRL_ADDR #define configCLINT_BASE_ADDRESS CLINT_CTRL_ADDR
#define configUSE_PREEMPTION 1 #define configUSE_PREEMPTION 1
@@ -14,7 +14,7 @@
#define configTICK_RATE_HZ ((TickType_t)1000) #define configTICK_RATE_HZ ((TickType_t)1000)
#define configMAX_PRIORITIES (7) #define configMAX_PRIORITIES (7)
#define configMINIMAL_STACK_SIZE ((unsigned short)160) /* Only needs to be this high as some demo tasks also use this constant. In production only the idle task would use this. */ #define configMINIMAL_STACK_SIZE ((unsigned short)160) /* Only needs to be this high as some demo tasks also use this constant. In production only the idle task would use this. */
#define configTOTAL_HEAP_SIZE ((size_t)0) #define configTOTAL_HEAP_SIZE ((size_t)1024 * 8)
#define configMAX_TASK_NAME_LEN (24) #define configMAX_TASK_NAME_LEN (24)
#define configUSE_TRACE_FACILITY 0 #define configUSE_TRACE_FACILITY 0
#define configUSE_16_BIT_TICKS 0 #define configUSE_16_BIT_TICKS 0
@@ -35,7 +35,10 @@
#define configUSE_CO_ROUTINES 0 #define configUSE_CO_ROUTINES 0
/* Software timer definitions. */ /* Software timer definitions. */
#define configUSE_TIMERS 0 #define configUSE_TIMERS 1
#define configTIMER_TASK_PRIORITY (configMAX_PRIORITIES - 1)
#define configTIMER_QUEUE_LENGTH 8
#define configTIMER_TASK_STACK_DEPTH (160)
/* Task priorities. Allow these to be overridden. */ /* Task priorities. Allow these to be overridden. */
#ifndef uartPRIMARY_PRIORITY #ifndef uartPRIMARY_PRIORITY
@@ -63,7 +66,7 @@ void vApplicationSleep(uint32_t xExpectedIdleTime);
#define INCLUDE_vTaskPrioritySet 0 #define INCLUDE_vTaskPrioritySet 0
#define INCLUDE_uxTaskPriorityGet 0 #define INCLUDE_uxTaskPriorityGet 0
#define INCLUDE_vTaskDelete 0 #define INCLUDE_vTaskDelete 1
#define INCLUDE_vTaskSuspend 1 #define INCLUDE_vTaskSuspend 1
#define INCLUDE_xResumeFromISR 1 #define INCLUDE_xResumeFromISR 1
#define INCLUDE_vTaskDelayUntil 1 #define INCLUDE_vTaskDelayUntil 1

View File

@@ -17,15 +17,18 @@ extern "C" {
#include "bl702_pwm.h" #include "bl702_pwm.h"
#include "bl702_timer.h" #include "bl702_timer.h"
} }
void start_PWM_output(void);
#define ADC_Filter_Smooth 4 #define ADC_Filter_Smooth 4
history<uint16_t, ADC_Filter_Smooth> ADC_Vin; history<uint16_t, ADC_Filter_Smooth> ADC_Vin;
history<uint16_t, ADC_Filter_Smooth> ADC_Temp; history<uint16_t, ADC_Filter_Smooth> ADC_Temp;
history<uint16_t, ADC_Filter_Smooth> ADC_Tip; history<uint16_t, ADC_Filter_Smooth> ADC_Tip;
volatile uint8_t ADCBurstCounter = 0;
void adc_fifo_irq(void) { void adc_fifo_irq(void) {
if (ADC_GetIntStatus(ADC_INT_FIFO_READY) == SET) { if (ADC_GetIntStatus(ADC_INT_FIFO_READY) == SET) {
// Read out all entries in the fifo // Read out all entries in the fifo
while (ADC_Get_FIFO_Count()) { while (ADC_Get_FIFO_Count()) {
ADCBurstCounter++;
volatile uint32_t reading = ADC_Read_FIFO(); volatile uint32_t reading = ADC_Read_FIFO();
// As per manual, 26 bit reading; lowest 16 are the ADC // As per manual, 26 bit reading; lowest 16 are the ADC
uint16_t sample = reading & 0xFFFF; uint16_t sample = reading & 0xFFFF;
@@ -46,6 +49,10 @@ void adc_fifo_irq(void) {
} }
} }
if (ADCBurstCounter >= 8) {
ADCBurstCounter = 0;
start_PWM_output();
// unblock the PID controller thread // unblock the PID controller thread
if (xTaskGetSchedulerState() != taskSCHEDULER_NOT_STARTED) { if (xTaskGetSchedulerState() != taskSCHEDULER_NOT_STARTED) {
BaseType_t xHigherPriorityTaskWoken = pdFALSE; BaseType_t xHigherPriorityTaskWoken = pdFALSE;
@@ -55,6 +62,7 @@ void adc_fifo_irq(void) {
} }
} }
} }
}
// Clear IRQ // Clear IRQ
ADC_IntClr(ADC_INT_ALL); ADC_IntClr(ADC_INT_ALL);
} }
@@ -66,12 +74,8 @@ volatile uint16_t PWMSafetyTimer = 0;
volatile uint8_t pendingPWM = 0; volatile uint8_t pendingPWM = 0;
volatile bool lastPeriodWasFast = false; volatile bool lastPeriodWasFast = false;
// Timer 0 is used to co-ordinate the ADC and the output PWM void start_PWM_output(void) {
void timer0_comp0_callback(void) { ADC_Start(); }
void timer0_comp1_callback(void) { PWM_Channel_Disable(PWM_Channel); }
void timer0_comp2_callback(void) {
// This occurs at timer rollover, so if we want to turn on the output PWM; we do so
if (PWMSafetyTimer) { if (PWMSafetyTimer) {
PWMSafetyTimer--; PWMSafetyTimer--;
if (lastPeriodWasFast != fastPWM) { if (lastPeriodWasFast != fastPWM) {
@@ -93,8 +97,16 @@ void timer0_comp2_callback(void) {
} else { } else {
PWM_Channel_Disable(PWM_Channel); PWM_Channel_Disable(PWM_Channel);
} }
TIMER_Enable(TIMER_CH0);
} }
// Timer 0 is used to co-ordinate the ADC and the output PWM
void timer0_comp0_callback(void) {
TIMER_Disable(TIMER_CH0);
ADC_Start();
}
void timer0_comp1_callback(void) { PWM_Channel_Disable(PWM_Channel); } // Trigged at end of output cycle; turn off the tip PWM
void switchToFastPWM(void) { void switchToFastPWM(void) {
fastPWM = true; fastPWM = true;
totalPWM = powerPWM + tempMeasureTicks + holdoffTicks; totalPWM = powerPWM + tempMeasureTicks + holdoffTicks;

View File

@@ -0,0 +1,550 @@
/*
* FreeRTOS Kernel V10.4.1
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* https://www.FreeRTOS.org
* https://github.com/FreeRTOS
*
* 1 tab == 4 spaces!
*/
/*
* A sample implementation of pvPortMalloc() that allows the heap to be defined
* across multiple non-contigous blocks and combines (coalescences) adjacent
* memory blocks as they are freed.
*
* See heap_1.c, heap_2.c, heap_3.c and heap_4.c for alternative
* implementations, and the memory management pages of https://www.FreeRTOS.org
* for more information.
*
* Usage notes:
*
* vPortDefineHeapRegions() ***must*** be called before pvPortMalloc().
* pvPortMalloc() will be called if any task objects (tasks, queues, event
* groups, etc.) are created, therefore vPortDefineHeapRegions() ***must*** be
* called before any other objects are defined.
*
* vPortDefineHeapRegions() takes a single parameter. The parameter is an array
* of HeapRegion_t structures. HeapRegion_t is defined in portable.h as
*
* typedef struct HeapRegion
* {
* uint8_t *pucStartAddress; << Start address of a block of memory that will be part of the heap.
* size_t xSizeInBytes; << Size of the block of memory.
* } HeapRegion_t;
*
* The array is terminated using a NULL zero sized region definition, and the
* memory regions defined in the array ***must*** appear in address order from
* low address to high address. So the following is a valid example of how
* to use the function.
*
* HeapRegion_t xHeapRegions[] =
* {
* { ( uint8_t * ) 0x80000000UL, 0x10000 }, << Defines a block of 0x10000 bytes starting at address 0x80000000
* { ( uint8_t * ) 0x90000000UL, 0xa0000 }, << Defines a block of 0xa0000 bytes starting at address of 0x90000000
* { NULL, 0 } << Terminates the array.
* };
*
* vPortDefineHeapRegions( xHeapRegions ); << Pass the array into vPortDefineHeapRegions().
*
* Note 0x80000000 is the lower address so appears in the array first.
*
*/
#include <stdlib.h>
/* Defining MPU_WRAPPERS_INCLUDED_FROM_API_FILE prevents task.h from redefining
* all the API functions to use the MPU wrappers. That should only be done when
* task.h is included from an application file. */
#define MPU_WRAPPERS_INCLUDED_FROM_API_FILE
#include "FreeRTOS.h"
#include "task.h"
#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE
#if ( configSUPPORT_DYNAMIC_ALLOCATION == 0 )
#error This file must not be used if configSUPPORT_DYNAMIC_ALLOCATION is 0
#endif
/* Block sizes must not get too small. */
#define heapMINIMUM_BLOCK_SIZE ( ( size_t ) ( xHeapStructSize << 1 ) )
/* Assumes 8bit bytes! */
#define heapBITS_PER_BYTE ( ( size_t ) 8 )
/* Define the linked list structure. This is used to link free blocks in order
* of their memory address. */
typedef struct A_BLOCK_LINK
{
struct A_BLOCK_LINK * pxNextFreeBlock; /*<< The next free block in the list. */
size_t xBlockSize; /*<< The size of the free block. */
} BlockLink_t;
/*-----------------------------------------------------------*/
/*
* Inserts a block of memory that is being freed into the correct position in
* the list of free memory blocks. The block being freed will be merged with
* the block in front it and/or the block behind it if the memory blocks are
* adjacent to each other.
*/
static void prvInsertBlockIntoFreeList( BlockLink_t * pxBlockToInsert );
/*-----------------------------------------------------------*/
/* The size of the structure placed at the beginning of each allocated memory
* block must by correctly byte aligned. */
static const size_t xHeapStructSize = ( sizeof( BlockLink_t ) + ( ( size_t ) ( portBYTE_ALIGNMENT - 1 ) ) ) & ~( ( size_t ) portBYTE_ALIGNMENT_MASK );
/* Create a couple of list links to mark the start and end of the list. */
static BlockLink_t xStart, * pxEnd = NULL;
/* Keeps track of the number of calls to allocate and free memory as well as the
* number of free bytes remaining, but says nothing about fragmentation. */
static size_t xFreeBytesRemaining = 0U;
static size_t xMinimumEverFreeBytesRemaining = 0U;
static size_t xNumberOfSuccessfulAllocations = 0;
static size_t xNumberOfSuccessfulFrees = 0;
/* Gets set to the top bit of an size_t type. When this bit in the xBlockSize
* member of an BlockLink_t structure is set then the block belongs to the
* application. When the bit is free the block is still part of the free heap
* space. */
static size_t xBlockAllocatedBit = 0;
/*-----------------------------------------------------------*/
void * pvPortMalloc( size_t xWantedSize )
{
BlockLink_t * pxBlock, * pxPreviousBlock, * pxNewBlockLink;
void * pvReturn = NULL;
/* The heap must be initialised before the first call to
* prvPortMalloc(). */
configASSERT( pxEnd );
vTaskSuspendAll();
{
/* Check the requested block size is not so large that the top bit is
* set. The top bit of the block size member of the BlockLink_t structure
* is used to determine who owns the block - the application or the
* kernel, so it must be free. */
if( ( xWantedSize & xBlockAllocatedBit ) == 0 )
{
/* The wanted size is increased so it can contain a BlockLink_t
* structure in addition to the requested amount of bytes. */
if( xWantedSize > 0 )
{
xWantedSize += xHeapStructSize;
/* Ensure that blocks are always aligned to the required number
* of bytes. */
if( ( xWantedSize & portBYTE_ALIGNMENT_MASK ) != 0x00 )
{
/* Byte alignment required. */
xWantedSize += ( portBYTE_ALIGNMENT - ( xWantedSize & portBYTE_ALIGNMENT_MASK ) );
}
else
{
mtCOVERAGE_TEST_MARKER();
}
}
else
{
mtCOVERAGE_TEST_MARKER();
}
if( ( xWantedSize > 0 ) && ( xWantedSize <= xFreeBytesRemaining ) )
{
/* Traverse the list from the start (lowest address) block until
* one of adequate size is found. */
pxPreviousBlock = &xStart;
pxBlock = xStart.pxNextFreeBlock;
while( ( pxBlock->xBlockSize < xWantedSize ) && ( pxBlock->pxNextFreeBlock != NULL ) )
{
pxPreviousBlock = pxBlock;
pxBlock = pxBlock->pxNextFreeBlock;
}
/* If the end marker was reached then a block of adequate size
* was not found. */
if( pxBlock != pxEnd )
{
/* Return the memory space pointed to - jumping over the
* BlockLink_t structure at its start. */
pvReturn = ( void * ) ( ( ( uint8_t * ) pxPreviousBlock->pxNextFreeBlock ) + xHeapStructSize );
/* This block is being returned for use so must be taken out
* of the list of free blocks. */
pxPreviousBlock->pxNextFreeBlock = pxBlock->pxNextFreeBlock;
/* If the block is larger than required it can be split into
* two. */
if( ( pxBlock->xBlockSize - xWantedSize ) > heapMINIMUM_BLOCK_SIZE )
{
/* This block is to be split into two. Create a new
* block following the number of bytes requested. The void
* cast is used to prevent byte alignment warnings from the
* compiler. */
pxNewBlockLink = ( void * ) ( ( ( uint8_t * ) pxBlock ) + xWantedSize );
/* Calculate the sizes of two blocks split from the
* single block. */
pxNewBlockLink->xBlockSize = pxBlock->xBlockSize - xWantedSize;
pxBlock->xBlockSize = xWantedSize;
/* Insert the new block into the list of free blocks. */
prvInsertBlockIntoFreeList( ( pxNewBlockLink ) );
}
else
{
mtCOVERAGE_TEST_MARKER();
}
xFreeBytesRemaining -= pxBlock->xBlockSize;
if( xFreeBytesRemaining < xMinimumEverFreeBytesRemaining )
{
xMinimumEverFreeBytesRemaining = xFreeBytesRemaining;
}
else
{
mtCOVERAGE_TEST_MARKER();
}
/* The block is being returned - it is allocated and owned
* by the application and has no "next" block. */
pxBlock->xBlockSize |= xBlockAllocatedBit;
pxBlock->pxNextFreeBlock = NULL;
xNumberOfSuccessfulAllocations++;
}
else
{
mtCOVERAGE_TEST_MARKER();
}
}
else
{
mtCOVERAGE_TEST_MARKER();
}
}
else
{
mtCOVERAGE_TEST_MARKER();
}
traceMALLOC( pvReturn, xWantedSize );
}
( void ) xTaskResumeAll();
#if ( configUSE_MALLOC_FAILED_HOOK == 1 )
{
if( pvReturn == NULL )
{
extern void vApplicationMallocFailedHook( void );
vApplicationMallocFailedHook();
}
else
{
mtCOVERAGE_TEST_MARKER();
}
}
#endif /* if ( configUSE_MALLOC_FAILED_HOOK == 1 ) */
return pvReturn;
}
/*-----------------------------------------------------------*/
void vPortFree( void * pv )
{
uint8_t * puc = ( uint8_t * ) pv;
BlockLink_t * pxLink;
if( pv != NULL )
{
/* The memory being freed will have an BlockLink_t structure immediately
* before it. */
puc -= xHeapStructSize;
/* This casting is to keep the compiler from issuing warnings. */
pxLink = ( void * ) puc;
/* Check the block is actually allocated. */
configASSERT( ( pxLink->xBlockSize & xBlockAllocatedBit ) != 0 );
configASSERT( pxLink->pxNextFreeBlock == NULL );
if( ( pxLink->xBlockSize & xBlockAllocatedBit ) != 0 )
{
if( pxLink->pxNextFreeBlock == NULL )
{
/* The block is being returned to the heap - it is no longer
* allocated. */
pxLink->xBlockSize &= ~xBlockAllocatedBit;
vTaskSuspendAll();
{
/* Add this block to the list of free blocks. */
xFreeBytesRemaining += pxLink->xBlockSize;
traceFREE( pv, pxLink->xBlockSize );
prvInsertBlockIntoFreeList( ( ( BlockLink_t * ) pxLink ) );
xNumberOfSuccessfulFrees++;
}
( void ) xTaskResumeAll();
}
else
{
mtCOVERAGE_TEST_MARKER();
}
}
else
{
mtCOVERAGE_TEST_MARKER();
}
}
}
/*-----------------------------------------------------------*/
size_t xPortGetFreeHeapSize( void )
{
return xFreeBytesRemaining;
}
/*-----------------------------------------------------------*/
size_t xPortGetMinimumEverFreeHeapSize( void )
{
return xMinimumEverFreeBytesRemaining;
}
/*-----------------------------------------------------------*/
static void prvInsertBlockIntoFreeList( BlockLink_t * pxBlockToInsert )
{
BlockLink_t * pxIterator;
uint8_t * puc;
/* Iterate through the list until a block is found that has a higher address
* than the block being inserted. */
for( pxIterator = &xStart; pxIterator->pxNextFreeBlock < pxBlockToInsert; pxIterator = pxIterator->pxNextFreeBlock )
{
/* Nothing to do here, just iterate to the right position. */
}
/* Do the block being inserted, and the block it is being inserted after
* make a contiguous block of memory? */
puc = ( uint8_t * ) pxIterator;
if( ( puc + pxIterator->xBlockSize ) == ( uint8_t * ) pxBlockToInsert )
{
pxIterator->xBlockSize += pxBlockToInsert->xBlockSize;
pxBlockToInsert = pxIterator;
}
else
{
mtCOVERAGE_TEST_MARKER();
}
/* Do the block being inserted, and the block it is being inserted before
* make a contiguous block of memory? */
puc = ( uint8_t * ) pxBlockToInsert;
if( ( puc + pxBlockToInsert->xBlockSize ) == ( uint8_t * ) pxIterator->pxNextFreeBlock )
{
if( pxIterator->pxNextFreeBlock != pxEnd )
{
/* Form one big block from the two blocks. */
pxBlockToInsert->xBlockSize += pxIterator->pxNextFreeBlock->xBlockSize;
pxBlockToInsert->pxNextFreeBlock = pxIterator->pxNextFreeBlock->pxNextFreeBlock;
}
else
{
pxBlockToInsert->pxNextFreeBlock = pxEnd;
}
}
else
{
pxBlockToInsert->pxNextFreeBlock = pxIterator->pxNextFreeBlock;
}
/* If the block being inserted plugged a gab, so was merged with the block
* before and the block after, then it's pxNextFreeBlock pointer will have
* already been set, and should not be set here as that would make it point
* to itself. */
if( pxIterator != pxBlockToInsert )
{
pxIterator->pxNextFreeBlock = pxBlockToInsert;
}
else
{
mtCOVERAGE_TEST_MARKER();
}
}
/*-----------------------------------------------------------*/
void vPortDefineHeapRegions( const HeapRegion_t * const pxHeapRegions )
{
BlockLink_t * pxFirstFreeBlockInRegion = NULL, * pxPreviousFreeBlock;
size_t xAlignedHeap;
size_t xTotalRegionSize, xTotalHeapSize = 0;
BaseType_t xDefinedRegions = 0;
size_t xAddress;
const HeapRegion_t * pxHeapRegion;
/* Can only call once! */
configASSERT( pxEnd == NULL );
pxHeapRegion = &( pxHeapRegions[ xDefinedRegions ] );
while( pxHeapRegion->xSizeInBytes > 0 )
{
xTotalRegionSize = pxHeapRegion->xSizeInBytes;
/* Ensure the heap region starts on a correctly aligned boundary. */
xAddress = ( size_t ) pxHeapRegion->pucStartAddress;
if( ( xAddress & portBYTE_ALIGNMENT_MASK ) != 0 )
{
xAddress += ( portBYTE_ALIGNMENT - 1 );
xAddress &= ~portBYTE_ALIGNMENT_MASK;
/* Adjust the size for the bytes lost to alignment. */
xTotalRegionSize -= xAddress - ( size_t ) pxHeapRegion->pucStartAddress;
}
xAlignedHeap = xAddress;
/* Set xStart if it has not already been set. */
if( xDefinedRegions == 0 )
{
/* xStart is used to hold a pointer to the first item in the list of
* free blocks. The void cast is used to prevent compiler warnings. */
xStart.pxNextFreeBlock = ( BlockLink_t * ) xAlignedHeap;
xStart.xBlockSize = ( size_t ) 0;
}
else
{
/* Should only get here if one region has already been added to the
* heap. */
configASSERT( pxEnd != NULL );
/* Check blocks are passed in with increasing start addresses. */
configASSERT( xAddress > ( size_t ) pxEnd );
}
/* Remember the location of the end marker in the previous region, if
* any. */
pxPreviousFreeBlock = pxEnd;
/* pxEnd is used to mark the end of the list of free blocks and is
* inserted at the end of the region space. */
xAddress = xAlignedHeap + xTotalRegionSize;
xAddress -= xHeapStructSize;
xAddress &= ~portBYTE_ALIGNMENT_MASK;
pxEnd = ( BlockLink_t * ) xAddress;
pxEnd->xBlockSize = 0;
pxEnd->pxNextFreeBlock = NULL;
/* To start with there is a single free block in this region that is
* sized to take up the entire heap region minus the space taken by the
* free block structure. */
pxFirstFreeBlockInRegion = ( BlockLink_t * ) xAlignedHeap;
pxFirstFreeBlockInRegion->xBlockSize = xAddress - ( size_t ) pxFirstFreeBlockInRegion;
pxFirstFreeBlockInRegion->pxNextFreeBlock = pxEnd;
/* If this is not the first region that makes up the entire heap space
* then link the previous region to this region. */
if( pxPreviousFreeBlock != NULL )
{
pxPreviousFreeBlock->pxNextFreeBlock = pxFirstFreeBlockInRegion;
}
xTotalHeapSize += pxFirstFreeBlockInRegion->xBlockSize;
/* Move onto the next HeapRegion_t structure. */
xDefinedRegions++;
pxHeapRegion = &( pxHeapRegions[ xDefinedRegions ] );
}
xMinimumEverFreeBytesRemaining = xTotalHeapSize;
xFreeBytesRemaining = xTotalHeapSize;
/* Check something was actually defined before it is accessed. */
configASSERT( xTotalHeapSize );
/* Work out the position of the top bit in a size_t variable. */
xBlockAllocatedBit = ( ( size_t ) 1 ) << ( ( sizeof( size_t ) * heapBITS_PER_BYTE ) - 1 );
}
/*-----------------------------------------------------------*/
void vPortGetHeapStats( HeapStats_t * pxHeapStats )
{
BlockLink_t * pxBlock;
size_t xBlocks = 0, xMaxSize = 0, xMinSize = portMAX_DELAY; /* portMAX_DELAY used as a portable way of getting the maximum value. */
vTaskSuspendAll();
{
pxBlock = xStart.pxNextFreeBlock;
/* pxBlock will be NULL if the heap has not been initialised. The heap
* is initialised automatically when the first allocation is made. */
if( pxBlock != NULL )
{
do
{
/* Increment the number of blocks and record the largest block seen
* so far. */
xBlocks++;
if( pxBlock->xBlockSize > xMaxSize )
{
xMaxSize = pxBlock->xBlockSize;
}
/* Heap five will have a zero sized block at the end of each
* each region - the block is only used to link to the next
* heap region so it not a real block. */
if( pxBlock->xBlockSize != 0 )
{
if( pxBlock->xBlockSize < xMinSize )
{
xMinSize = pxBlock->xBlockSize;
}
}
/* Move to the next block in the chain until the last block is
* reached. */
pxBlock = pxBlock->pxNextFreeBlock;
} while( pxBlock != pxEnd );
}
}
( void ) xTaskResumeAll();
pxHeapStats->xSizeOfLargestFreeBlockInBytes = xMaxSize;
pxHeapStats->xSizeOfSmallestFreeBlockInBytes = xMinSize;
pxHeapStats->xNumberOfFreeBlocks = xBlocks;
taskENTER_CRITICAL();
{
pxHeapStats->xAvailableHeapSpaceInBytes = xFreeBytesRemaining;
pxHeapStats->xNumberOfSuccessfulAllocations = xNumberOfSuccessfulAllocations;
pxHeapStats->xNumberOfSuccessfulFrees = xNumberOfSuccessfulFrees;
pxHeapStats->xMinimumEverFreeBytesRemaining = xMinimumEverFreeBytesRemaining;
}
taskEXIT_CRITICAL();
}

View File

@@ -8,6 +8,7 @@
#ifndef BSP_PINE64_PINS_H_ #ifndef BSP_PINE64_PINS_H_
#define BSP_PINE64_PINS_H_ #define BSP_PINE64_PINS_H_
#include "bl702_adc.h" #include "bl702_adc.h"
#include "bl702_pwm.h"
#include "hal_gpio.h" #include "hal_gpio.h"
#define KEY_B_Pin GPIO_PIN_28 #define KEY_B_Pin GPIO_PIN_28

View File

@@ -8,21 +8,46 @@
#include "BSP.h" #include "BSP.h"
#include "Debug.h" #include "Debug.h"
#include "FreeRTOSConfig.h" #include "FreeRTOSConfig.h"
#include "Pins.h"
#include "IRQ.h" #include "IRQ.h"
#include "Pins.h"
#include "bl702_sec_eng.h"
#include "history.hpp" #include "history.hpp"
#include <string.h> #include <string.h>
#define ADC_NORM_SAMPLES 16 #define ADC_NORM_SAMPLES 16
#define ADC_FILTER_LEN 4 #define ADC_FILTER_LEN 4
uint16_t ADCReadings[ADC_NORM_SAMPLES]; // room for 32 lots of the pair of readings uint16_t ADCReadings[ADC_NORM_SAMPLES]; // room for 32 lots of the pair of readings
// Heap
extern uint8_t _heap_start;
extern uint8_t _heap_size; // @suppress("Type cannot be resolved")
static HeapRegion_t xHeapRegions[] = {
{&_heap_start, (unsigned int)&_heap_size},
{NULL, 0}, /* Terminates the array. */
{NULL, 0} /* Terminates the array. */
};
// Functions // Functions
void setup_timer_scheduler(void); void setup_timer_scheduler(void);
void setup_pwm(void); void setup_pwm(void);
void setup_adc(void); void setup_adc(void);
void hardware_init() { void hardware_init() {
vPortDefineHeapRegions(xHeapRegions);
HBN_Set_XCLK_CLK_Sel(HBN_XCLK_CLK_XTAL);
// Set capcode
{
uint32_t tmpVal = 0;
tmpVal = BL_RD_REG(AON_BASE, AON_XTAL_CFG);
tmpVal = BL_SET_REG_BITS_VAL(tmpVal, AON_XTAL_CAPCODE_IN_AON, 33);
tmpVal = BL_SET_REG_BITS_VAL(tmpVal, AON_XTAL_CAPCODE_OUT_AON, 33);
BL_WR_REG(AON_BASE, AON_XTAL_CFG, tmpVal);
}
Sec_Eng_Trng_Enable();
gpio_set_mode(OLED_RESET_Pin, GPIO_OUTPUT_MODE); gpio_set_mode(OLED_RESET_Pin, GPIO_OUTPUT_MODE);
gpio_set_mode(KEY_A_Pin, GPIO_INPUT_PD_MODE); gpio_set_mode(KEY_A_Pin, GPIO_INPUT_PD_MODE);
gpio_set_mode(KEY_B_Pin, GPIO_INPUT_PD_MODE); gpio_set_mode(KEY_B_Pin, GPIO_INPUT_PD_MODE);
@@ -116,30 +141,26 @@ void setup_timer_scheduler() {
TIMER_CFG_Type cfg = { TIMER_CFG_Type cfg = {
TIMER_CH0, // Channel TIMER_CH0, // Channel
TIMER_CLKSRC_32K, // Clock source TIMER_CLKSRC_32K, // Clock source
TIMER_PRELOAD_TRIG_COMP2, // Trigger TIMER_PRELOAD_TRIG_COMP0, // Trigger; reset after trigger 0
TIMER_COUNT_PRELOAD, // Counter mode TIMER_COUNT_PRELOAD, // Counter mode
22, // Clock div 22, // Clock div
(uint16_t)(powerPWM + holdoffTicks), // CH0 compare (adc) (uint16_t)(powerPWM + holdoffTicks), // CH0 compare (adc)
0, // CH1 compare (pwm out) 0, // CH1 compare (pwm out)
(uint16_t)(powerPWM + tempMeasureTicks + holdoffTicks), // CH2 comapre (total period) 0, // CH2 compare not used
0, // Preload 0, // Preload
}; };
TIMER_Init(&cfg); TIMER_Init(&cfg);
Timer_Int_Callback_Install(TIMER_CH0, TIMER_INT_COMP_0, timer0_comp0_callback); Timer_Int_Callback_Install(TIMER_CH0, TIMER_INT_COMP_0, timer0_comp0_callback);
Timer_Int_Callback_Install(TIMER_CH0, TIMER_INT_COMP_1, timer0_comp1_callback); Timer_Int_Callback_Install(TIMER_CH0, TIMER_INT_COMP_1, timer0_comp1_callback);
Timer_Int_Callback_Install(TIMER_CH0, TIMER_INT_COMP_2, timer0_comp2_callback);
TIMER_ClearIntStatus(TIMER_CH0, TIMER_COMP_ID_0); TIMER_ClearIntStatus(TIMER_CH0, TIMER_COMP_ID_0);
TIMER_ClearIntStatus(TIMER_CH0, TIMER_COMP_ID_1); TIMER_ClearIntStatus(TIMER_CH0, TIMER_COMP_ID_1);
TIMER_ClearIntStatus(TIMER_CH0, TIMER_COMP_ID_2);
TIMER_IntMask(TIMER_CH0, TIMER_INT_COMP_0, UNMASK); TIMER_IntMask(TIMER_CH0, TIMER_INT_COMP_0, UNMASK);
TIMER_IntMask(TIMER_CH0, TIMER_INT_COMP_1, UNMASK); TIMER_IntMask(TIMER_CH0, TIMER_INT_COMP_1, UNMASK);
TIMER_IntMask(TIMER_CH0, TIMER_INT_COMP_2, UNMASK);
CPU_Interrupt_Enable(TIMER_CH0_IRQn); CPU_Interrupt_Enable(TIMER_CH0_IRQn);
TIMER_Enable(TIMER_CH0); TIMER_Enable(TIMER_CH0);
// switchToSlowPWM();
} }
void setupFUSBIRQ() { void setupFUSBIRQ() {
@@ -150,12 +171,3 @@ void setupFUSBIRQ() {
CPU_Interrupt_Enable(GPIO_INT0_IRQn); CPU_Interrupt_Enable(GPIO_INT0_IRQn);
gpio_irq_enable(FUSB302_IRQ_Pin, ENABLE); gpio_irq_enable(FUSB302_IRQ_Pin, ENABLE);
} }
void vAssertCalled(void) {
MSG((char *)"vAssertCalled\r\n");
PWM_Channel_Disable(PWM_Channel);
gpio_set_mode(PWM_Out_Pin, GPIO_INPUT_PD_MODE);
while (1)
;
}

View File

@@ -0,0 +1,323 @@
/*****************************************************************************************
*
* @file bl_hci_wrapper.c
*
* @brief Bouffalo Lab hci wrapper functions
*
* Copyright (C) Bouffalo Lab 2018
*
* History: 2018-08 crealted by llgong @ Shanghai
*
*****************************************************************************************/
#include <string.h>
#include <log.h>
#include "hci_host.h"
#include "bl_hci_wrapper.h"
#include "hci_driver.h"
#include "../common/include/errno.h"
#include "byteorder.h"
#include "hci_onchip.h"
#define DATA_MSG_CNT 10
struct rx_msg_struct data_msg[DATA_MSG_CNT];
struct k_queue msg_queue;
#if defined(BFLB_BLE_NOTIFY_ADV_DISCARDED)
extern void ble_controller_notify_adv_discarded(uint8_t *adv_bd_addr, uint8_t adv_type);
#endif
struct rx_msg_struct *bl_find_valid_data_msg()
{
struct rx_msg_struct empty_msg;
memset(&empty_msg, 0, sizeof(struct rx_msg_struct));
for (int i = 0; i < DATA_MSG_CNT; i++) {
if (!memcmp(&data_msg[i], &empty_msg, sizeof(struct rx_msg_struct))) {
return (data_msg + i);
}
}
return NULL;
}
int bl_onchiphci_send_2_controller(struct net_buf *buf)
{
uint16_t opcode;
uint16_t dest_id = 0x00;
uint8_t buf_type;
uint8_t pkt_type;
hci_pkt_struct pkt;
buf_type = bt_buf_get_type(buf);
switch (buf_type) {
case BT_BUF_CMD: {
struct bt_hci_cmd_hdr *chdr;
if (buf->len < sizeof(struct bt_hci_cmd_hdr)) {
return -EINVAL;
}
chdr = (void *)buf->data;
if (buf->len < chdr->param_len) {
return -EINVAL;
}
pkt_type = BT_HCI_CMD;
opcode = sys_le16_to_cpu(chdr->opcode);
//move buf to the payload
net_buf_pull(buf, sizeof(struct bt_hci_cmd_hdr));
switch (opcode) {
//ble refer to hci_cmd_desc_tab_le, for the ones of which dest_ll is BLE_CTRL
case BT_HCI_OP_LE_CONN_UPDATE:
case BT_HCI_OP_LE_READ_CHAN_MAP:
case BT_HCI_OP_LE_READ_REMOTE_FEATURES:
case BT_HCI_OP_LE_START_ENCRYPTION:
case BT_HCI_OP_LE_LTK_REQ_REPLY:
case BT_HCI_OP_LE_LTK_REQ_NEG_REPLY:
case BT_HCI_OP_LE_CONN_PARAM_REQ_REPLY:
case BT_HCI_OP_LE_CONN_PARAM_REQ_NEG_REPLY:
case BT_HCI_OP_LE_SET_DATA_LEN:
case BT_HCI_OP_LE_READ_PHY:
case BT_HCI_OP_LE_SET_PHY:
//bredr identify link id, according to dest_id
case BT_HCI_OP_READ_REMOTE_FEATURES:
case BT_HCI_OP_READ_REMOTE_EXT_FEATURES:
case BT_HCI_OP_READ_ENCRYPTION_KEY_SIZE: {
//dest_id is connectin handle
dest_id = buf->data[0];
}
default:
break;
}
pkt.p.hci_cmd.opcode = opcode;
pkt.p.hci_cmd.param_len = chdr->param_len;
pkt.p.hci_cmd.params = buf->data;
break;
}
case BT_BUF_ACL_OUT: {
struct bt_hci_acl_hdr *acl;
//connhandle +l2cap field
uint16_t connhdl_l2cf, tlt_len;
if (buf->len < sizeof(struct bt_hci_acl_hdr)) {
return -EINVAL;
}
pkt_type = BT_HCI_ACL_DATA;
acl = (void *)buf->data;
tlt_len = sys_le16_to_cpu(acl->len);
connhdl_l2cf = sys_le16_to_cpu(acl->handle);
//move buf to the payload
net_buf_pull(buf, sizeof(struct bt_hci_acl_hdr));
if (buf->len < tlt_len) {
return -EINVAL;
}
//get connection_handle
dest_id = bt_acl_handle(connhdl_l2cf);
pkt.p.acl_data.conhdl = dest_id;
pkt.p.acl_data.pb_bc_flag = bt_acl_flags(connhdl_l2cf);
pkt.p.acl_data.len = tlt_len;
pkt.p.acl_data.buffer = (uint8_t *)buf->data;
break;
}
default:
return -EINVAL;
}
return bt_onchiphci_send(pkt_type, dest_id, &pkt);
}
void bl_packet_to_host(uint8_t pkt_type, uint16_t src_id, uint8_t *param, uint8_t param_len, struct net_buf *buf)
{
uint16_t tlt_len;
bool prio = true;
uint8_t nb_h2c_cmd_pkts = 0x01;
uint8_t *buf_data = net_buf_tail(buf);
bt_buf_set_rx_adv(buf, false);
switch (pkt_type) {
case BT_HCI_CMD_CMP_EVT: {
tlt_len = BT_HCI_EVT_CC_PARAM_OFFSET + param_len;
*buf_data++ = BT_HCI_EVT_CMD_COMPLETE;
*buf_data++ = BT_HCI_CCEVT_HDR_PARLEN + param_len;
*buf_data++ = nb_h2c_cmd_pkts;
sys_put_le16(src_id, buf_data);
buf_data += 2;
memcpy(buf_data, param, param_len);
break;
}
case BT_HCI_CMD_STAT_EVT: {
tlt_len = BT_HCI_CSEVT_LEN;
*buf_data++ = BT_HCI_EVT_CMD_STATUS;
*buf_data++ = BT_HCI_CSVT_PARLEN;
*buf_data++ = *(uint8_t *)param;
*buf_data++ = nb_h2c_cmd_pkts;
sys_put_le16(src_id, buf_data);
break;
}
case BT_HCI_LE_EVT: {
prio = false;
bt_buf_set_type(buf, BT_BUF_EVT);
if (param[0] == BT_HCI_EVT_LE_ADVERTISING_REPORT) {
bt_buf_set_rx_adv(buf, true);
}
tlt_len = BT_HCI_EVT_LE_PARAM_OFFSET + param_len;
*buf_data++ = BT_HCI_EVT_LE_META_EVENT;
*buf_data++ = param_len;
memcpy(buf_data, param, param_len);
break;
}
case BT_HCI_EVT: {
if (src_id != BT_HCI_EVT_NUM_COMPLETED_PACKETS) {
prio = false;
}
bt_buf_set_type(buf, BT_BUF_EVT);
tlt_len = BT_HCI_EVT_LE_PARAM_OFFSET + param_len;
*buf_data++ = src_id;
*buf_data++ = param_len;
memcpy(buf_data, param, param_len);
break;
}
case BT_HCI_ACL_DATA: {
prio = false;
bt_buf_set_type(buf, BT_BUF_ACL_IN);
tlt_len = bt_onchiphci_hanlde_rx_acl(param, buf_data);
break;
}
default: {
net_buf_unref(buf);
return;
}
}
net_buf_add(buf, tlt_len);
if (prio) {
bt_recv_prio(buf);
} else {
hci_driver_enque_recvq(buf);
}
}
void bl_trigger_queued_msg()
{
struct net_buf *buf = NULL;
struct rx_msg_struct *msg = NULL;
do {
unsigned int lock = irq_lock();
if (k_queue_is_empty(&msg_queue)) {
break;
}
if (bt_buf_get_rx_avail_cnt() <= CONFIG_BT_RX_BUF_RSV_COUNT)
break;
buf = bt_buf_get_rx(BT_BUF_ACL_IN, K_NO_WAIT);
if (!buf) {
break;
}
msg = k_fifo_get(&msg_queue, K_NO_WAIT);
BT_ASSERT(msg);
bl_packet_to_host(msg->pkt_type, msg->src_id, msg->param, msg->param_len, buf);
irq_unlock(lock);
if (msg->param) {
k_free(msg->param);
}
memset(msg, 0, sizeof(struct rx_msg_struct));
} while (buf);
}
static void bl_onchiphci_rx_packet_handler(uint8_t pkt_type, uint16_t src_id, uint8_t *param, uint8_t param_len)
{
struct net_buf *buf = NULL;
struct rx_msg_struct *rx_msg = NULL;
if (pkt_type == BT_HCI_CMD_CMP_EVT || pkt_type == BT_HCI_CMD_STAT_EVT) {
buf = bt_buf_get_cmd_complete(K_FOREVER);
bl_packet_to_host(pkt_type, src_id, param, param_len, buf);
return;
} else if (pkt_type == BT_HCI_LE_EVT && param[0] == BT_HCI_EVT_LE_ADVERTISING_REPORT) {
if (bt_buf_get_rx_avail_cnt() <= CONFIG_BT_RX_BUF_RSV_COUNT) {
BT_INFO("Discard adv report.");
#if defined(BFLB_BLE_NOTIFY_ADV_DISCARDED)
ble_controller_notify_adv_discarded(&param[4], param[2]);
#endif
return;
}
buf = bt_buf_get_rx(BT_BUF_ACL_IN, K_NO_WAIT);
if (buf)
bl_packet_to_host(pkt_type, src_id, param, param_len, buf);
return;
} else {
if (pkt_type != BT_HCI_ACL_DATA) {
/* Using the reserved buf (CONFIG_BT_RX_BUF_RSV_COUNT) firstly. */
buf = bt_buf_get_rx(BT_BUF_ACL_IN, K_NO_WAIT);
if (buf) {
bl_packet_to_host(pkt_type, src_id, param, param_len, buf);
return;
}
}
rx_msg = bl_find_valid_data_msg();
}
BT_ASSERT(rx_msg);
rx_msg->pkt_type = pkt_type;
rx_msg->src_id = src_id;
rx_msg->param_len = param_len;
if (param_len) {
rx_msg->param = k_malloc(param_len);
memcpy(rx_msg->param, param, param_len);
}
k_fifo_put(&msg_queue, rx_msg);
bl_trigger_queued_msg();
}
uint8_t bl_onchiphci_interface_init(void)
{
for (int i = 0; i < DATA_MSG_CNT; i++) {
memset(data_msg + i, 0, sizeof(struct rx_msg_struct));
}
k_queue_init(&msg_queue, DATA_MSG_CNT);
return bt_onchiphci_interface_init(bl_onchiphci_rx_packet_handler);
}
void bl_onchiphci_interface_deinit(void)
{
struct rx_msg_struct *msg;
do {
msg = k_fifo_get(&msg_queue, K_NO_WAIT);
if (msg) {
if (msg->param) {
k_free(msg->param);
}
} else {
break;
}
} while (1);
k_queue_free(&msg_queue);
}

View File

@@ -0,0 +1,26 @@
#ifndef __BL_HCI_WRAPPER_H__
#define __BL_HCI_WRAPPER_H__
#include "net/buf.h"
#include "bluetooth.h"
struct rx_msg_struct {
uint8_t pkt_type;
uint16_t src_id;
uint8_t *param;
uint8_t param_len;
} __packed;
typedef enum {
DATA_TYPE_COMMAND = 1,
DATA_TYPE_ACL = 2,
DATA_TYPE_SCO = 3,
DATA_TYPE_EVENT = 4
} serial_data_type_t;
uint8_t bl_onchiphci_interface_init(void);
void bl_onchiphci_interface_deinit(void);
void bl_trigger_queued_msg(void);
int bl_onchiphci_send_2_controller(struct net_buf *buf);
#endif //__BL_CONTROLLER_H__

View File

@@ -0,0 +1,353 @@
/*
* Copyright (c) 2016 Intel Corporation
* Copyright (c) 2011-2014 Wind River Systems, Inc.
*
* SPDX-License-Identifier: Apache-2.0
*/
/**
* @file Atomic ops in pure C
*
* This module provides the atomic operators for processors
* which do not support native atomic operations.
*
* The atomic operations are guaranteed to be atomic with respect
* to interrupt service routines, and to operations performed by peer
* processors.
*
* (originally from x86's atomic.c)
*/
#include <FreeRTOS.h>
#include <include/atomic.h>
#include "bl_port.h"
//#include <toolchain.h>
//#include <arch/cpu.h>
/**
*
* @brief Atomic compare-and-set primitive
*
* This routine provides the compare-and-set operator. If the original value at
* <target> equals <oldValue>, then <newValue> is stored at <target> and the
* function returns 1.
*
* If the original value at <target> does not equal <oldValue>, then the store
* is not done and the function returns 0.
*
* The reading of the original value at <target>, the comparison,
* and the write of the new value (if it occurs) all happen atomically with
* respect to both interrupts and accesses of other processors to <target>.
*
* @param target address to be tested
* @param old_value value to compare against
* @param new_value value to compare against
* @return Returns 1 if <new_value> is written, 0 otherwise.
*/
int atomic_cas(atomic_t *target, atomic_val_t old_value,
atomic_val_t new_value)
{
unsigned int key;
int ret = 0;
key = irq_lock();
if (*target == old_value) {
*target = new_value;
ret = 1;
}
irq_unlock(key);
return ret;
}
/**
*
* @brief Atomic addition primitive
*
* This routine provides the atomic addition operator. The <value> is
* atomically added to the value at <target>, placing the result at <target>,
* and the old value from <target> is returned.
*
* @param target memory location to add to
* @param value the value to add
*
* @return The previous value from <target>
*/
atomic_val_t atomic_add(atomic_t *target, atomic_val_t value)
{
unsigned int key;
atomic_val_t ret;
key = irq_lock();
ret = *target;
*target += value;
irq_unlock(key);
return ret;
}
/**
*
* @brief Atomic subtraction primitive
*
* This routine provides the atomic subtraction operator. The <value> is
* atomically subtracted from the value at <target>, placing the result at
* <target>, and the old value from <target> is returned.
*
* @param target the memory location to subtract from
* @param value the value to subtract
*
* @return The previous value from <target>
*/
atomic_val_t atomic_sub(atomic_t *target, atomic_val_t value)
{
unsigned int key;
atomic_val_t ret;
key = irq_lock();
ret = *target;
*target -= value;
irq_unlock(key);
return ret;
}
/**
*
* @brief Atomic increment primitive
*
* @param target memory location to increment
*
* This routine provides the atomic increment operator. The value at <target>
* is atomically incremented by 1, and the old value from <target> is returned.
*
* @return The value from <target> before the increment
*/
atomic_val_t atomic_inc(atomic_t *target)
{
unsigned int key;
atomic_val_t ret;
key = irq_lock();
ret = *target;
(*target)++;
irq_unlock(key);
return ret;
}
/**
*
* @brief Atomic decrement primitive
*
* @param target memory location to decrement
*
* This routine provides the atomic decrement operator. The value at <target>
* is atomically decremented by 1, and the old value from <target> is returned.
*
* @return The value from <target> prior to the decrement
*/
atomic_val_t atomic_dec(atomic_t *target)
{
unsigned int key;
atomic_val_t ret;
key = irq_lock();
ret = *target;
(*target)--;
irq_unlock(key);
return ret;
}
/**
*
* @brief Atomic get primitive
*
* @param target memory location to read from
*
* This routine provides the atomic get primitive to atomically read
* a value from <target>. It simply does an ordinary load. Note that <target>
* is expected to be aligned to a 4-byte boundary.
*
* @return The value read from <target>
*/
atomic_val_t atomic_get(const atomic_t *target)
{
return *target;
}
/**
*
* @brief Atomic get-and-set primitive
*
* This routine provides the atomic set operator. The <value> is atomically
* written at <target> and the previous value at <target> is returned.
*
* @param target the memory location to write to
* @param value the value to write
*
* @return The previous value from <target>
*/
atomic_val_t atomic_set(atomic_t *target, atomic_val_t value)
{
unsigned int key;
atomic_val_t ret;
key = irq_lock();
ret = *target;
*target = value;
irq_unlock(key);
return ret;
}
/**
*
* @brief Atomic clear primitive
*
* This routine provides the atomic clear operator. The value of 0 is atomically
* written at <target> and the previous value at <target> is returned. (Hence,
* atomic_clear(pAtomicVar) is equivalent to atomic_set(pAtomicVar, 0).)
*
* @param target the memory location to write
*
* @return The previous value from <target>
*/
atomic_val_t atomic_clear(atomic_t *target)
{
unsigned int key;
atomic_val_t ret;
key = irq_lock();
ret = *target;
*target = 0;
irq_unlock(key);
return ret;
}
/**
*
* @brief Atomic bitwise inclusive OR primitive
*
* This routine provides the atomic bitwise inclusive OR operator. The <value>
* is atomically bitwise OR'ed with the value at <target>, placing the result
* at <target>, and the previous value at <target> is returned.
*
* @param target the memory location to be modified
* @param value the value to OR
*
* @return The previous value from <target>
*/
atomic_val_t atomic_or(atomic_t *target, atomic_val_t value)
{
unsigned int key;
atomic_val_t ret;
key = irq_lock();
ret = *target;
*target |= value;
irq_unlock(key);
return ret;
}
/**
*
* @brief Atomic bitwise exclusive OR (XOR) primitive
*
* This routine provides the atomic bitwise exclusive OR operator. The <value>
* is atomically bitwise XOR'ed with the value at <target>, placing the result
* at <target>, and the previous value at <target> is returned.
*
* @param target the memory location to be modified
* @param value the value to XOR
*
* @return The previous value from <target>
*/
atomic_val_t atomic_xor(atomic_t *target, atomic_val_t value)
{
unsigned int key;
atomic_val_t ret;
key = irq_lock();
ret = *target;
*target ^= value;
irq_unlock(key);
return ret;
}
/**
*
* @brief Atomic bitwise AND primitive
*
* This routine provides the atomic bitwise AND operator. The <value> is
* atomically bitwise AND'ed with the value at <target>, placing the result
* at <target>, and the previous value at <target> is returned.
*
* @param target the memory location to be modified
* @param value the value to AND
*
* @return The previous value from <target>
*/
atomic_val_t atomic_and(atomic_t *target, atomic_val_t value)
{
unsigned int key;
atomic_val_t ret;
key = irq_lock();
ret = *target;
*target &= value;
irq_unlock(key);
return ret;
}
/**
*
* @brief Atomic bitwise NAND primitive
*
* This routine provides the atomic bitwise NAND operator. The <value> is
* atomically bitwise NAND'ed with the value at <target>, placing the result
* at <target>, and the previous value at <target> is returned.
*
* @param target the memory location to be modified
* @param value the value to NAND
*
* @return The previous value from <target>
*/
atomic_val_t atomic_nand(atomic_t *target, atomic_val_t value)
{
unsigned int key;
atomic_val_t ret;
key = irq_lock();
ret = *target;
*target = ~(*target & value);
irq_unlock(key);
return ret;
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,33 @@
/*
* Copyright (c) 2019 Oticon A/S
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <util.h>
u8_t u8_to_dec(char *buf, u8_t buflen, u8_t value)
{
u8_t divisor = 100;
u8_t num_digits = 0;
u8_t digit;
while (buflen > 0 && divisor > 0) {
digit = value / divisor;
if (digit != 0 || divisor == 1 || num_digits != 0) {
*buf = (char)digit + '0';
buf++;
buflen--;
num_digits++;
}
value -= digit * divisor;
divisor /= 10;
}
if (buflen) {
*buf = '\0';
}
return num_digits;
}

View File

@@ -0,0 +1,40 @@
/**
* @file dummy.c
* Static compilation checks.
*/
/*
* Copyright (c) 2017 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr.h>
#if defined(CONFIG_BT_HCI_HOST)
/* The Bluetooth subsystem requires the Tx thread to execute at higher priority
* than the Rx thread as the Tx thread needs to process the acknowledgements
* before new Rx data is processed. This is a necessity to correctly detect
* transaction violations in ATT and SMP protocols.
*/
BUILD_ASSERT(CONFIG_BT_HCI_TX_PRIO < CONFIG_BT_RX_PRIO);
#endif
#if defined(CONFIG_BT_CTLR)
/* The Bluetooth Controller's priority receive thread priority shall be higher
* than the Bluetooth Host's Tx and the Controller's receive thread priority.
* This is required in order to dispatch Number of Completed Packets event
* before any new data arrives on a connection to the Host threads.
*/
BUILD_ASSERT(CONFIG_BT_CTLR_RX_PRIO < CONFIG_BT_HCI_TX_PRIO);
#endif /* CONFIG_BT_CTLR */
/* Immediate logging is not supported with the software-based Link Layer
* since it introduces ISR latency due to outputting log messages with
* interrupts disabled.
*/
#if !defined(CONFIG_TEST) && !defined(CONFIG_ARCH_POSIX) && \
(defined(CONFIG_BT_LL_SW_SPLIT) || defined(CONFIG_BT_LL_SW_LEGACY))
BUILD_ASSERT_MSG(!IS_ENABLED(CONFIG_LOG_IMMEDIATE), "Immediate logging not "
"supported with the software Link Layer");
#endif

View File

@@ -0,0 +1,11 @@
/*
* Copyright (c) 2019 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <stddef.h>
#include <zephyr/types.h>
#include <errno.h>
// #include <sys/util.h>

View File

@@ -0,0 +1,444 @@
/* atomic operations */
/*
* Copyright (c) 1997-2015, Wind River Systems, Inc.
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef __ATOMIC_H__
#define __ATOMIC_H__
#include <stdbool.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef int atomic_t;
typedef atomic_t atomic_val_t;
/**
* @defgroup atomic_apis Atomic Services APIs
* @ingroup kernel_apis
* @{
*/
/**
* @brief Atomic compare-and-set.
*
* This routine performs an atomic compare-and-set on @a target. If the current
* value of @a target equals @a old_value, @a target is set to @a new_value.
* If the current value of @a target does not equal @a old_value, @a target
* is left unchanged.
*
* @param target Address of atomic variable.
* @param old_value Original value to compare against.
* @param new_value New value to store.
* @return 1 if @a new_value is written, 0 otherwise.
*/
#ifdef CONFIG_ATOMIC_OPERATIONS_BUILTIN
static inline int atomic_cas(atomic_t *target, atomic_val_t old_value,
atomic_val_t new_value)
{
return __atomic_compare_exchange_n(target, &old_value, new_value,
0, __ATOMIC_SEQ_CST,
__ATOMIC_SEQ_CST);
}
#else
extern int atomic_cas(atomic_t *target, atomic_val_t old_value,
atomic_val_t new_value);
#endif
/**
*
* @brief Atomic addition.
*
* This routine performs an atomic addition on @a target.
*
* @param target Address of atomic variable.
* @param value Value to add.
*
* @return Previous value of @a target.
*/
#ifdef CONFIG_ATOMIC_OPERATIONS_BUILTIN
static inline atomic_val_t atomic_add(atomic_t *target, atomic_val_t value)
{
return __atomic_fetch_add(target, value, __ATOMIC_SEQ_CST);
}
#else
extern atomic_val_t atomic_add(atomic_t *target, atomic_val_t value);
#endif
/**
*
* @brief Atomic subtraction.
*
* This routine performs an atomic subtraction on @a target.
*
* @param target Address of atomic variable.
* @param value Value to subtract.
*
* @return Previous value of @a target.
*/
#ifdef CONFIG_ATOMIC_OPERATIONS_BUILTIN
static inline atomic_val_t atomic_sub(atomic_t *target, atomic_val_t value)
{
return __atomic_fetch_sub(target, value, __ATOMIC_SEQ_CST);
}
#else
extern atomic_val_t atomic_sub(atomic_t *target, atomic_val_t value);
#endif
/**
*
* @brief Atomic increment.
*
* This routine performs an atomic increment by 1 on @a target.
*
* @param target Address of atomic variable.
*
* @return Previous value of @a target.
*/
#ifdef CONFIG_ATOMIC_OPERATIONS_BUILTIN
static inline atomic_val_t atomic_inc(atomic_t *target)
{
return atomic_add(target, 1);
}
#else
extern atomic_val_t atomic_inc(atomic_t *target);
#endif
/**
*
* @brief Atomic decrement.
*
* This routine performs an atomic decrement by 1 on @a target.
*
* @param target Address of atomic variable.
*
* @return Previous value of @a target.
*/
#ifdef CONFIG_ATOMIC_OPERATIONS_BUILTIN
static inline atomic_val_t atomic_dec(atomic_t *target)
{
return atomic_sub(target, 1);
}
#else
extern atomic_val_t atomic_dec(atomic_t *target);
#endif
/**
*
* @brief Atomic get.
*
* This routine performs an atomic read on @a target.
*
* @param target Address of atomic variable.
*
* @return Value of @a target.
*/
#ifdef CONFIG_ATOMIC_OPERATIONS_BUILTIN
static inline atomic_val_t atomic_get(const atomic_t *target)
{
return __atomic_load_n(target, __ATOMIC_SEQ_CST);
}
#else
extern atomic_val_t atomic_get(const atomic_t *target);
#endif
/**
*
* @brief Atomic get-and-set.
*
* This routine atomically sets @a target to @a value and returns
* the previous value of @a target.
*
* @param target Address of atomic variable.
* @param value Value to write to @a target.
*
* @return Previous value of @a target.
*/
#ifdef CONFIG_ATOMIC_OPERATIONS_BUILTIN
static inline atomic_val_t atomic_set(atomic_t *target, atomic_val_t value)
{
/* This builtin, as described by Intel, is not a traditional
* test-and-set operation, but rather an atomic exchange operation. It
* writes value into *ptr, and returns the previous contents of *ptr.
*/
return __atomic_exchange_n(target, value, __ATOMIC_SEQ_CST);
}
#else
extern atomic_val_t atomic_set(atomic_t *target, atomic_val_t value);
#endif
/**
*
* @brief Atomic clear.
*
* This routine atomically sets @a target to zero and returns its previous
* value. (Hence, it is equivalent to atomic_set(target, 0).)
*
* @param target Address of atomic variable.
*
* @return Previous value of @a target.
*/
#ifdef CONFIG_ATOMIC_OPERATIONS_BUILTIN
static inline atomic_val_t atomic_clear(atomic_t *target)
{
return atomic_set(target, 0);
}
#else
extern atomic_val_t atomic_clear(atomic_t *target);
#endif
/**
*
* @brief Atomic bitwise inclusive OR.
*
* This routine atomically sets @a target to the bitwise inclusive OR of
* @a target and @a value.
*
* @param target Address of atomic variable.
* @param value Value to OR.
*
* @return Previous value of @a target.
*/
#ifdef CONFIG_ATOMIC_OPERATIONS_BUILTIN
static inline atomic_val_t atomic_or(atomic_t *target, atomic_val_t value)
{
return __atomic_fetch_or(target, value, __ATOMIC_SEQ_CST);
}
#else
extern atomic_val_t atomic_or(atomic_t *target, atomic_val_t value);
#endif
/**
*
* @brief Atomic bitwise exclusive OR (XOR).
*
* This routine atomically sets @a target to the bitwise exclusive OR (XOR) of
* @a target and @a value.
*
* @param target Address of atomic variable.
* @param value Value to XOR
*
* @return Previous value of @a target.
*/
#ifdef CONFIG_ATOMIC_OPERATIONS_BUILTIN
static inline atomic_val_t atomic_xor(atomic_t *target, atomic_val_t value)
{
return __atomic_fetch_xor(target, value, __ATOMIC_SEQ_CST);
}
#else
extern atomic_val_t atomic_xor(atomic_t *target, atomic_val_t value);
#endif
/**
*
* @brief Atomic bitwise AND.
*
* This routine atomically sets @a target to the bitwise AND of @a target
* and @a value.
*
* @param target Address of atomic variable.
* @param value Value to AND.
*
* @return Previous value of @a target.
*/
#ifdef CONFIG_ATOMIC_OPERATIONS_BUILTIN
static inline atomic_val_t atomic_and(atomic_t *target, atomic_val_t value)
{
return __atomic_fetch_and(target, value, __ATOMIC_SEQ_CST);
}
#else
extern atomic_val_t atomic_and(atomic_t *target, atomic_val_t value);
#endif
/**
*
* @brief Atomic bitwise NAND.
*
* This routine atomically sets @a target to the bitwise NAND of @a target
* and @a value. (This operation is equivalent to target = ~(target & value).)
*
* @param target Address of atomic variable.
* @param value Value to NAND.
*
* @return Previous value of @a target.
*/
#ifdef CONFIG_ATOMIC_OPERATIONS_BUILTIN
static inline atomic_val_t atomic_nand(atomic_t *target, atomic_val_t value)
{
return __atomic_fetch_nand(target, value, __ATOMIC_SEQ_CST);
}
#else
extern atomic_val_t atomic_nand(atomic_t *target, atomic_val_t value);
#endif
/**
* @brief Initialize an atomic variable.
*
* This macro can be used to initialize an atomic variable. For example,
* @code atomic_t my_var = ATOMIC_INIT(75); @endcode
*
* @param i Value to assign to atomic variable.
*/
#define ATOMIC_INIT(i) (i)
/**
* @cond INTERNAL_HIDDEN
*/
#define ATOMIC_BITS (sizeof(atomic_val_t) * 8)
#define ATOMIC_MASK(bit) (1 << ((bit) & (ATOMIC_BITS - 1)))
#define ATOMIC_ELEM(addr, bit) ((addr) + ((bit) / ATOMIC_BITS))
/**
* INTERNAL_HIDDEN @endcond
*/
/**
* @brief Define an array of atomic variables.
*
* This macro defines an array of atomic variables containing at least
* @a num_bits bits.
*
* @note
* If used from file scope, the bits of the array are initialized to zero;
* if used from within a function, the bits are left uninitialized.
*
* @param name Name of array of atomic variables.
* @param num_bits Number of bits needed.
*/
#define ATOMIC_DEFINE(name, num_bits) \
atomic_t name[1 + ((num_bits)-1) / ATOMIC_BITS]
/**
* @brief Atomically test a bit.
*
* This routine tests whether bit number @a bit of @a target is set or not.
* The target may be a single atomic variable or an array of them.
*
* @param target Address of atomic variable or array.
* @param bit Bit number (starting from 0).
*
* @return 1 if the bit was set, 0 if it wasn't.
*/
static inline int atomic_test_bit(const atomic_t *target, int bit)
{
atomic_val_t val = atomic_get(ATOMIC_ELEM(target, bit));
return (1 & (val >> (bit & (ATOMIC_BITS - 1))));
}
/**
* @brief Atomically test and clear a bit.
*
* Atomically clear bit number @a bit of @a target and return its old value.
* The target may be a single atomic variable or an array of them.
*
* @param target Address of atomic variable or array.
* @param bit Bit number (starting from 0).
*
* @return 1 if the bit was set, 0 if it wasn't.
*/
static inline int atomic_test_and_clear_bit(atomic_t *target, int bit)
{
atomic_val_t mask = ATOMIC_MASK(bit);
atomic_val_t old;
old = atomic_and(ATOMIC_ELEM(target, bit), ~mask);
return (old & mask) != 0;
}
/**
* @brief Atomically set a bit.
*
* Atomically set bit number @a bit of @a target and return its old value.
* The target may be a single atomic variable or an array of them.
*
* @param target Address of atomic variable or array.
* @param bit Bit number (starting from 0).
*
* @return 1 if the bit was set, 0 if it wasn't.
*/
static inline int atomic_test_and_set_bit(atomic_t *target, int bit)
{
atomic_val_t mask = ATOMIC_MASK(bit);
atomic_val_t old;
old = atomic_or(ATOMIC_ELEM(target, bit), mask);
return (old & mask) != 0;
}
/**
* @brief Atomically clear a bit.
*
* Atomically clear bit number @a bit of @a target.
* The target may be a single atomic variable or an array of them.
*
* @param target Address of atomic variable or array.
* @param bit Bit number (starting from 0).
*
* @return N/A
*/
static inline void atomic_clear_bit(atomic_t *target, int bit)
{
atomic_val_t mask = ATOMIC_MASK(bit);
atomic_and(ATOMIC_ELEM(target, bit), ~mask);
}
/**
* @brief Atomically set a bit.
*
* Atomically set bit number @a bit of @a target.
* The target may be a single atomic variable or an array of them.
*
* @param target Address of atomic variable or array.
* @param bit Bit number (starting from 0).
*
* @return N/A
*/
static inline void atomic_set_bit(atomic_t *target, int bit)
{
atomic_val_t mask = ATOMIC_MASK(bit);
atomic_or(ATOMIC_ELEM(target, bit), mask);
}
/**
* @brief Atomically set a bit to a given value.
*
* Atomically set bit number @a bit of @a target to value @a val.
* The target may be a single atomic variable or an array of them.
*
* @param target Address of atomic variable or array.
* @param bit Bit number (starting from 0).
* @param val true for 1, false for 0.
*
* @return N/A
*/
static inline void atomic_set_bit_to(atomic_t *target, int bit, bool val)
{
atomic_val_t mask = ATOMIC_MASK(bit);
if (val) {
(void)atomic_or(ATOMIC_ELEM(target, bit), mask);
} else {
(void)atomic_and(ATOMIC_ELEM(target, bit), ~mask);
}
}
/**
* @}
*/
#ifdef __cplusplus
}
#endif
#endif /* __ATOMIC_H__ */

View File

@@ -0,0 +1,132 @@
/* errno.h - errno numbers */
/*
* Copyright (c) 1984-1999, 2012 Wind River Systems, Inc.
*
* SPDX-License-Identifier: Apache-2.0
*/
/*
* Copyright (c) 1982, 1986 Regents of the University of California.
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*
* @(#)errno.h 7.1 (Berkeley) 6/4/86
*/
#ifndef __INCerrnoh
#define __INCerrnoh
#ifdef __cplusplus
extern "C" {
#endif
extern int *__errno(void);
#define errno (*__errno())
/*
* POSIX Error codes
*/
#define EPERM 1 /* Not owner */
#define ENOENT 2 /* No such file or directory */
#define ESRCH 3 /* No such context */
#define EINTR 4 /* Interrupted system call */
#define EIO 5 /* I/O error */
#define ENXIO 6 /* No such device or address */
#define E2BIG 7 /* Arg list too long */
#define ENOEXEC 8 /* Exec format error */
#define EBADF 9 /* Bad file number */
#define ECHILD 10 /* No children */
#define EAGAIN 11 /* No more contexts */
#define ENOMEM 12 /* Not enough core */
#define EACCES 13 /* Permission denied */
#define EFAULT 14 /* Bad address */
#define ENOTEMPTY 15 /* Directory not empty */
#define EBUSY 16 /* Mount device busy */
#define EEXIST 17 /* File exists */
#define EXDEV 18 /* Cross-device link */
#define ENODEV 19 /* No such device */
#define ENOTDIR 20 /* Not a directory */
#define EISDIR 21 /* Is a directory */
#define EINVAL 22 /* Invalid argument */
#define ENFILE 23 /* File table overflow */
#define EMFILE 24 /* Too many open files */
#define ENOTTY 25 /* Not a typewriter */
#define ENAMETOOLONG 26 /* File name too long */
#define EFBIG 27 /* File too large */
#define ENOSPC 28 /* No space left on device */
#define ESPIPE 29 /* Illegal seek */
#define EROFS 30 /* Read-only file system */
#define EMLINK 31 /* Too many links */
#define EPIPE 32 /* Broken pipe */
#define EDEADLK 33 /* Resource deadlock avoided */
#define ENOLCK 34 /* No locks available */
#define ENOTSUP 35 /* Unsupported value */
#define EMSGSIZE 36 /* Message size */
/* ANSI math software */
#define EDOM 37 /* Argument too large */
#define ERANGE 38 /* Result too large */
/* ipc/network software */
/* argument errors */
#define EDESTADDRREQ 40 /* Destination address required */
#define EPROTOTYPE 41 /* Protocol wrong type for socket */
#define ENOPROTOOPT 42 /* Protocol not available */
#define EPROTONOSUPPORT 43 /* Protocol not supported */
#define ESOCKTNOSUPPORT 44 /* Socket type not supported */
#define EOPNOTSUPP 45 /* Operation not supported on socket */
#define EPFNOSUPPORT 46 /* Protocol family not supported */
#define EAFNOSUPPORT 47 /* Addr family not supported */
#define EADDRINUSE 48 /* Address already in use */
#define EADDRNOTAVAIL 49 /* Can't assign requested address */
#define ENOTSOCK 50 /* Socket operation on non-socket */
/* operational errors */
#define ENETUNREACH 51 /* Network is unreachable */
#define ENETRESET 52 /* Network dropped connection on reset */
#define ECONNABORTED 53 /* Software caused connection abort */
#define ECONNRESET 54 /* Connection reset by peer */
#define ENOBUFS 55 /* No buffer space available */
#define EISCONN 56 /* Socket is already connected */
#define ENOTCONN 57 /* Socket is not connected */
#define ESHUTDOWN 58 /* Can't send after socket shutdown */
#define ETOOMANYREFS 59 /* Too many references: can't splice */
#define ETIMEDOUT 60 /* Connection timed out */
#define ECONNREFUSED 61 /* Connection refused */
#define ENETDOWN 62 /* Network is down */
#define ETXTBSY 63 /* Text file busy */
#define ELOOP 64 /* Too many levels of symbolic links */
#define EHOSTUNREACH 65 /* No route to host */
#define ENOTBLK 66 /* Block device required */
#define EHOSTDOWN 67 /* Host is down */
/* non-blocking and interrupt i/o */
#define EINPROGRESS 68 /* Operation now in progress */
#define EALREADY 69 /* Operation already in progress */
#define EWOULDBLOCK EAGAIN /* Operation would block */
#define ENOSYS 71 /* Function not implemented */
/* aio errors (should be under posix) */
#define ECANCELED 72 /* Operation canceled */
#define ERRMAX 81
/* specific STREAMS errno values */
#define ENOSR 74 /* Insufficient memory */
#define ENOSTR 75 /* STREAMS device required */
#define EPROTO 76 /* Generic STREAMS error */
#define EBADMSG 77 /* Invalid STREAMS message */
#define ENODATA 78 /* Missing expected message data */
#define ETIME 79 /* STREAMS timeout occurred */
#define ENOMSG 80 /* Unexpected message type */
#ifdef __cplusplus
}
#endif
#endif /* __INCerrnoh */

View File

@@ -0,0 +1,114 @@
/*
* Copyright (c) 2011-2014 Wind River Systems, Inc.
*
* SPDX-License-Identifier: Apache-2.0
*/
/**
* @file
* @brief Debug aid
*
*
* The __ASSERT() macro can be used inside kernel code.
*
* Assertions are enabled by setting the __ASSERT_ON symbol to a non-zero value.
* There are two ways to do this:
* a) Use the ASSERT and ASSERT_LEVEL kconfig options
* b) Add "CFLAGS += -D__ASSERT_ON=<level>" at the end of a project's Makefile
* The Makefile method takes precedence over the kconfig option if both are
* used.
*
* Specifying an assertion level of 1 causes the compiler to issue warnings that
* the kernel contains debug-type __ASSERT() statements; this reminder is issued
* since assertion code is not normally present in a final product. Specifying
* assertion level 2 suppresses these warnings.
*
* The __ASSERT_EVAL() macro can also be used inside kernel code.
*
* It makes use of the __ASSERT() macro, but has some extra flexibility. It
* allows the developer to specify different actions depending whether the
* __ASSERT() macro is enabled or not. This can be particularly useful to
* prevent the compiler from generating comments (errors, warnings or remarks)
* about variables that are only used with __ASSERT() being assigned a value,
* but otherwise unused when the __ASSERT() macro is disabled.
*
* Consider the following example:
*
* int x;
*
* x = foo ();
* __ASSERT (x != 0, "foo() returned zero!");
*
* If __ASSERT() is disabled, then 'x' is assigned a value, but never used.
* This type of situation can be resolved using the __ASSERT_EVAL() macro.
*
* __ASSERT_EVAL ((void) foo(),
* int x = foo(),
* x != 0,
* "foo() returned zero!");
*
* The first parameter tells __ASSERT_EVAL() what to do if __ASSERT() is
* disabled. The second parameter tells __ASSERT_EVAL() what to do if
* __ASSERT() is enabled. The third and fourth parameters are the parameters
* it passes to __ASSERT().
*
* The __ASSERT_NO_MSG() macro can be used to perform an assertion that reports
* the failed test and its location, but lacks additional debugging information
* provided to assist the user in diagnosing the problem; its use is
* discouraged.
*/
#ifndef ___ASSERT__H_
#define ___ASSERT__H_
#ifdef CONFIG_ASSERT
#ifndef __ASSERT_ON
#define __ASSERT_ON CONFIG_ASSERT_LEVEL
#endif
#endif
#ifdef __ASSERT_ON
#if (__ASSERT_ON < 0) || (__ASSERT_ON > 2)
#error "Invalid __ASSERT() level: must be between 0 and 2"
#endif
#if __ASSERT_ON
#include <misc/printk.h>
#define __ASSERT(test, fmt, ...) \
do { \
if (!(test)) { \
printk("ASSERTION FAIL [%s] @ %s:%d:\n\t", \
_STRINGIFY(test), \
__FILE__, \
__LINE__); \
printk(fmt, ##__VA_ARGS__); \
for (;;) \
; /* spin thread */ \
} \
} while ((0))
#define __ASSERT_EVAL(expr1, expr2, test, fmt, ...) \
do { \
expr2; \
__ASSERT(test, fmt, ##__VA_ARGS__); \
} while (0)
#if (__ASSERT_ON == 1)
#warning "__ASSERT() statements are ENABLED"
#endif
#else
#define __ASSERT(test, fmt, ...) \
do { /* nothing */ \
} while ((0))
#define __ASSERT_EVAL(expr1, expr2, test, fmt, ...) expr1
#endif
#else
#define __ASSERT(test, fmt, ...) \
do { /* nothing */ \
} while ((0))
#define __ASSERT_EVAL(expr1, expr2, test, fmt, ...) expr1
#endif
#define __ASSERT_NO_MSG(test) __ASSERT(test, "")
#endif /* ___ASSERT__H_ */

View File

@@ -0,0 +1,441 @@
/** @file
* @brief Byte order helpers.
*/
/*
* Copyright (c) 2015-2016, Intel Corporation.
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef __BYTEORDER_H__
#define __BYTEORDER_H__
#include <zephyr/types.h>
#include <stddef.h>
#include <misc/__assert.h>
#ifndef __BYTE_ORDER__
#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__
#endif
/* Internal helpers only used by the sys_* APIs further below */
#define __bswap_16(x) ((u16_t)((((x) >> 8) & 0xff) | (((x)&0xff) << 8)))
#define __bswap_32(x) ((u32_t)((((x) >> 24) & 0xff) | \
(((x) >> 8) & 0xff00) | \
(((x)&0xff00) << 8) | \
(((x)&0xff) << 24)))
#define __bswap_64(x) ((u64_t)((((x) >> 56) & 0xff) | \
(((x) >> 40) & 0xff00) | \
(((x) >> 24) & 0xff0000) | \
(((x) >> 8) & 0xff000000) | \
(((x)&0xff000000) << 8) | \
(((x)&0xff0000) << 24) | \
(((x)&0xff00) << 40) | \
(((x)&0xff) << 56)))
/** @def sys_le16_to_cpu
* @brief Convert 16-bit integer from little-endian to host endianness.
*
* @param val 16-bit integer in little-endian format.
*
* @return 16-bit integer in host endianness.
*/
/** @def sys_cpu_to_le16
* @brief Convert 16-bit integer from host endianness to little-endian.
*
* @param val 16-bit integer in host endianness.
*
* @return 16-bit integer in little-endian format.
*/
/** @def sys_be16_to_cpu
* @brief Convert 16-bit integer from big-endian to host endianness.
*
* @param val 16-bit integer in big-endian format.
*
* @return 16-bit integer in host endianness.
*/
/** @def sys_cpu_to_be16
* @brief Convert 16-bit integer from host endianness to big-endian.
*
* @param val 16-bit integer in host endianness.
*
* @return 16-bit integer in big-endian format.
*/
/** @def sys_le32_to_cpu
* @brief Convert 32-bit integer from little-endian to host endianness.
*
* @param val 32-bit integer in little-endian format.
*
* @return 32-bit integer in host endianness.
*/
/** @def sys_cpu_to_le32
* @brief Convert 32-bit integer from host endianness to little-endian.
*
* @param val 32-bit integer in host endianness.
*
* @return 32-bit integer in little-endian format.
*/
/** @def sys_be32_to_cpu
* @brief Convert 32-bit integer from big-endian to host endianness.
*
* @param val 32-bit integer in big-endian format.
*
* @return 32-bit integer in host endianness.
*/
/** @def sys_cpu_to_be32
* @brief Convert 32-bit integer from host endianness to big-endian.
*
* @param val 32-bit integer in host endianness.
*
* @return 32-bit integer in big-endian format.
*/
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
#define sys_le16_to_cpu(val) (val)
#define sys_cpu_to_le16(val) (val)
#define sys_be16_to_cpu(val) __bswap_16(val)
#define sys_cpu_to_be16(val) __bswap_16(val)
#define sys_le32_to_cpu(val) (val)
#define sys_cpu_to_le32(val) (val)
#define sys_le64_to_cpu(val) (val)
#define sys_cpu_to_le64(val) (val)
#define sys_be32_to_cpu(val) __bswap_32(val)
#define sys_cpu_to_be32(val) __bswap_32(val)
#define sys_be64_to_cpu(val) __bswap_64(val)
#define sys_cpu_to_be64(val) __bswap_64(val)
/********************************************************************************
** Macros to get and put bytes to a stream (Little Endian format).
*/
#define UINT32_TO_STREAM(p, u32) \
{ \
*(p)++ = (u8_t)(u32); \
*(p)++ = (u8_t)((u32) >> 8); \
*(p)++ = (u8_t)((u32) >> 16); \
*(p)++ = (u8_t)((u32) >> 24); \
}
#define UINT24_TO_STREAM(p, u24) \
{ \
*(p)++ = (u8_t)(u24); \
*(p)++ = (u8_t)((u24) >> 8); \
*(p)++ = (u8_t)((u24) >> 16); \
}
#define UINT16_TO_STREAM(p, u16) \
{ \
*(p)++ = (u8_t)(u16); \
*(p)++ = (u8_t)((u16) >> 8); \
}
#define UINT8_TO_STREAM(p, u8) \
{ \
*(p)++ = (u8_t)(u8); \
}
#elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
#define sys_le16_to_cpu(val) __bswap_16(val)
#define sys_cpu_to_le16(val) __bswap_16(val)
#define sys_be16_to_cpu(val) (val)
#define sys_cpu_to_be16(val) (val)
#define sys_le32_to_cpu(val) __bswap_32(val)
#define sys_cpu_to_le32(val) __bswap_32(val)
#define sys_le64_to_cpu(val) __bswap_64(val)
#define sys_cpu_to_le64(val) __bswap_64(val)
#define sys_be32_to_cpu(val) (val)
#define sys_cpu_to_be32(val) (val)
#define sys_be64_to_cpu(val) (val)
#define sys_cpu_to_be64(val) (val)
/********************************************************************************
** Macros to get and put bytes to a stream (Big Endian format)
*/
#define UINT32_TO_STREAM(p, u32) \
{ \
*(p)++ = (u8_t)((u32) >> 24); \
*(p)++ = (u8_t)((u32) >> 16); \
*(p)++ = (u8_t)((u32) >> 8); \
*(p)++ = (u8_t)(u32); \
}
#define UINT24_TO_STREAM(p, u24) \
{ \
*(p)++ = (u8_t)((u24) >> 16); \
*(p)++ = (u8_t)((u24) >> 8); \
*(p)++ = (u8_t)(u24); \
}
#define UINT16_TO_STREAM(p, u16) \
{ \
*(p)++ = (u8_t)((u16) >> 8); \
*(p)++ = (u8_t)(u16); \
}
#define UINT8_TO_STREAM(p, u8) \
{ \
*(p)++ = (u8_t)(u8); \
}
#else
#error "Unknown byte order"
#endif
/**
* @brief Put a 16-bit integer as big-endian to arbitrary location.
*
* Put a 16-bit integer, originally in host endianness, to a
* potentially unaligned memory location in big-endian format.
*
* @param val 16-bit integer in host endianness.
* @param dst Destination memory address to store the result.
*/
static inline void sys_put_be16(u16_t val, u8_t dst[2])
{
dst[0] = val >> 8;
dst[1] = val;
}
/**
* @brief Put a 24-bit integer as big-endian to arbitrary location.
*
* Put a 24-bit integer, originally in host endianness, to a
* potentially unaligned memory location in big-endian format.
*
* @param val 24-bit integer in host endianness.
* @param dst Destination memory address to store the result.
*/
static inline void sys_put_be24(uint32_t val, uint8_t dst[3])
{
dst[0] = val >> 16;
sys_put_be16(val, &dst[1]);
}
/**
* @brief Put a 32-bit integer as big-endian to arbitrary location.
*
* Put a 32-bit integer, originally in host endianness, to a
* potentially unaligned memory location in big-endian format.
*
* @param val 32-bit integer in host endianness.
* @param dst Destination memory address to store the result.
*/
static inline void sys_put_be32(u32_t val, u8_t dst[4])
{
sys_put_be16(val >> 16, dst);
sys_put_be16(val, &dst[2]);
}
/**
* @brief Put a 16-bit integer as little-endian to arbitrary location.
*
* Put a 16-bit integer, originally in host endianness, to a
* potentially unaligned memory location in little-endian format.
*
* @param val 16-bit integer in host endianness.
* @param dst Destination memory address to store the result.
*/
static inline void sys_put_le16(u16_t val, u8_t dst[2])
{
dst[0] = val;
dst[1] = val >> 8;
}
/**
* @brief Put a 24-bit integer as little-endian to arbitrary location.
*
* Put a 24-bit integer, originally in host endianness, to a
* potentially unaligned memory location in littel-endian format.
*
* @param val 24-bit integer in host endianness.
* @param dst Destination memory address to store the result.
*/
static inline void sys_put_le24(uint32_t val, uint8_t dst[3])
{
sys_put_le16(val, dst);
dst[2] = val >> 16;
}
/**
* @brief Put a 32-bit integer as little-endian to arbitrary location.
*
* Put a 32-bit integer, originally in host endianness, to a
* potentially unaligned memory location in little-endian format.
*
* @param val 32-bit integer in host endianness.
* @param dst Destination memory address to store the result.
*/
static inline void sys_put_le32(u32_t val, u8_t dst[4])
{
sys_put_le16(val, dst);
sys_put_le16(val >> 16, &dst[2]);
}
/**
* @brief Put a 64-bit integer as little-endian to arbitrary location.
*
* Put a 64-bit integer, originally in host endianness, to a
* potentially unaligned memory location in little-endian format.
*
* @param val 64-bit integer in host endianness.
* @param dst Destination memory address to store the result.
*/
static inline void sys_put_le64(u64_t val, u8_t dst[8])
{
sys_put_le32(val, dst);
sys_put_le32(val >> 32, &dst[4]);
}
/**
* @brief Get a 16-bit integer stored in big-endian format.
*
* Get a 16-bit integer, stored in big-endian format in a potentially
* unaligned memory location, and convert it to the host endianness.
*
* @param src Location of the big-endian 16-bit integer to get.
*
* @return 16-bit integer in host endianness.
*/
static inline u16_t sys_get_be16(const u8_t src[2])
{
return ((u16_t)src[0] << 8) | src[1];
}
/**
* @brief Get a 24-bit integer stored in big-endian format.
*
* Get a 24-bit integer, stored in big-endian format in a potentially
* unaligned memory location, and convert it to the host endianness.
*
* @param src Location of the big-endian 24-bit integer to get.
*
* @return 24-bit integer in host endianness.
*/
static inline uint32_t sys_get_be24(const uint8_t src[3])
{
return ((uint32_t)src[0] << 16) | sys_get_be16(&src[1]);
}
/**
* @brief Get a 32-bit integer stored in big-endian format.
*
* Get a 32-bit integer, stored in big-endian format in a potentially
* unaligned memory location, and convert it to the host endianness.
*
* @param src Location of the big-endian 32-bit integer to get.
*
* @return 32-bit integer in host endianness.
*/
static inline u32_t sys_get_be32(const u8_t src[4])
{
return ((u32_t)sys_get_be16(&src[0]) << 16) | sys_get_be16(&src[2]);
}
/**
* @brief Get a 16-bit integer stored in little-endian format.
*
* Get a 16-bit integer, stored in little-endian format in a potentially
* unaligned memory location, and convert it to the host endianness.
*
* @param src Location of the little-endian 16-bit integer to get.
*
* @return 16-bit integer in host endianness.
*/
static inline u16_t sys_get_le16(const u8_t src[2])
{
return ((u16_t)src[1] << 8) | src[0];
}
/**
* @brief Get a 24-bit integer stored in big-endian format.
*
* Get a 24-bit integer, stored in big-endian format in a potentially
* unaligned memory location, and convert it to the host endianness.
*
* @param src Location of the big-endian 24-bit integer to get.
*
* @return 24-bit integer in host endianness.
*/
static inline uint32_t sys_get_le24(const uint8_t src[3])
{
return ((uint32_t)src[2] << 16) | sys_get_le16(&src[0]);
}
/**
* @brief Get a 32-bit integer stored in little-endian format.
*
* Get a 32-bit integer, stored in little-endian format in a potentially
* unaligned memory location, and convert it to the host endianness.
*
* @param src Location of the little-endian 32-bit integer to get.
*
* @return 32-bit integer in host endianness.
*/
static inline u32_t sys_get_le32(const u8_t src[4])
{
return ((u32_t)sys_get_le16(&src[2]) << 16) | sys_get_le16(&src[0]);
}
/**
* @brief Get a 64-bit integer stored in little-endian format.
*
* Get a 64-bit integer, stored in little-endian format in a potentially
* unaligned memory location, and convert it to the host endianness.
*
* @param src Location of the little-endian 64-bit integer to get.
*
* @return 64-bit integer in host endianness.
*/
static inline u64_t sys_get_le64(const u8_t src[8])
{
return ((u64_t)sys_get_le32(&src[4]) << 32) | sys_get_le32(&src[0]);
}
/**
* @brief Swap one buffer content into another
*
* Copy the content of src buffer into dst buffer in reversed order,
* i.e.: src[n] will be put in dst[end-n]
* Where n is an index and 'end' the last index in both arrays.
* The 2 memory pointers must be pointing to different areas, and have
* a minimum size of given length.
*
* @param dst A valid pointer on a memory area where to copy the data in
* @param src A valid pointer on a memory area where to copy the data from
* @param length Size of both dst and src memory areas
*/
static inline void sys_memcpy_swap(void *dst, const void *src, size_t length)
{
__ASSERT(((src < dst && (src + length) <= dst) ||
(src > dst && (dst + length) <= src)),
"Source and destination buffers must not overlap");
src += length - 1;
for (; length > 0; length--) {
*((u8_t *)dst++) = *((u8_t *)src--);
}
}
/**
* @brief Swap buffer content
*
* In-place memory swap, where final content will be reversed.
* I.e.: buf[n] will be put in buf[end-n]
* Where n is an index and 'end' the last index of buf.
*
* @param buf A valid pointer on a memory area to swap
* @param length Size of buf memory area
*/
static inline void sys_mem_swap(void *buf, size_t length)
{
size_t i;
for (i = 0; i < (length / 2); i++) {
u8_t tmp = ((u8_t *)buf)[i];
((u8_t *)buf)[i] = ((u8_t *)buf)[length - 1 - i];
((u8_t *)buf)[length - 1 - i] = tmp;
}
}
#endif /* __BYTEORDER_H__ */

View File

@@ -0,0 +1,501 @@
/*
* Copyright (c) 2013-2015 Wind River Systems, Inc.
*
* SPDX-License-Identifier: Apache-2.0
*/
/**
* @file
* @brief Doubly-linked list implementation
*
* Doubly-linked list implementation using inline macros/functions.
* This API is not thread safe, and thus if a list is used across threads,
* calls to functions must be protected with synchronization primitives.
*
* The lists are expected to be initialized such that both the head and tail
* pointers point to the list itself. Initializing the lists in such a fashion
* simplifies the adding and removing of nodes to/from the list.
*/
#ifndef _misc_dlist__h_
#define _misc_dlist__h_
#include <stddef.h>
#ifdef __cplusplus
extern "C" {
#endif
struct _dnode {
union {
struct _dnode *head; /* ptr to head of list (sys_dlist_t) */
struct _dnode *next; /* ptr to next node (sys_dnode_t) */
};
union {
struct _dnode *tail; /* ptr to tail of list (sys_dlist_t) */
struct _dnode *prev; /* ptr to previous node (sys_dnode_t) */
};
};
typedef struct _dnode sys_dlist_t;
typedef struct _dnode sys_dnode_t;
/**
* @brief Provide the primitive to iterate on a list
* Note: the loop is unsafe and thus __dn should not be removed
*
* User _MUST_ add the loop statement curly braces enclosing its own code:
*
* SYS_DLIST_FOR_EACH_NODE(l, n) {
* <user code>
* }
*
* This and other SYS_DLIST_*() macros are not thread safe.
*
* @param __dl A pointer on a sys_dlist_t to iterate on
* @param __dn A sys_dnode_t pointer to peek each node of the list
*/
#define SYS_DLIST_FOR_EACH_NODE(__dl, __dn) \
for (__dn = sys_dlist_peek_head(__dl); __dn; \
__dn = sys_dlist_peek_next(__dl, __dn))
/**
* @brief Provide the primitive to iterate on a list, from a node in the list
* Note: the loop is unsafe and thus __dn should not be removed
*
* User _MUST_ add the loop statement curly braces enclosing its own code:
*
* SYS_DLIST_ITERATE_FROM_NODE(l, n) {
* <user code>
* }
*
* Like SYS_DLIST_FOR_EACH_NODE(), but __dn already contains a node in the list
* where to start searching for the next entry from. If NULL, it starts from
* the head.
*
* This and other SYS_DLIST_*() macros are not thread safe.
*
* @param __dl A pointer on a sys_dlist_t to iterate on
* @param __dn A sys_dnode_t pointer to peek each node of the list;
* it contains the starting node, or NULL to start from the head
*/
#define SYS_DLIST_ITERATE_FROM_NODE(__dl, __dn) \
for (__dn = __dn ? sys_dlist_peek_next_no_check(__dl, __dn) : sys_dlist_peek_head(__dl); \
__dn; \
__dn = sys_dlist_peek_next(__dl, __dn))
/**
* @brief Provide the primitive to safely iterate on a list
* Note: __dn can be removed, it will not break the loop.
*
* User _MUST_ add the loop statement curly braces enclosing its own code:
*
* SYS_DLIST_FOR_EACH_NODE_SAFE(l, n, s) {
* <user code>
* }
*
* This and other SYS_DLIST_*() macros are not thread safe.
*
* @param __dl A pointer on a sys_dlist_t to iterate on
* @param __dn A sys_dnode_t pointer to peek each node of the list
* @param __dns A sys_dnode_t pointer for the loop to run safely
*/
#define SYS_DLIST_FOR_EACH_NODE_SAFE(__dl, __dn, __dns) \
for (__dn = sys_dlist_peek_head(__dl), \
__dns = sys_dlist_peek_next(__dl, __dn); \
__dn; __dn = __dns, \
__dns = sys_dlist_peek_next(__dl, __dn))
/*
* @brief Provide the primitive to resolve the container of a list node
* Note: it is safe to use with NULL pointer nodes
*
* @param __dn A pointer on a sys_dnode_t to get its container
* @param __cn Container struct type pointer
* @param __n The field name of sys_dnode_t within the container struct
*/
#define SYS_DLIST_CONTAINER(__dn, __cn, __n) \
(__dn ? CONTAINER_OF(__dn, __typeof__(*__cn), __n) : NULL)
/*
* @brief Provide the primitive to peek container of the list head
*
* @param __dl A pointer on a sys_dlist_t to peek
* @param __cn Container struct type pointer
* @param __n The field name of sys_dnode_t within the container struct
*/
#define SYS_DLIST_PEEK_HEAD_CONTAINER(__dl, __cn, __n) \
SYS_DLIST_CONTAINER(sys_dlist_peek_head(__dl), __cn, __n)
/*
* @brief Provide the primitive to peek the next container
*
* @param __dl A pointer on a sys_dlist_t to peek
* @param __cn Container struct type pointer
* @param __n The field name of sys_dnode_t within the container struct
*/
#define SYS_DLIST_PEEK_NEXT_CONTAINER(__dl, __cn, __n) \
((__cn) ? SYS_DLIST_CONTAINER(sys_dlist_peek_next(__dl, &(__cn->__n)), \
__cn, __n) : \
NULL)
/**
* @brief Provide the primitive to iterate on a list under a container
* Note: the loop is unsafe and thus __cn should not be detached
*
* User _MUST_ add the loop statement curly braces enclosing its own code:
*
* SYS_DLIST_FOR_EACH_CONTAINER(l, c, n) {
* <user code>
* }
*
* @param __dl A pointer on a sys_dlist_t to iterate on
* @param __cn A pointer to peek each entry of the list
* @param __n The field name of sys_dnode_t within the container struct
*/
#define SYS_DLIST_FOR_EACH_CONTAINER(__dl, __cn, __n) \
for (__cn = SYS_DLIST_PEEK_HEAD_CONTAINER(__dl, __cn, __n); __cn; \
__cn = SYS_DLIST_PEEK_NEXT_CONTAINER(__dl, __cn, __n))
/**
* @brief Provide the primitive to safely iterate on a list under a container
* Note: __cn can be detached, it will not break the loop.
*
* User _MUST_ add the loop statement curly braces enclosing its own code:
*
* SYS_DLIST_FOR_EACH_CONTAINER_SAFE(l, c, cn, n) {
* <user code>
* }
*
* @param __dl A pointer on a sys_dlist_t to iterate on
* @param __cn A pointer to peek each entry of the list
* @param __cns A pointer for the loop to run safely
* @param __n The field name of sys_dnode_t within the container struct
*/
#define SYS_DLIST_FOR_EACH_CONTAINER_SAFE(__dl, __cn, __cns, __n) \
for (__cn = SYS_DLIST_PEEK_HEAD_CONTAINER(__dl, __cn, __n), \
__cns = SYS_DLIST_PEEK_NEXT_CONTAINER(__dl, __cn, __n); \
__cn; \
__cn = __cns, \
__cns = SYS_DLIST_PEEK_NEXT_CONTAINER(__dl, __cn, __n))
/**
* @brief initialize list
*
* @param list the doubly-linked list
*
* @return N/A
*/
static inline void sys_dlist_init(sys_dlist_t *list)
{
list->head = (sys_dnode_t *)list;
list->tail = (sys_dnode_t *)list;
}
#define SYS_DLIST_STATIC_INIT(ptr_to_list) \
{ \
{ (ptr_to_list) }, \
{ \
(ptr_to_list) \
} \
}
/**
* @brief check if a node is the list's head
*
* @param list the doubly-linked list to operate on
* @param node the node to check
*
* @return 1 if node is the head, 0 otherwise
*/
static inline int sys_dlist_is_head(sys_dlist_t *list, sys_dnode_t *node)
{
return list->head == node;
}
/**
* @brief check if a node is the list's tail
*
* @param list the doubly-linked list to operate on
* @param node the node to check
*
* @return 1 if node is the tail, 0 otherwise
*/
static inline int sys_dlist_is_tail(sys_dlist_t *list, sys_dnode_t *node)
{
return list->tail == node;
}
/**
* @brief check if the list is empty
*
* @param list the doubly-linked list to operate on
*
* @return 1 if empty, 0 otherwise
*/
static inline int sys_dlist_is_empty(sys_dlist_t *list)
{
return list->head == list;
}
/**
* @brief check if more than one node present
*
* This and other sys_dlist_*() functions are not thread safe.
*
* @param list the doubly-linked list to operate on
*
* @return 1 if multiple nodes, 0 otherwise
*/
static inline int sys_dlist_has_multiple_nodes(sys_dlist_t *list)
{
return list->head != list->tail;
}
/**
* @brief get a reference to the head item in the list
*
* @param list the doubly-linked list to operate on
*
* @return a pointer to the head element, NULL if list is empty
*/
static inline sys_dnode_t *sys_dlist_peek_head(sys_dlist_t *list)
{
return sys_dlist_is_empty(list) ? NULL : list->head;
}
/**
* @brief get a reference to the head item in the list
*
* The list must be known to be non-empty.
*
* @param list the doubly-linked list to operate on
*
* @return a pointer to the head element
*/
static inline sys_dnode_t *sys_dlist_peek_head_not_empty(sys_dlist_t *list)
{
return list->head;
}
/**
* @brief get a reference to the next item in the list, node is not NULL
*
* Faster than sys_dlist_peek_next() if node is known not to be NULL.
*
* @param list the doubly-linked list to operate on
* @param node the node from which to get the next element in the list
*
* @return a pointer to the next element from a node, NULL if node is the tail
*/
static inline sys_dnode_t *sys_dlist_peek_next_no_check(sys_dlist_t *list,
sys_dnode_t *node)
{
return (node == list->tail) ? NULL : node->next;
}
/**
* @brief get a reference to the next item in the list
*
* @param list the doubly-linked list to operate on
* @param node the node from which to get the next element in the list
*
* @return a pointer to the next element from a node, NULL if node is the tail
* or NULL (when node comes from reading the head of an empty list).
*/
static inline sys_dnode_t *sys_dlist_peek_next(sys_dlist_t *list,
sys_dnode_t *node)
{
return node ? sys_dlist_peek_next_no_check(list, node) : NULL;
}
/**
* @brief get a reference to the tail item in the list
*
* @param list the doubly-linked list to operate on
*
* @return a pointer to the tail element, NULL if list is empty
*/
static inline sys_dnode_t *sys_dlist_peek_tail(sys_dlist_t *list)
{
return sys_dlist_is_empty(list) ? NULL : list->tail;
}
/**
* @brief add node to tail of list
*
* This and other sys_dlist_*() functions are not thread safe.
*
* @param list the doubly-linked list to operate on
* @param node the element to append
*
* @return N/A
*/
static inline void sys_dlist_append(sys_dlist_t *list, sys_dnode_t *node)
{
node->next = list;
node->prev = list->tail;
list->tail->next = node;
list->tail = node;
}
/**
* @brief add node to head of list
*
* This and other sys_dlist_*() functions are not thread safe.
*
* @param list the doubly-linked list to operate on
* @param node the element to append
*
* @return N/A
*/
static inline void sys_dlist_prepend(sys_dlist_t *list, sys_dnode_t *node)
{
node->next = list->head;
node->prev = list;
list->head->prev = node;
list->head = node;
}
/**
* @brief insert node after a node
*
* Insert a node after a specified node in a list.
* This and other sys_dlist_*() functions are not thread safe.
*
* @param list the doubly-linked list to operate on
* @param insert_point the insert point in the list: if NULL, insert at head
* @param node the element to append
*
* @return N/A
*/
static inline void sys_dlist_insert_after(sys_dlist_t *list,
sys_dnode_t *insert_point, sys_dnode_t *node)
{
if (!insert_point) {
sys_dlist_prepend(list, node);
} else {
node->next = insert_point->next;
node->prev = insert_point;
insert_point->next->prev = node;
insert_point->next = node;
}
}
/**
* @brief insert node before a node
*
* Insert a node before a specified node in a list.
* This and other sys_dlist_*() functions are not thread safe.
*
* @param list the doubly-linked list to operate on
* @param insert_point the insert point in the list: if NULL, insert at tail
* @param node the element to insert
*
* @return N/A
*/
static inline void sys_dlist_insert_before(sys_dlist_t *list,
sys_dnode_t *insert_point, sys_dnode_t *node)
{
if (!insert_point) {
sys_dlist_append(list, node);
} else {
node->prev = insert_point->prev;
node->next = insert_point;
insert_point->prev->next = node;
insert_point->prev = node;
}
}
/**
* @brief insert node at position
*
* Insert a node in a location depending on a external condition. The cond()
* function checks if the node is to be inserted _before_ the current node
* against which it is checked.
* This and other sys_dlist_*() functions are not thread safe.
*
* @param list the doubly-linked list to operate on
* @param node the element to insert
* @param cond a function that determines if the current node is the correct
* insert point
* @param data parameter to cond()
*
* @return N/A
*/
static inline void sys_dlist_insert_at(sys_dlist_t *list, sys_dnode_t *node,
int (*cond)(sys_dnode_t *, void *), void *data)
{
if (sys_dlist_is_empty(list)) {
sys_dlist_append(list, node);
} else {
sys_dnode_t *pos = sys_dlist_peek_head(list);
while (pos && !cond(pos, data)) {
pos = sys_dlist_peek_next(list, pos);
}
sys_dlist_insert_before(list, pos, node);
}
}
/**
* @brief remove a specific node from a list
*
* The list is implicit from the node. The node must be part of a list.
* This and other sys_dlist_*() functions are not thread safe.
*
* @param node the node to remove
*
* @return N/A
*/
static inline void sys_dlist_remove(sys_dnode_t *node)
{
node->prev->next = node->next;
node->next->prev = node->prev;
}
/**
* @brief get the first node in a list
*
* This and other sys_dlist_*() functions are not thread safe.
*
* @param list the doubly-linked list to operate on
*
* @return the first node in the list, NULL if list is empty
*/
static inline sys_dnode_t *sys_dlist_get(sys_dlist_t *list)
{
sys_dnode_t *node;
if (sys_dlist_is_empty(list)) {
return NULL;
}
node = list->head;
sys_dlist_remove(node);
return node;
}
#ifdef __cplusplus
}
#endif
#endif /* _misc_dlist__h_ */

View File

@@ -0,0 +1,28 @@
/* printk.h - low-level debug output */
/*
* Copyright (c) 2010-2012, 2014 Wind River Systems, Inc.
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef _PRINTK_H_
#define _PRINTK_H_
#include <stddef.h>
#include <stdarg.h>
#include <stdio.h>
#include <zephyr.h>
#ifdef __cplusplus
extern "C" {
#endif
#define snprintk snprintf
#define printk printf
#ifdef __cplusplus
}
#endif
#endif

View File

@@ -0,0 +1,471 @@
/*
* Copyright (c) 2016 Intel Corporation
*
* SPDX-License-Identifier: Apache-2.0
*/
/**
* @file
*
* @brief Single-linked list implementation
*
* Single-linked list implementation using inline macros/functions.
* This API is not thread safe, and thus if a list is used across threads,
* calls to functions must be protected with synchronization primitives.
*/
#ifndef __SLIST_H__
#define __SLIST_H__
#include <stddef.h>
#include <stdbool.h>
#ifdef __cplusplus
extern "C" {
#endif
struct _snode {
struct _snode *next;
};
typedef struct _snode sys_snode_t;
struct _slist {
sys_snode_t *head;
sys_snode_t *tail;
};
typedef struct _slist sys_slist_t;
/**
* @brief Provide the primitive to iterate on a list
* Note: the loop is unsafe and thus __sn should not be removed
*
* User _MUST_ add the loop statement curly braces enclosing its own code:
*
* SYS_SLIST_FOR_EACH_NODE(l, n) {
* <user code>
* }
*
* This and other SYS_SLIST_*() macros are not thread safe.
*
* @param __sl A pointer on a sys_slist_t to iterate on
* @param __sn A sys_snode_t pointer to peek each node of the list
*/
#define SYS_SLIST_FOR_EACH_NODE(__sl, __sn) \
for (__sn = sys_slist_peek_head(__sl); __sn; \
__sn = sys_slist_peek_next(__sn))
/**
* @brief Provide the primitive to iterate on a list, from a node in the list
* Note: the loop is unsafe and thus __sn should not be removed
*
* User _MUST_ add the loop statement curly braces enclosing its own code:
*
* SYS_SLIST_ITERATE_FROM_NODE(l, n) {
* <user code>
* }
*
* Like SYS_SLIST_FOR_EACH_NODE(), but __dn already contains a node in the list
* where to start searching for the next entry from. If NULL, it starts from
* the head.
*
* This and other SYS_SLIST_*() macros are not thread safe.
*
* @param __sl A pointer on a sys_slist_t to iterate on
* @param __sn A sys_snode_t pointer to peek each node of the list
* it contains the starting node, or NULL to start from the head
*/
#define SYS_SLIST_ITERATE_FROM_NODE(__sl, __sn) \
for (__sn = __sn ? sys_slist_peek_next_no_check(__sn) : sys_slist_peek_head(__sl); \
__sn; \
__sn = sys_slist_peek_next(__sn))
/**
* @brief Provide the primitive to safely iterate on a list
* Note: __sn can be removed, it will not break the loop.
*
* User _MUST_ add the loop statement curly braces enclosing its own code:
*
* SYS_SLIST_FOR_EACH_NODE_SAFE(l, n, s) {
* <user code>
* }
*
* This and other SYS_SLIST_*() macros are not thread safe.
*
* @param __sl A pointer on a sys_slist_t to iterate on
* @param __sn A sys_snode_t pointer to peek each node of the list
* @param __sns A sys_snode_t pointer for the loop to run safely
*/
#define SYS_SLIST_FOR_EACH_NODE_SAFE(__sl, __sn, __sns) \
for (__sn = sys_slist_peek_head(__sl), \
__sns = sys_slist_peek_next(__sn); \
__sn; __sn = __sns, \
__sns = sys_slist_peek_next(__sn))
/*
* @brief Provide the primitive to resolve the container of a list node
* Note: it is safe to use with NULL pointer nodes
*
* @param __ln A pointer on a sys_node_t to get its container
* @param __cn Container struct type pointer
* @param __n The field name of sys_node_t within the container struct
*/
#define SYS_SLIST_CONTAINER(__ln, __cn, __n) \
((__ln) ? CONTAINER_OF((__ln), __typeof__(*(__cn)), __n) : NULL)
/*
* @brief Provide the primitive to peek container of the list head
*
* @param __sl A pointer on a sys_slist_t to peek
* @param __cn Container struct type pointer
* @param __n The field name of sys_node_t within the container struct
*/
#define SYS_SLIST_PEEK_HEAD_CONTAINER(__sl, __cn, __n) \
SYS_SLIST_CONTAINER(sys_slist_peek_head(__sl), __cn, __n)
/*
* @brief Provide the primitive to peek container of the list tail
*
* @param __sl A pointer on a sys_slist_t to peek
* @param __cn Container struct type pointer
* @param __n The field name of sys_node_t within the container struct
*/
#define SYS_SLIST_PEEK_TAIL_CONTAINER(__sl, __cn, __n) \
SYS_SLIST_CONTAINER(sys_slist_peek_tail(__sl), __cn, __n)
/*
* @brief Provide the primitive to peek the next container
*
* @param __cn Container struct type pointer
* @param __n The field name of sys_node_t within the container struct
*/
#define SYS_SLIST_PEEK_NEXT_CONTAINER(__cn, __n) \
((__cn) ? SYS_SLIST_CONTAINER(sys_slist_peek_next(&((__cn)->__n)), \
__cn, __n) : \
NULL)
/**
* @brief Provide the primitive to iterate on a list under a container
* Note: the loop is unsafe and thus __cn should not be detached
*
* User _MUST_ add the loop statement curly braces enclosing its own code:
*
* SYS_SLIST_FOR_EACH_CONTAINER(l, c, n) {
* <user code>
* }
*
* @param __sl A pointer on a sys_slist_t to iterate on
* @param __cn A pointer to peek each entry of the list
* @param __n The field name of sys_node_t within the container struct
*/
#define SYS_SLIST_FOR_EACH_CONTAINER(__sl, __cn, __n) \
for (__cn = SYS_SLIST_PEEK_HEAD_CONTAINER(__sl, __cn, __n); __cn; \
__cn = SYS_SLIST_PEEK_NEXT_CONTAINER(__cn, __n))
/**
* @brief Provide the primitive to safely iterate on a list under a container
* Note: __cn can be detached, it will not break the loop.
*
* User _MUST_ add the loop statement curly braces enclosing its own code:
*
* SYS_SLIST_FOR_EACH_NODE_SAFE(l, c, cn, n) {
* <user code>
* }
*
* @param __sl A pointer on a sys_slist_t to iterate on
* @param __cn A pointer to peek each entry of the list
* @param __cns A pointer for the loop to run safely
* @param __n The field name of sys_node_t within the container struct
*/
#define SYS_SLIST_FOR_EACH_CONTAINER_SAFE(__sl, __cn, __cns, __n) \
for (__cn = SYS_SLIST_PEEK_HEAD_CONTAINER(__sl, __cn, __n), \
__cns = SYS_SLIST_PEEK_NEXT_CONTAINER(__cn, __n); \
__cn; \
__cn = __cns, __cns = SYS_SLIST_PEEK_NEXT_CONTAINER(__cn, __n))
/**
* @brief Initialize a list
*
* @param list A pointer on the list to initialize
*/
static inline void sys_slist_init(sys_slist_t *list)
{
list->head = NULL;
list->tail = NULL;
}
#define SYS_SLIST_STATIC_INIT(ptr_to_list) \
{ \
NULL, NULL \
}
/**
* @brief Test if the given list is empty
*
* @param list A pointer on the list to test
*
* @return a boolean, true if it's empty, false otherwise
*/
static inline bool sys_slist_is_empty(sys_slist_t *list)
{
return (!list->head);
}
/**
* @brief Peek the first node from the list
*
* @param list A point on the list to peek the first node from
*
* @return A pointer on the first node of the list (or NULL if none)
*/
static inline sys_snode_t *sys_slist_peek_head(sys_slist_t *list)
{
return list->head;
}
/**
* @brief Peek the last node from the list
*
* @param list A point on the list to peek the last node from
*
* @return A pointer on the last node of the list (or NULL if none)
*/
static inline sys_snode_t *sys_slist_peek_tail(sys_slist_t *list)
{
return list->tail;
}
/**
* @brief Peek the next node from current node, node is not NULL
*
* Faster then sys_slist_peek_next() if node is known not to be NULL.
*
* @param node A pointer on the node where to peek the next node
*
* @return a pointer on the next node (or NULL if none)
*/
static inline sys_snode_t *sys_slist_peek_next_no_check(sys_snode_t *node)
{
return node->next;
}
/**
* @brief Peek the next node from current node
*
* @param node A pointer on the node where to peek the next node
*
* @return a pointer on the next node (or NULL if none)
*/
static inline sys_snode_t *sys_slist_peek_next(sys_snode_t *node)
{
return node ? sys_slist_peek_next_no_check(node) : NULL;
}
/**
* @brief Prepend a node to the given list
*
* This and other sys_slist_*() functions are not thread safe.
*
* @param list A pointer on the list to affect
* @param node A pointer on the node to prepend
*/
static inline void sys_slist_prepend(sys_slist_t *list,
sys_snode_t *node)
{
node->next = list->head;
list->head = node;
if (!list->tail) {
list->tail = list->head;
}
}
/**
* @brief Append a node to the given list
*
* This and other sys_slist_*() functions are not thread safe.
*
* @param list A pointer on the list to affect
* @param node A pointer on the node to append
*/
static inline void sys_slist_append(sys_slist_t *list,
sys_snode_t *node)
{
node->next = NULL;
if (!list->tail) {
list->tail = node;
list->head = node;
} else {
list->tail->next = node;
list->tail = node;
}
}
/**
* @brief Append a list to the given list
*
* Append a singly-linked, NULL-terminated list consisting of nodes containing
* the pointer to the next node as the first element of a node, to @a list.
* This and other sys_slist_*() functions are not thread safe.
*
* @param list A pointer on the list to affect
* @param head A pointer to the first element of the list to append
* @param tail A pointer to the last element of the list to append
*/
static inline void sys_slist_append_list(sys_slist_t *list,
void *head, void *tail)
{
if (!list->tail) {
list->head = (sys_snode_t *)head;
list->tail = (sys_snode_t *)tail;
} else {
list->tail->next = (sys_snode_t *)head;
list->tail = (sys_snode_t *)tail;
}
}
/**
* @brief merge two slists, appending the second one to the first
*
* When the operation is completed, the appending list is empty.
* This and other sys_slist_*() functions are not thread safe.
*
* @param list A pointer on the list to affect
* @param list_to_append A pointer to the list to append.
*/
static inline void sys_slist_merge_slist(sys_slist_t *list,
sys_slist_t *list_to_append)
{
sys_slist_append_list(list, list_to_append->head,
list_to_append->tail);
sys_slist_init(list_to_append);
}
/**
* @brief Insert a node to the given list
*
* This and other sys_slist_*() functions are not thread safe.
*
* @param list A pointer on the list to affect
* @param prev A pointer on the previous node
* @param node A pointer on the node to insert
*/
static inline void sys_slist_insert(sys_slist_t *list,
sys_snode_t *prev,
sys_snode_t *node)
{
if (!prev) {
sys_slist_prepend(list, node);
} else if (!prev->next) {
sys_slist_append(list, node);
} else {
node->next = prev->next;
prev->next = node;
}
}
/**
* @brief Fetch and remove the first node of the given list
*
* List must be known to be non-empty.
* This and other sys_slist_*() functions are not thread safe.
*
* @param list A pointer on the list to affect
*
* @return A pointer to the first node of the list
*/
static inline sys_snode_t *sys_slist_get_not_empty(sys_slist_t *list)
{
sys_snode_t *node = list->head;
list->head = node->next;
if (list->tail == node) {
list->tail = list->head;
}
return node;
}
/**
* @brief Fetch and remove the first node of the given list
*
* This and other sys_slist_*() functions are not thread safe.
*
* @param list A pointer on the list to affect
*
* @return A pointer to the first node of the list (or NULL if empty)
*/
static inline sys_snode_t *sys_slist_get(sys_slist_t *list)
{
return sys_slist_is_empty(list) ? NULL : sys_slist_get_not_empty(list);
}
/**
* @brief Remove a node
*
* This and other sys_slist_*() functions are not thread safe.
*
* @param list A pointer on the list to affect
* @param prev_node A pointer on the previous node
* (can be NULL, which means the node is the list's head)
* @param node A pointer on the node to remove
*/
static inline void sys_slist_remove(sys_slist_t *list,
sys_snode_t *prev_node,
sys_snode_t *node)
{
if (!prev_node) {
list->head = node->next;
/* Was node also the tail? */
if (list->tail == node) {
list->tail = list->head;
}
} else {
prev_node->next = node->next;
/* Was node the tail? */
if (list->tail == node) {
list->tail = prev_node;
}
}
node->next = NULL;
}
/**
* @brief Find and remove a node from a list
*
* This and other sys_slist_*() functions are not thread safe.
*
* @param list A pointer on the list to affect
* @param node A pointer on the node to remove from the list
*
* @return true if node was removed
*/
static inline bool sys_slist_find_and_remove(sys_slist_t *list,
sys_snode_t *node)
{
sys_snode_t *prev = NULL;
sys_snode_t *test;
SYS_SLIST_FOR_EACH_NODE(list, test)
{
if (test == node) {
sys_slist_remove(list, prev, node);
return true;
}
prev = test;
}
return false;
}
#ifdef __cplusplus
}
#endif
#endif /* __SLIST_H__ */

View File

@@ -0,0 +1,87 @@
/**
* @file stack.h
* Stack usage analysis helpers
*/
/*
* Copyright (c) 2015 Intel Corporation
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef _MISC_STACK_H_
#define _MISC_STACK_H_
#include <misc/printk.h>
#if defined(CONFIG_INIT_STACKS)
static inline size_t stack_unused_space_get(const char *stack, size_t size)
{
size_t unused = 0;
int i;
#ifdef CONFIG_STACK_SENTINEL
/* First 4 bytes of the stack buffer reserved for the sentinel
* value, it won't be 0xAAAAAAAA for thread stacks.
*/
stack += 4;
#endif
/* TODO Currently all supported platforms have stack growth down and
* there is no Kconfig option to configure it so this always build
* "else" branch. When support for platform with stack direction up
* (or configurable direction) is added this check should be confirmed
* that correct Kconfig option is used.
*/
#if defined(STACK_GROWS_UP)
for (i = size - 1; i >= 0; i--) {
if ((unsigned char)stack[i] == 0xaa) {
unused++;
} else {
break;
}
}
#else
for (i = 0; i < size; i++) {
if ((unsigned char)stack[i] == 0xaa) {
unused++;
} else {
break;
}
}
#endif
return unused;
}
#else
static inline size_t stack_unused_space_get(const char *stack, size_t size)
{
return 0;
}
#endif
#if defined(CONFIG_INIT_STACKS) && defined(CONFIG_PRINTK)
static inline void stack_analyze(const char *name, const char *stack,
unsigned int size)
{
unsigned int pcnt, unused = 0;
unused = stack_unused_space_get(stack, size);
/* Calculate the real size reserved for the stack */
pcnt = ((size - unused) * 100) / size;
printk("%s (real size %u):\tunused %u\tusage %u / %u (%u %%)\n", name,
size, unused, size - unused, size, pcnt);
}
#else
static inline void stack_analyze(const char *name, const char *stack,
unsigned int size)
{
}
#endif
#define STACK_ANALYZE(name, sym) \
stack_analyze(name, K_THREAD_STACK_BUFFER(sym), \
K_THREAD_STACK_SIZEOF(sym))
#endif /* _MISC_STACK_H_ */

View File

@@ -0,0 +1,379 @@
/*
* Copyright (c) 2011-2014, Wind River Systems, Inc.
*
* SPDX-License-Identifier: Apache-2.0
*/
/**
* @file
* @brief Misc utilities
*
* Misc utilities usable by the kernel and application code.
*/
#ifndef _UTIL__H_
#define _UTIL__H_
#ifdef __cplusplus
extern "C" {
#endif
#ifndef _ASMLANGUAGE
#include <zephyr/types.h>
#if defined(BFLB_BLE)
#include <stddef.h>
#include "utils_string.h"
#endif
/* Helper to pass a int as a pointer or vice-versa.
* Those are available for 32 bits architectures:
*/
#define POINTER_TO_UINT(x) ((u32_t)(x))
#define UINT_TO_POINTER(x) ((void *)(x))
#define POINTER_TO_INT(x) ((s32_t)(x))
#define INT_TO_POINTER(x) ((void *)(x))
/* Evaluates to 0 if cond is true-ish; compile error otherwise */
#define ZERO_OR_COMPILE_ERROR(cond) ((int)sizeof(char[1 - 2 * !(cond)]) - 1)
/* Evaluates to 0 if array is an array; compile error if not array (e.g.
* pointer)
*/
#define IS_ARRAY(array) \
ZERO_OR_COMPILE_ERROR( \
!__builtin_types_compatible_p(__typeof__(array), \
__typeof__(&(array)[0])))
/* Evaluates to number of elements in an array; compile error if not
* an array (e.g. pointer)
*/
#define ARRAY_SIZE(array) \
((unsigned long)(IS_ARRAY(array) + \
(sizeof(array) / sizeof((array)[0]))))
/* Evaluates to 1 if ptr is part of array, 0 otherwise; compile error if
* "array" argument is not an array (e.g. "ptr" and "array" mixed up)
*/
#define PART_OF_ARRAY(array, ptr) \
((ptr) && ((ptr) >= &array[0] && (ptr) < &array[ARRAY_SIZE(array)]))
#define CONTAINER_OF(ptr, type, field) \
((type *)(((char *)(ptr)) - offsetof(type, field)))
/* round "x" up/down to next multiple of "align" (which must be a power of 2) */
#define ROUND_UP(x, align) \
(((unsigned long)(x) + ((unsigned long)align - 1)) & \
~((unsigned long)align - 1))
#define ROUND_DOWN(x, align) ((unsigned long)(x) & ~((unsigned long)align - 1))
#define ceiling_fraction(numerator, divider) \
(((numerator) + ((divider)-1)) / (divider))
#ifdef INLINED
#define INLINE inline
#else
#define INLINE
#endif
#ifndef MAX
#define MAX(a, b) (((a) > (b)) ? (a) : (b))
#endif
#ifndef MIN
#define MIN(a, b) (((a) < (b)) ? (a) : (b))
#endif
void get_bytearray_from_string(char **params, uint8_t *result, int array_size);
void get_uint8_from_string(char **params, uint8_t *result);
void get_uint16_from_string(char **params, uint16_t *result);
void get_uint32_from_string(char **params, uint32_t *result);
void reverse_bytearray(uint8_t *src, uint8_t *result, int array_size);
void reverse_bytearray(uint8_t *src, uint8_t *result, int array_size);
unsigned int find_lsb_set(uint32_t data);
static inline int is_power_of_two(unsigned int x)
{
return (x != 0) && !(x & (x - 1));
}
static inline s64_t arithmetic_shift_right(s64_t value, u8_t shift)
{
s64_t sign_ext;
if (shift == 0) {
return value;
}
/* extract sign bit */
sign_ext = (value >> 63) & 1;
/* make all bits of sign_ext be the same as the value's sign bit */
sign_ext = -sign_ext;
/* shift value and fill opened bit positions with sign bit */
return (value >> shift) | (sign_ext << (64 - shift));
}
#endif /* !_ASMLANGUAGE */
/* KB, MB, GB */
#define KB(x) ((x) << 10)
#define MB(x) (KB(x) << 10)
#define GB(x) (MB(x) << 10)
/* KHZ, MHZ */
#define KHZ(x) ((x)*1000)
#define MHZ(x) (KHZ(x) * 1000)
#define BIT_MASK(n) (BIT(n) - 1)
/**
* @brief Check for macro definition in compiler-visible expressions
*
* This trick was pioneered in Linux as the config_enabled() macro.
* The madness has the effect of taking a macro value that may be
* defined to "1" (e.g. CONFIG_MYFEATURE), or may not be defined at
* all and turning it into a literal expression that can be used at
* "runtime". That is, it works similarly to
* "defined(CONFIG_MYFEATURE)" does except that it is an expansion
* that can exist in a standard expression and be seen by the compiler
* and optimizer. Thus much ifdef usage can be replaced with cleaner
* expressions like:
*
* if (IS_ENABLED(CONFIG_MYFEATURE))
* myfeature_enable();
*
* INTERNAL
* First pass just to expand any existing macros, we need the macro
* value to be e.g. a literal "1" at expansion time in the next macro,
* not "(1)", etc... Standard recursive expansion does not work.
*/
#define IS_ENABLED(config_macro) _IS_ENABLED1(config_macro)
/* Now stick on a "_XXXX" prefix, it will now be "_XXXX1" if config_macro
* is "1", or just "_XXXX" if it's undefined.
* ENABLED: _IS_ENABLED2(_XXXX1)
* DISABLED _IS_ENABLED2(_XXXX)
*/
#define _IS_ENABLED1(config_macro) _IS_ENABLED2(_XXXX##config_macro)
/* Here's the core trick, we map "_XXXX1" to "_YYYY," (i.e. a string
* with a trailing comma), so it has the effect of making this a
* two-argument tuple to the preprocessor only in the case where the
* value is defined to "1"
* ENABLED: _YYYY, <--- note comma!
* DISABLED: _XXXX
*/
#define _XXXX1 _YYYY,
/* Then we append an extra argument to fool the gcc preprocessor into
* accepting it as a varargs macro.
* arg1 arg2 arg3
* ENABLED: _IS_ENABLED3(_YYYY, 1, 0)
* DISABLED _IS_ENABLED3(_XXXX 1, 0)
*/
#define _IS_ENABLED2(one_or_two_args) _IS_ENABLED3(one_or_two_args 1, 0)
/* And our second argument is thus now cooked to be 1 in the case
* where the value is defined to 1, and 0 if not:
*/
#define _IS_ENABLED3(ignore_this, val, ...) val
/**
* Macros for doing code-generation with the preprocessor.
*
* Generally it is better to generate code with the preprocessor than
* to copy-paste code or to generate code with the build system /
* python script's etc.
*
* http://stackoverflow.com/a/12540675
*/
#define UTIL_EMPTY(...)
#define UTIL_DEFER(...) __VA_ARGS__ UTIL_EMPTY()
#define UTIL_OBSTRUCT(...) __VA_ARGS__ UTIL_DEFER(UTIL_EMPTY)()
#define UTIL_EXPAND(...) __VA_ARGS__
#define UTIL_EVAL(...) UTIL_EVAL1(UTIL_EVAL1(UTIL_EVAL1(__VA_ARGS__)))
#define UTIL_EVAL1(...) UTIL_EVAL2(UTIL_EVAL2(UTIL_EVAL2(__VA_ARGS__)))
#define UTIL_EVAL2(...) UTIL_EVAL3(UTIL_EVAL3(UTIL_EVAL3(__VA_ARGS__)))
#define UTIL_EVAL3(...) UTIL_EVAL4(UTIL_EVAL4(UTIL_EVAL4(__VA_ARGS__)))
#define UTIL_EVAL4(...) UTIL_EVAL5(UTIL_EVAL5(UTIL_EVAL5(__VA_ARGS__)))
#define UTIL_EVAL5(...) __VA_ARGS__
#define UTIL_CAT(a, ...) UTIL_PRIMITIVE_CAT(a, __VA_ARGS__)
#define UTIL_PRIMITIVE_CAT(a, ...) a##__VA_ARGS__
#define UTIL_INC(x) UTIL_PRIMITIVE_CAT(UTIL_INC_, x)
#define UTIL_INC_0 1
#define UTIL_INC_1 2
#define UTIL_INC_2 3
#define UTIL_INC_3 4
#define UTIL_INC_4 5
#define UTIL_INC_5 6
#define UTIL_INC_6 7
#define UTIL_INC_7 8
#define UTIL_INC_8 9
#define UTIL_INC_9 10
#define UTIL_INC_10 11
#define UTIL_INC_11 12
#define UTIL_INC_12 13
#define UTIL_INC_13 14
#define UTIL_INC_14 15
#define UTIL_INC_15 16
#define UTIL_INC_16 17
#define UTIL_INC_17 18
#define UTIL_INC_18 19
#define UTIL_INC_19 19
#define UTIL_DEC(x) UTIL_PRIMITIVE_CAT(UTIL_DEC_, x)
#define UTIL_DEC_0 0
#define UTIL_DEC_1 0
#define UTIL_DEC_2 1
#define UTIL_DEC_3 2
#define UTIL_DEC_4 3
#define UTIL_DEC_5 4
#define UTIL_DEC_6 5
#define UTIL_DEC_7 6
#define UTIL_DEC_8 7
#define UTIL_DEC_9 8
#define UTIL_DEC_10 9
#define UTIL_DEC_11 10
#define UTIL_DEC_12 11
#define UTIL_DEC_13 12
#define UTIL_DEC_14 13
#define UTIL_DEC_15 14
#define UTIL_DEC_16 15
#define UTIL_DEC_17 16
#define UTIL_DEC_18 17
#define UTIL_DEC_19 18
#define UTIL_CHECK_N(x, n, ...) n
#define UTIL_CHECK(...) UTIL_CHECK_N(__VA_ARGS__, 0, )
#define UTIL_NOT(x) UTIL_CHECK(UTIL_PRIMITIVE_CAT(UTIL_NOT_, x))
#define UTIL_NOT_0 ~, 1,
#define UTIL_COMPL(b) UTIL_PRIMITIVE_CAT(UTIL_COMPL_, b)
#define UTIL_COMPL_0 1
#define UTIL_COMPL_1 0
#define UTIL_BOOL(x) UTIL_COMPL(UTIL_NOT(x))
#define UTIL_IIF(c) UTIL_PRIMITIVE_CAT(UTIL_IIF_, c)
#define UTIL_IIF_0(t, ...) __VA_ARGS__
#define UTIL_IIF_1(t, ...) t
#define UTIL_IF(c) UTIL_IIF(UTIL_BOOL(c))
#define UTIL_EAT(...)
#define UTIL_EXPAND(...) __VA_ARGS__
#define UTIL_WHEN(c) UTIL_IF(c) \
(UTIL_EXPAND, UTIL_EAT)
#define UTIL_REPEAT(count, macro, ...) \
UTIL_WHEN(count) \
( \
UTIL_OBSTRUCT(UTIL_REPEAT_INDIRECT)()( \
UTIL_DEC(count), macro, __VA_ARGS__) \
UTIL_OBSTRUCT(macro)( \
UTIL_DEC(count), __VA_ARGS__))
#define UTIL_REPEAT_INDIRECT() UTIL_REPEAT
/**
* Generates a sequence of code.
* Useful for generating code like;
*
* NRF_PWM0, NRF_PWM1, NRF_PWM2,
*
* @arg LEN: The length of the sequence. Must be defined and less than
* 20.
*
* @arg F(i, F_ARG): A macro function that accepts two arguments.
* F is called repeatedly, the first argument
* is the index in the sequence, and the second argument is the third
* argument given to UTIL_LISTIFY.
*
* Example:
*
* \#define FOO(i, _) NRF_PWM ## i ,
* { UTIL_LISTIFY(PWM_COUNT, FOO) }
* // The above two lines will generate the below:
* { NRF_PWM0 , NRF_PWM1 , }
*
* @note Calling UTIL_LISTIFY with undefined arguments has undefined
* behaviour.
*/
#define UTIL_LISTIFY(LEN, F, F_ARG) UTIL_EVAL(UTIL_REPEAT(LEN, F, F_ARG))
#if defined(BFLB_BLE)
/**
* @brief Convert a single character into a hexadecimal nibble.
*
* @param[in] c The character to convert
* @param x The address of storage for the converted number.
*
* @return Zero on success or (negative) error code otherwise.
*/
int char2hex(char c, u8_t *x);
/**
* @brief Convert a single hexadecimal nibble into a character.
*
* @param[in] c The number to convert
* @param x The address of storage for the converted character.
*
* @return Zero on success or (negative) error code otherwise.
*/
int hex2char(u8_t x, char *c);
/**
* @brief Convert a binary array into string representation.
*
* @param[in] buf The binary array to convert
* @param[in] buflen The length of the binary array to convert
* @param[out] hex Address of where to store the string representation.
* @param[in] hexlen Size of the storage area for string representation.
*
* @return The length of the converted string, or 0 if an error occurred.
*/
size_t bin2hex(const u8_t *buf, size_t buflen, char *hex, size_t hexlen);
/*
* Convert hex string to byte string
* Return number of bytes written to buf, or 0 on error
* @return The length of the converted array, or 0 if an error occurred.
*/
/**
* @brief Convert a hexadecimal string into a binary array.
*
* @param[in] hex The hexadecimal string to convert
* @param[in] hexlen The length of the hexadecimal string to convert.
* @param[out] buf Address of where to store the binary data
* @param[in] buflen Size of the storage area for binary data
*
* @return The length of the binary array , or 0 if an error occurred.
*/
size_t hex2bin(const char *hex, size_t hexlen, u8_t *buf, size_t buflen);
/**
* @brief Convert a u8_t into decimal string representation.
*
* Convert a u8_t value into ASCII decimal string representation.
* The string is terminated if there is enough space in buf.
*
* @param[out] buf Address of where to store the string representation.
* @param[in] buflen Size of the storage area for string representation.
* @param[in] value The value to convert to decimal string
*
* @return The length of the converted string (excluding terminator if
* any), or 0 if an error occurred.
*/
u8_t u8_to_dec(char *buf, u8_t buflen, u8_t value);
#endif //#if defined(BFLB_BLE)
#ifdef __cplusplus
}
#endif
#endif /* _UTIL__H_ */

View File

@@ -0,0 +1,7 @@
#ifndef __UTILS_STRING_H__
#define __UTILS_STRING_H__
void get_bytearray_from_string(char **params, uint8_t *result, int array_size);
void get_uint8_from_string(char **params, uint8_t *result);
void get_uint16_from_string(char **params, uint16_t *result);
void get_uint32_from_string(char **params, uint32_t *result);
#endif

View File

@@ -0,0 +1,26 @@
/*
* Copyright (c) 2010-2014, Wind River Systems, Inc.
*
* SPDX-License-Identifier: Apache-2.0
*/
/**
* @file
* @brief Macros to abstract toolchain specific capabilities
*
* This file contains various macros to abstract compiler capabilities that
* utilize toolchain specific attributes and/or pragmas.
*/
#ifndef _TOOLCHAIN_H
#define _TOOLCHAIN_H
#if defined(__XCC__)
#include <toolchain/xcc.h>
#elif defined(__GNUC__) || (defined(_LINKER) && defined(__GCC_LINKER_CMD__))
#include <toolchain/gcc.h>
#else
#include <toolchain/other.h>
#endif
#endif /* _TOOLCHAIN_H */

View File

@@ -0,0 +1,193 @@
/*
* Copyright (c) 2010-2014 Wind River Systems, Inc.
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef ZEPHYR_INCLUDE_TOOLCHAIN_COMMON_H_
#define ZEPHYR_INCLUDE_TOOLCHAIN_COMMON_H_
/**
* @file
* @brief Common toolchain abstraction
*
* Macros to abstract compiler capabilities (common to all toolchains).
*/
/* Abstract use of extern keyword for compatibility between C and C++ */
#ifdef __cplusplus
#define EXTERN_C extern "C"
#else
#define EXTERN_C extern
#endif
/* Use TASK_ENTRY_CPP to tag task entry points defined in C++ files. */
#ifdef __cplusplus
#define TASK_ENTRY_CPP extern "C"
#endif
/*
* Generate a reference to an external symbol.
* The reference indicates to the linker that the symbol is required
* by the module containing the reference and should be included
* in the image if the module is in the image.
*
* The assembler directive ".set" is used to define a local symbol.
* No memory is allocated, and the local symbol does not appear in
* the symbol table.
*/
#ifdef _ASMLANGUAGE
#define REQUIRES(sym) .set sym##_Requires, sym
#else
#define REQUIRES(sym) __asm__(".set " #sym "_Requires, " #sym "\n\t");
#endif
#ifdef _ASMLANGUAGE
#define SECTION .section
#endif
#define CONFIG_RISCV 1
/*
* If the project is being built for speed (i.e. not for minimum size) then
* align functions and branches in executable sections to improve performance.
*/
#ifdef _ASMLANGUAGE
#if defined(CONFIG_X86)
#ifdef PERF_OPT
#define PERFOPT_ALIGN .balign 16
#else
#define PERFOPT_ALIGN .balign 1
#endif
#elif defined(CONFIG_ARM)
#define PERFOPT_ALIGN .balign 4
#elif defined(CONFIG_ARC)
#define PERFOPT_ALIGN .balign 4
#elif defined(CONFIG_NIOS2) || defined(CONFIG_RISCV) || \
defined(CONFIG_XTENSA)
#define PERFOPT_ALIGN .balign 4
#elif defined(CONFIG_ARCH_POSIX)
#else
#error Architecture unsupported
#endif
#define GC_SECTION(sym) SECTION.text.##sym, "ax"
#endif /* _ASMLANGUAGE */
/* force inlining a function */
#if !defined(_ASMLANGUAGE)
#ifdef CONFIG_COVERAGE
/*
* The always_inline attribute forces a function to be inlined,
* even ignoring -fno-inline. So for code coverage, do not
* force inlining of these functions to keep their bodies around
* so their number of executions can be counted.
*
* Note that "inline" is kept here for kobject_hash.c and
* priv_stacks_hash.c. These are built without compiler flags
* used for coverage. ALWAYS_INLINE cannot be empty as compiler
* would complain about unused functions. Attaching unused
* attribute would result in their text sections ballon more than
* 10 times in size, as those functions are kept in text section.
* So just keep "inline" here.
*/
#define ALWAYS_INLINE inline
#else
#define ALWAYS_INLINE inline __attribute__((always_inline))
#endif
#endif
#define Z_STRINGIFY(x) #x
#define STRINGIFY(s) Z_STRINGIFY(s)
/* concatenate the values of the arguments into one */
#define _DO_CONCAT(x, y) x##y
#define _CONCAT(x, y) _DO_CONCAT(x, y)
/* Additionally used as a sentinel by gen_syscalls.py to identify what
* functions are system calls
*
* Note POSIX unit tests don't still generate the system call stubs, so
* until https://github.com/zephyrproject-rtos/zephyr/issues/5006 is
* fixed via possibly #4174, we introduce this hack -- which will
* disallow us to test system calls in POSIX unit testing (currently
* not used).
*/
#ifndef ZTEST_UNITTEST
#define __syscall static inline
#else
#define __syscall
#endif /* #ifndef ZTEST_UNITTEST */
#ifndef BUILD_ASSERT
/* compile-time assertion that makes the build fail */
#define BUILD_ASSERT(EXPR) \
enum _CONCAT(__build_assert_enum, __COUNTER__) { \
_CONCAT(__build_assert, __COUNTER__) = 1 / !!(EXPR) \
}
#endif
#ifndef BUILD_ASSERT_MSG
/* build assertion with message -- common implementation swallows message. */
#define BUILD_ASSERT_MSG(EXPR, MSG) BUILD_ASSERT(EXPR)
#endif
/*
* This is meant to be used in conjunction with __in_section() and similar
* where scattered structure instances are concatened together by the linker
* and walked by the code at run time just like a contiguous array of such
* structures.
*
* Assemblers and linkers may insert alignment padding by default whose
* size is larger than the natural alignment for those structures when
* gathering various section segments together, messing up the array walk.
* To prevent this, we need to provide an explicit alignment not to rely
* on the default that might just work by luck.
*
* Alignment statements in linker scripts are not sufficient as
* the assembler may add padding by itself to each segment when switching
* between sections within the same file even if it merges many such segments
* into a single section in the end.
*/
#define Z_DECL_ALIGN(type) __aligned(__alignof(type)) type
/*
* Convenience helper combining __in_section() and Z_DECL_ALIGN().
* The section name is the struct type prepended with an underscore.
* The subsection is "static" and the subsubsection is the variable name.
*/
#define Z_STRUCT_SECTION_ITERABLE(struct_type, name) \
Z_DECL_ALIGN(struct struct_type) \
name \
__in_section(_##struct_type, static, name) __used
/*
* Itterator for structure instances gathered by Z_STRUCT_SECTION_ITERABLE().
* The linker must provide a _<struct_type>_list_start symbol and a
* _<struct_type>_list_end symbol to mark the start and the end of the
* list of struct objects to iterate over.
*/
#define Z_STRUCT_SECTION_FOREACH(struct_type, iterator) \
extern struct struct_type _CONCAT(_##struct_type, _list_start)[]; \
extern struct struct_type _CONCAT(_##struct_type, _list_end)[]; \
for (struct struct_type *iterator = \
_CONCAT(_##struct_type, _list_start); \
({ __ASSERT(iterator <= _CONCAT(_##struct_type, _list_end), \
"unexpected list end location"); \
iterator < _CONCAT(_##struct_type, _list_end); }); \
iterator++)
#endif /* ZEPHYR_INCLUDE_TOOLCHAIN_COMMON_H_ */

View File

@@ -0,0 +1,473 @@
/*
* Copyright (c) 2010-2014,2017 Wind River Systems, Inc.
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef ZEPHYR_INCLUDE_TOOLCHAIN_GCC_H_
#define ZEPHYR_INCLUDE_TOOLCHAIN_GCC_H_
/**
* @file
* @brief GCC toolchain abstraction
*
* Macros to abstract compiler capabilities for GCC toolchain.
*/
/*
* Older versions of GCC do not define __BYTE_ORDER__, so it must be manually
* detected and defined using arch-specific definitions.
*/
#ifndef _LINKER
#ifndef __ORDER_BIG_ENDIAN__
#define __ORDER_BIG_ENDIAN__ (1)
#endif
#ifndef __ORDER_LITTLE_ENDIAN__
#define __ORDER_LITTLE_ENDIAN__ (2)
#endif
#ifndef __BYTE_ORDER__
#if defined(__BIG_ENDIAN__) || defined(__ARMEB__) || \
defined(__THUMBEB__) || defined(__AARCH64EB__) || \
defined(__MIPSEB__) || defined(__TC32EB__)
#define __BYTE_ORDER__ __ORDER_BIG_ENDIAN__
#elif defined(__LITTLE_ENDIAN__) || defined(__ARMEL__) || \
defined(__THUMBEL__) || defined(__AARCH64EL__) || \
defined(__MIPSEL__) || defined(__TC32EL__)
#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__
#else
#error "__BYTE_ORDER__ is not defined and cannot be automatically resolved"
#endif
#endif
/* C++11 has static_assert built in */
#ifdef __cplusplus
#define BUILD_ASSERT(EXPR) static_assert(EXPR, "")
#define BUILD_ASSERT_MSG(EXPR, MSG) static_assert(EXPR, MSG)
/*
* GCC 4.6 and higher have the C11 _Static_assert built in, and its
* output is easier to understand than the common BUILD_ASSERT macros.
*/
#elif (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) || \
(__STDC_VERSION__) >= 201100
#define BUILD_ASSERT(EXPR) _Static_assert(EXPR, "")
#define BUILD_ASSERT_MSG(EXPR, MSG) _Static_assert(EXPR, MSG)
#endif
#include <toolchain/common.h>
#include <stdbool.h>
#define ALIAS_OF(of) __attribute__((alias(#of)))
#define FUNC_ALIAS(real_func, new_alias, return_type) \
return_type new_alias() ALIAS_OF(real_func)
#if defined(CONFIG_ARCH_POSIX)
#include <arch/posix/posix_trace.h>
/*let's not segfault if this were to happen for some reason*/
#define CODE_UNREACHABLE \
{ \
posix_print_error_and_exit("CODE_UNREACHABLE reached from %s:%d\n", \
__FILE__, __LINE__); \
__builtin_unreachable(); \
}
#else
#define CODE_UNREACHABLE __builtin_unreachable()
#endif
#define FUNC_NORETURN __attribute__((__noreturn__))
/* The GNU assembler for Cortex-M3 uses # for immediate values, not
* comments, so the @nobits# trick does not work.
*/
#if defined(CONFIG_ARM)
#define _NODATA_SECTION(segment) __attribute__((section(#segment)))
#else
#define _NODATA_SECTION(segment) \
__attribute__((section(#segment ",\"wa\",@nobits#")))
#endif
/* Unaligned access */
#define UNALIGNED_GET(p) \
__extension__({ \
struct __attribute__((__packed__)) { \
__typeof__(*(p)) __v; \
} *__p = (__typeof__(__p))(p); \
__p->__v; \
})
#if __GNUC__ >= 7 && defined(CONFIG_ARM)
/* Version of UNALIGNED_PUT() which issues a compiler_barrier() after
* the store. It is required to workaround an apparent optimization
* bug in GCC for ARM Cortex-M3 and higher targets, when multiple
* byte, half-word and word stores (strb, strh, str instructions),
* which support unaligned access, can be coalesced into store double
* (strd) instruction, which doesn't support unaligned access (the
* compilers in question do this optimization ignoring __packed__
* attribute).
*/
#define UNALIGNED_PUT(v, p) \
do { \
struct __attribute__((__packed__)) { \
__typeof__(*p) __v; \
} *__p = (__typeof__(__p))(p); \
__p->__v = (v); \
compiler_barrier(); \
} while (false)
#else
#define UNALIGNED_PUT(v, p) \
do { \
struct __attribute__((__packed__)) { \
__typeof__(*p) __v; \
} *__p = (__typeof__(__p))(p); \
__p->__v = (v); \
} while (false)
#endif
/* Double indirection to ensure section names are expanded before
* stringification
*/
#define __GENERIC_SECTION(segment) __attribute__((section(STRINGIFY(segment))))
#define Z_GENERIC_SECTION(segment) __GENERIC_SECTION(segment)
#define ___in_section(a, b, c) \
__attribute__((section("." Z_STRINGIFY(a) "." Z_STRINGIFY(b) "." Z_STRINGIFY(c))))
#define __in_section(a, b, c) ___in_section(a, b, c)
#define __in_section_unique(seg) ___in_section(seg, __FILE__, __COUNTER__)
/* When using XIP, using '__ramfunc' places a function into RAM instead
* of FLASH. Make sure '__ramfunc' is defined only when
* CONFIG_ARCH_HAS_RAMFUNC_SUPPORT is defined, so that the compiler can
* report an error if '__ramfunc' is used but the architecture does not
* support it.
*/
#if !defined(CONFIG_XIP)
#define __ramfunc
#elif defined(CONFIG_ARCH_HAS_RAMFUNC_SUPPORT)
#define __ramfunc __attribute__((noinline)) \
__attribute__((long_call, section(".ramfunc")))
#endif /* !CONFIG_XIP */
#ifndef __packed
#define __packed __attribute__((__packed__))
#endif
#ifndef __aligned
#define __aligned(x) __attribute__((__aligned__(x)))
#endif
#define __may_alias __attribute__((__may_alias__))
#ifndef __printf_like
#define __printf_like(f, a) __attribute__((format(printf, f, a)))
#endif
#define __used __attribute__((__used__))
#ifndef __deprecated
#define __deprecated __attribute__((deprecated))
#endif
#define ARG_UNUSED(x) (void)(x)
#ifndef likely
#define likely(x) __builtin_expect((bool)!!(x), true)
#endif
#ifndef unlikely
#define unlikely(x) __builtin_expect((bool)!!(x), false)
#endif
#define popcount(x) __builtin_popcount(x)
#ifndef __weak
#define __weak __attribute__((__weak__))
#endif
#define __unused __attribute__((__unused__))
/* Builtins with availability that depend on the compiler version. */
#if __GNUC__ >= 5
#define HAS_BUILTIN___builtin_add_overflow 1
#define HAS_BUILTIN___builtin_sub_overflow 1
#define HAS_BUILTIN___builtin_mul_overflow 1
#define HAS_BUILTIN___builtin_div_overflow 1
#endif
#if __GNUC__ >= 4
#define HAS_BUILTIN___builtin_clz 1
#define HAS_BUILTIN___builtin_clzl 1
#define HAS_BUILTIN___builtin_clzll 1
#define HAS_BUILTIN___builtin_ctz 1
#define HAS_BUILTIN___builtin_ctzl 1
#define HAS_BUILTIN___builtin_ctzll 1
#endif
/* Be *very* careful with this, you cannot filter out with -wno-deprecated,
* which has implications for -Werror
*/
#define __DEPRECATED_MACRO _Pragma("GCC warning \"Macro is deprecated\"")
/* These macros allow having ARM asm functions callable from thumb */
#if defined(_ASMLANGUAGE)
#ifdef CONFIG_ARM
#if defined(CONFIG_ISA_THUMB2)
#define FUNC_CODE() .thumb;
#define FUNC_INSTR(a)
#elif defined(CONFIG_ISA_ARM)
#define FUNC_CODE() .code 32
#define FUNC_INSTR(a)
#else
#error unknown instruction set
#endif /* ISA */
#else
#define FUNC_CODE()
#define FUNC_INSTR(a)
#endif /* !CONFIG_ARM */
#endif /* _ASMLANGUAGE */
/*
* These macros are used to declare assembly language symbols that need
* to be typed properly(func or data) to be visible to the OMF tool.
* So that the build tool could mark them as an entry point to be linked
* correctly. This is an elfism. Use #if 0 for a.out.
*/
#if defined(_ASMLANGUAGE)
#if defined(CONFIG_ARM) || defined(CONFIG_NIOS2) || defined(CONFIG_RISCV) || defined(CONFIG_XTENSA)
#define GTEXT(sym) \
.global sym; \
.type sym, % function
#define GDATA(sym) \
.global sym; \
.type sym, % object
#define WTEXT(sym) \
.weak sym; \
.type sym, % function
#define WDATA(sym) \
.weak sym; \
.type sym, % object
#elif defined(CONFIG_ARC)
/*
* Need to use assembly macros because ';' is interpreted as the start of
* a single line comment in the ARC assembler.
*/
.macro glbl_text symbol
.globl \symbol
.type \symbol,
% function
.endm
.macro glbl_data symbol
.globl \symbol
.type \symbol,
% object
.endm
.macro weak_data symbol
.weak \symbol
.type \symbol,
% object
.endm
#define GTEXT(sym) glbl_text sym
#define GDATA(sym) glbl_data sym
#define WDATA(sym) weak_data sym
#else /* !CONFIG_ARM && !CONFIG_ARC */
#define GTEXT(sym) \
.globl sym; \
.type sym, @function
#define GDATA(sym) \
.globl sym; \
.type sym, @object
#endif
/*
* These macros specify the section in which a given function or variable
* resides.
*
* - SECTION_FUNC allows only one function to reside in a sub-section
* - SECTION_SUBSEC_FUNC allows multiple functions to reside in a sub-section
* This ensures that garbage collection only discards the section
* if all functions in the sub-section are not referenced.
*/
#if defined(CONFIG_ARC)
/*
* Need to use assembly macros because ';' is interpreted as the start of
* a single line comment in the ARC assembler.
*
* Also, '\()' is needed in the .section directive of these macros for
* correct substitution of the 'section' variable.
*/
.macro section_var section, symbol.section.\section\().\symbol
\symbol :.endm
.macro section_func section,
symbol
.section.\section\()
.\symbol,
"ax" FUNC_CODE()
PERFOPT_ALIGN
\symbol : FUNC_INSTR(\symbol)
.endm
.macro section_subsec_func section,
subsection, symbol.section.\section\().\subsection, "ax" PERFOPT_ALIGN
\symbol :.endm
#define SECTION_VAR(sect, sym) section_var sect, sym
#define SECTION_FUNC(sect, sym) section_func sect, sym
#define SECTION_SUBSEC_FUNC(sect, subsec, sym) \
section_subsec_func sect, subsec, sym
#else /* !CONFIG_ARC */
#define SECTION_VAR(sect, sym) \
.section.sect.##sym; \
sym:
#define SECTION_FUNC(sect, sym) \
.section.sect.sym, "ax"; \
FUNC_CODE() \
PERFOPT_ALIGN; \
sym: \
FUNC_INSTR(sym)
#define SECTION_SUBSEC_FUNC(sect, subsec, sym) \
.section.sect.subsec, "ax"; \
PERFOPT_ALIGN; \
sym:
#endif /* CONFIG_ARC */
#endif /* _ASMLANGUAGE */
#if defined(CONFIG_ARM) && defined(_ASMLANGUAGE)
#if defined(CONFIG_ISA_THUMB2)
/* '.syntax unified' is a gcc-ism used in thumb-2 asm files */
#define _ASM_FILE_PROLOGUE \
.text; \
.syntax unified; \
.thumb
#else
#define _ASM_FILE_PROLOGUE \
.text; \
.code 32
#endif
#endif
/*
* These macros generate absolute symbols for GCC
*/
/* create an extern reference to the absolute symbol */
#define GEN_OFFSET_EXTERN(name) extern const char name[]
#define GEN_ABS_SYM_BEGIN(name) \
EXTERN_C void name(void); \
void name(void) \
{
#define GEN_ABS_SYM_END }
#if defined(CONFIG_ARM)
/*
* GNU/ARM backend does not have a proper operand modifier which does not
* produces prefix # followed by value, such as %0 for PowerPC, Intel, and
* MIPS. The workaround performed here is using %B0 which converts
* the value to ~(value). Thus "n"(~(value)) is set in operand constraint
* to output (value) in the ARM specific GEN_OFFSET macro.
*/
#define GEN_ABSOLUTE_SYM(name, value) \
__asm__(".globl\t" #name "\n\t.equ\t" #name \
",%B0" \
"\n\t.type\t" #name ",%%object" \
: \
: "n"(~(value)))
#elif defined(CONFIG_X86) || defined(CONFIG_ARC)
#define GEN_ABSOLUTE_SYM(name, value) \
__asm__(".globl\t" #name "\n\t.equ\t" #name \
",%c0" \
"\n\t.type\t" #name ",@object" \
: \
: "n"(value))
#elif defined(CONFIG_NIOS2) || defined(CONFIG_RISCV) || defined(CONFIG_XTENSA)
/* No special prefixes necessary for constants in this arch AFAICT */
#define GEN_ABSOLUTE_SYM(name, value) \
__asm__(".globl\t" #name "\n\t.equ\t" #name \
",%0" \
"\n\t.type\t" #name ",%%object" \
: \
: "n"(value))
#elif defined(CONFIG_ARCH_POSIX)
#define GEN_ABSOLUTE_SYM(name, value) \
__asm__(".globl\t" #name "\n\t.equ\t" #name \
",%c0" \
"\n\t.type\t" #name ",@object" \
: \
: "n"(value))
#else
#error processor architecture not supported
#endif
#define compiler_barrier() \
do { \
__asm__ __volatile__("" :: \
: "memory"); \
} while (false)
/** @brief Return larger value of two provided expressions.
*
* Macro ensures that expressions are evaluated only once.
*
* @note Macro has limited usage compared to the standard macro as it cannot be
* used:
* - to generate constant integer, e.g. __aligned(Z_MAX(4,5))
* - static variable, e.g. array like static u8_t array[Z_MAX(...)];
*/
#define Z_MAX(a, b) ({ \
/* random suffix to avoid naming conflict */ \
__typeof__(a) _value_a_ = (a); \
__typeof__(b) _value_b_ = (b); \
_value_a_ > _value_b_ ? _value_a_ : _value_b_; \
})
/** @brief Return smaller value of two provided expressions.
*
* Macro ensures that expressions are evaluated only once. See @ref Z_MAX for
* macro limitations.
*/
#define Z_MIN(a, b) ({ \
/* random suffix to avoid naming conflict */ \
__typeof__(a) _value_a_ = (a); \
__typeof__(b) _value_b_ = (b); \
_value_a_ < _value_b_ ? _value_a_ : _value_b_; \
})
#endif /* !_LINKER */
#endif /* ZEPHYR_INCLUDE_TOOLCHAIN_GCC_H_ */

View File

@@ -0,0 +1,51 @@
/*
* Copyright (c) 2017 Intel Corporation
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef ZEPHYR_INCLUDE_TOOLCHAIN_XCC_H_
#define ZEPHYR_INCLUDE_TOOLCHAIN_XCC_H_
/* toolchain/gcc.h errors out if __BYTE_ORDER__ cannot be determined
* there. However, __BYTE_ORDER__ is actually being defined later in
* this file. So define __BYTE_ORDER__ to skip the check in gcc.h
* and undefine after including gcc.h.
*/
#define __BYTE_ORDER__
#include <toolchain/gcc.h>
#undef __BYTE_ORDER__
#include <stdbool.h>
/* XCC doesn't support __COUNTER__ but this should be good enough */
#define __COUNTER__ __LINE__
#undef __in_section_unique
#define __in_section_unique(seg) \
__attribute__((section("." STRINGIFY(seg) "." STRINGIFY(__COUNTER__))))
#ifndef __GCC_LINKER_CMD__
#include <xtensa/config/core.h>
/*
* XCC does not define the following macros with the expected names, but the
* HAL defines similar ones. Thus we include it and define the missing macros
* ourselves.
*/
#if XCHAL_MEMORY_ORDER == XTHAL_BIGENDIAN
#define __BYTE_ORDER__ __ORDER_BIG_ENDIAN__
#elif XCHAL_MEMORY_ORDER == XTHAL_LITTLEENDIAN
#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__
#else
#error "Cannot determine __BYTE_ORDER__"
#endif
#endif /* __GCC_LINKER_CMD__ */
#define __builtin_unreachable() \
do { \
__ASSERT(false, "Unreachable code"); \
} while (true)
#endif

View File

@@ -0,0 +1,60 @@
#ifndef WORK_Q_H
#define WORK_Q_H
#include "atomic.h"
#include "zephyr.h"
#if defined(BFLB_BLE)
struct k_work_q {
struct k_fifo fifo;
};
typedef struct {
bl_timer_t timer;
struct k_delayed_work *delay_work;
} timer_rec_d;
int k_work_q_start();
enum {
K_WORK_STATE_PENDING,
K_WORK_STATE_PERIODIC,
};
struct k_work;
/* work define*/
typedef void (*k_work_handler_t)(struct k_work *work);
struct k_work {
void *_reserved;
k_work_handler_t handler;
atomic_t flags[1];
};
#define _K_WORK_INITIALIZER(work_handler) \
{ \
._reserved = NULL, \
.handler = work_handler, \
.flags = { 0 } \
}
#define K_WORK_INITIALIZER __DEPRECATED_MACRO _K_WORK_INITIALIZER
int k_work_init(struct k_work *work, k_work_handler_t handler);
void k_work_submit(struct k_work *work);
/*delay work define*/
struct k_delayed_work {
struct k_work work;
struct k_work_q *work_q;
k_timer_t timer;
};
void k_delayed_work_init(struct k_delayed_work *work, k_work_handler_t handler);
int k_delayed_work_submit(struct k_delayed_work *work, uint32_t delay);
/* Added by bouffalolab */
int k_delayed_work_submit_periodic(struct k_delayed_work *work, s32_t period);
int k_delayed_work_cancel(struct k_delayed_work *work);
s32_t k_delayed_work_remaining_get(struct k_delayed_work *work);
void k_delayed_work_del_timer(struct k_delayed_work *work);
/* Added by bouffalolab */
int k_delayed_work_free(struct k_delayed_work *work);
#endif
#endif /* WORK_Q_H */

View File

@@ -0,0 +1,30 @@
/*
* Copyright (c) 2017 Linaro Limited
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef __Z_TYPES_H__
#define __Z_TYPES_H__
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef signed char s8_t;
typedef signed short s16_t;
typedef signed int s32_t;
typedef signed long long s64_t;
typedef unsigned char u8_t;
typedef unsigned short u16_t;
typedef unsigned int u32_t;
typedef unsigned long long u64_t;
#ifdef __cplusplus
}
#endif
#endif /* __Z_TYPES_H__ */

View File

@@ -0,0 +1,61 @@
/* log.c - logging helpers */
/*
* Copyright (c) 2017 Nordic Semiconductor ASA
* Copyright (c) 2016 Intel Corporation
*
* SPDX-License-Identifier: Apache-2.0
*/
/* Helper for printk parameters to convert from binary to hex.
* We declare multiple buffers so the helper can be used multiple times
* in a single printk call.
*/
#include <stddef.h>
#include <zephyr/types.h>
#include <zephyr.h>
#include <misc/util.h>
#include <bluetooth.h>
#include <hci_host.h>
const char *bt_hex_real(const void *buf, size_t len)
{
static const char hex[] = "0123456789abcdef";
#if defined(CONFIG_BT_DEBUG_MONITOR)
static char str[255];
#else
static char str[128];
#endif
const u8_t *b = buf;
int i;
len = MIN(len, (sizeof(str) - 1) / 2);
for (i = 0; i < len; i++) {
str[i * 2] = hex[b[i] >> 4];
str[i * 2 + 1] = hex[b[i] & 0xf];
}
str[i * 2] = '\0';
return str;
}
const char *bt_addr_str_real(const bt_addr_t *addr)
{
static char str[BT_ADDR_STR_LEN];
bt_addr_to_str(addr, str, sizeof(str));
return str;
}
const char *bt_addr_le_str_real(const bt_addr_le_t *addr)
{
static char str[BT_ADDR_LE_STR_LEN];
bt_addr_le_to_str(addr, str, sizeof(str));
return str;
}

View File

@@ -0,0 +1,142 @@
/** @file
* @brief Bluetooth subsystem logging helpers.
*/
/*
* Copyright (c) 2017 Nordic Semiconductor ASA
* Copyright (c) 2015-2016 Intel Corporation
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef __BT_LOG_H
#define __BT_LOG_H
#if defined(BL_MCU_SDK)
#include "bflb_platform.h"
#endif
#include <zephyr.h>
#include <bluetooth.h>
#include <hci_host.h>
#include "FreeRTOS.h"
#include "task.h"
#include "FreeRTOSConfig.h"
#ifdef __cplusplus
extern "C" {
#endif
#if !defined(BT_DBG_ENABLED)
#define BT_DBG_ENABLED 1
#endif
#if BT_DBG_ENABLED
#define LOG_LEVEL LOG_LEVEL_DBG
#else
#define LOG_LEVEL CONFIG_BT_LOG_LEVEL
#endif
//LOG_MODULE_REGISTER(LOG_MODULE_NAME, LOG_LEVEL);
#if defined(BFLB_BLE)
#if defined(BL_MCU_SDK)
#define BT_DBG(fmt, ...) //bflb_platform_printf(fmt", %s\r\n", ##__VA_ARGS__, __func__)
#define BT_ERR(fmt, ...) bflb_platform_printf(fmt ", %s\r\n", ##__VA_ARGS__, __func__)
#else
#define BT_DBG(fmt, ...) //printf(fmt", %s\r\n", ##__VA_ARGS__, __func__)
#define BT_ERR(fmt, ...) printf(fmt ", %s\r\n", ##__VA_ARGS__, __func__)
#endif
#if defined(CONFIG_BT_STACK_PTS) || defined(CONFIG_BT_MESH_PTS)
#if defined(BL_MCU_SDK)
#define BT_PTS(fmt, ...) bflb_platform_printf(fmt "\r\n", ##__VA_ARGS__)
#else
#define BT_PTS(fmt, ...) printf(fmt "\r\n", ##__VA_ARGS__)
#endif
#endif
#if defined(BL_MCU_SDK)
#define BT_WARN(fmt, ...) bflb_platform_printf(fmt ", %s\r\n", ##__VA_ARGS__, __func__)
#define BT_INFO(fmt, ...) //bflb_platform_printf(fmt", %s\r\n", ##__VA_ARGS__, __func__)
#else
#define BT_WARN(fmt, ...) printf(fmt ", %s\r\n", ##__VA_ARGS__, __func__)
#define BT_INFO(fmt, ...) //printf(fmt", %s\r\n", ##__VA_ARGS__, __func__)
#endif
#else /*BFLB_BLE*/
#define BT_DBG(fmt, ...) LOG_DBG(fmt, ##__VA_ARGS__)
#define BT_ERR(fmt, ...) LOG_ERR(fmt, ##__VA_ARGS__)
#define BT_WARN(fmt, ...) LOG_WRN(fmt, ##__VA_ARGS__)
#define BT_INFO(fmt, ...) LOG_INF(fmt, ##__VA_ARGS__)
#if defined(CONFIG_BT_ASSERT_VERBOSE)
#define BT_ASSERT_PRINT(fmt, ...) printk(fmt, ##__VA_ARGS__)
#else
#define BT_ASSERT_PRINT(fmt, ...)
#endif /* CONFIG_BT_ASSERT_VERBOSE */
#if defined(CONFIG_BT_ASSERT_PANIC)
#define BT_ASSERT_DIE k_panic
#else
#define BT_ASSERT_DIE k_oops
#endif /* CONFIG_BT_ASSERT_PANIC */
#endif /*BFLB_BLE*/
#if defined(CONFIG_BT_ASSERT)
#if defined(BFLB_BLE)
extern void vAssertCalled(void);
#define BT_ASSERT(cond) \
if ((cond) == 0) \
vAssertCalled()
#else
#define BT_ASSERT(cond) \
if (!(cond)) { \
BT_ASSERT_PRINT("assert: '" #cond \
"' failed\n"); \
BT_ASSERT_DIE(); \
}
#endif /*BFLB_BLE*/
#else
#if defined(BFLB_BLE)
#define BT_ASSERT(cond)
#else
#define BT_ASSERT(cond) __ASSERT_NO_MSG(cond)
#endif /*BFLB_BLE*/
#endif /* CONFIG_BT_ASSERT*/
#define BT_HEXDUMP_DBG(_data, _length, _str) \
LOG_HEXDUMP_DBG((const u8_t *)_data, _length, _str)
#if defined(BFLB_BLE)
static inline char *log_strdup(const char *str)
{
return (char *)str;
}
#endif
/* NOTE: These helper functions always encodes into the same buffer storage.
* It is the responsibility of the user of this function to copy the information
* in this string if needed.
*/
const char *bt_hex_real(const void *buf, size_t len);
const char *bt_addr_str_real(const bt_addr_t *addr);
const char *bt_addr_le_str_real(const bt_addr_le_t *addr);
/* NOTE: log_strdup does not guarantee a duplication of the string.
* It is therefore still the responsibility of the user to handle the
* restrictions in the underlying function call.
*/
#define bt_hex(buf, len) log_strdup(bt_hex_real(buf, len))
#define bt_addr_str(addr) log_strdup(bt_addr_str_real(addr))
#define bt_addr_le_str(addr) log_strdup(bt_addr_le_str_real(addr))
#ifdef __cplusplus
}
#endif
#endif /* __BT_LOG_H */

View File

@@ -0,0 +1,240 @@
/*
* Copyright (c) 2017 Wind River Systems, Inc.
*
* SPDX-License-Identifier: Apache-2.0
*/
/**
* @file
*
* @brief Kernel asynchronous event polling interface.
*
* This polling mechanism allows waiting on multiple events concurrently,
* either events triggered directly, or from kernel objects or other kernel
* constructs.
*/
#include <stdio.h>
#include <zephyr.h>
#include <zephyr/types.h>
#include <misc/slist.h>
#include <misc/dlist.h>
#include <misc/__assert.h>
struct k_sem g_poll_sem;
void k_poll_event_init(struct k_poll_event *event, u32_t type,
int mode, void *obj)
{
__ASSERT(mode == K_POLL_MODE_NOTIFY_ONLY,
"only NOTIFY_ONLY mode is supported\n");
__ASSERT(type < (1 << _POLL_NUM_TYPES), "invalid type\n");
__ASSERT(obj, "must provide an object\n");
event->poller = NULL;
/* event->tag is left uninitialized: the user will set it if needed */
event->type = type;
event->state = K_POLL_STATE_NOT_READY;
event->mode = mode;
event->unused = 0;
event->obj = obj;
}
/* must be called with interrupts locked */
static inline int is_condition_met(struct k_poll_event *event, u32_t *state)
{
switch (event->type) {
case K_POLL_TYPE_SEM_AVAILABLE:
if (k_sem_count_get(event->sem) > 0) {
*state = K_POLL_STATE_SEM_AVAILABLE;
return 1;
}
break;
case K_POLL_TYPE_DATA_AVAILABLE:
if (!k_queue_is_empty(event->queue)) {
*state = K_POLL_STATE_FIFO_DATA_AVAILABLE;
return 1;
}
break;
case K_POLL_TYPE_SIGNAL:
if (event->signal->signaled) {
*state = K_POLL_STATE_SIGNALED;
return 1;
}
break;
case K_POLL_TYPE_IGNORE:
return 0;
default:
__ASSERT(0, "invalid event type (0x%x)\n", event->type);
break;
}
return 0;
}
static inline void add_event(sys_dlist_t *events, struct k_poll_event *event,
struct _poller *poller)
{
sys_dlist_append(events, &event->_node);
}
/* must be called with interrupts locked */
static inline int register_event(struct k_poll_event *event,
struct _poller *poller)
{
switch (event->type) {
case K_POLL_TYPE_SEM_AVAILABLE:
__ASSERT(event->sem, "invalid semaphore\n");
add_event(&event->sem->poll_events, event, poller);
break;
case K_POLL_TYPE_DATA_AVAILABLE:
__ASSERT(event->queue, "invalid queue\n");
add_event(&event->queue->poll_events, event, poller);
break;
case K_POLL_TYPE_SIGNAL:
__ASSERT(event->signal, "invalid poll signal\n");
add_event(&event->signal->poll_events, event, poller);
break;
case K_POLL_TYPE_IGNORE:
/* nothing to do */
break;
default:
__ASSERT(0, "invalid event type\n");
break;
}
event->poller = poller;
return 0;
}
/* must be called with interrupts locked */
static inline void clear_event_registration(struct k_poll_event *event)
{
event->poller = NULL;
switch (event->type) {
case K_POLL_TYPE_SEM_AVAILABLE:
__ASSERT(event->sem, "invalid semaphore\n");
sys_dlist_remove(&event->_node);
break;
case K_POLL_TYPE_DATA_AVAILABLE:
__ASSERT(event->queue, "invalid queue\n");
sys_dlist_remove(&event->_node);
break;
case K_POLL_TYPE_SIGNAL:
__ASSERT(event->signal, "invalid poll signal\n");
sys_dlist_remove(&event->_node);
break;
case K_POLL_TYPE_IGNORE:
/* nothing to do */
break;
default:
__ASSERT(0, "invalid event type\n");
break;
}
}
/* must be called with interrupts locked */
static inline void clear_event_registrations(struct k_poll_event *events,
int last_registered,
unsigned int key)
{
for (; last_registered >= 0; last_registered--) {
clear_event_registration(&events[last_registered]);
irq_unlock(key);
key = irq_lock();
}
}
static inline void set_event_ready(struct k_poll_event *event, u32_t state)
{
event->poller = NULL;
event->state |= state;
}
static bool polling_events(struct k_poll_event *events, int num_events,
s32_t timeout, int *last_registered)
{
int rc;
bool polling = true;
unsigned int key;
for (int ii = 0; ii < num_events; ii++) {
u32_t state;
key = irq_lock();
if (is_condition_met(&events[ii], &state)) {
set_event_ready(&events[ii], state);
polling = false;
} else if (timeout != K_NO_WAIT && polling) {
rc = register_event(&events[ii], NULL);
if (rc == 0) {
++(*last_registered);
} else {
__ASSERT(0, "unexpected return code\n");
}
}
irq_unlock(key);
}
return polling;
}
int k_poll(struct k_poll_event *events, int num_events, s32_t timeout)
{
__ASSERT(events, "NULL events\n");
__ASSERT(num_events > 0, "zero events\n");
int last_registered = -1;
unsigned int key;
bool polling = true;
/* find events whose condition is already fulfilled */
polling = polling_events(events, num_events, timeout, &last_registered);
if (polling == false) {
goto exit;
}
k_sem_take(&g_poll_sem, timeout);
last_registered = -1;
polling_events(events, num_events, timeout, &last_registered);
exit:
key = irq_lock();
clear_event_registrations(events, last_registered, key);
irq_unlock(key);
return 0;
}
/* must be called with interrupts locked */
static int _signal_poll_event(struct k_poll_event *event, u32_t state,
int *must_reschedule)
{
*must_reschedule = 0;
set_event_ready(event, state);
return 0;
}
int k_poll_signal_raise(struct k_poll_signal *signal, int result)
{
unsigned int key = irq_lock();
struct k_poll_event *poll_event;
int must_reschedule;
signal->result = result;
signal->signaled = 1;
poll_event = (struct k_poll_event *)sys_dlist_get(&signal->poll_events);
if (!poll_event) {
irq_unlock(key);
return 0;
}
int rc = _signal_poll_event(poll_event, K_POLL_STATE_SIGNALED,
&must_reschedule);
k_sem_give(&g_poll_sem);
irq_unlock(key);
return rc;
}

View File

@@ -0,0 +1,106 @@
/**
* @file rpa.c
* Resolvable Private Address Generation and Resolution
*/
/*
* Copyright (c) 2017 Nordic Semiconductor ASA
* Copyright (c) 2015-2016 Intel Corporation
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr.h>
#include <stddef.h>
#include <errno.h>
#include <string.h>
#include <FreeRTOS.h>
#include <include/atomic.h>
#include <misc/util.h>
#include <misc/byteorder.h>
#include <misc/stack.h>
#include <constants.h>
#include <aes.h>
#include <utils.h>
#include <cmac_mode.h>
#include <../include/bluetooth/crypto.h>
#define BT_DBG_ENABLED IS_ENABLED(CONFIG_BT_DEBUG_RPA)
#define LOG_MODULE_NAME bt_rpa
#include "log.h"
#if defined(CONFIG_BT_CTLR_PRIVACY) || defined(CONFIG_BT_PRIVACY) || defined(CONFIG_BT_SMP)
static int ah(const u8_t irk[16], const u8_t r[3], u8_t out[3])
{
u8_t res[16];
int err;
BT_DBG("irk %s", bt_hex(irk, 16));
BT_DBG("r %s", bt_hex(r, 3));
/* r' = padding || r */
memcpy(res, r, 3);
(void)memset(res + 3, 0, 13);
err = bt_encrypt_le(irk, res, res);
if (err) {
return err;
}
/* The output of the random address function ah is:
* ah(h, r) = e(k, r') mod 2^24
* The output of the security function e is then truncated to 24 bits
* by taking the least significant 24 bits of the output of e as the
* result of ah.
*/
memcpy(out, res, 3);
return 0;
}
#endif
#if defined(CONFIG_BT_SMP) || defined(CONFIG_BT_CTLR_PRIVACY)
bool bt_rpa_irk_matches(const u8_t irk[16], const bt_addr_t *addr)
{
u8_t hash[3];
int err;
BT_DBG("IRK %s bdaddr %s", bt_hex(irk, 16), bt_addr_str(addr));
err = ah(irk, addr->val + 3, hash);
if (err) {
return false;
}
return !memcmp(addr->val, hash, 3);
}
#endif
#if defined(CONFIG_BT_PRIVACY) || defined(CONFIG_BT_CTLR_PRIVACY)
int bt_rpa_create(const u8_t irk[16], bt_addr_t *rpa)
{
int err;
err = bt_rand(rpa->val + 3, 3);
if (err) {
return err;
}
BT_ADDR_SET_RPA(rpa);
err = ah(irk, rpa->val + 3, rpa->val);
if (err) {
return err;
}
BT_DBG("Created RPA %s", bt_addr_str((bt_addr_t *)rpa->val));
return 0;
}
#else
int bt_rpa_create(const u8_t irk[16], bt_addr_t *rpa)
{
return -ENOTSUP;
}
#endif /* CONFIG_BT_PRIVACY */

View File

@@ -0,0 +1,16 @@
/* rpa.h - Bluetooth Resolvable Private Addresses (RPA) generation and
* resolution
*/
/*
* Copyright (c) 2017 Nordic Semiconductor ASA
* Copyright (c) 2015-2016 Intel Corporation
*
* SPDX-License-Identifier: Apache-2.0
*/
#include "bluetooth.h"
#include "hci_host.h"
bool bt_rpa_irk_matches(const u8_t irk[16], const bt_addr_t *addr);
int bt_rpa_create(const u8_t irk[16], bt_addr_t *rpa);

View File

@@ -0,0 +1,116 @@
# Kconfig - Cryptography primitive options for TinyCrypt version 2.0
#
# Copyright (c) 2015 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0
#
config TINYCRYPT
bool
prompt "TinyCrypt Support"
default n
help
This option enables the TinyCrypt cryptography library.
config TINYCRYPT_CTR_PRNG
bool
prompt "PRNG in counter mode"
depends on TINYCRYPT
default n
help
This option enables support for the pseudo-random number
generator in counter mode.
config TINYCRYPT_SHA256
bool
prompt "SHA-256 Hash function support"
depends on TINYCRYPT
default n
help
This option enables support for SHA-256
hash function primitive.
config TINYCRYPT_SHA256_HMAC
bool
prompt "HMAC (via SHA256) message auth support"
depends on TINYCRYPT_SHA256
default n
help
This option enables support for HMAC using SHA-256
message authentication code.
config TINYCRYPT_SHA256_HMAC_PRNG
bool
prompt "PRNG (via HMAC-SHA256) support"
depends on TINYCRYPT_SHA256_HMAC
default n
help
This option enables support for pseudo-random number
generator.
config TINYCRYPT_ECC_DH
bool
prompt "ECC_DH anonymous key agreement protocol"
depends on TINYCRYPT
select ENTROPY_GENERATOR
default n
help
This option enables support for the Elliptic curve
Diffie-Hellman anonymous key agreement protocol.
Enabling ECC requires a cryptographically secure random number
generator.
config TINYCRYPT_ECC_DSA
bool
prompt "ECC_DSA digital signature algorithm"
depends on TINYCRYPT
select ENTROPY_GENERATOR
default n
help
This option enables support for the Elliptic Curve Digital
Signature Algorithm (ECDSA).
Enabling ECC requires a cryptographically secure random number
generator.
config TINYCRYPT_AES
bool
prompt "AES-128 decrypt/encrypt"
depends on TINYCRYPT
default n
help
This option enables support for AES-128 decrypt and encrypt.
config TINYCRYPT_AES_CBC
bool
prompt "AES-128 block cipher"
depends on TINYCRYPT_AES
default n
help
This option enables support for AES-128 block cipher mode.
config TINYCRYPT_AES_CTR
bool
prompt "AES-128 counter mode"
depends on TINYCRYPT_AES
default n
help
This option enables support for AES-128 counter mode.
config TINYCRYPT_AES_CCM
bool
prompt "AES-128 CCM mode"
depends on TINYCRYPT_AES
default n
help
This option enables support for AES-128 CCM mode.
config TINYCRYPT_AES_CMAC
bool
prompt "AES-128 CMAC mode"
depends on TINYCRYPT_AES
default n
help
This option enables support for AES-128 CMAC mode.

View File

@@ -0,0 +1,71 @@
The TinyCrypt library in Zephyr is a downstream of an externally maintained
open source project. The original upstream code can be found at:
https://github.com/01org/tinycrypt
At revision c214460d7f760e2a75908cb41000afcc0bfca282, version 0.2.7
Any changes to the local version should include Zephyr's TinyCrypt
maintainer in the review. That can be found via the git history.
The following is the license information for this code:
================================================================================
TinyCrypt Cryptographic Library
================================================================================
Copyright (c) 2017, Intel Corporation. All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
- Neither the name of the Intel Corporation nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
================================================================================
Copyright (c) 2013, Kenneth MacKay
All rights reserved.
https://github.com/kmackay/micro-ecc
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

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