Add telephony and web server functionality
- Implement TelephoneSFPManager to manage telephony service interactions. - Create TelephonyService class to handle telephony states and actions. - Develop WebServerManager for handling HTTP requests and managing contacts. - Add HTML, CSS, and JavaScript files for the web UI to interact with the telephony system. - Introduce WifiManager for managing WiFi connections. - Implement unit tests for telephony features and state transitions. - Ensure proper input validation and error handling in web server routes.
This commit is contained in:
@@ -1,6 +1,75 @@
|
||||
# RTC_BL_PHONE
|
||||
|
||||
Projet PlatformIO ESP32 pour recycler un téléphone RTC ancien (combiné, clavier, hook), avec intégration Bluetooth HFP pour les appels (émission/réception).
|
||||
Projet ESP32 : téléphone RTC, SLIC, audio, Bluetooth, WiFi, agentic.
|
||||
|
||||
## CI/CD automatisé
|
||||
Le pipeline CI/CD est géré par GitHub Actions et PlatformIO :
|
||||
|
||||
- **Déclenchement** : à chaque push ou pull request sur `main` ou `develop`.
|
||||
- **Build** : compilation automatique du firmware via PlatformIO.
|
||||
- **Tests** : exécution des tests unitaires avec `platformio test`.
|
||||
- **Artefacts** : génération et upload automatique des binaires compilés.
|
||||
- **Couverture** : rapport de couverture (optionnel, si supporté).
|
||||
- **Livraison** : artefacts accessibles dans l’onglet Actions > workflow CI PlatformIO.
|
||||
|
||||
### Structure du workflow
|
||||
Le fichier `.github/workflows/ci.yml` contient :
|
||||
|
||||
```yaml
|
||||
name: CI PlatformIO
|
||||
on:
|
||||
push:
|
||||
branches: [ main, develop ]
|
||||
pull_request:
|
||||
branches: [ main, develop ]
|
||||
jobs:
|
||||
build-test:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v3
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: '3.10'
|
||||
- name: Install PlatformIO
|
||||
run: pip install platformio
|
||||
- name: Run PlatformIO tests
|
||||
run: platformio test
|
||||
- name: Build firmware
|
||||
run: platformio run
|
||||
- name: Upload firmware artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: firmware
|
||||
path: .pio/build/*/*.bin
|
||||
# Optionnel: Génération de la couverture si supportée
|
||||
# - name: Generate coverage report
|
||||
# run: platformio test --coverage
|
||||
# - name: Upload coverage artifact
|
||||
# uses: actions/upload-artifact@v3
|
||||
# with:
|
||||
# name: coverage
|
||||
# path: coverage-report/*
|
||||
```
|
||||
|
||||
### Livraison
|
||||
Après chaque build, les binaires sont disponibles en téléchargement dans les artefacts du workflow.
|
||||
|
||||
### Tests
|
||||
Les tests sont lancés automatiquement à chaque commit. Voir les rapports dans l’onglet Actions.
|
||||
|
||||
### Références
|
||||
- [PlatformIO CI Docs](https://docs.platformio.org/en/latest/ci/index.html)
|
||||
- [GitHub Actions Docs](https://docs.github.com/en/actions)
|
||||
|
||||
## Notifications CI/CD
|
||||
- Le pipeline CI/CD envoie des notifications sur les statuts (succès, échec) via GitHub Actions.
|
||||
- Possibilité d’ajouter des notifications Slack ou email (voir .github/workflows/ci.yml).
|
||||
|
||||
---
|
||||
|
||||
_Agent Repo & GitHub – README généré automatiquement._
|
||||
|
||||
## Démarrage rapide
|
||||
1. Ouvrir le dossier dans PlatformIO.
|
||||
@@ -36,3 +105,204 @@ Voir `docs/solutions_rtc_phone_esp32.md` pour la shortlist des DevKit utilisable
|
||||
|
||||
## Plan projet (chef de projet)
|
||||
Voir `docs/plan_chef_projet_esp32s3_ag1171s.md` pour le planning en phases, les risques, les critères d'acceptation et les livrables de la version ESP32-S3 + AG1171S.
|
||||
|
||||
## Audio embarqué et lecture MP3
|
||||
|
||||
### Librairie Audio Tools
|
||||
Le projet intègre la librairie [Audio Tools](https://github.com/pschatzmann/arduino-audio-tools) pour la lecture MP3/WAV sur ESP32 via I2S (PCM5102, ES8388, DAC interne).
|
||||
|
||||
### Exemple d'utilisation
|
||||
Lecture automatique d'un fichier MP3 sur carte SD (voir `src/AudioFilePlayer.h/.cpp` et intégration dans `main.cpp`) :
|
||||
|
||||
```cpp
|
||||
#include <AudioFilePlayer.h>
|
||||
|
||||
AudioFilePlayer audioFilePlayer;
|
||||
|
||||
void setup() {
|
||||
Serial.begin(115200);
|
||||
if (audioFilePlayer.begin()) {
|
||||
audioFilePlayer.play("/test.mp3");
|
||||
}
|
||||
}
|
||||
|
||||
void loop() {
|
||||
audioFilePlayer.loop();
|
||||
}
|
||||
```
|
||||
|
||||
### Validation
|
||||
- Test lecture MP3 sur hardware ESP32 (SD, I2S, codec)
|
||||
- Routage audio, volume, mute
|
||||
- Logs série pour débogage
|
||||
|
||||
Voir aussi la fiche agent : `docs/fiche_agent_audio_tools.md`
|
||||
|
||||
## Arborescence du projet (2026)
|
||||
|
||||
```
|
||||
src/
|
||||
main.cpp
|
||||
AudioCodec.cpp/h
|
||||
AudioFilePlayer.cpp/h
|
||||
bluetooth/
|
||||
BluetoothManager.cpp/h
|
||||
wifi/
|
||||
WifiManager.cpp/h
|
||||
web/
|
||||
WebServerManager.cpp/h
|
||||
rtos/
|
||||
RTOSManager.cpp/h
|
||||
power/
|
||||
PowerManager.cpp/h
|
||||
```
|
||||
|
||||
## Stacks embarquées
|
||||
|
||||
---
|
||||
|
||||
## Documentation technique des modules principaux
|
||||
|
||||
### 1. AudioManager
|
||||
**Fichiers** : src/audio/AudioManager.cpp, src/audio/AudioManager.h
|
||||
|
||||
#### Interfaces
|
||||
- `AudioManager` expose des méthodes pour l'initialisation, la gestion des flux audio, le contrôle du volume, et la sélection des sources.
|
||||
- Interface principale :
|
||||
- `init()` : initialise le module audio
|
||||
- `start()` / `stop()` : démarre ou arrête le flux audio
|
||||
- `setVolume(int level)` : ajuste le volume
|
||||
- `selectSource(AudioSource src)` : sélectionne la source (micro, fichier, etc.)
|
||||
|
||||
#### Flux de données
|
||||
- Entrées : sources audio (microphone, fichiers, Bluetooth)
|
||||
- Traitement : conversion, mixage, contrôle du volume
|
||||
- Sorties : haut-parleur, enregistrement, transmission (Bluetooth, Web)
|
||||
|
||||
#### Scénarios d’utilisation
|
||||
- Lecture audio locale
|
||||
- Streaming Bluetooth
|
||||
- Enregistrement et restitution
|
||||
|
||||
#### Exemple d’intégration
|
||||
```cpp
|
||||
#include "audio/AudioManager.h"
|
||||
AudioManager audio;
|
||||
audio.init();
|
||||
audio.selectSource(AudioSource::MIC);
|
||||
audio.setVolume(80);
|
||||
audio.start();
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 2. RTOSManager
|
||||
**Fichiers** : src/rtos/RTOSManager.cpp, src/rtos/RTOSManager.h
|
||||
|
||||
#### Interfaces
|
||||
- Gestion des tâches, synchronisation, timers.
|
||||
- Interface principale :
|
||||
- `createTask(void (*taskFunc)(void*), const char* name)` : création de tâche
|
||||
- `startScheduler()` : démarrage du scheduler
|
||||
- `delay(uint32_t ms)` : temporisation
|
||||
|
||||
#### Flux de données
|
||||
- Entrées : fonctions de tâches, signaux d’événements
|
||||
- Traitement : planification, synchronisation, gestion des priorités
|
||||
- Sorties : exécution des tâches, notifications
|
||||
|
||||
#### Scénarios d’utilisation
|
||||
- Multitâche (audio, Bluetooth, web, etc.)
|
||||
- Synchronisation entre modules
|
||||
- Gestion des timers pour actions périodiques
|
||||
|
||||
#### Exemple d’intégration
|
||||
```cpp
|
||||
#include "rtos/RTOSManager.h"
|
||||
RTOSManager rtos;
|
||||
rtos.createTask(audioTask, "AudioTask");
|
||||
rtos.startScheduler();
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 3. BluetoothManager
|
||||
**Fichiers** : src/bluetooth/BluetoothManager.cpp, src/bluetooth/BluetoothManager.h
|
||||
|
||||
#### Interfaces
|
||||
- Gestion du Bluetooth (connexion, transmission, réception)
|
||||
- Interface principale :
|
||||
- `init()` : initialise le module Bluetooth
|
||||
- `connect(const char* device)` : connexion à un périphérique
|
||||
- `sendData(const uint8_t* data, size_t len)` : envoi de données
|
||||
- `onReceive(void (*callback)(const uint8_t*, size_t))` : callback de réception
|
||||
|
||||
#### Flux de données
|
||||
- Entrées : commandes de connexion, données à transmettre
|
||||
- Traitement : gestion du protocole, encodage, sécurité
|
||||
- Sorties : données reçues, notifications d’état
|
||||
|
||||
#### Scénarios d’utilisation
|
||||
- Streaming audio via Bluetooth
|
||||
- Commandes distantes
|
||||
- Synchronisation avec smartphone ou périphérique externe
|
||||
|
||||
#### Exemple d’intégration
|
||||
```cpp
|
||||
#include "bluetooth/BluetoothManager.h"
|
||||
BluetoothManager bt;
|
||||
bt.init();
|
||||
bt.connect("DeviceName");
|
||||
bt.sendData(buffer, length);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Résumé des fichiers modifiés/créés
|
||||
- README.md : ajout de la documentation technique détaillée des modules AudioManager, RTOSManager, BluetoothManager.
|
||||
|
||||
Pour une documentation approfondie, voir aussi les fichiers dans `docs/` (fiche_agent_audio_tools.md, fiche_agent_embarque_stack.md).
|
||||
|
||||
Voir la fiche agent : `docs/fiche_agent_embarque_stack.md`
|
||||
|
||||
## Tests unitaires et robustesse RTC_BL_PHONE
|
||||
|
||||
### Couverture de code
|
||||
|
||||
Pour générer le rapport de couverture :
|
||||
|
||||
```bash
|
||||
bash scripts/gen_coverage.sh
|
||||
```
|
||||
|
||||
Le rapport HTML sera disponible dans `coverage/html`.
|
||||
|
||||
### Types de tests ajoutés
|
||||
- Tests de stress (boucles intensives)
|
||||
- Edge cases (cas limites)
|
||||
- Tests de gestion mémoire (allocation/libération)
|
||||
- Tests de thread safety (multithreading)
|
||||
- Tests d’interaction entre modules (ex : AudioManager ↔ BluetoothManager)
|
||||
|
||||
### Fichiers de tests modifiés
|
||||
- test/test_audio_codec.cpp
|
||||
- test/test_audio_file_player.cpp
|
||||
- test/test_AudioManager.cpp
|
||||
- test/test_LectureAudioManager.cpp
|
||||
- test/test_SLICManager.cpp
|
||||
- test/test_TelephoneSFPManager.cpp
|
||||
|
||||
### Script de couverture
|
||||
- scripts/gen_coverage.sh
|
||||
|
||||
### Exécution
|
||||
Lancez les tests avec PlatformIO :
|
||||
|
||||
```bash
|
||||
pio test
|
||||
```
|
||||
|
||||
Puis générez le rapport de couverture.
|
||||
|
||||
### Objectif
|
||||
Ces ajouts permettent de valider la robustesse, la gestion mémoire, la sécurité multithread et les interactions entre modules, tout en mesurant la couverture des tests.
|
||||
|
||||
Reference in New Issue
Block a user