simpleble 0.0.1
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.
- checksums.yaml +7 -0
- data/CHANGELOG.md +88 -0
- data/LICENSE.txt +21 -0
- data/README.md +350 -0
- data/ext/simpleble/extconf.rb +57 -0
- data/ext/simpleble/simpleble_ruby.c +682 -0
- data/lib/simpleble/adapter.rb +10 -0
- data/lib/simpleble/characteristic.rb +36 -0
- data/lib/simpleble/descriptor.rb +8 -0
- data/lib/simpleble/exceptions.rb +25 -0
- data/lib/simpleble/peripheral.rb +64 -0
- data/lib/simpleble/service.rb +16 -0
- data/lib/simpleble/version.rb +3 -0
- data/lib/simpleble.rb +40 -0
- data/vendor/simpleble/build_simplecble/CMakeFiles/4.0.3/CompilerIdCXX/CMakeCXXCompilerId.cpp +920 -0
- data/vendor/simpleble/build_simplecble/CMakeFiles/4.0.3/CompilerIdCXX/apple-sdk.cpp +1 -0
- data/vendor/simpleble/build_simplecble/CMakeFiles/4.1.0/CompilerIdCXX/CMakeCXXCompilerId.cpp +949 -0
- data/vendor/simpleble/build_simplecble/CMakeFiles/4.1.0/CompilerIdCXX/apple-sdk.cpp +1 -0
- data/vendor/simpleble/build_simplecble/export/simplecble/export.h +43 -0
- data/vendor/simpleble/build_simplecble/simpleble/export/simpleble/export.h +43 -0
- data/vendor/simpleble/dependencies/external/kvn/kvn_bytearray.h +222 -0
- data/vendor/simpleble/dependencies/external/kvn/kvn_safe_callback.hpp +66 -0
- data/vendor/simpleble/dependencies/external/kvn/logfwd.hpp +35 -0
- data/vendor/simpleble/dependencies/internal/fmt/args.h +220 -0
- data/vendor/simpleble/dependencies/internal/fmt/base.h +2962 -0
- data/vendor/simpleble/dependencies/internal/fmt/chrono.h +2338 -0
- data/vendor/simpleble/dependencies/internal/fmt/color.h +610 -0
- data/vendor/simpleble/dependencies/internal/fmt/compile.h +539 -0
- data/vendor/simpleble/dependencies/internal/fmt/core.h +5 -0
- data/vendor/simpleble/dependencies/internal/fmt/format-inl.h +1949 -0
- data/vendor/simpleble/dependencies/internal/fmt/format.h +4244 -0
- data/vendor/simpleble/dependencies/internal/fmt/os.h +427 -0
- data/vendor/simpleble/dependencies/internal/fmt/ostream.h +166 -0
- data/vendor/simpleble/dependencies/internal/fmt/printf.h +633 -0
- data/vendor/simpleble/dependencies/internal/fmt/ranges.h +850 -0
- data/vendor/simpleble/dependencies/internal/fmt/std.h +726 -0
- data/vendor/simpleble/dependencies/internal/fmt/xchar.h +373 -0
- data/vendor/simpleble/dependencies/internal/simplejni/Common.hpp +579 -0
- data/vendor/simpleble/dependencies/internal/simplejni/References.hpp +151 -0
- data/vendor/simpleble/dependencies/internal/simplejni/Registry.hpp +183 -0
- data/vendor/simpleble/dependencies/internal/simplejni/VM.hpp +88 -0
- data/vendor/simpleble/examples/simpleble/src/connect.cpp +67 -0
- data/vendor/simpleble/examples/simpleble/src/connect_safe.cpp +91 -0
- data/vendor/simpleble/examples/simpleble/src/list_adapters.cpp +22 -0
- data/vendor/simpleble/examples/simpleble/src/list_adapters_safe.cpp +33 -0
- data/vendor/simpleble/examples/simpleble/src/list_paired.cpp +27 -0
- data/vendor/simpleble/examples/simpleble/src/multiconnect.cpp +60 -0
- data/vendor/simpleble/examples/simpleble/src/notify.cpp +85 -0
- data/vendor/simpleble/examples/simpleble/src/notify_multi.cpp +101 -0
- data/vendor/simpleble/examples/simpleble/src/power_cycle.cpp +43 -0
- data/vendor/simpleble/examples/simpleble/src/read.cpp +82 -0
- data/vendor/simpleble/examples/simpleble/src/scan.cpp +62 -0
- data/vendor/simpleble/examples/simpleble/src/utils.cpp +59 -0
- data/vendor/simpleble/examples/simpleble/src/utils.hpp +27 -0
- data/vendor/simpleble/examples/simpleble/src/write.cpp +81 -0
- data/vendor/simpleble/examples/simplebluez/ble_nus/ble_nus.cpp +138 -0
- data/vendor/simpleble/examples/simplebluez/connect/connect.cpp +119 -0
- data/vendor/simpleble/examples/simplebluez/list_adapters/list_adapters.cpp +44 -0
- data/vendor/simpleble/examples/simplebluez/list_paired/list_paired.cpp +48 -0
- data/vendor/simpleble/examples/simplebluez/notify/notify.cpp +145 -0
- data/vendor/simpleble/examples/simplebluez/pair/pair.cpp +181 -0
- data/vendor/simpleble/examples/simplebluez/read/read.cpp +141 -0
- data/vendor/simpleble/examples/simplebluez/scan/scan.cpp +85 -0
- data/vendor/simpleble/examples/simplecble/c/connect.c +163 -0
- data/vendor/simpleble/examples/simplecble/c/notify.c +217 -0
- data/vendor/simpleble/examples/simplecble/c/scan.c +164 -0
- data/vendor/simpleble/examples/simpledbus/notification.cpp +24 -0
- data/vendor/simpleble/hitl/src/test_sanity.cpp +48 -0
- data/vendor/simpleble/install_simplecble/include/simpleble/Adapter.h +102 -0
- data/vendor/simpleble/install_simplecble/include/simpleble/AdapterSafe.h +58 -0
- data/vendor/simpleble/install_simplecble/include/simpleble/Advanced.h +50 -0
- data/vendor/simpleble/install_simplecble/include/simpleble/Characteristic.h +39 -0
- data/vendor/simpleble/install_simplecble/include/simpleble/Config.h +55 -0
- data/vendor/simpleble/install_simplecble/include/simpleble/Descriptor.h +30 -0
- data/vendor/simpleble/install_simplecble/include/simpleble/Exceptions.h +72 -0
- data/vendor/simpleble/install_simplecble/include/simpleble/Logging.h +73 -0
- data/vendor/simpleble/install_simplecble/include/simpleble/Peripheral.h +82 -0
- data/vendor/simpleble/install_simplecble/include/simpleble/PeripheralSafe.h +64 -0
- data/vendor/simpleble/install_simplecble/include/simpleble/Service.h +34 -0
- data/vendor/simpleble/install_simplecble/include/simpleble/SimpleBLE.h +8 -0
- data/vendor/simpleble/install_simplecble/include/simpleble/Types.h +49 -0
- data/vendor/simpleble/install_simplecble/include/simpleble/Utils.h +13 -0
- data/vendor/simpleble/install_simplecble/include/simpleble/export.h +43 -0
- data/vendor/simpleble/install_simplecble/include/simpleble/kvn/kvn_bytearray.h +222 -0
- data/vendor/simpleble/install_simplecble/include/simplecble/adapter.h +188 -0
- data/vendor/simpleble/install_simplecble/include/simplecble/logging.h +37 -0
- data/vendor/simpleble/install_simplecble/include/simplecble/peripheral.h +304 -0
- data/vendor/simpleble/install_simplecble/include/simplecble/simpleble.h +21 -0
- data/vendor/simpleble/install_simplecble/include/simplecble/types.h +73 -0
- data/vendor/simpleble/install_simplecble/include/simplecble/utils.h +27 -0
- data/vendor/simpleble/simpleble/include/simpleble/Adapter.h +102 -0
- data/vendor/simpleble/simpleble/include/simpleble/AdapterSafe.h +58 -0
- data/vendor/simpleble/simpleble/include/simpleble/Characteristic.h +39 -0
- data/vendor/simpleble/simpleble/include/simpleble/Config.h +55 -0
- data/vendor/simpleble/simpleble/include/simpleble/Descriptor.h +30 -0
- data/vendor/simpleble/simpleble/include/simpleble/Exceptions.h +72 -0
- data/vendor/simpleble/simpleble/include/simpleble/Logging.h +73 -0
- data/vendor/simpleble/simpleble/include/simpleble/Peripheral.h +82 -0
- data/vendor/simpleble/simpleble/include/simpleble/PeripheralSafe.h +64 -0
- data/vendor/simpleble/simpleble/include/simpleble/Service.h +34 -0
- data/vendor/simpleble/simpleble/include/simpleble/SimpleBLE.h +8 -0
- data/vendor/simpleble/simpleble/include/simpleble/Types.h +49 -0
- data/vendor/simpleble/simpleble/include/simpleble/Utils.h +13 -0
- data/vendor/simpleble/simpleble/include/simpleble_c/adapter.h +188 -0
- data/vendor/simpleble/simpleble/include/simpleble_c/logging.h +37 -0
- data/vendor/simpleble/simpleble/include/simpleble_c/peripheral.h +304 -0
- data/vendor/simpleble/simpleble/include/simpleble_c/simpleble.h +21 -0
- data/vendor/simpleble/simpleble/include/simpleble_c/types.h +73 -0
- data/vendor/simpleble/simpleble/include/simpleble_c/utils.h +27 -0
- data/vendor/simpleble/simpleble/src/CommonUtils.h +63 -0
- data/vendor/simpleble/simpleble/src/Exceptions.cpp +31 -0
- data/vendor/simpleble/simpleble/src/Logging.cpp +136 -0
- data/vendor/simpleble/simpleble/src/LoggingInternal.h +85 -0
- data/vendor/simpleble/simpleble/src/Utils.cpp +24 -0
- data/vendor/simpleble/simpleble/src/backends/android/AdapterAndroid.cpp +101 -0
- data/vendor/simpleble/simpleble/src/backends/android/AdapterAndroid.h +70 -0
- data/vendor/simpleble/simpleble/src/backends/android/BackendAndroid.cpp +40 -0
- data/vendor/simpleble/simpleble/src/backends/android/BackendAndroid.h +20 -0
- data/vendor/simpleble/simpleble/src/backends/android/PeripheralAndroid.cpp +365 -0
- data/vendor/simpleble/simpleble/src/backends/android/PeripheralAndroid.h +90 -0
- data/vendor/simpleble/simpleble/src/backends/android/bridge/BluetoothGattCallback.cpp +432 -0
- data/vendor/simpleble/simpleble/src/backends/android/bridge/BluetoothGattCallback.h +102 -0
- data/vendor/simpleble/simpleble/src/backends/android/bridge/ScanCallback.cpp +142 -0
- data/vendor/simpleble/simpleble/src/backends/android/bridge/ScanCallback.h +55 -0
- data/vendor/simpleble/simpleble/src/backends/android/types/android/bluetooth/BluetoothAdapter.cpp +107 -0
- data/vendor/simpleble/simpleble/src/backends/android/types/android/bluetooth/BluetoothAdapter.h +55 -0
- data/vendor/simpleble/simpleble/src/backends/android/types/android/bluetooth/BluetoothDevice.cpp +68 -0
- data/vendor/simpleble/simpleble/src/backends/android/types/android/bluetooth/BluetoothDevice.h +54 -0
- data/vendor/simpleble/simpleble/src/backends/android/types/android/bluetooth/BluetoothGatt.cpp +115 -0
- data/vendor/simpleble/simpleble/src/backends/android/types/android/bluetooth/BluetoothGatt.h +75 -0
- data/vendor/simpleble/simpleble/src/backends/android/types/android/bluetooth/BluetoothGattCharacteristic.cpp +142 -0
- data/vendor/simpleble/simpleble/src/backends/android/types/android/bluetooth/BluetoothGattCharacteristic.h +66 -0
- data/vendor/simpleble/simpleble/src/backends/android/types/android/bluetooth/BluetoothGattDescriptor.cpp +67 -0
- data/vendor/simpleble/simpleble/src/backends/android/types/android/bluetooth/BluetoothGattDescriptor.h +46 -0
- data/vendor/simpleble/simpleble/src/backends/android/types/android/bluetooth/BluetoothGattService.cpp +106 -0
- data/vendor/simpleble/simpleble/src/backends/android/types/android/bluetooth/BluetoothGattService.h +47 -0
- data/vendor/simpleble/simpleble/src/backends/android/types/android/bluetooth/le/BluetoothScanner.cpp +47 -0
- data/vendor/simpleble/simpleble/src/backends/android/types/android/bluetooth/le/BluetoothScanner.h +37 -0
- data/vendor/simpleble/simpleble/src/backends/android/types/android/bluetooth/le/ScanRecord.cpp +69 -0
- data/vendor/simpleble/simpleble/src/backends/android/types/android/bluetooth/le/ScanRecord.h +41 -0
- data/vendor/simpleble/simpleble/src/backends/android/types/android/bluetooth/le/ScanResult.cpp +63 -0
- data/vendor/simpleble/simpleble/src/backends/android/types/android/bluetooth/le/ScanResult.h +42 -0
- data/vendor/simpleble/simpleble/src/backends/android/types/android/os/ParcelUUID.cpp +32 -0
- data/vendor/simpleble/simpleble/src/backends/android/types/android/os/ParcelUUID.h +30 -0
- data/vendor/simpleble/simpleble/src/backends/android/types/android/util/SparseArray.cpp +54 -0
- data/vendor/simpleble/simpleble/src/backends/android/types/android/util/SparseArray.h +37 -0
- data/vendor/simpleble/simpleble/src/backends/android/types/java/util/Iterator.cpp +36 -0
- data/vendor/simpleble/simpleble/src/backends/android/types/java/util/Iterator.h +28 -0
- data/vendor/simpleble/simpleble/src/backends/android/types/java/util/List.cpp +29 -0
- data/vendor/simpleble/simpleble/src/backends/android/types/java/util/List.h +27 -0
- data/vendor/simpleble/simpleble/src/backends/android/types/java/util/Set.cpp +33 -0
- data/vendor/simpleble/simpleble/src/backends/android/types/java/util/Set.h +28 -0
- data/vendor/simpleble/simpleble/src/backends/android/types/java/util/UUID.cpp +26 -0
- data/vendor/simpleble/simpleble/src/backends/android/types/java/util/UUID.h +29 -0
- data/vendor/simpleble/simpleble/src/backends/common/AdapterBase.cpp +53 -0
- data/vendor/simpleble/simpleble/src/backends/common/AdapterBase.h +81 -0
- data/vendor/simpleble/simpleble/src/backends/common/AdapterBaseTypes.h +22 -0
- data/vendor/simpleble/simpleble/src/backends/common/BackendBase.h +20 -0
- data/vendor/simpleble/simpleble/src/backends/common/BackendUtils.h +33 -0
- data/vendor/simpleble/simpleble/src/backends/common/CharacteristicBase.cpp +28 -0
- data/vendor/simpleble/simpleble/src/backends/common/CharacteristicBase.h +38 -0
- data/vendor/simpleble/simpleble/src/backends/common/DescriptorBase.cpp +7 -0
- data/vendor/simpleble/simpleble/src/backends/common/DescriptorBase.h +19 -0
- data/vendor/simpleble/simpleble/src/backends/common/PeripheralBase.h +82 -0
- data/vendor/simpleble/simpleble/src/backends/common/ServiceBase.cpp +18 -0
- data/vendor/simpleble/simpleble/src/backends/common/ServiceBase.h +28 -0
- data/vendor/simpleble/simpleble/src/backends/linux/AdapterLinux.cpp +102 -0
- data/vendor/simpleble/simpleble/src/backends/linux/AdapterLinux.h +55 -0
- data/vendor/simpleble/simpleble/src/backends/linux/BackendBluez.cpp +87 -0
- data/vendor/simpleble/simpleble/src/backends/linux/PeripheralLinux.cpp +376 -0
- data/vendor/simpleble/simpleble/src/backends/linux/PeripheralLinux.h +90 -0
- data/vendor/simpleble/simpleble/src/backends/macos/AdapterBaseMacOS.h +29 -0
- data/vendor/simpleble/simpleble/src/backends/macos/AdapterMac.h +78 -0
- data/vendor/simpleble/simpleble/src/backends/macos/PeripheralBaseMacOS.h +49 -0
- data/vendor/simpleble/simpleble/src/backends/macos/PeripheralMac.h +81 -0
- data/vendor/simpleble/simpleble/src/backends/macos/Utils.h +9 -0
- data/vendor/simpleble/simpleble/src/backends/plain/AdapterPlain.cpp +65 -0
- data/vendor/simpleble/simpleble/src/backends/plain/AdapterPlain.h +49 -0
- data/vendor/simpleble/simpleble/src/backends/plain/BackendPlain.cpp +30 -0
- data/vendor/simpleble/simpleble/src/backends/plain/PeripheralPlain.cpp +159 -0
- data/vendor/simpleble/simpleble/src/backends/plain/PeripheralPlain.h +72 -0
- data/vendor/simpleble/simpleble/src/backends/windows/AdapterWindows.cpp +330 -0
- data/vendor/simpleble/simpleble/src/backends/windows/AdapterWindows.h +89 -0
- data/vendor/simpleble/simpleble/src/backends/windows/BackendWinRT.cpp +67 -0
- data/vendor/simpleble/simpleble/src/backends/windows/BackendWinRT.h +18 -0
- data/vendor/simpleble/simpleble/src/backends/windows/MtaManager.cpp +49 -0
- data/vendor/simpleble/simpleble/src/backends/windows/MtaManager.h +90 -0
- data/vendor/simpleble/simpleble/src/backends/windows/PeripheralWindows.cpp +487 -0
- data/vendor/simpleble/simpleble/src/backends/windows/PeripheralWindows.h +129 -0
- data/vendor/simpleble/simpleble/src/backends/windows/Utils.cpp +146 -0
- data/vendor/simpleble/simpleble/src/backends/windows/Utils.h +47 -0
- data/vendor/simpleble/simpleble/src/builders/BuildVec.h +32 -0
- data/vendor/simpleble/simpleble/src/builders/BuilderBase.h +87 -0
- data/vendor/simpleble/simpleble/src/external/TaskRunner.hpp +99 -0
- data/vendor/simpleble/simpleble/src/external/ThreadRunner.h +52 -0
- data/vendor/simpleble/simpleble/src/external/kvn_safe_callback.hpp +66 -0
- data/vendor/simpleble/simpleble/src/external/kvn_safe_map.hpp +94 -0
- data/vendor/simpleble/simpleble/src/external/kvn_threadrunner.hpp +70 -0
- data/vendor/simpleble/simpleble/src/external/logfwd.hpp +35 -0
- data/vendor/simpleble/simpleble/src/frontends/base/Adapter.cpp +111 -0
- data/vendor/simpleble/simpleble/src/frontends/base/Backend.cpp +83 -0
- data/vendor/simpleble/simpleble/src/frontends/base/Backend.h +76 -0
- data/vendor/simpleble/simpleble/src/frontends/base/Characteristic.cpp +56 -0
- data/vendor/simpleble/simpleble/src/frontends/base/Descriptor.cpp +21 -0
- data/vendor/simpleble/simpleble/src/frontends/base/Peripheral.cpp +113 -0
- data/vendor/simpleble/simpleble/src/frontends/base/Service.cpp +26 -0
- data/vendor/simpleble/simpleble/src/frontends/safe/AdapterSafe.cpp +158 -0
- data/vendor/simpleble/simpleble/src/frontends/safe/PeripheralSafe.cpp +219 -0
- data/vendor/simpleble/simpleble/src_c/adapter.cpp +204 -0
- data/vendor/simpleble/simpleble/src_c/logging.cpp +19 -0
- data/vendor/simpleble/simpleble/src_c/peripheral.cpp +444 -0
- data/vendor/simpleble/simpleble/src_c/simpleble.cpp +5 -0
- data/vendor/simpleble/simpleble/src_c/utils.cpp +15 -0
- data/vendor/simpleble/simpleble/test/src/main.cpp +8 -0
- data/vendor/simpleble/simpleble/test/src/test_bytearray.cpp +246 -0
- data/vendor/simpleble/simpleble/test/src/test_utils.cpp +24 -0
- data/vendor/simpleble/simplebluez/include/simplebluez/Adapter.h +46 -0
- data/vendor/simpleble/simplebluez/include/simplebluez/Agent.h +52 -0
- data/vendor/simpleble/simplebluez/include/simplebluez/Bluez.h +37 -0
- data/vendor/simpleble/simplebluez/include/simplebluez/BluezOrg.h +22 -0
- data/vendor/simpleble/simplebluez/include/simplebluez/BluezOrgBluez.h +26 -0
- data/vendor/simpleble/simplebluez/include/simplebluez/BluezRoot.h +32 -0
- data/vendor/simpleble/simplebluez/include/simplebluez/Characteristic.h +46 -0
- data/vendor/simpleble/simplebluez/include/simplebluez/Descriptor.h +33 -0
- data/vendor/simpleble/simplebluez/include/simplebluez/Device.h +64 -0
- data/vendor/simpleble/simplebluez/include/simplebluez/Exceptions.h +43 -0
- data/vendor/simpleble/simplebluez/include/simplebluez/Service.h +27 -0
- data/vendor/simpleble/simplebluez/include/simplebluez/Types.h +9 -0
- data/vendor/simpleble/simplebluez/include/simplebluez/interfaces/Adapter1.h +49 -0
- data/vendor/simpleble/simplebluez/include/simplebluez/interfaces/Agent1.h +100 -0
- data/vendor/simpleble/simplebluez/include/simplebluez/interfaces/AgentManager1.h +24 -0
- data/vendor/simpleble/simplebluez/include/simplebluez/interfaces/Battery1.h +32 -0
- data/vendor/simpleble/simplebluez/include/simplebluez/interfaces/Device1.h +62 -0
- data/vendor/simpleble/simplebluez/include/simplebluez/interfaces/GattCharacteristic1.h +48 -0
- data/vendor/simpleble/simplebluez/include/simplebluez/interfaces/GattDescriptor1.h +41 -0
- data/vendor/simpleble/simplebluez/include/simplebluez/interfaces/GattService1.h +28 -0
- data/vendor/simpleble/simplebluez/src/Adapter.cpp +78 -0
- data/vendor/simpleble/simplebluez/src/Agent.cpp +72 -0
- data/vendor/simpleble/simplebluez/src/Bluez.cpp +45 -0
- data/vendor/simpleble/simplebluez/src/BluezOrg.cpp +20 -0
- data/vendor/simpleble/simplebluez/src/BluezOrgBluez.cpp +23 -0
- data/vendor/simpleble/simplebluez/src/BluezRoot.cpp +44 -0
- data/vendor/simpleble/simplebluez/src/Characteristic.cpp +64 -0
- data/vendor/simpleble/simplebluez/src/Descriptor.cpp +27 -0
- data/vendor/simpleble/simplebluez/src/Device.cpp +104 -0
- data/vendor/simpleble/simplebluez/src/Exceptions.cpp +29 -0
- data/vendor/simpleble/simplebluez/src/Logging.cpp +52 -0
- data/vendor/simpleble/simplebluez/src/Logging.h +57 -0
- data/vendor/simpleble/simplebluez/src/Service.cpp +33 -0
- data/vendor/simpleble/simplebluez/src/interfaces/Adapter1.cpp +123 -0
- data/vendor/simpleble/simplebluez/src/interfaces/Agent1.cpp +143 -0
- data/vendor/simpleble/simplebluez/src/interfaces/AgentManager1.cpp +34 -0
- data/vendor/simpleble/simplebluez/src/interfaces/Battery1.cpp +30 -0
- data/vendor/simpleble/simplebluez/src/interfaces/Device1.cpp +170 -0
- data/vendor/simpleble/simplebluez/src/interfaces/GattCharacteristic1.cpp +118 -0
- data/vendor/simpleble/simplebluez/src/interfaces/GattDescriptor1.cpp +78 -0
- data/vendor/simpleble/simplebluez/src/interfaces/GattService1.cpp +28 -0
- data/vendor/simpleble/simplebluez/test/src/helpers/PythonRunner.cpp +53 -0
- data/vendor/simpleble/simplebluez/test/src/helpers/PythonRunner.h +24 -0
- data/vendor/simpleble/simplebluez/test/src/main.cpp +16 -0
- data/vendor/simpleble/simplecble/include/simplecble/adapter.h +188 -0
- data/vendor/simpleble/simplecble/include/simplecble/logging.h +37 -0
- data/vendor/simpleble/simplecble/include/simplecble/peripheral.h +304 -0
- data/vendor/simpleble/simplecble/include/simplecble/simpleble.h +21 -0
- data/vendor/simpleble/simplecble/include/simplecble/types.h +73 -0
- data/vendor/simpleble/simplecble/include/simplecble/utils.h +27 -0
- data/vendor/simpleble/simplecble/src/adapter.cpp +204 -0
- data/vendor/simpleble/simplecble/src/logging.cpp +19 -0
- data/vendor/simpleble/simplecble/src/peripheral.cpp +444 -0
- data/vendor/simpleble/simplecble/src/simpleble.cpp +5 -0
- data/vendor/simpleble/simplecble/src/utils.cpp +15 -0
- data/vendor/simpleble/simpledbus/include/simpledbus/advanced/Interface.h +67 -0
- data/vendor/simpleble/simpledbus/include/simpledbus/advanced/InterfaceRegistry.h +64 -0
- data/vendor/simpleble/simpledbus/include/simpledbus/advanced/Proxy.h +117 -0
- data/vendor/simpleble/simpledbus/include/simpledbus/base/Connection.h +50 -0
- data/vendor/simpleble/simpledbus/include/simpledbus/base/Exceptions.h +56 -0
- data/vendor/simpleble/simpledbus/include/simpledbus/base/Holder.h +147 -0
- data/vendor/simpleble/simpledbus/include/simpledbus/base/Logging.h +57 -0
- data/vendor/simpleble/simpledbus/include/simpledbus/base/Message.h +89 -0
- data/vendor/simpleble/simpledbus/include/simpledbus/base/Path.h +24 -0
- data/vendor/simpleble/simpledbus/include/simpledbus/interfaces/ObjectManager.h +26 -0
- data/vendor/simpleble/simpledbus/src/advanced/Interface.cpp +155 -0
- data/vendor/simpleble/simpledbus/src/advanced/Proxy.cpp +375 -0
- data/vendor/simpleble/simpledbus/src/base/Connection.cpp +222 -0
- data/vendor/simpleble/simpledbus/src/base/Exceptions.cpp +39 -0
- data/vendor/simpleble/simpledbus/src/base/Holder.cpp +739 -0
- data/vendor/simpleble/simpledbus/src/base/Logging.cpp +52 -0
- data/vendor/simpleble/simpledbus/src/base/Message.cpp +622 -0
- data/vendor/simpleble/simpledbus/src/base/Path.cpp +129 -0
- data/vendor/simpleble/simpledbus/src/interfaces/ObjectManager.cpp +58 -0
- data/vendor/simpleble/simpledbus/test/src/helpers/PythonRunner.cpp +53 -0
- data/vendor/simpleble/simpledbus/test/src/helpers/PythonRunner.h +24 -0
- data/vendor/simpleble/simpledbus/test/src/main.cpp +16 -0
- data/vendor/simpleble/simpledbus/test/src/test_holder.cpp +184 -0
- data/vendor/simpleble/simpledbus/test/src/test_message.cpp +397 -0
- data/vendor/simpleble/simpledbus/test/src/test_path.cpp +76 -0
- data/vendor/simpleble/simpledbus/test/src/test_proxy_children.cpp +109 -0
- data/vendor/simpleble/simpledbus/test/src/test_proxy_interfaces.cpp +102 -0
- data/vendor/simpleble/simpledbus/test/src/test_proxy_lifetime.cpp +18 -0
- data/vendor/simpleble/simpledroidble/simpledroidble/src/main/cpp/ThreadRunner.h +89 -0
- data/vendor/simpleble/simpledroidble/simpledroidble/src/main/cpp/android_utils.cpp +55 -0
- data/vendor/simpleble/simpledroidble/simpledroidble/src/main/cpp/android_utils.h +18 -0
- data/vendor/simpleble/simpledroidble/simpledroidble/src/main/cpp/simpleble_android.cpp +813 -0
- data/vendor/simpleble/simplejavable/cpp/src/core/AdapterWrapper.cpp +37 -0
- data/vendor/simpleble/simplejavable/cpp/src/core/AdapterWrapper.h +23 -0
- data/vendor/simpleble/simplejavable/cpp/src/core/Cache.cpp +58 -0
- data/vendor/simpleble/simplejavable/cpp/src/core/Cache.h +34 -0
- data/vendor/simpleble/simplejavable/cpp/src/core/PeripheralWrapper.cpp +17 -0
- data/vendor/simpleble/simplejavable/cpp/src/core/PeripheralWrapper.h +19 -0
- data/vendor/simpleble/simplejavable/cpp/src/java/lang/ArrayList.cpp +257 -0
- data/vendor/simpleble/simplejavable/cpp/src/java/lang/ArrayList.h +78 -0
- data/vendor/simpleble/simplejavable/cpp/src/java/lang/HashMap.cpp +96 -0
- data/vendor/simpleble/simplejavable/cpp/src/java/lang/HashMap.h +54 -0
- data/vendor/simpleble/simplejavable/cpp/src/java/lang/Integer.cpp +93 -0
- data/vendor/simpleble/simplejavable/cpp/src/java/lang/Integer.h +49 -0
- data/vendor/simpleble/simplejavable/cpp/src/java/lang/Iterator.cpp +85 -0
- data/vendor/simpleble/simplejavable/cpp/src/java/lang/Iterator.h +48 -0
- data/vendor/simpleble/simplejavable/cpp/src/org/simplejavable/AdapterCallback.cpp +91 -0
- data/vendor/simpleble/simplejavable/cpp/src/org/simplejavable/AdapterCallback.h +90 -0
- data/vendor/simpleble/simplejavable/cpp/src/org/simplejavable/Characteristic.cpp +35 -0
- data/vendor/simpleble/simplejavable/cpp/src/org/simplejavable/Characteristic.h +60 -0
- data/vendor/simpleble/simplejavable/cpp/src/org/simplejavable/DataCallback.cpp +33 -0
- data/vendor/simpleble/simplejavable/cpp/src/org/simplejavable/DataCallback.h +45 -0
- data/vendor/simpleble/simplejavable/cpp/src/org/simplejavable/Descriptor.cpp +30 -0
- data/vendor/simpleble/simplejavable/cpp/src/org/simplejavable/Descriptor.h +49 -0
- data/vendor/simpleble/simplejavable/cpp/src/org/simplejavable/PeripheralCallback.cpp +41 -0
- data/vendor/simpleble/simplejavable/cpp/src/org/simplejavable/PeripheralCallback.h +51 -0
- data/vendor/simpleble/simplejavable/cpp/src/org/simplejavable/Service.cpp +33 -0
- data/vendor/simpleble/simplejavable/cpp/src/org/simplejavable/Service.h +54 -0
- data/vendor/simpleble/simplejavable/cpp/src/simplejavable.cpp +361 -0
- data/vendor/simpleble/simplepyble/src/main.cpp +55 -0
- data/vendor/simpleble/simplepyble/src/wrap_adapter.cpp +106 -0
- data/vendor/simpleble/simplepyble/src/wrap_characteristic.cpp +56 -0
- data/vendor/simpleble/simplepyble/src/wrap_config.cpp +136 -0
- data/vendor/simpleble/simplepyble/src/wrap_descriptor.cpp +21 -0
- data/vendor/simpleble/simplepyble/src/wrap_peripheral.cpp +217 -0
- data/vendor/simpleble/simplepyble/src/wrap_service.cpp +32 -0
- data/vendor/simpleble/simplepyble/src/wrap_types.cpp +21 -0
- data/vendor/simpleble/simplersble/src/bindings/Bindings.cpp +338 -0
- data/vendor/simpleble/simplersble/src/bindings/Bindings.hpp +178 -0
- metadata +430 -0
@@ -0,0 +1,55 @@
|
|
1
|
+
#pragma once
|
2
|
+
|
3
|
+
#include <kvn_safe_callback.hpp>
|
4
|
+
#include <map>
|
5
|
+
#include "types/android/bluetooth/le/ScanResult.h"
|
6
|
+
#include "simplejni/Common.hpp"
|
7
|
+
#include "simplejni/Registry.hpp"
|
8
|
+
|
9
|
+
namespace SimpleBLE {
|
10
|
+
namespace Android {
|
11
|
+
namespace Bridge {
|
12
|
+
|
13
|
+
class ScanCallback {
|
14
|
+
public:
|
15
|
+
ScanCallback();
|
16
|
+
virtual ~ScanCallback();
|
17
|
+
jobject get() const { return _obj.get(); } // TODO: Remove once nothing uses this
|
18
|
+
|
19
|
+
void set_callback_onScanResult(std::function<void(Android::ScanResult)> callback);
|
20
|
+
void set_callback_onBatchScanResults(std::function<void()> callback);
|
21
|
+
void set_callback_onScanFailed(std::function<void()> callback);
|
22
|
+
|
23
|
+
// Not for public use
|
24
|
+
static void jni_onScanResultCallback(SimpleJNI::Object<SimpleJNI::GlobalRef, jobject> thiz, jint callback_type,
|
25
|
+
Android::ScanResult scan_result);
|
26
|
+
static void jni_onBatchScanResultsCallback(SimpleJNI::Object<SimpleJNI::GlobalRef, jobject> thiz,
|
27
|
+
SimpleJNI::Object<SimpleJNI::GlobalRef, jobject> results);
|
28
|
+
static void jni_onScanFailedCallback(SimpleJNI::Object<SimpleJNI::GlobalRef, jobject> thiz, jint error_code);
|
29
|
+
|
30
|
+
private:
|
31
|
+
// Underlying JNI object - Use SimpleJNI::Object with GlobalRef
|
32
|
+
SimpleJNI::Object<SimpleJNI::GlobalRef, jobject> _obj;
|
33
|
+
|
34
|
+
// Map for instance tracking - Key should be comparable using JniObjectComparator
|
35
|
+
static kvn::safe_map<SimpleJNI::Object<SimpleJNI::GlobalRef, jobject>, ScanCallback*,
|
36
|
+
SimpleJNI::ObjectComparator<SimpleJNI::GlobalRef, jobject>>
|
37
|
+
_map;
|
38
|
+
|
39
|
+
// Callbacks
|
40
|
+
kvn::safe_callback<void(Android::ScanResult)> _callback_onScanResult;
|
41
|
+
kvn::safe_callback<void()> _callback_onBatchScanResults;
|
42
|
+
kvn::safe_callback<void()> _callback_onScanFailed;
|
43
|
+
|
44
|
+
// Static JNI resources managed by Registrar
|
45
|
+
static SimpleJNI::GlobalRef<jclass> _cls;
|
46
|
+
static jmethodID _constructor;
|
47
|
+
|
48
|
+
// JNI descriptor for auto-registration
|
49
|
+
static const SimpleJNI::JNIDescriptor descriptor;
|
50
|
+
static const SimpleJNI::AutoRegister<ScanCallback> registrar;
|
51
|
+
};
|
52
|
+
|
53
|
+
} // namespace Bridge
|
54
|
+
} // namespace Android
|
55
|
+
} // namespace SimpleBLE
|
data/vendor/simpleble/simpleble/src/backends/android/types/android/bluetooth/BluetoothAdapter.cpp
ADDED
@@ -0,0 +1,107 @@
|
|
1
|
+
#include "BluetoothAdapter.h"
|
2
|
+
#include "types/java/util/Set.h"
|
3
|
+
|
4
|
+
namespace SimpleBLE {
|
5
|
+
namespace Android {
|
6
|
+
|
7
|
+
// Static member initialization
|
8
|
+
SimpleJNI::GlobalRef<jclass> BluetoothAdapter::_cls;
|
9
|
+
jmethodID BluetoothAdapter::_method_getName = nullptr;
|
10
|
+
jmethodID BluetoothAdapter::_method_getAddress = nullptr;
|
11
|
+
jmethodID BluetoothAdapter::_method_isEnabled = nullptr;
|
12
|
+
jmethodID BluetoothAdapter::_method_getState = nullptr;
|
13
|
+
jmethodID BluetoothAdapter::_method_getBluetoothLeScanner = nullptr;
|
14
|
+
jmethodID BluetoothAdapter::_method_getBondedDevices = nullptr;
|
15
|
+
jmethodID BluetoothAdapter::_method_getDefaultAdapter = nullptr;
|
16
|
+
|
17
|
+
// JNI descriptors for auto-registration
|
18
|
+
const SimpleJNI::JNIDescriptor BluetoothAdapter::instance_descriptor{
|
19
|
+
"android/bluetooth/BluetoothAdapter", // Java class name
|
20
|
+
&_cls, // Where to store the jclass
|
21
|
+
{ // Instance methods to preload
|
22
|
+
{"getName", "()Ljava/lang/String;", &_method_getName},
|
23
|
+
{"getAddress", "()Ljava/lang/String;", &_method_getAddress},
|
24
|
+
{"isEnabled", "()Z", &_method_isEnabled},
|
25
|
+
{"getState", "()I", &_method_getState},
|
26
|
+
{"getBluetoothLeScanner", "()Landroid/bluetooth/le/BluetoothLeScanner;", &_method_getBluetoothLeScanner},
|
27
|
+
{"getBondedDevices", "()Ljava/util/Set;", &_method_getBondedDevices}
|
28
|
+
}
|
29
|
+
};
|
30
|
+
|
31
|
+
const SimpleJNI::StaticJNIDescriptor BluetoothAdapter::static_descriptor{
|
32
|
+
"android/bluetooth/BluetoothAdapter", // Java class name
|
33
|
+
&_cls, // Where to store the jclass (shared with instance)
|
34
|
+
{ // Static methods to preload
|
35
|
+
{"getDefaultAdapter", "()Landroid/bluetooth/BluetoothAdapter;", &_method_getDefaultAdapter}
|
36
|
+
}
|
37
|
+
};
|
38
|
+
|
39
|
+
// Auto-register both descriptors
|
40
|
+
const SimpleJNI::AutoRegister<BluetoothAdapter> BluetoothAdapter::registrar{&instance_descriptor, &static_descriptor};
|
41
|
+
|
42
|
+
BluetoothAdapter::BluetoothAdapter(SimpleJNI::Object<SimpleJNI::GlobalRef, jobject> obj) : _obj(obj) {
|
43
|
+
if (!obj) {
|
44
|
+
throw std::runtime_error("BluetoothAdapter object is null");
|
45
|
+
}
|
46
|
+
}
|
47
|
+
|
48
|
+
BluetoothAdapter BluetoothAdapter::getDefaultAdapter() {
|
49
|
+
if (!_cls.get()) {
|
50
|
+
throw std::runtime_error("BluetoothAdapter JNI resources not preloaded. Ensure SimpleJNI::Registrar::preload() is called.");
|
51
|
+
}
|
52
|
+
SimpleJNI::Env env;
|
53
|
+
jobject local_obj = env->CallStaticObjectMethod(_cls.get(), _method_getDefaultAdapter);
|
54
|
+
if (local_obj == nullptr) {
|
55
|
+
throw std::runtime_error("Failed to get default BluetoothAdapter");
|
56
|
+
}
|
57
|
+
SimpleJNI::Object<SimpleJNI::GlobalRef, jobject> obj(local_obj);
|
58
|
+
env->DeleteLocalRef(local_obj);
|
59
|
+
return BluetoothAdapter(obj);
|
60
|
+
}
|
61
|
+
|
62
|
+
std::string BluetoothAdapter::getName() {
|
63
|
+
if (!_obj) throw std::runtime_error("BluetoothAdapter is not initialized");
|
64
|
+
return _obj.call_string_method(_method_getName);
|
65
|
+
}
|
66
|
+
|
67
|
+
std::string BluetoothAdapter::getAddress() {
|
68
|
+
if (!_obj) throw std::runtime_error("BluetoothAdapter is not initialized");
|
69
|
+
return _obj.call_string_method(_method_getAddress);
|
70
|
+
}
|
71
|
+
|
72
|
+
bool BluetoothAdapter::isEnabled() {
|
73
|
+
if (!_obj) throw std::runtime_error("BluetoothAdapter is not initialized");
|
74
|
+
return _obj.call_boolean_method(_method_isEnabled);
|
75
|
+
}
|
76
|
+
|
77
|
+
int BluetoothAdapter::getState() {
|
78
|
+
if (!_obj) throw std::runtime_error("BluetoothAdapter is not initialized");
|
79
|
+
return _obj.call_int_method(_method_getState);
|
80
|
+
}
|
81
|
+
|
82
|
+
BluetoothScanner BluetoothAdapter::getBluetoothLeScanner() {
|
83
|
+
if (!_obj) throw std::runtime_error("BluetoothAdapter is not initialized");
|
84
|
+
auto scanner_obj = _obj.call_object_method(_method_getBluetoothLeScanner);
|
85
|
+
return BluetoothScanner(scanner_obj);
|
86
|
+
}
|
87
|
+
|
88
|
+
std::vector<BluetoothDevice> BluetoothAdapter::getBondedDevices() {
|
89
|
+
if (!_obj) throw std::runtime_error("BluetoothAdapter is not initialized");
|
90
|
+
|
91
|
+
auto devices_obj = _obj.call_object_method(_method_getBondedDevices);
|
92
|
+
if (!devices_obj) throw std::runtime_error("Failed to get bonded devices");
|
93
|
+
|
94
|
+
std::vector<BluetoothDevice> result;
|
95
|
+
Set set(devices_obj.to_global());
|
96
|
+
Iterator iterator = set.iterator();
|
97
|
+
while (iterator.hasNext()) {
|
98
|
+
auto device_obj = iterator.next();
|
99
|
+
if (!device_obj) continue;
|
100
|
+
result.push_back(BluetoothDevice(device_obj));
|
101
|
+
}
|
102
|
+
|
103
|
+
return result;
|
104
|
+
}
|
105
|
+
|
106
|
+
} // namespace Android
|
107
|
+
} // namespace SimpleBLE
|
data/vendor/simpleble/simpleble/src/backends/android/types/android/bluetooth/BluetoothAdapter.h
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
#pragma once
|
2
|
+
|
3
|
+
#include "simplejni/Common.hpp"
|
4
|
+
#include "simplejni/Registry.hpp"
|
5
|
+
#include "types/android/bluetooth/BluetoothDevice.h"
|
6
|
+
#include "types/android/bluetooth/le/BluetoothScanner.h"
|
7
|
+
|
8
|
+
namespace SimpleBLE {
|
9
|
+
namespace Android {
|
10
|
+
|
11
|
+
class BluetoothAdapter {
|
12
|
+
public:
|
13
|
+
BluetoothAdapter(SimpleJNI::Object<SimpleJNI::GlobalRef, jobject> obj);
|
14
|
+
virtual ~BluetoothAdapter() = default;
|
15
|
+
|
16
|
+
std::string getName();
|
17
|
+
std::string getAddress();
|
18
|
+
bool isEnabled();
|
19
|
+
int getState();
|
20
|
+
|
21
|
+
BluetoothScanner getBluetoothLeScanner();
|
22
|
+
std::vector<BluetoothDevice> getBondedDevices();
|
23
|
+
|
24
|
+
// NOTE: The correct way to request a BluetoothAdapter is to go though the BluetoothManager,
|
25
|
+
// as described in https://developer.android.com/reference/android/bluetooth/BluetoothManager#getAdapter()
|
26
|
+
// However, for simplicity, we are using a direct call to BluetoothAdapter.getDefaultAdapter() which is
|
27
|
+
// deprecated in API 31 but still works. We'll need to implement a backend bypass to get a Context
|
28
|
+
// object and call getSystemService(Context.BLUETOOTH_SERVICE) to get the BluetoothManager.
|
29
|
+
|
30
|
+
// NOTE: Android BluetoothAdapter and BluetoothScanner classes are singletons, but so is this
|
31
|
+
// class, so we don't need to make them static.
|
32
|
+
static BluetoothAdapter getDefaultAdapter();
|
33
|
+
jobject get() const { return _obj.get(); } // TODO: Remove once nothing uses this
|
34
|
+
|
35
|
+
private:
|
36
|
+
SimpleJNI::Object<SimpleJNI::GlobalRef, jobject> _obj;
|
37
|
+
|
38
|
+
// Static JNI resources managed by Registrar
|
39
|
+
static SimpleJNI::GlobalRef<jclass> _cls;
|
40
|
+
static jmethodID _method_getName;
|
41
|
+
static jmethodID _method_getAddress;
|
42
|
+
static jmethodID _method_isEnabled;
|
43
|
+
static jmethodID _method_getState;
|
44
|
+
static jmethodID _method_getBluetoothLeScanner;
|
45
|
+
static jmethodID _method_getBondedDevices;
|
46
|
+
static jmethodID _method_getDefaultAdapter;
|
47
|
+
|
48
|
+
// JNI descriptors for auto-registration
|
49
|
+
static const SimpleJNI::JNIDescriptor instance_descriptor;
|
50
|
+
static const SimpleJNI::StaticJNIDescriptor static_descriptor;
|
51
|
+
static const SimpleJNI::AutoRegister<BluetoothAdapter> registrar;
|
52
|
+
};
|
53
|
+
|
54
|
+
} // namespace Android
|
55
|
+
} // namespace SimpleBLE
|
data/vendor/simpleble/simpleble/src/backends/android/types/android/bluetooth/BluetoothDevice.cpp
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
#include "BluetoothDevice.h"
|
2
|
+
|
3
|
+
namespace SimpleBLE {
|
4
|
+
namespace Android {
|
5
|
+
|
6
|
+
// Static constants
|
7
|
+
const int BluetoothDevice::BOND_NONE;
|
8
|
+
const int BluetoothDevice::BOND_BONDING;
|
9
|
+
const int BluetoothDevice::BOND_BONDED;
|
10
|
+
|
11
|
+
const int BluetoothDevice::ADDRESS_TYPE_ANONYMOUS;
|
12
|
+
const int BluetoothDevice::ADDRESS_TYPE_PUBLIC;
|
13
|
+
const int BluetoothDevice::ADDRESS_TYPE_RANDOM;
|
14
|
+
|
15
|
+
const int BluetoothDevice::TRANSPORT_AUTO;
|
16
|
+
const int BluetoothDevice::TRANSPORT_BREDR;
|
17
|
+
const int BluetoothDevice::TRANSPORT_LE;
|
18
|
+
|
19
|
+
// Static JNI resources
|
20
|
+
SimpleJNI::GlobalRef<jclass> BluetoothDevice::_cls;
|
21
|
+
jmethodID BluetoothDevice::_method_getAddress;
|
22
|
+
jmethodID BluetoothDevice::_method_getName;
|
23
|
+
jmethodID BluetoothDevice::_method_getBondState;
|
24
|
+
jmethodID BluetoothDevice::_method_connectGatt;
|
25
|
+
|
26
|
+
// JNI descriptor and registrar
|
27
|
+
const SimpleJNI::JNIDescriptor BluetoothDevice::descriptor{
|
28
|
+
"android/bluetooth/BluetoothDevice", // Java class name
|
29
|
+
&_cls, // Where to store the jclass
|
30
|
+
{ // Methods to preload
|
31
|
+
{"getAddress", "()Ljava/lang/String;", &_method_getAddress},
|
32
|
+
{"getName", "()Ljava/lang/String;", &_method_getName},
|
33
|
+
{"getBondState", "()I", &_method_getBondState},
|
34
|
+
{"connectGatt", "(Landroid/content/Context;ZLandroid/bluetooth/BluetoothGattCallback;I)Landroid/bluetooth/BluetoothGatt;", &_method_connectGatt}
|
35
|
+
}
|
36
|
+
};
|
37
|
+
|
38
|
+
const SimpleJNI::AutoRegister<BluetoothDevice> BluetoothDevice::registrar{&descriptor};
|
39
|
+
|
40
|
+
BluetoothDevice::BluetoothDevice(SimpleJNI::Object<SimpleJNI::GlobalRef, jobject> obj) : _obj(obj) {
|
41
|
+
if (!_cls.get()) {
|
42
|
+
throw std::runtime_error("BluetoothDevice JNI resources not preloaded. Ensure SimpleJNI::Registrar::preload() is called.");
|
43
|
+
}
|
44
|
+
}
|
45
|
+
|
46
|
+
std::string BluetoothDevice::getAddress() {
|
47
|
+
if (!_obj) throw std::runtime_error("BluetoothDevice is not initialized");
|
48
|
+
return _obj.call_string_method(_method_getAddress);
|
49
|
+
}
|
50
|
+
|
51
|
+
std::string BluetoothDevice::getName() {
|
52
|
+
if (!_obj) throw std::runtime_error("BluetoothDevice is not initialized");
|
53
|
+
return _obj.call_string_method(_method_getName);
|
54
|
+
}
|
55
|
+
|
56
|
+
int BluetoothDevice::getBondState() {
|
57
|
+
if (!_obj) throw std::runtime_error("BluetoothDevice is not initialized");
|
58
|
+
return _obj.call_int_method(_method_getBondState);
|
59
|
+
}
|
60
|
+
|
61
|
+
BluetoothGatt BluetoothDevice::connectGatt(bool autoConnect, Bridge::BluetoothGattCallback& callback) {
|
62
|
+
if (!_obj) throw std::runtime_error("BluetoothDevice is not initialized");
|
63
|
+
return BluetoothGatt(
|
64
|
+
_obj.call_object_method(_method_connectGatt, nullptr, autoConnect, callback.get(), BluetoothDevice::TRANSPORT_LE));
|
65
|
+
}
|
66
|
+
|
67
|
+
} // namespace Android
|
68
|
+
} // namespace SimpleBLE
|
data/vendor/simpleble/simpleble/src/backends/android/types/android/bluetooth/BluetoothDevice.h
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
#pragma once
|
2
|
+
|
3
|
+
#include "BluetoothGatt.h"
|
4
|
+
#include "bridge/BluetoothGattCallback.h"
|
5
|
+
#include "simplejni/Common.hpp"
|
6
|
+
#include "simplejni/Registry.hpp"
|
7
|
+
|
8
|
+
namespace SimpleBLE {
|
9
|
+
namespace Android {
|
10
|
+
|
11
|
+
class BluetoothDevice {
|
12
|
+
public:
|
13
|
+
BluetoothDevice(SimpleJNI::Object<SimpleJNI::GlobalRef, jobject> obj);
|
14
|
+
virtual ~BluetoothDevice() = default;
|
15
|
+
|
16
|
+
std::string getAddress();
|
17
|
+
// int getAddressType();
|
18
|
+
std::string getName();
|
19
|
+
int getBondState();
|
20
|
+
// void removeBond();
|
21
|
+
|
22
|
+
BluetoothGatt connectGatt(bool autoConnect, Bridge::BluetoothGattCallback& callback);
|
23
|
+
|
24
|
+
static const int BOND_NONE = 10;
|
25
|
+
static const int BOND_BONDING = 11;
|
26
|
+
static const int BOND_BONDED = 12;
|
27
|
+
|
28
|
+
static const int ADDRESS_TYPE_ANONYMOUS = 255;
|
29
|
+
static const int ADDRESS_TYPE_PUBLIC = 0;
|
30
|
+
static const int ADDRESS_TYPE_RANDOM = 1;
|
31
|
+
|
32
|
+
static const int TRANSPORT_AUTO = 0;
|
33
|
+
static const int TRANSPORT_BREDR = 1;
|
34
|
+
static const int TRANSPORT_LE = 2;
|
35
|
+
|
36
|
+
private:
|
37
|
+
SimpleJNI::Object<SimpleJNI::GlobalRef, jobject> _obj;
|
38
|
+
|
39
|
+
// Static JNI resources managed by Registrar
|
40
|
+
static SimpleJNI::GlobalRef<jclass> _cls;
|
41
|
+
static jmethodID _method_getAddress;
|
42
|
+
// static jmethodID _method_getAddressType;
|
43
|
+
static jmethodID _method_getName;
|
44
|
+
static jmethodID _method_getBondState;
|
45
|
+
static jmethodID _method_removeBond;
|
46
|
+
static jmethodID _method_connectGatt;
|
47
|
+
|
48
|
+
// JNI descriptor for auto-registration
|
49
|
+
static const SimpleJNI::JNIDescriptor descriptor;
|
50
|
+
static const SimpleJNI::AutoRegister<BluetoothDevice> registrar;
|
51
|
+
};
|
52
|
+
|
53
|
+
} // namespace Android
|
54
|
+
} // namespace SimpleBLE
|
data/vendor/simpleble/simpleble/src/backends/android/types/android/bluetooth/BluetoothGatt.cpp
ADDED
@@ -0,0 +1,115 @@
|
|
1
|
+
#include "BluetoothGatt.h"
|
2
|
+
#include <android/log.h>
|
3
|
+
#include <fmt/core.h>
|
4
|
+
|
5
|
+
#include "types/java/util/List.h"
|
6
|
+
|
7
|
+
namespace SimpleBLE {
|
8
|
+
namespace Android {
|
9
|
+
|
10
|
+
SimpleJNI::GlobalRef<jclass> BluetoothGatt::_cls;
|
11
|
+
jmethodID BluetoothGatt::_method_close = nullptr;
|
12
|
+
jmethodID BluetoothGatt::_method_connect = nullptr;
|
13
|
+
jmethodID BluetoothGatt::_method_disconnect = nullptr;
|
14
|
+
jmethodID BluetoothGatt::_method_discoverServices = nullptr;
|
15
|
+
jmethodID BluetoothGatt::_method_getServices = nullptr;
|
16
|
+
jmethodID BluetoothGatt::_method_readCharacteristic = nullptr;
|
17
|
+
jmethodID BluetoothGatt::_method_readDescriptor = nullptr;
|
18
|
+
jmethodID BluetoothGatt::_method_setCharacteristicNotification = nullptr;
|
19
|
+
jmethodID BluetoothGatt::_method_writeCharacteristic = nullptr;
|
20
|
+
jmethodID BluetoothGatt::_method_writeDescriptor = nullptr;
|
21
|
+
jmethodID BluetoothGatt::_method_requestConnectionPriority = nullptr;
|
22
|
+
// Define the JNI descriptor
|
23
|
+
const SimpleJNI::JNIDescriptor BluetoothGatt::descriptor{
|
24
|
+
"android/bluetooth/BluetoothGatt", // Java class name
|
25
|
+
&_cls, // Where to store the jclass
|
26
|
+
{ // Methods to preload
|
27
|
+
{"close", "()V", &_method_close},
|
28
|
+
{"connect", "()Z", &_method_connect},
|
29
|
+
{"disconnect", "()V", &_method_disconnect},
|
30
|
+
{"discoverServices", "()Z", &_method_discoverServices},
|
31
|
+
{"getServices", "()Ljava/util/List;", &_method_getServices},
|
32
|
+
{"readCharacteristic", "(Landroid/bluetooth/BluetoothGattCharacteristic;)Z", &_method_readCharacteristic},
|
33
|
+
{"readDescriptor", "(Landroid/bluetooth/BluetoothGattDescriptor;)Z", &_method_readDescriptor},
|
34
|
+
{"setCharacteristicNotification", "(Landroid/bluetooth/BluetoothGattCharacteristic;Z)Z", &_method_setCharacteristicNotification},
|
35
|
+
{"writeCharacteristic", "(Landroid/bluetooth/BluetoothGattCharacteristic;)Z", &_method_writeCharacteristic},
|
36
|
+
{"writeDescriptor", "(Landroid/bluetooth/BluetoothGattDescriptor;)Z", &_method_writeDescriptor},
|
37
|
+
{"requestConnectionPriority", "(I)Z", &_method_requestConnectionPriority}
|
38
|
+
}};
|
39
|
+
|
40
|
+
const SimpleJNI::AutoRegister<BluetoothGatt> BluetoothGatt::registrar{&descriptor};
|
41
|
+
|
42
|
+
BluetoothGatt::BluetoothGatt() {}
|
43
|
+
|
44
|
+
BluetoothGatt::BluetoothGatt(SimpleJNI::Object<SimpleJNI::GlobalRef, jobject> obj) : _obj(obj) {}
|
45
|
+
|
46
|
+
void BluetoothGatt::close() {
|
47
|
+
if (!_obj) throw std::runtime_error("BluetoothGatt is not initialized");
|
48
|
+
_obj.call_void_method(_method_close);
|
49
|
+
}
|
50
|
+
|
51
|
+
bool BluetoothGatt::connect() {
|
52
|
+
if (!_obj) throw std::runtime_error("BluetoothGatt is not initialized");
|
53
|
+
return _obj.call_boolean_method(_method_connect);
|
54
|
+
}
|
55
|
+
|
56
|
+
void BluetoothGatt::disconnect() {
|
57
|
+
if (!_obj) throw std::runtime_error("BluetoothGatt is not initialized");
|
58
|
+
_obj.call_void_method(_method_disconnect);
|
59
|
+
}
|
60
|
+
|
61
|
+
bool BluetoothGatt::discoverServices() {
|
62
|
+
if (!_obj) throw std::runtime_error("BluetoothGatt is not initialized");
|
63
|
+
return _obj.call_boolean_method(_method_discoverServices);
|
64
|
+
}
|
65
|
+
|
66
|
+
std::vector<BluetoothGattService> BluetoothGatt::getServices() {
|
67
|
+
if (!_obj) throw std::runtime_error("BluetoothGatt is not initialized");
|
68
|
+
SimpleJNI::Object<SimpleJNI::GlobalRef, jobject> services_obj = _obj.call_object_method(_method_getServices);
|
69
|
+
if (!services_obj) return std::vector<BluetoothGattService>();
|
70
|
+
|
71
|
+
std::vector<BluetoothGattService> result;
|
72
|
+
// Assuming JNI::Types::List and related classes are adapted to SimpleJNI namespace
|
73
|
+
// This part might need further adjustment based on how List and Iterator are implemented in SimpleJNI
|
74
|
+
List list(services_obj.to_global());
|
75
|
+
Iterator iterator = list.iterator();
|
76
|
+
while (iterator.hasNext()) {
|
77
|
+
SimpleJNI::Object<SimpleJNI::GlobalRef, jobject> service = iterator.next();
|
78
|
+
if (!service) continue;
|
79
|
+
result.push_back(BluetoothGattService(service));
|
80
|
+
}
|
81
|
+
return result;
|
82
|
+
}
|
83
|
+
|
84
|
+
bool BluetoothGatt::readCharacteristic(BluetoothGattCharacteristic characteristic) {
|
85
|
+
if (!_obj) throw std::runtime_error("BluetoothGatt is not initialized");
|
86
|
+
return _obj.call_boolean_method(_method_readCharacteristic, characteristic.getObject().get());
|
87
|
+
}
|
88
|
+
|
89
|
+
bool BluetoothGatt::readDescriptor(BluetoothGattDescriptor descriptor) {
|
90
|
+
if (!_obj) throw std::runtime_error("BluetoothGatt is not initialized");
|
91
|
+
return _obj.call_boolean_method(_method_readDescriptor, descriptor.getObject().get());
|
92
|
+
}
|
93
|
+
|
94
|
+
bool BluetoothGatt::setCharacteristicNotification(BluetoothGattCharacteristic characteristic, bool enable) {
|
95
|
+
if (!_obj) throw std::runtime_error("BluetoothGatt is not initialized");
|
96
|
+
return _obj.call_boolean_method(_method_setCharacteristicNotification, characteristic.getObject().get(), enable);
|
97
|
+
}
|
98
|
+
|
99
|
+
bool BluetoothGatt::writeCharacteristic(BluetoothGattCharacteristic characteristic) {
|
100
|
+
if (!_obj) throw std::runtime_error("BluetoothGatt is not initialized");
|
101
|
+
return _obj.call_boolean_method(_method_writeCharacteristic, characteristic.getObject().get());
|
102
|
+
}
|
103
|
+
|
104
|
+
bool BluetoothGatt::writeDescriptor(BluetoothGattDescriptor descriptor) {
|
105
|
+
if (!_obj) throw std::runtime_error("BluetoothGatt is not initialized");
|
106
|
+
return _obj.call_boolean_method(_method_writeDescriptor, descriptor.getObject().get());
|
107
|
+
}
|
108
|
+
|
109
|
+
bool BluetoothGatt::requestConnectionPriority(int connectionPriority) {
|
110
|
+
if (!_obj) throw std::runtime_error("BluetoothGatt is not initialized");
|
111
|
+
return _obj.call_boolean_method(_method_requestConnectionPriority, connectionPriority);
|
112
|
+
}
|
113
|
+
|
114
|
+
} // namespace Android
|
115
|
+
} // namespace SimpleBLE
|
@@ -0,0 +1,75 @@
|
|
1
|
+
#pragma once
|
2
|
+
|
3
|
+
#include "BluetoothGattService.h"
|
4
|
+
#include "simplejni/Common.hpp"
|
5
|
+
#include "simplejni/Registry.hpp"
|
6
|
+
|
7
|
+
#include <cstdint>
|
8
|
+
#include <vector>
|
9
|
+
|
10
|
+
namespace SimpleBLE {
|
11
|
+
namespace Android {
|
12
|
+
|
13
|
+
class BluetoothGatt {
|
14
|
+
public:
|
15
|
+
|
16
|
+
static constexpr int CONNECTION_PRIORITY_BALANCED = 0;
|
17
|
+
static constexpr int CONNECTION_PRIORITY_HIGH = 1;
|
18
|
+
static constexpr int CONNECTION_PRIORITY_LOW_POWER = 2;
|
19
|
+
static constexpr int CONNECTION_PRIORITY_DCK = 3;
|
20
|
+
|
21
|
+
BluetoothGatt();
|
22
|
+
BluetoothGatt(SimpleJNI::Object<SimpleJNI::GlobalRef, jobject> obj);
|
23
|
+
|
24
|
+
void close();
|
25
|
+
bool connect();
|
26
|
+
void disconnect();
|
27
|
+
bool discoverServices();
|
28
|
+
std::vector<BluetoothGattService> getServices();
|
29
|
+
|
30
|
+
// void abortReliableWrite(BluetoothDevice mDevice);
|
31
|
+
// void abortReliableWrite();
|
32
|
+
// bool beginReliableWrite();
|
33
|
+
// bool executeReliableWrite();
|
34
|
+
// std::list<BluetoothDevice> getConnectedDevices();
|
35
|
+
// int getConnectionState(BluetoothDevice device);
|
36
|
+
// BluetoothDevice getDevice();
|
37
|
+
// std::list<BluetoothDevice> getDevicesMatchingConnectionStates(std::vector<int>& states);
|
38
|
+
// BluetoothGattService getService(UUID uuid);
|
39
|
+
// std::list<BluetoothGattService> getServices();
|
40
|
+
bool readCharacteristic(BluetoothGattCharacteristic characteristic);
|
41
|
+
bool readDescriptor(BluetoothGattDescriptor descriptor);
|
42
|
+
// void readPhy();
|
43
|
+
// bool readRemoteRssi();
|
44
|
+
bool requestConnectionPriority(int connectionPriority);
|
45
|
+
// bool requestMtu(int mtu);
|
46
|
+
bool setCharacteristicNotification(BluetoothGattCharacteristic characteristic, bool enable);
|
47
|
+
// void setPreferredPhy(int txPhy, int rxPhy, int phyOptions);
|
48
|
+
bool writeCharacteristic(BluetoothGattCharacteristic characteristic);
|
49
|
+
// int writeCharacteristic(BluetoothGattCharacteristic characteristic, std::vector<byte>& value, int writeType);
|
50
|
+
bool writeDescriptor(BluetoothGattDescriptor descriptor);
|
51
|
+
// int writeDescriptor(BluetoothGattDescriptor descriptor, std::vector<byte>& value);
|
52
|
+
|
53
|
+
private:
|
54
|
+
SimpleJNI::Object<SimpleJNI::GlobalRef, jobject> _obj;
|
55
|
+
|
56
|
+
// Static JNI resources managed by Registrar
|
57
|
+
static SimpleJNI::GlobalRef<jclass> _cls;
|
58
|
+
static jmethodID _method_close;
|
59
|
+
static jmethodID _method_connect;
|
60
|
+
static jmethodID _method_disconnect;
|
61
|
+
static jmethodID _method_discoverServices;
|
62
|
+
static jmethodID _method_getServices;
|
63
|
+
static jmethodID _method_readCharacteristic;
|
64
|
+
static jmethodID _method_readDescriptor;
|
65
|
+
static jmethodID _method_setCharacteristicNotification;
|
66
|
+
static jmethodID _method_writeCharacteristic;
|
67
|
+
static jmethodID _method_writeDescriptor;
|
68
|
+
static jmethodID _method_requestConnectionPriority;
|
69
|
+
// JNI descriptor for auto-registration
|
70
|
+
static const SimpleJNI::JNIDescriptor descriptor;
|
71
|
+
static const SimpleJNI::AutoRegister<BluetoothGatt> registrar;
|
72
|
+
};
|
73
|
+
|
74
|
+
} // namespace Android
|
75
|
+
} // namespace SimpleBLE
|
@@ -0,0 +1,142 @@
|
|
1
|
+
//
|
2
|
+
// Created by Kevin Dewald on 5/17/24.
|
3
|
+
//
|
4
|
+
|
5
|
+
#include "BluetoothGattCharacteristic.h"
|
6
|
+
#include "types/java/util/UUID.h"
|
7
|
+
#include "types/java/util/List.h"
|
8
|
+
|
9
|
+
namespace SimpleBLE {
|
10
|
+
namespace Android {
|
11
|
+
|
12
|
+
// Static JNI resources
|
13
|
+
SimpleJNI::GlobalRef<jclass> BluetoothGattCharacteristic::_cls;
|
14
|
+
jmethodID BluetoothGattCharacteristic::_method_addDescriptor = nullptr;
|
15
|
+
jmethodID BluetoothGattCharacteristic::_method_getDescriptor = nullptr;
|
16
|
+
jmethodID BluetoothGattCharacteristic::_method_getDescriptors = nullptr;
|
17
|
+
jmethodID BluetoothGattCharacteristic::_method_getInstanceId = nullptr;
|
18
|
+
jmethodID BluetoothGattCharacteristic::_method_getPermissions = nullptr;
|
19
|
+
jmethodID BluetoothGattCharacteristic::_method_getProperties = nullptr;
|
20
|
+
jmethodID BluetoothGattCharacteristic::_method_getService = nullptr;
|
21
|
+
jmethodID BluetoothGattCharacteristic::_method_getUuid = nullptr;
|
22
|
+
jmethodID BluetoothGattCharacteristic::_method_getWriteType = nullptr;
|
23
|
+
jmethodID BluetoothGattCharacteristic::_method_setWriteType = nullptr;
|
24
|
+
jmethodID BluetoothGattCharacteristic::_method_setValue = nullptr;
|
25
|
+
|
26
|
+
// JNI descriptor for auto-registration
|
27
|
+
const SimpleJNI::JNIDescriptor BluetoothGattCharacteristic::descriptor{
|
28
|
+
"android/bluetooth/BluetoothGattCharacteristic", // Java class name
|
29
|
+
&_cls, // Where to store the jclass
|
30
|
+
{ // Methods to preload
|
31
|
+
{"addDescriptor", "(Landroid/bluetooth/BluetoothGattDescriptor;)Z", &_method_addDescriptor},
|
32
|
+
{"getDescriptor", "(Ljava/util/UUID;)Landroid/bluetooth/BluetoothGattDescriptor;", &_method_getDescriptor},
|
33
|
+
{"getDescriptors", "()Ljava/util/List;", &_method_getDescriptors},
|
34
|
+
{"getInstanceId", "()I", &_method_getInstanceId},
|
35
|
+
{"getPermissions", "()I", &_method_getPermissions},
|
36
|
+
{"getProperties", "()I", &_method_getProperties},
|
37
|
+
{"getService", "()Landroid/bluetooth/BluetoothGattService;", &_method_getService},
|
38
|
+
{"getUuid", "()Ljava/util/UUID;", &_method_getUuid},
|
39
|
+
{"getWriteType", "()I", &_method_getWriteType},
|
40
|
+
{"setWriteType", "(I)V", &_method_setWriteType},
|
41
|
+
{"setValue", "([B)Z", &_method_setValue}
|
42
|
+
}};
|
43
|
+
|
44
|
+
// Auto-register the descriptor
|
45
|
+
const SimpleJNI::AutoRegister<BluetoothGattCharacteristic> BluetoothGattCharacteristic::registrar{&descriptor};
|
46
|
+
|
47
|
+
BluetoothGattCharacteristic::BluetoothGattCharacteristic() : _obj() {
|
48
|
+
if (!_cls.get()) {
|
49
|
+
throw std::runtime_error("BluetoothGattCharacteristic JNI resources not preloaded. Ensure SimpleJNI::Registrar::preload() is called.");
|
50
|
+
}
|
51
|
+
|
52
|
+
SimpleJNI::Env env;
|
53
|
+
jobject local_obj = env->NewObject(_cls.get(), env->GetMethodID(_cls.get(), "<init>", "()V"));
|
54
|
+
if (local_obj == nullptr) {
|
55
|
+
throw std::runtime_error("Failed to create BluetoothGattCharacteristic Java instance");
|
56
|
+
}
|
57
|
+
|
58
|
+
_obj = SimpleJNI::Object<SimpleJNI::GlobalRef, jobject>(local_obj);
|
59
|
+
env->DeleteLocalRef(local_obj);
|
60
|
+
}
|
61
|
+
|
62
|
+
BluetoothGattCharacteristic::BluetoothGattCharacteristic(SimpleJNI::Object<SimpleJNI::GlobalRef, jobject> obj) : _obj(obj) {}
|
63
|
+
|
64
|
+
// bool BluetoothGattCharacteristic::addDescriptor(BluetoothGattDescriptor descriptor) {
|
65
|
+
// return _obj.call_boolean_method(_method_addDescriptor, descriptor.getObject());
|
66
|
+
// }
|
67
|
+
//
|
68
|
+
// BluetoothGattDescriptor BluetoothGattCharacteristic::getDescriptor(std::string uuid) {
|
69
|
+
// JNI::Env env;
|
70
|
+
// SimpleJNI::Object<SimpleJNI::LocalRef, jobject> descObj = _obj.call_object_method(_method_getDescriptor, env->NewStringUTF(uuid.c_str()));
|
71
|
+
// return BluetoothGattDescriptor(descObj);
|
72
|
+
// }
|
73
|
+
//
|
74
|
+
std::vector<BluetoothGattDescriptor> BluetoothGattCharacteristic::getDescriptors() {
|
75
|
+
if (!_obj) throw std::runtime_error("BluetoothGattCharacteristic is not initialized");
|
76
|
+
|
77
|
+
SimpleJNI::Object<SimpleJNI::LocalRef, jobject> descriptors_obj = _obj.call_object_method(_method_getDescriptors);
|
78
|
+
if (!descriptors_obj) throw std::runtime_error("Failed to get descriptors");
|
79
|
+
|
80
|
+
std::vector<BluetoothGattDescriptor> result;
|
81
|
+
List list(descriptors_obj.to_global());
|
82
|
+
Iterator iterator = list.iterator();
|
83
|
+
while (iterator.hasNext()) {
|
84
|
+
SimpleJNI::Object<SimpleJNI::GlobalRef, jobject> descriptor = iterator.next();
|
85
|
+
|
86
|
+
if (!descriptor) continue;
|
87
|
+
result.push_back(BluetoothGattDescriptor(descriptor));
|
88
|
+
}
|
89
|
+
|
90
|
+
return result;
|
91
|
+
}
|
92
|
+
|
93
|
+
int BluetoothGattCharacteristic::getInstanceId() {
|
94
|
+
if (!_obj) throw std::runtime_error("BluetoothGattCharacteristic is not initialized");
|
95
|
+
return _obj.call_int_method(_method_getInstanceId);
|
96
|
+
}
|
97
|
+
|
98
|
+
int BluetoothGattCharacteristic::getPermissions() {
|
99
|
+
if (!_obj) throw std::runtime_error("BluetoothGattCharacteristic is not initialized");
|
100
|
+
return _obj.call_int_method(_method_getPermissions);
|
101
|
+
}
|
102
|
+
|
103
|
+
int BluetoothGattCharacteristic::getProperties() {
|
104
|
+
if (!_obj) throw std::runtime_error("BluetoothGattCharacteristic is not initialized");
|
105
|
+
return _obj.call_int_method(_method_getProperties);
|
106
|
+
}
|
107
|
+
|
108
|
+
std::string BluetoothGattCharacteristic::getUuid() {
|
109
|
+
if (!_obj) throw std::runtime_error("BluetoothGattCharacteristic is not initialized");
|
110
|
+
|
111
|
+
SimpleJNI::Object<SimpleJNI::LocalRef, jobject> uuidObj = _obj.call_object_method(_method_getUuid);
|
112
|
+
if (!uuidObj) throw std::runtime_error("Failed to get UUID");
|
113
|
+
|
114
|
+
return UUID(uuidObj.to_global()).toString();
|
115
|
+
}
|
116
|
+
|
117
|
+
int BluetoothGattCharacteristic::getWriteType() {
|
118
|
+
if (!_obj) throw std::runtime_error("BluetoothGattCharacteristic is not initialized");
|
119
|
+
return _obj.call_int_method(_method_getWriteType);
|
120
|
+
}
|
121
|
+
|
122
|
+
void BluetoothGattCharacteristic::setWriteType(int writeType) {
|
123
|
+
if (!_obj) throw std::runtime_error("BluetoothGattCharacteristic is not initialized");
|
124
|
+
_obj.call_void_method(_method_setWriteType, writeType);
|
125
|
+
}
|
126
|
+
|
127
|
+
bool BluetoothGattCharacteristic::setValue(const std::vector<uint8_t>& value) {
|
128
|
+
if (!_obj) throw std::runtime_error("BluetoothGattCharacteristic is not initialized");
|
129
|
+
|
130
|
+
SimpleJNI::ByteArray<SimpleJNI::LocalRef> jni_array_wrapper(value);
|
131
|
+
|
132
|
+
if (!jni_array_wrapper) {
|
133
|
+
throw std::runtime_error("Failed to create Java byte array for setValue using SimpleJNI::ByteArray");
|
134
|
+
}
|
135
|
+
|
136
|
+
bool success = _obj.call_boolean_method(_method_setValue, jni_array_wrapper.get());
|
137
|
+
|
138
|
+
return success;
|
139
|
+
}
|
140
|
+
|
141
|
+
} // namespace Android
|
142
|
+
} // namespace SimpleBLE
|