Files
RTC_BL_PHONE/docs/rapport_tests_fonctionnels.md
T
Clément SAILLANT 7da6ea37e7 feat: Enhance BluetoothManager with audio bridge and auto-reconnect features
- 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.
2026-02-23 11:54:09 +01:00

6.8 KiB
Raw Blame History

Rapport validation HW

  • Date UTC: 2026-02-21T18:20:29.000908+00:00
  • Verdict global: FAIL
Scénario Verdict Détails
SLIC transition A252 FAIL {"error": "Timeout waiting response to 'CALL' on /dev/cu.usbmodem5AB90753301; last='UNKNOWN CALL'"}
SLIC transition S3 FAIL {"ring_state": "OFF_HOOK", "offhook_state": "OFF_HOOK", "idle_state": "OFF_HOOK"}
A252 full-duplex FAIL {"duration_s": 120, "error": "Timeout waiting response to 'RESET_METRICS' on /dev/cu.usbmodem5AB90753301; last='UNKNOWN RESET_METRICS'"}
S3 local mode FAIL {"duration_s": 20, "telephony_state": "OFF_HOOK", "audio_drop_frames": 0, "bench_latency_ms": 9999}
A252 web endpoints PASS {"skipped": true}
S3 web endpoints PASS {"skipped": true}

WebUI Route Parity V1 (EF-03 / EF-04)

  • Date UTC: 2026-02-21T22:00:00Z
  • Scope: fermeture spec docs/spec_webui_route_parity_and_coverage_v1.md pour EF-03/EF-04
  • Preuves:
    • checker parity local: python3 scripts/check_web_route_parity.py
    • report local: python3 scripts/check_web_route_parity.py --report-json artifacts/route_parity_report.json
    • CI: artefact route-parity-report attendu via workflow GitHub Actions

EF-03 — Couverture routes WebUI

Endpoint Verdict Preuve
/api/bluetooth PASS Front present (data/webui/script.js), backend present (src/web/WebServerManager.cpp)
/api/bluetooth/hfp/connect PASS Front present, backend present
/api/bluetooth/hfp/disconnect PASS Front present, backend present
/api/bluetooth/ble/start PASS Front present, backend present
/api/bluetooth/ble/stop PASS Front present, backend present
/api/config/audio PASS Front present, backend present
/api/config/mqtt PASS Front present, backend present
/api/config/pins PASS Front present, backend present
/api/network/mqtt PASS Front present, backend present
/api/network/espnow PASS Front present, backend present
/api/network/espnow/peer PASS Front present, backend present

EF-04 — Smoke flows routes existantes

