feat/plip-mic-capture
main
- audio.c: add full-duplex I2S RX channel (s_mic_handle, GPIO35/ASDOUT) enabled at boot alongside TX; streaming capture API with VAD (audio_capture_begin/read_frame/end) avoids large buffer allocation - audio.h: export streaming capture API - es8388.c: fix ADC register addresses (ADCCONTROL2=0x0A, 3=0x0B, 4=0x0C, 5=0x0D, 8=0x10, 9=0x11 — were off by 1 from Espressif reference); CHIP_CTL1=0x12 (record+play), DACCONTROL21=0xC0 (ADC+DAC LRCK sync), ADCPOWER=0x09, FSM restart pulse (CHIPPOWER 0xF0→0x00) after CTL21 write; fix set_volume() to use OUT1 volume regs (0x2E/0x2F) not clock-sync reg 0x2B - net.c: POST /voice/capture streaming WAV handler (chunked, 44-byte header + PCM frames, VAD onset/silence, query params max_ms/silence_ms); GET /debug/regs for live ES8388 register dump (diagnostic aid) - board_config.h: PLIP_I2S_DIN=GPIO35 (ES8388 ASDOUT) Build: clean. Endpoint functional (200 OK, valid WAV structure). RX data currently silent — suspected hardware issue (mic not connected to LIN1/LIN2 on this specific kit instance); firmware implementation complete.