Aller au contenu

BLE Connect

Résumé

  • Nom interne : Ble_connect
  • Catégorie : Bluetooth
  • Objectif : Ouvrir (ou confirmer) une connexion GATT BLE vers un appareil identifié par son adresse MAC, pour que les tâches BLE suivantes (lecture/écriture/pairing) puissent l'utiliser.
  • Type de tâche : Normale

Compatibilité

  • Version minimale AndroMate : 1.1.0

  • Version maximale AndroMate : 1.1.0

  • Android minimum : Android 13 (API 33)

  • Android maximum testé : Android 16 (API 36)

  • Constructeurs supportés :

    • ✅ Tous les constructeurs
  • Permissions requises :

    • BLUETOOTH_SCAN
    • BLUETOOTH_CONNECT
    • Localisation de l'appareil activée (exigence Android pour les opérations BLE)

Description détaillée

La tâche BLE Connect ouvre une connexion GATT vers un appareil Bluetooth Low Energy identifié par son adresse MAC, et enregistre cette connexion pour que les tâches BLE suivantes (Ble_readChar, Ble_writeChar, Ble_pairing, Ble_disconnect) puissent la réutiliser en référençant le même mac_ble.

Si l'appareil est déjà connecté, la tâche ne fait rien et signale qu'il est déjà connecté — il est donc sûr de l'appeler plusieurs fois avec la même adresse MAC.

Toutes les tâches BLE partagent les mêmes vérifications préalables : le Bluetooth doit être activé et supporté sur l'appareil, l'application doit détenir les permissions BLUETOOTH_SCAN/BLUETOOTH_CONNECT, et la localisation de l'appareil doit être activée (une exigence de la plateforme Android pour le BLE, pas un choix d'AndroMate).


Paramètres d'entrée

Paramètre Type Obligatoire Valeurs possibles Compatibilité Android Compatibilité AndroMate Défaut
mac_ble String Oui Une adresse MAC Bluetooth valide, ex. AA:BB:CC:DD:EE:FF Android 13 (API 33) → Android 16 (API 36) 1.1.0 → 1.1.0 ""
connect_duration_timeout Integer Non Millisecondes à attendre l'établissement de la connexion Android 13 (API 33) → Android 16 (API 36) 1.1.0 → 1.1.0 30000

Paramètres de sortie

La tâche BLE Connect ne produit aucune sortie. Elle enregistre la connexion GATT en interne pour que d'autres tâches BLE la réutilisent via mac_ble.


Exceptions

Code Nom de l'exception Description
BLE-TASK-001 Bluetooth désactivé Le Bluetooth est désactivé sur l'appareil.
BLE-TASK-002 Bluetooth non supporté Cet appareil ne supporte pas le Bluetooth.
ERROR-001 Permission non accordée BLUETOOTH_SCAN ou BLUETOOTH_CONNECT n'a pas été accordée.
GPS-ERROR-003 Localisation désactivée La localisation de l'appareil est désactivée — requise par Android pour le BLE.
BLE-TASK-003 Format MAC invalide mac_ble n'est pas une adresse MAC Bluetooth valide.

Remarque : si la tentative de connexion expire, la tâche ne lève pas d'exception — elle enregistre le timeout dans le journal et se termine, laissant l'appareil non connecté. Les tâches BLE suivantes référençant ce mac_ble échoueront alors avec BLE-TASK-011 (Aucune connexion GATT active).


Diagramme d'exécution

flowchart TD
    Start([▶ Ble_connect]) --> Prereq{BLE activé, supporté,\npermissions, localisation OK ?}
    Prereq -->|Non| E1[❌ BLE-TASK-001/002\nERROR-001/GPS-ERROR-003]
    Prereq -->|Oui| CheckMac{mac_ble\nformat valide ?}
    CheckMac -->|Non| E2[❌ BLE-TASK-003\nINVALID_MAC]
    CheckMac -->|Oui| CheckConnected{Déjà\nconnecté ?}
    CheckConnected -->|Oui| Info[ℹ️ Log : déjà connecté]
    CheckConnected -->|Non| Connect[🔵 Ouvrir la connexion GATT]
    Connect --> Wait{Connecté dans\nconnect_duration_timeout ?}
    Wait -->|Oui| Register[💾 Enregistrer le GATT pour mac_ble]
    Wait -->|Non| Timeout[⚠️ Log timeout, sans exception]

    Info --> Success([✅ VoidResult])
    Register --> Success
    Timeout --> Success
    E1 --> Error([❌ Exception])
    E2 --> Error

    style Start fill:#e3f2fd
    style Success fill:#c8e6c9
    style Error fill:#ffcdd2
    style Connect fill:#fff9c4
    style Register fill:#c8e6c9

Comment ça fonctionne :

  1. Vérifications préalables : Bluetooth activé/supporté, permissions accordées, localisation activée.
  2. Validation de la MAC : lève BLE-TASK-003 si mac_ble n'est pas une adresse MAC valide.
  3. Déjà connecté ? : si oui, journalise et retourne immédiatement.
  4. Connexion : ouvre une nouvelle connexion GATT et attend jusqu'à connect_duration_timeout.
  5. Résultat : en cas de succès, la connexion est enregistrée sous mac_ble pour les tâches BLE suivantes. En cas de timeout, aucune exception n'est levée — le workflow continue mais l'appareil reste non connecté.

Détails des paramètres d'entrée

1. Paramètre d'entrée : mac_ble

L'adresse MAC Bluetooth de l'appareil cible.

Exemple

"mac_ble": "AA:BB:CC:DD:EE:FF"

Détails

  • Doit être un format d'adresse MAC valide.
  • Résolu à l'exécution — peut référencer une $variable (ex. issue d'un Ble_scanner précédent).

2. Paramètre d'entrée : connect_duration_timeout

Durée d'attente de l'établissement de la connexion GATT, en millisecondes.

Exemple

"connect_duration_timeout": 15000

Détails

  • Optionnel — vaut 30000 (30 secondes) par défaut si omis.

Exemple JSON complet

{
  "Ble_connect": [
    {
      "id": "1",
      "title": "Connexion au capteur",
      "mac_ble": "AA:BB:CC:DD:EE:FF",
      "connect_duration_timeout": 15000
    }
  ]
}