From d83a6a3ceb3bd7dc7c96bfe061c9cbd5b8c6ab15 Mon Sep 17 00:00:00 2001 From: mikecarper Date: Sat, 17 Oct 2026 17:40:40 -0700 Subject: [PATCH] Fit Tiny Relay Companion while retaining GPIO and storage --- test/test_ed25519_compact_field.py | 1 + test/test_ed25519_compact_scalar.py | 1 + test/test_stm32_companion_profile.py | 12 ++++++++++++ variants/tiny_relay/platformio.ini | 5 +++++ 4 files changed, 19 insertions(+) diff --git a/test/test_ed25519_compact_field.py b/test/test_ed25519_compact_field.py index e5a2de421..0f831146d 100644 --- a/test/test_ed25519_compact_field.py +++ b/test/test_ed25519_compact_field.py @@ -233,6 +233,7 @@ int main(void) { profiles.append((ini.parent.name, section)) self.assertEqual(sorted(profiles), [ ("rak3x72", "[env:RAK_3x72_companion_radio_usb]"), + ("tiny_relay", "[env:Tiny_Relay_companion_radio_usb]"), ("wio-e5-dev", "[env:wio-e5_companion_radio_usb]"), ("wio-e5-mini", "[env:wio-e5-mini_companion_radio_usb]"), ]) diff --git a/test/test_ed25519_compact_scalar.py b/test/test_ed25519_compact_scalar.py index a50a505dc..222fb5bda 100644 --- a/test/test_ed25519_compact_scalar.py +++ b/test/test_ed25519_compact_scalar.py @@ -139,6 +139,7 @@ int main(void) { profiles.append((ini.parent.name, section)) self.assertEqual(sorted(profiles), [ ("rak3x72", "[env:RAK_3x72_companion_radio_usb]"), + ("tiny_relay", "[env:Tiny_Relay_companion_radio_usb]"), ("wio-e5-dev", "[env:wio-e5_companion_radio_usb]"), ("wio-e5-mini", "[env:wio-e5-mini_companion_radio_usb]"), ]) diff --git a/test/test_stm32_companion_profile.py b/test/test_stm32_companion_profile.py index f25d1b6df..d2b2b11b1 100644 --- a/test/test_stm32_companion_profile.py +++ b/test/test_stm32_companion_profile.py @@ -61,6 +61,18 @@ class STM32CompanionProfileTest(unittest.TestCase): r"-D\s+ED25519_COMPACT_" + definition + r"=1\b") +class TinyRelaySTM32CompanionProfileTest(STM32CompanionProfileTest): + variant = "tiny_relay" + target = "Tiny_Relay_companion_radio_usb" + base = "Tiny_Relay" + + def test_relay_gpio_and_adc_monitor_are_retained(self): + header = (ROOT / "variants" / self.variant / "target.h").read_text() + self.assertIn("digitalWrite(PA0, values & 1)", header) + self.assertIn("digitalWrite(PA1, (values & 2) >> 1)", header) + self.assertIn("analogRead(PIN_VBAT_READ)", header) + + class WioDevSTM32CompanionProfileTest(STM32CompanionProfileTest): variant = "wio-e5-dev" target = "wio-e5_companion_radio_usb" diff --git a/variants/tiny_relay/platformio.ini b/variants/tiny_relay/platformio.ini index dbae4c1c6..d7526bfbd 100644 --- a/variants/tiny_relay/platformio.ini +++ b/variants/tiny_relay/platformio.ini @@ -72,7 +72,12 @@ extends = Tiny_Relay platform_packages = platformio/toolchain-gccarmnoneeabi@^1.140201.0 build_unflags = -Os build_flags = ${Tiny_Relay.build_flags} + ; GPIO relay controls and ADC monitoring do not use PWM/tone timers. + -D RADIOLIB_TONE_UNSUPPORTED + -D HAL_TIM_MODULE_ONLY -D ED25519_COMPACT_SHA512=1 ; same hash rounds, compact loop preserves the filesystem boundary + -D ED25519_COMPACT_SCALAR=1 ; equivalent fixed-loop arithmetic preserves Companion capacities + -D ED25519_COMPACT_FIELD=1 ; share field products without moving the filesystem boundary -Oz -flto -fno-inline-small-functions