mirror of
https://github.com/torlando-tech/pyxis.git
synced 2026-10-22 14:01:24 +00:00
12fd28b67cbdf3154a75b11e9149aa01d88aca68
Extends the LXST harness from frame-flow only (#62) and decoder QoS only (#63) to a full content-fidelity test: a known 1kHz sine wave flows in BOTH directions through the Codec2-3200 round-trip, and the harness asserts the decoded RMS at each end matches expected energy within tolerance (after Codec2's lossy speech-codec behavior). Firmware additions (under PYXIS_TEST_HOOKS): I2SCapture setInjectSine(enabled, freq=1000, amp=0.5) Replaces mic input with a phase-continuous synthesized sine. Bypasses ES7210 capture and the voice filter chain so the encoder sees pure samples — peer's decoded RMS validates that pyxis's TX path delivers content. I2SPlayback pcmSampleCount(), pcmSumSquares() Decoded-PCM energy accumulators, fed from each successful Codec2 decode. uint64 sumsq holds ~2³⁴ frames before overflow, far longer than any test call. LXSTAudio + UIManager (test-only) captureSetInjectSine, playbackPcmSampleCount, playbackPcmSumSquares test_call_set_inject_sine, test_call_pcm_sample_count, test_call_pcm_sum_squares Serial T: hooks (main.cpp) T:CALL_INJECT <on|off> [freq] [amp_pct] Drive the capture-side injection from the harness. T:CALL_QOS now also returns pcm_n + pcm_ss Harness divides + sqrts to RMS for content validation. Validated with /tmp/lxst_call_harness.py + /tmp/lxst_call_bot.py (scripts vault-local per the no-PII rule): pyxis_rms = 6363, bot_rms = 1930, decode_fail = 0 PASS: bidirectional audio + content-fidelity validated The empirical RMS floor is 800 (pycodec2 self-test on 1kHz amp 0.5 yields ~1400; pyxis decoder hits ~6300; bot decoder hits ~1900 — all far above the ~5-50 silence floor). Codec2 is a speech codec so pure-tone round-trip is naturally lossy; the test gates on "audio bytes carry actual content energy", not lossless round-trip. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Pyxis
An LXMF and LXST client firmware for T-Deck, built on a highly modified fork of microReticulum
Very much WIP, don't expect stability :)
Features
Reticulum transport over:
- RNode-compatible LoRa
- AutoInterface (local wifi)
- TCP Client
- BLE Interface (barely working if at all)
Other features:
- GPS-synced time
- One really annoying beep when you get a new message (user toggle)
- View the announce stream
- Choose a propagation node (and sync with it) (fixed in v0.2.1)
- Set auto announce timer
- Light up keyboard (user toggle)
Will crash in about 5 minutes of normal use (sorry)I had 5d uptime on v0.2.0 with BLE disabled- Make LXST voice calls (codec2 only, quality sounds horrible coming out the other end in Columba, needs work)
Why "Pyxis"
Pyxis, latin for "compass," is a constellation in the southern sky depicting a mariner's compass. Small but essential, the compass ensures every message finds its destination - even when the path is uncertain.
Languages
C++
47%
C
40.3%
Python
10.7%
JavaScript
1%
mupad
0.7%
Other
0.2%