Skip to content

feat(syntonia): channel data model + frequency plan + validation#15

Merged
forkwright merged 1 commit into
mainfrom
p1-01/syntonia-scaffold
Mar 15, 2026
Merged

feat(syntonia): channel data model + frequency plan + validation#15
forkwright merged 1 commit into
mainfrom
p1-01/syntonia-scaffold

Conversation

@forkwright
Copy link
Copy Markdown
Owner

Summary

  • New syntonia crate with radio-agnostic channel/frequency plan model
  • Complete CTCSS (50 tones) and DCS (104 codes) coverage with validation
  • FrequencyPlan with JSON/TOML import/export
  • RadioConstraints-based validation (band limits, name length, channel count)
  • Family plan TOML fixture for integration testing

Test plan

  • cargo build && cargo test --workspace — 42 syntonia tests + 138 koinon tests passing
  • cargo clippy --workspace --all-targets -- -D warnings — clean
  • cargo fmt --all -- --check — clean
  • Serde roundtrip on Channel, FrequencyPlan (JSON + TOML)
  • Validation rejects invalid frequencies and tones
  • Family plan fixture loads and validates

🤖 Generated with Claude Code

New `syntonia` crate with radio-agnostic channel/frequency plan model:
- Channel struct with all fields (rx/tx freq, offset, tone, power, bandwidth, scan, busy lock)
- Complete CTCSS (50 tones) and DCS (104 codes) coverage with validated newtypes
- FrequencyOffset, ToneMode, PowerLevel, Bandwidth, ScanMode enums
- FrequencyPlan with JSON/TOML import/export
- RadioConstraints-based validation (band limits, name length, channel count, duplicates)
- Baofeng UV-5R and BF-F8HP constraint factory functions
- Family plan TOML fixture for integration testing
- 42 tests passing

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown
Contributor

⚠️ Large PR detected — 12 files, 1244 lines changed.

Consider splitting into smaller PRs for easier review. Not a blocker, just a signal.

@forkwright forkwright merged commit dd21fd6 into main Mar 15, 2026
13 checks passed
@forkwright forkwright deleted the p1-01/syntonia-scaffold branch March 15, 2026 15:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant