7da6ea37e7
- Added AudioEngine integration to BluetoothManager for audio handling. - Implemented auto-reconnect functionality with enabling/disabling options. - Introduced methods for managing audio state and HFP events. - Updated BluetoothManager's internal state management for better audio handling. refactor: Update A252ConfigStore to improve pin validation logic - Renamed critical_pins to required_pins for clarity. - Added optional legacy line-enable pin validation. - Improved error handling for pin conflicts and invalid ranges. fix: Adjust default volume and slic_line configuration in A252ConfigStore - Set default slic_line to -1 to indicate retirement. - Increased default audio volume from 80 to 90. feat: Implement audio amplifier control in main application - Added commands to enable/disable audio amplifier via GPIO. - Integrated audio amplifier control into the setup process. fix: Improve ESP-NOW and WiFi coexistence policies - Enforced modem sleep for better coexistence between WiFi and Bluetooth. - Added checks to ensure proper WiFi mode before enforcing coexistence. feat: Enhance TelephonyService with DTMF and pulse dialing support - Added DTMF capture and processing capabilities. - Implemented rotary pulse dialing logic with state management. - Introduced callbacks for dialing and answering actions. feat: Add real-time event publishing to WebServerManager - Enabled real-time status updates via SSE. - Improved status caching and thread safety with critical sections. fix: General code cleanup and optimizations across modules - Refactored various methods for better readability and maintainability. - Improved error handling and logging for better debugging.
5.4 KiB
5.4 KiB
Spécification Bluetooth Téléphonie — HFP + PBAP + Numérotation (v1)
Date: 2026-02-21
Repo: electron-rare/RTC_BL_PHONE
1. Contexte
Le firmware expose des commandes Bluetooth (BT_HFP_CONNECT, BT_STATUS, etc.) mais la liaison HFP réelle n'est pas encore validée de bout en bout avec un téléphone.
Le besoin produit inclut explicitement:
- audio d'appel + états d'appel (HFP),
- synchronisation des contacts (PBAP),
- numérotation depuis le firmware (AT/HFP) avec session HFP active.
2. Objectif
Livrer une stack Bluetooth téléphonie réellement opérationnelle sur ESP32 Audio Kit:
- HFP réel fonctionnel (pas seulement commandes firmware),
- synchronisation contacts via PBAP,
- numérotation sortante via commandes HFP/AT.
2-bis. État d’implémentation (snapshot 2026-02-21)
- HFP commandes firmware: implémenté (
BT_HFP_CONNECT,BT_HFP_DISCONNECT,BT_DISCOVERABLE_ON/OFF,BT_STATUS). - Politique de reconnexion: si un peer bondé est trouvé au boot, le firmware planifie la reconnexion HFP automatiquement.
- Politique runtime:
BT_AUTO_RECONNECT_ON/OFFpermet de forcer le mode autoradio en live. - Numérotation/contrôle appel via HFP AT: implémenté côté firmware:
BT_DIAL <number>/ aliasDIAL <number>BT_REDIALBT_ANSWERBT_HANGUPBT_CALLS(queryAT+CLCC)BT_STATUSexpose maintenantslc_connected,call_state,last_dialed_number.- PBAP (contacts): non disponible sur la stack actuelle
arduino-esp32(Bluedroid exposé sans API PBAP côté firmware). La commandeBT_PBAP_SYNCretourne explicitementunsupported. - Audio local RTC: tonalité de numérotation calée à
425 Hz(couleur France/Europe), niveau renforcé. - Wiring bench verrouillé:
RM=GPIO18,FR=GPIO5,SHK=GPIO23,PD=GPIO19AMP_EN=GPIO21actif bas (LOW=ON)LINEretiré du runtime (non utilisé).
3. Périmètre
In-scope:
- Profil HFP (connexion RFCOMM/SLC + audio link),
- Profil PBAP (récupération carnet/adresses utiles),
- Commandes de numérotation et contrôle d'appel via HFP/AT,
- Validation réelle sur téléphone (iOS/macOS/Android selon disponibilité banc).
Out-of-scope v1:
- streaming musique A2DP,
- UI avancée carnet (recherche/favoris), hors MVP téléphonie.
4. Exigences fonctionnelles
EF-01 — HFP réel
- Le firmware DOIT établir une session HFP réelle avec un téléphone compatible.
BT_STATUSDOIT refléter:connected=trueaprès connexion RFCOMM/SLC,hfp_active=truelorsque l'audio HFP est actif.- Les commandes
BT_HFP_CONNECTetBT_HFP_DISCONNECTDOIVENT piloter la session réelle. - Le firmware DOIT exposer un contrôle runtime du mode auto reconnect (
BT_AUTO_RECONNECT_ON/OFFet statut viaBT_STATUS).
EF-02 — PBAP contacts
- Le firmware DOIT récupérer un sous-ensemble de contacts via PBAP.
- Les métadonnées minimales DOIVENT inclure:
display_name,phone_number. - La synchro DOIT gérer:
- premier chargement,
- rafraîchissement,
- erreur d'accès/pairing (message explicite).
EF-03 — Numérotation
- Le firmware DOIT exposer une commande de numérotation sortante (ex:
DIAL <number>). - La numérotation DOIT accepter la demande même si SLC n'est pas encore monté:
- mettre le numéro en file d'attente,
- déclencher/reprendre la connexion HFP,
- émettre automatiquement le
dialdèsSLC_CONNECTED.
- Les transitions d'appel DOIVENT être visibles dans
STATUS/BT_STATUS(idle, dialing, ringing, active, ended).
EF-04 — Compatibilité pairing
- L'appareil DOIT être détectable quand requis pour jumelage.
- Le flux de jumelage DOIT être documenté et testable depuis iPhone/Mac.
- Les erreurs de profil non supporté DOIVENT être tracées avec cause exploitable.
EF-05 — Appel entrant GSM vers sonnerie RTC
- En cas d'appel entrant détecté côté HFP (
call_state=ringing), le téléphone RTC DOIT sonner. - Au décroché RTC, le firmware DOIT déclencher
BT_ANSWER. - Précondition explicite: téléphone GSM appairé et liaison HFP active (ou reconnexion auto en cours).
- Si aucun peer n'est actif, le firmware DOIT rester découvrable pour restauration du lien.
5. Exigences non fonctionnelles
- Temps de connexion HFP cible: < 15s dans des conditions normales.
- Aucun crash du firmware en cas d'échec pairing/profil.
- Logs série actionnables pour chaque étape: connect, slc, audio, pbap sync, dial.
6. Critères d'acceptation (DoD)
- HFP réel validé sur hardware (preuve
connected=trueethfp_active=true). - PBAP contacts synchronisés avec au moins un contact lisible (bloqué stack actuelle, nécessite changement de stack BT).
- Numérotation sortante validée sur téléphone réel depuis commande firmware (
BT_DIAL). - Numérotation sortante validée en mode queue:
DIAL/BT_DIALavant SLC, puis émission auto aprèsSLC_CONNECTED. - Appel entrant GSM validé: sonnerie RTC, décroché RTC =>
BT_ANSWER. - Rapport de test hardware mis à jour avec preuves (logs + JSON).
- Documentation opératoire de pairing/mise en service publiée.
- Stabilité appel: maintien HFP/SCO sans décrochage sur scénario appel sortant réel (preuve logs
hfp_*+sco_*).
7. Preuves attendues
- Rapport JSON/Markdown de tests hardware Bluetooth téléphonie.
- Captures ou logs montrant la session HFP active.
- Extrait de contacts PBAP récupérés.
- Trace de numérotation et état d'appel.