Screen Dim passed a plain literal ('100%'/'50%'/...) to
voicePromptsAppendLanguageString(), which derives the prompt index from the
string's offset within the language table; a foreign pointer produced a garbage
index and crashed (only with voice on). Route the value through
voicePromptsAppendString() instead. Also move the 3-bit dim level's high bit off
legacy option bit 2 to bit 29 and clamp the level against the option arrays.
Bump version to 0.2.0.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
92 lines
4.3 KiB
Markdown
92 lines
4.3 KiB
Markdown
# Changelog
|
||
|
||
All notable changes to this fork of the OpenGD77 firmware (MD-UV380 / DM-1701).
|
||
|
||
This project is still in pre-release iteration, so changes are collected as a
|
||
single running list until the first versioned release.
|
||
|
||
## Unreleased
|
||
|
||
_Nothing yet._
|
||
|
||
## 0.2.0
|
||
|
||
- **Fix crash** opening Display Options with **voice announcements on**: the Screen
|
||
Dim value ("100%"/"50%"/…) is a plain literal, but the shared menu code fed it to
|
||
`voicePromptsAppendLanguageString()`, which derives the prompt index from the
|
||
string's offset within the language table — a foreign pointer produced a garbage
|
||
index and crashed. The value now goes through `voicePromptsAppendString()`. Also
|
||
moved the dim-level high bit off a low legacy option bit (bit 2 → 29) and clamped
|
||
the level so it can never index past the option arrays.
|
||
- **7-segment frequency font:** inactive segments are now off (background) instead
|
||
of faintly lit — no dim "ghosting". "MHz" now matches the frequency colour, and
|
||
there's 1px more space between the RX and TX frequency lines.
|
||
- **Screen dimming:** added a **15%** idle-dim level (Off / 100 / 50 / 30 / 15).
|
||
- **DM-1701 build support** — the Docker build is now parameterized by platform;
|
||
`./build-firmware.sh DM1701` produces `OpenDM1701.bin` (Baofeng DM-1701 /
|
||
Retevis RT-84). Not officially tested yet.
|
||
- **Release script** (`scripts/forgejo-release.sh`) now builds and attaches a
|
||
single platform or all of them, and reuses an existing release.
|
||
- README: added "What's different from OpenGD77" and a dedicated "Flashing"
|
||
section.
|
||
|
||
## 0.1.0
|
||
|
||
First versioned release of FreeTRX (fork of OpenGD77 R20260131).
|
||
|
||
### Features
|
||
|
||
- **Screen dimming** — optional idle dimming of the backlight to a fraction of
|
||
the configured brightness (Off / 100% / 50% / 30%), in Auto backlight mode.
|
||
Any activity (keys, rotary, RX, TX) restores full brightness. New setting in
|
||
Display Options.
|
||
- **Mute** — one-tap audio mute:
|
||
- **SK2 short-tap** toggles mute on the VFO/Channel screens (except while a DMR
|
||
QSO is on screen, where SK2 keeps its "set TX TG to incoming" function).
|
||
- Turning the **volume knob fully down** is also treated as muted.
|
||
- While muted: a bold **"M"** appears in the status bar (left of the battery)
|
||
and the **red LED flashes** (0.5 s every 2 s).
|
||
|
||
### Display / UI
|
||
|
||
- **S-meter** redrawn as discrete blocks — 9 green blocks (S1–S9) plus 6 red
|
||
blocks (S9+10…+60), with gaps and a proportionally-filled leading block, and a
|
||
scale label row beneath (S1 S3 S5 S7 S9 / +20 +40 +60).
|
||
- **7-segment "LED" frequency font** for the VFO and SK1-held frequency display,
|
||
with faintly-lit inactive segments; digits are wider than the normal font.
|
||
- **Main-menu icons** — a small glyph next to each top-level menu entry.
|
||
- Layout spacing adjusted so the contact/TG line, the DMR talkgroup/talker and
|
||
the private-call caller ID clear the new S-meter label row.
|
||
|
||
### Fixes
|
||
|
||
- **DMR no longer hard-faults.** The AMBE codec is now called through C function
|
||
pointers instead of the old inline assembler (which modern GCC miscompiled),
|
||
fixing the freeze-on-DMR that required a battery pull.
|
||
- Fixed the DMR talkgroup/talker and private-call caller ID overlapping the
|
||
S-meter labels.
|
||
|
||
### Build / Tooling
|
||
|
||
- **Dockerized build** using the Arm GNU Toolchain 14 (matching the official
|
||
builds); always a clean build. `./flash.sh` helper for flashing with model,
|
||
language and DMR donor.
|
||
- Integrated the OpenGD77 **screen grabber** (`gd-77_screen_grabber.py`) and the
|
||
GD-77 loader into the repo.
|
||
- **`TOOLS.md`** documents building, flashing, screenshots and language files.
|
||
|
||
### Project
|
||
|
||
- **Renamed the project to FreeTRX** (fork of OpenGD77). New `README.md`
|
||
documenting the fork and its upstream source; original OpenGD77 README kept as
|
||
`README.OpenGD77.md`. Added `LICENSE.md` reproducing the inherited OpenGD77
|
||
license (modified BSD 3-Clause + non-commercial clause; not GPL-compatible).
|
||
- On-screen branding renamed to **FreeTRX** (splash screen + Firmware Info name).
|
||
- README notes this iteration is developed/tested only on the **TYT MD-UV380 and
|
||
Retevis RT-3S**, with a contact for testing on other supported radios.
|
||
- Firmware-info **credits** simplified to "Marcus DK1DA" and a reference to
|
||
"The original OpenGD77 authors".
|
||
|
||
### Misc
|
||
|
||
- Added **Marcus DK1DA** to the firmware-info credits ("Modified Fork by").
|