| devcontainer: pin miosix-kernel to Miosix v3.01 The toolchain build cloned miosix-kernel HEAD, so upstream layout changes could break CI at any time. Fetch a fixed SHA instead. Fixes #469 Signed-off-by: Vlastimil Slinták <slintak@uart.cz> | 1 个月前 |
| ci: cancel superseded PR runs and add job timeouts Pushing to a PR branch now cancels the previous in-progress run instead of queueing a duplicate ~40 minute build. Runs on branches (master included) are never cancelled. Also drop the unused RADIO_TOOL_VERSION env var. Signed-off-by: Vlastimil Slinták <slintak@uart.cz> | 1 个月前 |
| test: unit: add gcovr test coverage Add a script to run gcovr; update contributing guide to explain usage; integrate with vscode presents; add execution to ci. To use this, execute `scripts/coverage.sh`. This builds with coverage instrumentation, runs the test suite, and produces: * HTML report: `build_coverage/coverage/index.html` -- open in a browser to see per-file line-by-line coverage highlighting * MD report: `build_coverage/coverage/coverage.md` -- human-readable summary of test coverage which gets attached to the GitHub actions build * Cobertura XML: `build/coverage/cobertura.xml` -- machine-readable format used by CI; this gets archived today with the build, but no other use is in place yet In the future another tool could be used to track coverage over time, or we could institute minimum coverage requirements and have a GH actions automatically open a comment when the coverage is not met, for instance. Co-authored-by: GitHub Copilot <copilot@github.com> Signed-off-by: Ryan Turner <ryan@turnrye.com> | 5 个月前 |
| CMSIS library files for Artery AT32F423 MCU | 3 个月前 |
| lib: qrcode: remove #pragma mark directives Remove Xcode-specific #pragma directives, not recognized by GCC and triggering the -Wunknown-pragma warning Signed-off-by: Silvano Seva <silseva@fastwebnet.it> | 4 个月前 |
| just the emulator shell broken out | 4 年前 |
| ui: make vfo freq display easier to read Make it so that the VFO screen shows the frequency with a consistent set precision. Show the hundredths place in the full size font, then show the thousandths and ten-thousandths place in font two steps smaller. This way it's easier to scroll through frequencies and read where you are. Signed-off-by: Ryan Turner <ryan@turnrye.com> | 1 个月前 |
| drivers: tones: add SDL-based beep generator Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Signed-off-by: Ryan Turner <ryan@turnrye.com> | 1 个月前 |
| gfx: apply clang-format to graphics.c and graphics.h Add openrtx/src/core/graphics.c and openrtx/include/core/graphics.h in scripts/clang_format.sh and apply the formatter. No functional changes. Co-authored-by: GitHub Copilot <copilot@github.com> Signed-off-by: Ryan Turner <ryan@turnrye.com> | 1 个月前 |
| build: add Catch2 subproject Add the catch2 subproject wrap file and its REUSE license entry. Declare the catch2-with-main dependency for native/linux builds only. Wrap the unit test section in a cross-build guard so that test targets are not declared when cross-compiling for embedded targets. Install catch2 via apt in CI. Co-authored-by: GitHub Copilot <copilot@github.com> Signed-off-by: Ryan Turner <ryan@turnrye.com> | 5 个月前 |
| gfx: add gfx_printBufferClipped Adds gfx_printBufferClipped: a variant of gfx_printBuffer that accepts an explicit right-edge limit (max_x) and a vertical clip window [clip_top_y, clip_bot_y]. Word-wrap fires when the next glyph would exceed max_x. Pixels outside the clip window are suppressed without affecting layout, so a negative start.y can be used to implement smooth text scrolling. gfx_printBuffer now delegates entirely to gfx_printBufferClipped with clip_top_y=0 and clip_bot_y=CONFIG_SCREEN_HEIGHT-1. The old pixel guard used strict > 0 comparisons, which excluded pixels at row 0 and column 0. The new implementation renders those pixels; callers that relied on the old exclusion will see a behaviour change. Compared to a naive port of gfx_printBuffer, this implementation addresses several correctness issues: - Control characters '\n' and '\r' are checked before the glyph array is indexed, avoiding undefined behaviour on fonts whose first codepoint is at or above 0x20 (e.g. TomThumb, first=0x20), since '\n' (0x0A) would produce a negative index. - get_line_size uses <= instead of < when accumulating glyph widths so that a glyph whose xAdvance exactly equals max_width is counted. The render loop uses strict > to trigger wrap, so the old < mismatch caused text_size.x to be under-reported by one glyph whenever a line was an exact fit, and misplaced CENTER/RIGHT lines in that case. - For TEXT_ALIGN_LEFT, line_size is recomputed on every '\n' before the max_line_size comparison. Without this, max_line_size was stuck at the first-line width for the entire call, so text_size.x was wrong whenever a subsequent line was wider. - saved_start_y is int16_t to match point_t.y, allowing correct text_size.y computation when start.y is negative (scroll offset). - text_size.y is computed as (start.y - saved_start_y) + line_h, matching the sign fix introduced for gfx_printBuffer. - Pixels above row 0 (py < 0) are suppressed before the uint16_t cast passed to gfx_setPixel, preventing a silent wrap to a large row index. - max_line_size tracks the widest line across all line breaks and wraps; text_size.x reflects the widest line, not just the last. Extend tests/unit/gfx_text.cpp with return-value tests covering: single-line height, two-line height delta equals yAdvance, negative start.y scroll offset, negative clip_top_y, exact-fit line width (get_line_size <= boundary), max line width from a wider first line, max line width from a wider second line (TEXT_ALIGN_LEFT regression), glyph at clip_bot_y not skipped, and TEXT_ALIGN_RIGHT per-line reset. Co-authored-by: GitHub Copilot <copilot@github.com> Signed-off-by: Ryan Turner <ryan@turnrye.com> | 1 个月前 |
| reuse: add reuse config, licenses Integrate the REUSE tool by adding a config which addresses all of the linting complaints based on my research. Also, address deprecated licenses where necessary (the license didnt change, but the identifier did). Signed-off-by: Ryan Turner <ryan@turnrye.com> | 7 个月前 |
| git: ignore meson wraplock file Right now we depend on developers to know not to commit the meson subproject wraplock file. Folks not familiar with meson may not realize that this is essentially a build artifact, or LLM agents may mistakenly commit this as an oversight. Large meson codebases have ensured this in the past, such as [gstreamer](https://github.com/GStreamer/gstreamer/blob/main/.gitignore#L47) having it in gitignore or [gtk](https://gitlab.gnome.org/GNOME/gtk/-/tree/main/subprojects?ref_type=heads) intentionally not checking in the wraplock. Let's ensure the same for us. Signed-off-by: Ryan Turner <ryan@turnrye.com> | 3 个月前 |
| Added GigaDevices GD32 USB ID to udev rules to allow programming of GD32-based Module17 without root privileges | 4 年前 |
| ci: add AGENTS.md with project guidelines for AI agents Add workspace-level instructions file that documents coding standards, architecture, build commands, testing conventions, and contribution patterns for AI coding agents (GitHub Copilot, Claude Code, Cursor, and others). Co-authored-by: copilot-chat <copilot-chat@github.com> Signed-off-by: Ryan Turner <ryan@turnrye.com> | 4 个月前 |
| OpenRTX version 0.4.4 Signed-off-by: Silvano Seva <silseva@fastwebnet.it> | 4 个月前 |
| M17: remove M17 name from namespaced classes M17 protocol code is already namespaced in M17, so it's redundant to name every class M17*. This change removes the leading M17 from all of the namespaced things. Co-authored-by: GitHub Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Ryan Turner <ryan@turnrye.com> | 5 个月前 |
| protocols: M17: add metadata class and reassembly Add classes oriented around handling metadata in the M17 protocol. Create a class for reassembling text blocks from metadata in order to assemble a multi-frame metadata text message. Co-authored-by: Wojciech Kaczmarski <w.kaczmarski@teletra.pl> Co-authored-by: Jim Ancona <jim@anconafamily.com> Co-authored-by: Rick Schnicker <crs026@yahoo.com> Co-authored-by: GitHub Copilot <noreply@github.com> Signed-off-by: Ryan Turner <ryan@turnrye.com> | 5 个月前 |
| README: update supported device list to link to website Signed-off-by: Joshua Murphy <hello@joshmurphy.ca> | 4 个月前 |
| CMSIS library files for Artery AT32F423 MCU | 3 个月前 |
| build: rename "build_arm" file to "build_cm4" In file cross_cm7.txt, the target cpu was wrongly identified as being Cortex M4. This does not affect compilation. Also, file cross_arm.txt was renamed cross_cm4.txt and folder build_arm was renamed to build_cm4. References to this were also updated. | 6 个月前 |
| build: rename "build_arm" file to "build_cm4" In file cross_cm7.txt, the target cpu was wrongly identified as being Cortex M4. This does not affect compilation. Also, file cross_arm.txt was renamed cross_cm4.txt and folder build_arm was renamed to build_cm4. References to this were also updated. | 6 个月前 |
| gfx: add gfx_measureText, accept max_width in get_line_size Refactor the static helper get_line_size to accept an explicit max_width parameter instead of the hardcoded CONFIG_SCREEN_WIDTH cap. All three call sites in gfx_printBuffer are updated to pass CONFIG_SCREEN_WIDTH, preserving existing behaviour. Add gfx_measureText: a pure-computation function that simulates the same word-wrap pass as gfx_printBufferClipped (to be added next) without touching the display. It returns the total pixel height of the laid-out text block and accepts a char_count limit so callers can compute the y-coordinate of an arbitrary cursor position for scroll-offset calculations. Add tests/unit/gfx_text.cpp and register the gfx_text_test executable in meson.build. The test suite covers single-line strings, multi-line strings via explicit newlines, char_count truncation, and word-wrap height growth. Co-authored-by: GitHub Copilot <copilot@github.com> Signed-off-by: Ryan Turner <ryan@turnrye.com> | 1 个月前 |
| Add undefined behaviour sanitizer option | 5 年前 |
| Native opts for macOS building meson setup --native-file osx.txt build_osx | 4 年前 |
| test: unit: add gcovr test coverage Add a script to run gcovr; update contributing guide to explain usage; integrate with vscode presents; add execution to ci. To use this, execute `scripts/coverage.sh`. This builds with coverage instrumentation, runs the test suite, and produces: * HTML report: `build_coverage/coverage/index.html` -- open in a browser to see per-file line-by-line coverage highlighting * MD report: `build_coverage/coverage/coverage.md` -- human-readable summary of test coverage which gets attached to the GitHub actions build * Cobertura XML: `build/coverage/cobertura.xml` -- machine-readable format used by CI; this gets archived today with the build, but no other use is in place yet In the future another tool could be used to track coverage over time, or we could institute minimum coverage requirements and have a GH actions automatically open a comment when the coverage is not met, for instance. Co-authored-by: GitHub Copilot <copilot@github.com> Signed-off-by: Ryan Turner <ryan@turnrye.com> | 5 个月前 |
| ui: add ui for setting m17 meta text This change adds a new settings entry and the accompanying state, UI, strings, and voice prompts in order for there to be a new "Meta text" menu item. Co-authored-by: GitHub Copilot <noreply@github.com> Signed-off-by: Ryan Turner <ryan@turnrye.com> | 5 个月前 |
| copyright-and-license: adopt SPDX-compliant header This change removes the old copyright header from project sources and replaces it with a new simplified SPDX-compliant header. Note that files that were missing the header but reasonably understood to be licensed according to the root license were not corrected. Signed-off-by: Ryan Turner <ryan@turnrye.com> | 7 个月前 |