Transcript

BluetoothBT, BTLE, "BT Smart"

@krugazor

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

Connexion

• CBPeripheral

• connectPeripheral:options:

• cancelPeripheralConnection:

@krugazor

Delegate

• centralManager:didConnectPeripheral:

• centralManager:didDisconnectPeripheral:error:

• centralManager:didFailToConnectPeripheral:error:

@krugazor

Services/Characteristics

• discoverServices:

• discoverCharacteristics:forService:

@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

Merci!

• LightBlue (gratis) : permet d’interagir basiquement avec n’importe quoi

• Outils spécifiques (TI Multitool par ex, pour les kits a base de CP2540/CP2541)


Recommended