12345678910111213141516171819202122232425262728293031323334353637383940 |
- import class CoreBluetooth.CBUUID
- import class CoreBluetooth.CBCharacteristic
- struct QualifiedCharacteristic: Equatable {
- let id: CharacteristicID
- let serviceID: ServiceID
- let peripheralID: PeripheralID
- }
- extension QualifiedCharacteristic {
- init(_ characteristic: CBCharacteristic) {
- self.init(
- id: characteristic.uuid,
- serviceID: characteristic.service?.uuid ?? ServiceID(),
- peripheralID: characteristic.service?.peripheral?.identifier ?? PeripheralID(uuid: (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0))
- )
- }
- }
- struct QualifiedCharacteristicIDFactory {
- func make(from message: CharacteristicAddress) -> QualifiedCharacteristic? {
- guard
- message.hasCharacteristicUuid,
- message.hasServiceUuid,
- let peripheralID = UUID(uuidString: message.deviceID)
- else { return nil }
- let characteristicID = CBUUID(data: message.characteristicUuid.data)
- let serviceID = CBUUID(data: message.serviceUuid.data)
- return QualifiedCharacteristic(
- id: characteristicID,
- serviceID: serviceID,
- peripheralID: peripheralID
- )
- }
- }
|