removed docs folder: contents lives in respective scopes directly now

This commit is contained in:
Mikkeli Matlock
2026-02-15 22:14:35 +09:00
parent 37bdc8bb1b
commit 1140de0fd4

View File

@@ -1,87 +0,0 @@
# Alarm Audio Streaming Protocol
## Overview
The Raspberry Pi streams alarm audio to the ESP32-S3 over a dedicated WebSocket connection on **port 8766**. The protocol uses mixed text and binary frames — text for control messages, binary for raw PCM data.
## Connection
| Parameter | Value |
|-----------|-------|
| Port | 8766 |
| Transport | WebSocket |
| Direction | Pi (server) → ESP32 (client) |
The ESP32 connects and stays connected. The server initiates alarm playback when needed.
## Message Sequence
```
Pi ESP32
│ │
│◄──── WS connect ──────────│
│ │
│ (idle until alarm fires) │
│ │
├─ alarm_start (text) ──────►│ → open codec
├─ PCM chunk (binary) ──────►│ → queue + play
├─ PCM chunk (binary) ──────►│
│ ... │
├─ alarm_stop (text) ────────►│ → drain + close codec
│ │
```
## Control Messages (Text Frames)
### alarm_start
Sent before the first PCM chunk. The ESP32 uses these parameters to configure the DAC.
```json
{
"type": "alarm_start",
"sample_rate": 24000,
"channels": 2,
"bits": 16
}
```
### alarm_stop
Sent after the last PCM chunk.
```json
{
"type": "alarm_stop"
}
```
## PCM Data (Binary Frames)
- **Format:** Raw signed 16-bit little-endian, interleaved stereo (L, R, L, R, ...)
- **Chunk size:** 4096 bytes (1024 stereo samples at 16-bit)
- **Pacing:** Chunks sent at ~90% real-time speed to maintain buffer without overflow
- **Byte order:** Little-endian (native for both Pi and ESP32)
At 24kHz / 2ch / 16-bit:
- Bytes per second: 96,000
- Chunk duration: ~42.7 ms
- Send interval: ~38.4 ms (90% pacing)
## ESP32 Buffering
- FreeRTOS queue: 10 slots of pointer-to-chunk
- Total buffer capacity: ~427 ms of audio
- Overflow policy: drop chunk and log warning
## Future: Alarm Scheduling
Not yet implemented. Planned JSON format for alarm configuration:
```json
{
"alarm_time": "070000",
"alarm_days": ["Mon", "Tue", "Wed"],
"alarm_audio": "path/to/file.wav"
}
```