- Expose secondary multicaster status in /status endpoint with dedicated "secondary" block containing runtime and persisted settings
- Initialize Radio 2 checkbox state from backend streaming status to reflect active state on frontend load
- Add I2C register verification after write operations with i2cget to confirm configuration
- Set ADC mixer level to 60% on startup via amixer command
- Preserve backward compatibility by
- Added "Analog" mode to audio source options alongside Demo, USB, and Network
- Implemented dual-radio support for analog inputs (Radio 1 and Radio 2) with separate quality, timing, and metadata settings
- Filter analog devices (ch1/ch2) from USB device list to prevent conflicts between modes
- Added per-radio controls for stream quality, broadcast code, assistive listening flags, presentation delay, and RTN
- Introduce
- Removed StreamerWorker thread wrapper in favor of direct async operations with module-level multicaster instances
- Split settings persistence into primary and secondary caches (SETTINGS_CACHE1/2) with dedicated load/save functions
- Removed unused imports and simplified initialization logic by inlining worker coroutines into API endpoints
- Added PCM1862 I2S interface setup with differential input configuration via I2C
- Reduced audio buffer latency by decreasing period_size from 240 to 120 samples (5ms to 2.5ms)
- Updated buffer_size to 360 samples for both channels to maintain stable audio capture
- Changed static_drop_ms from drift_threshold_ms to 2ms for more accurate frame dropping behavior
- Removed outdated cooldown comment that no longer matches the implementation
- Replaced complex multi-PCM asound.conf with streamlined dsnoop-based ch1/ch2 devices using matched 5ms periods
- Updated sounddevice utilities to recognize dsnoop and hw:X,Y patterns for better device filtering
- Adjusted audio input latency parameters to align with new ALSA period configuration