Skip to content

feat: add HRS V14 LCD variant - 3.0 - #7480

Merged
pfeerick merged 4 commits into
EdgeTX:mainfrom
helloradiosky:hrs-v14lcd-main_3.0
Jul 15, 2026
Merged

pfeerick merged 4 commits into
EdgeTX:mainfrom
helloradiosky:hrs-v14lcd-main_3.0

Conversation

@helloradiosky

@helloradiosky helloradiosky commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

added V14LCD target

Summary by CodeRabbit

  • New Features

    • Added HelloRadioSky V14LCD transmitter support across firmware, companion identification, and build outputs (including WASM plugins and nightly builds).
    • Added V14LCD as a supported target for firmware and OpenTx variant registration.
  • Hardware Configuration

    • Introduced a dedicated V14LCD board definition, including LCD setup, input/switch mappings, LED/backlight behavior, and haptic support (with V14LCD-specific LCD contrast adjustments).
  • Documentation

    • Updated the bug report template to include the new V14LCD transmitter and release version option.

@coderabbitai

coderabbitai Bot commented Jun 22, 2026

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 94d4b788-e7a9-4d10-a7a7-5fac90bbb435

📥 Commits

Reviewing files that changed from the base of the PR and between 5a003c4 and 1a4cc3a.

📒 Files selected for processing (1)
  • .github/ISSUE_TEMPLATE/bug-report.yml

📝 Walkthrough

Walkthrough

Adds HelloRadioSky V14LCD as a supported EdgeTX board, including hardware mappings, companion metadata, firmware registration, build tooling, target-specific HAL/LCD settings, USB identity, and CI build targets.

Changes

HelloRadioSky V14LCD target support

