Objets connectés
• Petite taille, petite batterie, grosses fonctionnalités
• La consommation énergétique est fonction de distance (puissance) et débit (modulation)
• Bluetooth est courte portée et faible débit pour économiser la batterie
@krugazor
Bluetooth
• 1994 : "port série réseau"
• 1MB/s jusqu'a 24 MB/s
• Distance maxi théorique de 100m
@krugazor
Connexion typiqueCoucou, j'existe! Fais voir ce que
tu sais faire
Voila la liste de mes services
Tiens voila une commande pour XYZ
(Opt) OK!
@krugazor
CoreBluetooth
• Device manager (discovery)
• Services (top level)
• Characteristics/descriptors (I/O)
@krugazor
Découverte
• CBCentralManager : découverte/connexion asynchrone
• retrieveConnectedPeripheralsWithServices:
• retrievePeripheralsWithIdentifiers:
• scanForPeripheralsWithServices:options:
@krugazor
Delegate
• centralManager:didRetrievePeripherals:
• centralManager:didRetrieveConnectedPeripherals:
• centralManager:didDiscoverPeripheral: advertisementData:RSSI:
@krugazor
Delegate
• centralManager:didConnectPeripheral:
• centralManager:didDisconnectPeripheral:error:
• centralManager:didFailToConnectPeripheral:error:
@krugazor
Delegate
• peripheral:didDiscoverServices:
• peripheral:didDiscoverCharacteristicsForService: error:
@krugazor
Lecture/Ecriture
• CBCharacteristic/CBDescriptor
• Piège : appelé sur le CBPeripheral
• readValueForCharacteristic:
• writeValue:forCharacteristic:type: (avec/sans réponse)
@krugazor
Delegate
• peripheral:didUpdateValueForCharacteristic:error:
• peripheral:didWriteValueForCharacteristic:error:
• NSData, baby!
@krugazor
Caveats• Communication radio : ni fiable, ni instantanée
(attention à vos timers)
• Complètement asynchrone (attention à vos boucles)
• Extrêmement dépendant des manipulations utilisateur (attention à l'état de vos données)
• Très old school niveau échanges (niveau commandes AT, au mieux)
@krugazor