Add internet radio streaming with runtime API, modernize web UI, remove auto-tune/beep at boot
Streaming (main feature this session): - New WebRadioConfig/WebRadioJson core types, ISecureStore-backed persistence - New webradio::WebRadioService (thread-safe live config) + GET/POST /api/streaming - web_radio_stream task now runtime-toggleable (no reboot), no hardcoded URL - Content-Type diagnostic: warns clearly when a URL is a webpage, not an audio stream Boot cleanup: - Removed boot-time auto FM/DAB tune, auto-beep, and the (now-concluded) Si4684 crystal IBIAS/CTUN empirical sweep from main.cpp — tuning/beep are on-demand via the existing REST API only Web UI: - Modernized styling (cards, gradients, toggle switches, light/dark theme) - New Stream tab wired to /api/streaming Fixes found via real idf.py build (not just clangd): - Restored wrongly-removed si4684/Si4684Tuner.hpp include in main.cpp - Fixed MP3Decode() argument types in web_radio_stream.cpp (unsigned char**/int*) Quality-gate fixes: - Host-test stub headers (esp_log.h, freertos/*) so TunerService.cpp's scanForStation logging/pacing compiles for station_service_test / integration_service_test instead of running stale binaries - Added WifiScanner and WebRadioService manual sections; filled in missing Doxygen docs on BluetoothService, i2s_sdata_probe, test_firmware, Bt1035At - Ignore clangd's .cache/ index directory Also includes prior uncommitted work carried in the tree: Wi-Fi/Bluetooth device scan REST API and UI (WifiScanner, BT scan), SigmaStudio TCP bridge, and the current ADAU1701 SigmaStudio DSP program export. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- *
|
||||
* This software is distributed in the hope that it will be useful,
|
||||
* but is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
||||
* CONDITIONS OF ANY KIND, without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* This software may only be used to program products purchased from
|
||||
* Analog Devices for incorporation by you into audio products that
|
||||
* are intended for resale to audio product end users. This software
|
||||
* may not be distributed whole or in any part to third parties.
|
||||
*
|
||||
* Copyright © 2026 Analog Devices, Inc. All rights reserved.
|
||||
*/
|
||||
-->
|
||||
<!--NetList XML file-->
|
||||
<NetList>
|
||||
<IC name=" IC 1 " type="DSPSigma100">
|
||||
<Schematic>
|
||||
<Algorithm name="ICSigma100In1" friendlyname="170x\140x input " cell="Input1 " location="{X=-15, Y=104} " Growth="10 " GrowthB="0 " FS="48000">
|
||||
<Link pin="O_C33_A0_P3_out" dir="out" link="Link0" />
|
||||
<Link pin="O_C33_A0_P4_out" dir="out" link="Link1" />
|
||||
<Link pin="O_C33_A0_P5_out" dir="out" link="Link2" />
|
||||
<Link pin="O_C33_A0_P6_out" dir="out" link="Link3" />
|
||||
</Algorithm>
|
||||
<Algorithm name="BeepAlg1" friendlyname="Beep - variable gain " cell="Beep1 " location="{X=933, Y=138} " Growth="0 " GrowthB="0 " FS="48000">
|
||||
<Link pin="O_C0_A0_P1_out" dir="out" link="Link15" />
|
||||
</Algorithm>
|
||||
<Algorithm name="Gain1940AlgNS1" friendlyname="Gain (no slew) " cell="Si4674 " location="{X=168, Y=5} " Growth="0 " GrowthB="0">
|
||||
<Link pin="I_C63_A0_P1_in" dir="in" link="Link0" />
|
||||
<Link pin="O_C63_A0_P2_out" dir="out" link="Link4" />
|
||||
</Algorithm>
|
||||
<Algorithm name="Gain1940AlgNS2" friendlyname="Gain (no slew) " cell="Si4674 " location="{X=168, Y=5} " Growth="0 " GrowthB="0">
|
||||
<Link pin="I_C63_A1_P1_in" dir="in" link="Link1" />
|
||||
<Link pin="O_C63_A1_P2_out" dir="out" link="Link5" />
|
||||
</Algorithm>
|
||||
<Algorithm name="Gain1940AlgNS3" friendlyname="Gain (no slew) " cell="ESP32 " location="{X=166, Y=196} " Growth="0 " GrowthB="0">
|
||||
<Link pin="I_C75_A0_P1_in" dir="in" link="Link2" />
|
||||
<Link pin="O_C75_A0_P2_out" dir="out" link="Link6" />
|
||||
</Algorithm>
|
||||
<Algorithm name="Gain1940AlgNS4" friendlyname="Gain (no slew) " cell="ESP32 " location="{X=166, Y=196} " Growth="0 " GrowthB="0">
|
||||
<Link pin="I_C75_A1_P1_in" dir="in" link="Link3" />
|
||||
<Link pin="O_C75_A1_P2_out" dir="out" link="Link7" />
|
||||
</Algorithm>
|
||||
<Algorithm name="ICSigma100Out1" friendlyname="170x\140x output " cell="Output1 " location="{X=1127, Y=55} " Growth="0 " GrowthB="0">
|
||||
<Link pin="I_C183_A0_P1_in" dir="in" link="Link15" />
|
||||
</Algorithm>
|
||||
<Algorithm name="StereoMixerAlg1" friendlyname="Stereo Mixer " cell="St Mixer1 " location="{X=381, Y=115} " Growth="2 " GrowthB="0">
|
||||
<Link pin="I_C84_A0_P3_in" dir="in" link="Link4" />
|
||||
<Link pin="I_C84_A0_P4_in" dir="in" link="Link5" />
|
||||
<Link pin="I_C84_A0_P5_in" dir="in" link="Link6" />
|
||||
<Link pin="I_C84_A0_P6_in" dir="in" link="Link7" />
|
||||
<Link pin="O_C84_A0_P1_out" dir="out" link="Link8" />
|
||||
<Link pin="O_C84_A0_P2_out" dir="out" link="Link9" />
|
||||
</Algorithm>
|
||||
<Algorithm name="PEQ1Chan1" friendlyname="PEQ1Chan - Double Precision " cell="Param EQ1 " location="{X=502, Y=156} " Growth="2 " GrowthB="0">
|
||||
<Link pin="I_C125_A0_P1_in" dir="in" link="Link8" />
|
||||
<Link pin="I_C125_A0_P3_in" dir="in" link="Link9" />
|
||||
<Link pin="O_C125_A0_P2_out" dir="out" link="Link10" />
|
||||
<Link pin="O_C125_A0_P4_out" dir="out" link="Link11" />
|
||||
</Algorithm>
|
||||
<Algorithm name="Gain1940AlgNS5" friendlyname="Gain (no slew) " cell="Multiple 1 " location="{X=628, Y=88} " Growth="0 " GrowthB="0">
|
||||
<Link pin="I_C138_A0_P1_in" dir="in" link="Link10" />
|
||||
<Link pin="O_C138_A0_P2_out" dir="out" link="Link12" />
|
||||
</Algorithm>
|
||||
<Algorithm name="Gain1940AlgNS6" friendlyname="Gain (no slew) " cell="Multiple 1 " location="{X=628, Y=88} " Growth="0 " GrowthB="0">
|
||||
<Link pin="I_C138_A1_P1_in" dir="in" link="Link11" />
|
||||
<Link pin="O_C138_A1_P2_out" dir="out" link="Link13" />
|
||||
</Algorithm>
|
||||
<Algorithm name="limiterAlg1" friendlyname="Limiter with Indicator " cell="Limiter 1 " location="{X=761, Y=40} " Growth="0 " GrowthB="0">
|
||||
<Link pin="I_C169_A0_P1_in" dir="in" link="Link12" />
|
||||
</Algorithm>
|
||||
<Algorithm name="limiterAlg2" friendlyname="Limiter with Indicator " cell="Limiter 2 " location="{X=765, Y=189} " Growth="0 " GrowthB="0">
|
||||
<Link pin="I_C174_A0_P1_in" dir="in" link="Link13" />
|
||||
<Link pin="O_C174_A0_P2_out" dir="out" link="Link14" />
|
||||
</Algorithm>
|
||||
<Algorithm name="ICSigma100Out2" friendlyname="170x\140x output " cell="Output2 " location="{X=890, Y=227} " Growth="0 " GrowthB="0">
|
||||
<Link pin="I_C185_A0_P1_in" dir="in" link="Link14" />
|
||||
</Algorithm>
|
||||
</Schematic>
|
||||
</IC>
|
||||
</NetList>
|
||||
Reference in New Issue
Block a user