Layer / File(s) Summary
Board definition and firmware identity
radio/src/boards/hw_defs/v14lcd.json, companion/src/firmwares/boards.*, companion/src/firmwares/opentx/opentxinterface.cpp, fw.json
Defines V14LCD hardware mappings and registers its board type, board properties, firmware variant, and v14lcd- firmware prefix.
Build and generation registration
radio/src/targets/taranis/CMakeLists.txt, radio/util/..., tools/..., .github/workflows/*
Maps v14lcd to PCB X7 and revision V14LCD across firmware builds, hardware-definition generation, module builds, legacy input names, issue templates, and CI matrices.
Target HAL and LCD configuration
radio/src/targets/taranis/hal.h, radio/src/targets/taranis/lcd_driver_spi.cpp, radio/src/targets/taranis/usb_descriptor.h
Applies V14-compatible GPIO, module, telemetry, timer, I2C, hall-stick, LCD, contrast, and USB descriptor settings to V14LCD.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Sequence Diagram(s)

sequenceDiagram
  participant BuildWorkflow
  participant FirmwareBuilder
  participant CMake
  participant TaranisHAL
  participant USBDescriptor
  BuildWorkflow->>FirmwareBuilder: selects v14lcd
  FirmwareBuilder->>CMake: configures PCB=X7 and PCBREV=V14LCD
  CMake->>TaranisHAL: selects FLAVOUR=v14lcd and RADIO_V14LCD
  TaranisHAL->>USBDescriptor: selects V14LCD device identity
Loading

Possibly related PRs

Suggested labels: compilation, enhancement ✨

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description is far too brief and misses the template's required Fixes # and Summary of changes sections. Expand it to match the template with a Fixes # link and a Summary of changes section describing the new V14LCD target and related support.
Docstring Coverage ⚠️ Warning Docstring coverage is 6.25% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title is concise and clearly reflects the main change: adding the HRS V14 LCD variant.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@tools/generate-hw-defs.sh`:
- Line 12: The FLAVOR variable assignment on line 12 uses unquoted parameter
expansion which can trigger glob expansion if FLAVOR is externally set with
wildcard characters. Add double quotes around the entire parameter expansion in
the FLAVOR assignment, changing ${FLAVOR:=...} to "${FLAVOR:=...}" to prevent
the shell from interpreting glob characters in the default value list.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 898acf04-b42b-43ca-a5f7-5fc43216f238

📥 Commits

Reviewing files that changed from the base of the PR and between 94f5d50 and 3199bab.

📒 Files selected for processing (13)
  • fw.json
  • radio/src/boards/hw_defs/v14lcd.json
  • radio/src/gui/navigation/navigation.h
  • radio/src/targets/taranis/CMakeLists.txt
  • radio/src/targets/taranis/hal.h
  • radio/src/targets/taranis/lcd_driver_spi.cpp
  • radio/src/targets/taranis/usb_descriptor.h
  • radio/util/build-firmware.py
  • radio/util/hw_defs/legacy_names.py
  • tools/boards.py
  • tools/build-common.sh
  • tools/build-wasm-modules.sh
  • tools/generate-hw-defs.sh

Comment thread tools/generate-hw-defs.sh
@Johanl1964

Copy link
Copy Markdown

How is it intended? The V14 LCD FW here (v14-1f865aa) is still only for OLED, not LCD, Have tested!
Skärmbild från 2026-06-24 08-58-14

@pfeerick pfeerick changed the title Hrs v14lcd main 3.0 feat: add HRS V14 LCD variant - 3.0 Jul 14, 2026
@pfeerick

Copy link
Copy Markdown
Member

How is it intended? The V14 LCD FW here (v14-1f865aa) is still only for OLED, not LCD, Have tested!

Necessary bits to actually build the firmware, and companion side support are missing and will be added shortly.

@pfeerick
pfeerick force-pushed the hrs-v14lcd-main_3.0 branch from 3199bab to 371ccc1 Compare July 15, 2026 00:01

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@radio/src/targets/taranis/hal.h`:
- Line 43: Update the ROTARY_ENCODER_POSITION macro in hal.h to wrap the entire
shifted-and-masked expression in outer parentheses, ensuring comparisons and
other surrounding operators evaluate the macro as a single value.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: affc841c-5406-449e-affd-8fed4761260f

📥 Commits

Reviewing files that changed from the base of the PR and between 3199bab and 371ccc1.

📒 Files selected for processing (16)
  • companion/src/firmwares/boards.cpp
  • companion/src/firmwares/boards.h
  • companion/src/firmwares/opentx/opentxinterface.cpp
  • fw.json
  • radio/src/boards/hw_defs/v14lcd.json
  • radio/src/gui/navigation/navigation.h
  • radio/src/targets/taranis/CMakeLists.txt
  • radio/src/targets/taranis/hal.h
  • radio/src/targets/taranis/lcd_driver_spi.cpp
  • radio/src/targets/taranis/usb_descriptor.h
  • radio/util/build-firmware.py
  • radio/util/hw_defs/legacy_names.py
  • tools/boards.py
  • tools/build-common.sh
  • tools/build-wasm-modules.sh
  • tools/generate-hw-defs.sh
🚧 Files skipped from review as they are similar to previous changes (8)
  • tools/boards.py
  • tools/build-common.sh
  • radio/util/build-firmware.py
  • fw.json
  • tools/build-wasm-modules.sh
  • radio/src/targets/taranis/usb_descriptor.h
  • radio/src/gui/navigation/navigation.h
  • radio/src/targets/taranis/lcd_driver_spi.cpp

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Inline review comments failed to post. This is likely due to GitHub's internal server error or limits when posting large numbers of comments. If you are seeing this consistently it is likely a permissions issue. Please check "Moderation" -> "Code review limits" under your organization settings.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@radio/src/targets/taranis/hal.h`:
- Line 43: Update the ROTARY_ENCODER_POSITION macro in hal.h to wrap the entire
shifted-and-masked expression in outer parentheses, ensuring comparisons and
other surrounding operators evaluate the macro as a single value.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: affc841c-5406-449e-affd-8fed4761260f

📥 Commits

Reviewing files that changed from the base of the PR and between 3199bab and 371ccc1.

📒 Files selected for processing (16)
  • companion/src/firmwares/boards.cpp
  • companion/src/firmwares/boards.h
  • companion/src/firmwares/opentx/opentxinterface.cpp
  • fw.json
  • radio/src/boards/hw_defs/v14lcd.json
  • radio/src/gui/navigation/navigation.h
  • radio/src/targets/taranis/CMakeLists.txt
  • radio/src/targets/taranis/hal.h
  • radio/src/targets/taranis/lcd_driver_spi.cpp
  • radio/src/targets/taranis/usb_descriptor.h
  • radio/util/build-firmware.py
  • radio/util/hw_defs/legacy_names.py
  • tools/boards.py
  • tools/build-common.sh
  • tools/build-wasm-modules.sh
  • tools/generate-hw-defs.sh
🚧 Files skipped from review as they are similar to previous changes (8)
  • tools/boards.py
  • tools/build-common.sh
  • radio/util/build-firmware.py
  • fw.json
  • tools/build-wasm-modules.sh
  • radio/src/targets/taranis/usb_descriptor.h
  • radio/src/gui/navigation/navigation.h
  • radio/src/targets/taranis/lcd_driver_spi.cpp
🛑 Comments failed to post (1)
radio/src/targets/taranis/hal.h (1)

43-43: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Description: Search for remaining function-like calls to ROTARY_ENCODER_POSITION.
rg -n 'ROTARY_ENCODER_POSITION\s*\('

Repository: EdgeTX/edgetx

Length of output: 151


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '--- hal.h excerpt ---\n'
sed -n '35,50p' radio/src/targets/taranis/hal.h

printf '\n--- usages of ROTARY_ENCODER_POSITION ---\n'
rg -n '\bROTARY_ENCODER_POSITION\b' radio/src -g '!**/*build*' -g '!**/*dist*'

Repository: EdgeTX/edgetx

Length of output: 242


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo '--- hal.h excerpt ---'
sed -n '35,50p' radio/src/targets/taranis/hal.h

echo
echo '--- usages of ROTARY_ENCODER_POSITION ---'
rg -n '\bROTARY_ENCODER_POSITION\b' radio/src

Repository: EdgeTX/edgetx

Length of output: 1961


Wrap ROTARY_ENCODER_POSITION in outer parentheses radio/src/targets/taranis/hal.h:43 — the macro can bind incorrectly in expressions like ROTARY_ENCODER_POSITION == 1; use ((ROTARY_ENCODER_GPIO->IDR >> 12) & 0x03).

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@radio/src/targets/taranis/hal.h` at line 43, Update the
ROTARY_ENCODER_POSITION macro in hal.h to wrap the entire shifted-and-masked
expression in outer parentheses, ensuring comparisons and other surrounding
operators evaluate the macro as a single value.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/build_fw.yml:
- Line 90: Update the firmware build group at .github/workflows/build_fw.yml
lines 90-90 to retain v12 while including v14lcd alongside v14 and v16; make the
same change to the WASM module group at .github/workflows/companion.yml lines
56-56, preserving CI coverage for v12 in both workflows.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 7bc825bf-4949-4d5e-b59f-dd46378a6671

📥 Commits

Reviewing files that changed from the base of the PR and between 371ccc1 and c265037.

📒 Files selected for processing (3)
  • .github/workflows/build_fw.yml
  • .github/workflows/companion.yml
  • .github/workflows/nightly.yml

Comment thread .github/workflows/build_fw.yml
helloradiosky and others added 3 commits July 15, 2026 02:29
Wire up BOARD_HELLORADIOSKY_V14LCD in companion (board enum, FourCC,
EEPROM/flash size, board name, default internal module, battery
range, and firmware registration) so Companion can load the V14LCD
hardware definition and target it as a firmware/simulator option,
mirroring the existing V14 board wiring.

Reference: EdgeTX#7477
@pfeerick
pfeerick force-pushed the hrs-v14lcd-main_3.0 branch from c265037 to 5a003c4 Compare July 15, 2026 02:30
@pfeerick pfeerick added this to the 3.0 milestone Jul 15, 2026
@pfeerick
pfeerick merged commit c966bee into EdgeTX:main Jul 15, 2026
54 checks passed
@jlrcglider

Copy link
Copy Markdown

How is it intended? The V14 LCD FW here (v14-1f865aa) is still only for OLED, not LCD, Have tested!

Necessary bits to actually build the firmware, and companion side support are missing and will be added shortly.

Thanks, let's hope it's ready soon; I've been waiting seven months for the relevant firmware for my V14 LCD now...

@helloradiosky

Copy link
Copy Markdown
Contributor Author

How is it intended? The V14 LCD FW here (v14-1f865aa) is still only for OLED, not LCD, Have tested!

Necessary bits to actually build the firmware, and companion side support are missing and will be added shortly.

Thanks, let's hope it's ready soon; I've been waiting seven months for the relevant firmware for my V14 LCD now...

Just merged into the main line, still waiting for buddy support

@pfeerick

pfeerick commented Jul 15, 2026

Copy link
Copy Markdown
Member

Automatically available with the nightly after merge... https://buddy.edgetx.org/#/flash?version=nightly&source=releases&filters=includePrereleases&target=v14lcd

2.12 version will be in 2.12.3

@pfeerick pfeerick mentioned this pull request Aug 10, 2026
1 task
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants