react-native-ble-plx
-
3.2.1
+
3.3.0
Ex.1
class BLEServiceInstance {
- manager: BleManage
+ manager: BleManager
constructor(
) {
this.manager =
new BleManager()
diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock
index 10095e6c8..6a9543729 100644
--- a/example/ios/Podfile.lock
+++ b/example/ios/Podfile.lock
@@ -1436,7 +1436,7 @@ SPEC CHECKSUMS:
hermes-engine: 16b8530de1b383cdada1476cf52d1b52f0692cbc
MMKV: 36a22a9ec84c9bb960613a089ddf6f48be9312b0
MMKVCore: 158e61c8516401a9fac730288acb29e6fc19bbf9
- MultiplatformBleAdapter: ea8bac405ec200d0ca9de0f89afef6f06fb2abbc
+ MultiplatformBleAdapter: b1fddd0d499b96b607e00f0faa8e60648343dc1d
RCT-Folly: 02617c592a293bd6d418e0a88ff4ee1f88329b47
RCTDeprecation: efb313d8126259e9294dc4ee0002f44a6f676aba
RCTRequired: f49ea29cece52aee20db633ae7edc4b271435562
diff --git a/ios/BlePlx.xcodeproj/project.pbxproj b/ios/BlePlx.xcodeproj/project.pbxproj
index c1946a1d7..728f21d1b 100644
--- a/ios/BlePlx.xcodeproj/project.pbxproj
+++ b/ios/BlePlx.xcodeproj/project.pbxproj
@@ -7,210 +7,6 @@
objects = {
/* Begin PBXBuildFile section */
- 8E28B48C2AD9938F009D487C /* GroupedObservable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B3D82AD9938E009D487C /* GroupedObservable.swift */; };
- 8E28B48D2AD9938F009D487C /* Binder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B3D92AD9938E009D487C /* Binder.swift */; };
- 8E28B48E2AD9938F009D487C /* ObservableConvertibleType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B3DA2AD9938E009D487C /* ObservableConvertibleType.swift */; };
- 8E28B48F2AD9938F009D487C /* AnyObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B3DB2AD9938E009D487C /* AnyObserver.swift */; };
- 8E28B4902AD9938F009D487C /* Bag+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B3DD2AD9938E009D487C /* Bag+Rx.swift */; };
- 8E28B4912AD9938F009D487C /* RecursiveScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B3DF2AD9938E009D487C /* RecursiveScheduler.swift */; };
- 8E28B4922AD9938F009D487C /* OperationQueueScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B3E02AD9938E009D487C /* OperationQueueScheduler.swift */; };
- 8E28B4932AD9938F009D487C /* VirtualTimeScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B3E12AD9938E009D487C /* VirtualTimeScheduler.swift */; };
- 8E28B4942AD9938F009D487C /* SchedulerServices+Emulation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B3E22AD9938E009D487C /* SchedulerServices+Emulation.swift */; };
- 8E28B4952AD9938F009D487C /* CurrentThreadScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B3E32AD9938E009D487C /* CurrentThreadScheduler.swift */; };
- 8E28B4962AD9938F009D487C /* MainScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B3E42AD9938E009D487C /* MainScheduler.swift */; };
- 8E28B4972AD9938F009D487C /* ConcurrentDispatchQueueScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B3E52AD9938E009D487C /* ConcurrentDispatchQueueScheduler.swift */; };
- 8E28B4982AD9938F009D487C /* ScheduledItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B3E72AD9938E009D487C /* ScheduledItem.swift */; };
- 8E28B4992AD9938F009D487C /* InvocableType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B3E82AD9938E009D487C /* InvocableType.swift */; };
- 8E28B49A2AD9938F009D487C /* InvocableScheduledItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B3E92AD9938E009D487C /* InvocableScheduledItem.swift */; };
- 8E28B49B2AD9938F009D487C /* DispatchQueueConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B3EA2AD9938E009D487C /* DispatchQueueConfiguration.swift */; };
- 8E28B49C2AD9938F009D487C /* ScheduledItemType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B3EB2AD9938E009D487C /* ScheduledItemType.swift */; };
- 8E28B49D2AD9938F009D487C /* ConcurrentMainScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B3EC2AD9938E009D487C /* ConcurrentMainScheduler.swift */; };
- 8E28B49E2AD9938F009D487C /* SerialDispatchQueueScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B3ED2AD9938E009D487C /* SerialDispatchQueueScheduler.swift */; };
- 8E28B49F2AD9938F009D487C /* HistoricalScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B3EE2AD9938E009D487C /* HistoricalScheduler.swift */; };
- 8E28B4A02AD9938F009D487C /* VirtualTimeConverterType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B3EF2AD9938E009D487C /* VirtualTimeConverterType.swift */; };
- 8E28B4A12AD9938F009D487C /* HistoricalSchedulerTimeConverter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B3F02AD9938E009D487C /* HistoricalSchedulerTimeConverter.swift */; };
- 8E28B4A22AD9938F009D487C /* Cancelable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B3F12AD9938E009D487C /* Cancelable.swift */; };
- 8E28B4A32AD9938F009D487C /* ObservableType+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B3F22AD9938E009D487C /* ObservableType+Extensions.swift */; };
- 8E28B4A42AD9938F009D487C /* Disposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B3F32AD9938E009D487C /* Disposable.swift */; };
- 8E28B4A52AD9938F009D487C /* Platform.Darwin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B3F52AD9938E009D487C /* Platform.Darwin.swift */; };
- 8E28B4A62AD9938F009D487C /* DispatchQueue+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B3F62AD9938E009D487C /* DispatchQueue+Extensions.swift */; };
- 8E28B4A72AD9938F009D487C /* AtomicInt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B3F72AD9938E009D487C /* AtomicInt.swift */; };
- 8E28B4A82AD9938F009D487C /* Bag.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B3F92AD9938E009D487C /* Bag.swift */; };
- 8E28B4A92AD9938F009D487C /* PriorityQueue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B3FA2AD9938E009D487C /* PriorityQueue.swift */; };
- 8E28B4AA2AD9938F009D487C /* Queue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B3FB2AD9938E009D487C /* Queue.swift */; };
- 8E28B4AB2AD9938F009D487C /* InfiniteSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B3FC2AD9938E009D487C /* InfiniteSequence.swift */; };
- 8E28B4AC2AD9938F009D487C /* Platform.Linux.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B3FD2AD9938E009D487C /* Platform.Linux.swift */; };
- 8E28B4AD2AD9938F009D487C /* RecursiveLock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B3FE2AD9938E009D487C /* RecursiveLock.swift */; };
- 8E28B4AE2AD9938F009D487C /* Completable+AndThen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4012AD9938E009D487C /* Completable+AndThen.swift */; };
- 8E28B4AF2AD9938F009D487C /* Completable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4032AD9938E009D487C /* Completable.swift */; };
- 8E28B4B02AD9938F009D487C /* Single.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4042AD9938E009D487C /* Single.swift */; };
- 8E28B4B12AD9938F009D487C /* PrimitiveSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4052AD9938E009D487C /* PrimitiveSequence.swift */; };
- 8E28B4B22AD9938F009D487C /* Maybe.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4062AD9938E009D487C /* Maybe.swift */; };
- 8E28B4B32AD9938F009D487C /* ObservableType+PrimitiveSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4072AD9938E009D487C /* ObservableType+PrimitiveSequence.swift */; };
- 8E28B4B42AD9938F009D487C /* PrimitiveSequence+Zip+arity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4082AD9938E009D487C /* PrimitiveSequence+Zip+arity.swift */; };
- 8E28B4B52AD9938F009D487C /* PrimitiveSequence+Concurrency.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4092AD9938E009D487C /* PrimitiveSequence+Concurrency.swift */; };
- 8E28B4B62AD9938F009D487C /* Infallible+Zip+arity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B40B2AD9938E009D487C /* Infallible+Zip+arity.swift */; };
- 8E28B4B72AD9938F009D487C /* Infallible+Concurrency.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B40C2AD9938E009D487C /* Infallible+Concurrency.swift */; };
- 8E28B4B82AD9938F009D487C /* Infallible+Create.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B40E2AD9938E009D487C /* Infallible+Create.swift */; };
- 8E28B4B92AD9938F009D487C /* Infallible+Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B40F2AD9938E009D487C /* Infallible+Operators.swift */; };
- 8E28B4BA2AD9938F009D487C /* Infallible+Debug.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4102AD9938E009D487C /* Infallible+Debug.swift */; };
- 8E28B4BB2AD9938F009D487C /* Infallible+CombineLatest+arity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4122AD9938E009D487C /* Infallible+CombineLatest+arity.swift */; };
- 8E28B4BC2AD9938F009D487C /* Infallible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4132AD9938E009D487C /* Infallible.swift */; };
- 8E28B4BD2AD9938F009D487C /* Infallible+CombineLatest+Collection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4142AD9938E009D487C /* Infallible+CombineLatest+Collection.swift */; };
- 8E28B4BE2AD9938F009D487C /* ObservableConvertibleType+Infallible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4152AD9938E009D487C /* ObservableConvertibleType+Infallible.swift */; };
- 8E28B4BF2AD9938F009D487C /* ObserverType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4162AD9938E009D487C /* ObserverType.swift */; };
- 8E28B4C02AD9938F009D487C /* Reactive.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4172AD9938E009D487C /* Reactive.swift */; };
- 8E28B4C12AD9938F009D487C /* ObservableType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4182AD9938E009D487C /* ObservableType.swift */; };
- 8E28B4C22AD9938F009D487C /* ObserverBase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B41A2AD9938E009D487C /* ObserverBase.swift */; };
- 8E28B4C32AD9938F009D487C /* TailRecursiveSink.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B41B2AD9938E009D487C /* TailRecursiveSink.swift */; };
- 8E28B4C42AD9938F009D487C /* AnonymousObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B41C2AD9938E009D487C /* AnonymousObserver.swift */; };
- 8E28B4C52AD9938F009D487C /* ConnectableObservableType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B41D2AD9938F009D487C /* ConnectableObservableType.swift */; };
- 8E28B4C62AD9938F009D487C /* AsMaybe.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B41F2AD9938F009D487C /* AsMaybe.swift */; };
- 8E28B4C72AD9938F009D487C /* Timeout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4202AD9938F009D487C /* Timeout.swift */; };
- 8E28B4C82AD9938F009D487C /* Never.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4212AD9938F009D487C /* Never.swift */; };
- 8E28B4C92AD9938F009D487C /* RetryWhen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4222AD9938F009D487C /* RetryWhen.swift */; };
- 8E28B4CA2AD9938F009D487C /* Do.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4232AD9938F009D487C /* Do.swift */; };
- 8E28B4CB2AD9938F009D487C /* Deferred.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4242AD9938F009D487C /* Deferred.swift */; };
- 8E28B4CC2AD9938F009D487C /* Buffer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4252AD9938F009D487C /* Buffer.swift */; };
- 8E28B4CD2AD9938F009D487C /* SubscribeOn.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4262AD9938F009D487C /* SubscribeOn.swift */; };
- 8E28B4CE2AD9938F009D487C /* DefaultIfEmpty.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4272AD9938F009D487C /* DefaultIfEmpty.swift */; };
- 8E28B4CF2AD9938F009D487C /* Using.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4282AD9938F009D487C /* Using.swift */; };
- 8E28B4D02AD9938F009D487C /* Delay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4292AD9938F009D487C /* Delay.swift */; };
- 8E28B4D12AD9938F009D487C /* Producer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B42A2AD9938F009D487C /* Producer.swift */; };
- 8E28B4D22AD9938F009D487C /* GroupBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B42B2AD9938F009D487C /* GroupBy.swift */; };
- 8E28B4D32AD9938F009D487C /* Concat.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B42C2AD9938F009D487C /* Concat.swift */; };
- 8E28B4D42AD9938F009D487C /* WithUnretained.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B42D2AD9938F009D487C /* WithUnretained.swift */; };
- 8E28B4D52AD9938F009D487C /* Take.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B42E2AD9938F009D487C /* Take.swift */; };
- 8E28B4D62AD9938F009D487C /* TakeLast.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B42F2AD9938F009D487C /* TakeLast.swift */; };
- 8E28B4D72AD9938F009D487C /* Error.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4302AD9938F009D487C /* Error.swift */; };
- 8E28B4D82AD9938F009D487C /* CombineLatest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4312AD9938F009D487C /* CombineLatest.swift */; };
- 8E28B4D92AD9938F009D487C /* Sample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4322AD9938F009D487C /* Sample.swift */; };
- 8E28B4DA2AD9938F009D487C /* AsSingle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4332AD9938F009D487C /* AsSingle.swift */; };
- 8E28B4DB2AD9938F009D487C /* Empty.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4342AD9938F009D487C /* Empty.swift */; };
- 8E28B4DC2AD9938F009D487C /* Enumerated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4352AD9938F009D487C /* Enumerated.swift */; };
- 8E28B4DD2AD9938F009D487C /* DistinctUntilChanged.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4362AD9938F009D487C /* DistinctUntilChanged.swift */; };
- 8E28B4DE2AD9938F009D487C /* First.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4372AD9938F009D487C /* First.swift */; };
- 8E28B4DF2AD9938F009D487C /* Timer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4382AD9938F009D487C /* Timer.swift */; };
- 8E28B4E02AD9938F009D487C /* AddRef.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4392AD9938F009D487C /* AddRef.swift */; };
- 8E28B4E12AD9938F009D487C /* Sequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B43A2AD9938F009D487C /* Sequence.swift */; };
- 8E28B4E22AD9938F009D487C /* Sink.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B43B2AD9938F009D487C /* Sink.swift */; };
- 8E28B4E32AD9938F009D487C /* Throttle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B43C2AD9938F009D487C /* Throttle.swift */; };
- 8E28B4E42AD9938F009D487C /* Range.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B43D2AD9938F009D487C /* Range.swift */; };
- 8E28B4E52AD9938F009D487C /* CompactMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B43E2AD9938F009D487C /* CompactMap.swift */; };
- 8E28B4E62AD99390009D487C /* WithLatestFrom.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B43F2AD9938F009D487C /* WithLatestFrom.swift */; };
- 8E28B4E72AD99390009D487C /* ObserveOn.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4402AD9938F009D487C /* ObserveOn.swift */; };
- 8E28B4E82AD99390009D487C /* CombineLatest+Collection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4412AD9938F009D487C /* CombineLatest+Collection.swift */; };
- 8E28B4E92AD99390009D487C /* Multicast.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4422AD9938F009D487C /* Multicast.swift */; };
- 8E28B4EA2AD99390009D487C /* SkipWhile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4432AD9938F009D487C /* SkipWhile.swift */; };
- 8E28B4EB2AD99390009D487C /* Decode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4442AD9938F009D487C /* Decode.swift */; };
- 8E28B4EC2AD99390009D487C /* DelaySubscription.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4452AD9938F009D487C /* DelaySubscription.swift */; };
- 8E28B4ED2AD99390009D487C /* Repeat.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4462AD9938F009D487C /* Repeat.swift */; };
- 8E28B4EE2AD99390009D487C /* ToArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4472AD9938F009D487C /* ToArray.swift */; };
- 8E28B4EF2AD99390009D487C /* Switch.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4492AD9938F009D487C /* Switch.swift */; };
- 8E28B4F02AD99390009D487C /* Window.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B44A2AD9938F009D487C /* Window.swift */; };
- 8E28B4F12AD99390009D487C /* Debounce.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B44B2AD9938F009D487C /* Debounce.swift */; };
- 8E28B4F22AD99390009D487C /* Dematerialize.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B44C2AD9938F009D487C /* Dematerialize.swift */; };
- 8E28B4F32AD99390009D487C /* Zip+Collection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B44D2AD9938F009D487C /* Zip+Collection.swift */; };
- 8E28B4F42AD99390009D487C /* Catch.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B44E2AD9938F009D487C /* Catch.swift */; };
- 8E28B4F52AD99390009D487C /* Filter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B44F2AD9938F009D487C /* Filter.swift */; };
- 8E28B4F62AD99390009D487C /* Amb.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4502AD9938F009D487C /* Amb.swift */; };
- 8E28B4F72AD99390009D487C /* Reduce.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4512AD9938F009D487C /* Reduce.swift */; };
- 8E28B4F82AD99390009D487C /* CombineLatest+arity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4522AD9938F009D487C /* CombineLatest+arity.swift */; };
- 8E28B4F92AD99390009D487C /* Zip.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4542AD9938F009D487C /* Zip.swift */; };
- 8E28B4FA2AD99390009D487C /* Debug.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4552AD9938F009D487C /* Debug.swift */; };
- 8E28B4FB2AD99390009D487C /* Merge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4562AD9938F009D487C /* Merge.swift */; };
- 8E28B4FC2AD99390009D487C /* Skip.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4572AD9938F009D487C /* Skip.swift */; };
- 8E28B4FD2AD99390009D487C /* Map.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4582AD9938F009D487C /* Map.swift */; };
- 8E28B4FE2AD99390009D487C /* SkipUntil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4592AD9938F009D487C /* SkipUntil.swift */; };
- 8E28B4FF2AD99390009D487C /* StartWith.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B45A2AD9938F009D487C /* StartWith.swift */; };
- 8E28B5002AD99390009D487C /* Just.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B45B2AD9938F009D487C /* Just.swift */; };
- 8E28B5012AD99390009D487C /* TakeWithPredicate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B45C2AD9938F009D487C /* TakeWithPredicate.swift */; };
- 8E28B5022AD99390009D487C /* Optional.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B45D2AD9938F009D487C /* Optional.swift */; };
- 8E28B5032AD99390009D487C /* Generate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B45E2AD9938F009D487C /* Generate.swift */; };
- 8E28B5042AD99390009D487C /* ShareReplayScope.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B45F2AD9938F009D487C /* ShareReplayScope.swift */; };
- 8E28B5052AD99390009D487C /* Scan.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4602AD9938F009D487C /* Scan.swift */; };
- 8E28B5062AD99390009D487C /* Zip+arity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4612AD9938F009D487C /* Zip+arity.swift */; };
- 8E28B5072AD99390009D487C /* SwitchIfEmpty.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4622AD9938F009D487C /* SwitchIfEmpty.swift */; };
- 8E28B5082AD99390009D487C /* ElementAt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4632AD9938F009D487C /* ElementAt.swift */; };
- 8E28B5092AD99390009D487C /* Create.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4642AD9938F009D487C /* Create.swift */; };
- 8E28B50A2AD99390009D487C /* Materialize.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4652AD9938F009D487C /* Materialize.swift */; };
- 8E28B50B2AD99390009D487C /* SingleAsync.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4662AD9938F009D487C /* SingleAsync.swift */; };
- 8E28B50C2AD99390009D487C /* Observable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4672AD9938F009D487C /* Observable.swift */; };
- 8E28B50D2AD99390009D487C /* SubjectType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4692AD9938F009D487C /* SubjectType.swift */; };
- 8E28B50E2AD99390009D487C /* BehaviorSubject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B46A2AD9938F009D487C /* BehaviorSubject.swift */; };
- 8E28B50F2AD99390009D487C /* AsyncSubject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B46B2AD9938F009D487C /* AsyncSubject.swift */; };
- 8E28B5102AD99390009D487C /* ReplaySubject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B46C2AD9938F009D487C /* ReplaySubject.swift */; };
- 8E28B5112AD99390009D487C /* PublishSubject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B46D2AD9938F009D487C /* PublishSubject.swift */; };
- 8E28B5122AD99390009D487C /* SwiftSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B46F2AD9938F009D487C /* SwiftSupport.swift */; };
- 8E28B5132AD99390009D487C /* Errors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4702AD9938F009D487C /* Errors.swift */; };
- 8E28B5142AD99390009D487C /* Event.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4712AD9938F009D487C /* Event.swift */; };
- 8E28B5152AD99390009D487C /* Date+Dispatch.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4722AD9938F009D487C /* Date+Dispatch.swift */; };
- 8E28B5162AD99390009D487C /* LockOwnerType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4742AD9938F009D487C /* LockOwnerType.swift */; };
- 8E28B5172AD99390009D487C /* SynchronizedDisposeType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4752AD9938F009D487C /* SynchronizedDisposeType.swift */; };
- 8E28B5182AD99390009D487C /* SynchronizedOnType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4762AD9938F009D487C /* SynchronizedOnType.swift */; };
- 8E28B5192AD99390009D487C /* Lock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4772AD9938F009D487C /* Lock.swift */; };
- 8E28B51A2AD99390009D487C /* AsyncLock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4782AD9938F009D487C /* AsyncLock.swift */; };
- 8E28B51B2AD99390009D487C /* SynchronizedUnsubscribeType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4792AD9938F009D487C /* SynchronizedUnsubscribeType.swift */; };
- 8E28B51C2AD99390009D487C /* Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B47A2AD9938F009D487C /* Rx.swift */; };
- 8E28B51D2AD99390009D487C /* DisposeBase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B47C2AD9938F009D487C /* DisposeBase.swift */; };
- 8E28B51E2AD99390009D487C /* DisposeBag.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B47D2AD9938F009D487C /* DisposeBag.swift */; };
- 8E28B51F2AD99390009D487C /* ScheduledDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B47E2AD9938F009D487C /* ScheduledDisposable.swift */; };
- 8E28B5202AD99390009D487C /* NopDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B47F2AD9938F009D487C /* NopDisposable.swift */; };
- 8E28B5212AD99390009D487C /* SubscriptionDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4802AD9938F009D487C /* SubscriptionDisposable.swift */; };
- 8E28B5222AD99390009D487C /* RefCountDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4812AD9938F009D487C /* RefCountDisposable.swift */; };
- 8E28B5232AD99390009D487C /* CompositeDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4822AD9938F009D487C /* CompositeDisposable.swift */; };
- 8E28B5242AD99390009D487C /* SingleAssignmentDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4832AD9938F009D487C /* SingleAssignmentDisposable.swift */; };
- 8E28B5252AD99390009D487C /* SerialDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4842AD9938F009D487C /* SerialDisposable.swift */; };
- 8E28B5262AD99390009D487C /* BinaryDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4852AD9938F009D487C /* BinaryDisposable.swift */; };
- 8E28B5272AD99390009D487C /* AnonymousDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4862AD9938F009D487C /* AnonymousDisposable.swift */; };
- 8E28B5282AD99390009D487C /* BooleanDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4872AD9938F009D487C /* BooleanDisposable.swift */; };
- 8E28B5292AD99390009D487C /* Disposables.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4882AD9938F009D487C /* Disposables.swift */; };
- 8E28B52A2AD99390009D487C /* ImmediateSchedulerType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B4892AD9938F009D487C /* ImmediateSchedulerType.swift */; };
- 8E28B52B2AD99390009D487C /* SchedulerType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B48A2AD9938F009D487C /* SchedulerType.swift */; };
- 8E28B52C2AD99390009D487C /* RxMutableBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B48B2AD9938F009D487C /* RxMutableBox.swift */; };
- 8E28B5342AD9B9A8009D487C /* BleAdapterFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B5322AD9B9A8009D487C /* BleAdapterFactory.swift */; };
- 8E28B5352AD9B9A8009D487C /* BleAdapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B5332AD9B9A8009D487C /* BleAdapter.swift */; };
- 8E28B5592AD9BA2D009D487C /* RxCentralManagerType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B5362AD9BA2B009D487C /* RxCentralManagerType.swift */; };
- 8E28B55A2AD9BA2D009D487C /* Characteristic.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B5372AD9BA2B009D487C /* Characteristic.swift */; };
- 8E28B55B2AD9BA2D009D487C /* RxCBPeripheral.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B5382AD9BA2B009D487C /* RxCBPeripheral.swift */; };
- 8E28B55C2AD9BA2D009D487C /* CBCentralManagerDelegateWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B5392AD9BA2B009D487C /* CBCentralManagerDelegateWrapper.swift */; };
- 8E28B55D2AD9BA2D009D487C /* CBPeripheralDelegateWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B53A2AD9BA2B009D487C /* CBPeripheralDelegateWrapper.swift */; };
- 8E28B55E2AD9BA2D009D487C /* ScanOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B53B2AD9BA2B009D487C /* ScanOperation.swift */; };
- 8E28B55F2AD9BA2D009D487C /* Service.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B53C2AD9BA2B009D487C /* Service.swift */; };
- 8E28B5602AD9BA2D009D487C /* Peripheral+Convenience.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B53D2AD9BA2B009D487C /* Peripheral+Convenience.swift */; };
- 8E28B5612AD9BA2D009D487C /* CBCentral+Uuid.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B53F2AD9BA2B009D487C /* CBCentral+Uuid.swift */; };
- 8E28B5622AD9BA2D009D487C /* Logging.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B5402AD9BA2B009D487C /* Logging.swift */; };
- 8E28B5632AD9BA2D009D487C /* RxCBDescriptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B5412AD9BA2B009D487C /* RxCBDescriptor.swift */; };
- 8E28B5642AD9BA2D009D487C /* RxCBService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B5422AD9BA2C009D487C /* RxCBService.swift */; };
- 8E28B5652AD9BA2D009D487C /* ManagerType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B5432AD9BA2C009D487C /* ManagerType.swift */; };
- 8E28B5662AD9BA2D009D487C /* BluetoothError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B5442AD9BA2C009D487C /* BluetoothError.swift */; };
- 8E28B5672AD9BA2D009D487C /* RxPeripheralType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B5452AD9BA2C009D487C /* RxPeripheralType.swift */; };
- 8E28B5682AD9BA2D009D487C /* RestoredState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B5462AD9BA2C009D487C /* RestoredState.swift */; };
- 8E28B5692AD9BA2D009D487C /* Array+Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B5472AD9BA2C009D487C /* Array+Utils.swift */; };
- 8E28B56A2AD9BA2D009D487C /* Observable+QueueSubscribeOn.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B5482AD9BA2C009D487C /* Observable+QueueSubscribeOn.swift */; };
- 8E28B56B2AD9BA2D009D487C /* UUIDIdentifiable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B5492AD9BA2C009D487C /* UUIDIdentifiable.swift */; };
- 8E28B56C2AD9BA2D009D487C /* ScannedPeripheral.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B54A2AD9BA2C009D487C /* ScannedPeripheral.swift */; };
- 8E28B56D2AD9BA2D009D487C /* AdvertisementData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B54B2AD9BA2C009D487C /* AdvertisementData.swift */; };
- 8E28B56E2AD9BA2D009D487C /* RxCBCharacteristic.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B54C2AD9BA2C009D487C /* RxCBCharacteristic.swift */; };
- 8E28B56F2AD9BA2D009D487C /* RxCharacteristicType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B54D2AD9BA2C009D487C /* RxCharacteristicType.swift */; };
- 8E28B5702AD9BA2D009D487C /* RxServiceType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B54E2AD9BA2C009D487C /* RxServiceType.swift */; };
- 8E28B5712AD9BA2D009D487C /* Observable+Absorb.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B54F2AD9BA2C009D487C /* Observable+Absorb.swift */; };
- 8E28B5722AD9BA2D009D487C /* DeviceIdentifiers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B5502AD9BA2C009D487C /* DeviceIdentifiers.swift */; };
- 8E28B5732AD9BA2D009D487C /* Peripheral.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B5512AD9BA2C009D487C /* Peripheral.swift */; };
- 8E28B5742AD9BA2D009D487C /* RxDescriptorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B5522AD9BA2C009D487C /* RxDescriptorType.swift */; };
- 8E28B5752AD9BA2D009D487C /* Unimplemented.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B5532AD9BA2C009D487C /* Unimplemented.swift */; };
- 8E28B5762AD9BA2D009D487C /* Descriptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B5542AD9BA2C009D487C /* Descriptor.swift */; };
- 8E28B5772AD9BA2D009D487C /* Boxes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B5552AD9BA2C009D487C /* Boxes.swift */; };
- 8E28B5782AD9BA2D009D487C /* RxCBCentralManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B5562AD9BA2C009D487C /* RxCBCentralManager.swift */; };
- 8E28B5792AD9BA2D009D487C /* BluetoothState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B5572AD9BA2C009D487C /* BluetoothState.swift */; };
- 8E28B57A2AD9BA2D009D487C /* BluetoothManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E28B5582AD9BA2C009D487C /* BluetoothManager.swift */; };
- D73A55CA20BBFA8100BB1C1E /* BleEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = D73A55C120BBFA8100BB1C1E /* BleEvent.swift */; };
- D73A55CB20BBFA8100BB1C1E /* BleError.swift in Sources */ = {isa = PBXBuildFile; fileRef = D73A55C220BBFA8100BB1C1E /* BleError.swift */; };
- D73A55CC20BBFA8100BB1C1E /* DisposableMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = D73A55C520BBFA8100BB1C1E /* DisposableMap.swift */; };
- D73A55CD20BBFA8100BB1C1E /* SafePromise.swift in Sources */ = {isa = PBXBuildFile; fileRef = D73A55C620BBFA8100BB1C1E /* SafePromise.swift */; };
- D73A55CE20BBFA8100BB1C1E /* BleExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D73A55C720BBFA8100BB1C1E /* BleExtensions.swift */; };
- D73A55CF20BBFA8100BB1C1E /* BleUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = D73A55C820BBFA8100BB1C1E /* BleUtils.swift */; };
- D73A55D020BBFA8100BB1C1E /* BleModule.swift in Sources */ = {isa = PBXBuildFile; fileRef = D73A55C920BBFA8100BB1C1E /* BleModule.swift */; };
D7D202791D4F614D00E10F6A /* BlePlx.m in Sources */ = {isa = PBXBuildFile; fileRef = D7D202771D4F614D00E10F6A /* BlePlx.m */; };
/* End PBXBuildFile section */
@@ -227,217 +23,6 @@
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
- 8E28B3D82AD9938E009D487C /* GroupedObservable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GroupedObservable.swift; sourceTree = "
"; };
- 8E28B3D92AD9938E009D487C /* Binder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Binder.swift; sourceTree = ""; };
- 8E28B3DA2AD9938E009D487C /* ObservableConvertibleType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ObservableConvertibleType.swift; sourceTree = ""; };
- 8E28B3DB2AD9938E009D487C /* AnyObserver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AnyObserver.swift; sourceTree = ""; };
- 8E28B3DD2AD9938E009D487C /* Bag+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Bag+Rx.swift"; sourceTree = ""; };
- 8E28B3DF2AD9938E009D487C /* RecursiveScheduler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RecursiveScheduler.swift; sourceTree = ""; };
- 8E28B3E02AD9938E009D487C /* OperationQueueScheduler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OperationQueueScheduler.swift; sourceTree = ""; };
- 8E28B3E12AD9938E009D487C /* VirtualTimeScheduler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VirtualTimeScheduler.swift; sourceTree = ""; };
- 8E28B3E22AD9938E009D487C /* SchedulerServices+Emulation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "SchedulerServices+Emulation.swift"; sourceTree = ""; };
- 8E28B3E32AD9938E009D487C /* CurrentThreadScheduler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CurrentThreadScheduler.swift; sourceTree = ""; };
- 8E28B3E42AD9938E009D487C /* MainScheduler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MainScheduler.swift; sourceTree = ""; };
- 8E28B3E52AD9938E009D487C /* ConcurrentDispatchQueueScheduler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConcurrentDispatchQueueScheduler.swift; sourceTree = ""; };
- 8E28B3E72AD9938E009D487C /* ScheduledItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ScheduledItem.swift; sourceTree = ""; };
- 8E28B3E82AD9938E009D487C /* InvocableType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InvocableType.swift; sourceTree = ""; };
- 8E28B3E92AD9938E009D487C /* InvocableScheduledItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InvocableScheduledItem.swift; sourceTree = ""; };
- 8E28B3EA2AD9938E009D487C /* DispatchQueueConfiguration.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DispatchQueueConfiguration.swift; sourceTree = ""; };
- 8E28B3EB2AD9938E009D487C /* ScheduledItemType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ScheduledItemType.swift; sourceTree = ""; };
- 8E28B3EC2AD9938E009D487C /* ConcurrentMainScheduler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConcurrentMainScheduler.swift; sourceTree = ""; };
- 8E28B3ED2AD9938E009D487C /* SerialDispatchQueueScheduler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SerialDispatchQueueScheduler.swift; sourceTree = ""; };
- 8E28B3EE2AD9938E009D487C /* HistoricalScheduler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HistoricalScheduler.swift; sourceTree = ""; };
- 8E28B3EF2AD9938E009D487C /* VirtualTimeConverterType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VirtualTimeConverterType.swift; sourceTree = ""; };
- 8E28B3F02AD9938E009D487C /* HistoricalSchedulerTimeConverter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HistoricalSchedulerTimeConverter.swift; sourceTree = ""; };
- 8E28B3F12AD9938E009D487C /* Cancelable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Cancelable.swift; sourceTree = ""; };
- 8E28B3F22AD9938E009D487C /* ObservableType+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ObservableType+Extensions.swift"; sourceTree = ""; };
- 8E28B3F32AD9938E009D487C /* Disposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Disposable.swift; sourceTree = ""; };
- 8E28B3F52AD9938E009D487C /* Platform.Darwin.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Platform.Darwin.swift; sourceTree = ""; };
- 8E28B3F62AD9938E009D487C /* DispatchQueue+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "DispatchQueue+Extensions.swift"; sourceTree = ""; };
- 8E28B3F72AD9938E009D487C /* AtomicInt.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AtomicInt.swift; sourceTree = ""; };
- 8E28B3F92AD9938E009D487C /* Bag.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Bag.swift; sourceTree = ""; };
- 8E28B3FA2AD9938E009D487C /* PriorityQueue.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PriorityQueue.swift; sourceTree = ""; };
- 8E28B3FB2AD9938E009D487C /* Queue.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Queue.swift; sourceTree = ""; };
- 8E28B3FC2AD9938E009D487C /* InfiniteSequence.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InfiniteSequence.swift; sourceTree = ""; };
- 8E28B3FD2AD9938E009D487C /* Platform.Linux.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Platform.Linux.swift; sourceTree = ""; };
- 8E28B3FE2AD9938E009D487C /* RecursiveLock.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RecursiveLock.swift; sourceTree = ""; };
- 8E28B4012AD9938E009D487C /* Completable+AndThen.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Completable+AndThen.swift"; sourceTree = ""; };
- 8E28B4022AD9938E009D487C /* PrimitiveSequence+Zip+arity.tt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "PrimitiveSequence+Zip+arity.tt"; sourceTree = ""; };
- 8E28B4032AD9938E009D487C /* Completable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Completable.swift; sourceTree = ""; };
- 8E28B4042AD9938E009D487C /* Single.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Single.swift; sourceTree = ""; };
- 8E28B4052AD9938E009D487C /* PrimitiveSequence.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PrimitiveSequence.swift; sourceTree = ""; };
- 8E28B4062AD9938E009D487C /* Maybe.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Maybe.swift; sourceTree = ""; };
- 8E28B4072AD9938E009D487C /* ObservableType+PrimitiveSequence.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ObservableType+PrimitiveSequence.swift"; sourceTree = ""; };
- 8E28B4082AD9938E009D487C /* PrimitiveSequence+Zip+arity.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "PrimitiveSequence+Zip+arity.swift"; sourceTree = ""; };
- 8E28B4092AD9938E009D487C /* PrimitiveSequence+Concurrency.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "PrimitiveSequence+Concurrency.swift"; sourceTree = ""; };
- 8E28B40B2AD9938E009D487C /* Infallible+Zip+arity.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Infallible+Zip+arity.swift"; sourceTree = ""; };
- 8E28B40C2AD9938E009D487C /* Infallible+Concurrency.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Infallible+Concurrency.swift"; sourceTree = ""; };
- 8E28B40D2AD9938E009D487C /* Infallible+Zip+arity.tt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "Infallible+Zip+arity.tt"; sourceTree = ""; };
- 8E28B40E2AD9938E009D487C /* Infallible+Create.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Infallible+Create.swift"; sourceTree = ""; };
- 8E28B40F2AD9938E009D487C /* Infallible+Operators.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Infallible+Operators.swift"; sourceTree = ""; };
- 8E28B4102AD9938E009D487C /* Infallible+Debug.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Infallible+Debug.swift"; sourceTree = ""; };
- 8E28B4112AD9938E009D487C /* Infallible+CombineLatest+arity.tt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "Infallible+CombineLatest+arity.tt"; sourceTree = ""; };
- 8E28B4122AD9938E009D487C /* Infallible+CombineLatest+arity.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Infallible+CombineLatest+arity.swift"; sourceTree = ""; };
- 8E28B4132AD9938E009D487C /* Infallible.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Infallible.swift; sourceTree = ""; };
- 8E28B4142AD9938E009D487C /* Infallible+CombineLatest+Collection.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Infallible+CombineLatest+Collection.swift"; sourceTree = ""; };
- 8E28B4152AD9938E009D487C /* ObservableConvertibleType+Infallible.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ObservableConvertibleType+Infallible.swift"; sourceTree = ""; };
- 8E28B4162AD9938E009D487C /* ObserverType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ObserverType.swift; sourceTree = ""; };
- 8E28B4172AD9938E009D487C /* Reactive.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Reactive.swift; sourceTree = ""; };
- 8E28B4182AD9938E009D487C /* ObservableType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ObservableType.swift; sourceTree = ""; };
- 8E28B41A2AD9938E009D487C /* ObserverBase.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ObserverBase.swift; sourceTree = ""; };
- 8E28B41B2AD9938E009D487C /* TailRecursiveSink.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TailRecursiveSink.swift; sourceTree = ""; };
- 8E28B41C2AD9938E009D487C /* AnonymousObserver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AnonymousObserver.swift; sourceTree = ""; };
- 8E28B41D2AD9938F009D487C /* ConnectableObservableType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConnectableObservableType.swift; sourceTree = ""; };
- 8E28B41F2AD9938F009D487C /* AsMaybe.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AsMaybe.swift; sourceTree = ""; };
- 8E28B4202AD9938F009D487C /* Timeout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Timeout.swift; sourceTree = ""; };
- 8E28B4212AD9938F009D487C /* Never.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Never.swift; sourceTree = ""; };
- 8E28B4222AD9938F009D487C /* RetryWhen.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RetryWhen.swift; sourceTree = ""; };
- 8E28B4232AD9938F009D487C /* Do.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Do.swift; sourceTree = ""; };
- 8E28B4242AD9938F009D487C /* Deferred.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Deferred.swift; sourceTree = ""; };
- 8E28B4252AD9938F009D487C /* Buffer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Buffer.swift; sourceTree = ""; };
- 8E28B4262AD9938F009D487C /* SubscribeOn.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SubscribeOn.swift; sourceTree = ""; };
- 8E28B4272AD9938F009D487C /* DefaultIfEmpty.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DefaultIfEmpty.swift; sourceTree = ""; };
- 8E28B4282AD9938F009D487C /* Using.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Using.swift; sourceTree = ""; };
- 8E28B4292AD9938F009D487C /* Delay.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Delay.swift; sourceTree = ""; };
- 8E28B42A2AD9938F009D487C /* Producer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Producer.swift; sourceTree = ""; };
- 8E28B42B2AD9938F009D487C /* GroupBy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GroupBy.swift; sourceTree = ""; };
- 8E28B42C2AD9938F009D487C /* Concat.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Concat.swift; sourceTree = ""; };
- 8E28B42D2AD9938F009D487C /* WithUnretained.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WithUnretained.swift; sourceTree = ""; };
- 8E28B42E2AD9938F009D487C /* Take.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Take.swift; sourceTree = ""; };
- 8E28B42F2AD9938F009D487C /* TakeLast.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TakeLast.swift; sourceTree = ""; };
- 8E28B4302AD9938F009D487C /* Error.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Error.swift; sourceTree = ""; };
- 8E28B4312AD9938F009D487C /* CombineLatest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CombineLatest.swift; sourceTree = ""; };
- 8E28B4322AD9938F009D487C /* Sample.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Sample.swift; sourceTree = ""; };
- 8E28B4332AD9938F009D487C /* AsSingle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AsSingle.swift; sourceTree = ""; };
- 8E28B4342AD9938F009D487C /* Empty.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Empty.swift; sourceTree = ""; };
- 8E28B4352AD9938F009D487C /* Enumerated.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Enumerated.swift; sourceTree = ""; };
- 8E28B4362AD9938F009D487C /* DistinctUntilChanged.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DistinctUntilChanged.swift; sourceTree = ""; };
- 8E28B4372AD9938F009D487C /* First.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = First.swift; sourceTree = ""; };
- 8E28B4382AD9938F009D487C /* Timer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Timer.swift; sourceTree = ""; };
- 8E28B4392AD9938F009D487C /* AddRef.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AddRef.swift; sourceTree = ""; };
- 8E28B43A2AD9938F009D487C /* Sequence.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Sequence.swift; sourceTree = ""; };
- 8E28B43B2AD9938F009D487C /* Sink.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Sink.swift; sourceTree = ""; };
- 8E28B43C2AD9938F009D487C /* Throttle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Throttle.swift; sourceTree = ""; };
- 8E28B43D2AD9938F009D487C /* Range.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Range.swift; sourceTree = ""; };
- 8E28B43E2AD9938F009D487C /* CompactMap.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CompactMap.swift; sourceTree = ""; };
- 8E28B43F2AD9938F009D487C /* WithLatestFrom.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WithLatestFrom.swift; sourceTree = ""; };
- 8E28B4402AD9938F009D487C /* ObserveOn.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ObserveOn.swift; sourceTree = ""; };
- 8E28B4412AD9938F009D487C /* CombineLatest+Collection.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CombineLatest+Collection.swift"; sourceTree = ""; };
- 8E28B4422AD9938F009D487C /* Multicast.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Multicast.swift; sourceTree = ""; };
- 8E28B4432AD9938F009D487C /* SkipWhile.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SkipWhile.swift; sourceTree = ""; };
- 8E28B4442AD9938F009D487C /* Decode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Decode.swift; sourceTree = ""; };
- 8E28B4452AD9938F009D487C /* DelaySubscription.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DelaySubscription.swift; sourceTree = ""; };
- 8E28B4462AD9938F009D487C /* Repeat.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Repeat.swift; sourceTree = ""; };
- 8E28B4472AD9938F009D487C /* ToArray.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ToArray.swift; sourceTree = ""; };
- 8E28B4482AD9938F009D487C /* Zip+arity.tt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "Zip+arity.tt"; sourceTree = ""; };
- 8E28B4492AD9938F009D487C /* Switch.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Switch.swift; sourceTree = ""; };
- 8E28B44A2AD9938F009D487C /* Window.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Window.swift; sourceTree = ""; };
- 8E28B44B2AD9938F009D487C /* Debounce.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Debounce.swift; sourceTree = ""; };
- 8E28B44C2AD9938F009D487C /* Dematerialize.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Dematerialize.swift; sourceTree = ""; };
- 8E28B44D2AD9938F009D487C /* Zip+Collection.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Zip+Collection.swift"; sourceTree = ""; };
- 8E28B44E2AD9938F009D487C /* Catch.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Catch.swift; sourceTree = ""; };
- 8E28B44F2AD9938F009D487C /* Filter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Filter.swift; sourceTree = ""; };
- 8E28B4502AD9938F009D487C /* Amb.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Amb.swift; sourceTree = ""; };
- 8E28B4512AD9938F009D487C /* Reduce.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Reduce.swift; sourceTree = ""; };
- 8E28B4522AD9938F009D487C /* CombineLatest+arity.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CombineLatest+arity.swift"; sourceTree = ""; };
- 8E28B4532AD9938F009D487C /* CombineLatest+arity.tt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "CombineLatest+arity.tt"; sourceTree = ""; };
- 8E28B4542AD9938F009D487C /* Zip.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Zip.swift; sourceTree = ""; };
- 8E28B4552AD9938F009D487C /* Debug.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Debug.swift; sourceTree = ""; };
- 8E28B4562AD9938F009D487C /* Merge.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Merge.swift; sourceTree = ""; };
- 8E28B4572AD9938F009D487C /* Skip.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Skip.swift; sourceTree = ""; };
- 8E28B4582AD9938F009D487C /* Map.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Map.swift; sourceTree = ""; };
- 8E28B4592AD9938F009D487C /* SkipUntil.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SkipUntil.swift; sourceTree = ""; };
- 8E28B45A2AD9938F009D487C /* StartWith.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StartWith.swift; sourceTree = ""; };
- 8E28B45B2AD9938F009D487C /* Just.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Just.swift; sourceTree = ""; };
- 8E28B45C2AD9938F009D487C /* TakeWithPredicate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TakeWithPredicate.swift; sourceTree = ""; };
- 8E28B45D2AD9938F009D487C /* Optional.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Optional.swift; sourceTree = ""; };
- 8E28B45E2AD9938F009D487C /* Generate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Generate.swift; sourceTree = ""; };
- 8E28B45F2AD9938F009D487C /* ShareReplayScope.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ShareReplayScope.swift; sourceTree = ""; };
- 8E28B4602AD9938F009D487C /* Scan.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Scan.swift; sourceTree = ""; };
- 8E28B4612AD9938F009D487C /* Zip+arity.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Zip+arity.swift"; sourceTree = ""; };
- 8E28B4622AD9938F009D487C /* SwitchIfEmpty.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SwitchIfEmpty.swift; sourceTree = ""; };
- 8E28B4632AD9938F009D487C /* ElementAt.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ElementAt.swift; sourceTree = ""; };
- 8E28B4642AD9938F009D487C /* Create.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Create.swift; sourceTree = ""; };
- 8E28B4652AD9938F009D487C /* Materialize.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Materialize.swift; sourceTree = ""; };
- 8E28B4662AD9938F009D487C /* SingleAsync.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SingleAsync.swift; sourceTree = ""; };
- 8E28B4672AD9938F009D487C /* Observable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Observable.swift; sourceTree = ""; };
- 8E28B4692AD9938F009D487C /* SubjectType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SubjectType.swift; sourceTree = ""; };
- 8E28B46A2AD9938F009D487C /* BehaviorSubject.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BehaviorSubject.swift; sourceTree = ""; };
- 8E28B46B2AD9938F009D487C /* AsyncSubject.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AsyncSubject.swift; sourceTree = ""; };
- 8E28B46C2AD9938F009D487C /* ReplaySubject.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReplaySubject.swift; sourceTree = ""; };
- 8E28B46D2AD9938F009D487C /* PublishSubject.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PublishSubject.swift; sourceTree = ""; };
- 8E28B46F2AD9938F009D487C /* SwiftSupport.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SwiftSupport.swift; sourceTree = ""; };
- 8E28B4702AD9938F009D487C /* Errors.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Errors.swift; sourceTree = ""; };
- 8E28B4712AD9938F009D487C /* Event.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Event.swift; sourceTree = ""; };
- 8E28B4722AD9938F009D487C /* Date+Dispatch.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Date+Dispatch.swift"; sourceTree = ""; };
- 8E28B4742AD9938F009D487C /* LockOwnerType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LockOwnerType.swift; sourceTree = ""; };
- 8E28B4752AD9938F009D487C /* SynchronizedDisposeType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SynchronizedDisposeType.swift; sourceTree = ""; };
- 8E28B4762AD9938F009D487C /* SynchronizedOnType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SynchronizedOnType.swift; sourceTree = ""; };
- 8E28B4772AD9938F009D487C /* Lock.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Lock.swift; sourceTree = ""; };
- 8E28B4782AD9938F009D487C /* AsyncLock.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AsyncLock.swift; sourceTree = ""; };
- 8E28B4792AD9938F009D487C /* SynchronizedUnsubscribeType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SynchronizedUnsubscribeType.swift; sourceTree = ""; };
- 8E28B47A2AD9938F009D487C /* Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Rx.swift; sourceTree = ""; };
- 8E28B47C2AD9938F009D487C /* DisposeBase.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DisposeBase.swift; sourceTree = ""; };
- 8E28B47D2AD9938F009D487C /* DisposeBag.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DisposeBag.swift; sourceTree = ""; };
- 8E28B47E2AD9938F009D487C /* ScheduledDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ScheduledDisposable.swift; sourceTree = ""; };
- 8E28B47F2AD9938F009D487C /* NopDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NopDisposable.swift; sourceTree = ""; };
- 8E28B4802AD9938F009D487C /* SubscriptionDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SubscriptionDisposable.swift; sourceTree = ""; };
- 8E28B4812AD9938F009D487C /* RefCountDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RefCountDisposable.swift; sourceTree = ""; };
- 8E28B4822AD9938F009D487C /* CompositeDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CompositeDisposable.swift; sourceTree = ""; };
- 8E28B4832AD9938F009D487C /* SingleAssignmentDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SingleAssignmentDisposable.swift; sourceTree = ""; };
- 8E28B4842AD9938F009D487C /* SerialDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SerialDisposable.swift; sourceTree = ""; };
- 8E28B4852AD9938F009D487C /* BinaryDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BinaryDisposable.swift; sourceTree = ""; };
- 8E28B4862AD9938F009D487C /* AnonymousDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AnonymousDisposable.swift; sourceTree = ""; };
- 8E28B4872AD9938F009D487C /* BooleanDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BooleanDisposable.swift; sourceTree = ""; };
- 8E28B4882AD9938F009D487C /* Disposables.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Disposables.swift; sourceTree = ""; };
- 8E28B4892AD9938F009D487C /* ImmediateSchedulerType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImmediateSchedulerType.swift; sourceTree = ""; };
- 8E28B48A2AD9938F009D487C /* SchedulerType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SchedulerType.swift; sourceTree = ""; };
- 8E28B48B2AD9938F009D487C /* RxMutableBox.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxMutableBox.swift; sourceTree = ""; };
- 8E28B5322AD9B9A8009D487C /* BleAdapterFactory.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BleAdapterFactory.swift; sourceTree = ""; };
- 8E28B5332AD9B9A8009D487C /* BleAdapter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BleAdapter.swift; sourceTree = ""; };
- 8E28B5362AD9BA2B009D487C /* RxCentralManagerType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxCentralManagerType.swift; sourceTree = ""; };
- 8E28B5372AD9BA2B009D487C /* Characteristic.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Characteristic.swift; sourceTree = ""; };
- 8E28B5382AD9BA2B009D487C /* RxCBPeripheral.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxCBPeripheral.swift; sourceTree = ""; };
- 8E28B5392AD9BA2B009D487C /* CBCentralManagerDelegateWrapper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CBCentralManagerDelegateWrapper.swift; sourceTree = ""; };
- 8E28B53A2AD9BA2B009D487C /* CBPeripheralDelegateWrapper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CBPeripheralDelegateWrapper.swift; sourceTree = ""; };
- 8E28B53B2AD9BA2B009D487C /* ScanOperation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ScanOperation.swift; sourceTree = ""; };
- 8E28B53C2AD9BA2B009D487C /* Service.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Service.swift; sourceTree = ""; };
- 8E28B53D2AD9BA2B009D487C /* Peripheral+Convenience.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Peripheral+Convenience.swift"; sourceTree = ""; };
- 8E28B53E2AD9BA2B009D487C /* RxBluetoothKit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RxBluetoothKit.h; sourceTree = ""; };
- 8E28B53F2AD9BA2B009D487C /* CBCentral+Uuid.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CBCentral+Uuid.swift"; sourceTree = ""; };
- 8E28B5402AD9BA2B009D487C /* Logging.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Logging.swift; sourceTree = ""; };
- 8E28B5412AD9BA2B009D487C /* RxCBDescriptor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxCBDescriptor.swift; sourceTree = ""; };
- 8E28B5422AD9BA2C009D487C /* RxCBService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxCBService.swift; sourceTree = ""; };
- 8E28B5432AD9BA2C009D487C /* ManagerType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ManagerType.swift; sourceTree = ""; };
- 8E28B5442AD9BA2C009D487C /* BluetoothError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BluetoothError.swift; sourceTree = ""; };
- 8E28B5452AD9BA2C009D487C /* RxPeripheralType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxPeripheralType.swift; sourceTree = ""; };
- 8E28B5462AD9BA2C009D487C /* RestoredState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RestoredState.swift; sourceTree = ""; };
- 8E28B5472AD9BA2C009D487C /* Array+Utils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Array+Utils.swift"; sourceTree = ""; };
- 8E28B5482AD9BA2C009D487C /* Observable+QueueSubscribeOn.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Observable+QueueSubscribeOn.swift"; sourceTree = ""; };
- 8E28B5492AD9BA2C009D487C /* UUIDIdentifiable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UUIDIdentifiable.swift; sourceTree = ""; };
- 8E28B54A2AD9BA2C009D487C /* ScannedPeripheral.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ScannedPeripheral.swift; sourceTree = ""; };
- 8E28B54B2AD9BA2C009D487C /* AdvertisementData.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AdvertisementData.swift; sourceTree = ""; };
- 8E28B54C2AD9BA2C009D487C /* RxCBCharacteristic.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxCBCharacteristic.swift; sourceTree = ""; };
- 8E28B54D2AD9BA2C009D487C /* RxCharacteristicType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxCharacteristicType.swift; sourceTree = ""; };
- 8E28B54E2AD9BA2C009D487C /* RxServiceType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxServiceType.swift; sourceTree = ""; };
- 8E28B54F2AD9BA2C009D487C /* Observable+Absorb.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Observable+Absorb.swift"; sourceTree = ""; };
- 8E28B5502AD9BA2C009D487C /* DeviceIdentifiers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeviceIdentifiers.swift; sourceTree = ""; };
- 8E28B5512AD9BA2C009D487C /* Peripheral.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Peripheral.swift; sourceTree = ""; };
- 8E28B5522AD9BA2C009D487C /* RxDescriptorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxDescriptorType.swift; sourceTree = ""; };
- 8E28B5532AD9BA2C009D487C /* Unimplemented.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Unimplemented.swift; sourceTree = ""; };
- 8E28B5542AD9BA2C009D487C /* Descriptor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Descriptor.swift; sourceTree = ""; };
- 8E28B5552AD9BA2C009D487C /* Boxes.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Boxes.swift; sourceTree = ""; };
- 8E28B5562AD9BA2C009D487C /* RxCBCentralManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxCBCentralManager.swift; sourceTree = ""; };
- 8E28B5572AD9BA2C009D487C /* BluetoothState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BluetoothState.swift; sourceTree = ""; };
- 8E28B5582AD9BA2C009D487C /* BluetoothManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BluetoothManager.swift; sourceTree = ""; };
- D73A55C120BBFA8100BB1C1E /* BleEvent.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BleEvent.swift; sourceTree = ""; };
- D73A55C220BBFA8100BB1C1E /* BleError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BleError.swift; sourceTree = ""; };
- D73A55C320BBFA8100BB1C1E /* BleClientManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BleClientManager.h; sourceTree = ""; };
- D73A55C520BBFA8100BB1C1E /* DisposableMap.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DisposableMap.swift; sourceTree = ""; };
- D73A55C620BBFA8100BB1C1E /* SafePromise.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SafePromise.swift; sourceTree = ""; };
- D73A55C720BBFA8100BB1C1E /* BleExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BleExtensions.swift; sourceTree = ""; };
- D73A55C820BBFA8100BB1C1E /* BleUtils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BleUtils.swift; sourceTree = ""; };
- D73A55C920BBFA8100BB1C1E /* BleModule.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BleModule.swift; sourceTree = ""; };
D73F06E81D48E17B00AD5963 /* libBlePlx.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libBlePlx.a; sourceTree = BUILT_PRODUCTS_DIR; };
D760681620BBEEA10005ECAF /* BlePlx-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "BlePlx-Bridging-Header.h"; sourceTree = ""; };
D7D202771D4F614D00E10F6A /* BlePlx.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BlePlx.m; sourceTree = ""; };
@@ -455,364 +40,9 @@
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
- 8E28B3DC2AD9938E009D487C /* Extensions */ = {
- isa = PBXGroup;
- children = (
- 8E28B3DD2AD9938E009D487C /* Bag+Rx.swift */,
- );
- path = Extensions;
- sourceTree = "";
- };
- 8E28B3DE2AD9938E009D487C /* Schedulers */ = {
- isa = PBXGroup;
- children = (
- 8E28B3DF2AD9938E009D487C /* RecursiveScheduler.swift */,
- 8E28B3E02AD9938E009D487C /* OperationQueueScheduler.swift */,
- 8E28B3E12AD9938E009D487C /* VirtualTimeScheduler.swift */,
- 8E28B3E22AD9938E009D487C /* SchedulerServices+Emulation.swift */,
- 8E28B3E32AD9938E009D487C /* CurrentThreadScheduler.swift */,
- 8E28B3E42AD9938E009D487C /* MainScheduler.swift */,
- 8E28B3E52AD9938E009D487C /* ConcurrentDispatchQueueScheduler.swift */,
- 8E28B3E62AD9938E009D487C /* Internal */,
- 8E28B3EC2AD9938E009D487C /* ConcurrentMainScheduler.swift */,
- 8E28B3ED2AD9938E009D487C /* SerialDispatchQueueScheduler.swift */,
- 8E28B3EE2AD9938E009D487C /* HistoricalScheduler.swift */,
- 8E28B3EF2AD9938E009D487C /* VirtualTimeConverterType.swift */,
- 8E28B3F02AD9938E009D487C /* HistoricalSchedulerTimeConverter.swift */,
- );
- path = Schedulers;
- sourceTree = "";
- };
- 8E28B3E62AD9938E009D487C /* Internal */ = {
- isa = PBXGroup;
- children = (
- 8E28B3E72AD9938E009D487C /* ScheduledItem.swift */,
- 8E28B3E82AD9938E009D487C /* InvocableType.swift */,
- 8E28B3E92AD9938E009D487C /* InvocableScheduledItem.swift */,
- 8E28B3EA2AD9938E009D487C /* DispatchQueueConfiguration.swift */,
- 8E28B3EB2AD9938E009D487C /* ScheduledItemType.swift */,
- );
- path = Internal;
- sourceTree = "";
- };
- 8E28B3F42AD9938E009D487C /* Platform */ = {
- isa = PBXGroup;
- children = (
- 8E28B3F52AD9938E009D487C /* Platform.Darwin.swift */,
- 8E28B3F62AD9938E009D487C /* DispatchQueue+Extensions.swift */,
- 8E28B3F72AD9938E009D487C /* AtomicInt.swift */,
- 8E28B3F82AD9938E009D487C /* DataStructures */,
- 8E28B3FD2AD9938E009D487C /* Platform.Linux.swift */,
- 8E28B3FE2AD9938E009D487C /* RecursiveLock.swift */,
- );
- path = Platform;
- sourceTree = "";
- };
- 8E28B3F82AD9938E009D487C /* DataStructures */ = {
- isa = PBXGroup;
- children = (
- 8E28B3F92AD9938E009D487C /* Bag.swift */,
- 8E28B3FA2AD9938E009D487C /* PriorityQueue.swift */,
- 8E28B3FB2AD9938E009D487C /* Queue.swift */,
- 8E28B3FC2AD9938E009D487C /* InfiniteSequence.swift */,
- );
- path = DataStructures;
- sourceTree = "";
- };
- 8E28B3FF2AD9938E009D487C /* Traits */ = {
- isa = PBXGroup;
- children = (
- 8E28B4002AD9938E009D487C /* PrimitiveSequence */,
- 8E28B40A2AD9938E009D487C /* Infallible */,
- );
- path = Traits;
- sourceTree = "";
- };
- 8E28B4002AD9938E009D487C /* PrimitiveSequence */ = {
- isa = PBXGroup;
- children = (
- 8E28B4012AD9938E009D487C /* Completable+AndThen.swift */,
- 8E28B4022AD9938E009D487C /* PrimitiveSequence+Zip+arity.tt */,
- 8E28B4032AD9938E009D487C /* Completable.swift */,
- 8E28B4042AD9938E009D487C /* Single.swift */,
- 8E28B4052AD9938E009D487C /* PrimitiveSequence.swift */,
- 8E28B4062AD9938E009D487C /* Maybe.swift */,
- 8E28B4072AD9938E009D487C /* ObservableType+PrimitiveSequence.swift */,
- 8E28B4082AD9938E009D487C /* PrimitiveSequence+Zip+arity.swift */,
- 8E28B4092AD9938E009D487C /* PrimitiveSequence+Concurrency.swift */,
- );
- path = PrimitiveSequence;
- sourceTree = "";
- };
- 8E28B40A2AD9938E009D487C /* Infallible */ = {
- isa = PBXGroup;
- children = (
- 8E28B40B2AD9938E009D487C /* Infallible+Zip+arity.swift */,
- 8E28B40C2AD9938E009D487C /* Infallible+Concurrency.swift */,
- 8E28B40D2AD9938E009D487C /* Infallible+Zip+arity.tt */,
- 8E28B40E2AD9938E009D487C /* Infallible+Create.swift */,
- 8E28B40F2AD9938E009D487C /* Infallible+Operators.swift */,
- 8E28B4102AD9938E009D487C /* Infallible+Debug.swift */,
- 8E28B4112AD9938E009D487C /* Infallible+CombineLatest+arity.tt */,
- 8E28B4122AD9938E009D487C /* Infallible+CombineLatest+arity.swift */,
- 8E28B4132AD9938E009D487C /* Infallible.swift */,
- 8E28B4142AD9938E009D487C /* Infallible+CombineLatest+Collection.swift */,
- 8E28B4152AD9938E009D487C /* ObservableConvertibleType+Infallible.swift */,
- );
- path = Infallible;
- sourceTree = "";
- };
- 8E28B4192AD9938E009D487C /* Observers */ = {
- isa = PBXGroup;
- children = (
- 8E28B41A2AD9938E009D487C /* ObserverBase.swift */,
- 8E28B41B2AD9938E009D487C /* TailRecursiveSink.swift */,
- 8E28B41C2AD9938E009D487C /* AnonymousObserver.swift */,
- );
- path = Observers;
- sourceTree = "";
- };
- 8E28B41E2AD9938F009D487C /* Observables */ = {
- isa = PBXGroup;
- children = (
- 8E28B41F2AD9938F009D487C /* AsMaybe.swift */,
- 8E28B4202AD9938F009D487C /* Timeout.swift */,
- 8E28B4212AD9938F009D487C /* Never.swift */,
- 8E28B4222AD9938F009D487C /* RetryWhen.swift */,
- 8E28B4232AD9938F009D487C /* Do.swift */,
- 8E28B4242AD9938F009D487C /* Deferred.swift */,
- 8E28B4252AD9938F009D487C /* Buffer.swift */,
- 8E28B4262AD9938F009D487C /* SubscribeOn.swift */,
- 8E28B4272AD9938F009D487C /* DefaultIfEmpty.swift */,
- 8E28B4282AD9938F009D487C /* Using.swift */,
- 8E28B4292AD9938F009D487C /* Delay.swift */,
- 8E28B42A2AD9938F009D487C /* Producer.swift */,
- 8E28B42B2AD9938F009D487C /* GroupBy.swift */,
- 8E28B42C2AD9938F009D487C /* Concat.swift */,
- 8E28B42D2AD9938F009D487C /* WithUnretained.swift */,
- 8E28B42E2AD9938F009D487C /* Take.swift */,
- 8E28B42F2AD9938F009D487C /* TakeLast.swift */,
- 8E28B4302AD9938F009D487C /* Error.swift */,
- 8E28B4312AD9938F009D487C /* CombineLatest.swift */,
- 8E28B4322AD9938F009D487C /* Sample.swift */,
- 8E28B4332AD9938F009D487C /* AsSingle.swift */,
- 8E28B4342AD9938F009D487C /* Empty.swift */,
- 8E28B4352AD9938F009D487C /* Enumerated.swift */,
- 8E28B4362AD9938F009D487C /* DistinctUntilChanged.swift */,
- 8E28B4372AD9938F009D487C /* First.swift */,
- 8E28B4382AD9938F009D487C /* Timer.swift */,
- 8E28B4392AD9938F009D487C /* AddRef.swift */,
- 8E28B43A2AD9938F009D487C /* Sequence.swift */,
- 8E28B43B2AD9938F009D487C /* Sink.swift */,
- 8E28B43C2AD9938F009D487C /* Throttle.swift */,
- 8E28B43D2AD9938F009D487C /* Range.swift */,
- 8E28B43E2AD9938F009D487C /* CompactMap.swift */,
- 8E28B43F2AD9938F009D487C /* WithLatestFrom.swift */,
- 8E28B4402AD9938F009D487C /* ObserveOn.swift */,
- 8E28B4412AD9938F009D487C /* CombineLatest+Collection.swift */,
- 8E28B4422AD9938F009D487C /* Multicast.swift */,
- 8E28B4432AD9938F009D487C /* SkipWhile.swift */,
- 8E28B4442AD9938F009D487C /* Decode.swift */,
- 8E28B4452AD9938F009D487C /* DelaySubscription.swift */,
- 8E28B4462AD9938F009D487C /* Repeat.swift */,
- 8E28B4472AD9938F009D487C /* ToArray.swift */,
- 8E28B4482AD9938F009D487C /* Zip+arity.tt */,
- 8E28B4492AD9938F009D487C /* Switch.swift */,
- 8E28B44A2AD9938F009D487C /* Window.swift */,
- 8E28B44B2AD9938F009D487C /* Debounce.swift */,
- 8E28B44C2AD9938F009D487C /* Dematerialize.swift */,
- 8E28B44D2AD9938F009D487C /* Zip+Collection.swift */,
- 8E28B44E2AD9938F009D487C /* Catch.swift */,
- 8E28B44F2AD9938F009D487C /* Filter.swift */,
- 8E28B4502AD9938F009D487C /* Amb.swift */,
- 8E28B4512AD9938F009D487C /* Reduce.swift */,
- 8E28B4522AD9938F009D487C /* CombineLatest+arity.swift */,
- 8E28B4532AD9938F009D487C /* CombineLatest+arity.tt */,
- 8E28B4542AD9938F009D487C /* Zip.swift */,
- 8E28B4552AD9938F009D487C /* Debug.swift */,
- 8E28B4562AD9938F009D487C /* Merge.swift */,
- 8E28B4572AD9938F009D487C /* Skip.swift */,
- 8E28B4582AD9938F009D487C /* Map.swift */,
- 8E28B4592AD9938F009D487C /* SkipUntil.swift */,
- 8E28B45A2AD9938F009D487C /* StartWith.swift */,
- 8E28B45B2AD9938F009D487C /* Just.swift */,
- 8E28B45C2AD9938F009D487C /* TakeWithPredicate.swift */,
- 8E28B45D2AD9938F009D487C /* Optional.swift */,
- 8E28B45E2AD9938F009D487C /* Generate.swift */,
- 8E28B45F2AD9938F009D487C /* ShareReplayScope.swift */,
- 8E28B4602AD9938F009D487C /* Scan.swift */,
- 8E28B4612AD9938F009D487C /* Zip+arity.swift */,
- 8E28B4622AD9938F009D487C /* SwitchIfEmpty.swift */,
- 8E28B4632AD9938F009D487C /* ElementAt.swift */,
- 8E28B4642AD9938F009D487C /* Create.swift */,
- 8E28B4652AD9938F009D487C /* Materialize.swift */,
- 8E28B4662AD9938F009D487C /* SingleAsync.swift */,
- );
- path = Observables;
- sourceTree = "";
- };
- 8E28B4682AD9938F009D487C /* Subjects */ = {
- isa = PBXGroup;
- children = (
- 8E28B4692AD9938F009D487C /* SubjectType.swift */,
- 8E28B46A2AD9938F009D487C /* BehaviorSubject.swift */,
- 8E28B46B2AD9938F009D487C /* AsyncSubject.swift */,
- 8E28B46C2AD9938F009D487C /* ReplaySubject.swift */,
- 8E28B46D2AD9938F009D487C /* PublishSubject.swift */,
- );
- path = Subjects;
- sourceTree = "";
- };
- 8E28B46E2AD9938F009D487C /* SwiftSupport */ = {
- isa = PBXGroup;
- children = (
- 8E28B46F2AD9938F009D487C /* SwiftSupport.swift */,
- );
- path = SwiftSupport;
- sourceTree = "";
- };
- 8E28B4732AD9938F009D487C /* Concurrency */ = {
- isa = PBXGroup;
- children = (
- 8E28B4742AD9938F009D487C /* LockOwnerType.swift */,
- 8E28B4752AD9938F009D487C /* SynchronizedDisposeType.swift */,
- 8E28B4762AD9938F009D487C /* SynchronizedOnType.swift */,
- 8E28B4772AD9938F009D487C /* Lock.swift */,
- 8E28B4782AD9938F009D487C /* AsyncLock.swift */,
- 8E28B4792AD9938F009D487C /* SynchronizedUnsubscribeType.swift */,
- );
- path = Concurrency;
- sourceTree = "";
- };
- 8E28B47B2AD9938F009D487C /* Disposables */ = {
- isa = PBXGroup;
- children = (
- 8E28B47C2AD9938F009D487C /* DisposeBase.swift */,
- 8E28B47D2AD9938F009D487C /* DisposeBag.swift */,
- 8E28B47E2AD9938F009D487C /* ScheduledDisposable.swift */,
- 8E28B47F2AD9938F009D487C /* NopDisposable.swift */,
- 8E28B4802AD9938F009D487C /* SubscriptionDisposable.swift */,
- 8E28B4812AD9938F009D487C /* RefCountDisposable.swift */,
- 8E28B4822AD9938F009D487C /* CompositeDisposable.swift */,
- 8E28B4832AD9938F009D487C /* SingleAssignmentDisposable.swift */,
- 8E28B4842AD9938F009D487C /* SerialDisposable.swift */,
- 8E28B4852AD9938F009D487C /* BinaryDisposable.swift */,
- 8E28B4862AD9938F009D487C /* AnonymousDisposable.swift */,
- 8E28B4872AD9938F009D487C /* BooleanDisposable.swift */,
- 8E28B4882AD9938F009D487C /* Disposables.swift */,
- );
- path = Disposables;
- sourceTree = "";
- };
- D73A55C020BBFA8100BB1C1E /* MultiplatformBleAdapter */ = {
- isa = PBXGroup;
- children = (
- D73A585420BBFE0D00BB1C1E /* RxBluetoothKit */,
- D73A59CC20BBFEC800BB1C1E /* RxSwift */,
- D73A55C320BBFA8100BB1C1E /* BleClientManager.h */,
- 8E28B5332AD9B9A8009D487C /* BleAdapter.swift */,
- 8E28B5322AD9B9A8009D487C /* BleAdapterFactory.swift */,
- D73A55C220BBFA8100BB1C1E /* BleError.swift */,
- D73A55C120BBFA8100BB1C1E /* BleEvent.swift */,
- D73A55C720BBFA8100BB1C1E /* BleExtensions.swift */,
- D73A55C920BBFA8100BB1C1E /* BleModule.swift */,
- D73A55C820BBFA8100BB1C1E /* BleUtils.swift */,
- D73A55C420BBFA8100BB1C1E /* Utils */,
- );
- path = MultiplatformBleAdapter;
- sourceTree = "";
- };
- D73A55C420BBFA8100BB1C1E /* Utils */ = {
- isa = PBXGroup;
- children = (
- D73A55C520BBFA8100BB1C1E /* DisposableMap.swift */,
- D73A55C620BBFA8100BB1C1E /* SafePromise.swift */,
- );
- path = Utils;
- sourceTree = "";
- };
- D73A585420BBFE0D00BB1C1E /* RxBluetoothKit */ = {
- isa = PBXGroup;
- children = (
- 8E28B54B2AD9BA2C009D487C /* AdvertisementData.swift */,
- 8E28B5472AD9BA2C009D487C /* Array+Utils.swift */,
- 8E28B5442AD9BA2C009D487C /* BluetoothError.swift */,
- 8E28B5582AD9BA2C009D487C /* BluetoothManager.swift */,
- 8E28B5572AD9BA2C009D487C /* BluetoothState.swift */,
- 8E28B5552AD9BA2C009D487C /* Boxes.swift */,
- 8E28B53F2AD9BA2B009D487C /* CBCentral+Uuid.swift */,
- 8E28B5392AD9BA2B009D487C /* CBCentralManagerDelegateWrapper.swift */,
- 8E28B53A2AD9BA2B009D487C /* CBPeripheralDelegateWrapper.swift */,
- 8E28B5372AD9BA2B009D487C /* Characteristic.swift */,
- 8E28B5542AD9BA2C009D487C /* Descriptor.swift */,
- 8E28B5502AD9BA2C009D487C /* DeviceIdentifiers.swift */,
- 8E28B5402AD9BA2B009D487C /* Logging.swift */,
- 8E28B5432AD9BA2C009D487C /* ManagerType.swift */,
- 8E28B54F2AD9BA2C009D487C /* Observable+Absorb.swift */,
- 8E28B5482AD9BA2C009D487C /* Observable+QueueSubscribeOn.swift */,
- 8E28B5512AD9BA2C009D487C /* Peripheral.swift */,
- 8E28B53D2AD9BA2B009D487C /* Peripheral+Convenience.swift */,
- 8E28B5462AD9BA2C009D487C /* RestoredState.swift */,
- 8E28B53E2AD9BA2B009D487C /* RxBluetoothKit.h */,
- 8E28B5562AD9BA2C009D487C /* RxCBCentralManager.swift */,
- 8E28B54C2AD9BA2C009D487C /* RxCBCharacteristic.swift */,
- 8E28B5412AD9BA2B009D487C /* RxCBDescriptor.swift */,
- 8E28B5382AD9BA2B009D487C /* RxCBPeripheral.swift */,
- 8E28B5422AD9BA2C009D487C /* RxCBService.swift */,
- 8E28B5362AD9BA2B009D487C /* RxCentralManagerType.swift */,
- 8E28B54D2AD9BA2C009D487C /* RxCharacteristicType.swift */,
- 8E28B5522AD9BA2C009D487C /* RxDescriptorType.swift */,
- 8E28B5452AD9BA2C009D487C /* RxPeripheralType.swift */,
- 8E28B54E2AD9BA2C009D487C /* RxServiceType.swift */,
- 8E28B54A2AD9BA2C009D487C /* ScannedPeripheral.swift */,
- 8E28B53B2AD9BA2B009D487C /* ScanOperation.swift */,
- 8E28B53C2AD9BA2B009D487C /* Service.swift */,
- 8E28B5532AD9BA2C009D487C /* Unimplemented.swift */,
- 8E28B5492AD9BA2C009D487C /* UUIDIdentifiable.swift */,
- );
- path = RxBluetoothKit;
- sourceTree = "";
- };
- D73A59CC20BBFEC800BB1C1E /* RxSwift */ = {
- isa = PBXGroup;
- children = (
- 8E28B3DB2AD9938E009D487C /* AnyObserver.swift */,
- 8E28B3D92AD9938E009D487C /* Binder.swift */,
- 8E28B3F12AD9938E009D487C /* Cancelable.swift */,
- 8E28B4732AD9938F009D487C /* Concurrency */,
- 8E28B41D2AD9938F009D487C /* ConnectableObservableType.swift */,
- 8E28B4722AD9938F009D487C /* Date+Dispatch.swift */,
- 8E28B3F32AD9938E009D487C /* Disposable.swift */,
- 8E28B47B2AD9938F009D487C /* Disposables */,
- 8E28B4702AD9938F009D487C /* Errors.swift */,
- 8E28B4712AD9938F009D487C /* Event.swift */,
- 8E28B3DC2AD9938E009D487C /* Extensions */,
- 8E28B3D82AD9938E009D487C /* GroupedObservable.swift */,
- 8E28B4892AD9938F009D487C /* ImmediateSchedulerType.swift */,
- 8E28B4672AD9938F009D487C /* Observable.swift */,
- 8E28B3DA2AD9938E009D487C /* ObservableConvertibleType.swift */,
- 8E28B41E2AD9938F009D487C /* Observables */,
- 8E28B4182AD9938E009D487C /* ObservableType.swift */,
- 8E28B3F22AD9938E009D487C /* ObservableType+Extensions.swift */,
- 8E28B4192AD9938E009D487C /* Observers */,
- 8E28B4162AD9938E009D487C /* ObserverType.swift */,
- 8E28B3F42AD9938E009D487C /* Platform */,
- 8E28B4172AD9938E009D487C /* Reactive.swift */,
- 8E28B47A2AD9938F009D487C /* Rx.swift */,
- 8E28B48B2AD9938F009D487C /* RxMutableBox.swift */,
- 8E28B3DE2AD9938E009D487C /* Schedulers */,
- 8E28B48A2AD9938F009D487C /* SchedulerType.swift */,
- 8E28B4682AD9938F009D487C /* Subjects */,
- 8E28B46E2AD9938F009D487C /* SwiftSupport */,
- 8E28B3FF2AD9938E009D487C /* Traits */,
- );
- path = RxSwift;
- sourceTree = "";
- };
D73F06DF1D48E17B00AD5963 = {
isa = PBXGroup;
children = (
- D73A55C020BBFA8100BB1C1E /* MultiplatformBleAdapter */,
D7D202771D4F614D00E10F6A /* BlePlx.m */,
D7D202781D4F614D00E10F6A /* BlePlx.h */,
D760681620BBEEA10005ECAF /* BlePlx-Bridging-Header.h */,
@@ -886,211 +116,7 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 8E28B5222AD99390009D487C /* RefCountDisposable.swift in Sources */,
- 8E28B5732AD9BA2D009D487C /* Peripheral.swift in Sources */,
- 8E28B5652AD9BA2D009D487C /* ManagerType.swift in Sources */,
- 8E28B4922AD9938F009D487C /* OperationQueueScheduler.swift in Sources */,
- 8E28B4BA2AD9938F009D487C /* Infallible+Debug.swift in Sources */,
- 8E28B4A42AD9938F009D487C /* Disposable.swift in Sources */,
- 8E28B5232AD99390009D487C /* CompositeDisposable.swift in Sources */,
- 8E28B5012AD99390009D487C /* TakeWithPredicate.swift in Sources */,
- 8E28B4C22AD9938F009D487C /* ObserverBase.swift in Sources */,
- 8E28B5072AD99390009D487C /* SwitchIfEmpty.swift in Sources */,
- 8E28B4992AD9938F009D487C /* InvocableType.swift in Sources */,
- 8E28B4DB2AD9938F009D487C /* Empty.swift in Sources */,
- 8E28B4BE2AD9938F009D487C /* ObservableConvertibleType+Infallible.swift in Sources */,
- 8E28B4A92AD9938F009D487C /* PriorityQueue.swift in Sources */,
- 8E28B5122AD99390009D487C /* SwiftSupport.swift in Sources */,
- 8E28B5772AD9BA2D009D487C /* Boxes.swift in Sources */,
- 8E28B4A82AD9938F009D487C /* Bag.swift in Sources */,
- 8E28B5192AD99390009D487C /* Lock.swift in Sources */,
- 8E28B4D82AD9938F009D487C /* CombineLatest.swift in Sources */,
- D73A55CB20BBFA8100BB1C1E /* BleError.swift in Sources */,
- 8E28B4E32AD9938F009D487C /* Throttle.swift in Sources */,
- 8E28B51D2AD99390009D487C /* DisposeBase.swift in Sources */,
- 8E28B5792AD9BA2D009D487C /* BluetoothState.swift in Sources */,
- 8E28B4FC2AD99390009D487C /* Skip.swift in Sources */,
- 8E28B50F2AD99390009D487C /* AsyncSubject.swift in Sources */,
- 8E28B49E2AD9938F009D487C /* SerialDispatchQueueScheduler.swift in Sources */,
- 8E28B5282AD99390009D487C /* BooleanDisposable.swift in Sources */,
- 8E28B51A2AD99390009D487C /* AsyncLock.swift in Sources */,
- 8E28B4D62AD9938F009D487C /* TakeLast.swift in Sources */,
- 8E28B5002AD99390009D487C /* Just.swift in Sources */,
- 8E28B4D32AD9938F009D487C /* Concat.swift in Sources */,
- 8E28B55D2AD9BA2D009D487C /* CBPeripheralDelegateWrapper.swift in Sources */,
- 8E28B5082AD99390009D487C /* ElementAt.swift in Sources */,
- 8E28B4A02AD9938F009D487C /* VirtualTimeConverterType.swift in Sources */,
- 8E28B5692AD9BA2D009D487C /* Array+Utils.swift in Sources */,
- 8E28B5702AD9BA2D009D487C /* RxServiceType.swift in Sources */,
- 8E28B4C52AD9938F009D487C /* ConnectableObservableType.swift in Sources */,
- 8E28B4EE2AD99390009D487C /* ToArray.swift in Sources */,
- 8E28B49B2AD9938F009D487C /* DispatchQueueConfiguration.swift in Sources */,
- 8E28B51B2AD99390009D487C /* SynchronizedUnsubscribeType.swift in Sources */,
- 8E28B4E72AD99390009D487C /* ObserveOn.swift in Sources */,
- 8E28B4F72AD99390009D487C /* Reduce.swift in Sources */,
- D73A55CE20BBFA8100BB1C1E /* BleExtensions.swift in Sources */,
- D73A55CA20BBFA8100BB1C1E /* BleEvent.swift in Sources */,
- 8E28B55A2AD9BA2D009D487C /* Characteristic.swift in Sources */,
- 8E28B4B02AD9938F009D487C /* Single.swift in Sources */,
- 8E28B4D92AD9938F009D487C /* Sample.swift in Sources */,
- 8E28B4A62AD9938F009D487C /* DispatchQueue+Extensions.swift in Sources */,
- 8E28B4BC2AD9938F009D487C /* Infallible.swift in Sources */,
- 8E28B4A72AD9938F009D487C /* AtomicInt.swift in Sources */,
- 8E28B56F2AD9BA2D009D487C /* RxCharacteristicType.swift in Sources */,
- 8E28B4F52AD99390009D487C /* Filter.swift in Sources */,
- 8E28B4942AD9938F009D487C /* SchedulerServices+Emulation.swift in Sources */,
- 8E28B4F62AD99390009D487C /* Amb.swift in Sources */,
- 8E28B4F42AD99390009D487C /* Catch.swift in Sources */,
- 8E28B4C32AD9938F009D487C /* TailRecursiveSink.swift in Sources */,
- 8E28B5052AD99390009D487C /* Scan.swift in Sources */,
- D73A55D020BBFA8100BB1C1E /* BleModule.swift in Sources */,
- 8E28B4912AD9938F009D487C /* RecursiveScheduler.swift in Sources */,
- 8E28B4E12AD9938F009D487C /* Sequence.swift in Sources */,
- 8E28B5352AD9B9A8009D487C /* BleAdapter.swift in Sources */,
- 8E28B4C72AD9938F009D487C /* Timeout.swift in Sources */,
- 8E28B56E2AD9BA2D009D487C /* RxCBCharacteristic.swift in Sources */,
- 8E28B49A2AD9938F009D487C /* InvocableScheduledItem.swift in Sources */,
- 8E28B4CD2AD9938F009D487C /* SubscribeOn.swift in Sources */,
- 8E28B4952AD9938F009D487C /* CurrentThreadScheduler.swift in Sources */,
- 8E28B5602AD9BA2D009D487C /* Peripheral+Convenience.swift in Sources */,
- 8E28B4972AD9938F009D487C /* ConcurrentDispatchQueueScheduler.swift in Sources */,
- 8E28B4EB2AD99390009D487C /* Decode.swift in Sources */,
- 8E28B5662AD9BA2D009D487C /* BluetoothError.swift in Sources */,
- 8E28B4F12AD99390009D487C /* Debounce.swift in Sources */,
- 8E28B4B42AD9938F009D487C /* PrimitiveSequence+Zip+arity.swift in Sources */,
- 8E28B4E62AD99390009D487C /* WithLatestFrom.swift in Sources */,
- 8E28B5212AD99390009D487C /* SubscriptionDisposable.swift in Sources */,
- 8E28B56B2AD9BA2D009D487C /* UUIDIdentifiable.swift in Sources */,
- 8E28B4EC2AD99390009D487C /* DelaySubscription.swift in Sources */,
- D73A55CC20BBFA8100BB1C1E /* DisposableMap.swift in Sources */,
- 8E28B5622AD9BA2D009D487C /* Logging.swift in Sources */,
- D73A55CF20BBFA8100BB1C1E /* BleUtils.swift in Sources */,
- 8E28B55B2AD9BA2D009D487C /* RxCBPeripheral.swift in Sources */,
- 8E28B4D42AD9938F009D487C /* WithUnretained.swift in Sources */,
- 8E28B4A52AD9938F009D487C /* Platform.Darwin.swift in Sources */,
- 8E28B48C2AD9938F009D487C /* GroupedObservable.swift in Sources */,
- 8E28B4C02AD9938F009D487C /* Reactive.swift in Sources */,
- 8E28B4DF2AD9938F009D487C /* Timer.swift in Sources */,
- 8E28B5642AD9BA2D009D487C /* RxCBService.swift in Sources */,
- 8E28B4E92AD99390009D487C /* Multicast.swift in Sources */,
- 8E28B4A22AD9938F009D487C /* Cancelable.swift in Sources */,
- 8E28B4902AD9938F009D487C /* Bag+Rx.swift in Sources */,
- 8E28B4FA2AD99390009D487C /* Debug.swift in Sources */,
- 8E28B5712AD9BA2D009D487C /* Observable+Absorb.swift in Sources */,
- 8E28B49C2AD9938F009D487C /* ScheduledItemType.swift in Sources */,
- 8E28B52A2AD99390009D487C /* ImmediateSchedulerType.swift in Sources */,
- 8E28B5092AD99390009D487C /* Create.swift in Sources */,
- 8E28B56A2AD9BA2D009D487C /* Observable+QueueSubscribeOn.swift in Sources */,
- 8E28B50C2AD99390009D487C /* Observable.swift in Sources */,
- 8E28B51E2AD99390009D487C /* DisposeBag.swift in Sources */,
- 8E28B51F2AD99390009D487C /* ScheduledDisposable.swift in Sources */,
- 8E28B4EA2AD99390009D487C /* SkipWhile.swift in Sources */,
- 8E28B5032AD99390009D487C /* Generate.swift in Sources */,
- 8E28B55E2AD9BA2D009D487C /* ScanOperation.swift in Sources */,
- 8E28B4BF2AD9938F009D487C /* ObserverType.swift in Sources */,
- 8E28B4F92AD99390009D487C /* Zip.swift in Sources */,
- 8E28B5672AD9BA2D009D487C /* RxPeripheralType.swift in Sources */,
- 8E28B4C42AD9938F009D487C /* AnonymousObserver.swift in Sources */,
- 8E28B5632AD9BA2D009D487C /* RxCBDescriptor.swift in Sources */,
- 8E28B4D02AD9938F009D487C /* Delay.swift in Sources */,
- 8E28B5612AD9BA2D009D487C /* CBCentral+Uuid.swift in Sources */,
- 8E28B4B62AD9938F009D487C /* Infallible+Zip+arity.swift in Sources */,
- 8E28B4A32AD9938F009D487C /* ObservableType+Extensions.swift in Sources */,
- 8E28B4AC2AD9938F009D487C /* Platform.Linux.swift in Sources */,
- 8E28B5752AD9BA2D009D487C /* Unimplemented.swift in Sources */,
- 8E28B4E52AD9938F009D487C /* CompactMap.swift in Sources */,
- 8E28B4B52AD9938F009D487C /* PrimitiveSequence+Concurrency.swift in Sources */,
- 8E28B5152AD99390009D487C /* Date+Dispatch.swift in Sources */,
- 8E28B4F22AD99390009D487C /* Dematerialize.swift in Sources */,
- 8E28B4B82AD9938F009D487C /* Infallible+Create.swift in Sources */,
D7D202791D4F614D00E10F6A /* BlePlx.m in Sources */,
- 8E28B4E22AD9938F009D487C /* Sink.swift in Sources */,
- 8E28B4C12AD9938F009D487C /* ObservableType.swift in Sources */,
- 8E28B4B92AD9938F009D487C /* Infallible+Operators.swift in Sources */,
- 8E28B4932AD9938F009D487C /* VirtualTimeScheduler.swift in Sources */,
- 8E28B5022AD99390009D487C /* Optional.swift in Sources */,
- 8E28B5112AD99390009D487C /* PublishSubject.swift in Sources */,
- 8E28B5592AD9BA2D009D487C /* RxCentralManagerType.swift in Sources */,
- 8E28B50A2AD99390009D487C /* Materialize.swift in Sources */,
- 8E28B4AD2AD9938F009D487C /* RecursiveLock.swift in Sources */,
- 8E28B4D52AD9938F009D487C /* Take.swift in Sources */,
- 8E28B5182AD99390009D487C /* SynchronizedOnType.swift in Sources */,
- 8E28B4FF2AD99390009D487C /* StartWith.swift in Sources */,
- 8E28B4AB2AD9938F009D487C /* InfiniteSequence.swift in Sources */,
- 8E28B52B2AD99390009D487C /* SchedulerType.swift in Sources */,
- 8E28B4CA2AD9938F009D487C /* Do.swift in Sources */,
- 8E28B5102AD99390009D487C /* ReplaySubject.swift in Sources */,
- 8E28B57A2AD9BA2D009D487C /* BluetoothManager.swift in Sources */,
- 8E28B5742AD9BA2D009D487C /* RxDescriptorType.swift in Sources */,
- D73A55CD20BBFA8100BB1C1E /* SafePromise.swift in Sources */,
- 8E28B50D2AD99390009D487C /* SubjectType.swift in Sources */,
- 8E28B48D2AD9938F009D487C /* Binder.swift in Sources */,
- 8E28B52C2AD99390009D487C /* RxMutableBox.swift in Sources */,
- 8E28B4962AD9938F009D487C /* MainScheduler.swift in Sources */,
- 8E28B4D12AD9938F009D487C /* Producer.swift in Sources */,
- 8E28B4FD2AD99390009D487C /* Map.swift in Sources */,
- 8E28B56C2AD9BA2D009D487C /* ScannedPeripheral.swift in Sources */,
- 8E28B4C92AD9938F009D487C /* RetryWhen.swift in Sources */,
- 8E28B56D2AD9BA2D009D487C /* AdvertisementData.swift in Sources */,
- 8E28B4CB2AD9938F009D487C /* Deferred.swift in Sources */,
- 8E28B4BD2AD9938F009D487C /* Infallible+CombineLatest+Collection.swift in Sources */,
- 8E28B4CF2AD9938F009D487C /* Using.swift in Sources */,
- 8E28B4DE2AD9938F009D487C /* First.swift in Sources */,
- 8E28B4DC2AD9938F009D487C /* Enumerated.swift in Sources */,
- 8E28B4F32AD99390009D487C /* Zip+Collection.swift in Sources */,
- 8E28B5722AD9BA2D009D487C /* DeviceIdentifiers.swift in Sources */,
- 8E28B4DA2AD9938F009D487C /* AsSingle.swift in Sources */,
- 8E28B4CE2AD9938F009D487C /* DefaultIfEmpty.swift in Sources */,
- 8E28B4EF2AD99390009D487C /* Switch.swift in Sources */,
- 8E28B5142AD99390009D487C /* Event.swift in Sources */,
- 8E28B4982AD9938F009D487C /* ScheduledItem.swift in Sources */,
- 8E28B55C2AD9BA2D009D487C /* CBCentralManagerDelegateWrapper.swift in Sources */,
- 8E28B5292AD99390009D487C /* Disposables.swift in Sources */,
- 8E28B50B2AD99390009D487C /* SingleAsync.swift in Sources */,
- 8E28B4F82AD99390009D487C /* CombineLatest+arity.swift in Sources */,
- 8E28B5042AD99390009D487C /* ShareReplayScope.swift in Sources */,
- 8E28B50E2AD99390009D487C /* BehaviorSubject.swift in Sources */,
- 8E28B4FE2AD99390009D487C /* SkipUntil.swift in Sources */,
- 8E28B4AA2AD9938F009D487C /* Queue.swift in Sources */,
- 8E28B4D72AD9938F009D487C /* Error.swift in Sources */,
- 8E28B4CC2AD9938F009D487C /* Buffer.swift in Sources */,
- 8E28B4E82AD99390009D487C /* CombineLatest+Collection.swift in Sources */,
- 8E28B5342AD9B9A8009D487C /* BleAdapterFactory.swift in Sources */,
- 8E28B49D2AD9938F009D487C /* ConcurrentMainScheduler.swift in Sources */,
- 8E28B49F2AD9938F009D487C /* HistoricalScheduler.swift in Sources */,
- 8E28B4B12AD9938F009D487C /* PrimitiveSequence.swift in Sources */,
- 8E28B5132AD99390009D487C /* Errors.swift in Sources */,
- 8E28B5062AD99390009D487C /* Zip+arity.swift in Sources */,
- 8E28B5242AD99390009D487C /* SingleAssignmentDisposable.swift in Sources */,
- 8E28B5202AD99390009D487C /* NopDisposable.swift in Sources */,
- 8E28B55F2AD9BA2D009D487C /* Service.swift in Sources */,
- 8E28B48E2AD9938F009D487C /* ObservableConvertibleType.swift in Sources */,
- 8E28B4ED2AD99390009D487C /* Repeat.swift in Sources */,
- 8E28B4A12AD9938F009D487C /* HistoricalSchedulerTimeConverter.swift in Sources */,
- 8E28B4E02AD9938F009D487C /* AddRef.swift in Sources */,
- 8E28B51C2AD99390009D487C /* Rx.swift in Sources */,
- 8E28B5272AD99390009D487C /* AnonymousDisposable.swift in Sources */,
- 8E28B5252AD99390009D487C /* SerialDisposable.swift in Sources */,
- 8E28B4C82AD9938F009D487C /* Never.swift in Sources */,
- 8E28B5782AD9BA2D009D487C /* RxCBCentralManager.swift in Sources */,
- 8E28B4AF2AD9938F009D487C /* Completable.swift in Sources */,
- 8E28B48F2AD9938F009D487C /* AnyObserver.swift in Sources */,
- 8E28B4BB2AD9938F009D487C /* Infallible+CombineLatest+arity.swift in Sources */,
- 8E28B4F02AD99390009D487C /* Window.swift in Sources */,
- 8E28B4B72AD9938F009D487C /* Infallible+Concurrency.swift in Sources */,
- 8E28B5162AD99390009D487C /* LockOwnerType.swift in Sources */,
- 8E28B5262AD99390009D487C /* BinaryDisposable.swift in Sources */,
- 8E28B4B22AD9938F009D487C /* Maybe.swift in Sources */,
- 8E28B4D22AD9938F009D487C /* GroupBy.swift in Sources */,
- 8E28B4E42AD9938F009D487C /* Range.swift in Sources */,
- 8E28B5172AD99390009D487C /* SynchronizedDisposeType.swift in Sources */,
- 8E28B5682AD9BA2D009D487C /* RestoredState.swift in Sources */,
- 8E28B4DD2AD9938F009D487C /* DistinctUntilChanged.swift in Sources */,
- 8E28B4B32AD9938F009D487C /* ObservableType+PrimitiveSequence.swift in Sources */,
- 8E28B5762AD9BA2D009D487C /* Descriptor.swift in Sources */,
- 8E28B4FB2AD99390009D487C /* Merge.swift in Sources */,
- 8E28B4AE2AD9938F009D487C /* Completable+AndThen.swift in Sources */,
- 8E28B4C62AD9938F009D487C /* AsMaybe.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
diff --git a/ios/MultiplatformBleAdapter/BleAdapter.swift b/ios/MultiplatformBleAdapter/BleAdapter.swift
deleted file mode 100644
index f99ff44a7..000000000
--- a/ios/MultiplatformBleAdapter/BleAdapter.swift
+++ /dev/null
@@ -1,228 +0,0 @@
-import Foundation
-
-@objc public protocol BleAdapter {
-
- // MARK: - Properties
-
- var delegate: BleClientManagerDelegate? { get set }
-
- // MARK: - Initializers
-
- init(queue: DispatchQueue, restoreIdentifierKey: String?)
- func invalidate()
-
- // MARK: - Functions
-
- func cancelTransaction(_ transactionId: String)
-
- func setLogLevel(_ logLevel: String)
-
- func logLevel(_ resolve: Resolve,
- reject: Reject)
-
- func enable(_ transactionId: String,
- resolve: Resolve,
- reject: Reject)
-
- func disable(_ transactionId: String,
- resolve: Resolve,
- reject: Reject)
-
- func state(_ resolve: Resolve,
- reject: Reject)
-
- func startDeviceScan(_ filteredUUIDs: [String]?,
- options:[String:AnyObject]?)
-
- func stopDeviceScan()
-
- func readRSSIForDevice(_ deviceIdentifier: String,
- transactionId: String,
- resolve: @escaping Resolve,
- reject: @escaping Reject)
-
- func requestMTUForDevice(_ deviceIdentifier: String,
- mtu: Int,
- transactionId: String,
- resolve: @escaping Resolve,
- reject: @escaping Reject)
-
- func requestConnectionPriorityForDevice(_ deviceIdentifier: String,
- connectionPriority: Int,
- transactionId: String,
- resolve: @escaping Resolve,
- reject: @escaping Reject)
-
- func devices(_ deviceIdentifiers: [String],
- resolve: @escaping Resolve,
- reject: @escaping Reject)
-
- func connectedDevices(_ serviceUUIDs: [String],
- resolve: @escaping Resolve,
- reject: @escaping Reject)
-
- func connectToDevice(_ deviceIdentifier: String,
- options:[String: AnyObject]?,
- resolve: @escaping Resolve,
- reject: @escaping Reject)
-
- func cancelDeviceConnection(_ deviceIdentifier: String,
- resolve: @escaping Resolve,
- reject: @escaping Reject)
-
- func isDeviceConnected(_ deviceIdentifier: String,
- resolve: Resolve,
- reject: Reject)
-
- func discoverAllServicesAndCharacteristicsForDevice(_ deviceIdentifier: String,
- transactionId: String,
- resolve: @escaping Resolve,
- reject: @escaping Reject)
-
- func servicesForDevice(_ deviceIdentifier: String,
- resolve: Resolve,
- reject: Reject)
-
- func characteristicsForDevice(_ deviceIdentifier: String,
- serviceUUID: String,
- resolve: Resolve,
- reject: Reject)
-
- func characteristicsForService(_ serviceIdentifier: Double,
- resolve: Resolve,
- reject: Reject)
-
- func descriptorsForDevice(_ deviceIdentifier: String,
- serviceUUID: String,
- characteristicUUID: String,
- resolve: Resolve,
- reject: Reject)
-
- func descriptorsForService(_ serviceIdentifier: Double,
- characteristicUUID: String,
- resolve: Resolve,
- reject: Reject)
-
- func descriptorsForCharacteristic(_ characteristicIdentifier: Double,
- resolve: Resolve,
- reject: Reject)
-
-
- func readCharacteristicForDevice(_ deviceIdentifier: String,
- serviceUUID: String,
- characteristicUUID: String,
- transactionId: String,
- resolve: @escaping Resolve,
- reject: @escaping Reject)
-
- func readCharacteristicForService(_ serviceIdentifier: Double,
- characteristicUUID: String,
- transactionId: String,
- resolve: @escaping Resolve,
- reject: @escaping Reject)
-
- func readCharacteristic(_ characteristicIdentifier: Double,
- transactionId: String,
- resolve: @escaping Resolve,
- reject: @escaping Reject)
-
- func writeCharacteristicForDevice(_ deviceIdentifier: String,
- serviceUUID: String,
- characteristicUUID: String,
- valueBase64: String,
- response: Bool,
- transactionId: String,
- resolve: @escaping Resolve,
- reject: @escaping Reject)
-
- func writeCharacteristicForService(_ serviceIdentifier: Double,
- characteristicUUID: String,
- valueBase64: String,
- response: Bool,
- transactionId: String,
- resolve: @escaping Resolve,
- reject: @escaping Reject)
-
- func writeCharacteristic(_ characteristicIdentifier: Double,
- valueBase64: String,
- response: Bool,
- transactionId: String,
- resolve: @escaping Resolve,
- reject: @escaping Reject)
-
- func monitorCharacteristicForDevice(_ deviceIdentifier: String,
- serviceUUID: String,
- characteristicUUID: String,
- transactionId: String,
- resolve: @escaping Resolve,
- reject: @escaping Reject)
-
- func monitorCharacteristicForService(_ serviceIdentifier: Double,
- characteristicUUID: String,
- transactionId: String,
- resolve: @escaping Resolve,
- reject: @escaping Reject)
-
- func monitorCharacteristic(_ characteristicIdentifier: Double,
- transactionId: String,
- resolve: @escaping Resolve,
- reject: @escaping Reject)
-
- func readDescriptorForDevice(_ deviceIdentifier: String,
- serviceUUID: String,
- characteristicUUID: String,
- descriptorUUID: String,
- transactionId: String,
- resolve: @escaping Resolve,
- reject: @escaping Reject)
-
- func readDescriptorForService(_ serviceId: Double,
- characteristicUUID: String,
- descriptorUUID: String,
- transactionId: String,
- resolve: @escaping Resolve,
- reject: @escaping Reject)
-
- func readDescriptorForCharacteristic(_ characteristicID: Double,
- descriptorUUID: String,
- transactionId: String,
- resolve: @escaping Resolve,
- reject: @escaping Reject)
-
- func readDescriptor(_ descriptorID: Double,
- transactionId: String,
- resolve: @escaping Resolve,
- reject: @escaping Reject)
-
- func writeDescriptorForDevice(_ deviceIdentifier: String,
- serviceUUID: String,
- characteristicUUID: String,
- descriptorUUID: String,
- valueBase64: String,
- transactionId: String,
- resolve: @escaping Resolve,
- reject: @escaping Reject)
-
- func writeDescriptorForService(_ serviceID: Double,
- characteristicUUID: String,
- descriptorUUID: String,
- valueBase64: String,
- transactionId: String,
- resolve: @escaping Resolve,
- reject: @escaping Reject)
-
- func writeDescriptorForCharacteristic(_ characteristicID: Double,
- descriptorUUID: String,
- valueBase64: String,
- transactionId: String,
- resolve: @escaping Resolve,
- reject: @escaping Reject)
-
- func writeDescriptor(_ descriptorID: Double,
- valueBase64: String,
- transactionId: String,
- resolve: @escaping Resolve,
- reject: @escaping Reject)
-}
-
-extension BleClientManager: BleAdapter { }
diff --git a/ios/MultiplatformBleAdapter/BleAdapterFactory.swift b/ios/MultiplatformBleAdapter/BleAdapterFactory.swift
deleted file mode 100644
index 615e94950..000000000
--- a/ios/MultiplatformBleAdapter/BleAdapterFactory.swift
+++ /dev/null
@@ -1,24 +0,0 @@
-import Foundation
-
-public typealias BleAdapterCreator = (_ queue: DispatchQueue, _ restoreIdentifierKey: String?) -> BleAdapter
-
-// MARK: - BleAdapterFactory
-
-@objc
-public class BleAdapterFactory: NSObject {
-
- private static var bleAdapterCreator: BleAdapterCreator = { (queue, restoreIdentifierKey) in
- return BleClientManager(queue: queue, restoreIdentifierKey: restoreIdentifierKey)
- }
-
- @objc
- public static func getNewAdapterWithQueue(_ queue: DispatchQueue, restoreIdentifierKey: String?) -> BleAdapter {
- return bleAdapterCreator(queue, restoreIdentifierKey)
- }
-
- @objc
- public static func setBleAdapterCreator(_ bleAdapterCreator: @escaping BleAdapterCreator) {
- self.bleAdapterCreator = bleAdapterCreator
- }
-
-}
diff --git a/ios/MultiplatformBleAdapter/BleClientManager.h b/ios/MultiplatformBleAdapter/BleClientManager.h
deleted file mode 100644
index 9c9c2fb42..000000000
--- a/ios/MultiplatformBleAdapter/BleClientManager.h
+++ /dev/null
@@ -1,15 +0,0 @@
-//
-// BleClientManager.h
-//
-// Created by Przemysław Lenart on 27/07/16.
-//
-
-#import
-
-//! Project version number for BleClientManager.
-FOUNDATION_EXPORT double BleClientManagerVersionNumber;
-
-//! Project version string for BleClientManager.
-FOUNDATION_EXPORT const unsigned char BleClientManagerVersionString[];
-
-// In this header, you should import all the public headers of your framework using statements like #import
diff --git a/ios/MultiplatformBleAdapter/BleError.swift b/ios/MultiplatformBleAdapter/BleError.swift
deleted file mode 100644
index c6a33df86..000000000
--- a/ios/MultiplatformBleAdapter/BleError.swift
+++ /dev/null
@@ -1,309 +0,0 @@
-//
-// BleError.swift
-//
-// Created by Przemysław Lenart on 25/07/16.
-//
-
-import Foundation
-import CoreBluetooth
-
-enum BleErrorCode : Int {
- case UnknownError = 0
- case BluetoothManagerDestroyed = 1
- case OperationCancelled = 2
- case OperationTimedOut = 3
- case OperationStartFailed = 4
- case InvalidIdentifiers = 5
-
- case BluetoothUnsupported = 100
- case BluetoothUnauthorized = 101
- case BluetoothPoweredOff = 102
- case BluetoothInUnknownState = 103
- case BluetoothResetting = 104
- case BluetoothStateChangeFailed = 105
-
- case DeviceConnectionFailed = 200
- case DeviceDisconnected = 201
- case DeviceRSSIReadFailed = 202
- case DeviceAlreadyConnected = 203
- case DeviceNotFound = 204
- case DeviceNotConnected = 205
- case DeviceMTUChangeFailed = 206
-
- case ServicesDiscoveryFailed = 300
- case IncludedServicesDiscoveryFailed = 301
- case ServiceNotFound = 302
- case ServicesNotDiscovered = 303
-
- case CharacteristicsDiscoveryFailed = 400
- case CharacteristicWriteFailed = 401
- case CharacteristicReadFailed = 402
- case CharacteristicNotifyChangeFailed = 403
- case CharacteristicNotFound = 404
- case CharacteristicsNotDiscovered = 405
- case CharacteristicInvalidDataFormat = 406
-
- case DescriptorsDiscoveryFailed = 500
- case DescriptorWriteFailed = 501
- case DescriptorReadFailed = 502
- case DescriptorNotFound = 503
- case DescriptorsNotDiscovered = 504
- case DescriptorInvalidDataFormat = 505
- case DescriptorWriteNotAllowed = 506
-
- case ScanStartFailed = 600
- case LocationServicesDisabled = 601
-}
-
-struct BleError: Error {
- let errorCode: BleErrorCode
- let attErrorCode: Int?
- let iosErrorCode: Int?
- let reason: String?
-
- let deviceID: String?
- let serviceUUID: String?
- let characteristicUUID: String?
- let descriptorUUID: String?
- let internalMessage: String?
-
- init(errorCode: BleErrorCode,
- reason: String? = nil,
- attErrorCode: Int? = nil,
- iosErrorCode: Int? = nil,
- deviceID: String? = nil,
- serviceUUID: String? = nil,
- characteristicUUID: String? = nil,
- descriptorUUID: String? = nil,
- internalMessage: String? = nil) {
- self.errorCode = errorCode
- self.attErrorCode = attErrorCode
- self.iosErrorCode = iosErrorCode
- self.reason = reason
- self.deviceID = deviceID
- self.serviceUUID = serviceUUID
- self.characteristicUUID = characteristicUUID
- self.descriptorUUID = descriptorUUID
- self.internalMessage = internalMessage
- }
-}
-
-extension BleError {
- var toJSResult: Any {
- return [self.toJS, NSNull()]
- }
- var toJS: String {
- return """
- {
- "errorCode": \(self.errorCode.rawValue),
- "attErrorCode": \(self.attErrorCode.map {$0.description} ?? "null"),
- "iosErrorCode": \(self.iosErrorCode.map {$0.description} ?? "null"),
- "androidErrorCode": null,
- "reason": \(self.reason.map {"\"" + $0 + "\""} ?? "null"),
- "deviceID": \(self.deviceID.map {"\"" + $0 + "\""} ?? "null"),
- "serviceUUID": \(self.serviceUUID.map {"\"" + $0 + "\""} ?? "null"),
- "characteristicUUID": \(self.characteristicUUID.map {"\"" + $0 + "\""} ?? "null"),
- "descriptorUUID": \(self.descriptorUUID.map {"\"" + $0 + "\""} ?? "null"),
- "internalMessage": \(self.internalMessage.map {"\"" + $0 + "\""} ?? "null")
- }
- """
- }
- func callReject(_ reject: Reject) {
- reject(nil, self.toJS, nil)
- }
- func callReject(_ promise: SafePromise) {
- promise.reject(code: nil, message: self.toJS)
- }
-}
-
-extension RxError {
- var bleError: BleError {
- switch self {
- case .timeout:
- return BleError(errorCode: .OperationTimedOut, reason: self.localizedDescription)
- case .unknown: fallthrough
- case .disposed: fallthrough
- case .overflow: fallthrough
- case .argumentOutOfRange: fallthrough
- case .noElements: fallthrough
- case .moreThanOneElement:
- return BleError(errorCode: .UnknownError, reason: self.localizedDescription)
- }
- }
-}
-
-extension Error {
- var bleError: BleError {
- switch self {
- case let error as BluetoothError:
- return error.bleError
- case let error as RxError:
- return error.bleError
- case let error as BleError:
- return error
- default:
- return BleError(errorCode: .UnknownError, reason: self.localizedDescription)
- }
- }
-
- func bleError(errorCode: BleErrorCode,
- deviceID: String? = nil,
- serviceUUID: String? = nil,
- characteristicUUID: String? = nil,
- descriptorUUID: String? = nil) -> BleError {
- switch self {
- case let error as CBATTError:
- return BleError(errorCode: errorCode,
- reason: self.localizedDescription,
- attErrorCode: error.errorCode,
- iosErrorCode: nil,
- deviceID: deviceID,
- serviceUUID: serviceUUID,
- characteristicUUID: characteristicUUID,
- descriptorUUID: descriptorUUID)
- case let error as CBError:
- return BleError(errorCode: errorCode,
- reason: self.localizedDescription,
- attErrorCode: nil,
- iosErrorCode: error.errorCode,
- deviceID: deviceID,
- serviceUUID: serviceUUID,
- characteristicUUID: characteristicUUID,
- descriptorUUID: descriptorUUID)
- default:
- return BleError(errorCode: errorCode,
- reason: self.localizedDescription,
- attErrorCode: nil,
- iosErrorCode: nil,
- deviceID: deviceID,
- serviceUUID: serviceUUID,
- characteristicUUID: characteristicUUID,
- descriptorUUID: descriptorUUID)
- }
- }
-}
-
-extension Optional where Wrapped == Error {
- func bleError(errorCode: BleErrorCode,
- deviceID: String? = nil,
- serviceUUID: String? = nil,
- characteristicUUID: String? = nil,
- descriptorUUID: String? = nil) -> BleError {
-
- if let error = self {
- return error.bleError(
- errorCode: errorCode,
- deviceID: deviceID,
- serviceUUID: serviceUUID,
- characteristicUUID:
- characteristicUUID,
- descriptorUUID:
- descriptorUUID)
- }
-
- return BleError(
- errorCode: errorCode,
- reason: nil,
- attErrorCode: nil,
- iosErrorCode: nil,
- deviceID: deviceID,
- serviceUUID: serviceUUID,
- characteristicUUID: characteristicUUID,
- descriptorUUID: descriptorUUID)
- }
-}
-
-extension BluetoothError {
- var bleError: BleError {
- switch self {
- case .bluetoothUnsupported:
- return BleError(errorCode: .BluetoothUnsupported)
- case .bluetoothUnauthorized:
- return BleError(errorCode: .BluetoothUnauthorized)
- case .bluetoothPoweredOff:
- return BleError(errorCode: .BluetoothPoweredOff)
- case .bluetoothInUnknownState:
- return BleError(errorCode: .BluetoothInUnknownState)
- case .bluetoothResetting:
- return BleError(errorCode: .BluetoothResetting)
-
- case let .peripheralConnectionFailed(peripheral, error):
- return error.bleError(errorCode: .DeviceConnectionFailed, deviceID: peripheral.identifier.uuidString)
- case let .peripheralDisconnected(peripheral, error):
- return error.bleError(errorCode: .DeviceDisconnected, deviceID: peripheral.identifier.uuidString)
- case let .peripheralRSSIReadFailed(peripheral, error):
- return error.bleError(errorCode: .DeviceRSSIReadFailed, deviceID: peripheral.identifier.uuidString)
-
- case let .servicesDiscoveryFailed(peripheral, error):
- return error.bleError(errorCode: .ServicesDiscoveryFailed, deviceID: peripheral.identifier.uuidString)
-
- case let .includedServicesDiscoveryFailed(service, error):
- return error.bleError(errorCode: .IncludedServicesDiscoveryFailed,
- deviceID: service.peripheral.identifier.uuidString,
- serviceUUID: service.identifier.uuidString)
-
- case let .characteristicsDiscoveryFailed(service, error):
- return error.bleError(errorCode: .CharacteristicsDiscoveryFailed,
- deviceID: service.peripheral.identifier.uuidString,
- serviceUUID: service.uuid.fullUUIDString)
- case let .characteristicWriteFailed(characteristic, error):
- return error.bleError(errorCode: .CharacteristicWriteFailed,
- deviceID: characteristic.service.peripheral.identifier.uuidString,
- serviceUUID: characteristic.service.uuid.fullUUIDString,
- characteristicUUID: characteristic.uuid.fullUUIDString)
- case let .characteristicReadFailed(characteristic, error):
- return error.bleError(errorCode: .CharacteristicReadFailed,
- deviceID: characteristic.service.peripheral.identifier.uuidString,
- serviceUUID: characteristic.service.uuid.fullUUIDString,
- characteristicUUID: characteristic.uuid.fullUUIDString)
- case let .characteristicNotifyChangeFailed(characteristic, error):
- return error.bleError(errorCode: .CharacteristicNotifyChangeFailed,
- deviceID: characteristic.service.peripheral.identifier.uuidString,
- serviceUUID: characteristic.service.uuid.fullUUIDString,
- characteristicUUID: characteristic.uuid.fullUUIDString)
-
- case let .descriptorsDiscoveryFailed(characteristic, error):
- return error.bleError(errorCode: .DescriptorsDiscoveryFailed,
- deviceID: characteristic.service.peripheral.identifier.uuidString,
- serviceUUID: characteristic.service.uuid.fullUUIDString,
- characteristicUUID: characteristic.uuid.fullUUIDString)
- case let .descriptorWriteFailed(descriptor, error):
- return error.bleError(errorCode: .DescriptorWriteFailed,
- deviceID: descriptor.characteristic.service.peripheral.identifier.uuidString,
- serviceUUID: descriptor.characteristic.service.uuid.fullUUIDString,
- characteristicUUID: descriptor.characteristic.uuid.fullUUIDString,
- descriptorUUID: descriptor.uuid.fullUUIDString)
- case let .descriptorReadFailed(descriptor, error):
- return error.bleError(errorCode: .DescriptorReadFailed,
- deviceID: descriptor.characteristic.service.peripheral.identifier.uuidString,
- serviceUUID: descriptor.characteristic.service.uuid.fullUUIDString,
- characteristicUUID: descriptor.characteristic.uuid.fullUUIDString,
- descriptorUUID: descriptor.uuid.fullUUIDString)
- case .destroyed:
- return BleError(errorCode: .BluetoothManagerDestroyed)
- default:
- return BleError(errorCode: .UnknownError)
- }
- }
-}
-
-extension BleError {
- static func cancelled() -> BleError { return BleError(errorCode: .OperationCancelled) }
- static func invalidIdentifiers(_ id: String) -> BleError { return invalidIdentifiers([id]) }
- static func invalidIdentifiers(_ ids: [String]) -> BleError { return BleError(errorCode: .InvalidIdentifiers, internalMessage: ids.joined(separator: ", ")) }
- static func peripheralNotFound(_ uuid: String) -> BleError { return BleError(errorCode: .DeviceNotFound, deviceID: uuid) }
- static func peripheralNotConnected(_ uuid: String) -> BleError { return BleError(errorCode: .DeviceNotConnected, deviceID: uuid) }
- static func characteristicNotFound(_ uuid: String) -> BleError { return BleError(errorCode: .CharacteristicNotFound, characteristicUUID: uuid) }
- static func descriptorNotFound(_ uuid: String) -> BleError { return BleError(errorCode: .DescriptorNotFound, descriptorUUID: uuid) }
-
- static func invalidWriteDataForCharacteristic(_ uuid: String, data: String) -> BleError {
- return BleError(errorCode: .CharacteristicInvalidDataFormat, characteristicUUID: uuid, internalMessage: data)
- }
- static func invalidWriteDataForDescriptor(_ uuid: String, data: String) -> BleError {
- return BleError(errorCode: .DescriptorInvalidDataFormat, characteristicUUID: uuid, internalMessage: data)
- }
- static func descriptorWriteNotAllowed(_ uuid: String) -> BleError {
- return BleError(errorCode: .DescriptorWriteNotAllowed, descriptorUUID: uuid)
- }
- static func serviceNotFound(_ uuid: String) -> BleError { return BleError(errorCode: .ServiceNotFound, serviceUUID: uuid) }
-}
diff --git a/ios/MultiplatformBleAdapter/BleEvent.swift b/ios/MultiplatformBleAdapter/BleEvent.swift
deleted file mode 100644
index ef6f0c123..000000000
--- a/ios/MultiplatformBleAdapter/BleEvent.swift
+++ /dev/null
@@ -1,43 +0,0 @@
-//
-// BleEvent.swift
-//
-// Created by Przemysław Lenart on 25/07/16.
-//
-
-import Foundation
-
-@objc
-public class BleEvent: NSObject {
-
- @objc
- static public let scanEvent = "ScanEvent"
-
- @objc
- static public let readEvent = "ReadEvent"
-
- @objc
- static public let stateChangeEvent = "StateChangeEvent"
-
- @objc
- static public let restoreStateEvent = "RestoreStateEvent"
-
- @objc
- static public let disconnectionEvent = "DisconnectionEvent"
-
- @objc
- static public let connectingEvent = "ConnectingEvent"
-
- @objc
- static public let connectedEvent = "ConnectedEvent"
-
- @objc
- static public let events = [
- scanEvent,
- readEvent,
- stateChangeEvent,
- restoreStateEvent,
- disconnectionEvent,
- connectingEvent,
- connectedEvent
- ]
-}
diff --git a/ios/MultiplatformBleAdapter/BleExtensions.swift b/ios/MultiplatformBleAdapter/BleExtensions.swift
deleted file mode 100644
index 20c1832a0..000000000
--- a/ios/MultiplatformBleAdapter/BleExtensions.swift
+++ /dev/null
@@ -1,236 +0,0 @@
-//
-// BleExtensions.swift
-//
-// Created by Przemysław Lenart on 05/08/16.
-//
-
-import Foundation
-import CoreBluetooth
-
-extension RestoredState {
- var asJSObject: [AnyHashable: Any] {
- return [
- "connectedPeripherals": peripherals.map { $0.asJSObject() }
- ]
- }
-}
-
-extension ScannedPeripheral {
-
- var mtu: Int {
- return 23
- }
-
- var asJSObject: [AnyHashable: Any] {
- var serviceData: [String: String]?
- if let advServiceData = advertisementData.serviceData {
- var data = [String: String]()
- for (key, value) in advServiceData {
- data[key.fullUUIDString] = value.base64
- }
- serviceData = data
- }
-
- let manufacturerData = advertisementData
- .manufacturerData?
- .base64
-
- let serviceUUIDs = advertisementData
- .serviceUUIDs?
- .map { (uuid: CBUUID) in uuid.fullUUIDString }
-
- let overflowServiceUUIDs = advertisementData
- .overflowServiceUUIDs?
- .map { (uuid: CBUUID) in uuid.fullUUIDString }
-
- let solicitedServiceUUIDs = advertisementData
- .solicitedServiceUUIDs?
- .map { (uuid: CBUUID) in uuid.fullUUIDString }
-
-
- let advertisementDataDict: [AnyHashable: Any] = [
- "id": peripheral.identifier.uuidString,
- "name": peripheral.name as Any,
- "rssi": rssi,
- "mtu": mtu,
-
- "localName": advertisementData.localName as Any,
- "manufacturerData": manufacturerData as Any,
- "serviceData": serviceData as Any,
- "serviceUUIDs": serviceUUIDs as Any,
- "txPowerLevel": advertisementData.txPowerLevel as Any,
- "solicitedServiceUUIDs": solicitedServiceUUIDs as Any,
- "isConnectable": advertisementData.isConnectable as Any,
- "overflowServiceUUIDs": overflowServiceUUIDs as Any
- ]
-
- let advertisementDataJSON = try? JSONSerialization.data(withJSONObject: advertisementDataDict, options: [])
- let advertisementDataBase64 = advertisementDataJSON?.base64EncodedString()
-
- return [
- "id": peripheral.identifier.uuidString,
- "name": peripheral.name as Any,
- "rssi": rssi,
- "mtu": mtu,
-
- "localName": advertisementData.localName as Any,
- "manufacturerData": manufacturerData as Any,
- "serviceData": serviceData as Any,
- "serviceUUIDs": serviceUUIDs as Any,
- "txPowerLevel": advertisementData.txPowerLevel as Any,
- "solicitedServiceUUIDs": solicitedServiceUUIDs as Any,
- "isConnectable": advertisementData.isConnectable as Any,
- "overflowServiceUUIDs": overflowServiceUUIDs as Any,
- "rawScanRecord": advertisementDataBase64 as Any
- ]
- }
-}
-
-extension Peripheral {
- var mtu: Int {
- if #available(iOS 9.0, *) {
- return maximumWriteValueLength(for: .withoutResponse) + 3
- } else {
- return 23
- }
- }
-
- func asJSObject(withRssi: Int? = nil) -> [AnyHashable: Any] {
- return [
- "id": identifier.uuidString,
- "name": name as Any,
- "rssi": withRssi as Any,
- "mtu": mtu,
-
- "manufacturerData": NSNull(),
- "serviceData": NSNull(),
- "serviceUUIDs": services?.map { $0.uuid.fullUUIDString } ?? NSNull(),
- "localName": NSNull(),
- "txPowerLevel": NSNull(),
- "solicitedServiceUUIDs": NSNull(),
- "isConnectable": NSNull(),
- "overflowServiceUUIDs": NSNull(),
- "rawScanRecord": NSNull()
- ]
- }
-}
-
-extension Service {
- var jsIdentifier: Double {
- return Double(UInt64(objectId) & ((1 << 53) - 1))
- }
- var asJSObject: [AnyHashable: Any] {
- return [
- "id": jsIdentifier,
- "uuid": uuid.fullUUIDString,
- "deviceID": peripheral.identifier.uuidString,
- "isPrimary": isPrimary
- ]
- }
-}
-
-extension Characteristic {
- var valueBase64: String? {
- return value?.base64
- }
- var jsIdentifier: Double {
- return Double(UInt64(objectId) & ((1 << 53) - 1))
- }
- var asJSObject: [AnyHashable: Any] {
- return [
- "id": jsIdentifier,
- "uuid": uuid.fullUUIDString,
- "serviceID": service.jsIdentifier,
- "serviceUUID": service.uuid.fullUUIDString,
- "deviceID": service.peripheral.identifier.uuidString,
- "isReadable": properties.contains(.read),
- "isWritableWithResponse": properties.contains(.write),
- "isWritableWithoutResponse": properties.contains(.writeWithoutResponse),
- "isNotifiable": properties.contains(.notify),
- "isNotifying": isNotifying,
- "isIndicatable": properties.contains(.indicate),
- "value": valueBase64 as Any
- ]
- }
-}
-
-extension Descriptor {
- var valueBase64: String? {
- guard let value = self.value else { return nil }
-
- switch uuid.uuidString {
- case CBUUIDCharacteristicExtendedPropertiesString,
- CBUUIDClientCharacteristicConfigurationString,
- CBUUIDServerCharacteristicConfigurationString:
- return convertNSNumberToBase64(value)
-
- case CBUUIDCharacteristicUserDescriptionString:
- return convertStringToBase64(value)
-
- case CBUUIDCharacteristicFormatString,
- CBUUIDCharacteristicAggregateFormatString:
- return convertDataToBase64(value)
-
- default:
- if Descriptor.Constants.gattDescriptors.keys.contains(uuid.uuidString) {
- return convertDataToBase64(value)
- }
- return nil
- }
- }
-
- var jsIdentifier: Double {
- return Double(UInt64(objectId) & ((1 << 53) - 1))
- }
-
- var asJSObject: [AnyHashable: Any] {
- return [
- "id": jsIdentifier,
- "uuid": uuid.fullUUIDString,
- "characteristicUUID": characteristic.uuid.fullUUIDString,
- "characteristicID": characteristic.jsIdentifier,
- "serviceID": characteristic.service.jsIdentifier,
- "serviceUUID": characteristic.service.uuid.fullUUIDString,
- "deviceID": characteristic.service.peripheral.identifier.uuidString,
- "value": valueBase64 as Any
- ]
- }
-}
-
-extension RxBluetoothKitLog.LogLevel {
- var asJSObject: Any {
- switch self {
- case .none: return "None"
- case .verbose: return "Verbose"
- case .debug: return "Debug"
- case .info: return "Info"
- case .warning: return "Warning"
- case .error: return "Error"
- }
- }
-
- init(jsObject: String) {
- switch jsObject {
- case "Verbose": self = .verbose
- case "Debug": self = .debug
- case "Info": self = .info
- case "Warning": self = .warning
- case "Error": self = .error
- default:
- self = .none
- }
- }
-}
-
-extension BluetoothState {
- var asJSObject: Any {
- switch self {
- case .unknown: return "Unknown"
- case .resetting: return "Resetting"
- case .unsupported: return "Unsupported"
- case .unauthorized: return "Unauthorized"
- case .poweredOff: return "PoweredOff"
- case .poweredOn: return "PoweredOn"
- }
- }
-}
diff --git a/ios/MultiplatformBleAdapter/BleModule.swift b/ios/MultiplatformBleAdapter/BleModule.swift
deleted file mode 100644
index 208b62ed8..000000000
--- a/ios/MultiplatformBleAdapter/BleModule.swift
+++ /dev/null
@@ -1,1290 +0,0 @@
-//
-// BleModule.swift
-//
-// Created by Konrad Rodzik on 7/4/16.
-//
-
-import Foundation
-import CoreBluetooth
-
-@objc
-public protocol BleClientManagerDelegate {
- func dispatchEvent(_ name: String, value: Any)
-}
-
-@objc
-public class BleClientManager : NSObject {
-
- // Delegate is used to send events to
- @objc
- public var delegate: BleClientManagerDelegate?
-
- // RxBlutoothKit's manager
- private let manager : BluetoothManager
-
- // Dispatch queue used for BLE
- private let queue : DispatchQueue
-
- // MARK: Caches ----------------------------------------------------------------------------------------------------
-
- // Map of discovered services in any of connected devices.
- private var discoveredServices = [Double: Service]()
-
- // Map of discovered characteristics in any of connected devices.
- private var discoveredCharacteristics = [Double: Characteristic]()
-
- // Map of discovered descriptors in any of connected devices.
- private var discoveredDescriptors = [Double: Descriptor]()
-
- // Map of currently connected peripherals.
- private var connectedPeripherals = Dictionary()
-
- // Map of monitored characteristics observables. For monitoring sharing.
- private var monitoredCharacteristics = Dictionary>()
-
- // MARK: Disposables -----------------------------------------------------------------------------------------------
-
- // Disposable for detecting state changes of BleManager
- private var stateDisposable = Disposables.create()
-
- // Disposable for detecing state restoration of BleManager.
- private var restorationDisposable = Disposables.create()
-
- // Scan disposable which is removed when new scan is created.
- private let scanDisposable = SerialDisposable()
-
- // Disposable map for connecting peripherals.
- private let connectingPeripherals = DisposableMap()
-
- // Disposable map for every transaction.
- private let transactions = DisposableMap()
-
- // Map of pending read operations.
- private var pendingReads = Dictionary()
-
- // Constants
- static let cccdUUID = CBUUID(string: "2902")
-
- // MARK: Lifecycle -------------------------------------------------------------------------------------------------
-
- @objc
- required public init(queue: DispatchQueue, restoreIdentifierKey: String?) {
- self.queue = queue
-
- if let key = restoreIdentifierKey {
- manager = BluetoothManager(queue: queue,
- options: [CBCentralManagerOptionRestoreIdentifierKey: key as AnyObject])
- } else {
- manager = BluetoothManager(queue: queue)
- }
-
- super.init()
- stateDisposable = manager.rx_state.subscribe(onNext: { [weak self] newState in
- self?.onStateChange(newState)
- })
-
- if restoreIdentifierKey != nil {
- restorationDisposable = Observable.amb([
- manager.rx_state.skip(1).map { _ in nil },
- manager.listenOnRestoredState().map { $0 as RestoredState? }
- ])
- .take(1)
- .subscribe(onNext: {[weak self] newRestoredState in
- self?.onRestoreState(newRestoredState)
- })
- }
- }
-
- @objc
- public func invalidate() {
- // Disposables
- stateDisposable.dispose()
- restorationDisposable.dispose()
- scanDisposable.disposable = Disposables.create()
- transactions.dispose()
- connectingPeripherals.dispose()
-
- // Caches
- discoveredServices.removeAll()
- discoveredCharacteristics.removeAll()
- discoveredDescriptors.removeAll()
- monitoredCharacteristics.removeAll()
- connectedPeripherals.forEach { (_, device) in
- _ = device.cancelConnection().subscribe()
- }
- connectedPeripherals.removeAll()
- pendingReads.removeAll()
- }
-
- deinit {
- // We don't use deinit to deinitialize BleClientManager. User
- // should call invalidate() before destruction of this object.
- // In such case observables can call [weak self] closures properly.
- }
-
- // Mark: Common ----------------------------------------------------------------------------------------------------
-
- // User is able to cancel any "atomic" operation which is contained in transactions map.
- @objc
- public func cancelTransaction(_ transactionId: String) {
- transactions.removeDisposable(transactionId)
- }
-
- // User is able to enable logging of RxBluetoothKit to show how real device responds.
- @objc
- public func setLogLevel(_ logLevel: String) {
- RxBluetoothKitLog.setLogLevel(RxBluetoothKitLog.LogLevel(jsObject: logLevel))
- }
-
- // User can retrieve current log level.
- @objc
- public func logLevel(_ resolve: Resolve, reject: Reject) {
- resolve(RxBluetoothKitLog.getLogLevel().asJSObject)
- }
-
- // Mark: Monitoring state ------------------------------------------------------------------------------------------
-
- @objc
- public func enable(_ transactionId: String, resolve: Resolve, reject: Reject) {
- BleError(errorCode: .BluetoothStateChangeFailed).callReject(reject)
- }
-
- @objc
- public func disable(_ transactionId: String, resolve: Resolve, reject: Reject) {
- BleError(errorCode: .BluetoothStateChangeFailed).callReject(reject)
- }
-
- // Retrieve current BleManager's state.
- @objc
- public func state(_ resolve: Resolve, reject: Reject) {
- resolve(manager.state.asJSObject)
- }
-
- // Dispatch events when state changes.
- private func onStateChange(_ state: BluetoothState) {
- dispatchEvent(BleEvent.stateChangeEvent, value: state.asJSObject)
- }
-
- // Restore internal manager state.
- private func onRestoreState(_ restoredState: RestoredState?) {
-
- // When restored state is null then application is run for the first time.
- guard let restoredState = restoredState else {
- dispatchEvent(BleEvent.restoreStateEvent, value: NSNull())
- return
- }
-
- // When state is to be restored update all caches.
- restoredState.peripherals.forEach { peripheral in
- connectedPeripherals[peripheral.identifier] = peripheral
-
- _ = manager.rx_state.skip(1).take(1).flatMap { [weak self] state -> Observable in
- if let self = self {
- return self.manager.monitorDisconnection(for: peripheral)
- } else {
- return Observable.error(BleError.init(errorCode: BleErrorCode.BluetoothManagerDestroyed))
- }
- }
- .take(1)
- .subscribe(
- onNext: { [weak self] peripheral in
- self?.onPeripheralDisconnected(peripheral)
- },
- onError: { [weak self] error in
- self?.onPeripheralDisconnected(peripheral)
- })
-
- peripheral.services?.forEach { service in
- discoveredServices[service.jsIdentifier] = service
- service.characteristics?.forEach { characteristic in
- discoveredCharacteristics[characteristic.jsIdentifier] = characteristic
- }
- }
- }
-
- dispatchEvent(BleEvent.restoreStateEvent, value: restoredState.asJSObject)
- }
-
- // Mark: Scanning --------------------------------------------------------------------------------------------------
-
- // Start BLE scanning.
- @objc
- public func startDeviceScan(_ filteredUUIDs: [String]?, options:[String:AnyObject]?) {
-
- // iOS handles allowDuplicates option to receive more scan records.
- var rxOptions = [String:Any]()
- if let options = options {
- if ((options["allowDuplicates"]?.isEqual(to: NSNumber(value: true as Bool))) ?? false) {
- rxOptions[CBCentralManagerScanOptionAllowDuplicatesKey] = true
- }
- }
-
- // If passed iOS will show only devices with specified service UUIDs.
- var uuids: [CBUUID]? = nil
- if let filteredUUIDs = filteredUUIDs {
- guard let cbuuids = filteredUUIDs.toCBUUIDS() else {
- dispatchEvent(BleEvent.scanEvent, value: BleError.invalidIdentifiers(filteredUUIDs).toJSResult)
- return
- }
- uuids = cbuuids
- }
-
- // Scanning will emit Scan peripherals as events.
- scanDisposable.disposable = manager.scanForPeripherals(withServices: uuids, options: rxOptions)
- .subscribe(onNext: { [weak self] scannedPeripheral in
- self?.dispatchEvent(BleEvent.scanEvent, value: [NSNull(), scannedPeripheral.asJSObject])
- }, onError: { [weak self] errorType in
- self?.dispatchEvent(BleEvent.scanEvent, value: errorType.bleError.toJSResult)
- })
- }
-
- // Stop BLE scanning.
- @objc
- public func stopDeviceScan() {
- scanDisposable.disposable = Disposables.create()
- }
-
- // Read peripheral's RSSI.
- @objc
- public func readRSSIForDevice(_ deviceIdentifier: String,
- transactionId: String,
- resolve: @escaping Resolve,
- reject: @escaping Reject) {
- guard let deviceId = UUID(uuidString: deviceIdentifier) else {
- BleError.invalidIdentifiers(deviceIdentifier).callReject(reject)
- return
- }
-
- guard let peripheral = connectedPeripherals[deviceId] else {
- BleError.peripheralNotConnected(deviceIdentifier).callReject(reject)
- return
- }
-
- let safePromise = SafePromise(resolve: resolve, reject: reject)
- let disposable = peripheral.readRSSI()
- .subscribe(
- onNext: { (peripheral, rssi) in
- safePromise.resolve(peripheral.asJSObject(withRssi: rssi))
- },
- onError: {error in
- error.bleError.callReject(safePromise)
- },
- onCompleted: nil,
- onDisposed: { [weak self] in
- self?.transactions.removeDisposable(transactionId)
- BleError.cancelled().callReject(safePromise)
- })
-
- transactions.replaceDisposable(transactionId, disposable: disposable)
- }
-
- @objc
- public func requestMTUForDevice(_ deviceIdentifier: String,
- mtu: Int,
- transactionId: String,
- resolve: @escaping Resolve,
- reject: @escaping Reject) {
-
- guard let deviceId = UUID(uuidString: deviceIdentifier) else {
- BleError.invalidIdentifiers(deviceIdentifier).callReject(reject)
- return
- }
-
- guard let peripheral = connectedPeripherals[deviceId] else {
- BleError.peripheralNotConnected(deviceIdentifier).callReject(reject)
- return
- }
-
- resolve(peripheral.asJSObject())
- }
-
- @objc
- public func requestConnectionPriorityForDevice(_ deviceIdentifier: String,
- connectionPriority: Int,
- transactionId: String,
- resolve: @escaping Resolve,
- reject: @escaping Reject) {
-
- guard let deviceId = UUID(uuidString: deviceIdentifier) else {
- BleError.invalidIdentifiers(deviceIdentifier).callReject(reject)
- return
- }
-
- guard let peripheral = connectedPeripherals[deviceId] else {
- BleError.peripheralNotConnected(deviceIdentifier).callReject(reject)
- return
- }
-
- resolve(peripheral.asJSObject())
- }
-
- // Mark: Device management -----------------------------------------------------------------------------------------
-
- @objc
- public func devices(_ deviceIdentifiers: [String],
- resolve: @escaping Resolve,
- reject: @escaping Reject) {
- let uuids = deviceIdentifiers.compactMap { UUID(uuidString: $0) }
- if (uuids.count != deviceIdentifiers.count) {
- BleError.invalidIdentifiers(deviceIdentifiers).callReject(reject)
- return
- }
-
- _ = manager.retrievePeripherals(withIdentifiers: uuids)
- .subscribe(
- onNext: { peripherals in
- resolve(peripherals.map { $0.asJSObject() })
- },
- onError: { error in
- error.bleError.callReject(reject)
- }
- );
- }
-
- @objc
- public func connectedDevices(_ serviceUUIDs: [String],
- resolve: @escaping Resolve,
- reject: @escaping Reject) {
- let uuids = serviceUUIDs.compactMap { $0.toCBUUID() }
- if (uuids.count != serviceUUIDs.count) {
- BleError.invalidIdentifiers(serviceUUIDs).callReject(reject)
- return
- }
-
- _ = manager.retrieveConnectedPeripherals(withServices: uuids)
- .subscribe(
- onNext: { peripherals in
- resolve(peripherals.map { $0.asJSObject() })
- },
- onError: { error in
- error.bleError.callReject(reject)
- }
- );
- }
-
- // Mark: Connection management -------------------------------------------------------------------------------------
-
- // Connect to specified device.
- @objc
- public func connectToDevice(_ deviceIdentifier: String,
- options:[String: AnyObject]?,
- resolve: @escaping Resolve,
- reject: @escaping Reject) {
- guard let deviceId = UUID(uuidString: deviceIdentifier) else {
- BleError.invalidIdentifiers(deviceIdentifier).callReject(reject)
- return
- }
-
- var timeout: Int? = nil
-
- if let options = options {
- timeout = options["timeout"] as? Int
- }
-
- safeConnectToDevice(deviceId, timeout: timeout, promise: SafePromise(resolve: resolve, reject: reject))
- }
-
- private func safeConnectToDevice(_ deviceId: UUID,
- timeout: Int?,
- promise: SafePromise) {
-
- var peripheral: Peripheral? = nil
- var connectionObservable = manager.retrievePeripherals(withIdentifiers: [deviceId])
- .flatMap { devices -> Observable in
- guard let device = devices.first else {
- return Observable.error(BleError.peripheralNotFound(deviceId.uuidString))
- }
- peripheral = device
- return Observable.just(device)
- }
- .flatMap { $0.connect() }
-
- if let timeout = timeout {
- let timeoutInterval = RxTimeInterval.milliseconds(Int(timeout))
- connectionObservable = connectionObservable.timeout(timeoutInterval, scheduler: ConcurrentDispatchQueueScheduler(queue: queue))
- }
-
- let connectionDisposable = connectionObservable
- .do(onSubscribe: { [weak self] in
- self?.dispatchEvent(BleEvent.connectingEvent, value: deviceId.uuidString)
- })
- .subscribe(
- onNext: { [weak self] peripheral in
- // When device is connected we save it in dictionary and clear all old cached values.
- self?.connectedPeripherals[deviceId] = peripheral
- self?.clearCacheForPeripheral(peripheral: peripheral)
- self?.dispatchEvent(BleEvent.connectedEvent, value: deviceId.uuidString)
- },
- onError: { [weak self] error in
- if let peripheral = peripheral {
- self?.onPeripheralDisconnected(peripheral)
- } else {
- self?.dispatchEvent(BleEvent.disconnectionEvent, value: [NSNull(), ["id": deviceId.uuidString]])
- }
- error.bleError.callReject(promise)
- },
- onCompleted: { [weak self] in
- if let device = self?.connectedPeripherals[deviceId] {
- _ = self?.manager.monitorDisconnection(for: device)
- .take(1)
- .subscribe(onNext: { peripheral in
- // We are monitoring peripheral disconnections to clean up state.
- self?.onPeripheralDisconnected(peripheral)
- }, onError: { error in
- self?.onPeripheralDisconnected(device)
- })
- promise.resolve(device.asJSObject())
- } else {
- BleError.peripheralNotFound(deviceId.uuidString).callReject(promise)
- }
- },
- onDisposed: { [weak self] in
- self?.connectingPeripherals.removeDisposable(deviceId)
- BleError.cancelled().callReject(promise)
- }
- );
-
- connectingPeripherals.replaceDisposable(deviceId, disposable: connectionDisposable)
- }
-
- private func onPeripheralDisconnected(_ peripheral: Peripheral) {
- self.connectedPeripherals[peripheral.identifier] = nil
- clearCacheForPeripheral(peripheral: peripheral)
- dispatchEvent(BleEvent.disconnectionEvent, value: [NSNull(), peripheral.asJSObject()])
- }
-
- // User is able to cancel device connection.
- @objc
- public func cancelDeviceConnection(_ deviceIdentifier: String,
- resolve: @escaping Resolve,
- reject: @escaping Reject) {
- guard let deviceId = UUID(uuidString: deviceIdentifier) else {
- BleError.invalidIdentifiers(deviceIdentifier).callReject(reject)
- return
- }
-
- if let peripheral = connectedPeripherals[deviceId] {
- _ = peripheral
- .cancelConnection()
- .subscribe(
- onNext: nil,
- onError: { error in
- error.bleError.callReject(reject)
- },
- onCompleted: { [weak self] in
- self?.clearCacheForPeripheral(peripheral: peripheral)
- self?.connectedPeripherals[deviceId] = nil
- resolve(peripheral.asJSObject())
- }
- );
- } else {
- connectingPeripherals.removeDisposable(deviceId)
- BleError.cancelled().callReject(reject)
- }
- }
-
- // Retrieve if device is connected.
- @objc
- public func isDeviceConnected(_ deviceIdentifier: String, resolve: Resolve, reject: Reject) {
- guard let deviceId = UUID(uuidString: deviceIdentifier) else {
- BleError.invalidIdentifiers(deviceIdentifier).callReject(reject)
- return
- }
-
- if let device = connectedPeripherals[deviceId] {
- resolve(device.isConnected)
- } else {
- resolve(false)
- }
- }
-
- // Mark: Discovery -------------------------------------------------------------------------------------------------
-
- // After connection for peripheral to be usable,
- // user should discover all services and characteristics for peripheral.
- @objc
- public func discoverAllServicesAndCharacteristicsForDevice(_ deviceIdentifier: String,
- transactionId: String,
- resolve: @escaping Resolve,
- reject: @escaping Reject) {
-
- guard let deviceId = UUID(uuidString: deviceIdentifier) else {
- BleError.invalidIdentifiers(deviceIdentifier).callReject(reject)
- return
- }
-
- guard let peripheral = connectedPeripherals[deviceId] else {
- BleError.peripheralNotConnected(deviceIdentifier).callReject(reject)
- return
- }
-
- safeDiscoverAllServicesAndCharacteristicsForDevice(peripheral, transactionId: transactionId, promise: SafePromise(resolve: resolve, reject: reject))
- }
-
- func safeDiscoverAllServicesAndCharacteristicsForDevice(_ peripheral: Peripheral,
- transactionId: String,
- promise: SafePromise) {
- let disposable = peripheral
- .discoverServices(nil)
- .flatMap { [weak self] services -> Observable in
- for service in services {
- self?.discoveredServices[service.jsIdentifier] = service
- }
- return Observable.from(services)
- }
- .flatMap { $0.discoverCharacteristics(nil) }
- .flatMap { [weak self] characteristics -> Observable in
- for characteristic in characteristics {
- self?.discoveredCharacteristics[characteristic.jsIdentifier] = characteristic
- }
- return Observable.from(characteristics)
- }
- .flatMap { $0.discoverDescriptors() }
- .subscribe(
- onNext: { [weak self] descriptors in
- for descriptor in descriptors {
- self?.discoveredDescriptors[descriptor.jsIdentifier] = descriptor
- }
- },
- onError: { error in error.bleError.callReject(promise) },
- onCompleted: { promise.resolve(peripheral.asJSObject()) },
- onDisposed: { [weak self] in
- self?.transactions.removeDisposable(transactionId)
- BleError.cancelled().callReject(promise)
- }
- )
-
- transactions.replaceDisposable(transactionId, disposable: disposable)
- }
-
- // Mark: Service and characteristic getters ------------------------------------------------------------------------
-
- // When fetching services for peripherals we update our cache.
- @objc
- public func servicesForDevice(_ deviceIdentifier: String, resolve: Resolve, reject: Reject) {
-
- guard let deviceId = UUID(uuidString: deviceIdentifier) else {
- BleError.invalidIdentifiers(deviceIdentifier).callReject(reject)
- return
- }
-
- guard let peripheral = connectedPeripherals[deviceId] else {
- BleError.peripheralNotConnected(deviceIdentifier).callReject(reject)
- return
- }
-
- let services = peripheral
- .services?.map { [weak self] service in
- self?.discoveredServices[service.jsIdentifier] = service
- return service.asJSObject
- } ?? []
-
- resolve(services)
- }
-
- // When fetching characteristics for peripherals we update our cache.
- @objc
- public func characteristicsForDevice(_ deviceIdentifier: String,
- serviceUUID: String,
- resolve: Resolve,
- reject: Reject) {
-
- guard let deviceId = UUID(uuidString: deviceIdentifier),
- let serviceId = serviceUUID.toCBUUID() else {
- BleError.invalidIdentifiers([deviceIdentifier, serviceUUID]).callReject(reject)
- return
- }
-
- guard let peripheral = connectedPeripherals[deviceId] else {
- BleError.peripheralNotConnected(deviceIdentifier).callReject(reject)
- return
- }
-
- guard let service = (peripheral.services?.first { serviceId == $0.uuid }) else {
- BleError.serviceNotFound(serviceUUID).callReject(reject)
- return
- }
-
- characteristicForService(service,
- resolve: resolve,
- reject: reject)
- }
-
- @objc
- public func characteristicsForService(_ serviceIdentifier: Double,
- resolve: Resolve,
- reject: Reject) {
- guard let service = discoveredServices[serviceIdentifier] else {
- BleError.serviceNotFound(serviceIdentifier.description).callReject(reject)
- return
- }
-
- characteristicForService(service, resolve: resolve, reject: reject)
- }
-
- private func characteristicForService(_ service: Service, resolve: Resolve, reject: Reject) {
- let characteristics = service.characteristics?
- .map { [weak self] characteristic in
- self?.discoveredCharacteristics[characteristic.jsIdentifier] = characteristic
- return characteristic.asJSObject
- } ?? []
-
- resolve(characteristics)
- }
-
- @objc
- public func descriptorsForDevice(_ deviceIdentifier: String,
- serviceUUID: String,
- characteristicUUID: String,
- resolve: Resolve,
- reject: Reject) {
- guard let deviceId = UUID(uuidString: deviceIdentifier),
- let serviceId = serviceUUID.toCBUUID(),
- let characteristicId = characteristicUUID.toCBUUID() else {
- BleError.invalidIdentifiers([deviceIdentifier, serviceUUID, characteristicUUID]).callReject(reject)
- return
- }
-
- guard let peripheral = connectedPeripherals[deviceId] else {
- BleError.peripheralNotConnected(deviceIdentifier).callReject(reject)
- return
- }
-
- guard let service = (peripheral.services?.first { serviceId == $0.uuid }) else {
- BleError.serviceNotFound(serviceUUID).callReject(reject)
- return
- }
-
- guard let characteristic = (service.characteristics?.first { characteristicId == $0.uuid }) else {
- BleError.characteristicNotFound(characteristicUUID).callReject(reject)
- return
- }
-
- descriptorsForCharacteristic(characteristic, resolve: resolve, reject: reject)
- }
-
- @objc
- public func descriptorsForService(_ serviceIdentifier: Double,
- characteristicUUID: String,
- resolve: Resolve,
- reject: Reject) {
- guard let characteristicId = characteristicUUID.toCBUUID() else {
- BleError.invalidIdentifiers(characteristicUUID).callReject(reject)
- return
- }
-
- guard let service = discoveredServices[serviceIdentifier] else {
- BleError.serviceNotFound(serviceIdentifier.description).callReject(reject)
- return
- }
-
- guard let characteristic = (service.characteristics?.first { characteristicId == $0.uuid }) else {
- BleError.characteristicNotFound(characteristicUUID).callReject(reject)
- return
- }
-
- descriptorsForCharacteristic(characteristic, resolve: resolve, reject: reject)
- }
-
- @objc
- public func descriptorsForCharacteristic(_ characteristicIdentifier: Double,
- resolve: Resolve,
- reject: Reject) {
- guard let characteristic = discoveredCharacteristics[characteristicIdentifier] else {
- BleError.characteristicNotFound(characteristicIdentifier.description).callReject(reject)
- return
- }
-
- descriptorsForCharacteristic(characteristic, resolve: resolve, reject: reject)
- }
-
- private func descriptorsForCharacteristic(_ characteristic: Characteristic, resolve: Resolve, reject: Reject) {
- let descriptors = characteristic.descriptors?
- .map { [weak self] descriptor in
- self?.discoveredDescriptors[descriptor.jsIdentifier] = descriptor
- return descriptor.asJSObject
- } ?? []
-
- resolve(descriptors)
- }
-
- // Mark: Reading ---------------------------------------------------------------------------------------------------
-
- @objc
- public func readCharacteristicForDevice(_ deviceIdentifier: String,
- serviceUUID: String,
- characteristicUUID: String,
- transactionId: String,
- resolve: @escaping Resolve,
- reject: @escaping Reject) {
- let observable = getCharacteristicForDevice(deviceIdentifier,
- serviceUUID: serviceUUID,
- characteristicUUID: characteristicUUID)
- safeReadCharacteristicForDevice(observable,
- transactionId: transactionId,
- promise: SafePromise(resolve: resolve, reject: reject))
- }
-
- @objc
- public func readCharacteristicForService(_ serviceIdentifier: Double,
- characteristicUUID: String,
- transactionId: String,
- resolve: @escaping Resolve,
- reject: @escaping Reject) {
- let observable = getCharacteristicForService(serviceIdentifier,
- characteristicUUID: characteristicUUID)
- safeReadCharacteristicForDevice(observable,
- transactionId: transactionId,
- promise: SafePromise(resolve: resolve, reject: reject))
- }
-
- @objc
- public func readCharacteristic(_ characteristicIdentifier: Double,
- transactionId: String,
- resolve: @escaping Resolve,
- reject: @escaping Reject) {
- safeReadCharacteristicForDevice(getCharacteristic(characteristicIdentifier),
- transactionId: transactionId,
- promise: SafePromise(resolve: resolve, reject: reject))
- }
-
- private func safeReadCharacteristicForDevice(_ characteristicObservable: Observable,
- transactionId: String,
- promise: SafePromise) {
- var characteristicIdentifier: Double? = nil
- let disposable = characteristicObservable
- .flatMap { [weak self] characteristic -> Observable in
- characteristicIdentifier = characteristic.jsIdentifier
- let reads = self?.pendingReads[characteristic.jsIdentifier] ?? 0
- self?.pendingReads[characteristic.jsIdentifier] = reads + 1
- return characteristic.readValue()
- }
- .subscribe(
- onNext: { characteristic in
- promise.resolve(characteristic.asJSObject)
- },
- onError: { error in
- error.bleError.callReject(promise)
- },
- onCompleted: nil,
- onDisposed: { [weak self] in
- self?.transactions.removeDisposable(transactionId)
- BleError.cancelled().callReject(promise)
- if let id = characteristicIdentifier {
- let reads = self?.pendingReads[id] ?? 0
- if reads > 0 {
- self?.pendingReads[id] = reads - 1
- }
- }
- }
- )
-
- transactions.replaceDisposable(transactionId, disposable: disposable)
- }
-
- // MARK: Writing ---------------------------------------------------------------------------------------------------
-
- @objc
- public func writeCharacteristicForDevice( _ deviceIdentifier: String,
- serviceUUID: String,
- characteristicUUID: String,
- valueBase64: String,
- response: Bool,
- transactionId: String,
- resolve: @escaping Resolve,
- reject: @escaping Reject) {
- guard let value = valueBase64.fromBase64 else {
- return BleError.invalidWriteDataForCharacteristic(characteristicUUID, data: valueBase64).callReject(reject)
- }
-
- let observable = getCharacteristicForDevice(deviceIdentifier,
- serviceUUID: serviceUUID,
- characteristicUUID: characteristicUUID)
- safeWriteCharacteristicForDevice(observable,
- value: value,
- response: response,
- transactionId: transactionId,
- promise: SafePromise(resolve: resolve, reject: reject))
- }
-
- @objc
- public func writeCharacteristicForService( _ serviceIdentifier: Double,
- characteristicUUID: String,
- valueBase64: String,
- response: Bool,
- transactionId: String,
- resolve: @escaping Resolve,
- reject: @escaping Reject) {
- guard let value = valueBase64.fromBase64 else {
- return BleError.invalidWriteDataForCharacteristic(characteristicUUID, data: valueBase64).callReject(reject)
- }
-
- let observable = getCharacteristicForService(serviceIdentifier,
- characteristicUUID: characteristicUUID)
-
- safeWriteCharacteristicForDevice(observable,
- value: value,
- response: response,
- transactionId: transactionId,
- promise: SafePromise(resolve: resolve, reject: reject))
- }
-
- @objc
- public func writeCharacteristic( _ characteristicIdentifier: Double,
- valueBase64: String,
- response: Bool,
- transactionId: String,
- resolve: @escaping Resolve,
- reject: @escaping Reject) {
- guard let value = valueBase64.fromBase64 else {
- return BleError.invalidWriteDataForCharacteristic(characteristicIdentifier.description, data: valueBase64)
- .callReject(reject)
- }
-
- safeWriteCharacteristicForDevice(getCharacteristic(characteristicIdentifier),
- value: value,
- response: response,
- transactionId: transactionId,
- promise: SafePromise(resolve: resolve, reject: reject))
- }
-
- private func safeWriteCharacteristicForDevice(_ characteristicObservable: Observable,
- value: Data,
- response: Bool,
- transactionId: String,
- promise: SafePromise) {
- let disposable = characteristicObservable
- .flatMap {
- $0.writeValue(value, type: response ? .withResponse : .withoutResponse)
- }
- .subscribe(
- onNext: { characteristic in
- promise.resolve(characteristic.asJSObject)
- },
- onError: { error in
- error.bleError.callReject(promise)
- },
- onCompleted: nil,
- onDisposed: { [weak self] in
- self?.transactions.removeDisposable(transactionId)
- BleError.cancelled().callReject(promise)
- }
- )
-
- transactions.replaceDisposable(transactionId, disposable: disposable)
- }
-
- // MARK: Monitoring ------------------------------------------------------------------------------------------------
-
- @objc
- public func monitorCharacteristicForDevice( _ deviceIdentifier: String,
- serviceUUID: String,
- characteristicUUID: String,
- transactionId: String,
- resolve: @escaping Resolve,
- reject: @escaping Reject) {
- let observable = getCharacteristicForDevice(deviceIdentifier,
- serviceUUID: serviceUUID,
- characteristicUUID: characteristicUUID)
-
- safeMonitorCharacteristicForDevice(observable,
- transactionId: transactionId,
- promise: SafePromise(resolve: resolve, reject: reject))
- }
-
- @objc
- public func monitorCharacteristicForService( _ serviceIdentifier: Double,
- characteristicUUID: String,
- transactionId: String,
- resolve: @escaping Resolve,
- reject: @escaping Reject) {
- let observable = getCharacteristicForService(serviceIdentifier, characteristicUUID: characteristicUUID)
-
- safeMonitorCharacteristicForDevice(observable,
- transactionId: transactionId,
- promise: SafePromise(resolve: resolve, reject: reject))
- }
-
- @objc
- public func monitorCharacteristic( _ characteristicIdentifier: Double,
- transactionId: String,
- resolve: @escaping Resolve,
- reject: @escaping Reject) {
- safeMonitorCharacteristicForDevice(getCharacteristic(characteristicIdentifier),
- transactionId: transactionId,
- promise: SafePromise(resolve: resolve, reject: reject))
- }
-
- private func safeMonitorCharacteristicForDevice(_ characteristicObservable: Observable,
- transactionId: String,
- promise: SafePromise) {
-
- let observable: Observable = characteristicObservable
- .flatMap { [weak self] (characteristic: Characteristic) -> Observable in
- let characteristicIdentifier = characteristic.jsIdentifier
- if let monitoringObservable = self?.monitoredCharacteristics[characteristicIdentifier] {
- return monitoringObservable
- } else {
- let newObservable: Observable = characteristic
- .setNotificationAndMonitorUpdates()
- .do(onNext: nil, onError: nil, onCompleted: nil, onSubscribe: nil, onDispose: {
- _ = characteristic.setNotifyValue(false).subscribe()
- self?.monitoredCharacteristics[characteristicIdentifier] = nil
- })
- .share()
- self?.monitoredCharacteristics[characteristicIdentifier] = newObservable
- return newObservable
- }
- }
-
- let disposable = observable.subscribe(
- onNext: { [weak self] characteristic in
- if self?.pendingReads[characteristic.jsIdentifier] ?? 0 == 0 {
- self?.dispatchEvent(BleEvent.readEvent, value: [NSNull(), characteristic.asJSObject, transactionId])
- }
- }, onError: { [weak self] error in
- self?.dispatchEvent(BleEvent.readEvent, value: [error.bleError.toJS, NSNull(), transactionId])
- }, onCompleted: {
-
- }, onDisposed: { [weak self] in
- self?.transactions.removeDisposable(transactionId)
- BleError.cancelled().callReject(promise)
- })
-
- transactions.replaceDisposable(transactionId, disposable: disposable)
- }
-
- // MARK: Getting characteristics -----------------------------------------------------------------------------------
-
- private func getCharacteristicForDevice(_ deviceId: String,
- serviceUUID: String,
- characteristicUUID: String) -> Observable {
- return Observable.create { [weak self] observer in
- guard let peripheralId = UUID(uuidString: deviceId) else {
- observer.onError(BleError.peripheralNotFound(deviceId))
- return Disposables.create()
- }
-
- guard let serviceCBUUID = serviceUUID.toCBUUID() else {
- observer.onError(BleError.invalidIdentifiers(serviceUUID))
- return Disposables.create()
- }
-
- guard let characteristicCBUUID = characteristicUUID.toCBUUID() else {
- observer.onError(BleError.invalidIdentifiers(characteristicUUID))
- return Disposables.create()
- }
-
- guard let peripheral = self?.connectedPeripherals[peripheralId] else {
- observer.onError(BleError.peripheralNotConnected(deviceId))
- return Disposables.create()
- }
-
- guard let characteristic = (peripheral.services?
- .first { $0.uuid == serviceCBUUID }?
- .characteristics?
- .first { $0.uuid == characteristicCBUUID }) else {
- observer.onError(BleError.characteristicNotFound(characteristicUUID))
- return Disposables.create()
- }
-
- observer.onNext(characteristic)
- observer.onCompleted()
- return Disposables.create()
- }
- }
-
- private func getCharacteristicForService(_ serviceId: Double,
- characteristicUUID: String) -> Observable {
- return Observable.create { [weak self] observer in
- guard let characteristicCBUUID = characteristicUUID.toCBUUID() else {
- observer.onError(BleError.invalidIdentifiers(characteristicUUID))
- return Disposables.create()
- }
-
- guard let service = self?.discoveredServices[serviceId] else {
- observer.onError(BleError.serviceNotFound(serviceId.description))
- return Disposables.create()
- }
-
- guard let characteristic = (service
- .characteristics?
- .first { $0.uuid == characteristicCBUUID }) else {
- observer.onError(BleError.characteristicNotFound(characteristicUUID))
- return Disposables.create()
- }
-
- observer.onNext(characteristic)
- observer.onCompleted()
- return Disposables.create()
- }
- }
-
- private func getCharacteristic(_ characteristicId: Double) -> Observable {
- return Observable.create { [weak self] observer in
- guard let characteristic = self?.discoveredCharacteristics[characteristicId] else {
- observer.onError(BleError.characteristicNotFound(characteristicId.description))
- return Disposables.create()
- }
-
- observer.onNext(characteristic)
- observer.onCompleted()
- return Disposables.create()
- }
- }
-
- // MARK: Descriptors -----------------------------------------------------------------------------------------------
-
- private func getDescriptorForDevice(_ deviceId: String,
- serviceUUID: String,
- characteristicUUID: String,
- descriptorUUID: String) -> Observable