Files
mayhem-firmware/firmware/application
Sarah Rose 5c2d1d3dfb Add MDC-1200 TX external app (#3083)
Implements MDC-1200 single and double-packet TX as a PPMA external app.

Features:
- Supports PTT ID, Emergency, Radio Check, Stun/Unstun, Call Alert,
  Selective Call (1 & 2), Status Request/Response, Remote Monitor, Message
- Auto-fills Arg byte on Op selection
- AFSK FSK modulation: 1800 Hz mark / 1200 Hz space, 1200 baud
- NRZI encoding with Golay FEC per MDC-1200 spec
- Tap-to-edit frequency via keypad
- Default TX gain of 30 dB
- Uses AFSK baseband (same as POCSAG/SAME TX)
- All buffers kept off the stack to avoid hard faults in ext app environment

* mdc_tx: address PR review feedback

- Move MDC helpers into ui::external_app::mdc_tx namespace (drop anonymous namespace)
- Use AFSK_TX_SAMPLERATE macro instead of hardcoded 1536000
- Add #include "modems.hpp" explicitly for AFSK_TX_SAMPLERATE
- Replace n*8/n*16 pixel positions with UI_POS_X/UI_POS_Y macros
- Fix field comments: 'hex bytes' -> 'decimal bytes (0-255)'
- Fix TransmitterView frequency_step: 1750000 -> 12500 (12.5kHz NFM step)
- Fix MDC preamble: replace leading 0x00 bytes with 0xAA
  after NRZI encoding stayed 0x00, terminating TX on the first word.
  0xAA bytes NRZI-encode to 0xFF (continuous 1800Hz mark tone), which
  is the standard MDC-1200 preamble and does not trigger the sentinel.
2026-03-16 19:28:07 +01:00
..
2026-03-08 13:39:53 +13:00
2026-03-14 00:51:15 +08:00
2026-03-12 22:05:42 +13:00
2026-03-12 22:05:42 +13:00
2026-01-08 10:34:05 +01:00
2026-02-23 21:37:03 +01:00
2025-12-14 11:26:21 +01:00
2025-12-14 11:26:21 +01:00
2026-02-19 14:33:01 +01:00
2026-03-12 22:05:42 +13:00
2026-03-12 22:05:42 +13:00
2026-02-24 11:23:41 +01:00
2026-02-24 11:23:41 +01:00
2025-12-14 11:26:21 +01:00
2024-11-22 09:54:34 +01:00
2026-02-24 11:23:41 +01:00
2025-04-11 10:46:04 +00:00
2024-11-08 11:46:27 +01:00
2024-11-08 11:46:27 +01:00
2026-02-24 11:23:41 +01:00
2026-01-30 17:18:13 +01:00
2026-02-12 12:41:12 +01:00
2026-01-16 09:57:45 +01:00
2026-01-16 09:57:45 +01:00
2026-02-24 11:23:41 +01:00
2024-11-19 17:16:37 +01:00
2024-11-19 17:16:37 +01:00
2026-03-08 13:39:53 +13:00
2023-05-19 08:16:05 +12:00
2026-02-24 11:23:41 +01:00
2026-03-08 13:39:53 +13:00
2025-11-26 19:13:21 +01:00
2025-11-26 19:13:21 +01:00
2023-05-19 08:16:05 +12:00
2026-02-24 11:23:41 +01:00
2026-02-24 11:23:41 +01:00
2025-09-01 11:50:46 +02:00
2026-02-24 11:23:41 +01:00
2024-11-22 09:54:34 +01:00
2024-11-22 09:54:34 +01:00
2026-02-19 14:33:01 +01:00
2026-02-19 14:33:01 +01:00
2023-12-17 17:20:35 +01:00
2026-02-24 11:23:41 +01:00
2026-02-24 11:23:41 +01:00
2024-11-08 11:46:27 +01:00