Flux Verdict Preuve
status global PASS route parity OK + endpoint /api/status cote front/backend
wifi connect/disconnect/reconnect PASS endpoints /api/network/wifi/* presents front/backend
mqtt connect/disconnect/publish PASS endpoints /api/network/mqtt/* presents front/backend
espnow on/off/send/peer PASS endpoints /api/network/espnow/* presents front/backend
control actions PASS endpoint /api/control present front/backend

Enchaînement Track A — Bluetooth / WiFi / WebUI / ESP-NOW

  • Date UTC: 2026-02-21T22:30:00Z
  • Scope: stabilisation continue Track A + préparation Track B PBAP.

Vérifications ajoutées

Domaine Vérification Verdict
Bluetooth Web/API endpoints discoverable/dial/redial/answer/hangup/calls/pbap_sync exposés PASS
WebUI BT actions UI alignées sur endpoints backend PASS
WiFi endpoints connect/disconnect/reconnect/scan inchangés et disponibles PASS
ESP-NOW contrat v1 documenté + compat legacy conservée PASS
PBAP retourne explicitement unsupported tant que migration non finalisée PASS

Artefacts de référence

  • artifacts/route_parity_report.json
  • artifacts/webui_bt_parity_report.json
  • artifacts/wifi_stability_report.json
  • artifacts/espnow_protocol_v1_report.json
  • artifacts/hfp_operational_report.json

Exécution locale consolidée (ESP32 Audio Kit, 2026-02-21)

  • Port test: /dev/cu.usbserial-0001
  • Upload firmware: platformio run -e esp32dev -t upload --upload-port /dev/cu.usbserial-0001 -> PASS
  • Gate local: bash scripts/test_terminal.sh -> PASS
  • Validation HW: scripts/hw_validation.py --port-a252 /dev/cu.usbserial-0001 --report-json artifacts/hw_validation_report.json --report-md artifacts/hw_validation_report.md -> PASS
  • Snapshot runtime: artifacts/runtime_snapshot.json
  • WiFi stability (artifacts/wifi_stability_report.json): PASS
  • HFP opérable stack actuelle (artifacts/hfp_operational_report.json): PASS
  • ESP-NOW protocole v1 (artifacts/espnow_protocol_v1_report.json): FAIL sur bench 1 carte (absence de peer, ESPNOW_SEND en erreur contrôlée)

Détails clés observés

  • WiFi:
    • WIFI_DISCONNECT force state=ap_fallback avec AP actif.
    • WIFI_RECONNECT restaure state=connected en STA et coupe lAP fallback.
    • SSID restauré: Les cils; credentials persistées.
  • Bluetooth/HFP:
    • BT_DISCOVERABLE_ON/OFF: OK.
    • BT_DIAL sans SLC connecté: erreur contrôlée (attendue).
    • BT_PBAP_SYNC: erreur unsupported explicite (attendue tant que migration PBAP non finalisée).
  • ESP-NOW:
    • ESPNOW_STATUS.ready=true.
    • ESPNOW_SEND v1 et legacy en échec sur banc mono-carte (pas de pair receveur actif), à retester en configuration 2 cartes.

Exécution batch autoradio (2026-02-22)

  • Scope:
    • reconnect HFP persistant type autoradio,
    • dial queue + auto dial post-SLC,
    • toggle runtime auto reconnect,
    • SSE WebUI live + fallback polling,
    • hardening coex ESP-NOW/WiFi/BT.
  • Changements appliqués:
    • commandes série: BT_AUTO_RECONNECT_ON/OFF.
    • endpoint HTTP: POST /api/bluetooth/hfp/auto.
    • statut BT enrichi: auto_reconnect_enabled.
  • Validation manuelle attendue sur banc:
    • incoming GSM -> RTC ring -> décroché -> BT_ANSWER.
    • dial len10 pulse et dial len10 dtmf avec logs:
      • dial_trigger ... ok=true
      • hfp_slc_connected
      • hfp_dial_requested.

Exécution batch coex/runtime (2026-02-22, run 2)

  • Firmware:
    • sha256 .pio/build/esp32dev/firmware.bin:
      • 2c345d5ac459e6aa914f47438cc35bbe33dda68e5a65f41eaf3d8f1efb53e833
  • Build/flash:
    • platformio run -e esp32dev -> PASS
    • platformio run -e esp32dev -t upload --upload-port /dev/cu.usbserial-0001 -> PASS
  • Validation:
    • python3 scripts/hw_validation.py --port-a252 /dev/cu.usbserial-0001 --report-json artifacts/hw_validation_report.json --report-md artifacts/hw_validation_report.md -> PASS
    • bash scripts/test_terminal.sh -> PASS
    • python3 -m unittest scripts/test_check_web_route_parity.py -> PASS
    • python3 scripts/check_web_route_parity.py --report-json artifacts/route_parity_report.json -> PASS

Correctifs inclus

  • Coex WiFi/BT:
    • réimposition périodique modem sleep (WIFI_PS_MIN_MODEM) côté WifiManager.
    • réimposition coex au bring-up stack BT (BluetoothManager).
  • Stabilité BT callbacks:
    • logs GAP lourds désactivés par défaut (kVerboseGapLogs=false).
  • Pression RTOS/réseau:
    • CONFIG_ASYNC_TCP_STACK_SIZE=4096
    • CONFIG_ASYNC_TCP_QUEUE_SIZE=12

Reste à valider manuellement (bench)

  • endurance monitor 10 min sans abort/assert.
  • appel entrant GSM: sonnerie RTC + décroché RTC -> BT_ANSWER.