Merge branch 'dev' into epr-pinecil-og
This commit is contained in:
9
.github/workflows/docs.yml
vendored
9
.github/workflows/docs.yml
vendored
@@ -28,8 +28,13 @@ jobs:
|
||||
fetch-depth: 0
|
||||
- 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'
|
||||
|
||||
- name: Publish docs
|
||||
run: mkdocs gh-deploy
|
||||
run: mkdocs gh-deploy
|
||||
|
||||
2
.github/workflows/push.yml
vendored
2
.github/workflows/push.yml
vendored
@@ -9,7 +9,7 @@ jobs:
|
||||
image: alpine:3.16
|
||||
strategy:
|
||||
matrix:
|
||||
model: ["TS100", "TS80", "TS80P", "Pinecil", "MHP30", "Pinecilv2"]
|
||||
model: ["TS100", "TS80", "TS80P", "Pinecil", "MHP30", "Pinecilv2", "S60", "TS101"]
|
||||
fail-fast: true
|
||||
|
||||
steps:
|
||||
|
||||
12
Dockerfile
12
Dockerfile
@@ -8,12 +8,20 @@ WORKDIR /build
|
||||
# Misc -> findutils make git
|
||||
# musl-dev is required for the multi lang firmwares
|
||||
# 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 black 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
|
||||
|
||||
RUN python3 -m pip install bdflib
|
||||
RUN python3 -m pip install ${PIP_PKGS}
|
||||
# Git trust
|
||||
RUN git config --global --add safe.directory /build/source
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
## 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.
|
||||
|
||||
@@ -29,7 +29,7 @@ Then this works the same as a production release (use the correct file).
|
||||
- The MCU in Pinecil V2 is Bouffalo BL706 and does _not_ use usb-dfu for flashing as the previous Pinecil V1 MCU did.
|
||||
- See the Pinecil Wiki page [here](https://wiki.pine64.org/wiki/Pinecil#Firmware_&_Updates) for instructions.
|
||||
- The V2 uses the [BLISP flasher](https://github.com/pine64/blisp) to upload the firmware to the MCU.
|
||||
- The [Pinecil Wiki] (https://wiki.pine64.org/wiki/Pinecil) is a great resource for all things Pinecil.
|
||||
- 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.
|
||||
|
||||
@@ -28,7 +28,7 @@ Note that this may be drawn mirrored depending on the orientation of your screen
|
||||
|
||||
The soldering iron symbol on the screen will appear near the tip. This is here to indicate that pressing the button closest to the front of the iron will enter soldering mode.
|
||||
|
||||
And naturally, the 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.
|
||||
|
||||
@@ -42,7 +42,7 @@ This OLED screen features burn-in protection; if no buttons or movement have bee
|
||||
|
||||
Additionally to the two icons shown, there are two "hidden" actions that can be performed on this menu.
|
||||
|
||||
If you press and hold the button near the tip (`+/A`), this enters the temperature adjustment screen. Normally this is not required; but if you would like to adjust the set temperature _before_ the tip starts to heat, this can be useful.
|
||||
On devices that do not support profile mode, if you press and hold the button near the tip (`+/A`), this enters the temperature adjustment screen. Normally this is not required; but if you would like to adjust the set temperature _before_ the tip starts to heat, this can be useful.
|
||||
|
||||
If you press and hold the button near the rear of the iron (`-/B`), it will take you into the [debug menu](https://ralim.github.io/IronOS/DebugMenu/).
|
||||
|
||||
@@ -74,6 +74,23 @@ Pinecil has an unpopulated footprint (U14) for a hall effect sensor (Si7210-B-00
|
||||
|
||||
If, after entering sleep mode, the iron still does not see movement for a much longer time (default=10 minutes); it will shut down and return to the home screen.
|
||||
|
||||
## Profile Mode (MHP30 only)
|
||||
|
||||
On devices that support it, a long press on `(+/A)` takes you into profile mode, which initiates the profile selected in the relevant settings.
|
||||
|
||||
Profile mode plays out as follows:
|
||||
|
||||
1. Check if the temperature is below 55C. If not, you will get a warning and cannot enter profile mode.
|
||||
2. Preheat by raising the target temperature to the configured preheat temperature with the configured preheat speed.
|
||||
3. Wait for the device to reach the preheat temperature.
|
||||
4. Gradually move the target temperature to the configured end temperature of the first phase over the configured duration.
|
||||
5. Wait for the device to reach the end temperature.
|
||||
6. Repeat steps 4 and 5 for the next phases until there are no more phases configured.
|
||||
7. Cool down by lowering the target temperature to 0 with the configured cooldown speed.
|
||||
8. Once the temperature is below 55C, sound the buzzer (if available) and exit profile mode.
|
||||
|
||||
You can manually exit profile mode manually in the same way as the soldering mode, by pressing and holding the rear button or pressing both buttons at once.
|
||||
|
||||
## Settings Menu
|
||||
|
||||
The settings menu is the most evolving aspect of the firmware, so each option is not documented here. However, do not panic, as every menu option has an on-screen description so you don't _need_ to come back here to figure them all out.
|
||||
|
||||
@@ -9,6 +9,12 @@ In this mode the iron works as you would expect, pressing either button will tak
|
||||
- Pressing both buttons or holding the rear button (`-/B`) will exit Soldering Mode.
|
||||
- Holding the front button (`+/A`) will enter [Boost mode](https://ralim.github.io/IronOS/Menu/#boost-mode) (if enabled).
|
||||
|
||||
## Profile mode (MHP30 only)
|
||||
|
||||
In this mode, accessible by long pressing `(+/A)`, the configured profile will be initiated.
|
||||
- You cannot adjust the temperature or enter boost mode.
|
||||
- Pressing both buttons or holding the rear button (`-/B`) will exit Profile Mode as well.
|
||||
|
||||
## Settings mode
|
||||
|
||||
This mode allows you to cycle through all the options and set custom values.
|
||||
|
||||
@@ -66,6 +66,29 @@ def read_translation(json_root: Union[str, Path], lang_code: str) -> dict:
|
||||
return lang
|
||||
|
||||
|
||||
def filter_translation(lang: dict, defs: dict, macros: frozenset):
|
||||
def check_excluded(record):
|
||||
if "include" in record and not any(m in macros for m in record["include"]):
|
||||
return True
|
||||
|
||||
if "exclude" in record and any(m in macros for m in record["exclude"]):
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
for category in ("menuOptions", "menuGroups"):
|
||||
for index, record in enumerate(defs[category]):
|
||||
if check_excluded(record):
|
||||
lang[category][record["id"]]["displayText"] = ""
|
||||
lang[category][record["id"]]["description"] = ""
|
||||
|
||||
for index, record in enumerate(defs["messagesWarn"]):
|
||||
if check_excluded(record):
|
||||
lang["messagesWarn"][record["id"]]["message"] = ""
|
||||
|
||||
return lang
|
||||
|
||||
|
||||
def validate_langcode_matches_content(filename: str, content: dict) -> None:
|
||||
# Extract lang code from file name
|
||||
lang_code = filename[12:-5].upper()
|
||||
@@ -101,6 +124,8 @@ def get_constants() -> List[Tuple[str, str]]:
|
||||
("SmallSymbolSpace", " "),
|
||||
("LargeSymbolDot", "."),
|
||||
("SmallSymbolDot", "."),
|
||||
("SmallSymbolSlash", "/"),
|
||||
("SmallSymbolColon", ":"),
|
||||
("LargeSymbolDegC", "C"),
|
||||
("SmallSymbolDegC", "C"),
|
||||
("LargeSymbolDegF", "F"),
|
||||
@@ -155,6 +180,8 @@ def get_accel_names_list() -> List[str]:
|
||||
"BMA223",
|
||||
"MSA301",
|
||||
"SC7A20",
|
||||
"GPIO",
|
||||
"LIS2 CLONE",
|
||||
]
|
||||
|
||||
|
||||
@@ -162,8 +189,8 @@ def get_power_source_list() -> List[str]:
|
||||
return [
|
||||
"DC",
|
||||
"QC",
|
||||
"PD W. VBus",
|
||||
"PD No VBus",
|
||||
"PV:PDwVBus",
|
||||
"PD:No VBus",
|
||||
]
|
||||
|
||||
|
||||
@@ -250,7 +277,6 @@ def get_letter_counts(defs: dict, lang: dict, build_version: str) -> Dict:
|
||||
# collapse all strings down into the composite letters and store totals for these
|
||||
# Doing this seperately for small and big font
|
||||
def sort_and_count(list_in: List[str]):
|
||||
|
||||
symbol_counts: dict[str, int] = {}
|
||||
for line in list_in:
|
||||
line = line.replace("\n", "").replace("\r", "")
|
||||
@@ -439,7 +465,6 @@ class FontMapsPerFont:
|
||||
def get_font_map_per_font(
|
||||
text_list_small_font: List[str], text_list_large_font: List[str]
|
||||
) -> FontMapsPerFont:
|
||||
|
||||
pending_small_symbols = set(text_list_small_font)
|
||||
pending_large_symbols = set(text_list_large_font)
|
||||
|
||||
@@ -1029,7 +1054,6 @@ def get_translation_strings_and_indices_text(
|
||||
large_font_symbol_conversion_table: Dict[str, bytes],
|
||||
suffix: str = "",
|
||||
) -> str:
|
||||
|
||||
# For all strings; we want to convert them to their byte encoded form (using font index lookups)
|
||||
# Then we want to sort by their reversed format to see if we can remove any duplicates by combining the tails (last n bytes;n>0)
|
||||
# Finally we look for any that are contained inside one another, and if they are we update them to point to this
|
||||
@@ -1118,7 +1142,6 @@ def get_translation_strings_and_indices_text(
|
||||
translation_strings_text = " /* .strings = */ {\n"
|
||||
|
||||
for i, encoded_bytes in enumerate(byte_encoded_strings):
|
||||
|
||||
if i > 0:
|
||||
translation_strings_text += ' "\\0"\n'
|
||||
|
||||
@@ -1285,6 +1308,13 @@ def parse_args() -> argparse.Namespace:
|
||||
required=False,
|
||||
dest="compress_font",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--macros",
|
||||
help="Extracted macros to filter translation strings by",
|
||||
type=argparse.FileType("r"),
|
||||
required=True,
|
||||
dest="macros",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--output", "-o", help="Target file", type=argparse.FileType("w"), required=True
|
||||
)
|
||||
@@ -1305,6 +1335,12 @@ def main() -> None:
|
||||
logging.error("error: Both --output-pickled and --input-pickled are specified")
|
||||
sys.exit(1)
|
||||
|
||||
macros = (
|
||||
frozenset(re.findall(r"#define ([^ ]+)", args.macros.read()))
|
||||
if args.macros
|
||||
else frozenset()
|
||||
)
|
||||
|
||||
language_data: LanguageData
|
||||
if args.input_pickled:
|
||||
logging.info(f"Reading pickled language data from {args.input_pickled.name}...")
|
||||
@@ -1329,11 +1365,13 @@ def main() -> None:
|
||||
|
||||
defs_ = load_json(os.path.join(json_dir, "translations_definitions.json"))
|
||||
if len(args.languageCodes) == 1:
|
||||
lang_ = read_translation(json_dir, args.languageCodes[0])
|
||||
lang_ = filter_translation(
|
||||
read_translation(json_dir, args.languageCodes[0]), defs_, macros
|
||||
)
|
||||
language_data = prepare_language(lang_, defs_, build_version)
|
||||
else:
|
||||
langs_ = [
|
||||
read_translation(json_dir, lang_code)
|
||||
filter_translation(read_translation(json_dir, lang_code), defs_, macros)
|
||||
for lang_code in args.languageCodes
|
||||
]
|
||||
language_data = prepare_languages(langs_, defs_, build_version)
|
||||
|
||||
@@ -60,8 +60,17 @@
|
||||
"OffString": {
|
||||
"message": "Выкл."
|
||||
},
|
||||
"ProfilePreheatString": {
|
||||
"message": "Preheat\n"
|
||||
},
|
||||
"ProfileCooldownString": {
|
||||
"message": "Cooldown\n"
|
||||
},
|
||||
"DeviceFailedValidationWarning": {
|
||||
"message": "Ваша прылада, хутчэй за ўсё, падробка!"
|
||||
},
|
||||
"TooHotToStartProfileWarning": {
|
||||
"message": "Too hot to\nstart profile"
|
||||
}
|
||||
},
|
||||
"characters": {
|
||||
@@ -119,6 +128,10 @@
|
||||
"displayText": "PD\nпрыпынак",
|
||||
"description": "Час чакання ўзгаднення PD з крокам 100 мс для сумяшчальнасці з некаторымі зараднымі зараднымі прыладамі QC (0: адключана)"
|
||||
},
|
||||
"PDVpdo": {
|
||||
"displayText": "PD\nVPDO",
|
||||
"description": "Уключае рэжымы PPS & EPR."
|
||||
},
|
||||
"BoostTemperature": {
|
||||
"displayText": "t° турба\nрэжыму",
|
||||
"description": "Тэмпература джала ў турба-рэжыме"
|
||||
@@ -139,6 +152,62 @@
|
||||
"displayText": "Дазволіць\nблок. кнопак",
|
||||
"description": "Пры рабоце падоўжаны націск дзьвух кнопак блакуе іх (А=Адключана | Т=Толькі турба | П=Поўная блакіроўка)"
|
||||
},
|
||||
"ProfilePhases": {
|
||||
"displayText": "Profile\nPhases",
|
||||
"description": "Number of phases in profile mode"
|
||||
},
|
||||
"ProfilePreheatTemp": {
|
||||
"displayText": "Preheat\nTemp",
|
||||
"description": "Preheat to this temperature at the start of profile mode"
|
||||
},
|
||||
"ProfilePreheatSpeed": {
|
||||
"displayText": "Preheat\nSpeed",
|
||||
"description": "Preheat at this rate (degrees per second)"
|
||||
},
|
||||
"ProfilePhase1Temp": {
|
||||
"displayText": "Phase 1\nTemp",
|
||||
"description": "Target temperature for the end of this phase"
|
||||
},
|
||||
"ProfilePhase1Duration": {
|
||||
"displayText": "Phase 1\nDuration",
|
||||
"description": "Target duration of this phase (seconds)"
|
||||
},
|
||||
"ProfilePhase2Temp": {
|
||||
"displayText": "Phase 2\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase2Duration": {
|
||||
"displayText": "Phase 2\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Temp": {
|
||||
"displayText": "Phase 3\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Duration": {
|
||||
"displayText": "Phase 3\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Temp": {
|
||||
"displayText": "Phase 4\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Duration": {
|
||||
"displayText": "Phase 4\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Temp": {
|
||||
"displayText": "Phase 5\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Duration": {
|
||||
"displayText": "Phase 5\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfileCooldownSpeed": {
|
||||
"displayText": "Cooldown\nSpeed",
|
||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
||||
},
|
||||
"MotionSensitivity": {
|
||||
"displayText": "Адчувальнасць\nакселерометра",
|
||||
"description": "Адчувальнасць акселерометра (0=Выкл. | 1=Мін. | ... | 9=Макс.)"
|
||||
@@ -207,6 +276,10 @@
|
||||
"displayText": "Падрабязны\nэкран пайкі",
|
||||
"description": "Паказваць дэталёвую інформацыю на экране пайкі"
|
||||
},
|
||||
"BluetoothLE": {
|
||||
"displayText": "Bluetooth\n",
|
||||
"description": "Enables BLE"
|
||||
},
|
||||
"PowerLimit": {
|
||||
"displayText": "Межы\nмагутнасці",
|
||||
"description": "Максімальная магутнасць, якую можа выкарыстоўваць паяльнік (Ватт)"
|
||||
@@ -238,14 +311,6 @@
|
||||
"LanguageSwitch": {
|
||||
"displayText": "Мова:\n BY Беларуская",
|
||||
"description": ""
|
||||
},
|
||||
"BLEEnabled": {
|
||||
"displayText": "BLE\n Уключаны",
|
||||
"description": ""
|
||||
},
|
||||
"PDVpdoEnabled": {
|
||||
"displayText": "PD VPDO\nУключаны",
|
||||
"description": "Уключае рэжымы PPS/EPR."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,8 +60,17 @@
|
||||
"OffString": {
|
||||
"message": "Изкл."
|
||||
},
|
||||
"ProfilePreheatString": {
|
||||
"message": "Preheat\n"
|
||||
},
|
||||
"ProfileCooldownString": {
|
||||
"message": "Cooldown\n"
|
||||
},
|
||||
"DeviceFailedValidationWarning": {
|
||||
"message": "Your device is most likely a counterfeit!"
|
||||
},
|
||||
"TooHotToStartProfileWarning": {
|
||||
"message": "Too hot to\nstart profile"
|
||||
}
|
||||
},
|
||||
"characters": {
|
||||
@@ -119,6 +128,10 @@
|
||||
"displayText": "PD\ntimeout",
|
||||
"description": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers"
|
||||
},
|
||||
"PDVpdo": {
|
||||
"displayText": "PD\nVPDO",
|
||||
"description": "Enables PPS & EPR modes"
|
||||
},
|
||||
"BoostTemperature": {
|
||||
"displayText": "Турбо\nтемп.",
|
||||
"description": "Температура за \"турбо\" режим"
|
||||
@@ -139,6 +152,62 @@
|
||||
"displayText": "Allow locking\nbuttons",
|
||||
"description": "While soldering, hold down both buttons to toggle locking them (D=disable | B=boost mode only | F=full locking)"
|
||||
},
|
||||
"ProfilePhases": {
|
||||
"displayText": "Profile\nPhases",
|
||||
"description": "Number of phases in profile mode"
|
||||
},
|
||||
"ProfilePreheatTemp": {
|
||||
"displayText": "Preheat\nTemp",
|
||||
"description": "Preheat to this temperature at the start of profile mode"
|
||||
},
|
||||
"ProfilePreheatSpeed": {
|
||||
"displayText": "Preheat\nSpeed",
|
||||
"description": "Preheat at this rate (degrees per second)"
|
||||
},
|
||||
"ProfilePhase1Temp": {
|
||||
"displayText": "Phase 1\nTemp",
|
||||
"description": "Target temperature for the end of this phase"
|
||||
},
|
||||
"ProfilePhase1Duration": {
|
||||
"displayText": "Phase 1\nDuration",
|
||||
"description": "Target duration of this phase (seconds)"
|
||||
},
|
||||
"ProfilePhase2Temp": {
|
||||
"displayText": "Phase 2\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase2Duration": {
|
||||
"displayText": "Phase 2\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Temp": {
|
||||
"displayText": "Phase 3\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Duration": {
|
||||
"displayText": "Phase 3\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Temp": {
|
||||
"displayText": "Phase 4\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Duration": {
|
||||
"displayText": "Phase 4\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Temp": {
|
||||
"displayText": "Phase 5\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Duration": {
|
||||
"displayText": "Phase 5\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfileCooldownSpeed": {
|
||||
"displayText": "Cooldown\nSpeed",
|
||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
||||
},
|
||||
"MotionSensitivity": {
|
||||
"displayText": "Усещане\nза движение",
|
||||
"description": "Усещане за движение (0=Изключено | 1=Слабо | ... | 9=Силно)"
|
||||
@@ -207,6 +276,10 @@
|
||||
"displayText": "Детайлен\nработен екран",
|
||||
"description": "Детайлна информация в работен режим при запояване"
|
||||
},
|
||||
"BluetoothLE": {
|
||||
"displayText": "Bluetooth\n",
|
||||
"description": "Enables BLE"
|
||||
},
|
||||
"PowerLimit": {
|
||||
"displayText": "Лимит на\nмощност",
|
||||
"description": "Максимална мощност на поялника (Watt)"
|
||||
@@ -238,14 +311,6 @@
|
||||
"LanguageSwitch": {
|
||||
"displayText": "Език:\n BG Български",
|
||||
"description": ""
|
||||
},
|
||||
"BLEEnabled": {
|
||||
"displayText": "BLE\n Enabled",
|
||||
"description": ""
|
||||
},
|
||||
"PDVpdoEnabled": {
|
||||
"displayText": "PD VPDO\nEnabled",
|
||||
"description": "Enables PPS/EPR modes."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"tempUnitFahrenheit": false,
|
||||
"messagesWarn": {
|
||||
"CJCCalibrationDone": {
|
||||
"message": "Calibration\ndone!"
|
||||
"message": "Kalibrace\ndokončena!"
|
||||
},
|
||||
"ResetOKMessage": {
|
||||
"message": "Reset OK"
|
||||
@@ -31,10 +31,10 @@
|
||||
"message": "Teplotní\nOchrana"
|
||||
},
|
||||
"SettingsCalibrationWarning": {
|
||||
"message": "Before rebooting, make sure tip & handle are at room temperature!"
|
||||
"message": "Před restartem se ujistěte, že hrot a držák mají pokojovou teplotu!"
|
||||
},
|
||||
"CJCCalibrating": {
|
||||
"message": "calibrating\n"
|
||||
"message": "kalibrování\n"
|
||||
},
|
||||
"SettingsResetWarning": {
|
||||
"message": "Opravdu chcete resetovat zařízení do továrního nastavení?"
|
||||
@@ -60,8 +60,17 @@
|
||||
"OffString": {
|
||||
"message": "Vyp"
|
||||
},
|
||||
"ProfilePreheatString": {
|
||||
"message": "Preheat\n"
|
||||
},
|
||||
"ProfileCooldownString": {
|
||||
"message": "Cooldown\n"
|
||||
},
|
||||
"DeviceFailedValidationWarning": {
|
||||
"message": "Your device is most likely a counterfeit!"
|
||||
"message": "Vaše zařízení je s nejvyšší pravděpodobností padělek!"
|
||||
},
|
||||
"TooHotToStartProfileWarning": {
|
||||
"message": "Too hot to\nstart profile"
|
||||
}
|
||||
},
|
||||
"characters": {
|
||||
@@ -119,6 +128,10 @@
|
||||
"displayText": "PD\ntimeout",
|
||||
"description": "Maximální prodleva při jednání PD ve 100ms krocích pro kompatibilitu s některými QC nabíječkami"
|
||||
},
|
||||
"PDVpdo": {
|
||||
"displayText": "PD\nVPDO",
|
||||
"description": "Povoluje režimy PPS & EPR"
|
||||
},
|
||||
"BoostTemperature": {
|
||||
"displayText": "Teplota\nboostu",
|
||||
"description": "Teplota hrotu v \"režimu boost\""
|
||||
@@ -139,6 +152,62 @@
|
||||
"displayText": "Povolit zamč.\ntlačítek",
|
||||
"description": "Při pájení podržte obě tlačítka pro jejich zamčení (Z=zakázáno | B=pouze v režimu boost | U=úplné zamčení)"
|
||||
},
|
||||
"ProfilePhases": {
|
||||
"displayText": "Profile\nPhases",
|
||||
"description": "Number of phases in profile mode"
|
||||
},
|
||||
"ProfilePreheatTemp": {
|
||||
"displayText": "Preheat\nTemp",
|
||||
"description": "Preheat to this temperature at the start of profile mode"
|
||||
},
|
||||
"ProfilePreheatSpeed": {
|
||||
"displayText": "Preheat\nSpeed",
|
||||
"description": "Preheat at this rate (degrees per second)"
|
||||
},
|
||||
"ProfilePhase1Temp": {
|
||||
"displayText": "Phase 1\nTemp",
|
||||
"description": "Target temperature for the end of this phase"
|
||||
},
|
||||
"ProfilePhase1Duration": {
|
||||
"displayText": "Phase 1\nDuration",
|
||||
"description": "Target duration of this phase (seconds)"
|
||||
},
|
||||
"ProfilePhase2Temp": {
|
||||
"displayText": "Phase 2\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase2Duration": {
|
||||
"displayText": "Phase 2\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Temp": {
|
||||
"displayText": "Phase 3\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Duration": {
|
||||
"displayText": "Phase 3\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Temp": {
|
||||
"displayText": "Phase 4\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Duration": {
|
||||
"displayText": "Phase 4\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Temp": {
|
||||
"displayText": "Phase 5\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Duration": {
|
||||
"displayText": "Phase 5\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfileCooldownSpeed": {
|
||||
"displayText": "Cooldown\nSpeed",
|
||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
||||
},
|
||||
"MotionSensitivity": {
|
||||
"displayText": "Citlivost\nna pohyb",
|
||||
"description": "0=vyp | 1=nejméně citlivé | ... | 9=nejvíce citlivé"
|
||||
@@ -207,13 +276,17 @@
|
||||
"displayText": "Podrobná obr.\npájení",
|
||||
"description": "Zobrazit detailní informace malým fontem na obrazovce pájení"
|
||||
},
|
||||
"BluetoothLE": {
|
||||
"displayText": "Bluetooth\n",
|
||||
"description": "Povoluje BLE"
|
||||
},
|
||||
"PowerLimit": {
|
||||
"displayText": "Omezení\nVýkonu",
|
||||
"description": "Maximální příkon páječky (W=watt)"
|
||||
},
|
||||
"CalibrateCJC": {
|
||||
"displayText": "Calibrate CJC\nat next boot",
|
||||
"description": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
|
||||
"displayText": "Kalibrovat CJC\npři příštím startu",
|
||||
"description": "Při příštím startu bude kalibrována kompenzace studeného spoje (není třeba pokud Delta T je < 5°C)"
|
||||
},
|
||||
"VoltageCalibration": {
|
||||
"displayText": "Kalibrovat\nvstupní napětí?",
|
||||
@@ -238,14 +311,6 @@
|
||||
"LanguageSwitch": {
|
||||
"displayText": "Jazyk:\n CS Český",
|
||||
"description": ""
|
||||
},
|
||||
"BLEEnabled": {
|
||||
"displayText": "BLE\n Enabled",
|
||||
"description": ""
|
||||
},
|
||||
"PDVpdoEnabled": {
|
||||
"displayText": "PD VPDO\nEnabled",
|
||||
"description": "Enables PPS/EPR modes."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,8 +60,17 @@
|
||||
"OffString": {
|
||||
"message": "Off"
|
||||
},
|
||||
"ProfilePreheatString": {
|
||||
"message": "Preheat\n"
|
||||
},
|
||||
"ProfileCooldownString": {
|
||||
"message": "Cooldown\n"
|
||||
},
|
||||
"DeviceFailedValidationWarning": {
|
||||
"message": "Din enhed er højst sandsyneligt en Kopivare!"
|
||||
},
|
||||
"TooHotToStartProfileWarning": {
|
||||
"message": "Too hot to\nstart profile"
|
||||
}
|
||||
},
|
||||
"characters": {
|
||||
@@ -119,6 +128,10 @@
|
||||
"displayText": "PD\ntimeout",
|
||||
"description": "PD-forhandlingstimeout i trin på 100 ms for kompatibilitet med nogle QC-opladere"
|
||||
},
|
||||
"PDVpdo": {
|
||||
"displayText": "PD\nVPDO",
|
||||
"description": "Enables PPS & EPR modes"
|
||||
},
|
||||
"BoostTemperature": {
|
||||
"displayText": "Boost\ntemp",
|
||||
"description": "Temperatur i \"boost mode\""
|
||||
@@ -139,6 +152,62 @@
|
||||
"displayText": "Tillad låsning\naf knapperne",
|
||||
"description": "Hold begge knapper nede under lodning for at låse dem (D=deaktiver | B=kun boost-tilstand | F=fuld låsning)"
|
||||
},
|
||||
"ProfilePhases": {
|
||||
"displayText": "Profile\nPhases",
|
||||
"description": "Number of phases in profile mode"
|
||||
},
|
||||
"ProfilePreheatTemp": {
|
||||
"displayText": "Preheat\nTemp",
|
||||
"description": "Preheat to this temperature at the start of profile mode"
|
||||
},
|
||||
"ProfilePreheatSpeed": {
|
||||
"displayText": "Preheat\nSpeed",
|
||||
"description": "Preheat at this rate (degrees per second)"
|
||||
},
|
||||
"ProfilePhase1Temp": {
|
||||
"displayText": "Phase 1\nTemp",
|
||||
"description": "Target temperature for the end of this phase"
|
||||
},
|
||||
"ProfilePhase1Duration": {
|
||||
"displayText": "Phase 1\nDuration",
|
||||
"description": "Target duration of this phase (seconds)"
|
||||
},
|
||||
"ProfilePhase2Temp": {
|
||||
"displayText": "Phase 2\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase2Duration": {
|
||||
"displayText": "Phase 2\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Temp": {
|
||||
"displayText": "Phase 3\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Duration": {
|
||||
"displayText": "Phase 3\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Temp": {
|
||||
"displayText": "Phase 4\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Duration": {
|
||||
"displayText": "Phase 4\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Temp": {
|
||||
"displayText": "Phase 5\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Duration": {
|
||||
"displayText": "Phase 5\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfileCooldownSpeed": {
|
||||
"displayText": "Cooldown\nSpeed",
|
||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
||||
},
|
||||
"MotionSensitivity": {
|
||||
"displayText": "Bevægelses\nfølsomhed",
|
||||
"description": "Bevægelsesfølsomhed (0=Slukket | 1=Mindst følsom | ... | 9=Mest følsom)"
|
||||
@@ -207,6 +276,10 @@
|
||||
"displayText": "Detaljeret\nloddeskærm",
|
||||
"description": "Vis detaljeret information mens der loddes"
|
||||
},
|
||||
"BluetoothLE": {
|
||||
"displayText": "Bluetooth\n",
|
||||
"description": "Enables BLE"
|
||||
},
|
||||
"PowerLimit": {
|
||||
"displayText": "Strøm\nbegrænsning",
|
||||
"description": "Maksimal effekt Loddekolben kan bruge (W=watt)"
|
||||
@@ -238,14 +311,6 @@
|
||||
"LanguageSwitch": {
|
||||
"displayText": "Sprog:\n DA Dansk",
|
||||
"description": ""
|
||||
},
|
||||
"BLEEnabled": {
|
||||
"displayText": "BLE\n Enabled",
|
||||
"description": ""
|
||||
},
|
||||
"PDVpdoEnabled": {
|
||||
"displayText": "PD VPDO\nEnabled",
|
||||
"description": "Enables PPS/EPR modes."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,8 +60,17 @@
|
||||
"OffString": {
|
||||
"message": "Aus"
|
||||
},
|
||||
"ProfilePreheatString": {
|
||||
"message": "Vorwärmen\n"
|
||||
},
|
||||
"ProfileCooldownString": {
|
||||
"message": "Abkühlen\n"
|
||||
},
|
||||
"DeviceFailedValidationWarning": {
|
||||
"message": "Höchstwahrscheinlich ist das Gerät eine Fälschung!"
|
||||
},
|
||||
"TooHotToStartProfileWarning": {
|
||||
"message": "Zu heiß für\nProfilstart!"
|
||||
}
|
||||
},
|
||||
"characters": {
|
||||
@@ -119,6 +128,10 @@
|
||||
"displayText": "PD\ntimeout",
|
||||
"description": "PD Abfragedauer in 100ms Schritten (Kompatibilität mit best. QC-Ladegeräten)"
|
||||
},
|
||||
"PDVpdo": {
|
||||
"displayText": "PD\nVPDO",
|
||||
"description": "Aktiviert PPS & EPR"
|
||||
},
|
||||
"BoostTemperature": {
|
||||
"displayText": "Boost-\ntemperatur",
|
||||
"description": "Temperatur der Lötspitze im Boostmodus"
|
||||
@@ -139,6 +152,62 @@
|
||||
"displayText": "Tasten-\nsperre",
|
||||
"description": "Langes drücken beider Tasten im Lötmodus sperrt diese (A=aus | B=nur Boost | V=vollständig)"
|
||||
},
|
||||
"ProfilePhases": {
|
||||
"displayText": "Profile\nPhasen",
|
||||
"description": "Anzahl an Phasen im Profilmodus"
|
||||
},
|
||||
"ProfilePreheatTemp": {
|
||||
"displayText": "Vorheiz-\ntemperatur",
|
||||
"description": "Zu Beginn des Profilmodus auf diese Temperatur vorheizen"
|
||||
},
|
||||
"ProfilePreheatSpeed": {
|
||||
"displayText": "Vorheiz-\nrate",
|
||||
"description": "Mit dieser Geschwindigkeit vorheizen (Grad pro Sekunde)"
|
||||
},
|
||||
"ProfilePhase1Temp": {
|
||||
"displayText": "Phase 1\nTemperatur",
|
||||
"description": "Zieltemperatur zum Ende dieser Phase"
|
||||
},
|
||||
"ProfilePhase1Duration": {
|
||||
"displayText": "Phase 1\nDauer",
|
||||
"description": "Zieldauer dieser Phase (Sekunden)"
|
||||
},
|
||||
"ProfilePhase2Temp": {
|
||||
"displayText": "Phase 2\nTemperatur",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase2Duration": {
|
||||
"displayText": "Phase 2\nDauer",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Temp": {
|
||||
"displayText": "Phase 3\nTemperatur",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Duration": {
|
||||
"displayText": "Phase 3\nDauer",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Temp": {
|
||||
"displayText": "Phase 4\nTemperatur",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Duration": {
|
||||
"displayText": "Phase 4\nDauer",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Temp": {
|
||||
"displayText": "Phase 5\nTemperatur",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Duration": {
|
||||
"displayText": "Phase 5\nDauer",
|
||||
"description": ""
|
||||
},
|
||||
"ProfileCooldownSpeed": {
|
||||
"displayText": "Abkühl-\nrate",
|
||||
"description": "Am Ende des Profilmodus mit dieser Geschwindigkeit abkühlen (Grad pro Sekunde)"
|
||||
},
|
||||
"MotionSensitivity": {
|
||||
"displayText": "Bewegungs-\nempfindlichk.",
|
||||
"description": "0=aus | 1=minimal | ... | 9=maximal"
|
||||
@@ -188,7 +257,7 @@
|
||||
"description": "Icon-Animationen im Hauptmenü wiederholen"
|
||||
},
|
||||
"Brightness": {
|
||||
"displayText": "Bildschirm-\nkontrast",
|
||||
"displayText": "Bildschirm-\nhelligkeit",
|
||||
"description": "Verändert die Helligkeit des OLED-Displays"
|
||||
},
|
||||
"ColourInversion": {
|
||||
@@ -207,6 +276,10 @@
|
||||
"displayText": "Detaillierte\nLötansicht",
|
||||
"description": "Detaillierte Anzeige im Lötmodus"
|
||||
},
|
||||
"BluetoothLE": {
|
||||
"displayText": "Bluetooth\n",
|
||||
"description": "Aktiviert Bluetooth LE"
|
||||
},
|
||||
"PowerLimit": {
|
||||
"displayText": "Leistungs-\nmaximum",
|
||||
"description": "Maximal zulässige Leistungsaufnahme des Lötkolbens (W=Watt)"
|
||||
@@ -238,14 +311,6 @@
|
||||
"LanguageSwitch": {
|
||||
"displayText": "Sprache:\n DE Deutsch",
|
||||
"description": ""
|
||||
},
|
||||
"BLEEnabled": {
|
||||
"displayText": "BLE\naktivieren",
|
||||
"description": "Aktiviert BLE"
|
||||
},
|
||||
"PDVpdoEnabled": {
|
||||
"displayText": "PD VPDO\naktivieren",
|
||||
"description": "Aktiviert PPS/EPR"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,8 +60,17 @@
|
||||
"OffString": {
|
||||
"message": "Απ."
|
||||
},
|
||||
"ProfilePreheatString": {
|
||||
"message": "Preheat\n"
|
||||
},
|
||||
"ProfileCooldownString": {
|
||||
"message": "Cooldown\n"
|
||||
},
|
||||
"DeviceFailedValidationWarning": {
|
||||
"message": "Η συσκευή σας ίσως να μην είναι αυθεντική!"
|
||||
},
|
||||
"TooHotToStartProfileWarning": {
|
||||
"message": "Too hot to\nstart profile"
|
||||
}
|
||||
},
|
||||
"characters": {
|
||||
@@ -119,6 +128,10 @@
|
||||
"displayText": "χρονικό όριο\nPD",
|
||||
"description": "Χρονικό όριο διαπραγμάτευσης PD σε βήματα 100ms για συμβατότητα με κάποιους φορτιστές QC"
|
||||
},
|
||||
"PDVpdo": {
|
||||
"displayText": "PD\nVPDO",
|
||||
"description": "Ενεργοποιεί λειτουργίες PPS & EPR."
|
||||
},
|
||||
"BoostTemperature": {
|
||||
"displayText": "Θερμοκ.\nboost",
|
||||
"description": "Θερμοκρασία στη \"λειτουργία boost\""
|
||||
@@ -139,6 +152,62 @@
|
||||
"displayText": "Κλείδωμα\nπλήκτρων",
|
||||
"description": "Κατά την κόλληση, κρατήστε και τα δύο πλήκτρα για κλείδωμα (A=απενεργοποίηση | B=μόνο λειτ. boost | Π=πλήρες κλείδωμα)"
|
||||
},
|
||||
"ProfilePhases": {
|
||||
"displayText": "Profile\nPhases",
|
||||
"description": "Number of phases in profile mode"
|
||||
},
|
||||
"ProfilePreheatTemp": {
|
||||
"displayText": "Preheat\nTemp",
|
||||
"description": "Preheat to this temperature at the start of profile mode"
|
||||
},
|
||||
"ProfilePreheatSpeed": {
|
||||
"displayText": "Preheat\nSpeed",
|
||||
"description": "Preheat at this rate (degrees per second)"
|
||||
},
|
||||
"ProfilePhase1Temp": {
|
||||
"displayText": "Phase 1\nTemp",
|
||||
"description": "Target temperature for the end of this phase"
|
||||
},
|
||||
"ProfilePhase1Duration": {
|
||||
"displayText": "Phase 1\nDuration",
|
||||
"description": "Target duration of this phase (seconds)"
|
||||
},
|
||||
"ProfilePhase2Temp": {
|
||||
"displayText": "Phase 2\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase2Duration": {
|
||||
"displayText": "Phase 2\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Temp": {
|
||||
"displayText": "Phase 3\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Duration": {
|
||||
"displayText": "Phase 3\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Temp": {
|
||||
"displayText": "Phase 4\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Duration": {
|
||||
"displayText": "Phase 4\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Temp": {
|
||||
"displayText": "Phase 5\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Duration": {
|
||||
"displayText": "Phase 5\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfileCooldownSpeed": {
|
||||
"displayText": "Cooldown\nSpeed",
|
||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
||||
},
|
||||
"MotionSensitivity": {
|
||||
"displayText": "Ευαισθησία\nκίνησης",
|
||||
"description": "0=off | 1=λιγότερο ευαίσθητο | ... | 9=περισσότερο ευαίσθητο"
|
||||
@@ -207,6 +276,10 @@
|
||||
"displayText": "Λεπτομερής\nοθ. κόλλησης",
|
||||
"description": "Προβολή λεπτομερών πληροφοριών σε μικρότερη γραμματοσειρά στην οθόνη κόλλησης"
|
||||
},
|
||||
"BluetoothLE": {
|
||||
"displayText": "Bluetooth\n",
|
||||
"description": "Enables BLE"
|
||||
},
|
||||
"PowerLimit": {
|
||||
"displayText": "Ενεργειακό\nόριο",
|
||||
"description": "Μέγιστη ενέργεια που μπορεί να χρησιμοποιεί το κολλητήρι (W=watt)"
|
||||
@@ -238,14 +311,6 @@
|
||||
"LanguageSwitch": {
|
||||
"displayText": "Γλώσσα:\n EL Ελληνικά",
|
||||
"description": ""
|
||||
},
|
||||
"BLEEnabled": {
|
||||
"displayText": "BLE\n Ενεργό",
|
||||
"description": ""
|
||||
},
|
||||
"PDVpdoEnabled": {
|
||||
"displayText": "PD VPDO\nΕνεργό",
|
||||
"description": "Ενεργοποιεί λειτουργίες PPS/EPR."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,8 +60,17 @@
|
||||
"OffString": {
|
||||
"message": "Off"
|
||||
},
|
||||
"ProfilePreheatString": {
|
||||
"message": "Preheat\n"
|
||||
},
|
||||
"ProfileCooldownString": {
|
||||
"message": "Cooldown\n"
|
||||
},
|
||||
"DeviceFailedValidationWarning": {
|
||||
"message": "Your device is most likely a counterfeit!"
|
||||
},
|
||||
"TooHotToStartProfileWarning": {
|
||||
"message": "Too hot to\nstart profile"
|
||||
}
|
||||
},
|
||||
"characters": {
|
||||
@@ -119,6 +128,10 @@
|
||||
"displayText": "PD\ntimeout",
|
||||
"description": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers"
|
||||
},
|
||||
"PDVpdo": {
|
||||
"displayText": "PD\nVPDO",
|
||||
"description": "Enables PPS & EPR modes"
|
||||
},
|
||||
"BoostTemperature": {
|
||||
"displayText": "Boost\ntemp",
|
||||
"description": "Tip temperature used in \"boost mode\""
|
||||
@@ -139,6 +152,62 @@
|
||||
"displayText": "Allow locking\nbuttons",
|
||||
"description": "While soldering, hold down both buttons to toggle locking them (D=disable | B=boost mode only | F=full locking)"
|
||||
},
|
||||
"ProfilePhases": {
|
||||
"displayText": "Profile\nPhases",
|
||||
"description": "Number of phases in profile mode"
|
||||
},
|
||||
"ProfilePreheatTemp": {
|
||||
"displayText": "Preheat\nTemp",
|
||||
"description": "Preheat to this temperature at the start of profile mode"
|
||||
},
|
||||
"ProfilePreheatSpeed": {
|
||||
"displayText": "Preheat\nSpeed",
|
||||
"description": "Preheat at this rate (degrees per second)"
|
||||
},
|
||||
"ProfilePhase1Temp": {
|
||||
"displayText": "Phase 1\nTemp",
|
||||
"description": "Target temperature for the end of this phase"
|
||||
},
|
||||
"ProfilePhase1Duration": {
|
||||
"displayText": "Phase 1\nDuration",
|
||||
"description": "Target duration of this phase (seconds)"
|
||||
},
|
||||
"ProfilePhase2Temp": {
|
||||
"displayText": "Phase 2\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase2Duration": {
|
||||
"displayText": "Phase 2\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Temp": {
|
||||
"displayText": "Phase 3\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Duration": {
|
||||
"displayText": "Phase 3\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Temp": {
|
||||
"displayText": "Phase 4\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Duration": {
|
||||
"displayText": "Phase 4\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Temp": {
|
||||
"displayText": "Phase 5\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Duration": {
|
||||
"displayText": "Phase 5\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfileCooldownSpeed": {
|
||||
"displayText": "Cooldown\nSpeed",
|
||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
||||
},
|
||||
"MotionSensitivity": {
|
||||
"displayText": "Motion\nsensitivity",
|
||||
"description": "0=off | 1=least sensitive | ... | 9=most sensitive"
|
||||
@@ -207,13 +276,17 @@
|
||||
"displayText": "Detailed\nsolder screen",
|
||||
"description": "Display detailed info in a smaller font on soldering screen"
|
||||
},
|
||||
"BluetoothLE": {
|
||||
"displayText": "Bluetooth\n",
|
||||
"description": "Enables BLE"
|
||||
},
|
||||
"PowerLimit": {
|
||||
"displayText": "Power\nlimit",
|
||||
"description": "Maximum power the iron can use (W=watt)"
|
||||
},
|
||||
"CalibrateCJC": {
|
||||
"displayText": "Calibrate CJC\nat next boot",
|
||||
"description": "Calbrate Cold Junction Compensation at next boot (not required if Delta T is < 5°C)"
|
||||
"description": "Calibrate Cold Junction Compensation at next boot (not required if Delta T is < 5°C)"
|
||||
},
|
||||
"VoltageCalibration": {
|
||||
"displayText": "Calibrate\ninput voltage",
|
||||
@@ -238,14 +311,6 @@
|
||||
"LanguageSwitch": {
|
||||
"displayText": "Language:\n EN English",
|
||||
"description": ""
|
||||
},
|
||||
"BLEEnabled": {
|
||||
"displayText": "BLE\n Enabled",
|
||||
"description": "Enables BLE"
|
||||
},
|
||||
"PDVpdoEnabled": {
|
||||
"displayText": "PD VPDO\nEnabled",
|
||||
"description": "Enables PPS/EPR modes."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
{
|
||||
"languageCode": "ES",
|
||||
"languageLocalName": "Castellano",
|
||||
"tempUnitFahrenheit": true,
|
||||
"tempUnitFahrenheit": false,
|
||||
"messagesWarn": {
|
||||
"CJCCalibrationDone": {
|
||||
"message": "Calibration\ndone!"
|
||||
"message": "¡Calibracion\nlista!"
|
||||
},
|
||||
"ResetOKMessage": {
|
||||
"message": "Hecho"
|
||||
"message": "Listo"
|
||||
},
|
||||
"SettingsResetMessage": {
|
||||
"message": "Ajustes\n¡Reiniciados!"
|
||||
"message": "¡Ajustes\nReiniciados!"
|
||||
},
|
||||
"NoAccelerometerMessage": {
|
||||
"message": "Sin acelerómetro\n¡Detectado!"
|
||||
"message": "¡Sin acelerómetro\nDetectado!"
|
||||
},
|
||||
"NoPowerDeliveryMessage": {
|
||||
"message": "Sin USB-PD IC\n¡Detectado!"
|
||||
"message": "¡Sin USB-PD IC\nDetectado!"
|
||||
},
|
||||
"LockingKeysString": {
|
||||
"message": "BLOQUEADO"
|
||||
@@ -34,7 +34,7 @@
|
||||
"message": "¡Antes de reiniciar, asegúrese de que la punta y el mango estén a temperatura ambiente!"
|
||||
},
|
||||
"CJCCalibrating": {
|
||||
"message": "calibrando\n"
|
||||
"message": "Calibrando\n"
|
||||
},
|
||||
"SettingsResetWarning": {
|
||||
"message": "¿Quieres restablecer los ajustes?"
|
||||
@@ -58,10 +58,19 @@
|
||||
"message": "Punta: \n"
|
||||
},
|
||||
"OffString": {
|
||||
"message": "No"
|
||||
"message": "Apagado"
|
||||
},
|
||||
"ProfilePreheatString": {
|
||||
"message": "Precalentado\n"
|
||||
},
|
||||
"ProfileCooldownString": {
|
||||
"message": "Enfriado\n"
|
||||
},
|
||||
"DeviceFailedValidationWarning": {
|
||||
"message": "¡Lo más probable es que su dispositivo sea una falsificación!"
|
||||
"message": "¡Es probable es que su dispositivo sea falso!"
|
||||
},
|
||||
"TooHotToStartProfileWarning": {
|
||||
"message": "Muy caliente para \nempezar perfil"
|
||||
}
|
||||
},
|
||||
"characters": {
|
||||
@@ -109,23 +118,28 @@
|
||||
},
|
||||
"MinVolCell": {
|
||||
"displayText": "Mínimo\nvoltaje",
|
||||
"description": "voltaje mínimo permitido por célula (3S: 3 - 3,7V | 4-6S: 2,4 - 3,7V)"
|
||||
"description": "Voltaje mínimo permitido por célula (3S: 3 - 3,7V | 4-6S: 2,4 - 3,7V)"
|
||||
},
|
||||
"QCMaxVoltage": {
|
||||
"displayText": "Potencia de\nentrada",
|
||||
"description": "Potencia en vatios del adaptador de corriente utilizado"
|
||||
"description": "Potencia en Watts del adaptador de corriente utilizado"
|
||||
},
|
||||
"PDNegTimeout": {
|
||||
"displayText": "PD\ntiempo de espera",
|
||||
"description": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers (0: disabled)"
|
||||
"description": "Timeout de negociación de PD en pasos de 100ms para compatibilidad con algunos cargadores QC (0: apagado)"
|
||||
|
||||
},
|
||||
"PDVpdo": {
|
||||
"displayText": "PD\nVPDO",
|
||||
"description": "Permite modos PPS & EPR"
|
||||
},
|
||||
"BoostTemperature": {
|
||||
"displayText": "Ajustar la\ntemp. extra",
|
||||
"description": "Temperatura de la punta utilizada en el \"modo de impulso\""
|
||||
"description": "Temperatura de la punta de \"modo boost\""
|
||||
},
|
||||
"AutoStart": {
|
||||
"displayText": "Calentar\nal enchufar",
|
||||
"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)"
|
||||
"description": "Calentado automático al iniciar (N=no | S=entrar en modo soldar | R=solo entrar en reposo | F=en reposo pero mantiene la punta fría)"
|
||||
},
|
||||
"TempChangeShortStep": {
|
||||
"displayText": "Cambio temp.\npuls. cortas",
|
||||
@@ -139,6 +153,62 @@
|
||||
"displayText": "Permitir botones\nbloqueo",
|
||||
"description": "Mientras suelda, mantenga pulsados ambos botones para alternar su bloqueo (D=desactivar | B=sólo modo boost | F=bloqueo total)"
|
||||
},
|
||||
"ProfilePhases": {
|
||||
"displayText": "Fases de\nPerfil",
|
||||
"description": "Numero de fases en modo perfil"
|
||||
},
|
||||
"ProfilePreheatTemp": {
|
||||
"displayText": "Temp de \n precalentado",
|
||||
"description": "Precalentar a esta temperatura al inicio del modo perfil"
|
||||
},
|
||||
"ProfilePreheatSpeed": {
|
||||
"displayText": "Velocidad de \nPrecalentado",
|
||||
"description": "Precalentar a esta velocidad (grados por segundo)"
|
||||
},
|
||||
"ProfilePhase1Temp": {
|
||||
"displayText": "Fase 1\nTemp",
|
||||
"description": "Temperatura objetivo al final de esta fase"
|
||||
},
|
||||
"ProfilePhase1Duration": {
|
||||
"displayText": "Fase 1\nDuración",
|
||||
"description": "Duración objetivo de esta fase (segundos)"
|
||||
},
|
||||
"ProfilePhase2Temp": {
|
||||
"displayText": "Fase 2\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase2Duration": {
|
||||
"displayText": "Fase 2\nDuración",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Temp": {
|
||||
"displayText": "Fase 3\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Duration": {
|
||||
"displayText": "Fase 3\nDuración",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Temp": {
|
||||
"displayText": "Fase 4\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Duration": {
|
||||
"displayText": "Fase 4\nDuración",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Temp": {
|
||||
"displayText": "Fase 5\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Duration": {
|
||||
"displayText": "Fase 5\nDuración",
|
||||
"description": ""
|
||||
},
|
||||
"ProfileCooldownSpeed": {
|
||||
"displayText": "Velocidad de\nEnfriamineto",
|
||||
"description": "Enfriar a esta velocidad al final del modo perfil (grados por segundo)"
|
||||
},
|
||||
"MotionSensitivity": {
|
||||
"displayText": "Detección de\nmovimiento",
|
||||
"description": "Tiempo de reacción al agarrar (0=no | 1=menos sensible | ... | 9=más sensible)"
|
||||
@@ -161,7 +231,7 @@
|
||||
},
|
||||
"TemperatureUnit": {
|
||||
"displayText": "Unidad de\ntemperatura",
|
||||
"description": "Unidad de temperatura (C=centígrados | F=Fahrenheit)"
|
||||
"description": "Unidad de temperatura (C=entígrados | F=Fahrenheit)"
|
||||
},
|
||||
"DisplayRotation": {
|
||||
"displayText": "Orientación\nde pantalla",
|
||||
@@ -169,7 +239,7 @@
|
||||
},
|
||||
"CooldownBlink": {
|
||||
"displayText": "Parpadear\nal enfriar",
|
||||
"description": "Lectura de la temperatura al ralentí mientras la punta está caliente"
|
||||
"description": "Parpadear texto en inactivo cuando la punta este caliente"
|
||||
},
|
||||
"ScrollingSpeed": {
|
||||
"displayText": "Velocidad\ndel texto",
|
||||
@@ -177,15 +247,15 @@
|
||||
},
|
||||
"ReverseButtonTempChange": {
|
||||
"displayText": "Invertir\nbotones +/-",
|
||||
"description": "Intercambio inversa de los botones para ajustar la temperatura"
|
||||
"description": "Invertir botones de ajuste de temperatura"
|
||||
},
|
||||
"AnimSpeed": {
|
||||
"displayText": "Anim.\nvelocidad",
|
||||
"description": "Velocidad de las animaciones de los iconos en el menú (O=off | L=low | M=medium | R=high)"
|
||||
"description": "Velocidad de animaciones de iconos en el menú (O=apagado | L=baja | M=media | R=alta)"
|
||||
},
|
||||
"AnimLoop": {
|
||||
"displayText": "Anim.\nbucle",
|
||||
"description": "Animaciones de iconos en bucle en el menú raíz"
|
||||
"description": "Bucle de animaciones del menú principal"
|
||||
},
|
||||
"Brightness": {
|
||||
"displayText": "Pantalla\nbrillo",
|
||||
@@ -196,24 +266,28 @@
|
||||
"description": "Invertir la pantalla OLED"
|
||||
},
|
||||
"LOGOTime": {
|
||||
"displayText": "logo inicial\nduración",
|
||||
"displayText": "Logo inicial\nduración",
|
||||
"description": "Duración de la animación del logo inicial (s=segundos)"
|
||||
},
|
||||
"AdvancedIdle": {
|
||||
"displayText": "Info extra en\nmodo reposo",
|
||||
"description": "Mostrar información detallada en una fuente más pequeña en la pantalla inactiva"
|
||||
"description": "Mostrar información detallada en tamaño pequeño en la pantalla de reposo"
|
||||
},
|
||||
"AdvancedSoldering": {
|
||||
"displayText": "Info extra\nal soldar",
|
||||
"description": "Mostrar información detallada en una fuente más pequeña en la pantalla de soldadura"
|
||||
"description": "Mostrar información detallada en tamaño pequeño en la pantalla de soldadura"
|
||||
},
|
||||
"BluetoothLE": {
|
||||
"displayText": "Bluetooth\n",
|
||||
"description": "Habilitar BLE"
|
||||
},
|
||||
"PowerLimit": {
|
||||
"displayText": "Potencia\nlímite",
|
||||
"description": "Elige el límite de potencia máxima del soldador (en vatios)"
|
||||
"description": "Elige el límite de potencia máxima del soldador (en Watts)"
|
||||
},
|
||||
"CalibrateCJC": {
|
||||
"displayText": "Calibrar CJC\nen el próximo inicio",
|
||||
"description": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
|
||||
"description": "Al siguinte inicio el Cold Junction Compensation sera calibrado (no requerido si el Delta T es < 5°C)"
|
||||
},
|
||||
"VoltageCalibration": {
|
||||
"displayText": "Calibrar voltaje\nde entrada",
|
||||
@@ -221,15 +295,15 @@
|
||||
},
|
||||
"PowerPulsePower": {
|
||||
"displayText": "Pulsos bat.\nconstantes",
|
||||
"description": "Intensidad de la potencia del pulso de mantenimiento del estado de vigilia (W=vatio)"
|
||||
"description": "Intensidad de la potencia del pulso para mantener encendido (W=Watt)"
|
||||
},
|
||||
"PowerPulseWait": {
|
||||
"displayText": "Impulso de potencia\ntiempo de espera",
|
||||
"description": "Tiempo de espera antes de disparar cada pulso de mantenimiento de la vigilia (x 2,5s)"
|
||||
"displayText": "Tiempor entre\n pulso de energia",
|
||||
"description": "Tiempo de espera del pulso para mantener encendido (x 2,5s)"
|
||||
},
|
||||
"PowerPulseDuration": {
|
||||
"displayText": "Impulso de potencia\nduración",
|
||||
"description": "Duración del impulso de mantenimiento de la vigilia (x 250ms)"
|
||||
"displayText": "Duración de\n pulso de energia",
|
||||
"description": "Duración del pulso para mantener encendido (x 250ms)"
|
||||
},
|
||||
"SettingsReset": {
|
||||
"displayText": "Volver a ajustes\nde fábrica",
|
||||
@@ -238,14 +312,6 @@
|
||||
"LanguageSwitch": {
|
||||
"displayText": "Idioma:\n ES Castellano",
|
||||
"description": ""
|
||||
},
|
||||
"BLEEnabled": {
|
||||
"displayText": "BLE\n Activado",
|
||||
"description": "Habilita BLE"
|
||||
},
|
||||
"PDVpdoEnabled": {
|
||||
"displayText": "PD VPDO\nEnabled",
|
||||
"description": "Enables PPS/EPR modes."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,8 +60,17 @@
|
||||
"OffString": {
|
||||
"message": "Off"
|
||||
},
|
||||
"ProfilePreheatString": {
|
||||
"message": "Preheat\n"
|
||||
},
|
||||
"ProfileCooldownString": {
|
||||
"message": "Cooldown\n"
|
||||
},
|
||||
"DeviceFailedValidationWarning": {
|
||||
"message": "Your device is most likely a counterfeit!"
|
||||
},
|
||||
"TooHotToStartProfileWarning": {
|
||||
"message": "Too hot to\nstart profile"
|
||||
}
|
||||
},
|
||||
"characters": {
|
||||
@@ -119,6 +128,10 @@
|
||||
"displayText": "PD\ntimeout",
|
||||
"description": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers"
|
||||
},
|
||||
"PDVpdo": {
|
||||
"displayText": "PD\nVPDO",
|
||||
"description": "Enables PPS & EPR modes"
|
||||
},
|
||||
"BoostTemperature": {
|
||||
"displayText": "Tehostus-\nlämpötila",
|
||||
"description": "Tehostustilan lämpötila"
|
||||
@@ -139,6 +152,62 @@
|
||||
"displayText": "Salli nappien\nlukitus",
|
||||
"description": "Kolvatessa paina molempia näppäimiä lukitaksesi ne (P=pois | V=vain tehostus | K=kaikki)"
|
||||
},
|
||||
"ProfilePhases": {
|
||||
"displayText": "Profile\nPhases",
|
||||
"description": "Number of phases in profile mode"
|
||||
},
|
||||
"ProfilePreheatTemp": {
|
||||
"displayText": "Preheat\nTemp",
|
||||
"description": "Preheat to this temperature at the start of profile mode"
|
||||
},
|
||||
"ProfilePreheatSpeed": {
|
||||
"displayText": "Preheat\nSpeed",
|
||||
"description": "Preheat at this rate (degrees per second)"
|
||||
},
|
||||
"ProfilePhase1Temp": {
|
||||
"displayText": "Phase 1\nTemp",
|
||||
"description": "Target temperature for the end of this phase"
|
||||
},
|
||||
"ProfilePhase1Duration": {
|
||||
"displayText": "Phase 1\nDuration",
|
||||
"description": "Target duration of this phase (seconds)"
|
||||
},
|
||||
"ProfilePhase2Temp": {
|
||||
"displayText": "Phase 2\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase2Duration": {
|
||||
"displayText": "Phase 2\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Temp": {
|
||||
"displayText": "Phase 3\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Duration": {
|
||||
"displayText": "Phase 3\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Temp": {
|
||||
"displayText": "Phase 4\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Duration": {
|
||||
"displayText": "Phase 4\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Temp": {
|
||||
"displayText": "Phase 5\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Duration": {
|
||||
"displayText": "Phase 5\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfileCooldownSpeed": {
|
||||
"displayText": "Cooldown\nSpeed",
|
||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
||||
},
|
||||
"MotionSensitivity": {
|
||||
"displayText": "Liikkeen\nherkkyys",
|
||||
"description": "0=pois päältä | 1=vähäinen herkkyys | ... | 9=suurin herkkyys"
|
||||
@@ -207,6 +276,10 @@
|
||||
"displayText": "Tarkempi\njuotosnäyttö",
|
||||
"description": "Näyttää yksityiskohtaisemmat tiedot pienellä fontilla juotostilassa"
|
||||
},
|
||||
"BluetoothLE": {
|
||||
"displayText": "Bluetooth\n",
|
||||
"description": "Enables BLE"
|
||||
},
|
||||
"PowerLimit": {
|
||||
"displayText": "Tehon-\nrajoitus",
|
||||
"description": "Suurin sallittu teho (Watti)"
|
||||
@@ -238,14 +311,6 @@
|
||||
"LanguageSwitch": {
|
||||
"displayText": "Kieli:\n FI Suomi",
|
||||
"description": ""
|
||||
},
|
||||
"BLEEnabled": {
|
||||
"displayText": "BLE\n Enabled",
|
||||
"description": ""
|
||||
},
|
||||
"PDVpdoEnabled": {
|
||||
"displayText": "PD VPDO\nEnabled",
|
||||
"description": "Enables PPS/EPR modes."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,8 +60,17 @@
|
||||
"OffString": {
|
||||
"message": "Off"
|
||||
},
|
||||
"ProfilePreheatString": {
|
||||
"message": "Preheat\n"
|
||||
},
|
||||
"ProfileCooldownString": {
|
||||
"message": "Cooldown\n"
|
||||
},
|
||||
"DeviceFailedValidationWarning": {
|
||||
"message": "Votre appareil semble être une contrefaçon !"
|
||||
},
|
||||
"TooHotToStartProfileWarning": {
|
||||
"message": "Too hot to\nstart profile"
|
||||
}
|
||||
},
|
||||
"characters": {
|
||||
@@ -119,6 +128,10 @@
|
||||
"displayText": "Délai\nexpir. PD",
|
||||
"description": "Délai de la negociation PD par étapes de 100ms pour la compatiblité avec certains chargeurs QC"
|
||||
},
|
||||
"PDVpdo": {
|
||||
"displayText": "PD\nVPDO",
|
||||
"description": "Enables PPS & EPR modes"
|
||||
},
|
||||
"BoostTemperature": {
|
||||
"displayText": "Temp.\nboost",
|
||||
"description": "Température utilisée en \"mode boost\""
|
||||
@@ -139,6 +152,62 @@
|
||||
"displayText": "Verrouiller\nles boutons",
|
||||
"description": "Pendant la soudure, appuyer sur les deux boutons pour les verrouiller (D=désactivé | B=boost seulement | V=verr. total)"
|
||||
},
|
||||
"ProfilePhases": {
|
||||
"displayText": "Profile\nPhases",
|
||||
"description": "Number of phases in profile mode"
|
||||
},
|
||||
"ProfilePreheatTemp": {
|
||||
"displayText": "Preheat\nTemp",
|
||||
"description": "Preheat to this temperature at the start of profile mode"
|
||||
},
|
||||
"ProfilePreheatSpeed": {
|
||||
"displayText": "Preheat\nSpeed",
|
||||
"description": "Preheat at this rate (degrees per second)"
|
||||
},
|
||||
"ProfilePhase1Temp": {
|
||||
"displayText": "Phase 1\nTemp",
|
||||
"description": "Target temperature for the end of this phase"
|
||||
},
|
||||
"ProfilePhase1Duration": {
|
||||
"displayText": "Phase 1\nDuration",
|
||||
"description": "Target duration of this phase (seconds)"
|
||||
},
|
||||
"ProfilePhase2Temp": {
|
||||
"displayText": "Phase 2\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase2Duration": {
|
||||
"displayText": "Phase 2\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Temp": {
|
||||
"displayText": "Phase 3\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Duration": {
|
||||
"displayText": "Phase 3\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Temp": {
|
||||
"displayText": "Phase 4\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Duration": {
|
||||
"displayText": "Phase 4\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Temp": {
|
||||
"displayText": "Phase 5\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Duration": {
|
||||
"displayText": "Phase 5\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfileCooldownSpeed": {
|
||||
"displayText": "Cooldown\nSpeed",
|
||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
||||
},
|
||||
"MotionSensitivity": {
|
||||
"displayText": "Sensibilité\nau mouvement",
|
||||
"description": "0=désactivé | 1=peu sensible | ... | 9=très sensible"
|
||||
@@ -196,7 +265,7 @@
|
||||
"description": "Inverser les couleurs de l'écran OLED"
|
||||
},
|
||||
"LOGOTime": {
|
||||
"displayText": "Durée logo\nau démarrage",
|
||||
"displayText": "Durée logo\ndémarrage",
|
||||
"description": "Définit la durée d'affichage du logo au démarrage (s=secondes)"
|
||||
},
|
||||
"AdvancedIdle": {
|
||||
@@ -207,12 +276,16 @@
|
||||
"displayText": "Écran soudure\ndétaillé",
|
||||
"description": "Afficher les informations détaillées sur l'écran de soudure"
|
||||
},
|
||||
"BluetoothLE": {
|
||||
"displayText": "Bluetooth\n",
|
||||
"description": "Activer le bluetooth basse consommation"
|
||||
},
|
||||
"PowerLimit": {
|
||||
"displayText": "Limite de\npuissance",
|
||||
"description": "Puissance maximale utilisable (W=watts)"
|
||||
},
|
||||
"CalibrateCJC": {
|
||||
"displayText": "Étalonner CJC\nau prochain démarage",
|
||||
"displayText": "Étalonner CJC\nau prochain démarrage",
|
||||
"description": "Au prochain démarrage, la compensation de soudure froide sera calibrée (non nécessaire si Delta T est < 5°C)."
|
||||
},
|
||||
"VoltageCalibration": {
|
||||
@@ -238,14 +311,6 @@
|
||||
"LanguageSwitch": {
|
||||
"displayText": "Langue:\n FR Français",
|
||||
"description": ""
|
||||
},
|
||||
"BLEEnabled": {
|
||||
"displayText": "BLE\n Activé",
|
||||
"description": ""
|
||||
},
|
||||
"PDVpdoEnabled": {
|
||||
"displayText": "PD VPDO\nEnabled",
|
||||
"description": "Enables PPS/EPR modes."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,8 +60,17 @@
|
||||
"OffString": {
|
||||
"message": "Off"
|
||||
},
|
||||
"ProfilePreheatString": {
|
||||
"message": "Preheat\n"
|
||||
},
|
||||
"ProfileCooldownString": {
|
||||
"message": "Cooldown\n"
|
||||
},
|
||||
"DeviceFailedValidationWarning": {
|
||||
"message": "Vaš uređaj je najvjerojatnije krivotvoren!"
|
||||
},
|
||||
"TooHotToStartProfileWarning": {
|
||||
"message": "Too hot to\nstart profile"
|
||||
}
|
||||
},
|
||||
"characters": {
|
||||
@@ -119,6 +128,10 @@
|
||||
"displayText": "USB-PD\ntimeout",
|
||||
"description": "Timeout za USB-Power Delivery u koracima od 100ms za kompatibilnost s nekim QC punjačima"
|
||||
},
|
||||
"PDVpdo": {
|
||||
"displayText": "PD\nVPDO",
|
||||
"description": "Enables PPS & EPR modes"
|
||||
},
|
||||
"BoostTemperature": {
|
||||
"displayText": "Boost\ntemp",
|
||||
"description": "Temperatura u pojačanom (Boost) načinu."
|
||||
@@ -139,6 +152,62 @@
|
||||
"displayText": "Zaključavanje\ntipki",
|
||||
"description": "Tokom lemljenja, držite obje tipke kako biste ih zaključali ili otključali (O=otključano | B=zaključan boost | Z=zaključano sve)"
|
||||
},
|
||||
"ProfilePhases": {
|
||||
"displayText": "Profile\nPhases",
|
||||
"description": "Number of phases in profile mode"
|
||||
},
|
||||
"ProfilePreheatTemp": {
|
||||
"displayText": "Preheat\nTemp",
|
||||
"description": "Preheat to this temperature at the start of profile mode"
|
||||
},
|
||||
"ProfilePreheatSpeed": {
|
||||
"displayText": "Preheat\nSpeed",
|
||||
"description": "Preheat at this rate (degrees per second)"
|
||||
},
|
||||
"ProfilePhase1Temp": {
|
||||
"displayText": "Phase 1\nTemp",
|
||||
"description": "Target temperature for the end of this phase"
|
||||
},
|
||||
"ProfilePhase1Duration": {
|
||||
"displayText": "Phase 1\nDuration",
|
||||
"description": "Target duration of this phase (seconds)"
|
||||
},
|
||||
"ProfilePhase2Temp": {
|
||||
"displayText": "Phase 2\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase2Duration": {
|
||||
"displayText": "Phase 2\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Temp": {
|
||||
"displayText": "Phase 3\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Duration": {
|
||||
"displayText": "Phase 3\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Temp": {
|
||||
"displayText": "Phase 4\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Duration": {
|
||||
"displayText": "Phase 4\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Temp": {
|
||||
"displayText": "Phase 5\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Duration": {
|
||||
"displayText": "Phase 5\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfileCooldownSpeed": {
|
||||
"displayText": "Cooldown\nSpeed",
|
||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
||||
},
|
||||
"MotionSensitivity": {
|
||||
"displayText": "Osjetljivost\npokreta",
|
||||
"description": "Osjetljivost prepoznavanja pokreta. (0=ugašeno | 1=najmanje osjetljivo | ... | 9=najosjetljivije)"
|
||||
@@ -207,6 +276,10 @@
|
||||
"displayText": "Detalji\npri lemljenju",
|
||||
"description": "Prikazivanje detaljnih informacija tijekom lemljenja"
|
||||
},
|
||||
"BluetoothLE": {
|
||||
"displayText": "Bluetooth\n",
|
||||
"description": "Enables BLE"
|
||||
},
|
||||
"PowerLimit": {
|
||||
"displayText": "Ograničenje\nsnage",
|
||||
"description": "Najveća snaga koju lemilica smije vući iz napajanja (W=watt)"
|
||||
@@ -238,14 +311,6 @@
|
||||
"LanguageSwitch": {
|
||||
"displayText": "Jezik:\n HR Hrvatski",
|
||||
"description": ""
|
||||
},
|
||||
"BLEEnabled": {
|
||||
"displayText": "BLE\n Enabled",
|
||||
"description": ""
|
||||
},
|
||||
"PDVpdoEnabled": {
|
||||
"displayText": "PD VPDO\nEnabled",
|
||||
"description": "Enables PPS/EPR modes."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,8 +60,17 @@
|
||||
"OffString": {
|
||||
"message": "Ki"
|
||||
},
|
||||
"ProfilePreheatString": {
|
||||
"message": "Preheat\n"
|
||||
},
|
||||
"ProfileCooldownString": {
|
||||
"message": "Cooldown\n"
|
||||
},
|
||||
"DeviceFailedValidationWarning": {
|
||||
"message": "Az eszköz valószínűleg nem eredeti!"
|
||||
},
|
||||
"TooHotToStartProfileWarning": {
|
||||
"message": "Too hot to\nstart profile"
|
||||
}
|
||||
},
|
||||
"characters": {
|
||||
@@ -119,6 +128,10 @@
|
||||
"displayText": "PD\nidőtúllépés",
|
||||
"description": "PD egyeztetés időkerete (kompatibilitás QC töltőkkel) (x 100ms)"
|
||||
},
|
||||
"PDVpdo": {
|
||||
"displayText": "PD\nVPDO",
|
||||
"description": "Enables PPS & EPR modes"
|
||||
},
|
||||
"BoostTemperature": {
|
||||
"displayText": "Boost\nhőmérséklet",
|
||||
"description": "Hőmérséklet \"boost\" módban"
|
||||
@@ -139,6 +152,62 @@
|
||||
"displayText": "Lezárás\nengedélyezés",
|
||||
"description": "Forrasztás közben mindkét gombot hosszan lenyomva lezárja a kezelést (K=ki | B=csak \"boost\" módban | T=teljes lezárás)"
|
||||
},
|
||||
"ProfilePhases": {
|
||||
"displayText": "Profile\nPhases",
|
||||
"description": "Number of phases in profile mode"
|
||||
},
|
||||
"ProfilePreheatTemp": {
|
||||
"displayText": "Preheat\nTemp",
|
||||
"description": "Preheat to this temperature at the start of profile mode"
|
||||
},
|
||||
"ProfilePreheatSpeed": {
|
||||
"displayText": "Preheat\nSpeed",
|
||||
"description": "Preheat at this rate (degrees per second)"
|
||||
},
|
||||
"ProfilePhase1Temp": {
|
||||
"displayText": "Phase 1\nTemp",
|
||||
"description": "Target temperature for the end of this phase"
|
||||
},
|
||||
"ProfilePhase1Duration": {
|
||||
"displayText": "Phase 1\nDuration",
|
||||
"description": "Target duration of this phase (seconds)"
|
||||
},
|
||||
"ProfilePhase2Temp": {
|
||||
"displayText": "Phase 2\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase2Duration": {
|
||||
"displayText": "Phase 2\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Temp": {
|
||||
"displayText": "Phase 3\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Duration": {
|
||||
"displayText": "Phase 3\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Temp": {
|
||||
"displayText": "Phase 4\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Duration": {
|
||||
"displayText": "Phase 4\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Temp": {
|
||||
"displayText": "Phase 5\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Duration": {
|
||||
"displayText": "Phase 5\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfileCooldownSpeed": {
|
||||
"displayText": "Cooldown\nSpeed",
|
||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
||||
},
|
||||
"MotionSensitivity": {
|
||||
"displayText": "Mozgás\nérzékenység",
|
||||
"description": "Mozgás érzékenység beállítása (0=kikapcsolva | 1=legkevésbé érzékeny | ... | 9=legérzékenyebb)"
|
||||
@@ -207,6 +276,10 @@
|
||||
"displayText": "Részletes\nforrasztás infó",
|
||||
"description": "Részletes információk megjelenítése forrasztás közben"
|
||||
},
|
||||
"BluetoothLE": {
|
||||
"displayText": "Bluetooth\n",
|
||||
"description": "Enables BLE"
|
||||
},
|
||||
"PowerLimit": {
|
||||
"displayText": "Teljesítmény\nmaximum",
|
||||
"description": "Maximális felvett teljesitmény beállitása"
|
||||
@@ -238,14 +311,6 @@
|
||||
"LanguageSwitch": {
|
||||
"displayText": "Nyelv:\n HU Magyar",
|
||||
"description": ""
|
||||
},
|
||||
"BLEEnabled": {
|
||||
"displayText": "BLE\n Enabled",
|
||||
"description": ""
|
||||
},
|
||||
"PDVpdoEnabled": {
|
||||
"displayText": "PD VPDO\nEnabled",
|
||||
"description": "Enables PPS/EPR modes."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,8 +60,17 @@
|
||||
"OffString": {
|
||||
"message": "OFF"
|
||||
},
|
||||
"ProfilePreheatString": {
|
||||
"message": "Preriscaldamento\n"
|
||||
},
|
||||
"ProfileCooldownString": {
|
||||
"message": "Raffreddamento\n"
|
||||
},
|
||||
"DeviceFailedValidationWarning": {
|
||||
"message": "È probabile che questo dispositivo sia contraffatto!"
|
||||
},
|
||||
"TooHotToStartProfileWarning": {
|
||||
"message": "Troppo caldo\nper il profilo"
|
||||
}
|
||||
},
|
||||
"characters": {
|
||||
@@ -119,9 +128,13 @@
|
||||
"displayText": "Abilitazione\nUSB PD",
|
||||
"description": "Regola il massimo tempo utile per la negoziazione del protocollo USB Power Delivery con alimentatori compatibili [0: disattiva; multipli di 100 ms]"
|
||||
},
|
||||
"PDVpdo": {
|
||||
"displayText": "PD\nVPDO",
|
||||
"description": "Abilita le modalità Power Delivery PPS ed EPR"
|
||||
},
|
||||
"BoostTemperature": {
|
||||
"displayText": "Temp\nTurbo",
|
||||
"description": "Imposta la temperatura della funzione Turbo [°C/°F]"
|
||||
"description": "Imposta la temperatura della funzione turbo [°C/°F]"
|
||||
},
|
||||
"AutoStart": {
|
||||
"displayText": "Avvio\nautomatico",
|
||||
@@ -137,19 +150,75 @@
|
||||
},
|
||||
"LockingMode": {
|
||||
"displayText": "Blocco\ntasti",
|
||||
"description": "Blocca i tasti durante la modalità Saldatura; tieni premuto entrambi per bloccare o sbloccare [D: disattiva; T: consenti Turbo; C: blocco completo]"
|
||||
"description": "Blocca i tasti durante la modalità saldatura; tieni premuto entrambi per bloccare o sbloccare [D: disattiva; T: consenti Turbo; C: blocco completo]"
|
||||
},
|
||||
"ProfilePhases": {
|
||||
"displayText": "Fasi modalità\nprofilo",
|
||||
"description": "Imposta il numero di fasi da attuare per un profilo di riscaldamento personalizzato"
|
||||
},
|
||||
"ProfilePreheatTemp": {
|
||||
"displayText": "Temperatura\npreriscaldamento",
|
||||
"description": "Imposta la temperatura di preriscaldamento da raggiungere all'inizio del profilo di riscaldamento"
|
||||
},
|
||||
"ProfilePreheatSpeed": {
|
||||
"displayText": "Velocità\npreriscaldamento",
|
||||
"description": "Imposta la velocità di preriscaldamento [gradi al secondo]"
|
||||
},
|
||||
"ProfilePhase1Temp": {
|
||||
"displayText": "Temperatura\nfase 1",
|
||||
"description": "Imposta la temperatura da raggiungere alla fine di questa fase"
|
||||
},
|
||||
"ProfilePhase1Duration": {
|
||||
"displayText": "Durata\nfase 1",
|
||||
"description": "Imposta la durata di questa fase [secondi]"
|
||||
},
|
||||
"ProfilePhase2Temp": {
|
||||
"displayText": "Temperatura\nfase 2",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase2Duration": {
|
||||
"displayText": "Durata\nfase 2",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Temp": {
|
||||
"displayText": "Temperatura\nfase 3",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Duration": {
|
||||
"displayText": "Durata\nfase 3",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Temp": {
|
||||
"displayText": "Temperatura\nfase 4",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Duration": {
|
||||
"displayText": "Durata\nfase 4",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Temp": {
|
||||
"displayText": "Temperatura\nfase 5",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Duration": {
|
||||
"displayText": "Durata\nfase 5",
|
||||
"description": ""
|
||||
},
|
||||
"ProfileCooldownSpeed": {
|
||||
"displayText": "Velocità\nraffreddamento",
|
||||
"description": "Imposta la velocità di raffreddamento al termine del profilo di riscaldamento [gradi al secondo]"
|
||||
},
|
||||
"MotionSensitivity": {
|
||||
"displayText": "Sensibilità\nal movimento",
|
||||
"description": "Imposta la sensibilità al movimento per uscire dalla modalità Riposo [0: nessuna; 1: minima; 9: massima]"
|
||||
"description": "Imposta la sensibilità al movimento per uscire dalla modalità riposo [0: nessuna; 1: minima; 9: massima]"
|
||||
},
|
||||
"SleepTemperature": {
|
||||
"displayText": "Temp\nriposo",
|
||||
"description": "Imposta la temperatura da mantenere in modalità Riposo [°C/°F]"
|
||||
"displayText": "Temperatura\nriposo",
|
||||
"description": "Imposta la temperatura da mantenere in modalità riposo [°C/°F]"
|
||||
},
|
||||
"SleepTimeout": {
|
||||
"displayText": "Timer\nriposo",
|
||||
"description": "Imposta il timer per entrare in modalità Riposo [secondi/minuti]"
|
||||
"description": "Imposta il timer per entrare in modalità riposo [secondi/minuti]"
|
||||
},
|
||||
"ShutdownTimeout": {
|
||||
"displayText": "Timer\nspegnimento",
|
||||
@@ -157,7 +226,7 @@
|
||||
},
|
||||
"HallEffSensitivity": {
|
||||
"displayText": "Sensore\nHall",
|
||||
"description": "Regola la sensibilità del sensore ad effetto Hall per entrare in modalità Riposo [0: nessuna; 1: minima; 9: massima]"
|
||||
"description": "Regola la sensibilità del sensore ad effetto Hall per entrare in modalità riposo [0: nessuna; 1: minima; 9: massima]"
|
||||
},
|
||||
"TemperatureUnit": {
|
||||
"displayText": "Unità di\ntemperatura",
|
||||
@@ -205,7 +274,11 @@
|
||||
},
|
||||
"AdvancedSoldering": {
|
||||
"displayText": "Dettagli\nsaldatura",
|
||||
"description": "Mostra informazioni dettagliate durante la modalità Saldatura"
|
||||
"description": "Mostra informazioni dettagliate durante la modalità saldatura"
|
||||
},
|
||||
"BluetoothLE": {
|
||||
"displayText": "Bluetooth\n",
|
||||
"description": "Abilita BLE"
|
||||
},
|
||||
"PowerLimit": {
|
||||
"displayText": "Limite\npotenza",
|
||||
@@ -213,7 +286,7 @@
|
||||
},
|
||||
"CalibrateCJC": {
|
||||
"displayText": "Calibra T\nall'avvio",
|
||||
"description": "Calibra le rilevazioni di temperatura al prossimo riavvio (non necessario se il Delta T<5 °C)"
|
||||
"description": "Calibra le rilevazioni di temperatura al prossimo riavvio (non necessario se lo scarto di temperatura è minore di 5 °C)"
|
||||
},
|
||||
"VoltageCalibration": {
|
||||
"displayText": "Calibrazione\ntensione",
|
||||
@@ -238,14 +311,6 @@
|
||||
"LanguageSwitch": {
|
||||
"displayText": "Lingua:\n IT Italiano",
|
||||
"description": ""
|
||||
},
|
||||
"BLEEnabled": {
|
||||
"displayText": "Abilita\nBluetooth LE",
|
||||
"description": ""
|
||||
},
|
||||
"PDVpdoEnabled": {
|
||||
"displayText": "PD VPDO\nEnabled",
|
||||
"description": "Enables PPS/EPR modes."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,8 +60,17 @@
|
||||
"OffString": {
|
||||
"message": "オフ"
|
||||
},
|
||||
"ProfilePreheatString": {
|
||||
"message": "Preheat"
|
||||
},
|
||||
"ProfileCooldownString": {
|
||||
"message": "Cooldown"
|
||||
},
|
||||
"DeviceFailedValidationWarning": {
|
||||
"message": "このデバイスはおそらく偽造品です"
|
||||
},
|
||||
"TooHotToStartProfileWarning": {
|
||||
"message": "Too hot to start profile"
|
||||
}
|
||||
},
|
||||
"characters": {
|
||||
@@ -119,6 +128,10 @@
|
||||
"displayText": "PD\ntimeout",
|
||||
"description": "一部のQC電源との互換性のため、PDネゴシエーションをタイムアウトする時間 <x100ms(ミリ秒)>"
|
||||
},
|
||||
"PDVpdo": {
|
||||
"displayText": "PD VPDO",
|
||||
"description": "Enables PPS & EPR modes"
|
||||
},
|
||||
"BoostTemperature": {
|
||||
"displayText": "ブースト温度",
|
||||
"description": "ブーストモードで使用される温度"
|
||||
@@ -139,6 +152,62 @@
|
||||
"displayText": "ボタンロック",
|
||||
"description": "半田付けモード時に両方のボタンを長押しし、ボタンロックする <×=オフ | ブ=ブーストのみ許可 | 全=すべてをロック>"
|
||||
},
|
||||
"ProfilePhases": {
|
||||
"displayText": "Profile Phases",
|
||||
"description": "Number of phases in profile mode"
|
||||
},
|
||||
"ProfilePreheatTemp": {
|
||||
"displayText": "Preheat Temp",
|
||||
"description": "Preheat to this temperature at the start of profile mode"
|
||||
},
|
||||
"ProfilePreheatSpeed": {
|
||||
"displayText": "Preheat Speed",
|
||||
"description": "Preheat at this rate (degrees per second)"
|
||||
},
|
||||
"ProfilePhase1Temp": {
|
||||
"displayText": "Phase 1 Temp",
|
||||
"description": "Target temperature for the end of this phase"
|
||||
},
|
||||
"ProfilePhase1Duration": {
|
||||
"displayText": "Phase 1 Duration",
|
||||
"description": "Target duration of this phase (seconds)"
|
||||
},
|
||||
"ProfilePhase2Temp": {
|
||||
"displayText": "Phase 2 Temp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase2Duration": {
|
||||
"displayText": "Phase 2 Duration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Temp": {
|
||||
"displayText": "Phase 3 Temp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Duration": {
|
||||
"displayText": "Phase 3 Duration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Temp": {
|
||||
"displayText": "Phase 4 Temp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Duration": {
|
||||
"displayText": "Phase 4 Duration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Temp": {
|
||||
"displayText": "Phase 5 Temp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Duration": {
|
||||
"displayText": "Phase 5 Duration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfileCooldownSpeed": {
|
||||
"displayText": "Cooldown Speed",
|
||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
||||
},
|
||||
"MotionSensitivity": {
|
||||
"displayText": "動きの感度",
|
||||
"description": "0=オフ | 1=最低感度 | ... | 9=最高感度"
|
||||
@@ -207,6 +276,10 @@
|
||||
"displayText": "詳細な作業画面",
|
||||
"description": "半田付け画面に詳細情報を表示する"
|
||||
},
|
||||
"BluetoothLE": {
|
||||
"displayText": "Bluetooth",
|
||||
"description": "Enables BLE"
|
||||
},
|
||||
"PowerLimit": {
|
||||
"displayText": "電力制限",
|
||||
"description": "最大電力を制限する <W=ワット>"
|
||||
@@ -238,14 +311,6 @@
|
||||
"LanguageSwitch": {
|
||||
"displayText": "言語: 日本語",
|
||||
"description": ""
|
||||
},
|
||||
"BLEEnabled": {
|
||||
"displayText": "BLE Enabled",
|
||||
"description": "Enables BLE"
|
||||
},
|
||||
"PDVpdoEnabled": {
|
||||
"displayText": "PD VPDO\nEnabled",
|
||||
"description": "Enables PPS/EPR modes."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,8 +60,17 @@
|
||||
"OffString": {
|
||||
"message": "Išj"
|
||||
},
|
||||
"ProfilePreheatString": {
|
||||
"message": "Preheat\n"
|
||||
},
|
||||
"ProfileCooldownString": {
|
||||
"message": "Cooldown\n"
|
||||
},
|
||||
"DeviceFailedValidationWarning": {
|
||||
"message": "Your device is most likely a counterfeit!"
|
||||
},
|
||||
"TooHotToStartProfileWarning": {
|
||||
"message": "Too hot to\nstart profile"
|
||||
}
|
||||
},
|
||||
"characters": {
|
||||
@@ -119,6 +128,10 @@
|
||||
"displayText": "PD\nlaikas",
|
||||
"description": "PD suderinimo laikas žingsniais po 100ms suderinamumui su kai kuriais QC įkrovikliais"
|
||||
},
|
||||
"PDVpdo": {
|
||||
"displayText": "PD\nVPDO",
|
||||
"description": "Enables PPS & EPR modes"
|
||||
},
|
||||
"BoostTemperature": {
|
||||
"displayText": "Turbo\ntemperat.",
|
||||
"description": "Temperatūra turbo režimu"
|
||||
@@ -139,6 +152,62 @@
|
||||
"displayText": "Mygtukų\nužraktas",
|
||||
"description": "Lituodami, ilgai paspauskite abu mygtukus, kad juos užrakintumėte (I=Išjungta | T=leidžiamas tik Turbo režimas | V=Visiškas užrakinimas)"
|
||||
},
|
||||
"ProfilePhases": {
|
||||
"displayText": "Profile\nPhases",
|
||||
"description": "Number of phases in profile mode"
|
||||
},
|
||||
"ProfilePreheatTemp": {
|
||||
"displayText": "Preheat\nTemp",
|
||||
"description": "Preheat to this temperature at the start of profile mode"
|
||||
},
|
||||
"ProfilePreheatSpeed": {
|
||||
"displayText": "Preheat\nSpeed",
|
||||
"description": "Preheat at this rate (degrees per second)"
|
||||
},
|
||||
"ProfilePhase1Temp": {
|
||||
"displayText": "Phase 1\nTemp",
|
||||
"description": "Target temperature for the end of this phase"
|
||||
},
|
||||
"ProfilePhase1Duration": {
|
||||
"displayText": "Phase 1\nDuration",
|
||||
"description": "Target duration of this phase (seconds)"
|
||||
},
|
||||
"ProfilePhase2Temp": {
|
||||
"displayText": "Phase 2\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase2Duration": {
|
||||
"displayText": "Phase 2\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Temp": {
|
||||
"displayText": "Phase 3\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Duration": {
|
||||
"displayText": "Phase 3\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Temp": {
|
||||
"displayText": "Phase 4\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Duration": {
|
||||
"displayText": "Phase 4\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Temp": {
|
||||
"displayText": "Phase 5\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Duration": {
|
||||
"displayText": "Phase 5\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfileCooldownSpeed": {
|
||||
"displayText": "Cooldown\nSpeed",
|
||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
||||
},
|
||||
"MotionSensitivity": {
|
||||
"displayText": "Judesio\njautrumas",
|
||||
"description": "Judesio jautrumas (0=Išjungta | 1=Mažiausias | ... | 9=Didžiausias)"
|
||||
@@ -207,6 +276,10 @@
|
||||
"displayText": "Detalus lita-\nvimo ekranas",
|
||||
"description": "Ar rodyti išsamią informaciją lituojant"
|
||||
},
|
||||
"BluetoothLE": {
|
||||
"displayText": "Bluetooth\n",
|
||||
"description": "Enables BLE"
|
||||
},
|
||||
"PowerLimit": {
|
||||
"displayText": "Galios\nriba",
|
||||
"description": "Didžiausia galia, kurią gali naudoti lituoklis (Vatai)"
|
||||
@@ -238,14 +311,6 @@
|
||||
"LanguageSwitch": {
|
||||
"displayText": "Kalba:\n LT Lietuvių",
|
||||
"description": ""
|
||||
},
|
||||
"BLEEnabled": {
|
||||
"displayText": "BLE\n Enabled",
|
||||
"description": ""
|
||||
},
|
||||
"PDVpdoEnabled": {
|
||||
"displayText": "PD VPDO\nEnabled",
|
||||
"description": "Enables PPS/EPR modes."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,8 +60,17 @@
|
||||
"OffString": {
|
||||
"message": "Av"
|
||||
},
|
||||
"ProfilePreheatString": {
|
||||
"message": "Preheat\n"
|
||||
},
|
||||
"ProfileCooldownString": {
|
||||
"message": "Cooldown\n"
|
||||
},
|
||||
"DeviceFailedValidationWarning": {
|
||||
"message": "Enheten din er sannsynligvis en forfalskning!"
|
||||
},
|
||||
"TooHotToStartProfileWarning": {
|
||||
"message": "Too hot to\nstart profile"
|
||||
}
|
||||
},
|
||||
"characters": {
|
||||
@@ -119,6 +128,10 @@
|
||||
"displayText": "PD-\ntidsavb.",
|
||||
"description": "PD-forhandlingstidsavbrudd i steg på 100 ms for kompatibilitet med noen QC-ladere"
|
||||
},
|
||||
"PDVpdo": {
|
||||
"displayText": "PD\nVPDO",
|
||||
"description": "Enables PPS & EPR modes"
|
||||
},
|
||||
"BoostTemperature": {
|
||||
"displayText": "KTmp\n",
|
||||
"description": "Temperatur i \"kraft-modus\""
|
||||
@@ -139,6 +152,62 @@
|
||||
"displayText": "Tillat å låse\nknapper",
|
||||
"description": "Mens du lodder, hold nede begge knapper for å bytte mellom låsemodus (D=deaktiver | B=kun boost | F=full lås)"
|
||||
},
|
||||
"ProfilePhases": {
|
||||
"displayText": "Profile\nPhases",
|
||||
"description": "Number of phases in profile mode"
|
||||
},
|
||||
"ProfilePreheatTemp": {
|
||||
"displayText": "Preheat\nTemp",
|
||||
"description": "Preheat to this temperature at the start of profile mode"
|
||||
},
|
||||
"ProfilePreheatSpeed": {
|
||||
"displayText": "Preheat\nSpeed",
|
||||
"description": "Preheat at this rate (degrees per second)"
|
||||
},
|
||||
"ProfilePhase1Temp": {
|
||||
"displayText": "Phase 1\nTemp",
|
||||
"description": "Target temperature for the end of this phase"
|
||||
},
|
||||
"ProfilePhase1Duration": {
|
||||
"displayText": "Phase 1\nDuration",
|
||||
"description": "Target duration of this phase (seconds)"
|
||||
},
|
||||
"ProfilePhase2Temp": {
|
||||
"displayText": "Phase 2\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase2Duration": {
|
||||
"displayText": "Phase 2\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Temp": {
|
||||
"displayText": "Phase 3\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Duration": {
|
||||
"displayText": "Phase 3\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Temp": {
|
||||
"displayText": "Phase 4\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Duration": {
|
||||
"displayText": "Phase 4\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Temp": {
|
||||
"displayText": "Phase 5\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Duration": {
|
||||
"displayText": "Phase 5\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfileCooldownSpeed": {
|
||||
"displayText": "Cooldown\nSpeed",
|
||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
||||
},
|
||||
"MotionSensitivity": {
|
||||
"displayText": "BSensr\n",
|
||||
"description": "Bevegelsesfølsomhet (0=Inaktiv | 1=Minst følsom | ... | 9=Mest følsom)"
|
||||
@@ -207,6 +276,10 @@
|
||||
"displayText": "AvLdSk\n",
|
||||
"description": "Vis detaljert informasjon ved lodding"
|
||||
},
|
||||
"BluetoothLE": {
|
||||
"displayText": "Bluetooth\n",
|
||||
"description": "Enables BLE"
|
||||
},
|
||||
"PowerLimit": {
|
||||
"displayText": "Effekt-\ngrense",
|
||||
"description": "Maks effekt jernet kan bruke (W=watt)"
|
||||
@@ -238,14 +311,6 @@
|
||||
"LanguageSwitch": {
|
||||
"displayText": "Språk:\n NB Norsk bm",
|
||||
"description": ""
|
||||
},
|
||||
"BLEEnabled": {
|
||||
"displayText": "BLE\n Enabled",
|
||||
"description": ""
|
||||
},
|
||||
"PDVpdoEnabled": {
|
||||
"displayText": "PD VPDO\nEnabled",
|
||||
"description": "Enables PPS/EPR modes."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,8 +60,17 @@
|
||||
"OffString": {
|
||||
"message": "Uit"
|
||||
},
|
||||
"ProfilePreheatString": {
|
||||
"message": "Preheat\n"
|
||||
},
|
||||
"ProfileCooldownString": {
|
||||
"message": "Cooldown\n"
|
||||
},
|
||||
"DeviceFailedValidationWarning": {
|
||||
"message": "Jouw toestel is wellicht een namaak-versie!"
|
||||
},
|
||||
"TooHotToStartProfileWarning": {
|
||||
"message": "Too hot to\nstart profile"
|
||||
}
|
||||
},
|
||||
"characters": {
|
||||
@@ -112,13 +121,17 @@
|
||||
"description": "Minimum toegestaan voltage per cell (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)"
|
||||
},
|
||||
"QCMaxVoltage": {
|
||||
"displayText": "QC\nVoltage",
|
||||
"displayText": "QC\nvoltage",
|
||||
"description": "Maximaal QC voltage dat gevraagd mag worden"
|
||||
},
|
||||
"PDNegTimeout": {
|
||||
"displayText": "PD\ntimeout",
|
||||
"description": "PD afstemmingsduur in stappen van 100ms (voor compatibiliteit met sommige QC laders)"
|
||||
},
|
||||
"PDVpdo": {
|
||||
"displayText": "PD\nVPDO",
|
||||
"description": "Enables PPS & EPR modes"
|
||||
},
|
||||
"BoostTemperature": {
|
||||
"displayText": "Boost\ntemp",
|
||||
"description": "Punt temperatuur in boostmode"
|
||||
@@ -139,6 +152,62 @@
|
||||
"displayText": "Knopblokkering\ninschakelen",
|
||||
"description": "Tijdens solderen lang op beide knoppen drukken blokkeert de knoppen (U=Uit | B=Alleen boost mode | V=Volledig blokkeren)"
|
||||
},
|
||||
"ProfilePhases": {
|
||||
"displayText": "Profile\nPhases",
|
||||
"description": "Number of phases in profile mode"
|
||||
},
|
||||
"ProfilePreheatTemp": {
|
||||
"displayText": "Preheat\nTemp",
|
||||
"description": "Preheat to this temperature at the start of profile mode"
|
||||
},
|
||||
"ProfilePreheatSpeed": {
|
||||
"displayText": "Preheat\nSpeed",
|
||||
"description": "Preheat at this rate (degrees per second)"
|
||||
},
|
||||
"ProfilePhase1Temp": {
|
||||
"displayText": "Phase 1\nTemp",
|
||||
"description": "Target temperature for the end of this phase"
|
||||
},
|
||||
"ProfilePhase1Duration": {
|
||||
"displayText": "Phase 1\nDuration",
|
||||
"description": "Target duration of this phase (seconds)"
|
||||
},
|
||||
"ProfilePhase2Temp": {
|
||||
"displayText": "Phase 2\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase2Duration": {
|
||||
"displayText": "Phase 2\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Temp": {
|
||||
"displayText": "Phase 3\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Duration": {
|
||||
"displayText": "Phase 3\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Temp": {
|
||||
"displayText": "Phase 4\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Duration": {
|
||||
"displayText": "Phase 4\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Temp": {
|
||||
"displayText": "Phase 5\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Duration": {
|
||||
"displayText": "Phase 5\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfileCooldownSpeed": {
|
||||
"displayText": "Cooldown\nSpeed",
|
||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
||||
},
|
||||
"MotionSensitivity": {
|
||||
"displayText": "Bewegings-\ngevoeligheid",
|
||||
"description": "Bewegingsgevoeligheid (0=uit | 1=minst gevoelig | ... | 9=meest gevoelig)"
|
||||
@@ -207,6 +276,10 @@
|
||||
"displayText": "Gedetailleerd\nsoldeerscherm",
|
||||
"description": "Gedetailleerde informatie weergeven in een kleiner lettertype op het soldeerscherm"
|
||||
},
|
||||
"BluetoothLE": {
|
||||
"displayText": "Bluetooth\n",
|
||||
"description": "Enables BLE"
|
||||
},
|
||||
"PowerLimit": {
|
||||
"displayText": "Vermogen\nlimiet",
|
||||
"description": "Maximaal vermogen (W=Watt)"
|
||||
@@ -238,14 +311,6 @@
|
||||
"LanguageSwitch": {
|
||||
"displayText": "Taal:\n NL Nederlands",
|
||||
"description": ""
|
||||
},
|
||||
"BLEEnabled": {
|
||||
"displayText": "BLE\n Enabled",
|
||||
"description": ""
|
||||
},
|
||||
"PDVpdoEnabled": {
|
||||
"displayText": "PD VPDO\nEnabled",
|
||||
"description": "Enables PPS/EPR modes."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,8 +60,17 @@
|
||||
"OffString": {
|
||||
"message": "Uit"
|
||||
},
|
||||
"ProfilePreheatString": {
|
||||
"message": "Preheat\n"
|
||||
},
|
||||
"ProfileCooldownString": {
|
||||
"message": "Cooldown\n"
|
||||
},
|
||||
"DeviceFailedValidationWarning": {
|
||||
"message": "Your device is most likely a counterfeit!"
|
||||
},
|
||||
"TooHotToStartProfileWarning": {
|
||||
"message": "Too hot to\nstart profile"
|
||||
}
|
||||
},
|
||||
"characters": {
|
||||
@@ -119,6 +128,10 @@
|
||||
"displayText": "PD\ntimeout",
|
||||
"description": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers"
|
||||
},
|
||||
"PDVpdo": {
|
||||
"displayText": "PD\nVPDO",
|
||||
"description": "Enables PPS & EPR modes"
|
||||
},
|
||||
"BoostTemperature": {
|
||||
"displayText": "Verhogings\ntemp",
|
||||
"description": "Verhogingstemperatuur"
|
||||
@@ -139,6 +152,62 @@
|
||||
"displayText": "Allow locking\nbuttons",
|
||||
"description": "While soldering, hold down both buttons to toggle locking them (D=disable | B=boost mode only | F=full locking)"
|
||||
},
|
||||
"ProfilePhases": {
|
||||
"displayText": "Profile\nPhases",
|
||||
"description": "Number of phases in profile mode"
|
||||
},
|
||||
"ProfilePreheatTemp": {
|
||||
"displayText": "Preheat\nTemp",
|
||||
"description": "Preheat to this temperature at the start of profile mode"
|
||||
},
|
||||
"ProfilePreheatSpeed": {
|
||||
"displayText": "Preheat\nSpeed",
|
||||
"description": "Preheat at this rate (degrees per second)"
|
||||
},
|
||||
"ProfilePhase1Temp": {
|
||||
"displayText": "Phase 1\nTemp",
|
||||
"description": "Target temperature for the end of this phase"
|
||||
},
|
||||
"ProfilePhase1Duration": {
|
||||
"displayText": "Phase 1\nDuration",
|
||||
"description": "Target duration of this phase (seconds)"
|
||||
},
|
||||
"ProfilePhase2Temp": {
|
||||
"displayText": "Phase 2\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase2Duration": {
|
||||
"displayText": "Phase 2\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Temp": {
|
||||
"displayText": "Phase 3\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Duration": {
|
||||
"displayText": "Phase 3\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Temp": {
|
||||
"displayText": "Phase 4\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Duration": {
|
||||
"displayText": "Phase 4\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Temp": {
|
||||
"displayText": "Phase 5\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Duration": {
|
||||
"displayText": "Phase 5\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfileCooldownSpeed": {
|
||||
"displayText": "Cooldown\nSpeed",
|
||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
||||
},
|
||||
"MotionSensitivity": {
|
||||
"displayText": "Bewegings-\ngevoeligheid",
|
||||
"description": "Bewegingsgevoeligheid (0=uit | 1=minst gevoelig | ... | 9=meest gevoelig)"
|
||||
@@ -207,6 +276,10 @@
|
||||
"displayText": "Gedetailleerd\nsoldeerscherm",
|
||||
"description": "Gedetailleerde informatie in kleiner lettertype in soldeerscherm."
|
||||
},
|
||||
"BluetoothLE": {
|
||||
"displayText": "Bluetooth\n",
|
||||
"description": "Enables BLE"
|
||||
},
|
||||
"PowerLimit": {
|
||||
"displayText": "Power\nlimit",
|
||||
"description": "Maximum power the iron can use (W=watt)"
|
||||
@@ -238,14 +311,6 @@
|
||||
"LanguageSwitch": {
|
||||
"displayText": "Spraak:\n NL_BE Vlaams",
|
||||
"description": ""
|
||||
},
|
||||
"BLEEnabled": {
|
||||
"displayText": "BLE\n Enabled",
|
||||
"description": ""
|
||||
},
|
||||
"PDVpdoEnabled": {
|
||||
"displayText": "PD VPDO\nEnabled",
|
||||
"description": "Enables PPS/EPR modes."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,8 +60,17 @@
|
||||
"OffString": {
|
||||
"message": "Wył"
|
||||
},
|
||||
"ProfilePreheatString": {
|
||||
"message": "Preheat\n"
|
||||
},
|
||||
"ProfileCooldownString": {
|
||||
"message": "Cooldown\n"
|
||||
},
|
||||
"DeviceFailedValidationWarning": {
|
||||
"message": "Twoje urządzenie jest najprawdopodobniej podróbką!"
|
||||
},
|
||||
"TooHotToStartProfileWarning": {
|
||||
"message": "Too hot to\nstart profile"
|
||||
}
|
||||
},
|
||||
"characters": {
|
||||
@@ -119,6 +128,10 @@
|
||||
"displayText": "Limit czasu\nPD",
|
||||
"description": "Limit czasu negocjacji PD w krokach co 100 ms dla zgodności z niektórymi ładowarkami QC (0: wyłączone)"
|
||||
},
|
||||
"PDVpdo": {
|
||||
"displayText": "PD\nVPDO",
|
||||
"description": "Włącza tryby PPS & EPR."
|
||||
},
|
||||
"BoostTemperature": {
|
||||
"displayText": "Temp.\nboost",
|
||||
"description": "Temperatura w trybie \"boost\" "
|
||||
@@ -139,6 +152,62 @@
|
||||
"displayText": "Blokada\nprzycisków",
|
||||
"description": "W trybie lutowania, wciśnij oba przyciski aby je zablokować (O=Wyłączona | B=tylko Boost | P=pełna blokada)"
|
||||
},
|
||||
"ProfilePhases": {
|
||||
"displayText": "Profile\nPhases",
|
||||
"description": "Number of phases in profile mode"
|
||||
},
|
||||
"ProfilePreheatTemp": {
|
||||
"displayText": "Preheat\nTemp",
|
||||
"description": "Preheat to this temperature at the start of profile mode"
|
||||
},
|
||||
"ProfilePreheatSpeed": {
|
||||
"displayText": "Preheat\nSpeed",
|
||||
"description": "Preheat at this rate (degrees per second)"
|
||||
},
|
||||
"ProfilePhase1Temp": {
|
||||
"displayText": "Phase 1\nTemp",
|
||||
"description": "Target temperature for the end of this phase"
|
||||
},
|
||||
"ProfilePhase1Duration": {
|
||||
"displayText": "Phase 1\nDuration",
|
||||
"description": "Target duration of this phase (seconds)"
|
||||
},
|
||||
"ProfilePhase2Temp": {
|
||||
"displayText": "Phase 2\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase2Duration": {
|
||||
"displayText": "Phase 2\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Temp": {
|
||||
"displayText": "Phase 3\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Duration": {
|
||||
"displayText": "Phase 3\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Temp": {
|
||||
"displayText": "Phase 4\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Duration": {
|
||||
"displayText": "Phase 4\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Temp": {
|
||||
"displayText": "Phase 5\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Duration": {
|
||||
"displayText": "Phase 5\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfileCooldownSpeed": {
|
||||
"displayText": "Cooldown\nSpeed",
|
||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
||||
},
|
||||
"MotionSensitivity": {
|
||||
"displayText": "Czułość\nwykr. ruchu",
|
||||
"description": "Czułość wykrywania ruchu (0: Wyłączona | 1: Minimalna | ... | 9: Maksymalna)"
|
||||
@@ -207,6 +276,10 @@
|
||||
"displayText": "Sz. inf. w\ntr. lutowania",
|
||||
"description": "Wyświetl szczegółowe informacje w trybie lutowania"
|
||||
},
|
||||
"BluetoothLE": {
|
||||
"displayText": "Bluetooth\n",
|
||||
"description": "Enables BLE"
|
||||
},
|
||||
"PowerLimit": {
|
||||
"displayText": "Ogr.\nmocy",
|
||||
"description": "Maksymalna moc (W), jakiej może użyć lutownica"
|
||||
@@ -238,14 +311,6 @@
|
||||
"LanguageSwitch": {
|
||||
"displayText": "Język:\n PL Polski",
|
||||
"description": ""
|
||||
},
|
||||
"BLEEnabled": {
|
||||
"displayText": "BLE\n Włączony",
|
||||
"description": ""
|
||||
},
|
||||
"PDVpdoEnabled": {
|
||||
"displayText": "PD VPDO\nWłączony",
|
||||
"description": "Włącza tryby PPS/EPR."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,10 +13,10 @@
|
||||
"message": "Algumas configurações\nforam alteradas!"
|
||||
},
|
||||
"NoAccelerometerMessage": {
|
||||
"message": "Acelarometro não\ndetectado!"
|
||||
"message": "Acelerómetro não\ndetetado!"
|
||||
},
|
||||
"NoPowerDeliveryMessage": {
|
||||
"message": "USB-PD IC não\ndetectado!"
|
||||
"message": "USB-PD IC não\ndetetado!"
|
||||
},
|
||||
"LockingKeysString": {
|
||||
"message": "Bloqueado"
|
||||
@@ -31,7 +31,7 @@
|
||||
"message": "Thermal\nRunaway"
|
||||
},
|
||||
"SettingsCalibrationWarning": {
|
||||
"message": "Antes de reninciar tenha a certeza que pega e o ponteiro estão em temperatura ambiente!"
|
||||
"message": "Antes de reiniciar certifique-se que o ferro está à temperatura ambiente!"
|
||||
},
|
||||
"CJCCalibrating": {
|
||||
"message": "calibrar\n"
|
||||
@@ -60,8 +60,17 @@
|
||||
"OffString": {
|
||||
"message": "Off"
|
||||
},
|
||||
"ProfilePreheatString": {
|
||||
"message": "Preheat\n"
|
||||
},
|
||||
"ProfileCooldownString": {
|
||||
"message": "Cooldown\n"
|
||||
},
|
||||
"DeviceFailedValidationWarning": {
|
||||
"message": "Seu dispositivo provavelmente é falsificado!"
|
||||
"message": "O seu dispositivo provavelmente é falsificado!"
|
||||
},
|
||||
"TooHotToStartProfileWarning": {
|
||||
"message": "Too hot to\nstart profile"
|
||||
}
|
||||
},
|
||||
"characters": {
|
||||
@@ -108,43 +117,103 @@
|
||||
"description": "Fonte de alimentação. Define a tensão de corte. (DC=10V) (S=3.3V/célula)"
|
||||
},
|
||||
"MinVolCell": {
|
||||
"displayText": "Voltagem\nminima",
|
||||
"description": "Voltagem minima permitida por ceula de bateria (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)"
|
||||
"displayText": "Tensão\nmínima",
|
||||
"description": "Tensão mínima permitida por célula de bateria (3S: 3 - 3.7V | 4-6S: 2.4 - 3.7V)"
|
||||
},
|
||||
"QCMaxVoltage": {
|
||||
"displayText": "Potência\nFonte",
|
||||
"description": "Potência da fonte usada (Watt)"
|
||||
},
|
||||
"PDNegTimeout": {
|
||||
"displayText": "PD\ntimeout",
|
||||
"description": "Negoiciação de PD fez timeout em 100ms paraços para compatibilidade com alguns carregadores é (0: disabled)"
|
||||
"displayText": "PD tempo\nlimite",
|
||||
"description": "Tempo limite de negoiciação de PD de 100ms para compatibilidade com alguns carregadores é (0: disabled)"
|
||||
},
|
||||
"PDVpdo": {
|
||||
"displayText": "PD\nVPDO",
|
||||
"description": "Activa o modo PPS & EPR"
|
||||
},
|
||||
"BoostTemperature": {
|
||||
"displayText": "Modo turbo\ntemperat.",
|
||||
"displayText": "Temp.\nModo turbo",
|
||||
"description": "Ajuste de temperatura do \"modo turbo\""
|
||||
},
|
||||
"AutoStart": {
|
||||
"displayText": "Partida\nautomática",
|
||||
"displayText": "Aquecimento\nautomático",
|
||||
"description": "Aquece a ponta automaticamente ao ligar (D=desligar | S=soldagem | H=hibernar | A=hibernar temp. ambiente)"
|
||||
},
|
||||
"TempChangeShortStep": {
|
||||
"displayText": "Temp mudança\ncurta",
|
||||
"description": "A temperatura será incrementada com um click curto"
|
||||
"displayText": "Mudança temp.\ncurta",
|
||||
"description": "A temperatura será aumentada com um click curto"
|
||||
},
|
||||
"TempChangeLongStep": {
|
||||
"displayText": "Temp mudança\nlonga",
|
||||
"description": "A temperatura será incrementada com um click longo"
|
||||
"displayText": "Mudança temp.\nlonga",
|
||||
"description": "A temperatura será aumentada com um click longo"
|
||||
},
|
||||
"LockingMode": {
|
||||
"displayText": "Permitir bloquear\nbutões",
|
||||
"description": "Quando estás a soldar primir os dois butões para alternar entre (D=disativas | B=boost mode | F=bloqueio total)"
|
||||
"displayText": "Permitir bloquear\nbotões",
|
||||
"description": "Durante a solda premir os dois botões para alternar entre (D=desativados | B=modo turbo | F=bloqueio total)"
|
||||
},
|
||||
"ProfilePhases": {
|
||||
"displayText": "Profile\nPhases",
|
||||
"description": "Number of phases in profile mode"
|
||||
},
|
||||
"ProfilePreheatTemp": {
|
||||
"displayText": "Preheat\nTemp",
|
||||
"description": "Preheat to this temperature at the start of profile mode"
|
||||
},
|
||||
"ProfilePreheatSpeed": {
|
||||
"displayText": "Preheat\nSpeed",
|
||||
"description": "Preheat at this rate (degrees per second)"
|
||||
},
|
||||
"ProfilePhase1Temp": {
|
||||
"displayText": "Phase 1\nTemp",
|
||||
"description": "Target temperature for the end of this phase"
|
||||
},
|
||||
"ProfilePhase1Duration": {
|
||||
"displayText": "Phase 1\nDuration",
|
||||
"description": "Target duration of this phase (seconds)"
|
||||
},
|
||||
"ProfilePhase2Temp": {
|
||||
"displayText": "Phase 2\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase2Duration": {
|
||||
"displayText": "Phase 2\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Temp": {
|
||||
"displayText": "Phase 3\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Duration": {
|
||||
"displayText": "Phase 3\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Temp": {
|
||||
"displayText": "Phase 4\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Duration": {
|
||||
"displayText": "Phase 4\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Temp": {
|
||||
"displayText": "Phase 5\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Duration": {
|
||||
"displayText": "Phase 5\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfileCooldownSpeed": {
|
||||
"displayText": "Cooldown\nSpeed",
|
||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
||||
},
|
||||
"MotionSensitivity": {
|
||||
"displayText": "Sensibilidade\nmovimento",
|
||||
"description": "Sensibilidade ao movimento (0=Desligado | 1=Menor | ... | 9=Maior)"
|
||||
},
|
||||
"SleepTemperature": {
|
||||
"displayText": "Temperat.\nrepouso",
|
||||
"displayText": "Temperatura\nrepouso",
|
||||
"description": "Temperatura de repouso (C)"
|
||||
},
|
||||
"SleepTimeout": {
|
||||
@@ -152,11 +221,11 @@
|
||||
"description": "Tempo para repouso (Minutos | Segundos)"
|
||||
},
|
||||
"ShutdownTimeout": {
|
||||
"displayText": "Tempo\ndesligam.",
|
||||
"description": "Tempo para desligamento (Minutos)"
|
||||
"displayText": "Tempo\ndesligar",
|
||||
"description": "Tempo para desligar (Minutos)"
|
||||
},
|
||||
"HallEffSensitivity": {
|
||||
"displayText": "Sensibilidade de\nmagentismo",
|
||||
"displayText": "Sensibilidade de\nmagnetismo",
|
||||
"description": "Sensibilidade de magnetismo (0=Desligado | 1=Menor | ... | 9=Maior)"
|
||||
},
|
||||
"TemperatureUnit": {
|
||||
@@ -164,8 +233,8 @@
|
||||
"description": "Unidade de temperatura (C=Celsius | F=Fahrenheit)"
|
||||
},
|
||||
"DisplayRotation": {
|
||||
"displayText": "Orientação\ntela",
|
||||
"description": "Orientação da tela (D=estro | C=anhoto | A=utomática)"
|
||||
"displayText": "Orientação\necrã",
|
||||
"description": "Orientação do ecrã (D=estro | C=anhoto | A=utomática)"
|
||||
},
|
||||
"CooldownBlink": {
|
||||
"displayText": "Piscar ao\narrefecer",
|
||||
@@ -173,79 +242,75 @@
|
||||
},
|
||||
"ScrollingSpeed": {
|
||||
"displayText": "Velocidade\ntexto ajuda",
|
||||
"description": "Velocidade a que o texto é exibido"
|
||||
"description": "Velocidade a que o texto de ajuda é apresentado"
|
||||
},
|
||||
"ReverseButtonTempChange": {
|
||||
"displayText": "Mudar\n+ - teclas",
|
||||
"description": "Inverter o alinhamento dos butões para ajudar a temperatura"
|
||||
"displayText": "Trocar\nbotões + -",
|
||||
"description": "Inverte o funcionamento dos botões de ajuste da temperatura"
|
||||
},
|
||||
"AnimSpeed": {
|
||||
"displayText": "Velocidade de\nanimação",
|
||||
"description": "Sitio das animações no menu (O=off | S=lentas | M=medias | F=rapidas)"
|
||||
"description": "Velocidade das animações no menu (O=off | S=lenta | M=média | F=rápida)"
|
||||
},
|
||||
"AnimLoop": {
|
||||
"displayText": "Repetir\nanimações",
|
||||
"description": "Repetir icon de animações no ecrã principal"
|
||||
"description": "Repete animações de ícones no menu principal"
|
||||
},
|
||||
"Brightness": {
|
||||
"displayText": "Screen\nbrightness",
|
||||
"description": "Ajustar o brilho do ecrã OLED"
|
||||
"displayText": "Brilho\ndo ecrã",
|
||||
"description": "Ajusta o brilho do ecrã OLED"
|
||||
},
|
||||
"ColourInversion": {
|
||||
"displayText": "Inverter\necrã",
|
||||
"description": "Inverter as cores do ecrã OLED"
|
||||
"description": "Inverte as cores do ecrã OLED"
|
||||
},
|
||||
"LOGOTime": {
|
||||
"displayText": "Duração do\nlogo no arranque",
|
||||
"description": "Definir a duração do logotipo no arranque em (s=segundos)"
|
||||
"description": "Define a duração do logotipo no arranque em (s=segundos)"
|
||||
},
|
||||
"AdvancedIdle": {
|
||||
"displayText": "Tela repouso\navançada",
|
||||
"description": "Exibe informações avançadas quando em espera"
|
||||
"displayText": "Ecrã repouso\navançado",
|
||||
"description": "Mostra informações avançadas quando em repouso"
|
||||
},
|
||||
"AdvancedSoldering": {
|
||||
"displayText": "Tela trabalho\navançada",
|
||||
"description": "Exibe informações avançadas durante o uso"
|
||||
"displayText": "Ecrã solda\navançado",
|
||||
"description": "Mostra informações avançadas durante a solda"
|
||||
},
|
||||
"BluetoothLE": {
|
||||
"displayText": "Bluetooth\n",
|
||||
"description": "Ativa o Bluetooth Low Energy (BLE)"
|
||||
},
|
||||
"PowerLimit": {
|
||||
"displayText": "Limite de\nenergia",
|
||||
"description": "Maximo power que o ferro pode usar (W=watt)"
|
||||
"displayText": "Limite de\npotência",
|
||||
"description": "Potência máxima a usar (W=watt)"
|
||||
},
|
||||
"CalibrateCJC": {
|
||||
"displayText": "Calibrar CJC\nno prozimo arranque",
|
||||
"description": "No proximo arranque CJC será calibrada (não será necessário caso o Delta T seja < 5°C)"
|
||||
"displayText": "Calibrar CJC\nno próximo arranque",
|
||||
"description": "No próximo arranque CJC será calibrada (não será necessário caso o Delta T seja < 5°C)"
|
||||
},
|
||||
"VoltageCalibration": {
|
||||
"displayText": "Calibrar\ntensão",
|
||||
"description": "Calibra a tensão de alimentação. Use os botões para ajustar o valor. Mantenha pressionado para sair"
|
||||
},
|
||||
"PowerPulsePower": {
|
||||
"displayText": "Pulso\npower",
|
||||
"description": "Intensidade de energia de arranque (W=watt)"
|
||||
"displayText": "Potência\ndo pulso",
|
||||
"description": "Intensidade de potência de arranque (W=watt)"
|
||||
},
|
||||
"PowerPulseWait": {
|
||||
"displayText": "Power pulse\ndelay",
|
||||
"displayText": "Espera do\npulso",
|
||||
"description": "Espera entre o acordar e o envio da rectivação (x 2.5s)"
|
||||
},
|
||||
"PowerPulseDuration": {
|
||||
"displayText": "Power pulso\nduração",
|
||||
"displayText": "Duração\npulso",
|
||||
"description": "Manter os inplosus de rectivação em (x 250ms)"
|
||||
},
|
||||
"SettingsReset": {
|
||||
"displayText": "Reset de\nfábrica?",
|
||||
"description": "Reverte todos ajustes"
|
||||
"description": "Repôe todos os ajustes"
|
||||
},
|
||||
"LanguageSwitch": {
|
||||
"displayText": "Idioma:\n PT Português",
|
||||
"description": ""
|
||||
},
|
||||
"BLEEnabled": {
|
||||
"displayText": "BLE\nactivado",
|
||||
"description": ""
|
||||
},
|
||||
"PDVpdoEnabled": {
|
||||
"displayText": "PD VPDO\nactivado",
|
||||
"description": "Activa o modo PPS/EPR"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
"message": "Setările au fost\nresetate!"
|
||||
},
|
||||
"NoAccelerometerMessage": {
|
||||
"message": "Nu accelerometru\ndetectat!"
|
||||
"message": "Fără accelerometru\ndetectat!"
|
||||
},
|
||||
"NoPowerDeliveryMessage": {
|
||||
"message": "Fără USB-PD IC\ndetectat!"
|
||||
@@ -28,22 +28,22 @@
|
||||
"message": "!BLOCAT!"
|
||||
},
|
||||
"WarningThermalRunaway": {
|
||||
"message": "Incalzire\nEsuata"
|
||||
"message": "Încălzire\nEşuată"
|
||||
},
|
||||
"SettingsCalibrationWarning": {
|
||||
"message": "Before rebooting, make sure tip & handle are at room temperature!"
|
||||
"message": "Înainte de repornire, asiguraţi-vă că vârful şi mânerul sunt la temperatura camerei!"
|
||||
},
|
||||
"CJCCalibrating": {
|
||||
"message": "calibrating\n"
|
||||
"message": "calibrare\n"
|
||||
},
|
||||
"SettingsResetWarning": {
|
||||
"message": "Sigur doriti să restaurati la setările implicite?"
|
||||
"message": "Sigur doriţi să restauraţi la setările implicite?"
|
||||
},
|
||||
"UVLOWarningString": {
|
||||
"message": "DC LOW"
|
||||
"message": "DC SCĂZUT"
|
||||
},
|
||||
"UndervoltageString": {
|
||||
"message": "Sub tensiune\n"
|
||||
"message": "Voltaj scăzut\n"
|
||||
},
|
||||
"InputVoltageString": {
|
||||
"message": "Intrare V: \n"
|
||||
@@ -60,8 +60,17 @@
|
||||
"OffString": {
|
||||
"message": "Nu"
|
||||
},
|
||||
"ProfilePreheatString": {
|
||||
"message": "Preheat\n"
|
||||
},
|
||||
"ProfileCooldownString": {
|
||||
"message": "Cooldown\n"
|
||||
},
|
||||
"DeviceFailedValidationWarning": {
|
||||
"message": "Your device is most likely a counterfeit!"
|
||||
"message": "Dispozitivul dvs. este cel mai probabil un fals!"
|
||||
},
|
||||
"TooHotToStartProfileWarning": {
|
||||
"message": "Too hot to\nstart profile"
|
||||
}
|
||||
},
|
||||
"characters": {
|
||||
@@ -94,18 +103,18 @@
|
||||
"description": ""
|
||||
},
|
||||
"UIMenu": {
|
||||
"displayText": "Interfată\nutilizator",
|
||||
"displayText": "Interfaţă\nutilizator",
|
||||
"description": ""
|
||||
},
|
||||
"AdvancedMenu": {
|
||||
"displayText": "Optiuni\navansate",
|
||||
"displayText": "Opţiuni\navansate",
|
||||
"description": ""
|
||||
}
|
||||
},
|
||||
"menuOptions": {
|
||||
"DCInCutoff": {
|
||||
"displayText": "Sursa de\nalimentare",
|
||||
"description": "Sursa de alimentare. Setează tensiunea de întrerupere. (DC 10V) (S 3.3V per celulă, dezactivati limita de alimentare)"
|
||||
"description": "Sursa de alimentare. Setează tensiunea de întrerupere. (DC 10V) (S 3.3V per celulă, dezactivaţi limita de alimentare)"
|
||||
},
|
||||
"MinVolCell": {
|
||||
"displayText": "Voltaj\nminim",
|
||||
@@ -117,11 +126,15 @@
|
||||
},
|
||||
"PDNegTimeout": {
|
||||
"displayText": "PD\ntimeout",
|
||||
"description": "Timp limita de negociere pentru tranzactia PD, in pasi de 100ms, pentru compatibilitate cu alimentatoarele QC"
|
||||
"description": "Timp limită de negociere pentru tranzacţia PD, în paşi de 100ms, pentru compatibilitate cu alimentatoarele QC"
|
||||
},
|
||||
"PDVpdo": {
|
||||
"displayText": "PD\nVPDO",
|
||||
"description": "Enables PPS & EPR modes"
|
||||
},
|
||||
"BoostTemperature": {
|
||||
"displayText": "Boost\ntemp",
|
||||
"description": "Temperatura utilizată în \"modul boost\""
|
||||
"displayText": "Modifică\ntemp. impuls",
|
||||
"description": "Temperatura utilizată în \"modul de impuls\""
|
||||
},
|
||||
"AutoStart": {
|
||||
"displayText": "Auto\nstart",
|
||||
@@ -137,11 +150,67 @@
|
||||
},
|
||||
"LockingMode": {
|
||||
"displayText": "Blocare\nbutoane",
|
||||
"description": "Când lipiti, apăsati lung ambele butoane, pentru a le bloca (D=dezactivare | B=numai \"modul boost\" | F=blocare completă)"
|
||||
"description": "Când lipiţi, apăsaţi lung ambele butoane, pentru a le bloca (D=dezactivare | B=numai \"modul boost\" | F=blocare completă)"
|
||||
},
|
||||
"ProfilePhases": {
|
||||
"displayText": "Profile\nPhases",
|
||||
"description": "Number of phases in profile mode"
|
||||
},
|
||||
"ProfilePreheatTemp": {
|
||||
"displayText": "Preheat\nTemp",
|
||||
"description": "Preheat to this temperature at the start of profile mode"
|
||||
},
|
||||
"ProfilePreheatSpeed": {
|
||||
"displayText": "Preheat\nSpeed",
|
||||
"description": "Preheat at this rate (degrees per second)"
|
||||
},
|
||||
"ProfilePhase1Temp": {
|
||||
"displayText": "Phase 1\nTemp",
|
||||
"description": "Target temperature for the end of this phase"
|
||||
},
|
||||
"ProfilePhase1Duration": {
|
||||
"displayText": "Phase 1\nDuration",
|
||||
"description": "Target duration of this phase (seconds)"
|
||||
},
|
||||
"ProfilePhase2Temp": {
|
||||
"displayText": "Phase 2\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase2Duration": {
|
||||
"displayText": "Phase 2\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Temp": {
|
||||
"displayText": "Phase 3\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Duration": {
|
||||
"displayText": "Phase 3\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Temp": {
|
||||
"displayText": "Phase 4\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Duration": {
|
||||
"displayText": "Phase 4\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Temp": {
|
||||
"displayText": "Phase 5\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Duration": {
|
||||
"displayText": "Phase 5\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfileCooldownSpeed": {
|
||||
"displayText": "Cooldown\nSpeed",
|
||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
||||
},
|
||||
"MotionSensitivity": {
|
||||
"displayText": "Sensibilitate\nla miscare",
|
||||
"description": "Sensibilitate senzor miscare (0=oprit | 1=putin sensibil | ... | 9=cel mai sensibil)"
|
||||
"description": "Sensibilitate senzor miscare (0=oprit | 1=puţin sensibil | ... | 9=cel mai sensibil)"
|
||||
},
|
||||
"SleepTemperature": {
|
||||
"displayText": "Temp\nrepaus",
|
||||
@@ -168,8 +237,8 @@
|
||||
"description": "R=dreptaci | L=stângaci | A=auto"
|
||||
},
|
||||
"CooldownBlink": {
|
||||
"displayText": "Clipeste\nla răcire",
|
||||
"description": "Clipeste temperatura după oprirea încălzirii, în timp ce vârful este încă fierbinte"
|
||||
"displayText": "Clipeşte\nla răcire",
|
||||
"description": "Clipeşte temperatura după oprirea încălzirii, în timp ce vârful este încă fierbinte"
|
||||
},
|
||||
"ScrollingSpeed": {
|
||||
"displayText": "Viteză\nderulare",
|
||||
@@ -180,32 +249,36 @@
|
||||
"description": "Inversarea butoanelor de reglare a temperaturii"
|
||||
},
|
||||
"AnimSpeed": {
|
||||
"displayText": "Animatii\nviteză",
|
||||
"description": "Ritmul animatiilor pictogramei din meniu (O=oprit | Î=încet | M=mediu | R=rapid)"
|
||||
"displayText": "Animaţii\nviteză",
|
||||
"description": "Ritmul animaţiilor pictogramei din meniu (O=oprit | Î=încet | M=mediu | R=rapid)"
|
||||
},
|
||||
"AnimLoop": {
|
||||
"displayText": "Animatii\nbuclă",
|
||||
"description": "Animatii de pictograme în meniul principal"
|
||||
"displayText": "Animaţii\nbuclă",
|
||||
"description": "Animaţii de pictograme în meniul principal"
|
||||
},
|
||||
"Brightness": {
|
||||
"displayText": "Ecranului\nluminozitatea",
|
||||
"description": "Ajusteaza luminozitatea ecranului"
|
||||
},
|
||||
"ColourInversion": {
|
||||
"displayText": "Inverseaza\nculoarea",
|
||||
"description": "Inverseaza culoarea ecranului"
|
||||
"displayText": "Inversează\nculoarea",
|
||||
"description": "Inversează culoarea ecranului"
|
||||
},
|
||||
"LOGOTime": {
|
||||
"displayText": "Durată\nlogo încărcare",
|
||||
"description": "Setati durata logo de pornire (s=secunde)"
|
||||
"description": "Setaţi durată logo de pornire (s=secunde)"
|
||||
},
|
||||
"AdvancedIdle": {
|
||||
"displayText": "Detalii,\necran inactiv",
|
||||
"description": "Afisati informatii detaliate într-un font mai mic pe ecranul de repaus"
|
||||
"description": "Afisaţi informaţii detaliate într-un font mai mic pe ecranul de repaus"
|
||||
},
|
||||
"AdvancedSoldering": {
|
||||
"displayText": "Detalii\necran lipire",
|
||||
"description": "Afisati informatii detaliate într-un font mai mic pe ecranul de lipire"
|
||||
"description": "Afisaţi informaţii detaliate într-un font mai mic pe ecranul de lipire"
|
||||
},
|
||||
"BluetoothLE": {
|
||||
"displayText": "Bluetooth\n",
|
||||
"description": "Activează BLE"
|
||||
},
|
||||
"PowerLimit": {
|
||||
"displayText": "Putere\nlimită",
|
||||
@@ -213,15 +286,15 @@
|
||||
},
|
||||
"CalibrateCJC": {
|
||||
"displayText": "Calibrare CJC\nla următoarea pornire",
|
||||
"description": "At next boot tip Cold Junction Compensation will be calibrated (not required if Delta T is < 5°C)"
|
||||
"description": "La următorul vârf de pornire, compensarea joncţiunii reci va fi calibrată (nu este necesară dacă Delta T este < 5°C)"
|
||||
},
|
||||
"VoltageCalibration": {
|
||||
"displayText": "Calibrare tens.\nde intrare?",
|
||||
"description": "Porniti calibrarea VIN (apăsati lung pentru a iesi)"
|
||||
"description": "Porniţi calibrarea VIN (apăsaţi lung pentru a ieşi)"
|
||||
},
|
||||
"PowerPulsePower": {
|
||||
"displayText": "Putere\npuls",
|
||||
"description": "Puterea pulsului de mentinere activa a blocului de alimentare (watt)"
|
||||
"description": "Puterea pulsului de menţinere activă a blocului de alimentare (watt)"
|
||||
},
|
||||
"PowerPulseWait": {
|
||||
"displayText": "Întârziere\npuls putere",
|
||||
@@ -229,23 +302,15 @@
|
||||
},
|
||||
"PowerPulseDuration": {
|
||||
"displayText": "Durată\npuls putere",
|
||||
"description": "Durata pulsului de mentinere (x 250ms)"
|
||||
"description": "Durata pulsului de menţinere (x 250ms)"
|
||||
},
|
||||
"SettingsReset": {
|
||||
"displayText": "Setări\ndin fabrică",
|
||||
"description": "Reveniti la setările din fabrică"
|
||||
"description": "Reveniţi la setările din fabrică"
|
||||
},
|
||||
"LanguageSwitch": {
|
||||
"displayText": "Limbă:\n RO Română",
|
||||
"description": ""
|
||||
},
|
||||
"BLEEnabled": {
|
||||
"displayText": "BLE\n Enabled",
|
||||
"description": ""
|
||||
},
|
||||
"PDVpdoEnabled": {
|
||||
"displayText": "PD VPDO\nEnabled",
|
||||
"description": "Enables PPS/EPR modes."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,8 +60,17 @@
|
||||
"OffString": {
|
||||
"message": "Вык"
|
||||
},
|
||||
"ProfilePreheatString": {
|
||||
"message": "Преднагрев\n"
|
||||
},
|
||||
"ProfileCooldownString": {
|
||||
"message": "Остывание\n"
|
||||
},
|
||||
"DeviceFailedValidationWarning": {
|
||||
"message": "Скорее всего, это устройство подделка!"
|
||||
"message": "Вероятно, это устройство подделка!"
|
||||
},
|
||||
"TooHotToStartProfileWarning": {
|
||||
"message": "Слишком горячо для\nстарта профиля"
|
||||
}
|
||||
},
|
||||
"characters": {
|
||||
@@ -119,6 +128,10 @@
|
||||
"displayText": "PD\nтайм-аут",
|
||||
"description": "Power Delivery тайм-аут согласования с шагом 100 мс для совместимости с некоторыми быстрыми зарядными QC (0: отключено)"
|
||||
},
|
||||
"PDVpdo": {
|
||||
"displayText": "PD\nVPDO",
|
||||
"description": "Включает режимы PPS & EPR."
|
||||
},
|
||||
"BoostTemperature": {
|
||||
"displayText": "t° турбо\nрежима",
|
||||
"description": "Температура жала в турбо-режиме"
|
||||
@@ -139,6 +152,62 @@
|
||||
"displayText": "Разрешить\nблок. кнопок",
|
||||
"description": "При работе длинное нажатие обеих кнопок блокирует их (О=Отключено | Т=Только турбо | П=Полная блокировка)"
|
||||
},
|
||||
"ProfilePhases": {
|
||||
"displayText": "Профиль\nЭтапы",
|
||||
"description": "Количество этапов в режиме профиля"
|
||||
},
|
||||
"ProfilePreheatTemp": {
|
||||
"displayText": "Преднагрев\nТемпература",
|
||||
"description": "Разогреть до этой температуры в начале режима профиля"
|
||||
},
|
||||
"ProfilePreheatSpeed": {
|
||||
"displayText": "Преднагрев\nСкорость",
|
||||
"description": "Предварительный нагрев с этой скоростью (градусов в секунду)"
|
||||
},
|
||||
"ProfilePhase1Temp": {
|
||||
"displayText": "Этап 1\nТемпература",
|
||||
"description": "Целевая температура в конце этого эатпа"
|
||||
},
|
||||
"ProfilePhase1Duration": {
|
||||
"displayText": "Этап 1\nДлительность",
|
||||
"description": "Целевая длительность этого этапа (секунды)"
|
||||
},
|
||||
"ProfilePhase2Temp": {
|
||||
"displayText": "Этап 2\nТемпература",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase2Duration": {
|
||||
"displayText": "Этап 2\nДлительность",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Temp": {
|
||||
"displayText": "Этап 3\nТемпература",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Duration": {
|
||||
"displayText": "Этап 3\nДлительность",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Temp": {
|
||||
"displayText": "Этап 4\nТемпература",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Duration": {
|
||||
"displayText": "Этап 4\nДлительность",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Temp": {
|
||||
"displayText": "Этап 5\nТемпература",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Duration": {
|
||||
"displayText": "Этап 5\nДлительность",
|
||||
"description": ""
|
||||
},
|
||||
"ProfileCooldownSpeed": {
|
||||
"displayText": "Остывание\nСкорость",
|
||||
"description": "Остывать с такой скоростью в конце режима профиля (градусов в секунду)"
|
||||
},
|
||||
"MotionSensitivity": {
|
||||
"displayText": "Чувствительн.\nакселерометра",
|
||||
"description": "Чувствительность акселерометра (0=Выкл. | 1=мин. | ... | 9=макс.)"
|
||||
@@ -173,7 +242,7 @@
|
||||
},
|
||||
"ScrollingSpeed": {
|
||||
"displayText": "Скорость\nтекста",
|
||||
"description": "Скорость прокрутки текста (М=медленно | Б=быстро)"
|
||||
"description": "Скорость прокрутки текста (М=Медленная | Б=Быстрая)"
|
||||
},
|
||||
"ReverseButtonTempChange": {
|
||||
"displayText": "Поменять\nкнопки+-",
|
||||
@@ -181,7 +250,7 @@
|
||||
},
|
||||
"AnimSpeed": {
|
||||
"displayText": "Скорость\nанимации",
|
||||
"description": "Скорость анимации иконок в главном меню (Милисекунды) (О=Отключено | Н=Низкий | С=Средний | В=Высокий)"
|
||||
"description": "Скорость анимации иконок в главном меню (О=Отключено | М=Медленная| С=Средняя | Б=Быстрая)"
|
||||
},
|
||||
"AnimLoop": {
|
||||
"displayText": "Зацикленная\nанимация",
|
||||
@@ -207,6 +276,10 @@
|
||||
"displayText": "Подробный\nэкран пайки",
|
||||
"description": "Показывать детальную информацию на экране пайки"
|
||||
},
|
||||
"BluetoothLE": {
|
||||
"displayText": "Bluetooth\n",
|
||||
"description": "Активирует BLE"
|
||||
},
|
||||
"PowerLimit": {
|
||||
"displayText": "Предел\nмощности",
|
||||
"description": "Максимальная мощность, которую может использовать паяльник (Ватт)"
|
||||
@@ -238,14 +311,6 @@
|
||||
"LanguageSwitch": {
|
||||
"displayText": "Язык:\n RU Русский",
|
||||
"description": ""
|
||||
},
|
||||
"BLEEnabled": {
|
||||
"displayText": "BLE\n Включено",
|
||||
"description": ""
|
||||
},
|
||||
"PDVpdoEnabled": {
|
||||
"displayText": "PD VPDO\nВключено",
|
||||
"description": "Включает режимы PPS/EPR."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,8 +60,17 @@
|
||||
"OffString": {
|
||||
"message": "Vyp"
|
||||
},
|
||||
"ProfilePreheatString": {
|
||||
"message": "Preheat\n"
|
||||
},
|
||||
"ProfileCooldownString": {
|
||||
"message": "Cooldown\n"
|
||||
},
|
||||
"DeviceFailedValidationWarning": {
|
||||
"message": "Vaše zariadenie je pravdepodobne falzifikát!"
|
||||
},
|
||||
"TooHotToStartProfileWarning": {
|
||||
"message": "Too hot to\nstart profile"
|
||||
}
|
||||
},
|
||||
"characters": {
|
||||
@@ -119,6 +128,10 @@
|
||||
"displayText": "Čas vypršania\nPower Delivery",
|
||||
"description": "Čas vyjednávania Power Delivery v 100ms krokoch pre kompatibilitu s niektorými QC nabíjačkami (0: vypnuté)"
|
||||
},
|
||||
"PDVpdo": {
|
||||
"displayText": "PD\nVPDO",
|
||||
"description": "Enables PPS & EPR modes"
|
||||
},
|
||||
"BoostTemperature": {
|
||||
"displayText": "Boost\nteplota",
|
||||
"description": "Cieľová teplota pre prudký náhrev (v nastavených jednotkách)"
|
||||
@@ -139,6 +152,62 @@
|
||||
"displayText": "Povoliť zámok\ntlačidiel",
|
||||
"description": "Zamknutie tlačidiel - dlhé stlačenie oboch naraz počas spájkovania (Z=Zakázať | B=Okrem boost | P=Plné zamknutie)"
|
||||
},
|
||||
"ProfilePhases": {
|
||||
"displayText": "Profile\nPhases",
|
||||
"description": "Number of phases in profile mode"
|
||||
},
|
||||
"ProfilePreheatTemp": {
|
||||
"displayText": "Preheat\nTemp",
|
||||
"description": "Preheat to this temperature at the start of profile mode"
|
||||
},
|
||||
"ProfilePreheatSpeed": {
|
||||
"displayText": "Preheat\nSpeed",
|
||||
"description": "Preheat at this rate (degrees per second)"
|
||||
},
|
||||
"ProfilePhase1Temp": {
|
||||
"displayText": "Phase 1\nTemp",
|
||||
"description": "Target temperature for the end of this phase"
|
||||
},
|
||||
"ProfilePhase1Duration": {
|
||||
"displayText": "Phase 1\nDuration",
|
||||
"description": "Target duration of this phase (seconds)"
|
||||
},
|
||||
"ProfilePhase2Temp": {
|
||||
"displayText": "Phase 2\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase2Duration": {
|
||||
"displayText": "Phase 2\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Temp": {
|
||||
"displayText": "Phase 3\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Duration": {
|
||||
"displayText": "Phase 3\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Temp": {
|
||||
"displayText": "Phase 4\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Duration": {
|
||||
"displayText": "Phase 4\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Temp": {
|
||||
"displayText": "Phase 5\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Duration": {
|
||||
"displayText": "Phase 5\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfileCooldownSpeed": {
|
||||
"displayText": "Cooldown\nSpeed",
|
||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
||||
},
|
||||
"MotionSensitivity": {
|
||||
"displayText": "Citlivosť\npohybu",
|
||||
"description": "Citlivosť detekcie pohybu (0=Vyp | 1=Min | ... | 9=Max)"
|
||||
@@ -207,6 +276,10 @@
|
||||
"displayText": "Detaily počas\nspájkovania",
|
||||
"description": "Zobrazenie detailov počas spájkovania"
|
||||
},
|
||||
"BluetoothLE": {
|
||||
"displayText": "Bluetooth\n",
|
||||
"description": "Enables BLE"
|
||||
},
|
||||
"PowerLimit": {
|
||||
"displayText": "Obmedzenie\nvýkonu",
|
||||
"description": "Obmedzenie výkonu podľa použitého zdroja (watt)"
|
||||
@@ -238,14 +311,6 @@
|
||||
"LanguageSwitch": {
|
||||
"displayText": "Jazyk:\n SK Slovenčina",
|
||||
"description": ""
|
||||
},
|
||||
"BLEEnabled": {
|
||||
"displayText": "BLE\n Enabled",
|
||||
"description": ""
|
||||
},
|
||||
"PDVpdoEnabled": {
|
||||
"displayText": "PD VPDO\nEnabled",
|
||||
"description": "Enables PPS/EPR modes."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,8 +60,17 @@
|
||||
"OffString": {
|
||||
"message": "Off"
|
||||
},
|
||||
"ProfilePreheatString": {
|
||||
"message": "Preheat\n"
|
||||
},
|
||||
"ProfileCooldownString": {
|
||||
"message": "Cooldown\n"
|
||||
},
|
||||
"DeviceFailedValidationWarning": {
|
||||
"message": "Your device is most likely a counterfeit!"
|
||||
},
|
||||
"TooHotToStartProfileWarning": {
|
||||
"message": "Too hot to\nstart profile"
|
||||
}
|
||||
},
|
||||
"characters": {
|
||||
@@ -119,6 +128,10 @@
|
||||
"displayText": "PD\ntimeout",
|
||||
"description": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers"
|
||||
},
|
||||
"PDVpdo": {
|
||||
"displayText": "PD\nVPDO",
|
||||
"description": "Enables PPS & EPR modes"
|
||||
},
|
||||
"BoostTemperature": {
|
||||
"displayText": "Pospešena\ntemp.",
|
||||
"description": "Temperatura v pospešenem načinu"
|
||||
@@ -139,6 +152,62 @@
|
||||
"displayText": "Omogoči\nzaklep gumbov",
|
||||
"description": "Za zaklep med spajkanjem drži oba gumba (O=onemogoči | L=le pospešeno | P=polno)"
|
||||
},
|
||||
"ProfilePhases": {
|
||||
"displayText": "Profile\nPhases",
|
||||
"description": "Number of phases in profile mode"
|
||||
},
|
||||
"ProfilePreheatTemp": {
|
||||
"displayText": "Preheat\nTemp",
|
||||
"description": "Preheat to this temperature at the start of profile mode"
|
||||
},
|
||||
"ProfilePreheatSpeed": {
|
||||
"displayText": "Preheat\nSpeed",
|
||||
"description": "Preheat at this rate (degrees per second)"
|
||||
},
|
||||
"ProfilePhase1Temp": {
|
||||
"displayText": "Phase 1\nTemp",
|
||||
"description": "Target temperature for the end of this phase"
|
||||
},
|
||||
"ProfilePhase1Duration": {
|
||||
"displayText": "Phase 1\nDuration",
|
||||
"description": "Target duration of this phase (seconds)"
|
||||
},
|
||||
"ProfilePhase2Temp": {
|
||||
"displayText": "Phase 2\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase2Duration": {
|
||||
"displayText": "Phase 2\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Temp": {
|
||||
"displayText": "Phase 3\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Duration": {
|
||||
"displayText": "Phase 3\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Temp": {
|
||||
"displayText": "Phase 4\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Duration": {
|
||||
"displayText": "Phase 4\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Temp": {
|
||||
"displayText": "Phase 5\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Duration": {
|
||||
"displayText": "Phase 5\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfileCooldownSpeed": {
|
||||
"displayText": "Cooldown\nSpeed",
|
||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
||||
},
|
||||
"MotionSensitivity": {
|
||||
"displayText": "Občutljivost\npremikanja",
|
||||
"description": "0=izklopljeno | 1=najmanjša | ... | 9=največja"
|
||||
@@ -207,6 +276,10 @@
|
||||
"displayText": "Več info na\nzaslonu spaj.",
|
||||
"description": "Prikaže več informacij z manjšo pisavo na zaslonu med spajkanjem."
|
||||
},
|
||||
"BluetoothLE": {
|
||||
"displayText": "Bluetooth\n",
|
||||
"description": "Enables BLE"
|
||||
},
|
||||
"PowerLimit": {
|
||||
"displayText": "Meja\nmoči",
|
||||
"description": "Največja dovoljena moč v vatih [W]"
|
||||
@@ -238,14 +311,6 @@
|
||||
"LanguageSwitch": {
|
||||
"displayText": "Jezik:\n SL Slovenščina",
|
||||
"description": ""
|
||||
},
|
||||
"BLEEnabled": {
|
||||
"displayText": "BLE\n Enabled",
|
||||
"description": ""
|
||||
},
|
||||
"PDVpdoEnabled": {
|
||||
"displayText": "PD VPDO\nEnabled",
|
||||
"description": "Enables PPS/EPR modes."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,8 +60,17 @@
|
||||
"OffString": {
|
||||
"message": "Иск"
|
||||
},
|
||||
"ProfilePreheatString": {
|
||||
"message": "Preheat\n"
|
||||
},
|
||||
"ProfileCooldownString": {
|
||||
"message": "Cooldown\n"
|
||||
},
|
||||
"DeviceFailedValidationWarning": {
|
||||
"message": "Your device is most likely a counterfeit!"
|
||||
},
|
||||
"TooHotToStartProfileWarning": {
|
||||
"message": "Too hot to\nstart profile"
|
||||
}
|
||||
},
|
||||
"characters": {
|
||||
@@ -119,6 +128,10 @@
|
||||
"displayText": "PD\ntimeout",
|
||||
"description": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers"
|
||||
},
|
||||
"PDVpdo": {
|
||||
"displayText": "PD\nVPDO",
|
||||
"description": "Enables PPS & EPR modes"
|
||||
},
|
||||
"BoostTemperature": {
|
||||
"displayText": "Темп.\nпојачања",
|
||||
"description": "Температура врха лемилице у току појачања."
|
||||
@@ -139,6 +152,62 @@
|
||||
"displayText": "Allow locking\nbuttons",
|
||||
"description": "While soldering, hold down both buttons to toggle locking them (D=disable | B=boost mode only | F=full locking)"
|
||||
},
|
||||
"ProfilePhases": {
|
||||
"displayText": "Profile\nPhases",
|
||||
"description": "Number of phases in profile mode"
|
||||
},
|
||||
"ProfilePreheatTemp": {
|
||||
"displayText": "Preheat\nTemp",
|
||||
"description": "Preheat to this temperature at the start of profile mode"
|
||||
},
|
||||
"ProfilePreheatSpeed": {
|
||||
"displayText": "Preheat\nSpeed",
|
||||
"description": "Preheat at this rate (degrees per second)"
|
||||
},
|
||||
"ProfilePhase1Temp": {
|
||||
"displayText": "Phase 1\nTemp",
|
||||
"description": "Target temperature for the end of this phase"
|
||||
},
|
||||
"ProfilePhase1Duration": {
|
||||
"displayText": "Phase 1\nDuration",
|
||||
"description": "Target duration of this phase (seconds)"
|
||||
},
|
||||
"ProfilePhase2Temp": {
|
||||
"displayText": "Phase 2\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase2Duration": {
|
||||
"displayText": "Phase 2\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Temp": {
|
||||
"displayText": "Phase 3\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Duration": {
|
||||
"displayText": "Phase 3\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Temp": {
|
||||
"displayText": "Phase 4\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Duration": {
|
||||
"displayText": "Phase 4\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Temp": {
|
||||
"displayText": "Phase 5\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Duration": {
|
||||
"displayText": "Phase 5\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfileCooldownSpeed": {
|
||||
"displayText": "Cooldown\nSpeed",
|
||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
||||
},
|
||||
"MotionSensitivity": {
|
||||
"displayText": "Осетљивост\nна покрет",
|
||||
"description": "Осетљивост сензора покрета. (0=искључено | 1=најмање осетљиво | ... | 9=најосетљивије)"
|
||||
@@ -207,6 +276,10 @@
|
||||
"displayText": "Детаљи током\nлемљења",
|
||||
"description": "Приказивање детаљних информација на екрану током лемљења."
|
||||
},
|
||||
"BluetoothLE": {
|
||||
"displayText": "Bluetooth\n",
|
||||
"description": "Enables BLE"
|
||||
},
|
||||
"PowerLimit": {
|
||||
"displayText": "Power\nlimit",
|
||||
"description": "Maximum power the iron can use (W=watt)"
|
||||
@@ -238,14 +311,6 @@
|
||||
"LanguageSwitch": {
|
||||
"displayText": "Jезик:\n SR Српски",
|
||||
"description": ""
|
||||
},
|
||||
"BLEEnabled": {
|
||||
"displayText": "BLE\n Enabled",
|
||||
"description": ""
|
||||
},
|
||||
"PDVpdoEnabled": {
|
||||
"displayText": "PD VPDO\nEnabled",
|
||||
"description": "Enables PPS/EPR modes."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,8 +60,17 @@
|
||||
"OffString": {
|
||||
"message": "Isk"
|
||||
},
|
||||
"ProfilePreheatString": {
|
||||
"message": "Preheat\n"
|
||||
},
|
||||
"ProfileCooldownString": {
|
||||
"message": "Cooldown\n"
|
||||
},
|
||||
"DeviceFailedValidationWarning": {
|
||||
"message": "Your device is most likely a counterfeit!"
|
||||
},
|
||||
"TooHotToStartProfileWarning": {
|
||||
"message": "Too hot to\nstart profile"
|
||||
}
|
||||
},
|
||||
"characters": {
|
||||
@@ -119,6 +128,10 @@
|
||||
"displayText": "PD\ntimeout",
|
||||
"description": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers"
|
||||
},
|
||||
"PDVpdo": {
|
||||
"displayText": "PD\nVPDO",
|
||||
"description": "Enables PPS & EPR modes"
|
||||
},
|
||||
"BoostTemperature": {
|
||||
"displayText": "Temp.\npojačanja",
|
||||
"description": "Temperatura vrha lemilice u toku pojačanja."
|
||||
@@ -139,6 +152,62 @@
|
||||
"displayText": "Allow locking\nbuttons",
|
||||
"description": "While soldering, hold down both buttons to toggle locking them (D=disable | B=boost mode only | F=full locking)"
|
||||
},
|
||||
"ProfilePhases": {
|
||||
"displayText": "Profile\nPhases",
|
||||
"description": "Number of phases in profile mode"
|
||||
},
|
||||
"ProfilePreheatTemp": {
|
||||
"displayText": "Preheat\nTemp",
|
||||
"description": "Preheat to this temperature at the start of profile mode"
|
||||
},
|
||||
"ProfilePreheatSpeed": {
|
||||
"displayText": "Preheat\nSpeed",
|
||||
"description": "Preheat at this rate (degrees per second)"
|
||||
},
|
||||
"ProfilePhase1Temp": {
|
||||
"displayText": "Phase 1\nTemp",
|
||||
"description": "Target temperature for the end of this phase"
|
||||
},
|
||||
"ProfilePhase1Duration": {
|
||||
"displayText": "Phase 1\nDuration",
|
||||
"description": "Target duration of this phase (seconds)"
|
||||
},
|
||||
"ProfilePhase2Temp": {
|
||||
"displayText": "Phase 2\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase2Duration": {
|
||||
"displayText": "Phase 2\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Temp": {
|
||||
"displayText": "Phase 3\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Duration": {
|
||||
"displayText": "Phase 3\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Temp": {
|
||||
"displayText": "Phase 4\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Duration": {
|
||||
"displayText": "Phase 4\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Temp": {
|
||||
"displayText": "Phase 5\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Duration": {
|
||||
"displayText": "Phase 5\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfileCooldownSpeed": {
|
||||
"displayText": "Cooldown\nSpeed",
|
||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
||||
},
|
||||
"MotionSensitivity": {
|
||||
"displayText": "Osetljivost\nna pokret",
|
||||
"description": "Osetljivost senzora pokreta. (0=isključeno | 1=najmanje osetljivo | ... | 9=najosetljivije)"
|
||||
@@ -207,6 +276,10 @@
|
||||
"displayText": "Detalji tokom\nlemljenja",
|
||||
"description": "Prikazivanje detaljnih informacija na ekranu tokom lemljenja."
|
||||
},
|
||||
"BluetoothLE": {
|
||||
"displayText": "Bluetooth\n",
|
||||
"description": "Enables BLE"
|
||||
},
|
||||
"PowerLimit": {
|
||||
"displayText": "Power\nlimit",
|
||||
"description": "Maximum power the iron can use (W=watt)"
|
||||
@@ -238,14 +311,6 @@
|
||||
"LanguageSwitch": {
|
||||
"displayText": "Jezik:\n SR Srpski",
|
||||
"description": ""
|
||||
},
|
||||
"BLEEnabled": {
|
||||
"displayText": "BLE\n Enabled",
|
||||
"description": ""
|
||||
},
|
||||
"PDVpdoEnabled": {
|
||||
"displayText": "PD VPDO\nEnabled",
|
||||
"description": "Enables PPS/EPR modes."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,8 +60,17 @@
|
||||
"OffString": {
|
||||
"message": "Av"
|
||||
},
|
||||
"ProfilePreheatString": {
|
||||
"message": "Preheat\n"
|
||||
},
|
||||
"ProfileCooldownString": {
|
||||
"message": "Cooldown\n"
|
||||
},
|
||||
"DeviceFailedValidationWarning": {
|
||||
"message": "Your device is most likely a counterfeit!"
|
||||
},
|
||||
"TooHotToStartProfileWarning": {
|
||||
"message": "Too hot to\nstart profile"
|
||||
}
|
||||
},
|
||||
"characters": {
|
||||
@@ -119,6 +128,10 @@
|
||||
"displayText": "PD\ntimeout",
|
||||
"description": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers"
|
||||
},
|
||||
"PDVpdo": {
|
||||
"displayText": "PD\nVPDO",
|
||||
"description": "Enables PPS & EPR modes"
|
||||
},
|
||||
"BoostTemperature": {
|
||||
"displayText": "Turbo-\ntemp",
|
||||
"description": "Temperatur i \"turbo-läge\""
|
||||
@@ -139,6 +152,62 @@
|
||||
"displayText": "Tillåt lås\nvia knappar",
|
||||
"description": "Vid lödning, håll nere bägge knappar för att slå på lås (A=Av | T=Bara turbo | F=Fullt lås)"
|
||||
},
|
||||
"ProfilePhases": {
|
||||
"displayText": "Profile\nPhases",
|
||||
"description": "Number of phases in profile mode"
|
||||
},
|
||||
"ProfilePreheatTemp": {
|
||||
"displayText": "Preheat\nTemp",
|
||||
"description": "Preheat to this temperature at the start of profile mode"
|
||||
},
|
||||
"ProfilePreheatSpeed": {
|
||||
"displayText": "Preheat\nSpeed",
|
||||
"description": "Preheat at this rate (degrees per second)"
|
||||
},
|
||||
"ProfilePhase1Temp": {
|
||||
"displayText": "Phase 1\nTemp",
|
||||
"description": "Target temperature for the end of this phase"
|
||||
},
|
||||
"ProfilePhase1Duration": {
|
||||
"displayText": "Phase 1\nDuration",
|
||||
"description": "Target duration of this phase (seconds)"
|
||||
},
|
||||
"ProfilePhase2Temp": {
|
||||
"displayText": "Phase 2\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase2Duration": {
|
||||
"displayText": "Phase 2\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Temp": {
|
||||
"displayText": "Phase 3\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Duration": {
|
||||
"displayText": "Phase 3\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Temp": {
|
||||
"displayText": "Phase 4\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Duration": {
|
||||
"displayText": "Phase 4\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Temp": {
|
||||
"displayText": "Phase 5\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Duration": {
|
||||
"displayText": "Phase 5\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfileCooldownSpeed": {
|
||||
"displayText": "Cooldown\nSpeed",
|
||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
||||
},
|
||||
"MotionSensitivity": {
|
||||
"displayText": "Rörelse-\nkänslighet",
|
||||
"description": "Rörelsekänslighet (0=Av | 1=minst känslig | ... | 9=mest känslig)"
|
||||
@@ -207,6 +276,10 @@
|
||||
"displayText": "Detaljerad\nlödng.skärm",
|
||||
"description": "Visa detaljerad information vid lödning"
|
||||
},
|
||||
"BluetoothLE": {
|
||||
"displayText": "Bluetooth\n",
|
||||
"description": "Enables BLE"
|
||||
},
|
||||
"PowerLimit": {
|
||||
"displayText": "Max-\neffekt",
|
||||
"description": "Maximal effekt som enheten kan använda (Watt)"
|
||||
@@ -238,14 +311,6 @@
|
||||
"LanguageSwitch": {
|
||||
"displayText": "Språk:\n SV Svenska",
|
||||
"description": ""
|
||||
},
|
||||
"BLEEnabled": {
|
||||
"displayText": "BLE\n Enabled",
|
||||
"description": ""
|
||||
},
|
||||
"PDVpdoEnabled": {
|
||||
"displayText": "PD VPDO\nEnabled",
|
||||
"description": "Enables PPS/EPR modes."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,8 +60,17 @@
|
||||
"OffString": {
|
||||
"message": "Kapalı"
|
||||
},
|
||||
"ProfilePreheatString": {
|
||||
"message": "Preheat\n"
|
||||
},
|
||||
"ProfileCooldownString": {
|
||||
"message": "Cooldown\n"
|
||||
},
|
||||
"DeviceFailedValidationWarning": {
|
||||
"message": "Your device is most likely a counterfeit!"
|
||||
},
|
||||
"TooHotToStartProfileWarning": {
|
||||
"message": "Too hot to\nstart profile"
|
||||
}
|
||||
},
|
||||
"characters": {
|
||||
@@ -119,6 +128,10 @@
|
||||
"displayText": "PD\ntimeout",
|
||||
"description": "PD negotiation timeout in 100ms steps for compatibility with some QC chargers"
|
||||
},
|
||||
"PDVpdo": {
|
||||
"displayText": "PD\nVPDO",
|
||||
"description": "Enables PPS & EPR modes"
|
||||
},
|
||||
"BoostTemperature": {
|
||||
"displayText": "YKSC\n",
|
||||
"description": "Yüksek Performans Modu Sıcaklığı"
|
||||
@@ -139,6 +152,62 @@
|
||||
"displayText": "Allow locking\nbuttons",
|
||||
"description": "While soldering, hold down both buttons to toggle locking them (K=Kapalı | B=boost mode only | F=full locking)"
|
||||
},
|
||||
"ProfilePhases": {
|
||||
"displayText": "Profile\nPhases",
|
||||
"description": "Number of phases in profile mode"
|
||||
},
|
||||
"ProfilePreheatTemp": {
|
||||
"displayText": "Preheat\nTemp",
|
||||
"description": "Preheat to this temperature at the start of profile mode"
|
||||
},
|
||||
"ProfilePreheatSpeed": {
|
||||
"displayText": "Preheat\nSpeed",
|
||||
"description": "Preheat at this rate (degrees per second)"
|
||||
},
|
||||
"ProfilePhase1Temp": {
|
||||
"displayText": "Phase 1\nTemp",
|
||||
"description": "Target temperature for the end of this phase"
|
||||
},
|
||||
"ProfilePhase1Duration": {
|
||||
"displayText": "Phase 1\nDuration",
|
||||
"description": "Target duration of this phase (seconds)"
|
||||
},
|
||||
"ProfilePhase2Temp": {
|
||||
"displayText": "Phase 2\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase2Duration": {
|
||||
"displayText": "Phase 2\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Temp": {
|
||||
"displayText": "Phase 3\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Duration": {
|
||||
"displayText": "Phase 3\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Temp": {
|
||||
"displayText": "Phase 4\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Duration": {
|
||||
"displayText": "Phase 4\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Temp": {
|
||||
"displayText": "Phase 5\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Duration": {
|
||||
"displayText": "Phase 5\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfileCooldownSpeed": {
|
||||
"displayText": "Cooldown\nSpeed",
|
||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
||||
},
|
||||
"MotionSensitivity": {
|
||||
"displayText": "HARHAS\n",
|
||||
"description": "Hareket Hassasiyeti (0=Kapalı | 1=En az duyarlı | ... | 9=En duyarlı)"
|
||||
@@ -207,6 +276,10 @@
|
||||
"displayText": "GELLHM\n",
|
||||
"description": "\"Gelişmiş Lehimleme\" Lehimleme yaparken detaylı bilgi göster"
|
||||
},
|
||||
"BluetoothLE": {
|
||||
"displayText": "Bluetooth\n",
|
||||
"description": "Enables BLE"
|
||||
},
|
||||
"PowerLimit": {
|
||||
"displayText": "Power\nlimit",
|
||||
"description": "Havyanın kullanacağı en yüksek güç (W=Watts)"
|
||||
@@ -238,14 +311,6 @@
|
||||
"LanguageSwitch": {
|
||||
"displayText": "Dil:\n TR Türkçe",
|
||||
"description": ""
|
||||
},
|
||||
"BLEEnabled": {
|
||||
"displayText": "BLE\n Enabled",
|
||||
"description": ""
|
||||
},
|
||||
"PDVpdoEnabled": {
|
||||
"displayText": "PD VPDO\nEnabled",
|
||||
"description": "Enables PPS/EPR modes."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,8 +60,17 @@
|
||||
"OffString": {
|
||||
"message": "Вимк"
|
||||
},
|
||||
"ProfilePreheatString": {
|
||||
"message": "Preheat\n"
|
||||
},
|
||||
"ProfileCooldownString": {
|
||||
"message": "Cooldown\n"
|
||||
},
|
||||
"DeviceFailedValidationWarning": {
|
||||
"message": "Вірогідно ваш пристрій підробний!"
|
||||
},
|
||||
"TooHotToStartProfileWarning": {
|
||||
"message": "Too hot to\nstart profile"
|
||||
}
|
||||
},
|
||||
"characters": {
|
||||
@@ -70,7 +79,7 @@
|
||||
"SettingAutoChar": "A",
|
||||
"SettingOffChar": "B",
|
||||
"SettingSlowChar": "Н",
|
||||
"SettingMediumChar": "M",
|
||||
"SettingMediumChar": "С",
|
||||
"SettingFastChar": "М",
|
||||
"SettingStartNoneChar": "В",
|
||||
"SettingStartSolderingChar": "П",
|
||||
@@ -119,6 +128,10 @@
|
||||
"displayText": "PD\nзатримка",
|
||||
"description": "Затримка у 100мс інкрементах для PD для сумісності з деякими QC зарядними пристроями (0: вимкнено)"
|
||||
},
|
||||
"PDVpdo": {
|
||||
"displayText": "PD\nVPDO",
|
||||
"description": "Вмикає режими PPS & EPR."
|
||||
},
|
||||
"BoostTemperature": {
|
||||
"displayText": "Темпер.\nТурбо",
|
||||
"description": "Температура в \"Турбо\" режимі"
|
||||
@@ -139,6 +152,62 @@
|
||||
"displayText": "Дозволити\nблок. кнопок",
|
||||
"description": "Під час пайки тривале натискання обох кнопок заблокує їх (В=Вимк | Т=Тільки турбо | П=Повне)"
|
||||
},
|
||||
"ProfilePhases": {
|
||||
"displayText": "Profile\nPhases",
|
||||
"description": "Number of phases in profile mode"
|
||||
},
|
||||
"ProfilePreheatTemp": {
|
||||
"displayText": "Preheat\nTemp",
|
||||
"description": "Preheat to this temperature at the start of profile mode"
|
||||
},
|
||||
"ProfilePreheatSpeed": {
|
||||
"displayText": "Preheat\nSpeed",
|
||||
"description": "Preheat at this rate (degrees per second)"
|
||||
},
|
||||
"ProfilePhase1Temp": {
|
||||
"displayText": "Phase 1\nTemp",
|
||||
"description": "Target temperature for the end of this phase"
|
||||
},
|
||||
"ProfilePhase1Duration": {
|
||||
"displayText": "Phase 1\nDuration",
|
||||
"description": "Target duration of this phase (seconds)"
|
||||
},
|
||||
"ProfilePhase2Temp": {
|
||||
"displayText": "Phase 2\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase2Duration": {
|
||||
"displayText": "Phase 2\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Temp": {
|
||||
"displayText": "Phase 3\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Duration": {
|
||||
"displayText": "Phase 3\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Temp": {
|
||||
"displayText": "Phase 4\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Duration": {
|
||||
"displayText": "Phase 4\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Temp": {
|
||||
"displayText": "Phase 5\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Duration": {
|
||||
"displayText": "Phase 5\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfileCooldownSpeed": {
|
||||
"displayText": "Cooldown\nSpeed",
|
||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
||||
},
|
||||
"MotionSensitivity": {
|
||||
"displayText": "Чутливість\nсенсору руху",
|
||||
"description": "Акселерометр (0=Вимк. | 1=мін. чутливості | ... | 9=макс. чутливості)"
|
||||
@@ -173,7 +242,7 @@
|
||||
},
|
||||
"ScrollingSpeed": {
|
||||
"displayText": "Швидкість\nтексту",
|
||||
"description": "Швидкість прокрутки тексту (П=повільно | Ш=швидко)"
|
||||
"description": "Швидкість прокрутки тексту (Н=Низькa | М=Максимальна)"
|
||||
},
|
||||
"ReverseButtonTempChange": {
|
||||
"displayText": "Інвертувати\nкнопки +-?",
|
||||
@@ -181,7 +250,7 @@
|
||||
},
|
||||
"AnimSpeed": {
|
||||
"displayText": "Швидкість\nанімації",
|
||||
"description": "Швидкість анімації іконок у головному меню (Мілісекунди) (В=Вимк | Н=Низькa | С=Середня | М=Макс)"
|
||||
"description": "Швидкість анімації іконок у головному меню (В=Вимк | Н=Низькa | С=Середня | М=Максимальна)"
|
||||
},
|
||||
"AnimLoop": {
|
||||
"displayText": "Циклічна\nанімація",
|
||||
@@ -207,6 +276,10 @@
|
||||
"displayText": "Детальний\nрежим пайки",
|
||||
"description": "Показувати детальну інформацію при пайці."
|
||||
},
|
||||
"BluetoothLE": {
|
||||
"displayText": "Bluetooth\n",
|
||||
"description": "Enables BLE"
|
||||
},
|
||||
"PowerLimit": {
|
||||
"displayText": "Макс.\nпотуж.",
|
||||
"description": "Макс. потужність, яку може використовувати паяльник (Ват)"
|
||||
@@ -238,14 +311,6 @@
|
||||
"LanguageSwitch": {
|
||||
"displayText": "Мова:\n UK Українська",
|
||||
"description": ""
|
||||
},
|
||||
"BLEEnabled": {
|
||||
"displayText": "BLE\n Увімкнено",
|
||||
"description": ""
|
||||
},
|
||||
"PDVpdoEnabled": {
|
||||
"displayText": "PD VPDO\nУвімкнено",
|
||||
"description": "Вмикає режими PPS/EPR."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,8 +60,17 @@
|
||||
"OffString": {
|
||||
"message": "Tat"
|
||||
},
|
||||
"ProfilePreheatString": {
|
||||
"message": "Preheat\n"
|
||||
},
|
||||
"ProfileCooldownString": {
|
||||
"message": "Cooldown\n"
|
||||
},
|
||||
"DeviceFailedValidationWarning": {
|
||||
"message": "Your device is most likely a counterfeit!"
|
||||
},
|
||||
"TooHotToStartProfileWarning": {
|
||||
"message": "Too hot to\nstart profile"
|
||||
}
|
||||
},
|
||||
"characters": {
|
||||
@@ -119,6 +128,10 @@
|
||||
"displayText": "PD\nsau",
|
||||
"description": "Thoi gian cho đàm phán PD trong các buoc 100ms đe tuong thích voi mot so bo sac QC"
|
||||
},
|
||||
"PDVpdo": {
|
||||
"displayText": "PD\nVPDO",
|
||||
"description": "Enables PPS & EPR modes"
|
||||
},
|
||||
"BoostTemperature": {
|
||||
"displayText": "Tăng\nnhiet đo",
|
||||
"description": "Nhiet đo dùng trong che đo \"tăng cuong\""
|
||||
@@ -139,6 +152,62 @@
|
||||
"displayText": "Cho phép khóa\ncác nút",
|
||||
"description": "Trong khi hàn, giu ca 2 nút đe khóa(D=tat | B=chi che đo tăng cuong | F=khóa hoàn toàn)"
|
||||
},
|
||||
"ProfilePhases": {
|
||||
"displayText": "Profile\nPhases",
|
||||
"description": "Number of phases in profile mode"
|
||||
},
|
||||
"ProfilePreheatTemp": {
|
||||
"displayText": "Preheat\nTemp",
|
||||
"description": "Preheat to this temperature at the start of profile mode"
|
||||
},
|
||||
"ProfilePreheatSpeed": {
|
||||
"displayText": "Preheat\nSpeed",
|
||||
"description": "Preheat at this rate (degrees per second)"
|
||||
},
|
||||
"ProfilePhase1Temp": {
|
||||
"displayText": "Phase 1\nTemp",
|
||||
"description": "Target temperature for the end of this phase"
|
||||
},
|
||||
"ProfilePhase1Duration": {
|
||||
"displayText": "Phase 1\nDuration",
|
||||
"description": "Target duration of this phase (seconds)"
|
||||
},
|
||||
"ProfilePhase2Temp": {
|
||||
"displayText": "Phase 2\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase2Duration": {
|
||||
"displayText": "Phase 2\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Temp": {
|
||||
"displayText": "Phase 3\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Duration": {
|
||||
"displayText": "Phase 3\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Temp": {
|
||||
"displayText": "Phase 4\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Duration": {
|
||||
"displayText": "Phase 4\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Temp": {
|
||||
"displayText": "Phase 5\nTemp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Duration": {
|
||||
"displayText": "Phase 5\nDuration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfileCooldownSpeed": {
|
||||
"displayText": "Cooldown\nSpeed",
|
||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
||||
},
|
||||
"MotionSensitivity": {
|
||||
"displayText": "Cam bien\ncu đong",
|
||||
"description": "- 0=tat | 1=đo nhay thap nhat| ... | 9=đo nhay cao nhat"
|
||||
@@ -207,6 +276,10 @@
|
||||
"displayText": "Chi tiet\nmàn hình hàn",
|
||||
"description": "-Hien thi thông tin bang phông chu nho hon trên màn hình hàn"
|
||||
},
|
||||
"BluetoothLE": {
|
||||
"displayText": "Bluetooth\n",
|
||||
"description": "Enables BLE"
|
||||
},
|
||||
"PowerLimit": {
|
||||
"displayText": "Công suat\ngioi han",
|
||||
"description": "-Công suat toi đa mà tay hàn có the su dung (W=watt)"
|
||||
@@ -238,14 +311,6 @@
|
||||
"LanguageSwitch": {
|
||||
"displayText": "Ngôn ngu:\n VI Tieng Viet",
|
||||
"description": ""
|
||||
},
|
||||
"BLEEnabled": {
|
||||
"displayText": "BLE\n Enabled",
|
||||
"description": ""
|
||||
},
|
||||
"PDVpdoEnabled": {
|
||||
"displayText": "PD VPDO\nEnabled",
|
||||
"description": "Enables PPS/EPR modes."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,8 +60,17 @@
|
||||
"OffString": {
|
||||
"message": "關"
|
||||
},
|
||||
"ProfilePreheatString": {
|
||||
"message": "Preheat"
|
||||
},
|
||||
"ProfileCooldownString": {
|
||||
"message": "Cooldown"
|
||||
},
|
||||
"DeviceFailedValidationWarning": {
|
||||
"message": "依支焫雞好有可能係冒牌貨!"
|
||||
},
|
||||
"TooHotToStartProfileWarning": {
|
||||
"message": "Too hot to start profile"
|
||||
}
|
||||
},
|
||||
"characters": {
|
||||
@@ -119,6 +128,10 @@
|
||||
"displayText": "PD逾時",
|
||||
"description": "設定USB PD協定交涉嘅逾時時限;為兼容某啲QC電源而設 <x100ms(亳秒)>"
|
||||
},
|
||||
"PDVpdo": {
|
||||
"displayText": "PD VPDO",
|
||||
"description": "Enables PPS & EPR modes"
|
||||
},
|
||||
"BoostTemperature": {
|
||||
"displayText": "增熱温度",
|
||||
"description": "喺增熱模式時使用嘅温度"
|
||||
@@ -139,6 +152,62 @@
|
||||
"displayText": "撳掣鎖定",
|
||||
"description": "喺焊接模式時,同時長撳兩粒掣啓用撳掣鎖定 <無=停用 | 增=淨係容許增熱模式 | 全=鎖定全部>"
|
||||
},
|
||||
"ProfilePhases": {
|
||||
"displayText": "Profile Phases",
|
||||
"description": "Number of phases in profile mode"
|
||||
},
|
||||
"ProfilePreheatTemp": {
|
||||
"displayText": "Preheat Temp",
|
||||
"description": "Preheat to this temperature at the start of profile mode"
|
||||
},
|
||||
"ProfilePreheatSpeed": {
|
||||
"displayText": "Preheat Speed",
|
||||
"description": "Preheat at this rate (degrees per second)"
|
||||
},
|
||||
"ProfilePhase1Temp": {
|
||||
"displayText": "Phase 1 Temp",
|
||||
"description": "Target temperature for the end of this phase"
|
||||
},
|
||||
"ProfilePhase1Duration": {
|
||||
"displayText": "Phase 1 Duration",
|
||||
"description": "Target duration of this phase (seconds)"
|
||||
},
|
||||
"ProfilePhase2Temp": {
|
||||
"displayText": "Phase 2 Temp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase2Duration": {
|
||||
"displayText": "Phase 2 Duration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Temp": {
|
||||
"displayText": "Phase 3 Temp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Duration": {
|
||||
"displayText": "Phase 3 Duration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Temp": {
|
||||
"displayText": "Phase 4 Temp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Duration": {
|
||||
"displayText": "Phase 4 Duration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Temp": {
|
||||
"displayText": "Phase 5 Temp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Duration": {
|
||||
"displayText": "Phase 5 Duration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfileCooldownSpeed": {
|
||||
"displayText": "Cooldown Speed",
|
||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
||||
},
|
||||
"MotionSensitivity": {
|
||||
"displayText": "動作敏感度",
|
||||
"description": "0=停用 | 1=最低敏感度 | ... | 9=最高敏感度"
|
||||
@@ -207,6 +276,10 @@
|
||||
"displayText": "詳細焊接畫面",
|
||||
"description": "喺焊接模式畫面以英文細字顯示詳細嘅資料"
|
||||
},
|
||||
"BluetoothLE": {
|
||||
"displayText": "Bluetooth",
|
||||
"description": "Enables BLE"
|
||||
},
|
||||
"PowerLimit": {
|
||||
"displayText": "功率限制",
|
||||
"description": "限制焫雞可用嘅最大功率 <W=watt(火)>"
|
||||
@@ -238,14 +311,6 @@
|
||||
"LanguageSwitch": {
|
||||
"displayText": "語言: 廣東話",
|
||||
"description": ""
|
||||
},
|
||||
"BLEEnabled": {
|
||||
"displayText": "BLE Enabled",
|
||||
"description": ""
|
||||
},
|
||||
"PDVpdoEnabled": {
|
||||
"displayText": "PD VPDO\nEnabled",
|
||||
"description": "Enables PPS/EPR modes."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,8 +60,17 @@
|
||||
"OffString": {
|
||||
"message": "关"
|
||||
},
|
||||
"ProfilePreheatString": {
|
||||
"message": "Preheat"
|
||||
},
|
||||
"ProfileCooldownString": {
|
||||
"message": "Cooldown"
|
||||
},
|
||||
"DeviceFailedValidationWarning": {
|
||||
"message": "这支电烙铁很有可能是冒牌货!"
|
||||
},
|
||||
"TooHotToStartProfileWarning": {
|
||||
"message": "Too hot to start profile"
|
||||
}
|
||||
},
|
||||
"characters": {
|
||||
@@ -119,6 +128,10 @@
|
||||
"displayText": "PD超时",
|
||||
"description": "设定USB-PD协议交涉的超时时限;为兼容某些QC电源而设 <x100ms(亳秒)>"
|
||||
},
|
||||
"PDVpdo": {
|
||||
"displayText": "PD VPDO",
|
||||
"description": "Enables PPS & EPR modes"
|
||||
},
|
||||
"BoostTemperature": {
|
||||
"displayText": "增热温度",
|
||||
"description": "增热模式时使用的温度"
|
||||
@@ -139,6 +152,62 @@
|
||||
"displayText": "按键锁定",
|
||||
"description": "焊接模式时,同时长按两个按键启用按键锁定 <无=禁用 | 增=只容许增热模式 | 全=完全锁定>"
|
||||
},
|
||||
"ProfilePhases": {
|
||||
"displayText": "Profile Phases",
|
||||
"description": "Number of phases in profile mode"
|
||||
},
|
||||
"ProfilePreheatTemp": {
|
||||
"displayText": "Preheat Temp",
|
||||
"description": "Preheat to this temperature at the start of profile mode"
|
||||
},
|
||||
"ProfilePreheatSpeed": {
|
||||
"displayText": "Preheat Speed",
|
||||
"description": "Preheat at this rate (degrees per second)"
|
||||
},
|
||||
"ProfilePhase1Temp": {
|
||||
"displayText": "Phase 1 Temp",
|
||||
"description": "Target temperature for the end of this phase"
|
||||
},
|
||||
"ProfilePhase1Duration": {
|
||||
"displayText": "Phase 1 Duration",
|
||||
"description": "Target duration of this phase (seconds)"
|
||||
},
|
||||
"ProfilePhase2Temp": {
|
||||
"displayText": "Phase 2 Temp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase2Duration": {
|
||||
"displayText": "Phase 2 Duration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Temp": {
|
||||
"displayText": "Phase 3 Temp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Duration": {
|
||||
"displayText": "Phase 3 Duration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Temp": {
|
||||
"displayText": "Phase 4 Temp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Duration": {
|
||||
"displayText": "Phase 4 Duration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Temp": {
|
||||
"displayText": "Phase 5 Temp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Duration": {
|
||||
"displayText": "Phase 5 Duration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfileCooldownSpeed": {
|
||||
"displayText": "Cooldown Speed",
|
||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
||||
},
|
||||
"MotionSensitivity": {
|
||||
"displayText": "动作灵敏度",
|
||||
"description": "0=禁用 | 1=最低灵敏度 | ... | 9=最高灵敏度"
|
||||
@@ -207,6 +276,10 @@
|
||||
"displayText": "焊接画面详情",
|
||||
"description": "焊接模式画面以英语小字体显示详请"
|
||||
},
|
||||
"BluetoothLE": {
|
||||
"displayText": "Bluetooth",
|
||||
"description": "Enables BLE"
|
||||
},
|
||||
"PowerLimit": {
|
||||
"displayText": "功率限制",
|
||||
"description": "限制烙铁可用的最大功率 <W=瓦特>"
|
||||
@@ -238,14 +311,6 @@
|
||||
"LanguageSwitch": {
|
||||
"displayText": "语言:简体中文",
|
||||
"description": ""
|
||||
},
|
||||
"BLEEnabled": {
|
||||
"displayText": "BLE Enabled",
|
||||
"description": ""
|
||||
},
|
||||
"PDVpdoEnabled": {
|
||||
"displayText": "PD VPDO\nEnabled",
|
||||
"description": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,8 +60,17 @@
|
||||
"OffString": {
|
||||
"message": "關"
|
||||
},
|
||||
"ProfilePreheatString": {
|
||||
"message": "Preheat"
|
||||
},
|
||||
"ProfileCooldownString": {
|
||||
"message": "Cooldown"
|
||||
},
|
||||
"DeviceFailedValidationWarning": {
|
||||
"message": "這支電烙鐵很有可能是冒牌貨!"
|
||||
},
|
||||
"TooHotToStartProfileWarning": {
|
||||
"message": "Too hot to start profile"
|
||||
}
|
||||
},
|
||||
"characters": {
|
||||
@@ -119,6 +128,10 @@
|
||||
"displayText": "PD逾時",
|
||||
"description": "設定USB PD協定交涉的逾時時限;為兼容某些QC電源而設 <x100ms(亳秒)>"
|
||||
},
|
||||
"PDVpdo": {
|
||||
"displayText": "PD VPDO",
|
||||
"description": "Enables PPS & EPR modes"
|
||||
},
|
||||
"BoostTemperature": {
|
||||
"displayText": "增熱溫度",
|
||||
"description": "於增熱模式時使用的溫度"
|
||||
@@ -139,6 +152,62 @@
|
||||
"displayText": "按鍵鎖定",
|
||||
"description": "於焊接模式時,同時長按兩個按鍵啟用按鍵鎖定 <無=停用 | 增=只容許增熱模式 | 全=鎖定全部>"
|
||||
},
|
||||
"ProfilePhases": {
|
||||
"displayText": "Profile Phases",
|
||||
"description": "Number of phases in profile mode"
|
||||
},
|
||||
"ProfilePreheatTemp": {
|
||||
"displayText": "Preheat Temp",
|
||||
"description": "Preheat to this temperature at the start of profile mode"
|
||||
},
|
||||
"ProfilePreheatSpeed": {
|
||||
"displayText": "Preheat Speed",
|
||||
"description": "Preheat at this rate (degrees per second)"
|
||||
},
|
||||
"ProfilePhase1Temp": {
|
||||
"displayText": "Phase 1 Temp",
|
||||
"description": "Target temperature for the end of this phase"
|
||||
},
|
||||
"ProfilePhase1Duration": {
|
||||
"displayText": "Phase 1 Duration",
|
||||
"description": "Target duration of this phase (seconds)"
|
||||
},
|
||||
"ProfilePhase2Temp": {
|
||||
"displayText": "Phase 2 Temp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase2Duration": {
|
||||
"displayText": "Phase 2 Duration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Temp": {
|
||||
"displayText": "Phase 3 Temp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase3Duration": {
|
||||
"displayText": "Phase 3 Duration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Temp": {
|
||||
"displayText": "Phase 4 Temp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase4Duration": {
|
||||
"displayText": "Phase 4 Duration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Temp": {
|
||||
"displayText": "Phase 5 Temp",
|
||||
"description": ""
|
||||
},
|
||||
"ProfilePhase5Duration": {
|
||||
"displayText": "Phase 5 Duration",
|
||||
"description": ""
|
||||
},
|
||||
"ProfileCooldownSpeed": {
|
||||
"displayText": "Cooldown Speed",
|
||||
"description": "Cooldown at this rate at the end of profile mode (degrees per second)"
|
||||
},
|
||||
"MotionSensitivity": {
|
||||
"displayText": "動作敏感度",
|
||||
"description": "0=停用 | 1=最低敏感度 | ... | 9=最高敏感度"
|
||||
@@ -207,6 +276,10 @@
|
||||
"displayText": "詳細焊接畫面",
|
||||
"description": "於焊接模式畫面以英文小字型顯示詳細資料"
|
||||
},
|
||||
"BluetoothLE": {
|
||||
"displayText": "Bluetooth",
|
||||
"description": "Enables BLE"
|
||||
},
|
||||
"PowerLimit": {
|
||||
"displayText": "功率限制",
|
||||
"description": "限制烙鐵可用的最大功率 <W=watt(瓦特)>"
|
||||
@@ -238,14 +311,6 @@
|
||||
"LanguageSwitch": {
|
||||
"displayText": "語言:正體中文",
|
||||
"description": ""
|
||||
},
|
||||
"BLEEnabled": {
|
||||
"displayText": "BLE Enabled",
|
||||
"description": ""
|
||||
},
|
||||
"PDVpdoEnabled": {
|
||||
"displayText": "PD VPDO\nEnabled",
|
||||
"description": "Enables PPS/EPR modes."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
},
|
||||
{
|
||||
"id": "NoPowerDeliveryMessage",
|
||||
"include": ["POW_PD"],
|
||||
"description": "The IC required for USB-PD could not be communicated with. This is an error warning that USB-PD WILL NOT FUNCTION. Generally indicative of either a hardware or software issues."
|
||||
},
|
||||
{
|
||||
@@ -49,32 +50,50 @@
|
||||
{
|
||||
"id": "UVLOWarningString",
|
||||
"maxLen": 8,
|
||||
"include": ["POW_DC"],
|
||||
"description": "Warning text shown when the unit turns off due to undervoltage in simple mode."
|
||||
},
|
||||
{
|
||||
"id": "UndervoltageString",
|
||||
"maxLen": 15,
|
||||
"include": ["POW_DC"],
|
||||
"description": "Warning text shown when the unit turns off due to undervoltage in advanced mode."
|
||||
},
|
||||
{
|
||||
"id": "InputVoltageString",
|
||||
"maxLen": 11,
|
||||
"note": "Preferably end with a space",
|
||||
"include": ["POW_DC"],
|
||||
"description": "Prefix text for 'Input Voltage' shown before showing the input voltage reading."
|
||||
},
|
||||
{
|
||||
"id": "ProfilePreheatString",
|
||||
"maxLen": 9,
|
||||
"include": ["PROFILE_SUPPORT"],
|
||||
"description": "Shown in profile mode while preheating"
|
||||
},
|
||||
{
|
||||
"id": "ProfileCooldownString",
|
||||
"maxLen": 9,
|
||||
"include": ["PROFILE_SUPPORT"],
|
||||
"description": "Shown in profile mode while cooling down"
|
||||
},
|
||||
{
|
||||
"id": "SleepingSimpleString",
|
||||
"maxLen": 4,
|
||||
"exclude": ["NO_SLEEP_MODE"],
|
||||
"description": "The text shown to indicate the unit is in sleep mode when the advanced view is NOT on."
|
||||
},
|
||||
{
|
||||
"id": "SleepingAdvancedString",
|
||||
"maxLen": 15,
|
||||
"exclude": ["NO_SLEEP_MODE"],
|
||||
"description": "The text shown to indicate the unit is in sleep mode when the advanced view is turned on."
|
||||
},
|
||||
{
|
||||
"id": "SleepingTipAdvancedString",
|
||||
"maxLen": 6,
|
||||
"exclude": ["NO_SLEEP_MODE"],
|
||||
"description": "The prefix text shown before tip temperature when the unit is sleeping with advanced view on."
|
||||
},
|
||||
{
|
||||
@@ -86,6 +105,12 @@
|
||||
"id": "DeviceFailedValidationWarning",
|
||||
"default": "Device may be\ncounterfeit",
|
||||
"description": "Warning shown if the device may be a clone or counterfeit unit."
|
||||
},
|
||||
{
|
||||
"id": "TooHotToStartProfileWarning",
|
||||
"default": "Too hot to\nstart profile",
|
||||
"include": ["PROFILE_SUPPORT"],
|
||||
"description": "Shown when profile mode is started while the device is too hot."
|
||||
}
|
||||
],
|
||||
"characters": [{
|
||||
@@ -166,6 +191,7 @@
|
||||
"id": "PowerMenu",
|
||||
"maxLen": 5,
|
||||
"maxLen2": 11,
|
||||
"include": ["POW_DC", "POW_QC"],
|
||||
"description": "Menu for settings related to power. Main settings to do with the input voltage."
|
||||
},
|
||||
{
|
||||
@@ -197,26 +223,37 @@
|
||||
"id": "DCInCutoff",
|
||||
"maxLen": 5,
|
||||
"maxLen2": 11,
|
||||
"include": ["POW_DC"],
|
||||
"description": "When the device is powered by a battery, this adjusts the low voltage threshold for when the unit should turn off the heater to protect the battery."
|
||||
},
|
||||
{
|
||||
"id": "MinVolCell",
|
||||
"maxLen": 4,
|
||||
"maxLen2": 9,
|
||||
"include": ["POW_DC"],
|
||||
"description": "When powered by a battery, this adjusts the minimum voltage per cell before shutdown. (This is multiplied by the cell count.)"
|
||||
},
|
||||
{
|
||||
"id": "QCMaxVoltage",
|
||||
"maxLen": 8,
|
||||
"maxLen2": 15,
|
||||
"include": ["POW_QC"],
|
||||
"description": "This adjusts the maximum voltage the QC negotiation will adjust to. Does NOT affect USB-PD. Should be set safely based on the current rating of your power supply."
|
||||
},
|
||||
{
|
||||
"id": "PDNegTimeout",
|
||||
"maxLen": 8,
|
||||
"maxLen2": 15,
|
||||
"include": ["POW_PD"],
|
||||
"description": "How long until firmware stops trying to negotiate for USB-PD and tries QC instead. Longer times may help dodgy / old PD adapters, faster times move onto PD quickly. Units of 100ms. Recommended to keep small values."
|
||||
},
|
||||
{
|
||||
"id": "PDVpdo",
|
||||
"maxLen": 7,
|
||||
"maxLen2": 15,
|
||||
"include": ["POW_PD"],
|
||||
"description": "Enabled PPS & EPR modes."
|
||||
},
|
||||
{
|
||||
"id": "BoostTemperature",
|
||||
"maxLen": 4,
|
||||
@@ -247,6 +284,104 @@
|
||||
"maxLen2": 13,
|
||||
"description": "If locking the buttons against accidental presses is enabled."
|
||||
},
|
||||
{
|
||||
"id": "ProfilePhases",
|
||||
"maxLen": 6,
|
||||
"maxLen2": 13,
|
||||
"include": ["PROFILE_SUPPORT"],
|
||||
"description": "set the number of phases for profile mode."
|
||||
},
|
||||
{
|
||||
"id": "ProfilePreheatTemp",
|
||||
"maxLen": 4,
|
||||
"maxLen2": 9,
|
||||
"include": ["PROFILE_SUPPORT"],
|
||||
"description": "Preheat to this temperature at the start of profile mode."
|
||||
},
|
||||
{
|
||||
"id": "ProfilePreheatSpeed",
|
||||
"maxLen": 5,
|
||||
"maxLen2": 11,
|
||||
"include": ["PROFILE_SUPPORT"],
|
||||
"description": "How fast the temperature is allowed to rise during the preheat phase at the start of profile mode."
|
||||
},
|
||||
{
|
||||
"id": "ProfilePhase1Temp",
|
||||
"maxLen": 4,
|
||||
"maxLen2": 9,
|
||||
"include": ["PROFILE_SUPPORT"],
|
||||
"description": "Target temperature for the end of phase 1 of profile mode."
|
||||
},
|
||||
{
|
||||
"id": "ProfilePhase1Duration",
|
||||
"maxLen": 4,
|
||||
"maxLen2": 9,
|
||||
"include": ["PROFILE_SUPPORT"],
|
||||
"description": "Duration of phase 1 of profile mode. The phase might actually take longer if it takes longer to reach the target temperature."
|
||||
},
|
||||
{
|
||||
"id": "ProfilePhase2Temp",
|
||||
"maxLen": 4,
|
||||
"maxLen2": 9,
|
||||
"include": ["PROFILE_SUPPORT"],
|
||||
"description": "Target temperature for the end of phase 2 of profile mode."
|
||||
},
|
||||
{
|
||||
"id": "ProfilePhase2Duration",
|
||||
"maxLen": 4,
|
||||
"maxLen2": 9,
|
||||
"include": ["PROFILE_SUPPORT"],
|
||||
"description": "Duration of phase 2 of profile mode. The phase might actually take longer if it takes longer to reach the target temperature."
|
||||
},
|
||||
{
|
||||
"id": "ProfilePhase3Temp",
|
||||
"maxLen": 4,
|
||||
"maxLen2": 9,
|
||||
"include": ["PROFILE_SUPPORT"],
|
||||
"description": "Target temperature for the end of phase 3 of profile mode."
|
||||
},
|
||||
{
|
||||
"id": "ProfilePhase3Duration",
|
||||
"maxLen": 4,
|
||||
"maxLen2": 9,
|
||||
"include": ["PROFILE_SUPPORT"],
|
||||
"description": "Duration of phase 3 of profile mode. The phase might actually take longer if it takes longer to reach the target temperature."
|
||||
},
|
||||
{
|
||||
"id": "ProfilePhase4Temp",
|
||||
"maxLen": 4,
|
||||
"maxLen2": 9,
|
||||
"include": ["PROFILE_SUPPORT"],
|
||||
"description": "Target temperature for the end of phase 5 of profile mode."
|
||||
},
|
||||
{
|
||||
"id": "ProfilePhase4Duration",
|
||||
"maxLen": 4,
|
||||
"maxLen2": 9,
|
||||
"include": ["PROFILE_SUPPORT"],
|
||||
"description": "Duration of phase 5 of profile mode. The phase might actually take longer if it takes longer to reach the target temperature."
|
||||
},
|
||||
{
|
||||
"id": "ProfilePhase5Temp",
|
||||
"maxLen": 4,
|
||||
"maxLen2": 9,
|
||||
"include": ["PROFILE_SUPPORT"],
|
||||
"description": "Target temperature for the end of phase 5 of profile mode."
|
||||
},
|
||||
{
|
||||
"id": "ProfilePhase5Duration",
|
||||
"maxLen": 4,
|
||||
"maxLen2": 9,
|
||||
"include": ["PROFILE_SUPPORT"],
|
||||
"description": "Duration of phase 5 of profile mode. The phase might actually take longer if it takes longer to reach the target temperature."
|
||||
},
|
||||
{
|
||||
"id": "ProfileCooldownSpeed",
|
||||
"maxLen": 5,
|
||||
"maxLen2": 11,
|
||||
"include": ["PROFILE_SUPPORT"],
|
||||
"description": "How fast the temperature is allowed to drop during the cooldown phase at the end of profile mode."
|
||||
},
|
||||
{
|
||||
"id": "MotionSensitivity",
|
||||
"maxLen": 6,
|
||||
@@ -257,12 +392,14 @@
|
||||
"id": "SleepTemperature",
|
||||
"maxLen": 4,
|
||||
"maxLen2": 9,
|
||||
"exclude": ["NO_SLEEP_MODE"],
|
||||
"description": "Temperature the device will drop down to while asleep. Typically around halfway between off and soldering temperature."
|
||||
},
|
||||
{
|
||||
"id": "SleepTimeout",
|
||||
"maxLen": 4,
|
||||
"maxLen2": 9,
|
||||
"exclude": ["NO_SLEEP_MODE"],
|
||||
"description": "How long of a period without movement / button-pressing is required before the device drops down to the sleep temperature."
|
||||
},
|
||||
{
|
||||
@@ -275,6 +412,7 @@
|
||||
"id": "HallEffSensitivity",
|
||||
"maxLen": 6,
|
||||
"maxLen2": 13,
|
||||
"include": ["HALL_SENSOR"],
|
||||
"description": "If the unit has a hall effect sensor (Pinecil), this adjusts how sensitive it is at detecting a magnet to put the device into sleep mode."
|
||||
},
|
||||
{
|
||||
@@ -287,6 +425,7 @@
|
||||
"id": "DisplayRotation",
|
||||
"maxLen": 6,
|
||||
"maxLen2": 13,
|
||||
"exclude": ["NO_DISPLAY_ROTATE"],
|
||||
"description": "If the display should rotate automatically or if it should be fixed for left- or right-handed mode."
|
||||
},
|
||||
{
|
||||
@@ -349,6 +488,13 @@
|
||||
"maxLen2": 13,
|
||||
"description": "Should the device show an 'advanced' soldering view. This is a text-based view that shows more information at the cost of no nice graphics."
|
||||
},
|
||||
{
|
||||
"id": "BluetoothLE",
|
||||
"maxLen": 7,
|
||||
"maxLen2": 15,
|
||||
"include": ["BLE_ENABLED"],
|
||||
"description": "Should BLE be enabled at boot time."
|
||||
},
|
||||
{
|
||||
"id": "PowerLimit",
|
||||
"maxLen": 5,
|
||||
@@ -396,18 +542,6 @@
|
||||
"maxLen": 7,
|
||||
"maxLen2": 15,
|
||||
"description": "Changes the device language on multi-lingual builds."
|
||||
},
|
||||
{
|
||||
"id": "BLEEnabled",
|
||||
"maxLen": 7,
|
||||
"maxLen2": 15,
|
||||
"description": "Should BLE be enabled at boot time."
|
||||
},
|
||||
{
|
||||
"id": "PDVpdoEnabled",
|
||||
"maxLen": 7,
|
||||
"maxLen2": 15,
|
||||
"description": "Enabled PPS/EPR modes."
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
version: "3"
|
||||
name: "ironos"
|
||||
services:
|
||||
builder:
|
||||
stdin_open: true
|
||||
|
||||
32
mkdocs.yml
32
mkdocs.yml
@@ -1,8 +1,21 @@
|
||||
# Project info
|
||||
site_name: 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"
|
||||
|
||||
# repo config
|
||||
repo_url: https://github.com/ralim/IronOS/
|
||||
|
||||
docs_dir: Documentation
|
||||
edit_uri: edit/dev/Documentation/
|
||||
|
||||
# Theme and config
|
||||
theme:
|
||||
name: readthedocs
|
||||
highlightsjs: true
|
||||
hljs_languages:
|
||||
- yaml
|
||||
|
||||
nav:
|
||||
- Home: index.md
|
||||
- Getting Started: GettingStarted.md
|
||||
@@ -26,5 +39,18 @@ nav:
|
||||
- Known Hardware Issues: HardwareIssues.md
|
||||
- Translations: Translation.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
|
||||
|
||||
@@ -94,6 +94,8 @@ enum StatusLED {
|
||||
};
|
||||
void setStatusLED(const enum StatusLED state);
|
||||
|
||||
void setBuzzer(bool on);
|
||||
|
||||
// preStartChecks are run until they return 0
|
||||
// By the PID, after each ADC sample comes in
|
||||
// For example, on the MHP30 this is used to figure out the resistance of the hotplate
|
||||
|
||||
@@ -20,6 +20,8 @@ void power_check();
|
||||
uint8_t getTipResistanceX10();
|
||||
|
||||
uint8_t getTipThermalMass();
|
||||
uint8_t getTipInertia();
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -455,8 +455,6 @@ void setStatusLED(const enum StatusLED state) {
|
||||
} break;
|
||||
case LED_HOT:
|
||||
ws2812.led_set_color(0, 0xFF, 0, 0); // red
|
||||
// We have hit the right temp, run buzzer for a short period
|
||||
buzzerEnd = xTaskGetTickCount() + TICKS_SECOND / 3;
|
||||
break;
|
||||
case LED_COOLING_STILL_HOT:
|
||||
ws2812.led_set_color(0, 0xFF, 0x8C, 0x00); // Orange
|
||||
@@ -465,11 +463,6 @@ void setStatusLED(const enum StatusLED state) {
|
||||
ws2812.led_update();
|
||||
lastState = state;
|
||||
}
|
||||
if (state == LED_HOT && xTaskGetTickCount() < buzzerEnd) {
|
||||
setBuzzer(true);
|
||||
} else {
|
||||
setBuzzer(false);
|
||||
}
|
||||
}
|
||||
uint64_t getDeviceID() {
|
||||
//
|
||||
@@ -478,4 +471,5 @@ uint64_t getDeviceID() {
|
||||
|
||||
uint8_t preStartChecksDone() { return 1; }
|
||||
|
||||
uint8_t getTipThermalMass() { return TIP_THERMAL_MASS; }
|
||||
uint8_t getTipThermalMass() { return TIP_THERMAL_MASS; }
|
||||
uint8_t getTipInertia() { return TIP_THERMAL_MASS; }
|
||||
@@ -123,7 +123,7 @@ extern uint32_t SystemCoreClock;
|
||||
#define INCLUDE_vTaskDelete 0
|
||||
#define INCLUDE_vTaskCleanUpResources 0
|
||||
#define INCLUDE_vTaskSuspend 0
|
||||
#define INCLUDE_vTaskDelayUntil 0
|
||||
#define INCLUDE_vTaskDelayUntil 1
|
||||
#define INCLUDE_vTaskDelay 1
|
||||
#define INCLUDE_xTaskGetSchedulerState 1
|
||||
#define INCLUDE_uxTaskGetStackHighWaterMark 1
|
||||
|
||||
@@ -49,7 +49,7 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {
|
||||
}
|
||||
|
||||
bool getFUS302IRQLow() {
|
||||
#if POW_PD
|
||||
#ifdef POW_PD
|
||||
// Return true if the IRQ line is still held low
|
||||
return HAL_GPIO_ReadPin(INT_PD_GPIO_Port, INT_PD_Pin) == GPIO_PIN_RESET;
|
||||
#else
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
#include "configuration.h"
|
||||
|
||||
void power_check() {
|
||||
#if POW_PD
|
||||
#ifdef POW_PD
|
||||
|
||||
// Cant start QC until either PD works or fails
|
||||
if (USBPowerDelivery::negotiationComplete()) {
|
||||
|
||||
@@ -10,14 +10,14 @@
|
||||
#include "BSP.h"
|
||||
#include "configuration.h"
|
||||
#include "stm32f1xx_hal.h"
|
||||
#ifdef I2C_SOFT
|
||||
#ifdef I2C_SOFT_BUS_2
|
||||
|
||||
#define SOFT_SCL_HIGH() HAL_GPIO_WritePin(SCL2_GPIO_Port, SCL2_Pin, GPIO_PIN_SET)
|
||||
#define SOFT_SCL_LOW() HAL_GPIO_WritePin(SCL2_GPIO_Port, SCL2_Pin, GPIO_PIN_RESET)
|
||||
#define SOFT_SDA_HIGH() HAL_GPIO_WritePin(SDA2_GPIO_Port, SDA2_Pin, GPIO_PIN_SET)
|
||||
#define SOFT_SDA_LOW() HAL_GPIO_WritePin(SDA2_GPIO_Port, SDA2_Pin, GPIO_PIN_RESET)
|
||||
#define SOFT_SDA_READ() (HAL_GPIO_ReadPin(SDA2_GPIO_Port, SDA2_Pin) == GPIO_PIN_SET ? 1 : 0)
|
||||
#define SOFT_SCL_READ() (HAL_GPIO_ReadPin(SCL2_GPIO_Port, SCL2_Pin) == GPIO_PIN_SET ? 1 : 0)
|
||||
#define SOFT_SCL2_HIGH() HAL_GPIO_WritePin(SCL2_GPIO_Port, SCL2_Pin, GPIO_PIN_SET)
|
||||
#define SOFT_SCL2_LOW() HAL_GPIO_WritePin(SCL2_GPIO_Port, SCL2_Pin, GPIO_PIN_RESET)
|
||||
#define SOFT_SDA2_HIGH() HAL_GPIO_WritePin(SDA2_GPIO_Port, SDA2_Pin, GPIO_PIN_SET)
|
||||
#define SOFT_SDA2_LOW() HAL_GPIO_WritePin(SDA2_GPIO_Port, SDA2_Pin, GPIO_PIN_RESET)
|
||||
#define SOFT_SDA2_READ() (HAL_GPIO_ReadPin(SDA2_GPIO_Port, SDA2_Pin) == GPIO_PIN_SET ? 1 : 0)
|
||||
#define SOFT_SCL2_READ() (HAL_GPIO_ReadPin(SCL2_GPIO_Port, SCL2_Pin) == GPIO_PIN_SET ? 1 : 0)
|
||||
#define SOFT_I2C_DELAY() \
|
||||
{ \
|
||||
for (int xx = 0; xx < 20; xx++) { \
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
#ifndef CONFIGURATION_H_
|
||||
#define CONFIGURATION_H_
|
||||
#include "Settings.h"
|
||||
#include "configuration.h"
|
||||
#include <stdint.h>
|
||||
/**
|
||||
* Configuration.h
|
||||
* Define here your default pre settings for TS80 or TS100
|
||||
* Define here your default pre settings for MHP30
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -60,6 +59,15 @@
|
||||
#define ORIENTATION_MODE 0 // 0: Right 1:Left 2:Automatic - Default right
|
||||
#define REVERSE_BUTTON_TEMP_CHANGE 0 // 0:Default 1:Reverse - Reverse the plus and minus button assigment for temperature change
|
||||
|
||||
/**
|
||||
* OLED Brightness
|
||||
*
|
||||
*/
|
||||
#define MIN_BRIGHTNESS 0 // Min OLED brightness selectable
|
||||
#define MAX_BRIGHTNESS 100 // Max OLED brightness selectable
|
||||
#define BRIGHTNESS_STEP 25 // OLED brightness increment
|
||||
#define DEFAULT_BRIGHTNESS 25 // default OLED brightness
|
||||
|
||||
/**
|
||||
* Temp change settings
|
||||
*/
|
||||
@@ -77,13 +85,9 @@
|
||||
#define ADC_MAX_READING (4096 * 8) // Maximum reading of the adc
|
||||
#define ADC_VDD_MV 3300 // ADC max reading millivolts
|
||||
|
||||
#ifdef MODEL_TS100
|
||||
#define POWER_PULSE_DEFAULT 0
|
||||
#else
|
||||
#define POWER_PULSE_DEFAULT 5
|
||||
#endif
|
||||
#define POWER_PULSE_WAIT_DEFAULT 4 // Default rate of the power pulse: 4*2500 = 10000 ms = 10 s
|
||||
#define POWER_PULSE_DURATION_DEFAULT 1 // Default duration of the power pulse: 1*250 = 250 ms
|
||||
#define POWER_PULSE_DEFAULT 5
|
||||
|
||||
/**
|
||||
* OLED Orientation Sensitivity on Automatic mode!
|
||||
@@ -137,7 +141,7 @@
|
||||
#define MAX_TEMP_C 350 // Max soldering temp selectable °C
|
||||
#define MAX_TEMP_F 660 // Max soldering temp selectable °F
|
||||
#define MIN_TEMP_C 10 // Min soldering temp selectable °C
|
||||
#define MIN_TEMP_F 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_F 300 // The min settable temp for boost mode °F
|
||||
#define NO_DISPLAY_ROTATE // Disable OLED rotation by accel
|
||||
@@ -146,22 +150,27 @@
|
||||
#define ACCEL_SC7
|
||||
#define ACCEL_MSA
|
||||
|
||||
#define POW_PD 1
|
||||
#define PROFILE_SUPPORT
|
||||
|
||||
#define POW_PD 1
|
||||
#define POW_PD_EXT 0
|
||||
#define TEMP_NTC
|
||||
#define I2C_SOFT
|
||||
#define I2C_SOFT_BUS_2
|
||||
#define BATTFILTERDEPTH 8
|
||||
#define OLED_I2CBB
|
||||
#define OLED_I2CBB2
|
||||
#define ACCEL_EXITS_ON_MOVEMENT
|
||||
#define NEEDS_VBUS_PROBE 0
|
||||
|
||||
#define HARDWARE_MAX_WATTAGE_X10 650
|
||||
#define TIP_THERMAL_MASS 65 // TODO, needs refinement
|
||||
#define TIP_RESISTANCE 60 // x10 ohms, ~6 typical
|
||||
#endif
|
||||
#endif /* MHP30 */
|
||||
|
||||
#ifdef ACCEL_EXITS_ON_MOVEMENT
|
||||
#define NO_SLEEP_MODE
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define FLASH_LOGOADDR (0x08000000 + (62 * 1024))
|
||||
#define SETTINGS_START_PAGE (0x08000000 + (127 * 1024))
|
||||
|
||||
#endif /* CONFIGURATION_H_ */
|
||||
|
||||
@@ -10,9 +10,6 @@
|
||||
#include "stm32f1xx_hal.h"
|
||||
#include "string.h"
|
||||
|
||||
#define SETTINGS_START_PAGE (0x08000000 + (127 * 1024))
|
||||
|
||||
|
||||
void flash_save_buffer(const uint8_t *buffer, const uint16_t length) {
|
||||
FLASH_EraseInitTypeDef pEraseInit;
|
||||
pEraseInit.TypeErase = FLASH_TYPEERASE_PAGES;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#include "configuration.h"
|
||||
#if POW_PD
|
||||
#ifdef POW_PD
|
||||
#include "BSP.h"
|
||||
#include "I2C_Wrapper.hpp"
|
||||
#include "Pins.h"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
*/
|
||||
|
||||
#include "BSP.h"
|
||||
#include "I2CBB.hpp"
|
||||
#include "I2CBB2.hpp"
|
||||
#include "Pins.h"
|
||||
#include "Setup.h"
|
||||
#include <I2C_Wrapper.hpp>
|
||||
@@ -17,7 +17,7 @@ void preRToSInit() {
|
||||
HAL_Init();
|
||||
Setup_HAL(); // Setup all the HAL objects
|
||||
BSPInit();
|
||||
I2CBB::init();
|
||||
I2CBB2::init();
|
||||
/* Init the IPC objects */
|
||||
FRToSI2C::FRToSInit();
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include "Pins.h"
|
||||
#include "Setup.h"
|
||||
#include "TipThermoModel.h"
|
||||
#include "USBPD.h"
|
||||
#include "configuration.h"
|
||||
#include "history.hpp"
|
||||
#include "main.hpp"
|
||||
@@ -17,7 +18,7 @@ const uint16_t powerPWM = 255;
|
||||
static const uint8_t holdoffTicks = 14; // delay of 8 ms
|
||||
static const uint8_t tempMeasureTicks = 14;
|
||||
|
||||
uint16_t totalPWM; // htim2.Init.Period, the full PWM cycle
|
||||
uint16_t totalPWM; // htimADC.Init.Period, the full PWM cycle
|
||||
|
||||
static bool fastPWM;
|
||||
static bool infastPWM;
|
||||
@@ -99,20 +100,20 @@ uint16_t getInputVoltageX10(uint16_t divisor, uint8_t sample) {
|
||||
|
||||
static void switchToFastPWM(void) {
|
||||
// 10Hz
|
||||
infastPWM = true;
|
||||
totalPWM = powerPWM + tempMeasureTicks + holdoffTicks;
|
||||
htim2.Instance->ARR = totalPWM;
|
||||
htim2.Instance->CCR1 = powerPWM + holdoffTicks;
|
||||
htim2.Instance->PSC = 2690;
|
||||
infastPWM = true;
|
||||
totalPWM = powerPWM + tempMeasureTicks + holdoffTicks;
|
||||
htimADC.Instance->ARR = totalPWM;
|
||||
htimADC.Instance->CCR1 = powerPWM + holdoffTicks;
|
||||
htimADC.Instance->PSC = 2690;
|
||||
}
|
||||
|
||||
static void switchToSlowPWM(void) {
|
||||
// 5Hz
|
||||
infastPWM = false;
|
||||
totalPWM = powerPWM + tempMeasureTicks / 2 + holdoffTicks / 2;
|
||||
htim2.Instance->ARR = totalPWM;
|
||||
htim2.Instance->CCR1 = powerPWM + holdoffTicks / 2;
|
||||
htim2.Instance->PSC = 2690 * 2;
|
||||
infastPWM = false;
|
||||
totalPWM = powerPWM + tempMeasureTicks / 2 + holdoffTicks / 2;
|
||||
htimADC.Instance->ARR = totalPWM;
|
||||
htimADC.Instance->CCR1 = powerPWM + holdoffTicks / 2;
|
||||
htimADC.Instance->PSC = 2690 * 2;
|
||||
}
|
||||
|
||||
void setTipPWM(const uint8_t pulse, const bool shouldUseFastModePWM) {
|
||||
@@ -126,20 +127,30 @@ void setTipPWM(const uint8_t pulse, const bool shouldUseFastModePWM) {
|
||||
|
||||
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
|
||||
// Period has elapsed
|
||||
if (htim->Instance == TIM2) {
|
||||
if (htim->Instance == ADC_CONTROL_TIMER) {
|
||||
// we want to turn on the output again
|
||||
PWMSafetyTimer--;
|
||||
// We decrement this safety value so that lockups in the
|
||||
// scheduler will not cause the PWM to become locked in an
|
||||
// active driving state.
|
||||
// While we could assume this could never happen, its a small price for
|
||||
// increased safety
|
||||
htim2.Instance->CCR4 = pendingPWM;
|
||||
if (htim2.Instance->CCR4 && PWMSafetyTimer) {
|
||||
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);
|
||||
// We decrement this safety value so that lockups in the
|
||||
// scheduler will not cause the PWM to become locked in an
|
||||
// active driving state.
|
||||
// While we could assume this could never happen, its a small price for
|
||||
// increased safety
|
||||
#ifdef TIP_HAS_DIRECT_PWM
|
||||
htimADC.Instance->CCR4 = powerPWM;
|
||||
if (pendingPWM && PWMSafetyTimer) {
|
||||
htimTip.Instance->CCR1 = pendingPWM;
|
||||
HAL_TIM_PWM_Start(&htimTip, PWM_Out_CHANNEL);
|
||||
} else {
|
||||
HAL_TIM_PWM_Stop(&htim3, TIM_CHANNEL_1);
|
||||
HAL_TIM_PWM_Stop(&htimTip, PWM_Out_CHANNEL);
|
||||
}
|
||||
#else
|
||||
htimADC.Instance->CCR4 = pendingPWM;
|
||||
if (htimADC.Instance->CCR4 && PWMSafetyTimer) {
|
||||
HAL_TIM_PWM_Start(&htimTip, PWM_Out_CHANNEL);
|
||||
} else {
|
||||
HAL_TIM_PWM_Stop(&htimTip, PWM_Out_CHANNEL);
|
||||
}
|
||||
#endif
|
||||
if (fastPWM != infastPWM) {
|
||||
if (fastPWM) {
|
||||
switchToFastPWM();
|
||||
@@ -157,10 +168,11 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
|
||||
void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim) {
|
||||
// This was a when the PWM for the output has timed out
|
||||
if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_4) {
|
||||
HAL_TIM_PWM_Stop(&htim3, TIM_CHANNEL_1);
|
||||
HAL_TIM_PWM_Stop(&htimTip, PWM_Out_CHANNEL);
|
||||
}
|
||||
}
|
||||
void unstick_I2C() {
|
||||
#ifndef I2C_SOFT_BUS_1
|
||||
GPIO_InitTypeDef GPIO_InitStruct;
|
||||
int timeout = 100;
|
||||
int timeout_cnt = 0;
|
||||
@@ -227,6 +239,7 @@ void unstick_I2C() {
|
||||
|
||||
// Call initialization function.
|
||||
HAL_I2C_Init(&hi2c1);
|
||||
#endif
|
||||
}
|
||||
|
||||
uint8_t getButtonA() { return HAL_GPIO_ReadPin(KEY_A_GPIO_Port, KEY_A_Pin) == GPIO_PIN_RESET ? 1 : 0; }
|
||||
@@ -238,22 +251,160 @@ void reboot() { NVIC_SystemReset(); }
|
||||
|
||||
void delay_ms(uint16_t count) { HAL_Delay(count); }
|
||||
|
||||
bool isTipDisconnected() {
|
||||
uint8_t lastTipResistance = 0; // default to unknown
|
||||
const uint8_t numTipResistanceReadings = 3;
|
||||
uint32_t tipResistanceReadings[3] = {0, 0, 0};
|
||||
uint8_t tipResistanceReadingSlot = 0;
|
||||
bool isTipDisconnected() {
|
||||
|
||||
uint16_t tipDisconnectedThres = TipThermoModel::getTipMaxInC() - 5;
|
||||
uint32_t tipTemp = TipThermoModel::getTipInC();
|
||||
return tipTemp > tipDisconnectedThres;
|
||||
}
|
||||
|
||||
void setStatusLED(const enum StatusLED state) {}
|
||||
uint8_t preStartChecks() { return 1; }
|
||||
void setStatusLED(const enum StatusLED state) {}
|
||||
void setBuzzer(bool on) {}
|
||||
#ifdef TIP_RESISTANCE_SENSE_Pin
|
||||
// We want to calculate lastTipResistance
|
||||
// If tip is connected, and the tip is cold and the tip is not being heated
|
||||
// We can use the GPIO to inject a small current into the tip and measure this
|
||||
// The gpio is 100k -> diode -> tip -> gnd
|
||||
// Source is 3.3V-0.5V
|
||||
// Which is around 0.028mA this will induce:
|
||||
// 6 ohm tip -> 3.24mV (Real world ~= 3320)
|
||||
// 8 ohm tip -> 4.32mV (Real world ~= 4500)
|
||||
// Which is definitely measureable
|
||||
// Taking shortcuts here as we know we only really have to pick apart 6 and 8 ohm tips
|
||||
// These are reported as 60 and 75 respectively
|
||||
void performTipResistanceSampleReading() {
|
||||
// 0 = read then turn on pullup, 1 = read then turn off pullup, 2 = read again
|
||||
tipResistanceReadings[tipResistanceReadingSlot] = TipThermoModel::convertTipRawADCTouV(getTipRawTemp(1));
|
||||
|
||||
HAL_GPIO_WritePin(TIP_RESISTANCE_SENSE_GPIO_Port, TIP_RESISTANCE_SENSE_Pin, (tipResistanceReadingSlot == 0) ? GPIO_PIN_SET : GPIO_PIN_RESET);
|
||||
|
||||
tipResistanceReadingSlot++;
|
||||
}
|
||||
void FinishMeasureTipResistance() {
|
||||
|
||||
// Otherwise we now have the 4 samples;
|
||||
// _^_ order, 2 delta's, combine these
|
||||
|
||||
int32_t calculatedSkew = tipResistanceReadings[0] - tipResistanceReadings[2]; // If positive tip is cooling
|
||||
calculatedSkew /= 2; // divide by two to get offset per time constant
|
||||
|
||||
int32_t reading = (((tipResistanceReadings[1] - tipResistanceReadings[0]) + calculatedSkew) // jump 1 - skew
|
||||
+ // +
|
||||
((tipResistanceReadings[1] - tipResistanceReadings[2]) + calculatedSkew) // jump 2 - skew
|
||||
) //
|
||||
/ 2; // Take average
|
||||
// // As we are only detecting two resistances; we can split the difference for now
|
||||
uint8_t newRes = 0;
|
||||
if (reading > 1200) {
|
||||
// return; // Change nothing as probably disconnected tip
|
||||
tipResistanceReadingSlot = lastTipResistance = 0;
|
||||
return;
|
||||
} else if (reading < 800) {
|
||||
newRes = 62;
|
||||
} else {
|
||||
newRes = 80;
|
||||
}
|
||||
lastTipResistance = newRes;
|
||||
}
|
||||
volatile bool tipMeasurementOccuring = true;
|
||||
volatile TickType_t nextTipMeasurement = 100;
|
||||
|
||||
void performTipMeasurementStep() {
|
||||
|
||||
// Wait 200ms for settle time
|
||||
if (xTaskGetTickCount() < (nextTipMeasurement)) {
|
||||
return;
|
||||
}
|
||||
nextTipMeasurement = xTaskGetTickCount() + (TICKS_100MS * 5);
|
||||
if (tipResistanceReadingSlot < numTipResistanceReadings) {
|
||||
performTipResistanceSampleReading();
|
||||
return;
|
||||
}
|
||||
|
||||
// We are sensing the resistance
|
||||
FinishMeasureTipResistance();
|
||||
|
||||
tipMeasurementOccuring = false;
|
||||
}
|
||||
#endif
|
||||
uint8_t preStartChecks() {
|
||||
#ifdef TIP_RESISTANCE_SENSE_Pin
|
||||
performTipMeasurementStep();
|
||||
if (preStartChecksDone() != 1) {
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
#ifdef HAS_SPLIT_POWER_PATH
|
||||
|
||||
// We want to enable the power path that has the highest voltage
|
||||
// Nominally one will be ~=0 and one will be high. Unless you jamb both in, then both _may_ be high, or device may be dead
|
||||
{
|
||||
uint16_t dc = getRawDCVin();
|
||||
uint16_t pd = getRawPDVin();
|
||||
if (dc > pd) {
|
||||
HAL_GPIO_WritePin(DC_SELECT_GPIO_Port, DC_SELECT_Pin, GPIO_PIN_SET);
|
||||
HAL_GPIO_WritePin(PD_SELECT_GPIO_Port, PD_SELECT_Pin, GPIO_PIN_RESET);
|
||||
} else {
|
||||
HAL_GPIO_WritePin(PD_SELECT_GPIO_Port, PD_SELECT_Pin, GPIO_PIN_SET);
|
||||
HAL_GPIO_WritePin(DC_SELECT_GPIO_Port, DC_SELECT_Pin, GPIO_PIN_RESET);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
#ifdef POW_PD
|
||||
// If we are in the middle of negotiating PD, wait until timeout
|
||||
// Before turning on the heater
|
||||
if (!USBPowerDelivery::negotiationComplete()) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
uint64_t getDeviceID() {
|
||||
//
|
||||
return HAL_GetUIDw0() | ((uint64_t)HAL_GetUIDw1() << 32);
|
||||
}
|
||||
|
||||
uint8_t getTipResistanceX10() { return TIP_RESISTANCE; }
|
||||
uint8_t preStartChecksDone() {
|
||||
#ifdef TIP_RESISTANCE_SENSE_Pin
|
||||
return (lastTipResistance == 0 || tipResistanceReadingSlot < numTipResistanceReadings || tipMeasurementOccuring) ? 0 : 1;
|
||||
#else
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
uint8_t preStartChecksDone() { return 1; }
|
||||
uint8_t getTipResistanceX10() {
|
||||
#ifdef TIP_RESISTANCE_SENSE_Pin
|
||||
// Return tip resistance in x10 ohms
|
||||
// We can measure this using the op-amp
|
||||
return lastTipResistance;
|
||||
#else
|
||||
return TIP_RESISTANCE;
|
||||
#endif
|
||||
}
|
||||
|
||||
uint8_t getTipThermalMass() { return TIP_THERMAL_MASS; }
|
||||
uint8_t getTipThermalMass() {
|
||||
#ifdef TIP_RESISTANCE_SENSE_Pin
|
||||
if (lastTipResistance >= 80) {
|
||||
return TIP_THERMAL_MASS;
|
||||
}
|
||||
return 45;
|
||||
#else
|
||||
return TIP_THERMAL_MASS;
|
||||
#endif
|
||||
}
|
||||
uint8_t getTipInertia() {
|
||||
#ifdef TIP_RESISTANCE_SENSE_Pin
|
||||
if (lastTipResistance >= 80) {
|
||||
return TIP_THERMAL_MASS;
|
||||
}
|
||||
return 10;
|
||||
#else
|
||||
return TIP_THERMAL_MASS;
|
||||
#endif
|
||||
}
|
||||
@@ -123,7 +123,7 @@ extern uint32_t SystemCoreClock;
|
||||
#define INCLUDE_vTaskDelete 0
|
||||
#define INCLUDE_vTaskCleanUpResources 0
|
||||
#define INCLUDE_vTaskSuspend 0
|
||||
#define INCLUDE_vTaskDelayUntil 0
|
||||
#define INCLUDE_vTaskDelayUntil 1
|
||||
#define INCLUDE_vTaskDelay 1
|
||||
#define INCLUDE_xTaskGetSchedulerState 1
|
||||
#define INCLUDE_uxTaskGetStackHighWaterMark 1
|
||||
|
||||
@@ -46,7 +46,7 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {
|
||||
}
|
||||
|
||||
bool getFUS302IRQLow() {
|
||||
#if POW_PD
|
||||
#ifdef POW_PD
|
||||
// Return true if the IRQ line is still held low
|
||||
return HAL_GPIO_ReadPin(INT_PD_GPIO_Port, INT_PD_Pin) == GPIO_PIN_RESET;
|
||||
#else
|
||||
|
||||
@@ -6,87 +6,145 @@
|
||||
*/
|
||||
|
||||
#ifndef BSP_MINIWARE_PINS_H_
|
||||
#define BSP_MINIWARE_PINS_H_
|
||||
#include "configuration.h"
|
||||
#define BSP_MINIWARE_PINS_H_
|
||||
#include "configuration.h"
|
||||
|
||||
#ifdef MODEL_TS100
|
||||
#ifdef MODEL_TS100
|
||||
|
||||
#define KEY_B_Pin GPIO_PIN_6
|
||||
#define KEY_B_GPIO_Port GPIOA
|
||||
#define TMP36_INPUT_Pin GPIO_PIN_7
|
||||
#define TMP36_INPUT_GPIO_Port GPIOA
|
||||
#define TMP36_ADC1_CHANNEL ADC_CHANNEL_7
|
||||
#define TMP36_ADC2_CHANNEL ADC_CHANNEL_7
|
||||
#define TIP_TEMP_Pin GPIO_PIN_0
|
||||
#define TIP_TEMP_GPIO_Port GPIOB
|
||||
#define TIP_TEMP_ADC1_CHANNEL ADC_CHANNEL_8
|
||||
#define TIP_TEMP_ADC2_CHANNEL ADC_CHANNEL_8
|
||||
#define VIN_Pin GPIO_PIN_1
|
||||
#define VIN_GPIO_Port GPIOB
|
||||
#define VIN_ADC1_CHANNEL ADC_CHANNEL_9
|
||||
#define VIN_ADC2_CHANNEL ADC_CHANNEL_9
|
||||
#define OLED_RESET_Pin GPIO_PIN_8
|
||||
#define OLED_RESET_GPIO_Port GPIOA
|
||||
#define KEY_A_Pin GPIO_PIN_9
|
||||
#define KEY_A_GPIO_Port GPIOA
|
||||
#define INT_Orientation_Pin GPIO_PIN_3
|
||||
#define INT_Orientation_GPIO_Port GPIOB
|
||||
#define PWM_Out_Pin GPIO_PIN_4
|
||||
#define PWM_Out_GPIO_Port GPIOB
|
||||
#define PWM_Out_CHANNEL TIM_CHANNEL_1
|
||||
#define PWM_Out_CCR
|
||||
#define INT_Movement_Pin GPIO_PIN_5
|
||||
#define INT_Movement_GPIO_Port GPIOB
|
||||
#define SCL_Pin GPIO_PIN_6
|
||||
#define SCL_GPIO_Port GPIOB
|
||||
#define SDA_Pin GPIO_PIN_7
|
||||
#define SDA_GPIO_Port GPIOB
|
||||
#endif
|
||||
#define KEY_B_Pin GPIO_PIN_6
|
||||
#define KEY_B_GPIO_Port GPIOA
|
||||
#define TMP36_INPUT_Pin GPIO_PIN_7
|
||||
#define TMP36_INPUT_GPIO_Port GPIOA
|
||||
#define TMP36_ADC1_CHANNEL ADC_CHANNEL_7
|
||||
#define TMP36_ADC2_CHANNEL ADC_CHANNEL_7
|
||||
#define TIP_TEMP_Pin GPIO_PIN_0
|
||||
#define TIP_TEMP_GPIO_Port GPIOB
|
||||
#define TIP_TEMP_ADC1_CHANNEL ADC_CHANNEL_8
|
||||
#define TIP_TEMP_ADC2_CHANNEL ADC_CHANNEL_8
|
||||
#define VIN_Pin GPIO_PIN_1
|
||||
#define VIN_GPIO_Port GPIOB
|
||||
#define VIN_ADC1_CHANNEL ADC_CHANNEL_9
|
||||
#define VIN_ADC2_CHANNEL ADC_CHANNEL_9
|
||||
#define OLED_RESET_Pin GPIO_PIN_8
|
||||
#define OLED_RESET_GPIO_Port GPIOA
|
||||
#define KEY_A_Pin GPIO_PIN_9
|
||||
#define KEY_A_GPIO_Port GPIOA
|
||||
#define INT_Orientation_Pin GPIO_PIN_3
|
||||
#define INT_Orientation_GPIO_Port GPIOB
|
||||
#define PWM_Out_Pin GPIO_PIN_4
|
||||
#define PWM_Out_GPIO_Port GPIOB
|
||||
#define PWM_Out_CHANNEL TIM_CHANNEL_1
|
||||
#define TIP_CONTROL_TIMER TIM3
|
||||
#define ADC_CONTROL_TIMER TIM2
|
||||
#define ADC_CONTROL_TIMER_IRQ TIM2_IRQn
|
||||
#define ADC_TRIGGER ADC_EXTERNALTRIGINJECCONV_T2_TRGO
|
||||
#define INT_Movement_Pin GPIO_PIN_5
|
||||
#define INT_Movement_GPIO_Port GPIOB
|
||||
#define SCL_Pin GPIO_PIN_6
|
||||
#define SCL_GPIO_Port GPIOB
|
||||
#define SDA_Pin GPIO_PIN_7
|
||||
#define SDA_GPIO_Port GPIOB
|
||||
#endif
|
||||
|
||||
#if defined(MODEL_TS80) + defined(MODEL_TS80P) > 0
|
||||
// TS80 & TS80P pin map
|
||||
#define KEY_B_Pin GPIO_PIN_0
|
||||
#define KEY_B_GPIO_Port GPIOB
|
||||
#define TMP36_INPUT_Pin GPIO_PIN_4
|
||||
#define TMP36_INPUT_GPIO_Port GPIOA
|
||||
#define TMP36_ADC1_CHANNEL ADC_CHANNEL_4
|
||||
#define TMP36_ADC2_CHANNEL ADC_CHANNEL_4
|
||||
#define TIP_TEMP_Pin GPIO_PIN_3
|
||||
#define TIP_TEMP_GPIO_Port GPIOA
|
||||
#define TIP_TEMP_ADC1_CHANNEL ADC_CHANNEL_3
|
||||
#define TIP_TEMP_ADC2_CHANNEL ADC_CHANNEL_3
|
||||
#ifdef MODEL_TS101
|
||||
|
||||
#define VIN_Pin GPIO_PIN_2
|
||||
#define VIN_GPIO_Port GPIOA
|
||||
#define VIN_ADC1_CHANNEL ADC_CHANNEL_2
|
||||
#define VIN_ADC2_CHANNEL ADC_CHANNEL_2
|
||||
#define OLED_RESET_Pin GPIO_PIN_15
|
||||
#define OLED_RESET_GPIO_Port GPIOA
|
||||
#define KEY_A_Pin GPIO_PIN_1
|
||||
#define KEY_A_GPIO_Port GPIOB
|
||||
#define INT_Orientation_Pin GPIO_PIN_4
|
||||
#define INT_Orientation_GPIO_Port GPIOB
|
||||
#define PWM_Out_Pin GPIO_PIN_6
|
||||
#define PWM_Out_GPIO_Port GPIOA
|
||||
#define PWM_Out_CHANNEL TIM_CHANNEL_1
|
||||
#define INT_Movement_Pin GPIO_PIN_5
|
||||
#define INT_Movement_GPIO_Port GPIOB
|
||||
#define SCL_Pin GPIO_PIN_6
|
||||
#define SCL_GPIO_Port GPIOB
|
||||
#define SDA_Pin GPIO_PIN_7
|
||||
#define SDA_GPIO_Port GPIOB
|
||||
#define SCL2_Pin GPIO_PIN_5
|
||||
#define SCL2_GPIO_Port GPIOA
|
||||
#define SDA2_Pin GPIO_PIN_1
|
||||
#define SDA2_GPIO_Port GPIOA
|
||||
#define KEY_B_Pin GPIO_PIN_10
|
||||
#define KEY_B_GPIO_Port GPIOA
|
||||
#define TMP36_INPUT_Pin GPIO_PIN_4
|
||||
#define TMP36_INPUT_GPIO_Port GPIOA
|
||||
#define TMP36_ADC1_CHANNEL ADC_CHANNEL_4
|
||||
#define TMP36_ADC2_CHANNEL ADC_CHANNEL_4
|
||||
#define TIP_TEMP_Pin GPIO_PIN_3
|
||||
#define TIP_TEMP_GPIO_Port GPIOA
|
||||
#define TIP_TEMP_ADC1_CHANNEL ADC_CHANNEL_3
|
||||
#define TIP_TEMP_ADC2_CHANNEL ADC_CHANNEL_3
|
||||
#define VIN_Pin GPIO_PIN_2
|
||||
#define VIN_GPIO_Port GPIOA
|
||||
#define VIN_ADC1_CHANNEL ADC_CHANNEL_2
|
||||
#define VIN_ADC2_CHANNEL ADC_CHANNEL_2
|
||||
#define PD_VIN_Pin GPIO_PIN_6
|
||||
#define PD_VIN_GPIO_Port GPIOA
|
||||
#define PD_VIN_ADC1_CHANNEL ADC_CHANNEL_6
|
||||
#define PD_VIN_ADC2_CHANNEL ADC_CHANNEL_6
|
||||
#define OLED_RESET_Pin GPIO_PIN_7
|
||||
#define OLED_RESET_GPIO_Port GPIOA
|
||||
#define KEY_A_Pin GPIO_PIN_8
|
||||
#define KEY_A_GPIO_Port GPIOA
|
||||
#define PWM_Out_Pin GPIO_PIN_0
|
||||
#define PWM_Out_GPIO_Port GPIOA
|
||||
#define PWM_Out_CHANNEL TIM_CHANNEL_1
|
||||
#define TIP_CONTROL_TIMER TIM2
|
||||
#define ADC_CONTROL_TIMER TIM4
|
||||
#define ADC_CONTROL_TIMER_IRQ TIM4_IRQn
|
||||
#define ADC_TRIGGER ADC_EXTERNALTRIGINJECCONV_T4_TRGO
|
||||
#define SCL_Pin GPIO_PIN_0
|
||||
#define SCL_GPIO_Port GPIOB
|
||||
#define SDA_Pin GPIO_PIN_1
|
||||
#define SDA_GPIO_Port GPIOB
|
||||
// PD controller
|
||||
#define SCL2_Pin GPIO_PIN_6
|
||||
#define SCL2_GPIO_Port GPIOB
|
||||
#define SDA2_Pin GPIO_PIN_5
|
||||
#define SDA2_GPIO_Port GPIOB
|
||||
#define INT_PD_Pin GPIO_PIN_7
|
||||
#define INT_PD_GPIO_Port GPIOB
|
||||
// Selecting the DC source to route to theg
|
||||
#define DC_SELECT_Pin GPIO_PIN_4
|
||||
#define DC_SELECT_GPIO_Port GPIOB
|
||||
#define PD_SELECT_Pin GPIO_PIN_15
|
||||
#define PD_SELECT_GPIO_Port GPIOA
|
||||
|
||||
#endif
|
||||
#define TIP_RESISTANCE_SENSE_Pin GPIO_PIN_1
|
||||
#define TIP_RESISTANCE_SENSE_GPIO_Port GPIOA
|
||||
|
||||
#ifdef MODEL_TS80P
|
||||
// TS80P pin map
|
||||
#define INT_PD_Pin GPIO_PIN_9
|
||||
#define INT_PD_GPIO_Port GPIOA
|
||||
|
||||
#endif
|
||||
#endif
|
||||
#if defined(MODEL_TS80) + defined(MODEL_TS80P) > 0
|
||||
// TS80 & TS80P pin map
|
||||
#define KEY_B_Pin GPIO_PIN_0
|
||||
#define KEY_B_GPIO_Port GPIOB
|
||||
#define TMP36_INPUT_Pin GPIO_PIN_4
|
||||
#define TMP36_INPUT_GPIO_Port GPIOA
|
||||
#define TMP36_ADC1_CHANNEL ADC_CHANNEL_4
|
||||
#define TMP36_ADC2_CHANNEL ADC_CHANNEL_4
|
||||
#define TIP_TEMP_Pin GPIO_PIN_3
|
||||
#define TIP_TEMP_GPIO_Port GPIOA
|
||||
#define TIP_TEMP_ADC1_CHANNEL ADC_CHANNEL_3
|
||||
#define TIP_TEMP_ADC2_CHANNEL ADC_CHANNEL_3
|
||||
#define VIN_Pin GPIO_PIN_2
|
||||
#define VIN_GPIO_Port GPIOA
|
||||
#define VIN_ADC1_CHANNEL ADC_CHANNEL_2
|
||||
#define VIN_ADC2_CHANNEL ADC_CHANNEL_2
|
||||
#define OLED_RESET_Pin GPIO_PIN_15
|
||||
#define OLED_RESET_GPIO_Port GPIOA
|
||||
#define KEY_A_Pin GPIO_PIN_1
|
||||
#define KEY_A_GPIO_Port GPIOB
|
||||
#define INT_Orientation_Pin GPIO_PIN_4
|
||||
#define INT_Orientation_GPIO_Port GPIOB
|
||||
#define PWM_Out_Pin GPIO_PIN_6
|
||||
#define PWM_Out_GPIO_Port GPIOA
|
||||
#define PWM_Out_CHANNEL TIM_CHANNEL_1
|
||||
#define TIP_CONTROL_TIMER TIM3
|
||||
#define ADC_CONTROL_TIMER TIM2
|
||||
#define ADC_CONTROL_TIMER_IRQ TIM2_IRQn
|
||||
#define ADC_TRIGGER ADC_EXTERNALTRIGINJECCONV_T2_TRGO
|
||||
#define INT_Movement_Pin GPIO_PIN_5
|
||||
#define INT_Movement_GPIO_Port GPIOB
|
||||
#define SCL_Pin GPIO_PIN_6
|
||||
#define SCL_GPIO_Port GPIOB
|
||||
#define SDA_Pin GPIO_PIN_7
|
||||
#define SDA_GPIO_Port GPIOB
|
||||
#define SCL2_Pin GPIO_PIN_5
|
||||
#define SCL2_GPIO_Port GPIOA
|
||||
#define SDA2_Pin GPIO_PIN_1
|
||||
#define SDA2_GPIO_Port GPIOA
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef MODEL_TS80P
|
||||
// TS80P pin map
|
||||
#define INT_PD_Pin GPIO_PIN_9
|
||||
#define INT_PD_GPIO_Port GPIOA
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* BSP_MINIWARE_PINS_H_ */
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
#include "Settings.h"
|
||||
#include "USBPD.h"
|
||||
#include "configuration.h"
|
||||
|
||||
#include "stm32f1xx_hal.h"
|
||||
void power_check() {
|
||||
#if POW_PD
|
||||
#ifdef POW_PD
|
||||
// Cant start QC until either PD works or fails
|
||||
if (!USBPowerDelivery::negotiationComplete()) {
|
||||
return;
|
||||
@@ -25,7 +25,10 @@ bool getIsPoweredByDCIN() {
|
||||
#if defined(MODEL_TS80) + defined(MODEL_TS80P) > 0
|
||||
return false;
|
||||
#endif
|
||||
|
||||
#ifdef MODEL_TS101
|
||||
// TODO have to check what we are using
|
||||
return HAL_GPIO_ReadPin(DC_SELECT_GPIO_Port, DC_SELECT_Pin) == GPIO_PIN_SET;
|
||||
#endif
|
||||
#ifdef MODEL_TS100
|
||||
return true;
|
||||
#endif
|
||||
|
||||
@@ -18,8 +18,8 @@ DMA_HandleTypeDef hdma_i2c1_rx;
|
||||
DMA_HandleTypeDef hdma_i2c1_tx;
|
||||
|
||||
IWDG_HandleTypeDef hiwdg;
|
||||
TIM_HandleTypeDef htim2;
|
||||
TIM_HandleTypeDef htim3;
|
||||
TIM_HandleTypeDef htimADC;
|
||||
TIM_HandleTypeDef htimTip;
|
||||
#define ADC_FILTER_LEN 4
|
||||
#define ADC_SAMPLES 16
|
||||
uint16_t ADCReadings[ADC_SAMPLES]; // Used to store the adc readings for the handle cold junction temp
|
||||
@@ -29,8 +29,8 @@ static void SystemClock_Config(void);
|
||||
static void MX_ADC1_Init(void);
|
||||
static void MX_I2C1_Init(void);
|
||||
static void MX_IWDG_Init(void);
|
||||
static void MX_TIM3_Init(void);
|
||||
static void MX_TIM2_Init(void);
|
||||
static void MX_TIP_CONTROL_TIMER_Init(void);
|
||||
static void MX_ADC_CONTROL_TIMER_Init(void);
|
||||
static void MX_DMA_Init(void);
|
||||
static void MX_GPIO_Init(void);
|
||||
static void MX_ADC2_Init(void);
|
||||
@@ -45,11 +45,13 @@ void Setup_HAL() {
|
||||
|
||||
MX_GPIO_Init();
|
||||
MX_DMA_Init();
|
||||
#ifndef I2C_SOFT_BUS_1
|
||||
MX_I2C1_Init();
|
||||
#endif
|
||||
MX_ADC1_Init();
|
||||
MX_ADC2_Init();
|
||||
MX_TIM3_Init();
|
||||
MX_TIM2_Init();
|
||||
MX_TIP_CONTROL_TIMER_Init();
|
||||
MX_ADC_CONTROL_TIMER_Init();
|
||||
MX_IWDG_Init();
|
||||
HAL_ADC_Start_DMA(&hadc1, (uint32_t *)ADCReadings, (ADC_SAMPLES)); // start DMA of normal readings
|
||||
HAL_ADCEx_InjectedStart(&hadc1); // enable injected readings
|
||||
@@ -68,7 +70,41 @@ uint16_t getADCHandleTemp(uint8_t sample) {
|
||||
return filter.average() >> 1;
|
||||
}
|
||||
|
||||
#ifdef HAS_SPLIT_POWER_PATH
|
||||
static history<uint16_t, ADC_FILTER_LEN> filteredDC = {{0}, 0, 0};
|
||||
static history<uint16_t, ADC_FILTER_LEN> filteredPD = {{0}, 0, 0};
|
||||
|
||||
uint16_t getRawDCVin() { return filteredDC.average(); }
|
||||
uint16_t getRawPDVin() { return filteredPD.average(); }
|
||||
#endif
|
||||
|
||||
uint16_t getADCVin(uint8_t sample) {
|
||||
#ifdef HAS_SPLIT_POWER_PATH
|
||||
// In split power path operation, we need to read both inputs, and return the larger
|
||||
|
||||
if (sample) {
|
||||
{
|
||||
uint16_t latestADC = 0;
|
||||
latestADC += hadc2.Instance->JDR1;
|
||||
latestADC += hadc2.Instance->JDR2;
|
||||
latestADC <<= 3;
|
||||
filteredDC.update(latestADC);
|
||||
}
|
||||
{
|
||||
uint16_t latestADC = 0;
|
||||
latestADC += hadc2.Instance->JDR3;
|
||||
latestADC += hadc2.Instance->JDR4;
|
||||
latestADC <<= 3;
|
||||
filteredPD.update(latestADC);
|
||||
}
|
||||
}
|
||||
uint16_t dc = filteredDC.average();
|
||||
uint16_t pd = filteredPD.average();
|
||||
if (dc > pd) {
|
||||
return dc;
|
||||
}
|
||||
return pd;
|
||||
#else
|
||||
static history<uint16_t, ADC_FILTER_LEN> filter = {{0}, 0, 0};
|
||||
if (sample) {
|
||||
uint16_t latestADC = 0;
|
||||
@@ -77,10 +113,11 @@ uint16_t getADCVin(uint8_t sample) {
|
||||
latestADC += hadc2.Instance->JDR2;
|
||||
latestADC += hadc2.Instance->JDR3;
|
||||
latestADC += hadc2.Instance->JDR4;
|
||||
latestADC <<= 3;
|
||||
latestADC <<= 1;
|
||||
filter.update(latestADC);
|
||||
}
|
||||
return filter.average();
|
||||
#endif
|
||||
}
|
||||
// Returns either average or instant value. When sample is set the samples from the injected ADC are copied to the filter and then the raw reading is returned
|
||||
uint16_t getTipRawTemp(uint8_t sample) {
|
||||
@@ -178,7 +215,7 @@ static void MX_ADC1_Init(void) {
|
||||
sConfigInjected.InjectedRank = 1;
|
||||
sConfigInjected.InjectedNbrOfConversion = 4;
|
||||
sConfigInjected.InjectedSamplingTime = ADC_SAMPLETIME_28CYCLES_5;
|
||||
sConfigInjected.ExternalTrigInjecConv = ADC_EXTERNALTRIGINJECCONV_T2_TRGO;
|
||||
sConfigInjected.ExternalTrigInjecConv = ADC_TRIGGER;
|
||||
sConfigInjected.AutoInjectedConv = DISABLE;
|
||||
sConfigInjected.InjectedDiscontinuousConvMode = DISABLE;
|
||||
sConfigInjected.InjectedOffset = 0;
|
||||
@@ -203,7 +240,7 @@ static void MX_ADC2_Init(void) {
|
||||
/**Common config
|
||||
*/
|
||||
hadc2.Instance = ADC2;
|
||||
hadc2.Init.ScanConvMode = ADC_SCAN_DISABLE;
|
||||
hadc2.Init.ScanConvMode = ADC_SCAN_ENABLE;
|
||||
hadc2.Init.ContinuousConvMode = ENABLE;
|
||||
hadc2.Init.DiscontinuousConvMode = DISABLE;
|
||||
hadc2.Init.ExternalTrigConv = ADC_SOFTWARE_START;
|
||||
@@ -217,13 +254,18 @@ static void MX_ADC2_Init(void) {
|
||||
sConfigInjected.InjectedRank = ADC_INJECTED_RANK_1;
|
||||
sConfigInjected.InjectedNbrOfConversion = 4;
|
||||
sConfigInjected.InjectedSamplingTime = ADC_SAMPLETIME_28CYCLES_5;
|
||||
sConfigInjected.ExternalTrigInjecConv = ADC_EXTERNALTRIGINJECCONV_T2_TRGO;
|
||||
sConfigInjected.ExternalTrigInjecConv = ADC_TRIGGER;
|
||||
sConfigInjected.AutoInjectedConv = DISABLE;
|
||||
sConfigInjected.InjectedDiscontinuousConvMode = DISABLE;
|
||||
sConfigInjected.InjectedOffset = 0;
|
||||
HAL_ADCEx_InjectedConfigChannel(&hadc2, &sConfigInjected);
|
||||
sConfigInjected.InjectedRank = ADC_INJECTED_RANK_2;
|
||||
HAL_ADCEx_InjectedConfigChannel(&hadc2, &sConfigInjected);
|
||||
|
||||
#ifdef HAS_SPLIT_POWER_PATH
|
||||
sConfigInjected.InjectedChannel = PD_VIN_ADC2_CHANNEL;
|
||||
#endif
|
||||
|
||||
sConfigInjected.InjectedRank = ADC_INJECTED_RANK_3;
|
||||
HAL_ADCEx_InjectedConfigChannel(&hadc2, &sConfigInjected);
|
||||
sConfigInjected.InjectedRank = ADC_INJECTED_RANK_4;
|
||||
@@ -259,35 +301,43 @@ static void MX_IWDG_Init(void) {
|
||||
}
|
||||
|
||||
/* TIM3 init function */
|
||||
static void MX_TIM3_Init(void) {
|
||||
static void MX_TIP_CONTROL_TIMER_Init(void) {
|
||||
TIM_ClockConfigTypeDef sClockSourceConfig;
|
||||
TIM_MasterConfigTypeDef sMasterConfig;
|
||||
TIM_OC_InitTypeDef sConfigOC;
|
||||
|
||||
htim3.Instance = TIM3;
|
||||
htim3.Init.Prescaler = 8;
|
||||
htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||
htim3.Init.Period = 100; // 5 Khz PWM freq
|
||||
htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV4; // 4mhz before div
|
||||
htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; // Preload the ARR register (though we dont use this)
|
||||
HAL_TIM_Base_Init(&htim3);
|
||||
htimTip.Instance = TIP_CONTROL_TIMER;
|
||||
#ifdef TIP_HAS_DIRECT_PWM
|
||||
htimTip.Init.Prescaler = 100;
|
||||
#else
|
||||
htimTip.Init.Prescaler = 3;
|
||||
#endif
|
||||
htimTip.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||
htimTip.Init.Period = 255; // 5 Khz PWM freq
|
||||
htimTip.Init.ClockDivision = TIM_CLOCKDIVISION_DIV4; // 4mhz before div
|
||||
htimTip.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; // Preload the ARR register (though we dont use this)
|
||||
HAL_TIM_Base_Init(&htimTip);
|
||||
|
||||
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
|
||||
HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig);
|
||||
HAL_TIM_ConfigClockSource(&htimTip, &sClockSourceConfig);
|
||||
|
||||
HAL_TIM_PWM_Init(&htim3);
|
||||
HAL_TIM_PWM_Init(&htimTip);
|
||||
|
||||
HAL_TIM_OC_Init(&htim3);
|
||||
HAL_TIM_OC_Init(&htimTip);
|
||||
|
||||
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
|
||||
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
||||
HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig);
|
||||
HAL_TIMEx_MasterConfigSynchronization(&htimTip, &sMasterConfig);
|
||||
|
||||
sConfigOC.OCMode = TIM_OCMODE_PWM1;
|
||||
sConfigOC.Pulse = 50; // 50% duty cycle, that is AC coupled through the cap
|
||||
sConfigOC.OCMode = TIM_OCMODE_PWM1;
|
||||
#ifdef TIP_HAS_DIRECT_PWM
|
||||
sConfigOC.Pulse = 0; // PWM is direct to tip
|
||||
#else
|
||||
sConfigOC.Pulse = 127; // 50% duty cycle, that is AC coupled through the cap to provide an on signal (This does not do tip at 50% duty cycle)
|
||||
#endif
|
||||
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
|
||||
sConfigOC.OCFastMode = TIM_OCFAST_ENABLE;
|
||||
HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, PWM_Out_CHANNEL);
|
||||
HAL_TIM_PWM_ConfigChannel(&htimTip, &sConfigOC, PWM_Out_CHANNEL);
|
||||
|
||||
GPIO_InitTypeDef GPIO_InitStruct;
|
||||
|
||||
@@ -302,12 +352,12 @@ static void MX_TIM3_Init(void) {
|
||||
// Remap TIM3_CH1 to be on PB4
|
||||
__HAL_AFIO_REMAP_TIM3_PARTIAL();
|
||||
#else
|
||||
// No re-map required
|
||||
// No re-map required
|
||||
#endif
|
||||
HAL_TIM_PWM_Start(&htim3, PWM_Out_CHANNEL);
|
||||
HAL_TIM_PWM_Start(&htimTip, PWM_Out_CHANNEL);
|
||||
}
|
||||
/* TIM3 init function */
|
||||
static void MX_TIM2_Init(void) {
|
||||
static void MX_ADC_CONTROL_TIMER_Init(void) {
|
||||
/*
|
||||
* We use the channel 1 to trigger the ADC at end of PWM period
|
||||
* And we use the channel 4 as the PWM modulation source using Interrupts
|
||||
@@ -318,30 +368,30 @@ static void MX_TIM2_Init(void) {
|
||||
|
||||
// Timer 2 is fairly slow as its being used to run the PWM and trigger the ADC
|
||||
// in the PWM off time.
|
||||
htim2.Instance = TIM2;
|
||||
htimADC.Instance = ADC_CONTROL_TIMER;
|
||||
// dummy value, will be reconfigured by BSPInit()
|
||||
htim2.Init.Prescaler = 2000; // 2 MHz timer clock/2000 = 1 kHz tick rate
|
||||
htimADC.Init.Prescaler = 2000; // 2 MHz timer clock/2000 = 1 kHz tick rate
|
||||
|
||||
// pwm out is 10k from tim3, we want to run our PWM at around 10hz or slower on the output stage
|
||||
// These values give a rate of around 3.5 Hz for "fast" mode and 1.84 Hz for "slow"
|
||||
htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||
htimADC.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||
// dummy value, will be reconfigured by BSPInit()
|
||||
htim2.Init.Period = powerPWM + 14 * 2;
|
||||
htimADC.Init.Period = powerPWM + 14 * 2;
|
||||
|
||||
htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV4; // 8 MHz (x2 APB1) before divide
|
||||
htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
|
||||
htim2.Init.RepetitionCounter = 0;
|
||||
HAL_TIM_Base_Init(&htim2);
|
||||
htimADC.Init.ClockDivision = TIM_CLOCKDIVISION_DIV4; // 8 MHz (x2 APB1) before divide
|
||||
htimADC.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
|
||||
htimADC.Init.RepetitionCounter = 0;
|
||||
HAL_TIM_Base_Init(&htimADC);
|
||||
|
||||
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
|
||||
HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig);
|
||||
HAL_TIM_ConfigClockSource(&htimADC, &sClockSourceConfig);
|
||||
|
||||
HAL_TIM_PWM_Init(&htim2);
|
||||
HAL_TIM_OC_Init(&htim2);
|
||||
HAL_TIM_PWM_Init(&htimADC);
|
||||
HAL_TIM_OC_Init(&htimADC);
|
||||
|
||||
sMasterConfig.MasterOutputTrigger = TIM_TRGO_OC1;
|
||||
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
||||
HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig);
|
||||
HAL_TIMEx_MasterConfigSynchronization(&htimADC, &sMasterConfig);
|
||||
|
||||
sConfigOC.OCMode = TIM_OCMODE_PWM1;
|
||||
// dummy value, will be reconfigured by BSPInit() in the BSP.cpp
|
||||
@@ -354,15 +404,15 @@ static void MX_TIM2_Init(void) {
|
||||
* */
|
||||
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
|
||||
sConfigOC.OCFastMode = TIM_OCFAST_ENABLE;
|
||||
HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1);
|
||||
HAL_TIM_PWM_ConfigChannel(&htimADC, &sConfigOC, TIM_CHANNEL_1);
|
||||
sConfigOC.Pulse = 0; // default to entirely off
|
||||
HAL_TIM_OC_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4);
|
||||
HAL_TIM_OC_ConfigChannel(&htimADC, &sConfigOC, TIM_CHANNEL_4);
|
||||
|
||||
HAL_TIM_Base_Start_IT(&htim2);
|
||||
HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1);
|
||||
HAL_TIM_PWM_Start_IT(&htim2, TIM_CHANNEL_4);
|
||||
HAL_NVIC_SetPriority(TIM2_IRQn, 15, 0);
|
||||
HAL_NVIC_EnableIRQ(TIM2_IRQn);
|
||||
HAL_TIM_Base_Start_IT(&htimADC);
|
||||
HAL_TIM_PWM_Start(&htimADC, TIM_CHANNEL_1);
|
||||
HAL_TIM_PWM_Start_IT(&htimADC, TIM_CHANNEL_4);
|
||||
HAL_NVIC_SetPriority(ADC_CONTROL_TIMER_IRQ, 15, 0);
|
||||
HAL_NVIC_EnableIRQ(ADC_CONTROL_TIMER_IRQ);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -446,8 +496,8 @@ static void MX_GPIO_Init(void) {
|
||||
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
||||
#endif
|
||||
#else
|
||||
/* TS80 */
|
||||
/* Leave USB lines open circuit*/
|
||||
/* TS80 */
|
||||
/* Leave USB lines open circuit*/
|
||||
|
||||
#endif
|
||||
|
||||
@@ -462,12 +512,45 @@ static void MX_GPIO_Init(void) {
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||
HAL_GPIO_Init(OLED_RESET_GPIO_Port, &GPIO_InitStruct);
|
||||
HAL_GPIO_WritePin(OLED_RESET_GPIO_Port, OLED_RESET_Pin, GPIO_PIN_RESET);
|
||||
|
||||
// Pull down LCD reset
|
||||
HAL_GPIO_WritePin(OLED_RESET_GPIO_Port, OLED_RESET_Pin, GPIO_PIN_RESET);
|
||||
HAL_Delay(30);
|
||||
HAL_GPIO_WritePin(OLED_RESET_GPIO_Port, OLED_RESET_Pin, GPIO_PIN_SET);
|
||||
|
||||
#ifdef DC_SELECT_Pin
|
||||
GPIO_InitStruct.Pin = DC_SELECT_Pin;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||
HAL_GPIO_Init(DC_SELECT_GPIO_Port, &GPIO_InitStruct);
|
||||
HAL_GPIO_WritePin(DC_SELECT_GPIO_Port, DC_SELECT_Pin, GPIO_PIN_RESET);
|
||||
#endif
|
||||
|
||||
#ifdef PD_SELECT_Pin
|
||||
GPIO_InitStruct.Pin = PD_SELECT_Pin;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||
HAL_GPIO_Init(PD_SELECT_GPIO_Port, &GPIO_InitStruct);
|
||||
HAL_GPIO_WritePin(PD_SELECT_GPIO_Port, PD_SELECT_Pin, GPIO_PIN_RESET);
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef TIP_RESISTANCE_SENSE_Pin
|
||||
GPIO_InitStruct.Pin = TIP_RESISTANCE_SENSE_Pin;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||
HAL_GPIO_Init(TIP_RESISTANCE_SENSE_GPIO_Port, &GPIO_InitStruct);
|
||||
HAL_GPIO_WritePin(TIP_RESISTANCE_SENSE_GPIO_Port, TIP_RESISTANCE_SENSE_Pin, GPIO_PIN_RESET);
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef INT_PD_Pin
|
||||
GPIO_InitStruct.Pin = INT_PD_Pin;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
|
||||
GPIO_InitStruct.Pull = GPIO_PULLUP;
|
||||
HAL_GPIO_Init(INT_PD_GPIO_Port, &GPIO_InitStruct);
|
||||
|
||||
#endif
|
||||
}
|
||||
#ifdef USE_FULL_ASSERT
|
||||
void assert_failed(uint8_t *file, uint32_t line) { asm("bkpt"); }
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
#ifndef SETUP_H_
|
||||
#define SETUP_H_
|
||||
|
||||
#include "configuration.h"
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
@@ -24,13 +24,18 @@ extern I2C_HandleTypeDef hi2c1;
|
||||
|
||||
extern IWDG_HandleTypeDef hiwdg;
|
||||
|
||||
extern TIM_HandleTypeDef htim2;
|
||||
extern TIM_HandleTypeDef htim3;
|
||||
extern TIM_HandleTypeDef htimADC;
|
||||
extern TIM_HandleTypeDef htimTip;
|
||||
void Setup_HAL();
|
||||
uint16_t getADCHandleTemp(uint8_t sample);
|
||||
uint16_t getADCVin(uint8_t sample);
|
||||
void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); // Since the hal header file does not define this one
|
||||
|
||||
#ifdef HAS_SPLIT_POWER_PATH
|
||||
uint16_t getRawDCVin();
|
||||
uint16_t getRawPDVin();
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -10,14 +10,27 @@
|
||||
#include "BSP.h"
|
||||
#include "configuration.h"
|
||||
#include "stm32f1xx_hal.h"
|
||||
#ifdef I2C_SOFT
|
||||
#ifdef I2C_SOFT_BUS_2
|
||||
|
||||
#define SOFT_SCL2_HIGH() HAL_GPIO_WritePin(SCL2_GPIO_Port, SCL2_Pin, GPIO_PIN_SET)
|
||||
#define SOFT_SCL2_LOW() HAL_GPIO_WritePin(SCL2_GPIO_Port, SCL2_Pin, GPIO_PIN_RESET)
|
||||
#define SOFT_SDA2_HIGH() HAL_GPIO_WritePin(SDA2_GPIO_Port, SDA2_Pin, GPIO_PIN_SET)
|
||||
#define SOFT_SDA2_LOW() HAL_GPIO_WritePin(SDA2_GPIO_Port, SDA2_Pin, GPIO_PIN_RESET)
|
||||
#define SOFT_SDA2_READ() (HAL_GPIO_ReadPin(SDA2_GPIO_Port, SDA2_Pin) == GPIO_PIN_SET ? 1 : 0)
|
||||
#define SOFT_SCL2_READ() (HAL_GPIO_ReadPin(SCL2_GPIO_Port, SCL2_Pin) == GPIO_PIN_SET ? 1 : 0)
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef I2C_SOFT_BUS_1
|
||||
#define SOFT_SCL1_HIGH() HAL_GPIO_WritePin(SCL_GPIO_Port, SCL_Pin, GPIO_PIN_SET)
|
||||
#define SOFT_SCL1_LOW() HAL_GPIO_WritePin(SCL_GPIO_Port, SCL_Pin, GPIO_PIN_RESET)
|
||||
#define SOFT_SDA1_HIGH() HAL_GPIO_WritePin(SDA_GPIO_Port, SDA_Pin, GPIO_PIN_SET)
|
||||
#define SOFT_SDA1_LOW() HAL_GPIO_WritePin(SDA_GPIO_Port, SDA_Pin, GPIO_PIN_RESET)
|
||||
#define SOFT_SDA1_READ() (HAL_GPIO_ReadPin(SDA_GPIO_Port, SDA_Pin) == GPIO_PIN_SET ? 1 : 0)
|
||||
#define SOFT_SCL1_READ() (HAL_GPIO_ReadPin(SCL_GPIO_Port, SCL_Pin) == GPIO_PIN_SET ? 1 : 0)
|
||||
|
||||
#endif
|
||||
|
||||
#define SOFT_SCL_HIGH() HAL_GPIO_WritePin(SCL2_GPIO_Port, SCL2_Pin, GPIO_PIN_SET)
|
||||
#define SOFT_SCL_LOW() HAL_GPIO_WritePin(SCL2_GPIO_Port, SCL2_Pin, GPIO_PIN_RESET)
|
||||
#define SOFT_SDA_HIGH() HAL_GPIO_WritePin(SDA2_GPIO_Port, SDA2_Pin, GPIO_PIN_SET)
|
||||
#define SOFT_SDA_LOW() HAL_GPIO_WritePin(SDA2_GPIO_Port, SDA2_Pin, GPIO_PIN_RESET)
|
||||
#define SOFT_SDA_READ() (HAL_GPIO_ReadPin(SDA2_GPIO_Port, SDA2_Pin) == GPIO_PIN_SET ? 1 : 0)
|
||||
#define SOFT_SCL_READ() (HAL_GPIO_ReadPin(SCL2_GPIO_Port, SCL2_Pin) == GPIO_PIN_SET ? 1 : 0)
|
||||
#define SOFT_I2C_DELAY() \
|
||||
{ \
|
||||
for (int xx = 0; xx < 15; xx++) { \
|
||||
@@ -25,7 +38,6 @@
|
||||
} \
|
||||
}
|
||||
|
||||
#endif
|
||||
// 40 ~= 100kHz; 15 gives around 250kHz or so which is fast _and_ stable
|
||||
|
||||
#endif /* BSP_MINIWARE_SOFTWARE_I2C_H_ */
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#include <stdint.h>
|
||||
/**
|
||||
* Configuration.h
|
||||
* Define here your default pre settings for TS80(P) or TS100
|
||||
* Define here your default pre settings for TS80(P) or TS10(0/1)
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -59,6 +59,15 @@
|
||||
#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
|
||||
|
||||
/**
|
||||
* 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
|
||||
*/
|
||||
@@ -77,7 +86,7 @@
|
||||
#define POWER_PULSE_DEFAULT 0
|
||||
#else
|
||||
#define POWER_PULSE_DEFAULT 5
|
||||
#endif
|
||||
#endif /* TS100 */
|
||||
#define POWER_PULSE_WAIT_DEFAULT 4 // Default rate of the power pulse: 4*2500 = 10000 ms = 10 s
|
||||
#define POWER_PULSE_DURATION_DEFAULT 1 // Default duration of the power pulse: 1*250 = 250 ms
|
||||
|
||||
@@ -117,13 +126,15 @@
|
||||
#define ADC_MAX_READING (4096 * 8) // Maximum reading of the adc
|
||||
#define ADC_VDD_MV 3300 // ADC max reading millivolts
|
||||
|
||||
#define POW_PD_EXT 0
|
||||
|
||||
// Deriving the Voltage div:
|
||||
// Vin_max = (3.3*(r1+r2))/(r2)
|
||||
// vdiv = (32768*4)/(vin_max*10)
|
||||
|
||||
#if defined(MODEL_TS100) + defined(MODEL_TS80) + defined(MODEL_TS80P) > 1
|
||||
#if defined(MODEL_TS100) + defined(MODEL_TS80) + defined(MODEL_TS80P) + defined(MODEL_TS101) > 1
|
||||
#error "Multiple models defined!"
|
||||
#elif defined(MODEL_TS100) + defined(MODEL_TS80) + defined(MODEL_TS80P) == 0
|
||||
#elif defined(MODEL_TS100) + defined(MODEL_TS80) + defined(MODEL_TS80P) + defined(MODEL_TS101) == 0
|
||||
#error "No model defined!"
|
||||
#endif
|
||||
#define NEEDS_VBUS_PROBE 0
|
||||
@@ -141,7 +152,7 @@
|
||||
#define MAX_TEMP_C 450 // Max soldering temp selectable °C
|
||||
#define MAX_TEMP_F 850 // Max soldering temp selectable °F
|
||||
#define MIN_TEMP_C 10 // Min soldering temp selectable °C
|
||||
#define MIN_TEMP_F 60 // Min soldering temp selectable °F
|
||||
#define MIN_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_F 480 // The min settable temp for boost mode °F
|
||||
|
||||
@@ -161,9 +172,42 @@
|
||||
#define TIP_RESISTANCE 75 // x10 ohms, 7.5 typical for ts100 tips
|
||||
|
||||
#define POW_DC
|
||||
#define POW_PD 0
|
||||
|
||||
#define TEMP_TMP36
|
||||
#endif
|
||||
#endif /* TS100 */
|
||||
|
||||
#ifdef MODEL_TS101
|
||||
#define VOLTAGE_DIV 700 // 700 - Default divider from schematic
|
||||
#define CALIBRATION_OFFSET 900 // 900 - Default adc offset in uV
|
||||
#define PID_POWER_LIMIT 100 // Sets the max pwm power limit
|
||||
#define POWER_LIMIT 0 // 0 watts default limit
|
||||
#define MAX_POWER_LIMIT 100
|
||||
#define POWER_LIMIT_STEPS 5
|
||||
#define OP_AMP_GAIN_STAGE OP_AMP_GAIN_STAGE_TS100
|
||||
#define TEMP_uV_LOOKUP_HAKKO
|
||||
|
||||
#define HARDWARE_MAX_WATTAGE_X10 1000
|
||||
#define TIP_THERMAL_MASS 65 // X10 watts to raise 1 deg C in 1 second
|
||||
#define TIP_RESISTANCE 75 // x10 ohms, 7.5 typical for ts100 tips
|
||||
|
||||
#define TIP_HAS_DIRECT_PWM 1
|
||||
#define POW_DC 1
|
||||
#define POW_PD 1
|
||||
#define I2C_SOFT_BUS_2 1
|
||||
#define I2C_SOFT_BUS_1 1
|
||||
#define OLED_I2CBB1 1
|
||||
#define USB_PD_I2CBB2 1
|
||||
#define USB_PD_VMAX 28 // Device supposedly can do 28V; looks like vmax is 33 ish
|
||||
#define OLED_128x32 1
|
||||
#define OLED_FLIP 1
|
||||
#define HAS_SPLIT_POWER_PATH 1
|
||||
#define TEMP_NTC 1
|
||||
#define ACCEL_I2CBB1 1
|
||||
#define POW_EPR 1
|
||||
#define HAS_POWER_DEBUG_MENU
|
||||
#define DEBUG_POWER_MENU_BUTTON_B
|
||||
|
||||
#endif /* TS101 */
|
||||
|
||||
#if defined(MODEL_TS80) + defined(MODEL_TS80P) > 0
|
||||
#define MAX_POWER_LIMIT 40
|
||||
@@ -177,35 +221,42 @@
|
||||
|
||||
#define LIS_ORI_FLIP
|
||||
#define OLED_FLIP
|
||||
#endif
|
||||
#endif /* TS80(P) */
|
||||
|
||||
#ifdef MODEL_TS80
|
||||
#define VOLTAGE_DIV 780 // Default divider from schematic
|
||||
#define CALIBRATION_OFFSET 900 // the adc offset in uV
|
||||
#define PID_POWER_LIMIT 24 // Sets the max pwm power limit
|
||||
#define POWER_LIMIT 24 // 24 watts default power limit
|
||||
#define PID_POWER_LIMIT 35 // Sets the max pwm power limit
|
||||
#define POWER_LIMIT 32 // 24 watts default power limit
|
||||
|
||||
#define HARDWARE_MAX_WATTAGE_X10 180
|
||||
#define HARDWARE_MAX_WATTAGE_X10 320
|
||||
|
||||
#define POW_QC
|
||||
#define POW_PD 0
|
||||
|
||||
#define TEMP_TMP36
|
||||
#endif
|
||||
#endif /* TS80 */
|
||||
|
||||
#ifdef MODEL_TS80P
|
||||
#define VOLTAGE_DIV 650 // Default for TS80P with slightly different resistors
|
||||
#define CALIBRATION_OFFSET 1500 // the adc offset in uV
|
||||
#define PID_POWER_LIMIT 35 // Sets the max pwm power limit
|
||||
#define POWER_LIMIT 30 // 30 watts default power limit
|
||||
#define POWER_LIMIT 32 // 30 watts default power limit
|
||||
|
||||
#define HARDWARE_MAX_WATTAGE_X10 300
|
||||
#define HARDWARE_MAX_WATTAGE_X10 320
|
||||
|
||||
#define POW_PD 1
|
||||
#define POW_QC 1
|
||||
#define TEMP_NTC
|
||||
#define I2C_SOFT
|
||||
#define I2C_SOFT_BUS_2 1
|
||||
#define SC7_ORI_FLIP
|
||||
#endif
|
||||
#endif
|
||||
#endif /* TS80P */
|
||||
|
||||
#define FLASH_LOGOADDR (0x08000000 + (62 * 1024))
|
||||
#ifdef MODEL_TS101
|
||||
#define FLASH_LOGOADDR (0x08000000 + (126 * 1024))
|
||||
#define SETTINGS_START_PAGE (0x08000000 + (127 * 1024))
|
||||
#else
|
||||
#define FLASH_LOGOADDR (0x08000000 + (62 * 1024))
|
||||
#define SETTINGS_START_PAGE (0x08000000 + (63 * 1024))
|
||||
#endif /* TS101 */
|
||||
|
||||
#endif /* CONFIGURATION_H_ */
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
#include "stm32f1xx_hal.h"
|
||||
#include "string.h"
|
||||
|
||||
#define SETTINGS_START_PAGE (0x08000000 + (63 * 1024))
|
||||
|
||||
void flash_save_buffer(const uint8_t *buffer, const uint16_t length) {
|
||||
FLASH_EraseInitTypeDef pEraseInit;
|
||||
@@ -32,10 +31,9 @@ void flash_save_buffer(const uint8_t *buffer, const uint16_t length) {
|
||||
HAL_FLASH_Unlock();
|
||||
for (uint16_t i = 0; i < (length / 2); i++) {
|
||||
resetWatchdog();
|
||||
HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, SETTINGS_START_PAGE+ (i*sizeof(uint16_t)), data[i]);
|
||||
HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, SETTINGS_START_PAGE + (i * sizeof(uint16_t)), data[i]);
|
||||
}
|
||||
HAL_FLASH_Lock();
|
||||
|
||||
}
|
||||
|
||||
void flash_read_buffer(uint8_t *buffer, const uint16_t length) { memcpy(buffer, (uint8_t*)SETTINGS_START_PAGE, length); }
|
||||
void flash_read_buffer(uint8_t *buffer, const uint16_t length) { memcpy(buffer, (uint8_t *)SETTINGS_START_PAGE, length); }
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
#include "configuration.h"
|
||||
#if POW_PD
|
||||
#ifdef POW_PD
|
||||
#include "BSP.h"
|
||||
#include "I2CBB.hpp"
|
||||
#include "I2CBB2.hpp"
|
||||
#include "Setup.h"
|
||||
|
||||
bool fusb_read_buf(const uint8_t deviceAddr, const uint8_t registerAdd, const uint8_t size, uint8_t *buf) { return I2CBB::Mem_Read(deviceAddr, registerAdd, buf, size); }
|
||||
bool fusb_read_buf(const uint8_t deviceAddr, const uint8_t registerAdd, const uint8_t size, uint8_t *buf) { return I2CBB2::Mem_Read(deviceAddr, registerAdd, buf, size); }
|
||||
|
||||
bool fusb_write_buf(const uint8_t deviceAddr, const uint8_t registerAdd, const uint8_t size, uint8_t *buf) { return I2CBB::Mem_Write(deviceAddr, registerAdd, buf, size); }
|
||||
bool fusb_write_buf(const uint8_t deviceAddr, const uint8_t registerAdd, const uint8_t size, uint8_t *buf) { return I2CBB2::Mem_Write(deviceAddr, registerAdd, buf, size); }
|
||||
|
||||
void setupFUSBIRQ() {
|
||||
GPIO_InitTypeDef GPIO_InitStruct;
|
||||
|
||||
@@ -6,20 +6,27 @@
|
||||
*/
|
||||
|
||||
#include "BSP.h"
|
||||
#include "I2CBB.hpp"
|
||||
#include "I2CBB1.hpp"
|
||||
#include "I2CBB2.hpp"
|
||||
#include "Pins.h"
|
||||
#include "Setup.h"
|
||||
#include "configuration.h"
|
||||
#include <I2C_Wrapper.hpp>
|
||||
|
||||
|
||||
void preRToSInit() {
|
||||
/* Reset of all peripherals, Initializes the Flash interface and the Systick.
|
||||
*/
|
||||
HAL_Init();
|
||||
Setup_HAL(); // Setup all the HAL objects
|
||||
BSPInit();
|
||||
#ifdef I2C_SOFT
|
||||
I2CBB::init();
|
||||
#ifdef I2C_SOFT_BUS_2
|
||||
I2CBB2::init();
|
||||
#endif
|
||||
#ifdef I2C_SOFT_BUS_1
|
||||
I2CBB1::init();
|
||||
#endif
|
||||
|
||||
/* Init the IPC objects */
|
||||
FRToSI2C::FRToSInit();
|
||||
}
|
||||
|
||||
@@ -58,14 +58,23 @@ void HAL_ADC_MspInit(ADC_HandleTypeDef *hadc) {
|
||||
*/
|
||||
GPIO_InitStruct.Pin = TIP_TEMP_Pin;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
|
||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||
HAL_GPIO_Init(TIP_TEMP_GPIO_Port, &GPIO_InitStruct);
|
||||
|
||||
GPIO_InitStruct.Pin = TMP36_INPUT_Pin;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
|
||||
HAL_GPIO_Init(TMP36_INPUT_GPIO_Port, &GPIO_InitStruct);
|
||||
|
||||
GPIO_InitStruct.Pin = VIN_Pin;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
|
||||
HAL_GPIO_Init(VIN_GPIO_Port, &GPIO_InitStruct);
|
||||
|
||||
#ifdef PD_VIN_Pin
|
||||
|
||||
GPIO_InitStruct.Pin = PD_VIN_Pin;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
|
||||
HAL_GPIO_Init(PD_VIN_GPIO_Port, &GPIO_InitStruct);
|
||||
#endif
|
||||
/* ADC2 interrupt Init */
|
||||
HAL_NVIC_SetPriority(ADC1_2_IRQn, 15, 0);
|
||||
HAL_NVIC_EnableIRQ(ADC1_2_IRQn);
|
||||
@@ -83,7 +92,7 @@ void HAL_I2C_MspInit(I2C_HandleTypeDef *hi2c) {
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
|
||||
GPIO_InitStruct.Pull = GPIO_PULLUP;
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
|
||||
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
||||
HAL_GPIO_Init(SCL_GPIO_Port, &GPIO_InitStruct);
|
||||
|
||||
/* Peripheral clock enable */
|
||||
__HAL_RCC_I2C1_CLK_ENABLE();
|
||||
@@ -128,5 +137,8 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim_base) {
|
||||
} else if (htim_base->Instance == TIM2) {
|
||||
/* Peripheral clock enable */
|
||||
__HAL_RCC_TIM2_CLK_ENABLE();
|
||||
} else if (htim_base->Instance == TIM4) {
|
||||
/* Peripheral clock enable */
|
||||
__HAL_RCC_TIM4_CLK_ENABLE();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
// This is the stock standard STM interrupt file full of handlers
|
||||
#include "stm32f1xx_it.h"
|
||||
#include "Pins.h"
|
||||
#include "Setup.h"
|
||||
#include "cmsis_os.h"
|
||||
#include "stm32f1xx.h"
|
||||
@@ -11,7 +12,6 @@ extern TIM_HandleTypeDef htim1; // used for the systick
|
||||
/* Cortex-M3 Processor Interruption and Exception Handlers */
|
||||
/******************************************************************************/
|
||||
|
||||
|
||||
// Systick is used by FreeRTOS tick
|
||||
void SysTick_Handler(void) { osSystickHandler(); }
|
||||
|
||||
@@ -29,11 +29,33 @@ void ADC1_2_IRQHandler(void) { HAL_ADC_IRQHandler(&hadc1); }
|
||||
|
||||
// Timer 1 has overflowed, used for HAL ticks
|
||||
void TIM1_UP_IRQHandler(void) { HAL_TIM_IRQHandler(&htim1); }
|
||||
|
||||
// Timer 3 is used for the PWM output to the tip
|
||||
void TIM3_IRQHandler(void) { HAL_TIM_IRQHandler(&htim3); }
|
||||
void TIM3_IRQHandler(void) {
|
||||
TIM_HandleTypeDef *handle = &htimADC;
|
||||
if (htimTip.Instance == TIM3) {
|
||||
handle = &htimTip;
|
||||
}
|
||||
HAL_TIM_IRQHandler(handle);
|
||||
}
|
||||
|
||||
// Timer 2 is used for co-ordination of PWM & ADC
|
||||
void TIM2_IRQHandler(void) { HAL_TIM_IRQHandler(&htim2); }
|
||||
void TIM2_IRQHandler(void) {
|
||||
TIM_HandleTypeDef *handle = &htimADC;
|
||||
if (htimTip.Instance == TIM2) {
|
||||
handle = &htimTip;
|
||||
}
|
||||
HAL_TIM_IRQHandler(handle);
|
||||
}
|
||||
|
||||
// Timer 2 is used for co-ordination of PWM & ADC
|
||||
void TIM4_IRQHandler(void) {
|
||||
TIM_HandleTypeDef *handle = &htimADC;
|
||||
if (htimTip.Instance == TIM4) {
|
||||
handle = &htimTip;
|
||||
}
|
||||
HAL_TIM_IRQHandler(handle);
|
||||
}
|
||||
|
||||
void I2C1_EV_IRQHandler(void) { HAL_I2C_EV_IRQHandler(&hi2c1); }
|
||||
void I2C1_ER_IRQHandler(void) { HAL_I2C_ER_IRQHandler(&hi2c1); }
|
||||
@@ -41,4 +63,9 @@ void I2C1_ER_IRQHandler(void) { HAL_I2C_ER_IRQHandler(&hi2c1); }
|
||||
void DMA1_Channel6_IRQHandler(void) { HAL_DMA_IRQHandler(&hdma_i2c1_tx); }
|
||||
|
||||
void DMA1_Channel7_IRQHandler(void) { HAL_DMA_IRQHandler(&hdma_i2c1_rx); }
|
||||
void EXTI9_5_IRQHandler(void) { HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_9); }
|
||||
|
||||
void EXTI9_5_IRQHandler(void) {
|
||||
#ifdef INT_PD_Pin
|
||||
HAL_GPIO_EXTI_IRQHandler(INT_PD_Pin);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -12,12 +12,8 @@
|
||||
#if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG)
|
||||
/* #define DATA_IN_ExtSRAM */
|
||||
#endif /* STM32F100xE || STM32F101xE || STM32F101xG || STM32F103xE || STM32F103xG */
|
||||
|
||||
#ifndef VECT_TAB_OFFSET
|
||||
#define VECT_TAB_OFFSET \
|
||||
0x00004000U /*!< Vector Table base offset field. \
|
||||
This value must be a multiple of 0x200. */
|
||||
// We offset this by 0x4000 to because of the bootloader
|
||||
#error VECT_TAB_OFFSET
|
||||
#endif
|
||||
|
||||
/*******************************************************************************
|
||||
|
||||
@@ -87,6 +87,7 @@ bool isTipDisconnected() {
|
||||
}
|
||||
|
||||
void setStatusLED(const enum StatusLED state) {}
|
||||
void setBuzzer(bool on) {}
|
||||
|
||||
uint8_t preStartChecks() { return 1; }
|
||||
uint64_t getDeviceID() { return dbg_id_get(); }
|
||||
@@ -95,4 +96,5 @@ uint8_t getTipResistanceX10() { return TIP_RESISTANCE; }
|
||||
|
||||
uint8_t preStartChecksDone() { return 1; }
|
||||
|
||||
uint8_t getTipThermalMass() { return TIP_THERMAL_MASS; }
|
||||
uint8_t getTipThermalMass() { return TIP_THERMAL_MASS; }
|
||||
uint8_t getTipInertia() { return TIP_THERMAL_MASS; }
|
||||
@@ -93,7 +93,7 @@ void setTipPWM(const uint8_t pulse, const bool shouldUseFastModePWM) {
|
||||
extern osThreadId POWTaskHandle;
|
||||
|
||||
void EXTI5_9_IRQHandler(void) {
|
||||
#if POW_PD
|
||||
#ifdef POW_PD
|
||||
if (RESET != exti_interrupt_flag_get(EXTI_5)) {
|
||||
exti_interrupt_flag_clear(EXTI_5);
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
#include "configuration.h"
|
||||
|
||||
void power_check() {
|
||||
#if POW_PD
|
||||
#ifdef POW_PD
|
||||
// Cant start QC until either PD works or fails
|
||||
if (!USBPowerDelivery::negotiationComplete()) {
|
||||
return;
|
||||
@@ -22,7 +22,7 @@ void power_check() {
|
||||
}
|
||||
|
||||
bool getIsPoweredByDCIN() {
|
||||
#if POW_PD
|
||||
#ifdef POW_PD
|
||||
if (!USBPowerDelivery::negotiationComplete()) {
|
||||
return false; // We are assuming not dc while negotiating
|
||||
}
|
||||
|
||||
@@ -59,6 +59,15 @@
|
||||
#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
|
||||
|
||||
/**
|
||||
* 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
|
||||
*/
|
||||
@@ -77,7 +86,7 @@
|
||||
#define POWER_PULSE_DEFAULT 0
|
||||
#else
|
||||
#define POWER_PULSE_DEFAULT 5
|
||||
#endif
|
||||
#endif /* Pinecil */
|
||||
#define POWER_PULSE_WAIT_DEFAULT 4 // Default rate of the power pulse: 4*2500 = 10000 ms = 10 s
|
||||
#define POWER_PULSE_DURATION_DEFAULT 1 // Default duration of the power pulse: 1*250 = 250 ms
|
||||
|
||||
@@ -133,11 +142,12 @@
|
||||
#define MAX_TEMP_C 450 // Max soldering temp selectable °C
|
||||
#define MAX_TEMP_F 850 // Max soldering temp selectable °F
|
||||
#define MIN_TEMP_C 10 // Min soldering temp selectable °C
|
||||
#define MIN_TEMP_F 60 // Min soldering temp selectable °F
|
||||
#define MIN_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_F 480 // The min settable temp for boost mode °F
|
||||
|
||||
#define POW_PD 1
|
||||
#define POW_PD_EXT 0
|
||||
#define POW_QC 1
|
||||
#define POW_DC 1
|
||||
#define POW_QC_20V 1
|
||||
@@ -154,9 +164,12 @@
|
||||
#define HARDWARE_MAX_WATTAGE_X10 750
|
||||
#define TIP_THERMAL_MASS 65 // X10 watts to raise 1 deg C in 1 second
|
||||
#define TIP_RESISTANCE 75 // x10 ohms, 7.5 typical for Pinecil tips
|
||||
#endif
|
||||
#endif
|
||||
#define CANT_DIRECT_READ_SETTINGS
|
||||
#endif /* Pinecil */
|
||||
|
||||
#define FLASH_LOGOADDR (0x08000000 + (126 * 1024))
|
||||
#define FLASH_LOGOADDR (0x08000000 + (126 * 1024))
|
||||
#define SETTINGS_START_PAGE (0x08000000 + (127 * 1024))
|
||||
|
||||
#define HAS_POWER_DEBUG_MENU
|
||||
|
||||
#endif /* CONFIGURATION_H_ */
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
#include "gd32vf103_libopt.h"
|
||||
#include "string.h"
|
||||
#define FMC_PAGE_SIZE ((uint16_t)0x400U)
|
||||
#define SETTINGS_START_PAGE (0x08000000 + (127 * 1024))
|
||||
|
||||
void flash_save_buffer(const uint8_t *buffer, const uint16_t length) {
|
||||
|
||||
/* unlock the flash program/erase controller */
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#include "configuration.h"
|
||||
#if POW_PD
|
||||
#ifdef POW_PD
|
||||
#include "BSP.h"
|
||||
#include "I2C_Wrapper.hpp"
|
||||
#include "Setup.h"
|
||||
|
||||
@@ -21,7 +21,7 @@ const uint8_t tempMeasureTicks = 25;
|
||||
uint16_t totalPWM = 255; // Total length of the cycle's ticks
|
||||
|
||||
void resetWatchdog() {
|
||||
//#TODO
|
||||
// #TODO
|
||||
}
|
||||
|
||||
#ifdef TEMP_NTC
|
||||
@@ -125,9 +125,7 @@ uint8_t getButtonB() {
|
||||
return val;
|
||||
}
|
||||
|
||||
void reboot() {
|
||||
hal_system_reset();
|
||||
}
|
||||
void reboot() { hal_system_reset(); }
|
||||
|
||||
void delay_ms(uint16_t count) {
|
||||
// delay_1ms(count);
|
||||
@@ -148,6 +146,7 @@ bool isTipDisconnected() {
|
||||
void setStatusLED(const enum StatusLED state) {
|
||||
// Dont have one
|
||||
}
|
||||
void setBuzzer(bool on) {}
|
||||
|
||||
uint8_t lastTipResistance = 0; // default to unknown
|
||||
const uint8_t numTipResistanceReadings = 3;
|
||||
@@ -163,7 +162,13 @@ uint8_t getTipThermalMass() {
|
||||
if (lastTipResistance >= 80) {
|
||||
return TIP_THERMAL_MASS;
|
||||
}
|
||||
return (TIP_THERMAL_MASS * 25) / 10;
|
||||
return 45;
|
||||
}
|
||||
uint8_t getTipInertia() {
|
||||
if (lastTipResistance >= 80) {
|
||||
return TIP_THERMAL_MASS;
|
||||
}
|
||||
return 10;
|
||||
}
|
||||
// We want to calculate lastTipResistance
|
||||
// If tip is connected, and the tip is cold and the tip is not being heated
|
||||
|
||||
@@ -151,7 +151,7 @@ extern osThreadId POWTaskHandle;
|
||||
void GPIO_IRQHandler(void) {
|
||||
if (SET == GLB_Get_GPIO_IntStatus(FUSB302_IRQ_GLB_Pin)) {
|
||||
GLB_GPIO_IntClear(FUSB302_IRQ_GLB_Pin, SET);
|
||||
#if POW_PD
|
||||
#ifdef POW_PD
|
||||
if (POWTaskHandle != nullptr) {
|
||||
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
||||
xTaskNotifyFromISR(POWTaskHandle, 1, eSetBits, &xHigherPriorityTaskWoken);
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
#include "configuration.h"
|
||||
|
||||
void power_check() {
|
||||
#if POW_PD
|
||||
#ifdef POW_PD
|
||||
// Cant start QC until either PD works or fails
|
||||
if (!USBPowerDelivery::negotiationComplete()) {
|
||||
return;
|
||||
@@ -22,7 +22,7 @@ void power_check() {
|
||||
}
|
||||
|
||||
bool getIsPoweredByDCIN() {
|
||||
#if POW_PD
|
||||
#ifdef POW_PD
|
||||
if (!USBPowerDelivery::negotiationComplete()) {
|
||||
return false; // We are assuming not dc while negotiating
|
||||
}
|
||||
|
||||
@@ -19,10 +19,11 @@ uint16_t ADCReadings[ADC_NORM_SAMPLES]; // room for 32 lots of the pair of readi
|
||||
|
||||
// Heap
|
||||
|
||||
extern uint8_t _heap_start;
|
||||
extern uint8_t _heap_size; // @suppress("Type cannot be resolved")
|
||||
extern uint8_t __HeapBase;
|
||||
extern uint8_t __HeapLimit; // @suppress("Type cannot be resolved")
|
||||
const uint32_t _heap_size = ((&__HeapLimit) - (&__HeapBase));
|
||||
static HeapRegion_t xHeapRegions[] = {
|
||||
{&_heap_start, (unsigned int)&_heap_size},
|
||||
{&__HeapBase, (unsigned int)_heap_size},
|
||||
{NULL, 0}, /* Terminates the array. */
|
||||
{NULL, 0} /* Terminates the array. */
|
||||
};
|
||||
|
||||
@@ -12,13 +12,13 @@
|
||||
#define BL_WR_BYTE(addr, val) ((*(volatile uint8_t *)(uintptr_t)(addr)) = (val))
|
||||
#define BL_RDWD_FRM_BYTEP(p) ((p[3] << 24) | (p[2] << 16) | (p[1] << 8) | (p[0]))
|
||||
|
||||
#define BL_WRWD_TO_BYTEP(p, val) \
|
||||
{ \
|
||||
p[0] = val & 0xff; \
|
||||
p[1] = (val >> 8) & 0xff; \
|
||||
p[2] = (val >> 16) & 0xff; \
|
||||
p[3] = (val >> 24) & 0xff; \
|
||||
}
|
||||
#define BL_WRWD_TO_BYTEP(p, val) \
|
||||
{ \
|
||||
p[0] = val & 0xff; \
|
||||
p[1] = (val >> 8) & 0xff; \
|
||||
p[2] = (val >> 16) & 0xff; \
|
||||
p[3] = (val >> 24) & 0xff; \
|
||||
}
|
||||
/**
|
||||
* @brief Register access macro
|
||||
*/
|
||||
@@ -31,25 +31,25 @@
|
||||
#define BL_GET_REG_BITS_VAL(val, bitname) (((val)&bitname##_MSK) >> bitname##_POS)
|
||||
#define BL_SET_REG_BITS_VAL(val, bitname, bitval) (((val)&bitname##_UMSK) | ((uint32_t)(bitval) << bitname##_POS))
|
||||
#define BL_IS_REG_BIT_SET(val, bitname) (((val) & (1U << (bitname##_POS))) != 0)
|
||||
#define BL_DRV_DUMMY \
|
||||
{ \
|
||||
__ASM volatile("nop"); \
|
||||
__ASM volatile("nop"); \
|
||||
__ASM volatile("nop"); \
|
||||
__ASM volatile("nop"); \
|
||||
}
|
||||
#define BL_DRV_DUMMY \
|
||||
{ \
|
||||
__ASM volatile("nop"); \
|
||||
__ASM volatile("nop"); \
|
||||
__ASM volatile("nop"); \
|
||||
__ASM volatile("nop"); \
|
||||
}
|
||||
|
||||
/* Std driver attribute macro*/
|
||||
#ifndef BFLB_USE_CUSTOM_LD_SECTIONS
|
||||
//#define ATTR_UNI_SYMBOL
|
||||
#define ATTR_STRINGIFY(x) #x
|
||||
#define ATTR_TOSTRING(x) ATTR_STRINGIFY(x)
|
||||
#define ATTR_UNI_SYMBOL __FILE__ ATTR_TOSTRING(__LINE__)
|
||||
#define ATTR_CLOCK_SECTION __attribute__((section(".sclock_rlt_code." ATTR_UNI_SYMBOL)))
|
||||
#define ATTR_CLOCK_CONST_SECTION __attribute__((section(".sclock_rlt_const." ATTR_UNI_SYMBOL)))
|
||||
#define ATTR_TCM_SECTION __attribute__((section(".tcm_code." ATTR_UNI_SYMBOL)))
|
||||
#define ATTR_TCM_CONST_SECTION __attribute__((section(".tcm_const." ATTR_UNI_SYMBOL)))
|
||||
#define ATTR_DTCM_SECTION __attribute__((section(".tcm_data")))
|
||||
// #define ATTR_UNI_SYMBOL
|
||||
#define ATTR_STRINGIFY(x) #x
|
||||
#define ATTR_TOSTRING(x) ATTR_STRINGIFY(x)
|
||||
#define ATTR_UNI_SYMBOL __FILE__ ATTR_TOSTRING(__LINE__)
|
||||
#define ATTR_CLOCK_SECTION __attribute__((section(".sclock_rlt_code." ATTR_UNI_SYMBOL)))
|
||||
#define ATTR_CLOCK_CONST_SECTION __attribute__((section(".sclock_rlt_const." ATTR_UNI_SYMBOL)))
|
||||
#define ATTR_TCM_SECTION __attribute__((section(".tcm_code." ATTR_UNI_SYMBOL)))
|
||||
#define ATTR_TCM_CONST_SECTION __attribute__((section(".tcm_const." ATTR_UNI_SYMBOL)))
|
||||
// #define ATTR_DTCM_SECTION __attribute__((section(".tcm_data")))
|
||||
#define ATTR_HSRAM_SECTION __attribute__((section(".hsram_code")))
|
||||
#define ATTR_DMA_RAM_SECTION __attribute__((section(".system_ram")))
|
||||
#define ATTR_NOCACHE_RAM_SECTION __attribute__((section(".nocache_ram")))
|
||||
|
||||
@@ -17,18 +17,16 @@ OUTPUT_ARCH( "riscv" )
|
||||
/* configure the entry point */
|
||||
ENTRY(_enter)
|
||||
|
||||
StackSize = 0x1000; /* 4KB */
|
||||
HeapSize = 0x1000; /* 4KB */
|
||||
StackSize = 0x800; /* 2KB */
|
||||
|
||||
__EM_SIZE = DEFINED(ble_controller_init) ? 8K : 0K;
|
||||
|
||||
MEMORY
|
||||
{
|
||||
xip_memory (rx) : ORIGIN = 0x23000000, LENGTH = 1022K
|
||||
itcm_memory (rx) : ORIGIN = 0x22014000, LENGTH = 16K
|
||||
dtcm_memory (rx) : ORIGIN = 0x42018000, LENGTH = 32K
|
||||
ram_memory (!rx) : ORIGIN = 0x42020000, LENGTH = 32K
|
||||
rsvd_memory (!rx) : ORIGIN = 0x42028000, LENGTH = 1K
|
||||
ram2_memory (!rx) : ORIGIN = 0x42028400, LENGTH = (31K - __EM_SIZE)
|
||||
itcm_memory (rx) : ORIGIN = 0x22014000, LENGTH = 12K
|
||||
dtcm_memory (rx) : ORIGIN = 0x42017000, LENGTH = 4K
|
||||
ram_memory (!rx) : ORIGIN = 0x42018000, LENGTH = 96K
|
||||
hbn_memory (rx) : ORIGIN = 0x40010000, LENGTH = 0xE00 /* hbn ram 4K used 3.5K*/
|
||||
}
|
||||
|
||||
@@ -211,21 +209,27 @@ SECTIONS
|
||||
__tcm_data_end__ = .;
|
||||
} > dtcm_memory
|
||||
|
||||
/* .heap_dummy section doesn't contains any symbols. It is only
|
||||
* used for linker to calculate size of heap sections, and assign
|
||||
* values to heap symbols later */
|
||||
.heap_dummy (NOLOAD):
|
||||
|
||||
/*************************************************************************/
|
||||
/* .stack_dummy section doesn't contains any symbols. It is only
|
||||
* used for linker to calculate size of stack sections, and assign
|
||||
* values to stack symbols later */
|
||||
.stack_dummy (NOLOAD):
|
||||
{
|
||||
. = ALIGN(0x4);
|
||||
. = . + HeapSize;
|
||||
. = . + StackSize;
|
||||
. = ALIGN(0x4);
|
||||
} > dtcm_memory
|
||||
|
||||
_HeapBase = ORIGIN(dtcm_memory) + LENGTH(dtcm_memory) - StackSize - HeapSize;
|
||||
_HeapSize = HeapSize;
|
||||
/* Set stack top to end of RAM, and stack limit move down by
|
||||
* size of stack_dummy section */
|
||||
__StackTop = ORIGIN(dtcm_memory) + LENGTH(dtcm_memory);
|
||||
PROVIDE( __freertos_irq_stack_top = __StackTop);
|
||||
__StackLimit = __StackTop - SIZEOF(.stack_dummy);
|
||||
|
||||
/* Check if data + heap + stack exceeds RAM limit */
|
||||
ASSERT(_HeapBase >= __tcm_data_end__, "region RAM overflowed with stack")
|
||||
ASSERT(__StackLimit >= __tcm_data_end__, "region RAM overflowed with stack")
|
||||
/*************************************************************************/
|
||||
|
||||
/*************************************************************************/
|
||||
/* .stack_dummy section doesn't contains any symbols. It is only
|
||||
@@ -311,17 +315,16 @@ SECTIONS
|
||||
. = ALIGN(4);
|
||||
__HeapBase = .;
|
||||
|
||||
/*__end__ = .;*/
|
||||
/*end = __end__;*/
|
||||
KEEP(*(.heap*))
|
||||
|
||||
. = ALIGN(4);
|
||||
__HeapLimit = .;
|
||||
} > ram_memory
|
||||
|
||||
PROVIDE (__heap_min_size = 0x400);
|
||||
__HeapLimit = ORIGIN(ram_memory) + LENGTH(ram_memory);
|
||||
|
||||
PROVIDE( _heap_start = ORIGIN(ram2_memory) );
|
||||
PROVIDE( _heap_size = LENGTH(ram2_memory) );
|
||||
ASSERT((__HeapLimit - __HeapBase ) >= __heap_min_size, "heap size is too short.")
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -19,75 +19,75 @@
|
||||
*/
|
||||
|
||||
// d85efab4-168e-4a71-affd-33e27f9bc533
|
||||
#define BT_UUID_SVC_LIVE_DATA BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xd85efab4, 0x168e, 0x4a71, 0xaffd, 0x33e27f9bc533))
|
||||
#define BT_UUID_SVC_LIVE_DATA BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xd85ef000, 0x168e, 0x4a71, 0xAA55, 0x33e27f9bc533))
|
||||
// f6d75f91-5a10-4eba-a233-47d3f26a907f
|
||||
#define BT_UUID_SVC_SETTINGS_DATA BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d75f91, 0x5a10, 0x4eba, 0xa233, 0x47d3f26a907f))
|
||||
#define BT_UUID_SVC_SETTINGS_DATA BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d80000, 0x5a10, 0x4eba, 0xAA55, 0x33e27f9bc533))
|
||||
// 9eae1adb-9d0d-48c5-a6e7-ae93f0ea37b0
|
||||
#define BT_UUID_SVC_BULK_DATA BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0x9eae1adb, 0x9d0d, 0x48c5, 0xa6e7, 0xae93f0ea37b0))
|
||||
#define BT_UUID_SVC_BULK_DATA BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0x9eae1000, 0x9d0d, 0x48c5, 0xAA55, 0x33e27f9bc533))
|
||||
|
||||
#define BT_UUID_CHAR_BLE_LIVE_LIVE_TEMP BT_UUID_DECLARE_16(0x0001)
|
||||
#define BT_UUID_CHAR_BLE_LIVE_SETPOINT_TEMP BT_UUID_DECLARE_16(0x0002)
|
||||
#define BT_UUID_CHAR_BLE_LIVE_DC_INPUT BT_UUID_DECLARE_16(0x0003)
|
||||
#define BT_UUID_CHAR_BLE_LIVE_HANDLE_TEMP BT_UUID_DECLARE_16(0x0004)
|
||||
#define BT_UUID_CHAR_BLE_LIVE_POWER_LEVEL BT_UUID_DECLARE_16(0x0005)
|
||||
#define BT_UUID_CHAR_BLE_LIVE_POWER_SRC BT_UUID_DECLARE_16(0x0006)
|
||||
#define BT_UUID_CHAR_BLE_LIVE_TIP_RES BT_UUID_DECLARE_16(0x0007)
|
||||
#define BT_UUID_CHAR_BLE_LIVE_UPTIME BT_UUID_DECLARE_16(0x0008)
|
||||
#define BT_UUID_CHAR_BLE_LIVE_MOVEMENT BT_UUID_DECLARE_16(0x0009)
|
||||
#define BT_UUID_CHAR_BLE_LIVE_MAX_TEMP BT_UUID_DECLARE_16(0x000A)
|
||||
#define BT_UUID_CHAR_BLE_LIVE_RAW_TIP BT_UUID_DECLARE_16(0x000B)
|
||||
#define BT_UUID_CHAR_BLE_LIVE_HALL_SENSOR BT_UUID_DECLARE_16(0x000C)
|
||||
#define BT_UUID_CHAR_BLE_LIVE_OP_MODE BT_UUID_DECLARE_16(0x000D)
|
||||
#define BT_UUID_CHAR_BLE_LIVE_EST_WATTS BT_UUID_DECLARE_16(0x000E)
|
||||
#define BT_UUID_CHAR_BLE_LIVE_LIVE_TEMP BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xd85ef001, 0x168e, 0x4a71, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_LIVE_SETPOINT_TEMP BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xd85ef002, 0x168e, 0x4a71, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_LIVE_DC_INPUT BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xd85ef003, 0x168e, 0x4a71, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_LIVE_HANDLE_TEMP BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xd85ef004, 0x168e, 0x4a71, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_LIVE_POWER_LEVEL BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xd85ef005, 0x168e, 0x4a71, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_LIVE_POWER_SRC BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xd85ef006, 0x168e, 0x4a71, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_LIVE_TIP_RES BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xd85ef007, 0x168e, 0x4a71, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_LIVE_UPTIME BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xd85ef008, 0x168e, 0x4a71, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_LIVE_MOVEMENT BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xd85ef009, 0x168e, 0x4a71, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_LIVE_MAX_TEMP BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xd85ef00A, 0x168e, 0x4a71, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_LIVE_RAW_TIP BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xd85ef00B, 0x168e, 0x4a71, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_LIVE_HALL_SENSOR BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xd85ef00C, 0x168e, 0x4a71, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_LIVE_OP_MODE BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xd85ef00D, 0x168e, 0x4a71, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_LIVE_EST_WATTS BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xd85ef00E, 0x168e, 0x4a71, 0xAA55, 0x33e27f9bc533))
|
||||
|
||||
// Bulk data that returns non-fixed sized objects
|
||||
#define BT_UUID_CHAR_BLE_LIVE_BULK_LIVE_DATA BT_UUID_DECLARE_16(0x0001)
|
||||
#define BT_UUID_CHAR_BLE_LIVE_ACCEL_NAME BT_UUID_DECLARE_16(0x0002)
|
||||
#define BT_UUID_CHAR_BLE_LIVE_BUILD BT_UUID_DECLARE_16(0x0003)
|
||||
#define BT_UUID_CHAR_BLE_LIVE_DEV_ID BT_UUID_DECLARE_16(0x0004)
|
||||
#define BT_UUID_CHAR_BLE_LIVE_BULK_LIVE_DATA BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0x9eae1001, 0x9d0d, 0x48c5, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_LIVE_ACCEL_NAME BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0x9eae1002, 0x9d0d, 0x48c5, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_LIVE_BUILD BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0x9eae1003, 0x9d0d, 0x48c5, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_LIVE_DEV_SN BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0x9eae1004, 0x9d0d, 0x48c5, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_LIVE_DEV_ID BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0x9eae1005, 0x9d0d, 0x48c5, 0xAA55, 0x33e27f9bc533))
|
||||
|
||||
// Settings
|
||||
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_SAVE BT_UUID_DECLARE_16(0xFFFF)
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_RESET BT_UUID_DECLARE_16(0xFFFE)
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_0 BT_UUID_DECLARE_16(0)
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_1 BT_UUID_DECLARE_16(1)
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_2 BT_UUID_DECLARE_16(2)
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_3 BT_UUID_DECLARE_16(3)
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_4 BT_UUID_DECLARE_16(4)
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_5 BT_UUID_DECLARE_16(5)
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_6 BT_UUID_DECLARE_16(6)
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_7 BT_UUID_DECLARE_16(7)
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_8 BT_UUID_DECLARE_16(8)
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_9 BT_UUID_DECLARE_16(9)
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_10 BT_UUID_DECLARE_16(10)
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_11 BT_UUID_DECLARE_16(11)
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_12 BT_UUID_DECLARE_16(12)
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_13 BT_UUID_DECLARE_16(13)
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_14 BT_UUID_DECLARE_16(14)
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_15 BT_UUID_DECLARE_16(15)
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_16 BT_UUID_DECLARE_16(16)
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_17 BT_UUID_DECLARE_16(17)
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_18 BT_UUID_DECLARE_16(18)
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_19 BT_UUID_DECLARE_16(19)
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_20 BT_UUID_DECLARE_16(20)
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_21 BT_UUID_DECLARE_16(21)
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_22 BT_UUID_DECLARE_16(22)
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_23 BT_UUID_DECLARE_16(23)
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_24 BT_UUID_DECLARE_16(24)
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_25 BT_UUID_DECLARE_16(25)
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_26 BT_UUID_DECLARE_16(26)
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_27 BT_UUID_DECLARE_16(27)
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_28 BT_UUID_DECLARE_16(28)
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_29 BT_UUID_DECLARE_16(29)
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_30 BT_UUID_DECLARE_16(30)
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_31 BT_UUID_DECLARE_16(31)
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_32 BT_UUID_DECLARE_16(32)
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_33 BT_UUID_DECLARE_16(33)
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_34 BT_UUID_DECLARE_16(34)
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_35 BT_UUID_DECLARE_16(35)
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_36 BT_UUID_DECLARE_16(36)
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_37 BT_UUID_DECLARE_16(37)
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_38 BT_UUID_DECLARE_16(38)
|
||||
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_SAVE BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d7FFFF, 0x5a10, 0x4eba, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_RESET BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d7FFFE, 0x5a10, 0x4eba, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_0 BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d70000, 0x5a10, 0x4eba, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_1 BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d70001, 0x5a10, 0x4eba, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_2 BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d70002, 0x5a10, 0x4eba, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_3 BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d70003, 0x5a10, 0x4eba, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_4 BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d70004, 0x5a10, 0x4eba, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_5 BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d70005, 0x5a10, 0x4eba, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_6 BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d70006, 0x5a10, 0x4eba, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_7 BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d70007, 0x5a10, 0x4eba, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_8 BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d70008, 0x5a10, 0x4eba, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_9 BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d70009, 0x5a10, 0x4eba, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_10 BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d7000a, 0x5a10, 0x4eba, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_11 BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d7000b, 0x5a10, 0x4eba, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_12 BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d7000c, 0x5a10, 0x4eba, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_13 BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d7000d, 0x5a10, 0x4eba, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_14 BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d7000e, 0x5a10, 0x4eba, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_15 BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d7000f, 0x5a10, 0x4eba, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_16 BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d70010, 0x5a10, 0x4eba, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_17 BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d70011, 0x5a10, 0x4eba, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_18 BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d70012, 0x5a10, 0x4eba, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_19 BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d70013, 0x5a10, 0x4eba, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_20 BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d70014, 0x5a10, 0x4eba, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_21 BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d70015, 0x5a10, 0x4eba, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_22 BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d70016, 0x5a10, 0x4eba, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_23 BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d70017, 0x5a10, 0x4eba, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_24 BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d70018, 0x5a10, 0x4eba, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_25 BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d70019, 0x5a10, 0x4eba, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_26 BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d7001a, 0x5a10, 0x4eba, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_27 BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d7001b, 0x5a10, 0x4eba, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_28 BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d7001c, 0x5a10, 0x4eba, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_29 BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d7001d, 0x5a10, 0x4eba, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_30 BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d7001e, 0x5a10, 0x4eba, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_31 BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d7001f, 0x5a10, 0x4eba, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_32 BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d70020, 0x5a10, 0x4eba, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_33 BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d70021, 0x5a10, 0x4eba, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_34 BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d70022, 0x5a10, 0x4eba, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_35 BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d70023, 0x5a10, 0x4eba, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_36 BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d70024, 0x5a10, 0x4eba, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_37 BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d70025, 0x5a10, 0x4eba, 0xAA55, 0x33e27f9bc533))
|
||||
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_38 BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d70026, 0x5a10, 0x4eba, 0xAA55, 0x33e27f9bc533))
|
||||
#endif
|
||||
|
||||
@@ -20,14 +20,15 @@
|
||||
#include "log.h"
|
||||
#include "uuid.h"
|
||||
|
||||
#include "OperatingModes.h"
|
||||
#include "../../version.h"
|
||||
#include "OLED.hpp"
|
||||
#include "OperatingModes.h"
|
||||
#include "USBPD.h"
|
||||
#include "ble_characteristics.h"
|
||||
#include "ble_handlers.h"
|
||||
#include "pd.h"
|
||||
#include "power.hpp"
|
||||
#if POW_PD
|
||||
#ifdef POW_PD
|
||||
#include "USBPD.h"
|
||||
#include "pd.h"
|
||||
#endif
|
||||
@@ -39,7 +40,9 @@ int ble_char_read_status_callback(struct bt_conn *conn, const struct bt_gatt_att
|
||||
if (attr == NULL || attr->uuid == NULL) {
|
||||
return 0;
|
||||
}
|
||||
uint16_t uuid_value = ((struct bt_uuid_16 *)attr->uuid)->val;
|
||||
// Decode the uuid
|
||||
// Byte 12 has the lowest part of the first UUID chunk
|
||||
uint16_t uuid_value = ((struct bt_uuid_128 *)attr->uuid)->val[12];
|
||||
uint32_t temp = 0;
|
||||
switch (uuid_value) {
|
||||
case 1: // Live temp
|
||||
@@ -133,11 +136,13 @@ int ble_char_read_status_callback(struct bt_conn *conn, const struct bt_gatt_att
|
||||
MSG((char *)"Unhandled attr read %d | %d\n", (uint32_t)attr->uuid, uuid_value);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ble_char_read_bulk_value_callback(struct bt_conn *conn, const struct bt_gatt_attr *attr, void *buf, u16_t len, u16_t offset) {
|
||||
if (attr == NULL || attr->uuid == NULL) {
|
||||
return 0;
|
||||
}
|
||||
uint16_t uuid_value = ((struct bt_uuid_16 *)attr->uuid)->val;
|
||||
// Byte 12 has the lowest part of the first UUID chunk
|
||||
uint16_t uuid_value = ((struct bt_uuid_128 *)attr->uuid)->val[12];
|
||||
// Bulk is the non-const size service
|
||||
switch (uuid_value) {
|
||||
case 1:
|
||||
@@ -176,17 +181,27 @@ int ble_char_read_bulk_value_callback(struct bt_conn *conn, const struct bt_gatt
|
||||
// TODO: Need to store non-encoded version
|
||||
break;
|
||||
case 3:
|
||||
// Build
|
||||
// TODO: Need to store non-encoded version
|
||||
break;
|
||||
// FW Version
|
||||
memcpy(buf, &BUILD_VERSION, sizeof(BUILD_VERSION) - 1);
|
||||
return sizeof(BUILD_VERSION) - 1;
|
||||
case 4:
|
||||
// Device unique id
|
||||
// Device serial number.
|
||||
// Serial number is the ID burned by manufacturer.
|
||||
// In case of Pinecil V2, device SN = device MAC.
|
||||
{
|
||||
uint64_t id = getDeviceID();
|
||||
uint64_t sn = getDeviceID();
|
||||
memcpy(buf, &sn, sizeof(sn));
|
||||
return sizeof(sn);
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
// Device ID [https://github.com/Ralim/IronOS/issues/1609].
|
||||
// ID is a unique key Pine burns at the factory and records in their db.
|
||||
{
|
||||
uint32_t id = getDeviceValidation();
|
||||
memcpy(buf, &id, sizeof(id));
|
||||
return sizeof(id);
|
||||
}
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -194,7 +209,8 @@ int ble_char_read_setting_value_callback(struct bt_conn *conn, const struct bt_g
|
||||
if (attr == NULL || attr->uuid == NULL) {
|
||||
return 0;
|
||||
}
|
||||
uint16_t uuid_value = ((struct bt_uuid_16 *)attr->uuid)->val;
|
||||
// Byte 12 has the lowest part of the first UUID chunk
|
||||
uint16_t uuid_value = ((struct bt_uuid_128 *)attr->uuid)->val[12];
|
||||
uint16_t temp = 0xFFFF;
|
||||
if (uuid_value <= SettingsOptions::SettingsOptionsLength) {
|
||||
temp = getSettingValue((SettingsOptions)(uuid_value));
|
||||
@@ -227,31 +243,34 @@ int ble_char_write_setting_value_callback(struct bt_conn *conn, const struct bt_
|
||||
// Use write request / execute write data.
|
||||
BT_WARN((char *)"recv write request / exce write\n");
|
||||
}
|
||||
uint16_t uuid_value = ((struct bt_uuid_16 *)attr->uuid)->val;
|
||||
uint8_t uuid_value = ((struct bt_uuid_128 *)attr->uuid)->val[12];
|
||||
if (len == 2) {
|
||||
uint16_t new_value = 0;
|
||||
memcpy(&new_value, buf, sizeof(new_value));
|
||||
if (uuid_value == 0xFFFF) {
|
||||
if (uuid_value == 0xFF) {
|
||||
if (new_value == 1) {
|
||||
saveSettings();
|
||||
return len;
|
||||
}
|
||||
} else if (uuid_value == 0xFFFE) {
|
||||
} else if (uuid_value == 0xFE) {
|
||||
if (new_value == 1) {
|
||||
resetSettings();
|
||||
return len;
|
||||
}
|
||||
} else if (uuid_value < SettingsOptions::SettingsOptionsLength) {
|
||||
setSettingValue((SettingsOptions)(uuid_value), new_value);
|
||||
// @TODO refactor to make this more usable
|
||||
if (uuid_value == SettingsOptions::OLEDInversion) {
|
||||
switch (uuid_value) {
|
||||
case SettingsOptions::OLEDInversion:
|
||||
OLED::setInverseDisplay(getSettingValue(SettingsOptions::OLEDInversion));
|
||||
}
|
||||
if (uuid_value == SettingsOptions::OLEDBrightness){
|
||||
break;
|
||||
case SettingsOptions::OLEDBrightness:
|
||||
OLED::setBrightness(getSettingValue(SettingsOptions::OLEDBrightness));
|
||||
}
|
||||
if (uuid_value == SettingsOptions::OrientationMode){
|
||||
break;
|
||||
case SettingsOptions::OrientationMode:
|
||||
OLED::setRotation(getSettingValue(SettingsOptions::OrientationMode) & 1);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return len;
|
||||
}
|
||||
@@ -268,7 +287,7 @@ uint32_t getPowerSrc() {
|
||||
// We are not powered via DC, so want to display the appropriate state for PD or QC
|
||||
bool poweredbyPD = false;
|
||||
bool pdHasVBUSConnected = false;
|
||||
#if POW_PD
|
||||
#ifdef POW_PD
|
||||
if (USBPowerDelivery::fusbPresent()) {
|
||||
// We are PD capable
|
||||
if (USBPowerDelivery::negotiationComplete()) {
|
||||
|
||||
@@ -142,7 +142,7 @@ static void ble_tp_ind_ccc_changed(const struct bt_gatt_attr *attr, u16_t value)
|
||||
/*************************************************************************
|
||||
* DEFINE : attrs
|
||||
*/
|
||||
static struct bt_gatt_attr attrs[] = {
|
||||
static struct bt_gatt_attr ble_attrs_declaration[] = {
|
||||
BT_GATT_PRIMARY_SERVICE(BT_UUID_SVC_LIVE_DATA),
|
||||
|
||||
BT_GATT_CHARACTERISTIC(BT_UUID_CHAR_BLE_LIVE_LIVE_TEMP, BT_GATT_CHRC_READ, BT_GATT_PERM_READ, ble_char_read_status_callback, NULL, NULL),
|
||||
@@ -164,6 +164,7 @@ static struct bt_gatt_attr attrs[] = {
|
||||
BT_GATT_CHARACTERISTIC(BT_UUID_CHAR_BLE_LIVE_BULK_LIVE_DATA, BT_GATT_CHRC_READ, BT_GATT_PERM_READ, ble_char_read_bulk_value_callback, NULL, NULL),
|
||||
BT_GATT_CHARACTERISTIC(BT_UUID_CHAR_BLE_LIVE_ACCEL_NAME, BT_GATT_CHRC_READ, BT_GATT_PERM_READ, ble_char_read_bulk_value_callback, NULL, NULL),
|
||||
BT_GATT_CHARACTERISTIC(BT_UUID_CHAR_BLE_LIVE_BUILD, BT_GATT_CHRC_READ, BT_GATT_PERM_READ, ble_char_read_bulk_value_callback, NULL, NULL),
|
||||
BT_GATT_CHARACTERISTIC(BT_UUID_CHAR_BLE_LIVE_DEV_SN, BT_GATT_CHRC_READ, BT_GATT_PERM_READ, ble_char_read_bulk_value_callback, NULL, NULL),
|
||||
BT_GATT_CHARACTERISTIC(BT_UUID_CHAR_BLE_LIVE_DEV_ID, BT_GATT_CHRC_READ, BT_GATT_PERM_READ, ble_char_read_bulk_value_callback, NULL, NULL),
|
||||
|
||||
BT_GATT_PRIMARY_SERVICE(BT_UUID_SVC_SETTINGS_DATA),
|
||||
@@ -257,9 +258,9 @@ static struct bt_gatt_attr attrs[] = {
|
||||
NAME
|
||||
get_attr
|
||||
*/
|
||||
struct bt_gatt_attr *get_attr(u8_t index) { return &attrs[index]; }
|
||||
struct bt_gatt_attr *get_attr(u8_t index) { return &ble_attrs_declaration[index]; }
|
||||
|
||||
static struct bt_gatt_service ble_tp_server = BT_GATT_SERVICE(attrs);
|
||||
static struct bt_gatt_service ble_tp_server = BT_GATT_SERVICE(ble_attrs_declaration);
|
||||
|
||||
// Start advertising with expected default values
|
||||
int ble_start_adv(void) {
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#include <stdint.h>
|
||||
/**
|
||||
* Configuration.h
|
||||
* Define here your default pre settings for Pinecil
|
||||
* Define here your default pre settings for Pinecilv2
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -59,6 +59,15 @@
|
||||
#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
|
||||
|
||||
/**
|
||||
* OLED Brightness
|
||||
*
|
||||
*/
|
||||
#define MIN_BRIGHTNESS 1 // Min OLED brightness selectable
|
||||
#define MAX_BRIGHTNESS 101 // Max OLED brightness selectable
|
||||
#define BRIGHTNESS_STEP 25 // OLED brightness increment
|
||||
#define DEFAULT_BRIGHTNESS 26 // default OLED brightness
|
||||
|
||||
/**
|
||||
* Temp change settings
|
||||
*/
|
||||
@@ -78,7 +87,7 @@
|
||||
#define POWER_PULSE_DEFAULT 0
|
||||
#else
|
||||
#define POWER_PULSE_DEFAULT 5
|
||||
#endif
|
||||
#endif /* Pinecil */
|
||||
#define POWER_PULSE_WAIT_DEFAULT 4 // Default rate of the power pulse: 4*2500 = 10000 ms = 10 s
|
||||
#define POWER_PULSE_DURATION_DEFAULT 1 // Default duration of the power pulse: 1*250 = 250 ms
|
||||
|
||||
@@ -121,9 +130,9 @@
|
||||
#define VOLTAGE_DIV 600 // 600 - Default divider from schematic
|
||||
#define CALIBRATION_OFFSET 900 // 900 - Default adc offset in uV
|
||||
#define MIN_CALIBRATION_OFFSET 100 // Min value for calibration
|
||||
#define PID_POWER_LIMIT 220 // Sets the max pwm power limit
|
||||
#define PID_POWER_LIMIT 120 // Sets the max pwm power limit
|
||||
#define POWER_LIMIT 0 // 0 watts default limit
|
||||
#define MAX_POWER_LIMIT 220 //
|
||||
#define MAX_POWER_LIMIT 120 // Sets the max power limit
|
||||
#define POWER_LIMIT_STEPS 5 //
|
||||
#define OP_AMP_GAIN_STAGE OP_AMP_GAIN_STAGE_PINECIL // Uses TS100 resistors
|
||||
#define TEMP_uV_LOOKUP_HAKKO // Use Hakko lookup table
|
||||
@@ -137,6 +146,7 @@
|
||||
#define MIN_BOOST_TEMP_F 480 // The min settable temp for boost mode °F
|
||||
#define DEVICE_HAS_VALIDATION_CODE // We have 2 digit validations
|
||||
#define POW_PD 1 // Supported features
|
||||
#define POW_PD_EXT 0 // Future-proof macro for other models with other PD modes
|
||||
#define POW_QC 1 // Supported features
|
||||
#define POW_DC 1 // Supported features
|
||||
#define POW_QC_20V 1 // Supported features
|
||||
@@ -154,8 +164,11 @@
|
||||
#define TIP_THERMAL_MASS 65 // X10 watts to raise 1 deg C in 1 second
|
||||
#define BLE_ENABLED
|
||||
#define NEEDS_VBUS_PROBE 0
|
||||
|
||||
#endif
|
||||
#endif
|
||||
#define CANT_DIRECT_READ_SETTINGS
|
||||
#endif /* Pinecilv2 */
|
||||
|
||||
#define FLASH_LOGOADDR (0x23000000 + (1022 * 1024))
|
||||
#define FLASH_PAGE_SIZE (1024)
|
||||
#define SETTINGS_START_PAGE (1023 * FLASH_PAGE_SIZE) // Hal auto offsets base addr
|
||||
|
||||
#endif /* CONFIGURATION_H_ */
|
||||
|
||||
@@ -10,10 +10,6 @@
|
||||
#include "hal_flash.h"
|
||||
#include "string.h"
|
||||
|
||||
#define FLASH_PAGE_SIZE (1024)
|
||||
|
||||
#define SETTINGS_START_PAGE (1023 * FLASH_PAGE_SIZE) // Hal auto offsets base addr
|
||||
|
||||
void flash_save_buffer(const uint8_t *buffer, const uint16_t length) {
|
||||
BL_Err_Type err = flash_erase(SETTINGS_START_PAGE, FLASH_PAGE_SIZE);
|
||||
err = flash_write(SETTINGS_START_PAGE, buffer, length);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#include "configuration.h"
|
||||
#if POW_PD
|
||||
#ifdef POW_PD
|
||||
#include "BSP.h"
|
||||
#include "I2C_Wrapper.hpp"
|
||||
#include "Setup.h"
|
||||
|
||||
@@ -20,7 +20,7 @@ void postRToSInit() {
|
||||
}
|
||||
#endif
|
||||
|
||||
if (getSettingValue(SettingsOptions::BLEEnabled)) {
|
||||
if (getSettingValue(SettingsOptions::BluetoothLE)) {
|
||||
ble_stack_start();
|
||||
}
|
||||
}
|
||||
|
||||
239
source/Core/BSP/Sequre_S60/BSP.cpp
Normal file
239
source/Core/BSP/Sequre_S60/BSP.cpp
Normal file
@@ -0,0 +1,239 @@
|
||||
// BSP mapping functions
|
||||
|
||||
#include "BSP.h"
|
||||
#include "HUB238.hpp"
|
||||
#include "I2C_Wrapper.hpp"
|
||||
#include "Pins.h"
|
||||
#include "Setup.h"
|
||||
#include "TipThermoModel.h"
|
||||
#include "configuration.h"
|
||||
#include "history.hpp"
|
||||
#include "main.hpp"
|
||||
#include <IRQ.h>
|
||||
|
||||
volatile uint16_t PWMSafetyTimer = 0;
|
||||
volatile uint8_t pendingPWM = 0;
|
||||
const uint16_t powerPWM = 255;
|
||||
static const uint8_t holdoffTicks = 15; // delay of 8 ish ms
|
||||
static const uint8_t tempMeasureTicks = 15;
|
||||
|
||||
uint16_t totalPWM = powerPWM + tempMeasureTicks + holdoffTicks; // htim2.Init.Period, the full PWM cycle
|
||||
|
||||
void resetWatchdog() { HAL_IWDG_Refresh(&hiwdg); }
|
||||
// Lookup table for the NTC
|
||||
// We dont know exact specs, but it loooks to be roughly a 10K B=4000 NTC
|
||||
// Stored as ADCReading,Temp in degC
|
||||
static const uint16_t NTCHandleLookup[] = {
|
||||
// ADC Reading , Temp in C
|
||||
23931, 0, //
|
||||
23210, 2, //
|
||||
22466, 4, //
|
||||
21703, 6, //
|
||||
20924, 8, //
|
||||
20135, 10, //
|
||||
19338, 12, //
|
||||
18538, 14, //
|
||||
17738, 16, //
|
||||
16943, 18, //
|
||||
16156, 20, //
|
||||
15381, 22, //
|
||||
14621, 24, //
|
||||
13878, 26, //
|
||||
13155, 28, //
|
||||
12455, 30, //
|
||||
11778, 32, //
|
||||
11126, 34, //
|
||||
10501, 36, //
|
||||
9902, 38, //
|
||||
9330, 40, //
|
||||
8786, 42, //
|
||||
8269, 44, //
|
||||
};
|
||||
|
||||
uint16_t getHandleTemperature(uint8_t sample) {
|
||||
int32_t result = getADCHandleTemp(sample);
|
||||
// S60 uses 10k NTC resistor
|
||||
// For now not doing interpolation
|
||||
for (uint32_t i = 0; i < (sizeof(NTCHandleLookup) / (2 * sizeof(uint16_t))); i++) {
|
||||
if (result > NTCHandleLookup[(i * 2) + 0]) {
|
||||
return NTCHandleLookup[(i * 2) + 1] * 10;
|
||||
}
|
||||
}
|
||||
return 45 * 10;
|
||||
}
|
||||
|
||||
uint16_t getInputVoltageX10(uint16_t divisor, uint8_t sample) {
|
||||
// ADC maximum is 32767 == 3.3V at input == 28.05V at VIN
|
||||
// Therefore we can divide down from there
|
||||
// Multiplying ADC max by 4 for additional calibration options,
|
||||
// ideal term is 467
|
||||
uint32_t res = getADCVin(sample);
|
||||
res *= 4;
|
||||
res /= divisor;
|
||||
return res;
|
||||
}
|
||||
|
||||
static void switchToFastPWM(void) {
|
||||
// 20Hz
|
||||
totalPWM = powerPWM + tempMeasureTicks + holdoffTicks;
|
||||
htim2.Instance->ARR = totalPWM;
|
||||
htim2.Instance->CCR1 = powerPWM + holdoffTicks;
|
||||
htim2.Instance->CCR4 = powerPWM;
|
||||
htim2.Instance->PSC = 1500;
|
||||
}
|
||||
|
||||
void setTipPWM(const uint8_t pulse, const bool shouldUseFastModePWM) {
|
||||
PWMSafetyTimer = 20; // This is decremented in the handler for PWM so that the tip pwm is
|
||||
// disabled if the PID task is not scheduled often enough.
|
||||
pendingPWM = pulse;
|
||||
}
|
||||
// These are called by the HAL after the corresponding events from the system
|
||||
// timers.
|
||||
|
||||
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
|
||||
// Period has elapsed
|
||||
if (htim->Instance == TIM2) {
|
||||
// we want to turn on the output again
|
||||
PWMSafetyTimer--;
|
||||
// We decrement this safety value so that lockups in the
|
||||
// scheduler will not cause the PWM to become locked in an
|
||||
// active driving state.
|
||||
// While we could assume this could never happen, its a small price for
|
||||
// increased safety
|
||||
if (PWMSafetyTimer == 0) {
|
||||
htim4.Instance->CCR3 = 0;
|
||||
} else {
|
||||
htim4.Instance->CCR3 = pendingPWM;
|
||||
}
|
||||
} else if (htim->Instance == TIM1) {
|
||||
// STM uses this for internal functions as a counter for timeouts
|
||||
HAL_IncTick();
|
||||
}
|
||||
}
|
||||
|
||||
void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim) {
|
||||
// This was a when the PWM for the output has timed out
|
||||
if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_4) {
|
||||
// HAL_TIM_PWM_Stop(&htim4, TIM_CHANNEL_3);
|
||||
htim4.Instance->CCR3 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void unstick_I2C() {
|
||||
#ifdef SCL_Pin
|
||||
GPIO_InitTypeDef GPIO_InitStruct;
|
||||
int timeout = 100;
|
||||
int timeout_cnt = 0;
|
||||
|
||||
// 1. Clear PE bit.
|
||||
hi2c1.Instance->CR1 &= ~(0x0001);
|
||||
/**I2C1 GPIO Configuration
|
||||
PB6 ------> I2C1_SCL
|
||||
PB7 ------> I2C1_SDA
|
||||
*/
|
||||
// 2. Configure the SCL and SDA I/Os as General Purpose Output Open-Drain, High level (Write 1 to GPIOx_ODR).
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD;
|
||||
GPIO_InitStruct.Pull = GPIO_PULLUP;
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||
|
||||
GPIO_InitStruct.Pin = SCL_Pin;
|
||||
HAL_GPIO_Init(SCL_GPIO_Port, &GPIO_InitStruct);
|
||||
HAL_GPIO_WritePin(SCL_GPIO_Port, SCL_Pin, GPIO_PIN_SET);
|
||||
|
||||
GPIO_InitStruct.Pin = SDA_Pin;
|
||||
HAL_GPIO_Init(SDA_GPIO_Port, &GPIO_InitStruct);
|
||||
HAL_GPIO_WritePin(SDA_GPIO_Port, SDA_Pin, GPIO_PIN_SET);
|
||||
|
||||
while (GPIO_PIN_SET != HAL_GPIO_ReadPin(SDA_GPIO_Port, SDA_Pin)) {
|
||||
// Move clock to release I2C
|
||||
HAL_GPIO_WritePin(SCL_GPIO_Port, SCL_Pin, GPIO_PIN_RESET);
|
||||
asm("nop");
|
||||
asm("nop");
|
||||
asm("nop");
|
||||
asm("nop");
|
||||
HAL_GPIO_WritePin(SCL_GPIO_Port, SCL_Pin, GPIO_PIN_SET);
|
||||
|
||||
timeout_cnt++;
|
||||
if (timeout_cnt > timeout)
|
||||
return;
|
||||
}
|
||||
|
||||
// 12. Configure the SCL and SDA I/Os as Alternate function Open-Drain.
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
|
||||
GPIO_InitStruct.Pull = GPIO_PULLUP;
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||
|
||||
GPIO_InitStruct.Pin = SCL_Pin;
|
||||
HAL_GPIO_Init(SCL_GPIO_Port, &GPIO_InitStruct);
|
||||
|
||||
GPIO_InitStruct.Pin = SDA_Pin;
|
||||
HAL_GPIO_Init(SDA_GPIO_Port, &GPIO_InitStruct);
|
||||
|
||||
HAL_GPIO_WritePin(SCL_GPIO_Port, SCL_Pin, GPIO_PIN_SET);
|
||||
HAL_GPIO_WritePin(SDA_GPIO_Port, SDA_Pin, GPIO_PIN_SET);
|
||||
|
||||
// 13. Set SWRST bit in I2Cx_CR1 register.
|
||||
hi2c1.Instance->CR1 |= 0x8000;
|
||||
|
||||
asm("nop");
|
||||
|
||||
// 14. Clear SWRST bit in I2Cx_CR1 register.
|
||||
hi2c1.Instance->CR1 &= ~0x8000;
|
||||
|
||||
asm("nop");
|
||||
|
||||
// 15. Enable the I2C peripheral by setting the PE bit in I2Cx_CR1 register
|
||||
hi2c1.Instance->CR1 |= 0x0001;
|
||||
|
||||
// Call initialization function.
|
||||
HAL_I2C_Init(&hi2c1);
|
||||
#endif
|
||||
}
|
||||
|
||||
uint8_t getButtonA() { return HAL_GPIO_ReadPin(KEY_A_GPIO_Port, KEY_A_Pin) == GPIO_PIN_RESET ? 1 : 0; }
|
||||
uint8_t getButtonB() { return HAL_GPIO_ReadPin(KEY_B_GPIO_Port, KEY_B_Pin) == GPIO_PIN_RESET ? 1 : 0; }
|
||||
|
||||
void BSPInit(void) { switchToFastPWM(); }
|
||||
|
||||
void reboot() { NVIC_SystemReset(); }
|
||||
|
||||
void delay_ms(uint16_t count) { HAL_Delay(count); }
|
||||
|
||||
bool isTipDisconnected() {
|
||||
|
||||
uint16_t tipDisconnectedThres = TipThermoModel::getTipMaxInC() - 5;
|
||||
uint32_t tipTemp = TipThermoModel::getTipInC();
|
||||
return tipTemp > tipDisconnectedThres;
|
||||
}
|
||||
|
||||
void setStatusLED(const enum StatusLED state) {}
|
||||
uint8_t preStartChecks() {
|
||||
if (!hub238_has_run_selection()) {
|
||||
return 0;
|
||||
}
|
||||
// We check if we are in a "Limited" mode; where we have to run the PWM really fast
|
||||
// Where as if we are on 9V for example, the tip resistance is enough
|
||||
uint16_t voltage = hub238_source_voltage();
|
||||
uint16_t currentx100 = hub238_source_currentX100();
|
||||
uint16_t thresholdResistancex10 = ((voltage * 1000) / currentx100) + 5;
|
||||
|
||||
if (getTipResistanceX10() <= thresholdResistancex10) {
|
||||
// We are limited by resistance, not our current limiting, we can slow down PWM to avoid audible noise
|
||||
htim4.Instance->PSC = 50; // 10 -> 500 removes audible noise
|
||||
}
|
||||
|
||||
return 1; // We are done now
|
||||
}
|
||||
uint64_t getDeviceID() {
|
||||
//
|
||||
return HAL_GetUIDw0() | ((uint64_t)HAL_GetUIDw1() << 32);
|
||||
}
|
||||
|
||||
uint8_t getTipResistanceX10() { return TIP_RESISTANCE; }
|
||||
|
||||
uint8_t preStartChecksDone() { return 1; }
|
||||
|
||||
uint8_t getTipThermalMass() { return TIP_THERMAL_MASS; }
|
||||
uint8_t getTipInertia() { return TIP_THERMAL_INERTIA; }
|
||||
|
||||
void setBuzzer(bool on) {}
|
||||
180
source/Core/BSP/Sequre_S60/FreeRTOSConfig.h
Normal file
180
source/Core/BSP/Sequre_S60/FreeRTOSConfig.h
Normal file
@@ -0,0 +1,180 @@
|
||||
/*
|
||||
FreeRTOS V9.0.0 - Copyright (C) 2016 Real Time Engineers Ltd.
|
||||
All rights reserved
|
||||
|
||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||
|
||||
This file is part of the FreeRTOS distribution.
|
||||
|
||||
FreeRTOS is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License (version 2) as published by the
|
||||
Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception.
|
||||
|
||||
***************************************************************************
|
||||
>>! NOTE: The modification to the GPL is included to allow you to !<<
|
||||
>>! distribute a combined work that includes FreeRTOS without being !<<
|
||||
>>! obliged to provide the source code for proprietary components !<<
|
||||
>>! outside of the FreeRTOS kernel. !<<
|
||||
***************************************************************************
|
||||
|
||||
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
FOR A PARTICULAR PURPOSE. Full license text is available on the following
|
||||
link: http://www.freertos.org/a00114.html
|
||||
|
||||
***************************************************************************
|
||||
* *
|
||||
* FreeRTOS provides completely free yet professionally developed, *
|
||||
* robust, strictly quality controlled, supported, and cross *
|
||||
* platform software that is more than just the market leader, it *
|
||||
* is the industry's de facto standard. *
|
||||
* *
|
||||
* Help yourself get started quickly while simultaneously helping *
|
||||
* to support the FreeRTOS project by purchasing a FreeRTOS *
|
||||
* tutorial book, reference manual, or both: *
|
||||
* http://www.FreeRTOS.org/Documentation *
|
||||
* *
|
||||
***************************************************************************
|
||||
|
||||
http://www.FreeRTOS.org/FAQHelp.html - Having a problem? Start by reading
|
||||
the FAQ page "My application does not run, what could be wrong?". Have you
|
||||
defined configASSERT()?
|
||||
|
||||
http://www.FreeRTOS.org/support - In return for receiving this top quality
|
||||
embedded software for free we request you assist our global community by
|
||||
participating in the support forum.
|
||||
|
||||
http://www.FreeRTOS.org/training - Investing in training allows your team to
|
||||
be as productive as possible as early as possible. Now you can receive
|
||||
FreeRTOS training directly from Richard Barry, CEO of Real Time Engineers
|
||||
Ltd, and the world's leading authority on the world's leading RTOS.
|
||||
|
||||
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
||||
including FreeRTOS+Trace - an indispensable productivity tool, a DOS
|
||||
compatible FAT file system, and our tiny thread aware UDP/IP stack.
|
||||
|
||||
http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate.
|
||||
Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS.
|
||||
|
||||
http://www.OpenRTOS.com - Real Time Engineers ltd. license FreeRTOS to High
|
||||
Integrity Systems ltd. to sell under the OpenRTOS brand. Low cost OpenRTOS
|
||||
licenses offer ticketed support, indemnification and commercial middleware.
|
||||
|
||||
http://www.SafeRTOS.com - High Integrity Systems also provide a safety
|
||||
engineered and independently SIL3 certified version for use in safety and
|
||||
mission critical applications that require provable dependability.
|
||||
|
||||
1 tab == 4 spaces!
|
||||
*/
|
||||
|
||||
#ifndef FREERTOS_CONFIG_H
|
||||
#define FREERTOS_CONFIG_H
|
||||
|
||||
/*-----------------------------------------------------------
|
||||
* Application specific definitions.
|
||||
*
|
||||
* These definitions should be adjusted for your particular hardware and
|
||||
* application requirements.
|
||||
*
|
||||
* THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
|
||||
* FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
|
||||
*
|
||||
* See http://www.freertos.org/a00110.html.
|
||||
*----------------------------------------------------------*/
|
||||
|
||||
/* USER CODE BEGIN Includes */
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
/* USER CODE END Includes */
|
||||
|
||||
/* Ensure stdint is only used by the compiler, and not the assembler. */
|
||||
#if defined(__ICCARM__) || defined(__CC_ARM) || defined(__GNUC__)
|
||||
#include <stdint.h>
|
||||
extern uint32_t SystemCoreClock;
|
||||
#endif
|
||||
|
||||
#define configUSE_PREEMPTION 1
|
||||
#define configSUPPORT_STATIC_ALLOCATION 1
|
||||
#define configSUPPORT_DYNAMIC_ALLOCATION 0
|
||||
#define configUSE_IDLE_HOOK 1
|
||||
#define configUSE_TICK_HOOK 0
|
||||
#define configCPU_CLOCK_HZ (SystemCoreClock)
|
||||
#define configTICK_RATE_HZ (1000)
|
||||
#define configMAX_PRIORITIES (6)
|
||||
#define configMINIMAL_STACK_SIZE ((uint16_t)256)
|
||||
#define configTOTAL_HEAP_SIZE ((size_t)1024 * 14) /*Currently use about 9000*/
|
||||
#define configMAX_TASK_NAME_LEN (32)
|
||||
#define configUSE_16_BIT_TICKS 0
|
||||
#define configUSE_MUTEXES 1
|
||||
#define configQUEUE_REGISTRY_SIZE 8
|
||||
#define configUSE_TIMERS 0
|
||||
#define configUSE_PORT_OPTIMISED_TASK_SELECTION 1
|
||||
#define configCHECK_FOR_STACK_OVERFLOW 2 /*Bump this to 2 during development and bug hunting*/
|
||||
|
||||
/* Co-routine definitions. */
|
||||
#define configUSE_CO_ROUTINES 0
|
||||
#define configMAX_CO_ROUTINE_PRIORITIES (2)
|
||||
|
||||
/* Set the following definitions to 1 to include the API function, or zero
|
||||
to exclude the API function. */
|
||||
#define INCLUDE_vTaskPrioritySet 1
|
||||
#define INCLUDE_uxTaskPriorityGet 0
|
||||
#define INCLUDE_vTaskDelete 0
|
||||
#define INCLUDE_vTaskCleanUpResources 0
|
||||
#define INCLUDE_vTaskSuspend 0
|
||||
#define INCLUDE_vTaskDelayUntil 1
|
||||
#define INCLUDE_vTaskDelay 1
|
||||
#define INCLUDE_xTaskGetSchedulerState 1
|
||||
#define INCLUDE_uxTaskGetStackHighWaterMark 1
|
||||
|
||||
/* Cortex-M specific definitions. */
|
||||
#ifdef __NVIC_PRIO_BITS
|
||||
/* __BVIC_PRIO_BITS will be specified when CMSIS is being used. */
|
||||
#define configPRIO_BITS __NVIC_PRIO_BITS
|
||||
#else
|
||||
#define configPRIO_BITS 4
|
||||
#endif
|
||||
|
||||
/* The lowest interrupt priority that can be used in a call to a "set priority"
|
||||
function. */
|
||||
#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY 15
|
||||
|
||||
/* The highest interrupt priority that can be used by any interrupt service
|
||||
routine that makes calls to interrupt safe FreeRTOS API functions. DO NOT CALL
|
||||
INTERRUPT SAFE FREERTOS API FUNCTIONS FROM ANY INTERRUPT THAT HAS A HIGHER
|
||||
PRIORITY THAN THIS! (higher priorities are lower numeric values. */
|
||||
#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5
|
||||
|
||||
/* Interrupt priorities used by the kernel port layer itself. These are generic
|
||||
to all Cortex-M ports, and do not rely on any particular library functions. */
|
||||
#define configKERNEL_INTERRUPT_PRIORITY (configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS))
|
||||
/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!!
|
||||
See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */
|
||||
#define configMAX_SYSCALL_INTERRUPT_PRIORITY (configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS))
|
||||
|
||||
/* Normal assert() semantics without relying on the provision of an assert.h
|
||||
header file. */
|
||||
/* USER CODE BEGIN 1 */
|
||||
#define configASSERT(x) \
|
||||
if ((x) == 0) { \
|
||||
taskDISABLE_INTERRUPTS(); \
|
||||
for (;;) \
|
||||
; \
|
||||
}
|
||||
/* USER CODE END 1 */
|
||||
|
||||
/* Definitions that map the FreeRTOS port interrupt handlers to their CMSIS
|
||||
standard names. */
|
||||
#define vPortSVCHandler SVC_Handler
|
||||
#define xPortPendSVHandler PendSV_Handler
|
||||
|
||||
#if configUSE_TIMERS
|
||||
#define configTIMER_TASK_PRIORITY 2
|
||||
#define configTIMER_QUEUE_LENGTH 8
|
||||
#define configTIMER_TASK_STACK_DEPTH (512 / 4)
|
||||
#endif
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* FREERTOS_CONFIG_H */
|
||||
91
source/Core/BSP/Sequre_S60/I2C_Wrapper.cpp
Normal file
91
source/Core/BSP/Sequre_S60/I2C_Wrapper.cpp
Normal file
@@ -0,0 +1,91 @@
|
||||
/*
|
||||
* FRToSI2C.cpp
|
||||
*
|
||||
* Created on: 14Apr.,2018
|
||||
* Author: Ralim
|
||||
*/
|
||||
#include "BSP.h"
|
||||
#include "Setup.h"
|
||||
#include <I2C_Wrapper.hpp>
|
||||
SemaphoreHandle_t FRToSI2C::I2CSemaphore = nullptr;
|
||||
StaticSemaphore_t FRToSI2C::xSemaphoreBuffer;
|
||||
|
||||
void FRToSI2C::CpltCallback() {
|
||||
hi2c1.State = HAL_I2C_STATE_READY; // Force state reset (even if tx error)
|
||||
if (I2CSemaphore) {
|
||||
xSemaphoreGiveFromISR(I2CSemaphore, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
bool FRToSI2C::Mem_Read(uint16_t DevAddress, uint16_t MemAddress, uint8_t *pData, uint16_t Size) {
|
||||
|
||||
if (!lock())
|
||||
return false;
|
||||
if (HAL_I2C_Mem_Read(&hi2c1, DevAddress, MemAddress, I2C_MEMADD_SIZE_8BIT, pData, Size, 500) != HAL_OK) {
|
||||
|
||||
I2C_Unstick();
|
||||
unlock();
|
||||
return false;
|
||||
}
|
||||
|
||||
unlock();
|
||||
return true;
|
||||
}
|
||||
bool FRToSI2C::I2C_RegisterWrite(uint8_t address, uint8_t reg, uint8_t data) { return Mem_Write(address, reg, &data, 1); }
|
||||
|
||||
uint8_t FRToSI2C::I2C_RegisterRead(uint8_t add, uint8_t reg) {
|
||||
uint8_t tx_data[1];
|
||||
Mem_Read(add, reg, tx_data, 1);
|
||||
return tx_data[0];
|
||||
}
|
||||
bool FRToSI2C::Mem_Write(uint16_t DevAddress, uint16_t MemAddress, uint8_t *pData, uint16_t Size) {
|
||||
|
||||
if (!lock())
|
||||
return false;
|
||||
if (HAL_I2C_Mem_Write(&hi2c1, DevAddress, MemAddress, I2C_MEMADD_SIZE_8BIT, pData, Size, 500) != HAL_OK) {
|
||||
|
||||
I2C_Unstick();
|
||||
unlock();
|
||||
return false;
|
||||
}
|
||||
|
||||
unlock();
|
||||
return true;
|
||||
}
|
||||
|
||||
bool FRToSI2C::Transmit(uint16_t DevAddress, uint8_t *pData, uint16_t Size) {
|
||||
if (!lock())
|
||||
return false;
|
||||
if (HAL_I2C_Master_Transmit_IT(&hi2c1, DevAddress, pData, Size) != HAL_OK) {
|
||||
I2C_Unstick();
|
||||
unlock();
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool FRToSI2C::probe(uint16_t DevAddress) {
|
||||
if (!lock())
|
||||
return false;
|
||||
uint8_t buffer[1];
|
||||
bool worked = HAL_I2C_Mem_Read(&hi2c1, DevAddress, 0x0F, I2C_MEMADD_SIZE_8BIT, buffer, 1, 1000) == HAL_OK;
|
||||
unlock();
|
||||
return worked;
|
||||
}
|
||||
|
||||
void FRToSI2C::I2C_Unstick() { unstick_I2C(); }
|
||||
|
||||
void FRToSI2C::unlock() { xSemaphoreGive(I2CSemaphore); }
|
||||
|
||||
bool FRToSI2C::lock() { return xSemaphoreTake(I2CSemaphore, (TickType_t)50) == pdTRUE; }
|
||||
|
||||
bool FRToSI2C::writeRegistersBulk(const uint8_t address, const I2C_REG *registers, const uint8_t registersLength) {
|
||||
for (int index = 0; index < registersLength; index++) {
|
||||
if (!I2C_RegisterWrite(address, registers[index].reg, registers[index].val)) {
|
||||
return false;
|
||||
}
|
||||
if (registers[index].pause_ms)
|
||||
delay_ms(registers[index].pause_ms);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
49
source/Core/BSP/Sequre_S60/IRQ.cpp
Normal file
49
source/Core/BSP/Sequre_S60/IRQ.cpp
Normal file
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
* IRQ.c
|
||||
*
|
||||
* Created on: 30 May 2020
|
||||
* Author: Ralim
|
||||
*/
|
||||
|
||||
#include "IRQ.h"
|
||||
#include "Pins.h"
|
||||
#include "configuration.h"
|
||||
|
||||
/*
|
||||
* Catch the IRQ that says that the conversion is done on the temperature
|
||||
* readings coming in Once these have come in we can unblock the PID so that it
|
||||
* runs again
|
||||
*/
|
||||
void HAL_ADCEx_InjectedConvCpltCallback(ADC_HandleTypeDef *hadc) {
|
||||
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
||||
if (hadc == &hadc1) {
|
||||
if (pidTaskNotification) {
|
||||
vTaskNotifyGiveFromISR(pidTaskNotification, &xHigherPriorityTaskWoken);
|
||||
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
|
||||
}
|
||||
}
|
||||
}
|
||||
void HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *hi2c __unused) { FRToSI2C::CpltCallback(); }
|
||||
void HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *hi2c __unused) { FRToSI2C::CpltCallback(); }
|
||||
void HAL_I2C_MemTxCpltCallback(I2C_HandleTypeDef *hi2c __unused) { FRToSI2C::CpltCallback(); }
|
||||
void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c __unused) { FRToSI2C::CpltCallback(); }
|
||||
void HAL_I2C_AbortCpltCallback(I2C_HandleTypeDef *hi2c __unused) { FRToSI2C::CpltCallback(); }
|
||||
void HAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c __unused) { FRToSI2C::CpltCallback(); }
|
||||
|
||||
extern osThreadId POWTaskHandle;
|
||||
|
||||
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {
|
||||
(void)GPIO_Pin;
|
||||
// Notify POW thread that an irq occured
|
||||
if (POWTaskHandle != nullptr) {
|
||||
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
||||
xTaskNotifyFromISR(POWTaskHandle, 1, eSetBits, &xHigherPriorityTaskWoken);
|
||||
/* Force a context switch if xHigherPriorityTaskWoken is now set to pdTRUE.
|
||||
The macro used to do this is dependent on the port and may be called
|
||||
portEND_SWITCHING_ISR. */
|
||||
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
|
||||
}
|
||||
}
|
||||
|
||||
// No FUSB302 support
|
||||
bool getFUS302IRQLow() { return false; }
|
||||
32
source/Core/BSP/Sequre_S60/IRQ.h
Normal file
32
source/Core/BSP/Sequre_S60/IRQ.h
Normal file
@@ -0,0 +1,32 @@
|
||||
/*
|
||||
* Irqs.h
|
||||
*
|
||||
* Created on: 30 May 2020
|
||||
* Author: Ralim
|
||||
*/
|
||||
|
||||
#ifndef BSP_MINIWARE_IRQ_H_
|
||||
#define BSP_MINIWARE_IRQ_H_
|
||||
|
||||
#include "BSP.h"
|
||||
#include "I2C_Wrapper.hpp"
|
||||
#include "Setup.h"
|
||||
#include "main.hpp"
|
||||
#include "stm32f1xx_hal.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
void HAL_ADCEx_InjectedConvCpltCallback(ADC_HandleTypeDef *hadc);
|
||||
void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c);
|
||||
void HAL_I2C_AbortCpltCallback(I2C_HandleTypeDef *hi2c);
|
||||
void HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *hi2c);
|
||||
void HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *hi2c);
|
||||
void HAL_I2C_MemTxCpltCallback(I2C_HandleTypeDef *hi2c);
|
||||
void HAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c);
|
||||
void HAL_GPIO_EXTI_Callback(uint16_t);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* BSP_MINIWARE_IRQ_H_ */
|
||||
43
source/Core/BSP/Sequre_S60/Pins.h
Normal file
43
source/Core/BSP/Sequre_S60/Pins.h
Normal file
@@ -0,0 +1,43 @@
|
||||
/*
|
||||
* Pins.h
|
||||
*
|
||||
* Created on: 29 May 2020
|
||||
* Author: Ralim
|
||||
*/
|
||||
|
||||
#ifndef BSP_MINIWARE_PINS_H_
|
||||
#define BSP_MINIWARE_PINS_H_
|
||||
#include "configuration.h"
|
||||
|
||||
#ifdef MODEL_S60
|
||||
|
||||
#define KEY_B_Pin GPIO_PIN_1
|
||||
#define KEY_B_GPIO_Port GPIOB
|
||||
#define TMP36_INPUT_Pin GPIO_PIN_5
|
||||
#define TMP36_INPUT_GPIO_Port GPIOA
|
||||
#define TMP36_ADC1_CHANNEL ADC_CHANNEL_5
|
||||
#define TMP36_ADC2_CHANNEL ADC_CHANNEL_5
|
||||
#define TIP_TEMP_Pin GPIO_PIN_0
|
||||
#define TIP_TEMP_GPIO_Port GPIOA
|
||||
#define TIP_TEMP_ADC1_CHANNEL ADC_CHANNEL_0
|
||||
#define TIP_TEMP_ADC2_CHANNEL ADC_CHANNEL_0
|
||||
#define VIN_Pin GPIO_PIN_4
|
||||
#define VIN_GPIO_Port GPIOA
|
||||
#define VIN_ADC1_CHANNEL ADC_CHANNEL_4
|
||||
#define VIN_ADC2_CHANNEL ADC_CHANNEL_4
|
||||
#define KEY_A_Pin GPIO_PIN_0
|
||||
#define KEY_A_GPIO_Port GPIOB
|
||||
#define PWM_Out_Pin GPIO_PIN_8
|
||||
#define PWM_Out_GPIO_Port GPIOB
|
||||
#define PWM_Out_CHANNEL TIM_CHANNEL_3 // Timer 4; channel 3
|
||||
#define SCL2_Pin GPIO_PIN_6
|
||||
#define SCL2_GPIO_Port GPIOB
|
||||
#define SDA2_Pin GPIO_PIN_7
|
||||
#define SDA2_GPIO_Port GPIOB
|
||||
// Pin gets pulled high on movement
|
||||
#define MOVEMENT_Pin GPIO_PIN_3
|
||||
#define MOVEMENT_GPIO_Port GPIOA
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* BSP_MINIWARE_PINS_H_ */
|
||||
24
source/Core/BSP/Sequre_S60/Power.cpp
Normal file
24
source/Core/BSP/Sequre_S60/Power.cpp
Normal file
@@ -0,0 +1,24 @@
|
||||
#include "BSP.h"
|
||||
#include "BSP_Power.h"
|
||||
#include "Pins.h"
|
||||
#include "QC3.h"
|
||||
#include "Settings.h"
|
||||
#include "USBPD.h"
|
||||
#include "configuration.h"
|
||||
|
||||
void power_check() {
|
||||
#ifdef POW_PD
|
||||
// Cant start QC until either PD works or fails
|
||||
if (!USBPowerDelivery::negotiationComplete()) {
|
||||
return;
|
||||
}
|
||||
if (USBPowerDelivery::negotiationHasWorked()) {
|
||||
return; // We are using PD
|
||||
}
|
||||
#endif
|
||||
#ifdef POW_QC
|
||||
QC_resync();
|
||||
#endif
|
||||
}
|
||||
|
||||
bool getIsPoweredByDCIN() { return false; }
|
||||
12
source/Core/BSP/Sequre_S60/README.md
Normal file
12
source/Core/BSP/Sequre_S60/README.md
Normal file
@@ -0,0 +1,12 @@
|
||||
# BSP section for STM32F103 based Miniware products
|
||||
|
||||
This folder contains the hardware abstractions required for the TS100, TS80 and probably TS80P soldering irons.
|
||||
|
||||
## Main abstractions
|
||||
|
||||
* Hardware Init
|
||||
* -> Should contain all bootstrap to bring the hardware up to an operating point
|
||||
* -> Two functions are required, a pre and post FreeRToS call
|
||||
* I2C read/write
|
||||
* Set PWM for the tip
|
||||
* Links between IRQ's on the system and the calls in the rest of the firmware
|
||||
458
source/Core/BSP/Sequre_S60/Setup.cpp
Normal file
458
source/Core/BSP/Sequre_S60/Setup.cpp
Normal file
@@ -0,0 +1,458 @@
|
||||
/*
|
||||
* Setup.c
|
||||
*
|
||||
* Created on: 29Aug.,2017
|
||||
* Author: Ben V. Brown
|
||||
*/
|
||||
#include "Setup.h"
|
||||
#include "BSP.h"
|
||||
#include "Pins.h"
|
||||
#include "history.hpp"
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
ADC_HandleTypeDef hadc1;
|
||||
ADC_HandleTypeDef hadc2;
|
||||
DMA_HandleTypeDef hdma_adc1;
|
||||
|
||||
I2C_HandleTypeDef hi2c1;
|
||||
DMA_HandleTypeDef hdma_i2c1_rx;
|
||||
DMA_HandleTypeDef hdma_i2c1_tx;
|
||||
|
||||
IWDG_HandleTypeDef hiwdg;
|
||||
TIM_HandleTypeDef htim4; // Tip control
|
||||
TIM_HandleTypeDef htim2; // ADC Scheduling
|
||||
#define ADC_FILTER_LEN 4
|
||||
#define ADC_SAMPLES 16
|
||||
uint16_t ADCReadings[ADC_SAMPLES]; // Used to store the adc readings for the handle cold junction temp
|
||||
|
||||
// Functions
|
||||
static void SystemClock_Config(void);
|
||||
static void MX_ADC1_Init(void);
|
||||
static void MX_I2C1_Init(void);
|
||||
static void MX_IWDG_Init(void);
|
||||
static void MX_TIM4_Init(void); // Tip control
|
||||
static void MX_TIM2_Init(void); // ADC Scheduling
|
||||
static void MX_DMA_Init(void);
|
||||
static void MX_GPIO_Init(void);
|
||||
static void MX_ADC2_Init(void);
|
||||
void Setup_HAL() {
|
||||
__HAL_RCC_I2C1_CLK_DISABLE();
|
||||
__HAL_RCC_GPIOD_CLK_DISABLE();
|
||||
__HAL_RCC_GPIOA_CLK_DISABLE();
|
||||
__HAL_RCC_GPIOB_CLK_DISABLE();
|
||||
SystemClock_Config();
|
||||
|
||||
// These are not shared so no harm enabling
|
||||
__HAL_AFIO_REMAP_SWJ_NOJTAG();
|
||||
#ifdef SCL_Pin
|
||||
MX_I2C1_Init();
|
||||
#endif
|
||||
MX_GPIO_Init();
|
||||
MX_DMA_Init();
|
||||
MX_ADC1_Init();
|
||||
MX_ADC2_Init();
|
||||
|
||||
MX_TIM4_Init();
|
||||
MX_TIM2_Init();
|
||||
MX_IWDG_Init();
|
||||
HAL_ADC_Start_DMA(&hadc1, (uint32_t *)ADCReadings, (ADC_SAMPLES)); // start DMA of normal readings
|
||||
HAL_ADCEx_InjectedStart(&hadc1); // enable injected readings
|
||||
HAL_ADCEx_InjectedStart(&hadc2); // enable injected readings
|
||||
|
||||
// Setup movement pin
|
||||
{
|
||||
GPIO_InitTypeDef GPIO_InitStruct;
|
||||
GPIO_InitStruct.Pin = MOVEMENT_Pin;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
|
||||
GPIO_InitStruct.Pull = GPIO_PULLDOWN;
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; // We would like sharp rising edges
|
||||
HAL_GPIO_Init(MOVEMENT_GPIO_Port, &GPIO_InitStruct);
|
||||
}
|
||||
}
|
||||
|
||||
uint16_t getADCHandleTemp(uint8_t sample) {
|
||||
static history<uint16_t, ADC_FILTER_LEN> filter = {{0}, 0, 0};
|
||||
if (sample) {
|
||||
uint32_t sum = 0;
|
||||
for (uint8_t i = 0; i < ADC_SAMPLES; i++) {
|
||||
sum += ADCReadings[i];
|
||||
}
|
||||
filter.update(sum);
|
||||
}
|
||||
return filter.average() >> 1;
|
||||
}
|
||||
|
||||
uint16_t getADCVin(uint8_t sample) {
|
||||
static history<uint16_t, ADC_FILTER_LEN> filter = {{0}, 0, 0};
|
||||
if (sample) {
|
||||
uint16_t latestADC = 0;
|
||||
|
||||
latestADC += hadc2.Instance->JDR1;
|
||||
latestADC += hadc2.Instance->JDR2;
|
||||
latestADC += hadc2.Instance->JDR3;
|
||||
latestADC += hadc2.Instance->JDR4;
|
||||
latestADC <<= 3;
|
||||
filter.update(latestADC);
|
||||
}
|
||||
return filter.average();
|
||||
}
|
||||
// Returns either average or instant value. When sample is set the samples from the injected ADC are copied to the filter and then the raw reading is returned
|
||||
uint16_t getTipRawTemp(uint8_t sample) {
|
||||
static history<uint16_t, ADC_FILTER_LEN> filter = {{0}, 0, 0};
|
||||
if (sample) {
|
||||
uint16_t latestADC = 0;
|
||||
|
||||
latestADC += hadc1.Instance->JDR1;
|
||||
latestADC += hadc1.Instance->JDR2;
|
||||
latestADC += hadc1.Instance->JDR3;
|
||||
latestADC += hadc1.Instance->JDR4;
|
||||
latestADC <<= 1;
|
||||
filter.update(latestADC);
|
||||
return latestADC;
|
||||
}
|
||||
return filter.average();
|
||||
}
|
||||
/** System Clock Configuration
|
||||
*/
|
||||
void SystemClock_Config(void) {
|
||||
RCC_OscInitTypeDef RCC_OscInitStruct;
|
||||
RCC_ClkInitTypeDef RCC_ClkInitStruct;
|
||||
RCC_PeriphCLKInitTypeDef PeriphClkInit;
|
||||
|
||||
/**Initializes the CPU, AHB and APB busses clocks
|
||||
*/
|
||||
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI | RCC_OSCILLATORTYPE_LSI;
|
||||
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
|
||||
RCC_OscInitStruct.HSICalibrationValue = 16;
|
||||
RCC_OscInitStruct.LSIState = RCC_LSI_ON;
|
||||
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
|
||||
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI_DIV2;
|
||||
RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL16; // 64MHz
|
||||
HAL_RCC_OscConfig(&RCC_OscInitStruct);
|
||||
|
||||
/**Initializes the CPU, AHB and APB busses clocks
|
||||
*/
|
||||
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
|
||||
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
|
||||
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
|
||||
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV16; // TIM
|
||||
// 2,3,4,5,6,7,12,13,14
|
||||
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; // 64 mhz to some peripherals and adc
|
||||
|
||||
HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2);
|
||||
|
||||
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC;
|
||||
PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV6; // 6 or 8 are the only non overclocked options
|
||||
HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit);
|
||||
|
||||
/**Configure the Systick interrupt time
|
||||
*/
|
||||
HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq() / 1000);
|
||||
|
||||
/**Configure the Systick
|
||||
*/
|
||||
HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);
|
||||
|
||||
/* SysTick_IRQn interrupt configuration */
|
||||
HAL_NVIC_SetPriority(SysTick_IRQn, 15, 0);
|
||||
}
|
||||
|
||||
/* ADC1 init function */
|
||||
static void MX_ADC1_Init(void) {
|
||||
|
||||
ADC_ChannelConfTypeDef sConfig;
|
||||
ADC_InjectionConfTypeDef sConfigInjected;
|
||||
/**Common config
|
||||
*/
|
||||
hadc1.Instance = ADC1;
|
||||
hadc1.Init.ScanConvMode = ADC_SCAN_ENABLE;
|
||||
hadc1.Init.ContinuousConvMode = ENABLE;
|
||||
hadc1.Init.DiscontinuousConvMode = DISABLE;
|
||||
hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
|
||||
hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
|
||||
hadc1.Init.NbrOfConversion = 1;
|
||||
HAL_ADC_Init(&hadc1);
|
||||
|
||||
/**Configure Regular Channel
|
||||
*/
|
||||
sConfig.Channel = TMP36_ADC1_CHANNEL;
|
||||
sConfig.Rank = ADC_REGULAR_RANK_1;
|
||||
sConfig.SamplingTime = ADC_SAMPLETIME_71CYCLES_5;
|
||||
HAL_ADC_ConfigChannel(&hadc1, &sConfig);
|
||||
|
||||
/**Configure Injected Channel
|
||||
*/
|
||||
// F in = 10.66 MHz
|
||||
/*
|
||||
* Injected time is 1 delay clock + (12 adc cycles*4)+4*sampletime =~217
|
||||
* clocks = 0.2ms Charge time is 0.016 uS ideally So Sampling time must be >=
|
||||
* 0.016uS 1/10.66MHz is 0.09uS, so 1 CLK is *should* be enough
|
||||
* */
|
||||
sConfigInjected.InjectedChannel = TIP_TEMP_ADC1_CHANNEL;
|
||||
sConfigInjected.InjectedRank = 1;
|
||||
sConfigInjected.InjectedNbrOfConversion = 4;
|
||||
sConfigInjected.InjectedSamplingTime = ADC_SAMPLETIME_28CYCLES_5;
|
||||
sConfigInjected.ExternalTrigInjecConv = ADC_EXTERNALTRIGINJECCONV_T2_TRGO;
|
||||
sConfigInjected.AutoInjectedConv = DISABLE;
|
||||
sConfigInjected.InjectedDiscontinuousConvMode = DISABLE;
|
||||
sConfigInjected.InjectedOffset = 0;
|
||||
|
||||
HAL_ADCEx_InjectedConfigChannel(&hadc1, &sConfigInjected);
|
||||
sConfigInjected.InjectedRank = 2;
|
||||
HAL_ADCEx_InjectedConfigChannel(&hadc1, &sConfigInjected);
|
||||
sConfigInjected.InjectedRank = 3;
|
||||
HAL_ADCEx_InjectedConfigChannel(&hadc1, &sConfigInjected);
|
||||
sConfigInjected.InjectedRank = 4;
|
||||
HAL_ADCEx_InjectedConfigChannel(&hadc1, &sConfigInjected);
|
||||
SET_BIT(hadc1.Instance->CR1, (ADC_CR1_JEOCIE)); // Enable end of injected conv irq
|
||||
// Run ADC internal calibration
|
||||
while (HAL_ADCEx_Calibration_Start(&hadc1) != HAL_OK)
|
||||
;
|
||||
}
|
||||
|
||||
/* ADC2 init function */
|
||||
static void MX_ADC2_Init(void) {
|
||||
ADC_InjectionConfTypeDef sConfigInjected;
|
||||
|
||||
/**Common config
|
||||
*/
|
||||
hadc2.Instance = ADC2;
|
||||
hadc2.Init.ScanConvMode = ADC_SCAN_DISABLE;
|
||||
hadc2.Init.ContinuousConvMode = ENABLE;
|
||||
hadc2.Init.DiscontinuousConvMode = DISABLE;
|
||||
hadc2.Init.ExternalTrigConv = ADC_SOFTWARE_START;
|
||||
hadc2.Init.DataAlign = ADC_DATAALIGN_RIGHT;
|
||||
hadc2.Init.NbrOfConversion = 0;
|
||||
HAL_ADC_Init(&hadc2);
|
||||
|
||||
/**Configure Injected Channel
|
||||
*/
|
||||
sConfigInjected.InjectedChannel = VIN_ADC2_CHANNEL;
|
||||
sConfigInjected.InjectedRank = ADC_INJECTED_RANK_1;
|
||||
sConfigInjected.InjectedNbrOfConversion = 4;
|
||||
sConfigInjected.InjectedSamplingTime = ADC_SAMPLETIME_28CYCLES_5;
|
||||
sConfigInjected.ExternalTrigInjecConv = ADC_EXTERNALTRIGINJECCONV_T2_TRGO;
|
||||
sConfigInjected.AutoInjectedConv = DISABLE;
|
||||
sConfigInjected.InjectedDiscontinuousConvMode = DISABLE;
|
||||
sConfigInjected.InjectedOffset = 0;
|
||||
HAL_ADCEx_InjectedConfigChannel(&hadc2, &sConfigInjected);
|
||||
sConfigInjected.InjectedRank = ADC_INJECTED_RANK_2;
|
||||
HAL_ADCEx_InjectedConfigChannel(&hadc2, &sConfigInjected);
|
||||
sConfigInjected.InjectedRank = ADC_INJECTED_RANK_3;
|
||||
HAL_ADCEx_InjectedConfigChannel(&hadc2, &sConfigInjected);
|
||||
sConfigInjected.InjectedRank = ADC_INJECTED_RANK_4;
|
||||
HAL_ADCEx_InjectedConfigChannel(&hadc2, &sConfigInjected);
|
||||
|
||||
// Run ADC internal calibration
|
||||
while (HAL_ADCEx_Calibration_Start(&hadc2) != HAL_OK)
|
||||
;
|
||||
}
|
||||
/* I2C1 init function */
|
||||
static void MX_I2C1_Init(void) {
|
||||
hi2c1.Instance = I2C1;
|
||||
hi2c1.Init.ClockSpeed = 200000;
|
||||
// OLED doesnt handle >100k when its asleep (off).
|
||||
hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_16_9;
|
||||
hi2c1.Init.OwnAddress1 = 0;
|
||||
hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
|
||||
hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
|
||||
hi2c1.Init.OwnAddress2 = 0;
|
||||
hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
|
||||
hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
|
||||
__HAL_I2C_DISABLE(&hi2c1);
|
||||
|
||||
__HAL_RCC_I2C1_CLK_ENABLE();
|
||||
|
||||
// 13. Set SWRST bit in I2Cx_CR1 register.
|
||||
hi2c1.Instance->CR1 |= 0x8000;
|
||||
|
||||
asm("nop");
|
||||
|
||||
// 14. Clear SWRST bit in I2Cx_CR1 register.
|
||||
hi2c1.Instance->CR1 &= ~0x8000;
|
||||
|
||||
HAL_I2C_Init(&hi2c1);
|
||||
unstick_I2C();
|
||||
}
|
||||
|
||||
/* IWDG init function */
|
||||
static void MX_IWDG_Init(void) {
|
||||
hiwdg.Instance = IWDG;
|
||||
hiwdg.Init.Prescaler = IWDG_PRESCALER_256;
|
||||
hiwdg.Init.Reload = 2048;
|
||||
#ifndef SWD_ENABLE
|
||||
HAL_IWDG_Init(&hiwdg);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void MX_TIM4_Init(void) {
|
||||
/*
|
||||
* We use the channel 1 to trigger the ADC at end of PWM period
|
||||
* And we use the channel 4 as the PWM modulation source using Interrupts
|
||||
* */
|
||||
TIM_ClockConfigTypeDef sClockSourceConfig;
|
||||
TIM_MasterConfigTypeDef sMasterConfig;
|
||||
TIM_OC_InitTypeDef sConfigOC;
|
||||
memset(&sConfigOC, 0, sizeof(sConfigOC));
|
||||
// Timer 2 is fairly slow as its being used to run the PWM and trigger the ADC
|
||||
// in the PWM off time.
|
||||
htim4.Instance = TIM4;
|
||||
// dummy value, will be reconfigured by BSPInit()
|
||||
htim4.Init.Prescaler = 10; // 2 MHz timer clock/1000 = 2 kHz tick rate
|
||||
|
||||
// pwm out is 10k from tim3, we want to run our PWM at around 10hz or slower on the output stage
|
||||
// These values give a rate of around 3.5 Hz for "fast" mode and 1.84 Hz for "slow"
|
||||
htim4.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||
htim4.Init.Period = 255;
|
||||
|
||||
htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; // 8 MHz (x2 APB1) before divide
|
||||
htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
|
||||
htim4.Init.RepetitionCounter = 0;
|
||||
HAL_TIM_Base_Init(&htim4);
|
||||
|
||||
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
|
||||
HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig);
|
||||
HAL_TIM_PWM_Init(&htim4);
|
||||
HAL_TIM_OC_Init(&htim4);
|
||||
|
||||
sConfigOC.OCMode = TIM_OCMODE_PWM1;
|
||||
|
||||
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
|
||||
sConfigOC.OCFastMode = TIM_OCFAST_ENABLE;
|
||||
sConfigOC.Pulse = 0; // default to entirely off
|
||||
HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, PWM_Out_CHANNEL);
|
||||
|
||||
GPIO_InitTypeDef GPIO_InitStruct;
|
||||
GPIO_InitStruct.Pin = PWM_Out_Pin;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; // We would like sharp rising edges
|
||||
HAL_GPIO_Init(PWM_Out_GPIO_Port, &GPIO_InitStruct);
|
||||
|
||||
// HAL_NVIC_SetPriority(TIM4_IRQn, 15, 0);
|
||||
// HAL_NVIC_EnableIRQ(TIM4_IRQn);
|
||||
|
||||
HAL_TIM_Base_Start(&htim4);
|
||||
HAL_TIM_PWM_Start(&htim4, PWM_Out_CHANNEL);
|
||||
}
|
||||
///////////////////
|
||||
static void MX_TIM2_Init(void) {
|
||||
/*
|
||||
* We use the channel 1 to trigger the ADC at end of PWM period
|
||||
* And we use the channel 4 as the PWM modulation source using Interrupts
|
||||
* */
|
||||
TIM_ClockConfigTypeDef sClockSourceConfig;
|
||||
TIM_MasterConfigTypeDef sMasterConfig;
|
||||
TIM_OC_InitTypeDef sConfigOC;
|
||||
|
||||
// Timer 2 is fairly slow as its being used to run the PWM and trigger the ADC
|
||||
// in the PWM off time.
|
||||
htim2.Instance = TIM2;
|
||||
// dummy value, will be reconfigured by BSPInit()
|
||||
htim2.Init.Prescaler = 2000; // 2 MHz timer clock/2000 = 1 kHz tick rate
|
||||
|
||||
// pwm out is 10k from tim3, we want to run our PWM at around 10hz or slower on the output stage
|
||||
// These values give a rate of around 3.5 Hz for "fast" mode and 1.84 Hz for "slow"
|
||||
htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||
// dummy value, will be reconfigured by BSPInit()
|
||||
htim2.Init.Period = powerPWM + 14 * 2;
|
||||
|
||||
htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV4; // 8 MHz (x2 APB1) before divide
|
||||
htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
|
||||
htim2.Init.RepetitionCounter = 0;
|
||||
HAL_TIM_Base_Init(&htim2);
|
||||
|
||||
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
|
||||
HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig);
|
||||
|
||||
HAL_TIM_PWM_Init(&htim2);
|
||||
HAL_TIM_OC_Init(&htim2);
|
||||
|
||||
sMasterConfig.MasterOutputTrigger = TIM_TRGO_OC1;
|
||||
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
||||
HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig);
|
||||
|
||||
sConfigOC.OCMode = TIM_OCMODE_PWM1;
|
||||
// dummy value, will be reconfigured by BSPInit() in the BSP.cpp
|
||||
sConfigOC.Pulse = powerPWM + 14; // 13 -> Delay of 7 ms
|
||||
// 255 is the largest time period of the drive signal, and then offset ADC sample to be a bit delayed after this
|
||||
/*
|
||||
* It takes 4 milliseconds for output to be stable after PWM turns off.
|
||||
* Assume ADC samples in 0.5ms
|
||||
* We need to set this to 100% + 4.5ms
|
||||
* */
|
||||
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
|
||||
sConfigOC.OCFastMode = TIM_OCFAST_ENABLE;
|
||||
HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1); // ADC Triggers
|
||||
|
||||
sConfigOC.Pulse = powerPWM; // Power PWM cycle time
|
||||
|
||||
HAL_TIM_OC_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4); // Output triggers
|
||||
|
||||
HAL_TIM_Base_Start_IT(&htim2);
|
||||
HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1);
|
||||
HAL_TIM_PWM_Start_IT(&htim2, TIM_CHANNEL_4);
|
||||
|
||||
HAL_NVIC_SetPriority(TIM2_IRQn, 15, 0);
|
||||
HAL_NVIC_EnableIRQ(TIM2_IRQn);
|
||||
}
|
||||
/**
|
||||
* Enable DMA controller clock
|
||||
*/
|
||||
static void MX_DMA_Init(void) {
|
||||
/* DMA controller clock enable */
|
||||
__HAL_RCC_DMA1_CLK_ENABLE();
|
||||
|
||||
/* DMA interrupt init */
|
||||
/* DMA1_Channel1_IRQn interrupt configuration */
|
||||
HAL_NVIC_SetPriority(DMA1_Channel1_IRQn, 5, 0);
|
||||
HAL_NVIC_EnableIRQ(DMA1_Channel1_IRQn);
|
||||
/* DMA1_Channel6_IRQn interrupt configuration */
|
||||
HAL_NVIC_SetPriority(DMA1_Channel6_IRQn, 5, 0);
|
||||
HAL_NVIC_EnableIRQ(DMA1_Channel6_IRQn);
|
||||
/* DMA1_Channel7_IRQn interrupt configuration */
|
||||
HAL_NVIC_SetPriority(DMA1_Channel7_IRQn, 5, 0);
|
||||
HAL_NVIC_EnableIRQ(DMA1_Channel7_IRQn);
|
||||
}
|
||||
|
||||
/** Configure pins as
|
||||
* Analog
|
||||
* Input
|
||||
* Output
|
||||
* EVENT_OUT
|
||||
* EXTI
|
||||
* Free pins are configured automatically as Analog
|
||||
PB0 ------> ADCx_IN8
|
||||
PB1 ------> ADCx_IN9
|
||||
*/
|
||||
static void MX_GPIO_Init(void) {
|
||||
GPIO_InitTypeDef GPIO_InitStruct;
|
||||
|
||||
/* GPIO Ports Clock Enable */
|
||||
__HAL_RCC_GPIOD_CLK_ENABLE();
|
||||
__HAL_RCC_GPIOA_CLK_ENABLE();
|
||||
__HAL_RCC_GPIOB_CLK_ENABLE();
|
||||
|
||||
/*Configure peripheral I/O remapping */
|
||||
__HAL_AFIO_REMAP_PD01_ENABLE();
|
||||
//^ remap XTAL so that pins can be analog (all input buffers off).
|
||||
// reduces power consumption
|
||||
|
||||
/*
|
||||
* Configure All pins as analog by default
|
||||
*/
|
||||
GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_15;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
|
||||
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
||||
GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12
|
||||
| GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15;
|
||||
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
||||
|
||||
/*Configure GPIO pins : KEY_B_Pin KEY_A_Pin */
|
||||
GPIO_InitStruct.Pin = KEY_B_Pin | KEY_A_Pin;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
|
||||
GPIO_InitStruct.Pull = GPIO_PULLUP;
|
||||
HAL_GPIO_Init(KEY_B_GPIO_Port, &GPIO_InitStruct);
|
||||
}
|
||||
#ifdef USE_FULL_ASSERT
|
||||
void assert_failed(uint8_t *file, uint32_t line) { asm("bkpt"); }
|
||||
#endif
|
||||
38
source/Core/BSP/Sequre_S60/Setup.h
Normal file
38
source/Core/BSP/Sequre_S60/Setup.h
Normal file
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
* Setup.h
|
||||
*
|
||||
* Created on: 29Aug.,2017
|
||||
* Author: Ben V. Brown
|
||||
*/
|
||||
|
||||
#ifndef SETUP_H_
|
||||
#define SETUP_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "stm32f1xx_hal.h"
|
||||
|
||||
extern ADC_HandleTypeDef hadc1;
|
||||
extern ADC_HandleTypeDef hadc2;
|
||||
extern DMA_HandleTypeDef hdma_adc1;
|
||||
|
||||
extern DMA_HandleTypeDef hdma_i2c1_rx;
|
||||
extern DMA_HandleTypeDef hdma_i2c1_tx;
|
||||
extern I2C_HandleTypeDef hi2c1;
|
||||
|
||||
extern IWDG_HandleTypeDef hiwdg;
|
||||
|
||||
extern TIM_HandleTypeDef htim4;
|
||||
extern TIM_HandleTypeDef htim2;
|
||||
void Setup_HAL();
|
||||
uint16_t getADCHandleTemp(uint8_t sample);
|
||||
uint16_t getADCVin(uint8_t sample);
|
||||
void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); // Since the hal header file does not define this one
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* SETUP_H_ */
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user