simplejsble 0.0.3 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NitroSimplejsble.podspec +9 -4
- package/VERSION +1 -0
- package/android/CMakeLists.txt +62 -20
- package/cmake/epilogue.cmake +81 -0
- package/cmake/find/FindDBus1.cmake +20 -0
- package/cmake/find/Findfmt.cmake +41 -0
- package/cmake/find/Findgoogletest.cmake +18 -0
- package/cmake/parse_version.cmake +45 -0
- package/cmake/prelude.cmake +8 -0
- package/dependencies/README +4 -0
- package/dependencies/external/kvn/kvn_bytearray.h +297 -0
- package/dependencies/external/kvn/kvn_safe_callback.hpp +66 -0
- package/dependencies/external/kvn/logfwd.hpp +35 -0
- package/dependencies/internal/include/fmt/LICENSE +27 -0
- package/dependencies/internal/include/fmt/args.h +220 -0
- package/dependencies/internal/include/fmt/base.h +2962 -0
- package/dependencies/internal/include/fmt/chrono.h +2338 -0
- package/dependencies/internal/include/fmt/color.h +610 -0
- package/dependencies/internal/include/fmt/compile.h +539 -0
- package/dependencies/internal/include/fmt/core.h +5 -0
- package/dependencies/internal/include/fmt/format-inl.h +1949 -0
- package/dependencies/internal/include/fmt/format.h +4244 -0
- package/dependencies/internal/include/fmt/os.h +427 -0
- package/dependencies/internal/include/fmt/ostream.h +166 -0
- package/dependencies/internal/include/fmt/printf.h +633 -0
- package/dependencies/internal/include/fmt/ranges.h +850 -0
- package/dependencies/internal/include/fmt/std.h +726 -0
- package/dependencies/internal/include/fmt/xchar.h +373 -0
- package/dependencies/internal/include/nanopb/pb.h +948 -0
- package/dependencies/internal/include/nanopb/pb_common.h +49 -0
- package/dependencies/internal/include/nanopb/pb_decode.h +204 -0
- package/dependencies/internal/include/nanopb/pb_encode.h +195 -0
- package/dependencies/internal/include/simplejni/Common.hpp +598 -0
- package/dependencies/internal/include/simplejni/References.hpp +151 -0
- package/dependencies/internal/include/simplejni/Registry.hpp +249 -0
- package/dependencies/internal/include/simplejni/VM.hpp +93 -0
- package/dependencies/internal/src/nanopb/pb_common.c +388 -0
- package/dependencies/internal/src/nanopb/pb_decode.c +1763 -0
- package/dependencies/internal/src/nanopb/pb_encode.c +1009 -0
- package/dependencies/internal/src/simplejni/Common.cpp +4 -0
- package/package.json +5 -1
- package/simpleble/CMakeLists.txt +519 -0
- package/simpleble/include/simpleble/Adapter.h +102 -0
- package/simpleble/include/simpleble/AdapterSafe.h +58 -0
- package/simpleble/include/simpleble/Advanced.h +50 -0
- package/simpleble/include/simpleble/Characteristic.h +39 -0
- package/simpleble/include/simpleble/Config.h +64 -0
- package/simpleble/include/simpleble/Descriptor.h +30 -0
- package/simpleble/include/simpleble/Exceptions.h +72 -0
- package/simpleble/include/simpleble/Logging.h +73 -0
- package/simpleble/include/simpleble/Peripheral.h +82 -0
- package/simpleble/include/simpleble/PeripheralSafe.h +64 -0
- package/simpleble/include/simpleble/Service.h +34 -0
- package/simpleble/include/simpleble/SimpleBLE.h +8 -0
- package/simpleble/include/simpleble/Types.h +49 -0
- package/simpleble/include/simpleble/Utils.h +13 -0
- package/simpleble/include/simpleble_c/DEPRECATED +2 -0
- package/simpleble/include/simpleble_c/adapter.h +188 -0
- package/simpleble/include/simpleble_c/logging.h +37 -0
- package/simpleble/include/simpleble_c/peripheral.h +304 -0
- package/simpleble/include/simpleble_c/simpleble.h +21 -0
- package/simpleble/include/simpleble_c/types.h +73 -0
- package/simpleble/include/simpleble_c/utils.h +27 -0
- package/simpleble/src/CommonUtils.h +63 -0
- package/simpleble/src/Config.cpp +25 -0
- package/simpleble/src/Exceptions.cpp +31 -0
- package/simpleble/src/Logging.cpp +136 -0
- package/simpleble/src/LoggingInternal.h +85 -0
- package/simpleble/src/Utils.cpp +24 -0
- package/simpleble/src/backends/android/AdapterAndroid.cpp +101 -0
- package/simpleble/src/backends/android/AdapterAndroid.h +67 -0
- package/simpleble/src/backends/android/BackendAndroid.cpp +41 -0
- package/simpleble/src/backends/android/BackendAndroid.h +26 -0
- package/simpleble/src/backends/android/PeripheralAndroid.cpp +365 -0
- package/simpleble/src/backends/android/PeripheralAndroid.h +90 -0
- package/simpleble/src/backends/android/bridge/BluetoothGattCallback.cpp +432 -0
- package/simpleble/src/backends/android/bridge/BluetoothGattCallback.h +102 -0
- package/simpleble/src/backends/android/bridge/ScanCallback.cpp +142 -0
- package/simpleble/src/backends/android/bridge/ScanCallback.h +55 -0
- package/simpleble/src/backends/android/types/android/bluetooth/BluetoothAdapter.cpp +107 -0
- package/simpleble/src/backends/android/types/android/bluetooth/BluetoothAdapter.h +55 -0
- package/simpleble/src/backends/android/types/android/bluetooth/BluetoothDevice.cpp +68 -0
- package/simpleble/src/backends/android/types/android/bluetooth/BluetoothDevice.h +54 -0
- package/simpleble/src/backends/android/types/android/bluetooth/BluetoothGatt.cpp +115 -0
- package/simpleble/src/backends/android/types/android/bluetooth/BluetoothGatt.h +75 -0
- package/simpleble/src/backends/android/types/android/bluetooth/BluetoothGattCharacteristic.cpp +142 -0
- package/simpleble/src/backends/android/types/android/bluetooth/BluetoothGattCharacteristic.h +66 -0
- package/simpleble/src/backends/android/types/android/bluetooth/BluetoothGattDescriptor.cpp +67 -0
- package/simpleble/src/backends/android/types/android/bluetooth/BluetoothGattDescriptor.h +46 -0
- package/simpleble/src/backends/android/types/android/bluetooth/BluetoothGattService.cpp +106 -0
- package/simpleble/src/backends/android/types/android/bluetooth/BluetoothGattService.h +47 -0
- package/simpleble/src/backends/android/types/android/bluetooth/le/BluetoothScanner.cpp +47 -0
- package/simpleble/src/backends/android/types/android/bluetooth/le/BluetoothScanner.h +37 -0
- package/simpleble/src/backends/android/types/android/bluetooth/le/ScanRecord.cpp +69 -0
- package/simpleble/src/backends/android/types/android/bluetooth/le/ScanRecord.h +41 -0
- package/simpleble/src/backends/android/types/android/bluetooth/le/ScanResult.cpp +63 -0
- package/simpleble/src/backends/android/types/android/bluetooth/le/ScanResult.h +42 -0
- package/simpleble/src/backends/android/types/android/os/ParcelUUID.cpp +32 -0
- package/simpleble/src/backends/android/types/android/os/ParcelUUID.h +30 -0
- package/simpleble/src/backends/android/types/android/util/SparseArray.cpp +54 -0
- package/simpleble/src/backends/android/types/android/util/SparseArray.h +37 -0
- package/simpleble/src/backends/android/types/java/util/Iterator.cpp +36 -0
- package/simpleble/src/backends/android/types/java/util/Iterator.h +28 -0
- package/simpleble/src/backends/android/types/java/util/List.cpp +29 -0
- package/simpleble/src/backends/android/types/java/util/List.h +27 -0
- package/simpleble/src/backends/android/types/java/util/Set.cpp +33 -0
- package/simpleble/src/backends/android/types/java/util/Set.h +28 -0
- package/simpleble/src/backends/android/types/java/util/UUID.cpp +26 -0
- package/simpleble/src/backends/android/types/java/util/UUID.h +29 -0
- package/simpleble/src/backends/common/AdapterBase.cpp +53 -0
- package/simpleble/src/backends/common/AdapterBase.h +81 -0
- package/simpleble/src/backends/common/AdapterBaseTypes.h +22 -0
- package/simpleble/src/backends/common/BackendBase.h +20 -0
- package/simpleble/src/backends/common/BackendUtils.h +33 -0
- package/simpleble/src/backends/common/CharacteristicBase.cpp +28 -0
- package/simpleble/src/backends/common/CharacteristicBase.h +38 -0
- package/simpleble/src/backends/common/DescriptorBase.cpp +7 -0
- package/simpleble/src/backends/common/DescriptorBase.h +19 -0
- package/simpleble/src/backends/common/PeripheralBase.h +82 -0
- package/simpleble/src/backends/common/ServiceBase.cpp +18 -0
- package/simpleble/src/backends/common/ServiceBase.h +28 -0
- package/simpleble/src/backends/dongl/AdapterBaseTypes.h +22 -0
- package/simpleble/src/backends/dongl/AdapterDongl.cpp +369 -0
- package/simpleble/src/backends/dongl/AdapterDongl.h +60 -0
- package/simpleble/src/backends/dongl/BackendDongl.cpp +35 -0
- package/simpleble/src/backends/dongl/PeripheralDongl.cpp +562 -0
- package/simpleble/src/backends/dongl/PeripheralDongl.h +136 -0
- package/simpleble/src/backends/dongl/protocol/basic.pb.c +33 -0
- package/simpleble/src/backends/dongl/protocol/basic.pb.h +172 -0
- package/simpleble/src/backends/dongl/protocol/d2h.pb.c +18 -0
- package/simpleble/src/backends/dongl/protocol/d2h.pb.h +118 -0
- package/simpleble/src/backends/dongl/protocol/h2d.pb.c +12 -0
- package/simpleble/src/backends/dongl/protocol/h2d.pb.h +69 -0
- package/simpleble/src/backends/dongl/protocol/simpleble.pb.c +123 -0
- package/simpleble/src/backends/dongl/protocol/simpleble.pb.h +908 -0
- package/simpleble/src/backends/dongl/protocol/softdevice.pb.c +18 -0
- package/simpleble/src/backends/dongl/protocol/softdevice.pb.h +815 -0
- package/simpleble/src/backends/dongl/protocol/softdevice_gap.pb.c +339 -0
- package/simpleble/src/backends/dongl/protocol/softdevice_gap.pb.h +2086 -0
- package/simpleble/src/backends/dongl/protocol/softdevice_gattc.pb.c +114 -0
- package/simpleble/src/backends/dongl/protocol/softdevice_gattc.pb.h +772 -0
- package/simpleble/src/backends/dongl/protocol/softdevice_gatts.pb.c +117 -0
- package/simpleble/src/backends/dongl/protocol/softdevice_gatts.pb.h +766 -0
- package/simpleble/src/backends/dongl/protocol/softdevice_types.pb.c +207 -0
- package/simpleble/src/backends/dongl/protocol/softdevice_types.pb.h +1686 -0
- package/simpleble/src/backends/dongl/serial/Protocol.cpp +887 -0
- package/simpleble/src/backends/dongl/serial/Protocol.h +117 -0
- package/simpleble/src/backends/dongl/serial/ProtocolBase.cpp +95 -0
- package/simpleble/src/backends/dongl/serial/ProtocolBase.h +54 -0
- package/simpleble/src/backends/dongl/serial/Wire.cpp +133 -0
- package/simpleble/src/backends/dongl/serial/Wire.h +116 -0
- package/simpleble/src/backends/dongl/usb/UsbHelper.cpp +53 -0
- package/simpleble/src/backends/dongl/usb/UsbHelper.h +32 -0
- package/simpleble/src/backends/dongl/usb/UsbHelperApple.cpp +266 -0
- package/simpleble/src/backends/dongl/usb/UsbHelperApple.h +34 -0
- package/simpleble/src/backends/dongl/usb/UsbHelperImpl.h +29 -0
- package/simpleble/src/backends/dongl/usb/UsbHelperLinux.cpp +21 -0
- package/simpleble/src/backends/dongl/usb/UsbHelperLinux.h +22 -0
- package/simpleble/src/backends/dongl/usb/UsbHelperNull.cpp +21 -0
- package/simpleble/src/backends/dongl/usb/UsbHelperNull.h +22 -0
- package/simpleble/src/backends/dongl/usb/UsbHelperWindows.cpp +21 -0
- package/simpleble/src/backends/dongl/usb/UsbHelperWindows.h +22 -0
- package/simpleble/src/backends/linux/AdapterLinux.cpp +102 -0
- package/simpleble/src/backends/linux/AdapterLinux.h +55 -0
- package/simpleble/src/backends/linux/BackendBluez.cpp +90 -0
- package/simpleble/src/backends/linux/PeripheralLinux.cpp +394 -0
- package/simpleble/src/backends/linux/PeripheralLinux.h +90 -0
- package/simpleble/src/backends/linux_legacy/AdapterLinuxLegacy.cpp +102 -0
- package/simpleble/src/backends/linux_legacy/AdapterLinuxLegacy.h +55 -0
- package/simpleble/src/backends/linux_legacy/BackendBluezLegacy.cpp +87 -0
- package/simpleble/src/backends/linux_legacy/PeripheralLinuxLegacy.cpp +376 -0
- package/simpleble/src/backends/linux_legacy/PeripheralLinuxLegacy.h +90 -0
- package/simpleble/src/backends/linux_legacy/include/simplebluezlegacy/Adapter.h +46 -0
- package/simpleble/src/backends/linux_legacy/include/simplebluezlegacy/Agent.h +52 -0
- package/simpleble/src/backends/linux_legacy/include/simplebluezlegacy/Bluez.h +37 -0
- package/simpleble/src/backends/linux_legacy/include/simplebluezlegacy/BluezOrg.h +22 -0
- package/simpleble/src/backends/linux_legacy/include/simplebluezlegacy/BluezOrgBluez.h +26 -0
- package/simpleble/src/backends/linux_legacy/include/simplebluezlegacy/BluezRoot.h +32 -0
- package/simpleble/src/backends/linux_legacy/include/simplebluezlegacy/Characteristic.h +47 -0
- package/simpleble/src/backends/linux_legacy/include/simplebluezlegacy/Descriptor.h +33 -0
- package/simpleble/src/backends/linux_legacy/include/simplebluezlegacy/Device.h +64 -0
- package/simpleble/src/backends/linux_legacy/include/simplebluezlegacy/Exceptions.h +43 -0
- package/simpleble/src/backends/linux_legacy/include/simplebluezlegacy/Service.h +27 -0
- package/simpleble/src/backends/linux_legacy/include/simplebluezlegacy/Types.h +9 -0
- package/simpleble/src/backends/linux_legacy/include/simplebluezlegacy/interfaces/Adapter1.h +49 -0
- package/simpleble/src/backends/linux_legacy/include/simplebluezlegacy/interfaces/Agent1.h +100 -0
- package/simpleble/src/backends/linux_legacy/include/simplebluezlegacy/interfaces/AgentManager1.h +24 -0
- package/simpleble/src/backends/linux_legacy/include/simplebluezlegacy/interfaces/Battery1.h +32 -0
- package/simpleble/src/backends/linux_legacy/include/simplebluezlegacy/interfaces/Device1.h +62 -0
- package/simpleble/src/backends/linux_legacy/include/simplebluezlegacy/interfaces/GattCharacteristic1.h +48 -0
- package/simpleble/src/backends/linux_legacy/include/simplebluezlegacy/interfaces/GattDescriptor1.h +41 -0
- package/simpleble/src/backends/linux_legacy/include/simplebluezlegacy/interfaces/GattService1.h +28 -0
- package/simpleble/src/backends/linux_legacy/include/simpledbuslegacy/advanced/Interface.h +67 -0
- package/simpleble/src/backends/linux_legacy/include/simpledbuslegacy/advanced/InterfaceRegistry.h +62 -0
- package/simpleble/src/backends/linux_legacy/include/simpledbuslegacy/advanced/Proxy.h +117 -0
- package/simpleble/src/backends/linux_legacy/include/simpledbuslegacy/base/Connection.h +50 -0
- package/simpleble/src/backends/linux_legacy/include/simpledbuslegacy/base/Exceptions.h +56 -0
- package/simpleble/src/backends/linux_legacy/include/simpledbuslegacy/base/Holder.h +147 -0
- package/simpleble/src/backends/linux_legacy/include/simpledbuslegacy/base/Logging.h +57 -0
- package/simpleble/src/backends/linux_legacy/include/simpledbuslegacy/base/Message.h +89 -0
- package/simpleble/src/backends/linux_legacy/include/simpledbuslegacy/base/Path.h +24 -0
- package/simpleble/src/backends/linux_legacy/include/simpledbuslegacy/interfaces/ObjectManager.h +26 -0
- package/simpleble/src/backends/linux_legacy/src/Adapter.cpp +78 -0
- package/simpleble/src/backends/linux_legacy/src/Agent.cpp +72 -0
- package/simpleble/src/backends/linux_legacy/src/Bluez.cpp +45 -0
- package/simpleble/src/backends/linux_legacy/src/BluezOrg.cpp +20 -0
- package/simpleble/src/backends/linux_legacy/src/BluezOrgBluez.cpp +23 -0
- package/simpleble/src/backends/linux_legacy/src/BluezRoot.cpp +44 -0
- package/simpleble/src/backends/linux_legacy/src/Characteristic.cpp +64 -0
- package/simpleble/src/backends/linux_legacy/src/Descriptor.cpp +27 -0
- package/simpleble/src/backends/linux_legacy/src/Device.cpp +104 -0
- package/simpleble/src/backends/linux_legacy/src/Exceptions.cpp +29 -0
- package/simpleble/src/backends/linux_legacy/src/Service.cpp +33 -0
- package/simpleble/src/backends/linux_legacy/src/advanced/Interface.cpp +155 -0
- package/simpleble/src/backends/linux_legacy/src/advanced/Proxy.cpp +374 -0
- package/simpleble/src/backends/linux_legacy/src/base/Connection.cpp +219 -0
- package/simpleble/src/backends/linux_legacy/src/base/Exceptions.cpp +39 -0
- package/simpleble/src/backends/linux_legacy/src/base/Holder.cpp +739 -0
- package/simpleble/src/backends/linux_legacy/src/base/Message.cpp +622 -0
- package/simpleble/src/backends/linux_legacy/src/base/Path.cpp +129 -0
- package/simpleble/src/backends/linux_legacy/src/interfaces/Adapter1.cpp +123 -0
- package/simpleble/src/backends/linux_legacy/src/interfaces/Agent1.cpp +143 -0
- package/simpleble/src/backends/linux_legacy/src/interfaces/AgentManager1.cpp +34 -0
- package/simpleble/src/backends/linux_legacy/src/interfaces/Battery1.cpp +30 -0
- package/simpleble/src/backends/linux_legacy/src/interfaces/Device1.cpp +170 -0
- package/simpleble/src/backends/linux_legacy/src/interfaces/GattCharacteristic1.cpp +118 -0
- package/simpleble/src/backends/linux_legacy/src/interfaces/GattDescriptor1.cpp +78 -0
- package/simpleble/src/backends/linux_legacy/src/interfaces/GattService1.cpp +28 -0
- package/simpleble/src/backends/linux_legacy/src/interfaces/ObjectManager.cpp +58 -0
- package/simpleble/src/backends/macos/AdapterBaseMacOS.h +29 -0
- package/simpleble/src/backends/macos/AdapterBaseMacOS.mm +235 -0
- package/simpleble/src/backends/macos/AdapterMac.h +78 -0
- package/simpleble/src/backends/macos/AdapterMac.mm +156 -0
- package/simpleble/src/backends/macos/BackendCoreBluetooth.mm +45 -0
- package/simpleble/src/backends/macos/PeripheralBaseMacOS.h +49 -0
- package/simpleble/src/backends/macos/PeripheralBaseMacOS.mm +714 -0
- package/simpleble/src/backends/macos/PeripheralMac.h +81 -0
- package/simpleble/src/backends/macos/PeripheralMac.mm +229 -0
- package/simpleble/src/backends/macos/Utils.h +9 -0
- package/simpleble/src/backends/macos/Utils.mm +23 -0
- package/simpleble/src/backends/plain/AdapterPlain.cpp +65 -0
- package/simpleble/src/backends/plain/AdapterPlain.h +49 -0
- package/simpleble/src/backends/plain/BackendPlain.cpp +30 -0
- package/simpleble/src/backends/plain/PeripheralPlain.cpp +159 -0
- package/simpleble/src/backends/plain/PeripheralPlain.h +72 -0
- package/simpleble/src/backends/windows/AdapterWindows.cpp +338 -0
- package/simpleble/src/backends/windows/AdapterWindows.h +89 -0
- package/simpleble/src/backends/windows/BackendWinRT.cpp +67 -0
- package/simpleble/src/backends/windows/BackendWinRT.h +18 -0
- package/simpleble/src/backends/windows/MtaManager.cpp +49 -0
- package/simpleble/src/backends/windows/MtaManager.h +90 -0
- package/simpleble/src/backends/windows/PeripheralWindows.cpp +487 -0
- package/simpleble/src/backends/windows/PeripheralWindows.h +129 -0
- package/simpleble/src/backends/windows/Utils.cpp +146 -0
- package/simpleble/src/backends/windows/Utils.h +47 -0
- package/simpleble/src/builders/BuildVec.h +32 -0
- package/simpleble/src/builders/BuilderBase.h +87 -0
- package/simpleble/src/external/TaskRunner.hpp +99 -0
- package/simpleble/src/external/ThreadRunner.h +52 -0
- package/simpleble/src/external/kvn_safe_callback.hpp +66 -0
- package/simpleble/src/external/kvn_safe_map.hpp +94 -0
- package/simpleble/src/external/kvn_threadrunner.hpp +70 -0
- package/simpleble/src/external/logfwd.hpp +35 -0
- package/simpleble/src/frontends/base/Adapter.cpp +111 -0
- package/simpleble/src/frontends/base/Advanced.cpp +34 -0
- package/simpleble/src/frontends/base/Backend.cpp +95 -0
- package/simpleble/src/frontends/base/Backend.h +76 -0
- package/simpleble/src/frontends/base/Characteristic.cpp +56 -0
- package/simpleble/src/frontends/base/Descriptor.cpp +21 -0
- package/simpleble/src/frontends/base/Peripheral.cpp +113 -0
- package/simpleble/src/frontends/base/Service.cpp +26 -0
- package/simpleble/src/frontends/safe/AdapterSafe.cpp +158 -0
- package/simpleble/src/frontends/safe/PeripheralSafe.cpp +219 -0
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
#include <simpleble/Peripheral.h>
|
|
2
|
+
|
|
3
|
+
#import "AdapterBaseMacOS.h"
|
|
4
|
+
#import "AdapterMac.h"
|
|
5
|
+
#import "BuilderBase.h"
|
|
6
|
+
#import "CommonUtils.h"
|
|
7
|
+
#import "PeripheralMac.h"
|
|
8
|
+
|
|
9
|
+
#include <fmt/core.h>
|
|
10
|
+
|
|
11
|
+
#include <chrono>
|
|
12
|
+
#include <memory>
|
|
13
|
+
#include <thread>
|
|
14
|
+
|
|
15
|
+
using namespace SimpleBLE;
|
|
16
|
+
|
|
17
|
+
AdapterMac::AdapterMac() {
|
|
18
|
+
// Cast the Objective-C++ object using __bridge_retained, which will signal ARC to increase
|
|
19
|
+
// the reference count. This means that AdapterMac will be responsible for releasing the
|
|
20
|
+
// Objective-C++ object in the destructor.
|
|
21
|
+
opaque_internal_ = (__bridge_retained void*)[[AdapterBaseMacOS alloc] init:this];
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
AdapterMac::~AdapterMac() {
|
|
25
|
+
// Cast the opaque pointer back to the Objective-C++ object and release it.
|
|
26
|
+
// This will signal ARC to decrease the reference count.
|
|
27
|
+
// NOTE: This is equivalent to calling [opaque_internal_ release] in Objective-C++.
|
|
28
|
+
AdapterBaseMacOS* internal = (__bridge_transfer AdapterBaseMacOS*)opaque_internal_;
|
|
29
|
+
internal = nil;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
bool AdapterMac::bluetooth_enabled() {
|
|
33
|
+
AdapterBaseMacOS* internal = (__bridge AdapterBaseMacOS*)opaque_internal_;
|
|
34
|
+
return [internal isBluetoothEnabled];
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
void* AdapterMac::underlying() const {
|
|
38
|
+
AdapterBaseMacOS* internal = (__bridge AdapterBaseMacOS*)opaque_internal_;
|
|
39
|
+
|
|
40
|
+
return [internal underlying];
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
std::string AdapterMac::identifier() { return fmt::format("Default Adapter [{}]", this->address()); }
|
|
44
|
+
|
|
45
|
+
BluetoothAddress AdapterMac::address() const {
|
|
46
|
+
AdapterBaseMacOS* internal = (__bridge AdapterBaseMacOS*)opaque_internal_;
|
|
47
|
+
|
|
48
|
+
return [[internal address] UTF8String];
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
void AdapterMac::power_on() {
|
|
52
|
+
AdapterBaseMacOS* internal = (__bridge AdapterBaseMacOS*)opaque_internal_;
|
|
53
|
+
[internal powerOn];
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
void AdapterMac::power_off() {
|
|
57
|
+
AdapterBaseMacOS* internal = (__bridge AdapterBaseMacOS*)opaque_internal_;
|
|
58
|
+
[internal powerOff];
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
bool AdapterMac::is_powered() {
|
|
62
|
+
AdapterBaseMacOS* internal = (__bridge AdapterBaseMacOS*)opaque_internal_;
|
|
63
|
+
return [internal isPowered];
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
BluetoothAddress AdapterMac::address() { return const_cast<const AdapterMac*>(this)->address(); }
|
|
67
|
+
|
|
68
|
+
void AdapterMac::scan_start() {
|
|
69
|
+
this->seen_peripherals_.clear();
|
|
70
|
+
|
|
71
|
+
AdapterBaseMacOS* internal = (__bridge AdapterBaseMacOS*)opaque_internal_;
|
|
72
|
+
[internal scanStart];
|
|
73
|
+
|
|
74
|
+
SAFE_CALLBACK_CALL(this->_callback_on_scan_start);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
void AdapterMac::scan_stop() {
|
|
78
|
+
AdapterBaseMacOS* internal = (__bridge AdapterBaseMacOS*)opaque_internal_;
|
|
79
|
+
[internal scanStop];
|
|
80
|
+
|
|
81
|
+
SAFE_CALLBACK_CALL(this->_callback_on_scan_stop);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
void AdapterMac::scan_for(int timeout_ms) {
|
|
85
|
+
this->scan_start();
|
|
86
|
+
std::this_thread::sleep_for(std::chrono::milliseconds(timeout_ms));
|
|
87
|
+
this->scan_stop();
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
bool AdapterMac::scan_is_active() {
|
|
91
|
+
AdapterBaseMacOS* internal = (__bridge AdapterBaseMacOS*)opaque_internal_;
|
|
92
|
+
return [internal scanIsActive];
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
SharedPtrVector<PeripheralBase> AdapterMac::scan_get_results() {
|
|
96
|
+
SharedPtrVector<PeripheralBase> peripherals = Util::values(seen_peripherals_);
|
|
97
|
+
return peripherals;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
SharedPtrVector<PeripheralBase> AdapterMac::get_paired_peripherals() { return {}; }
|
|
101
|
+
|
|
102
|
+
// Delegate methods passed for AdapterBaseMacOS
|
|
103
|
+
|
|
104
|
+
void AdapterMac::delegate_did_discover_peripheral(void* opaque_peripheral, void* opaque_adapter, advertising_data_t advertising_data) {
|
|
105
|
+
if (this->peripherals_.count(opaque_peripheral) == 0) {
|
|
106
|
+
// If the incoming peripheral has never been seen before, create and save a reference to it.
|
|
107
|
+
auto base_peripheral = std::make_shared<PeripheralMac>(opaque_peripheral, opaque_adapter, advertising_data);
|
|
108
|
+
this->peripherals_.insert(std::make_pair(opaque_peripheral, base_peripheral));
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// Update the received advertising data.
|
|
112
|
+
auto base_peripheral = this->peripherals_.at(opaque_peripheral);
|
|
113
|
+
base_peripheral->update_advertising_data(advertising_data);
|
|
114
|
+
|
|
115
|
+
// Convert the base object into an external-facing Peripheral object
|
|
116
|
+
Peripheral peripheral = Factory::build(base_peripheral);
|
|
117
|
+
|
|
118
|
+
// Check if the device has been seen before, to forward the correct call to the user.
|
|
119
|
+
if (this->seen_peripherals_.count(opaque_peripheral) == 0) {
|
|
120
|
+
// Store it in our table of seen peripherals
|
|
121
|
+
this->seen_peripherals_.insert(std::make_pair(opaque_peripheral, base_peripheral));
|
|
122
|
+
SAFE_CALLBACK_CALL(this->_callback_on_scan_found, peripheral);
|
|
123
|
+
} else {
|
|
124
|
+
SAFE_CALLBACK_CALL(this->_callback_on_scan_updated, peripheral);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
void AdapterMac::delegate_did_connect_peripheral(void* opaque_peripheral) {
|
|
129
|
+
if (this->peripherals_.count(opaque_peripheral) == 0) {
|
|
130
|
+
throw Exception::InvalidReference();
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// Load the existing PeripheralBase object
|
|
134
|
+
std::shared_ptr<PeripheralMac> base_peripheral = this->peripherals_.at(opaque_peripheral);
|
|
135
|
+
base_peripheral->delegate_did_connect();
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
void AdapterMac::delegate_did_fail_to_connect_peripheral(void* opaque_peripheral, void* opaque_error) {
|
|
139
|
+
if (this->peripherals_.count(opaque_peripheral) == 0) {
|
|
140
|
+
throw Exception::InvalidReference();
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
// Load the existing PeripheralBase object
|
|
144
|
+
std::shared_ptr<PeripheralMac> base_peripheral = this->peripherals_.at(opaque_peripheral);
|
|
145
|
+
base_peripheral->delegate_did_fail_to_connect(opaque_error);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
void AdapterMac::delegate_did_disconnect_peripheral(void* opaque_peripheral, void* opaque_error) {
|
|
149
|
+
if (this->peripherals_.count(opaque_peripheral) == 0) {
|
|
150
|
+
throw Exception::InvalidReference();
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
// Load the existing PeripheralBase object
|
|
154
|
+
std::shared_ptr<PeripheralMac> base_peripheral = this->peripherals_.at(opaque_peripheral);
|
|
155
|
+
base_peripheral->delegate_did_disconnect(opaque_error);
|
|
156
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
#include "../common/BackendBase.h"
|
|
2
|
+
#include "../common/BackendUtils.h"
|
|
3
|
+
#include "CommonUtils.h"
|
|
4
|
+
|
|
5
|
+
#include "AdapterMac.h"
|
|
6
|
+
|
|
7
|
+
namespace SimpleBLE {
|
|
8
|
+
|
|
9
|
+
class BackendCoreBluetooth : public BackendSingleton<BackendCoreBluetooth> {
|
|
10
|
+
public:
|
|
11
|
+
BackendCoreBluetooth(buildToken);
|
|
12
|
+
virtual ~BackendCoreBluetooth() = default;
|
|
13
|
+
|
|
14
|
+
virtual std::vector<std::shared_ptr<AdapterBase>> get_adapters() override;
|
|
15
|
+
virtual bool bluetooth_enabled() override;
|
|
16
|
+
virtual std::string name() const noexcept override;
|
|
17
|
+
|
|
18
|
+
private:
|
|
19
|
+
// Apple devices only have a single Bluetooth adapter, so in order to preserve
|
|
20
|
+
// state across multiple instances, a single Adapter object is shared across
|
|
21
|
+
// all users of this backend.
|
|
22
|
+
std::shared_ptr<AdapterMac> _adapter;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
std::shared_ptr<BackendBase> BACKEND_MACOS() { return BackendCoreBluetooth::get(); }
|
|
26
|
+
|
|
27
|
+
BackendCoreBluetooth::BackendCoreBluetooth(buildToken) : _adapter{std::make_shared<AdapterMac>()} {}
|
|
28
|
+
|
|
29
|
+
SharedPtrVector<AdapterBase> BackendCoreBluetooth::get_adapters() {
|
|
30
|
+
SharedPtrVector<AdapterBase> adapter_list;
|
|
31
|
+
adapter_list.push_back(_adapter);
|
|
32
|
+
return adapter_list;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
bool BackendCoreBluetooth::bluetooth_enabled() {
|
|
36
|
+
// Because CBCentralManager requires an instance of an object to properly operate,
|
|
37
|
+
// we'll fabricate a local AdapterBase object and query it's internal AdapterBaseMacOS
|
|
38
|
+
// to see if Bluetooth is enabled.
|
|
39
|
+
// TODO: Find a better alternative for this.
|
|
40
|
+
return _adapter->bluetooth_enabled();
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
std::string BackendCoreBluetooth::name() const noexcept { return "CoreBluetooth"; }
|
|
44
|
+
|
|
45
|
+
} // namespace SimpleBLE
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#import <CoreBluetooth/CoreBluetooth.h>
|
|
4
|
+
#import <Foundation/Foundation.h>
|
|
5
|
+
|
|
6
|
+
#include <cstdint>
|
|
7
|
+
#include <functional>
|
|
8
|
+
#include <vector>
|
|
9
|
+
#import "PeripheralMac.h"
|
|
10
|
+
|
|
11
|
+
@interface PeripheralBaseMacOS : NSObject<CBPeripheralDelegate>
|
|
12
|
+
|
|
13
|
+
- (instancetype)init:(CBPeripheral*)peripheral centralManager:(CBCentralManager*)centralManager;
|
|
14
|
+
|
|
15
|
+
- (void*)underlying;
|
|
16
|
+
|
|
17
|
+
- (NSString*)identifier;
|
|
18
|
+
- (NSString*)address;
|
|
19
|
+
- (uint16_t)mtu;
|
|
20
|
+
|
|
21
|
+
- (void)connect;
|
|
22
|
+
- (void)disconnect;
|
|
23
|
+
- (bool)isConnected;
|
|
24
|
+
- (std::vector<std::shared_ptr<SimpleBLE::ServiceBase>>)getServices;
|
|
25
|
+
|
|
26
|
+
- (SimpleBLE::ByteArray)read:(NSString*)service_uuid characteristic_uuid:(NSString*)characteristic_uuid;
|
|
27
|
+
- (void)writeRequest:(NSString*)service_uuid characteristic_uuid:(NSString*)characteristic_uuid payload:(NSData*)payload;
|
|
28
|
+
- (void)writeCommand:(NSString*)service_uuid characteristic_uuid:(NSString*)characteristic_uuid payload:(NSData*)payload;
|
|
29
|
+
- (void)notify:(NSString*)service_uuid
|
|
30
|
+
characteristic_uuid:(NSString*)characteristic_uuid
|
|
31
|
+
callback:(std::function<void(SimpleBLE::ByteArray)>)callback;
|
|
32
|
+
- (void)indicate:(NSString*)service_uuid
|
|
33
|
+
characteristic_uuid:(NSString*)characteristic_uuid
|
|
34
|
+
callback:(std::function<void(SimpleBLE::ByteArray)>)callback;
|
|
35
|
+
- (void)unsubscribe:(NSString*)service_uuid characteristic_uuid:(NSString*)characteristic_uuid;
|
|
36
|
+
|
|
37
|
+
- (SimpleBLE::ByteArray)read:(NSString*)service_uuid
|
|
38
|
+
characteristic_uuid:(NSString*)characteristic_uuid
|
|
39
|
+
descriptor_uuid:(NSString*)descriptor_uuid;
|
|
40
|
+
- (void)write:(NSString*)service_uuid
|
|
41
|
+
characteristic_uuid:(NSString*)characteristic_uuid
|
|
42
|
+
descriptor_uuid:(NSString*)descriptor_uuid
|
|
43
|
+
payload:(NSData*)payload;
|
|
44
|
+
|
|
45
|
+
- (void)delegateDidConnect;
|
|
46
|
+
- (void)delegateDidFailToConnect:(NSError*)error;
|
|
47
|
+
- (void)delegateDidDisconnect:(NSError*)error;
|
|
48
|
+
|
|
49
|
+
@end
|