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,49 @@
|
|
1
|
+
#pragma once
|
2
|
+
|
3
|
+
#include "simplejni/Common.hpp"
|
4
|
+
#include "simplejni/Registry.hpp"
|
5
|
+
|
6
|
+
namespace Org {
|
7
|
+
namespace SimpleJavaBLE {
|
8
|
+
|
9
|
+
/**
|
10
|
+
* @brief C++ wrapper for the org.simplejavable.Descriptor Java class.
|
11
|
+
*
|
12
|
+
* This class provides basic JNI registration functionality for the Descriptor class.
|
13
|
+
*/
|
14
|
+
class Descriptor {
|
15
|
+
public:
|
16
|
+
/**
|
17
|
+
* @brief Default constructor.
|
18
|
+
*/
|
19
|
+
Descriptor() = default;
|
20
|
+
|
21
|
+
/**
|
22
|
+
* @brief Constructor that takes a string UUID.
|
23
|
+
*
|
24
|
+
* @param uuid The UUID string for the descriptor.
|
25
|
+
*/
|
26
|
+
explicit Descriptor(const SimpleJNI::String<SimpleJNI::LocalRef>& uuid);
|
27
|
+
|
28
|
+
// Implicit conversion to SimpleJNI::Object
|
29
|
+
operator SimpleJNI::Object<SimpleJNI::ReleasableLocalRef, jobject>() const;
|
30
|
+
|
31
|
+
// Static JNI resources, populated by Registrar during JNI_OnLoad
|
32
|
+
static SimpleJNI::GlobalRef<jclass> _cls;
|
33
|
+
static jmethodID _init_method;
|
34
|
+
|
35
|
+
/**
|
36
|
+
* @brief JNI descriptor defining the Descriptor class.
|
37
|
+
*/
|
38
|
+
static const SimpleJNI::JNIDescriptor descriptor;
|
39
|
+
|
40
|
+
/**
|
41
|
+
* @brief Automatic registration of the descriptor with Registrar.
|
42
|
+
*/
|
43
|
+
static const SimpleJNI::AutoRegister<Descriptor> registrar;
|
44
|
+
|
45
|
+
SimpleJNI::Object<SimpleJNI::ReleasableLocalRef> _obj; ///< Wrapped Java object with ReleasableLocalRef lifetime.
|
46
|
+
};
|
47
|
+
|
48
|
+
} // namespace SimpleJavaBLE
|
49
|
+
} // namespace Org
|
@@ -0,0 +1,41 @@
|
|
1
|
+
#include "PeripheralCallback.h"
|
2
|
+
|
3
|
+
namespace Org {
|
4
|
+
namespace SimpleJavaBLE {
|
5
|
+
|
6
|
+
// Define static JNI resources
|
7
|
+
SimpleJNI::GlobalRef<jclass> PeripheralCallback::_cls;
|
8
|
+
jmethodID PeripheralCallback::_method_on_connected = nullptr;
|
9
|
+
jmethodID PeripheralCallback::_method_on_disconnected = nullptr;
|
10
|
+
|
11
|
+
// Define the JNI descriptor
|
12
|
+
const SimpleJNI::JNIDescriptor PeripheralCallback::descriptor{
|
13
|
+
"org/simplejavable/Peripheral$Callback", // Java interface name (inner class notation)
|
14
|
+
&_cls, // Where to store the jclass
|
15
|
+
{ // Methods to preload
|
16
|
+
{"onConnected", "()V", &_method_on_connected},
|
17
|
+
{"onDisconnected", "()V", &_method_on_disconnected}}};
|
18
|
+
|
19
|
+
// Define the AutoRegister instance
|
20
|
+
const SimpleJNI::AutoRegister<PeripheralCallback> PeripheralCallback::registrar{&descriptor};
|
21
|
+
|
22
|
+
PeripheralCallback::PeripheralCallback(jobject obj) : _obj(obj, _cls.get()) {
|
23
|
+
if (!_cls.get()) {
|
24
|
+
throw std::runtime_error("PeripheralCallback JNI resources not preloaded");
|
25
|
+
}
|
26
|
+
}
|
27
|
+
|
28
|
+
void PeripheralCallback::on_connected() {
|
29
|
+
if (_obj.is_valid()) {
|
30
|
+
_obj.to_local().call_void_method(_method_on_connected);
|
31
|
+
}
|
32
|
+
}
|
33
|
+
|
34
|
+
void PeripheralCallback::on_disconnected() {
|
35
|
+
if (_obj.is_valid()) {
|
36
|
+
_obj.to_local().call_void_method(_method_on_disconnected);
|
37
|
+
}
|
38
|
+
}
|
39
|
+
|
40
|
+
} // namespace SimpleJavaBLE
|
41
|
+
} // namespace Org
|
@@ -0,0 +1,51 @@
|
|
1
|
+
#pragma once
|
2
|
+
#include "simplejni/Common.hpp"
|
3
|
+
#include "simplejni/Registry.hpp"
|
4
|
+
|
5
|
+
namespace Org {
|
6
|
+
namespace SimpleJavaBLE {
|
7
|
+
|
8
|
+
/**
|
9
|
+
* @brief C++ wrapper for the org.simplejavable.Peripheral$Callback Java interface.
|
10
|
+
*
|
11
|
+
* This class encapsulates a jobject representing an instance of the Callback interface
|
12
|
+
* from the org.simplejavable.Peripheral class. It provides methods to invoke the interface's
|
13
|
+
* Java methods (onConnected, onDisconnected) via JNI. JNI resources are preloaded during
|
14
|
+
* JNI_OnLoad using the AutoRegister mechanism.
|
15
|
+
*/
|
16
|
+
class PeripheralCallback {
|
17
|
+
public:
|
18
|
+
PeripheralCallback() = default;
|
19
|
+
|
20
|
+
/**
|
21
|
+
* @brief Construct a Callback from a Java object.
|
22
|
+
*
|
23
|
+
* @param obj The Java object implementing the Callback interface.
|
24
|
+
* @throws std::runtime_error if JNI resources are not preloaded.
|
25
|
+
*/
|
26
|
+
explicit PeripheralCallback(jobject obj);
|
27
|
+
|
28
|
+
/**
|
29
|
+
* @brief Invoke the onConnected method on the Java Callback object.
|
30
|
+
*/
|
31
|
+
void on_connected();
|
32
|
+
|
33
|
+
/**
|
34
|
+
* @brief Invoke the onDisconnected method on the Java Callback object.
|
35
|
+
*/
|
36
|
+
void on_disconnected();
|
37
|
+
|
38
|
+
private:
|
39
|
+
// Static JNI resources, populated by Registrar during JNI_OnLoad
|
40
|
+
static SimpleJNI::GlobalRef<jclass> _cls;
|
41
|
+
static jmethodID _method_on_connected;
|
42
|
+
static jmethodID _method_on_disconnected;
|
43
|
+
|
44
|
+
static const SimpleJNI::JNIDescriptor descriptor;
|
45
|
+
static const SimpleJNI::AutoRegister<PeripheralCallback> registrar;
|
46
|
+
|
47
|
+
SimpleJNI::Object<SimpleJNI::WeakRef> _obj;
|
48
|
+
};
|
49
|
+
|
50
|
+
} // namespace SimpleJavaBLE
|
51
|
+
} // namespace Org
|
@@ -0,0 +1,33 @@
|
|
1
|
+
#include "Service.h"
|
2
|
+
|
3
|
+
namespace Org {
|
4
|
+
namespace SimpleJavaBLE {
|
5
|
+
|
6
|
+
// Define static JNI resources
|
7
|
+
SimpleJNI::GlobalRef<jclass> Service::_cls;
|
8
|
+
jmethodID Service::_init_method;
|
9
|
+
|
10
|
+
// Define the JNI descriptor
|
11
|
+
const SimpleJNI::JNIDescriptor Service::descriptor{
|
12
|
+
"org/simplejavable/Service", // Java class name
|
13
|
+
&_cls, // Where to store the jclass
|
14
|
+
{
|
15
|
+
{"<init>", "(Ljava/lang/String;Ljava/util/List;)V", &_init_method} // Constructor method
|
16
|
+
}};
|
17
|
+
|
18
|
+
// Define the AutoRegister instance
|
19
|
+
const SimpleJNI::AutoRegister<Service> Service::registrar{&descriptor};
|
20
|
+
|
21
|
+
// Constructor implementation
|
22
|
+
Service::Service(const SimpleJNI::String<SimpleJNI::LocalRef>& uuid,
|
23
|
+
const Java::Util::ArrayList<SimpleJNI::LocalRef>& characteristics) {
|
24
|
+
// Use call_new_object to create a new Java Service object
|
25
|
+
_obj = SimpleJNI::Object<SimpleJNI::ReleasableLocalRef>::call_new_object(_cls.get(), _init_method, uuid.get(),
|
26
|
+
characteristics.get());
|
27
|
+
}
|
28
|
+
|
29
|
+
// Implement the conversion operator as a member function
|
30
|
+
Service::operator SimpleJNI::Object<SimpleJNI::ReleasableLocalRef, jobject>() const { return _obj; }
|
31
|
+
|
32
|
+
} // namespace SimpleJavaBLE
|
33
|
+
} // namespace Org
|
@@ -0,0 +1,54 @@
|
|
1
|
+
#pragma once
|
2
|
+
|
3
|
+
#include "Characteristic.h"
|
4
|
+
#include "java/lang/ArrayList.h"
|
5
|
+
#include "simplejni/Common.hpp"
|
6
|
+
#include "simplejni/Registry.hpp"
|
7
|
+
|
8
|
+
namespace Org {
|
9
|
+
namespace SimpleJavaBLE {
|
10
|
+
|
11
|
+
/**
|
12
|
+
* @brief C++ wrapper for the org.simplejavable.Service Java class.
|
13
|
+
*
|
14
|
+
* This class provides basic JNI registration functionality for the Service class.
|
15
|
+
*/
|
16
|
+
class Service {
|
17
|
+
public:
|
18
|
+
/**
|
19
|
+
* @brief Default constructor.
|
20
|
+
*/
|
21
|
+
Service() = default;
|
22
|
+
|
23
|
+
/**
|
24
|
+
* @brief Constructor that creates a Service with the specified properties.
|
25
|
+
*
|
26
|
+
* @param uuid The UUID string for the service.
|
27
|
+
* @param characteristics List of characteristics associated with this service.
|
28
|
+
*/
|
29
|
+
Service(const SimpleJNI::String<SimpleJNI::LocalRef>& uuid,
|
30
|
+
const Java::Util::ArrayList<SimpleJNI::LocalRef>& characteristics);
|
31
|
+
|
32
|
+
// Implicit conversion to SimpleJNI::Object
|
33
|
+
operator SimpleJNI::Object<SimpleJNI::ReleasableLocalRef, jobject>() const;
|
34
|
+
|
35
|
+
private:
|
36
|
+
// Static JNI resources, populated by Registrar during JNI_OnLoad
|
37
|
+
static SimpleJNI::GlobalRef<jclass> _cls;
|
38
|
+
static jmethodID _init_method;
|
39
|
+
|
40
|
+
/**
|
41
|
+
* @brief JNI descriptor defining the Service class.
|
42
|
+
*/
|
43
|
+
static const SimpleJNI::JNIDescriptor descriptor;
|
44
|
+
|
45
|
+
/**
|
46
|
+
* @brief Automatic registration of the descriptor with Registrar.
|
47
|
+
*/
|
48
|
+
static const SimpleJNI::AutoRegister<Service> registrar;
|
49
|
+
|
50
|
+
SimpleJNI::Object<SimpleJNI::ReleasableLocalRef> _obj; ///< Wrapped Java object with ReleasableLocalRef lifetime.
|
51
|
+
};
|
52
|
+
|
53
|
+
} // namespace SimpleJavaBLE
|
54
|
+
} // namespace Org
|
@@ -0,0 +1,361 @@
|
|
1
|
+
#include <jni.h>
|
2
|
+
#include <string>
|
3
|
+
|
4
|
+
#include "fmt/core.h"
|
5
|
+
#include <simpleble/Logging.h>
|
6
|
+
#include <simpleble/SimpleBLE.h>
|
7
|
+
#include <map>
|
8
|
+
#include <memory>
|
9
|
+
#include <unordered_map>
|
10
|
+
#include <vector>
|
11
|
+
|
12
|
+
#include "core/AdapterWrapper.h"
|
13
|
+
#include "core/Cache.h"
|
14
|
+
#include "java/lang/ArrayList.h"
|
15
|
+
#include "java/lang/HashMap.h"
|
16
|
+
#include "java/lang/Integer.h"
|
17
|
+
#include "java/lang/Iterator.h"
|
18
|
+
#include "simplejni/Common.hpp"
|
19
|
+
#include "simplejni/Registry.hpp"
|
20
|
+
#include "org/simplejavable/AdapterCallback.h"
|
21
|
+
#include "org/simplejavable/Characteristic.h"
|
22
|
+
#include "org/simplejavable/DataCallback.h"
|
23
|
+
#include "org/simplejavable/Descriptor.h"
|
24
|
+
#include "org/simplejavable/PeripheralCallback.h"
|
25
|
+
#include "org/simplejavable/Service.h"
|
26
|
+
|
27
|
+
using namespace SimpleJNI;
|
28
|
+
|
29
|
+
JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved) {
|
30
|
+
SimpleJNI::Env env;
|
31
|
+
try {
|
32
|
+
SimpleJNI::Registrar::get().preload(env);
|
33
|
+
} catch (const std::exception& e) {
|
34
|
+
return JNI_ERR;
|
35
|
+
}
|
36
|
+
|
37
|
+
return JNI_VERSION_1_6;
|
38
|
+
}
|
39
|
+
|
40
|
+
extern "C" JNIEXPORT jboolean JNICALL
|
41
|
+
Java_org_simplejavable_Adapter_00024Companion_nativeIsBluetoothEnabled(JNIEnv* env, jobject thiz) {
|
42
|
+
return SimpleBLE::Adapter::bluetooth_enabled();
|
43
|
+
}
|
44
|
+
|
45
|
+
extern "C" JNIEXPORT jlongArray JNICALL Java_org_simplejavable_Adapter_nativeGetAdapters(JNIEnv* env, jclass clazz) {
|
46
|
+
std::vector<SimpleBLE::Adapter> adapters = SimpleBLE::Adapter::get_adapters();
|
47
|
+
if (adapters.empty()) return env->NewLongArray(0);
|
48
|
+
|
49
|
+
std::vector<int64_t> adapter_hashes;
|
50
|
+
for (SimpleBLE::Adapter& adapter : adapters) {
|
51
|
+
AdapterWrapper adapter_wrapper(adapter);
|
52
|
+
adapter_hashes.push_back(adapter_wrapper.getHash());
|
53
|
+
Cache::get().addAdapter(adapter_wrapper.getHash(), adapter_wrapper);
|
54
|
+
}
|
55
|
+
|
56
|
+
LongArray<ReleasableLocalRef> adapter_hashes_array(adapter_hashes);
|
57
|
+
return adapter_hashes_array.release();
|
58
|
+
}
|
59
|
+
|
60
|
+
extern "C" JNIEXPORT void JNICALL Java_org_simplejavable_Adapter_nativeAdapterRegister(JNIEnv* env, jobject thiz,
|
61
|
+
jlong adapter_id,
|
62
|
+
jobject callback) {
|
63
|
+
AdapterWrapper* adapter_wrapper = Cache::get().getAdapter(adapter_id);
|
64
|
+
Org::SimpleJavaBLE::AdapterCallback adapter_callback(callback);
|
65
|
+
adapter_wrapper->setCallback(adapter_callback);
|
66
|
+
}
|
67
|
+
|
68
|
+
extern "C" JNIEXPORT jstring JNICALL Java_org_simplejavable_Adapter_nativeAdapterIdentifier(JNIEnv* env, jobject thiz,
|
69
|
+
jlong adapter_id) {
|
70
|
+
AdapterWrapper* adapter_wrapper = Cache::get().getAdapter(adapter_id);
|
71
|
+
return String<ReleasableLocalRef>(adapter_wrapper->get().identifier()).release();
|
72
|
+
}
|
73
|
+
|
74
|
+
extern "C" JNIEXPORT jstring JNICALL Java_org_simplejavable_Adapter_nativeAdapterAddress(JNIEnv* env, jobject thiz,
|
75
|
+
jlong adapter_id) {
|
76
|
+
AdapterWrapper* adapter_wrapper = Cache::get().getAdapter(adapter_id);
|
77
|
+
return String<ReleasableLocalRef>(adapter_wrapper->get().address()).release();
|
78
|
+
}
|
79
|
+
|
80
|
+
extern "C" JNIEXPORT void JNICALL Java_org_simplejavable_Adapter_nativeAdapterScanStart(JNIEnv* env, jobject thiz,
|
81
|
+
jlong adapter_id) {
|
82
|
+
AdapterWrapper* adapter_wrapper = Cache::get().getAdapter(adapter_id);
|
83
|
+
adapter_wrapper->get().scan_start();
|
84
|
+
}
|
85
|
+
|
86
|
+
extern "C" JNIEXPORT void JNICALL Java_org_simplejavable_Adapter_nativeAdapterScanStop(JNIEnv* env, jobject thiz,
|
87
|
+
jlong adapter_id) {
|
88
|
+
AdapterWrapper* adapter_wrapper = Cache::get().getAdapter(adapter_id);
|
89
|
+
adapter_wrapper->get().scan_stop();
|
90
|
+
}
|
91
|
+
|
92
|
+
extern "C" JNIEXPORT void JNICALL Java_org_simplejavable_Adapter_nativeAdapterScanFor(JNIEnv* env, jobject thiz,
|
93
|
+
jlong adapter_id, jint timeout) {
|
94
|
+
AdapterWrapper* adapter_wrapper = Cache::get().getAdapter(adapter_id);
|
95
|
+
adapter_wrapper->get().scan_for(timeout);
|
96
|
+
}
|
97
|
+
|
98
|
+
extern "C" JNIEXPORT jboolean JNICALL Java_org_simplejavable_Adapter_nativeAdapterScanIsActive(JNIEnv* env,
|
99
|
+
jobject thiz,
|
100
|
+
jlong adapter_id) {
|
101
|
+
AdapterWrapper* adapter_wrapper = Cache::get().getAdapter(adapter_id);
|
102
|
+
return adapter_wrapper->get().scan_is_active();
|
103
|
+
}
|
104
|
+
|
105
|
+
extern "C" JNIEXPORT jlongArray JNICALL Java_org_simplejavable_Adapter_nativeAdapterScanGetResults(JNIEnv* env,
|
106
|
+
jobject thiz,
|
107
|
+
jlong adapter_id) {
|
108
|
+
AdapterWrapper* adapter_wrapper = Cache::get().getAdapter(adapter_id);
|
109
|
+
std::vector<SimpleBLE::Peripheral> peripherals = adapter_wrapper->get().scan_get_results();
|
110
|
+
|
111
|
+
std::vector<int64_t> peripheral_hashes;
|
112
|
+
for (SimpleBLE::Peripheral& peripheral : peripherals) {
|
113
|
+
PeripheralWrapper peripheral_wrapper(peripheral);
|
114
|
+
peripheral_hashes.push_back(peripheral_wrapper.getHash());
|
115
|
+
Cache::get().addPeripheral(adapter_wrapper->getHash(), peripheral_wrapper.getHash(), peripheral_wrapper);
|
116
|
+
}
|
117
|
+
|
118
|
+
LongArray<ReleasableLocalRef> peripheral_hashes_array(peripheral_hashes);
|
119
|
+
return peripheral_hashes_array.release();
|
120
|
+
}
|
121
|
+
|
122
|
+
extern "C" JNIEXPORT jlongArray JNICALL
|
123
|
+
Java_org_simplejavable_Adapter_nativeAdapterGetPairedPeripherals(JNIEnv* env, jobject thiz, jlong adapter_id) {
|
124
|
+
AdapterWrapper* adapter_wrapper = Cache::get().getAdapter(adapter_id);
|
125
|
+
std::vector<SimpleBLE::Peripheral> peripherals = adapter_wrapper->get().get_paired_peripherals();
|
126
|
+
|
127
|
+
std::vector<int64_t> peripheral_hashes;
|
128
|
+
for (SimpleBLE::Peripheral& peripheral : peripherals) {
|
129
|
+
PeripheralWrapper peripheral_wrapper(peripheral);
|
130
|
+
peripheral_hashes.push_back(peripheral_wrapper.getHash());
|
131
|
+
Cache::get().addPeripheral(adapter_wrapper->getHash(), peripheral_wrapper.getHash(), peripheral_wrapper);
|
132
|
+
}
|
133
|
+
|
134
|
+
LongArray<ReleasableLocalRef> peripheral_hashes_array(peripheral_hashes);
|
135
|
+
return peripheral_hashes_array.release();
|
136
|
+
}
|
137
|
+
|
138
|
+
// PERIPHERAL
|
139
|
+
|
140
|
+
extern "C" JNIEXPORT void JNICALL Java_org_simplejavable_Peripheral_nativePeripheralRegister(JNIEnv* env, jobject thiz,
|
141
|
+
jlong adapter_id,
|
142
|
+
jlong peripheral_id,
|
143
|
+
jobject callback) {
|
144
|
+
PeripheralWrapper* peripheral_wrapper = Cache::get().getPeripheral(adapter_id, peripheral_id);
|
145
|
+
Org::SimpleJavaBLE::PeripheralCallback peripheral_callback(callback);
|
146
|
+
peripheral_wrapper->setCallback(peripheral_callback);
|
147
|
+
}
|
148
|
+
|
149
|
+
extern "C" JNIEXPORT jstring JNICALL Java_org_simplejavable_Peripheral_nativePeripheralIdentifier(JNIEnv* env,
|
150
|
+
jobject thiz,
|
151
|
+
jlong adapter_id,
|
152
|
+
jlong peripheral_id) {
|
153
|
+
PeripheralWrapper* peripheral_wrapper = Cache::get().getPeripheral(adapter_id, peripheral_id);
|
154
|
+
return String<ReleasableLocalRef>(peripheral_wrapper->get().identifier()).release();
|
155
|
+
}
|
156
|
+
|
157
|
+
extern "C" JNIEXPORT jstring JNICALL Java_org_simplejavable_Peripheral_nativePeripheralAddress(JNIEnv* env,
|
158
|
+
jobject thiz,
|
159
|
+
jlong adapter_id,
|
160
|
+
jlong peripheral_id) {
|
161
|
+
PeripheralWrapper* peripheral_wrapper = Cache::get().getPeripheral(adapter_id, peripheral_id);
|
162
|
+
return String<ReleasableLocalRef>(peripheral_wrapper->get().address()).release();
|
163
|
+
}
|
164
|
+
|
165
|
+
extern "C" JNIEXPORT jint JNICALL Java_org_simplejavable_Peripheral_nativePeripheralAddressType(JNIEnv* env,
|
166
|
+
jobject thiz,
|
167
|
+
jlong adapter_id,
|
168
|
+
jlong peripheral_id) {
|
169
|
+
PeripheralWrapper* peripheral_wrapper = Cache::get().getPeripheral(adapter_id, peripheral_id);
|
170
|
+
return peripheral_wrapper->get().address_type();
|
171
|
+
}
|
172
|
+
|
173
|
+
extern "C" JNIEXPORT jint JNICALL Java_org_simplejavable_Peripheral_nativePeripheralRssi(JNIEnv* env, jobject thiz,
|
174
|
+
jlong adapter_id,
|
175
|
+
jlong peripheral_id) {
|
176
|
+
PeripheralWrapper* peripheral_wrapper = Cache::get().getPeripheral(adapter_id, peripheral_id);
|
177
|
+
return peripheral_wrapper->get().rssi();
|
178
|
+
}
|
179
|
+
|
180
|
+
extern "C" JNIEXPORT jint JNICALL Java_org_simplejavable_Peripheral_nativePeripheralTxPower(JNIEnv* env, jobject thiz,
|
181
|
+
jlong adapter_id,
|
182
|
+
jlong peripheral_id) {
|
183
|
+
PeripheralWrapper* peripheral_wrapper = Cache::get().getPeripheral(adapter_id, peripheral_id);
|
184
|
+
return peripheral_wrapper->get().tx_power();
|
185
|
+
}
|
186
|
+
|
187
|
+
extern "C" JNIEXPORT jint JNICALL Java_org_simplejavable_Peripheral_nativePeripheralMtu(JNIEnv* env, jobject thiz,
|
188
|
+
jlong adapter_id,
|
189
|
+
jlong peripheral_id) {
|
190
|
+
PeripheralWrapper* peripheral_wrapper = Cache::get().getPeripheral(adapter_id, peripheral_id);
|
191
|
+
return peripheral_wrapper->get().mtu();
|
192
|
+
}
|
193
|
+
|
194
|
+
extern "C" JNIEXPORT void JNICALL Java_org_simplejavable_Peripheral_nativePeripheralConnect(JNIEnv* env, jobject thiz,
|
195
|
+
jlong adapter_id,
|
196
|
+
jlong peripheral_id) {
|
197
|
+
PeripheralWrapper* peripheral_wrapper = Cache::get().getPeripheral(adapter_id, peripheral_id);
|
198
|
+
peripheral_wrapper->get().connect();
|
199
|
+
}
|
200
|
+
|
201
|
+
extern "C" JNIEXPORT void JNICALL Java_org_simplejavable_Peripheral_nativePeripheralDisconnect(JNIEnv* env,
|
202
|
+
jobject thiz,
|
203
|
+
jlong adapter_id,
|
204
|
+
jlong peripheral_id) {
|
205
|
+
PeripheralWrapper* peripheral_wrapper = Cache::get().getPeripheral(adapter_id, peripheral_id);
|
206
|
+
peripheral_wrapper->get().disconnect();
|
207
|
+
}
|
208
|
+
|
209
|
+
extern "C" JNIEXPORT void JNICALL Java_org_simplejavable_Peripheral_nativePeripheralNotify(
|
210
|
+
JNIEnv* env, jobject thiz, jlong adapter_id, jlong peripheral_id, jstring j_service, jstring j_characteristic,
|
211
|
+
jobject callback) {
|
212
|
+
PeripheralWrapper* peripheral_wrapper = Cache::get().getPeripheral(adapter_id, peripheral_id);
|
213
|
+
Org::SimpleJavaBLE::DataCallback data_callback(callback);
|
214
|
+
String<LocalRef> service(j_service);
|
215
|
+
String<LocalRef> characteristic(j_characteristic);
|
216
|
+
peripheral_wrapper->get().notify(service.str(), characteristic.str(),
|
217
|
+
[data_callback](SimpleBLE::ByteArray payload) {
|
218
|
+
Org::SimpleJavaBLE::DataCallback data_callback_local(data_callback);
|
219
|
+
ByteArray<ReleasableLocalRef> j_payload(payload);
|
220
|
+
data_callback_local.on_data_received(j_payload.release());
|
221
|
+
});
|
222
|
+
}
|
223
|
+
|
224
|
+
extern "C" JNIEXPORT void JNICALL Java_org_simplejavable_Peripheral_nativePeripheralIndicate(
|
225
|
+
JNIEnv* env, jobject thiz, jlong adapter_id, jlong peripheral_id, jstring j_service, jstring j_characteristic,
|
226
|
+
jobject callback) {
|
227
|
+
PeripheralWrapper* peripheral_wrapper = Cache::get().getPeripheral(adapter_id, peripheral_id);
|
228
|
+
Org::SimpleJavaBLE::DataCallback data_callback(callback);
|
229
|
+
String<LocalRef> service(j_service);
|
230
|
+
String<LocalRef> characteristic(j_characteristic);
|
231
|
+
peripheral_wrapper->get().indicate(service.str(), characteristic.str(),
|
232
|
+
[data_callback](SimpleBLE::ByteArray payload) {
|
233
|
+
Org::SimpleJavaBLE::DataCallback data_callback_local(data_callback);
|
234
|
+
ByteArray<ReleasableLocalRef> j_payload(payload);
|
235
|
+
data_callback_local.on_data_received(j_payload.release());
|
236
|
+
});
|
237
|
+
}
|
238
|
+
extern "C" JNIEXPORT void JNICALL Java_org_simplejavable_Peripheral_nativePeripheralUnsubscribe(
|
239
|
+
JNIEnv* env, jobject thiz, jlong adapter_id, jlong peripheral_id, jstring j_service, jstring j_characteristic) {
|
240
|
+
PeripheralWrapper* peripheral_wrapper = Cache::get().getPeripheral(adapter_id, peripheral_id);
|
241
|
+
String<LocalRef> service(j_service);
|
242
|
+
String<LocalRef> characteristic(j_characteristic);
|
243
|
+
peripheral_wrapper->get().unsubscribe(service.str(), characteristic.str());
|
244
|
+
}
|
245
|
+
|
246
|
+
extern "C" JNIEXPORT jboolean JNICALL Java_org_simplejavable_Peripheral_nativePeripheralIsConnected(
|
247
|
+
JNIEnv* env, jobject thiz, jlong adapter_id, jlong peripheral_id) {
|
248
|
+
PeripheralWrapper* peripheral_wrapper = Cache::get().getPeripheral(adapter_id, peripheral_id);
|
249
|
+
return peripheral_wrapper->get().is_connected();
|
250
|
+
}
|
251
|
+
|
252
|
+
extern "C" JNIEXPORT jboolean JNICALL Java_org_simplejavable_Peripheral_nativePeripheralIsConnectable(
|
253
|
+
JNIEnv* env, jobject thiz, jlong adapter_id, jlong peripheral_id) {
|
254
|
+
PeripheralWrapper* peripheral_wrapper = Cache::get().getPeripheral(adapter_id, peripheral_id);
|
255
|
+
return peripheral_wrapper->get().is_connectable();
|
256
|
+
}
|
257
|
+
|
258
|
+
extern "C" JNIEXPORT jboolean JNICALL Java_org_simplejavable_Peripheral_nativePeripheralIsPaired(JNIEnv* env,
|
259
|
+
jobject thiz,
|
260
|
+
jlong adapter_id,
|
261
|
+
jlong peripheral_id) {
|
262
|
+
PeripheralWrapper* peripheral_wrapper = Cache::get().getPeripheral(adapter_id, peripheral_id);
|
263
|
+
return peripheral_wrapper->get().is_paired();
|
264
|
+
}
|
265
|
+
|
266
|
+
extern "C" JNIEXPORT void JNICALL Java_org_simplejavable_Peripheral_nativePeripheralUnpair(JNIEnv* env, jobject thiz,
|
267
|
+
jlong adapter_id,
|
268
|
+
jlong peripheral_id) {
|
269
|
+
PeripheralWrapper* peripheral_wrapper = Cache::get().getPeripheral(adapter_id, peripheral_id);
|
270
|
+
peripheral_wrapper->get().unpair();
|
271
|
+
}
|
272
|
+
|
273
|
+
extern "C" JNIEXPORT jobject JNICALL Java_org_simplejavable_Peripheral_nativePeripheralServices(JNIEnv* env,
|
274
|
+
jobject thiz,
|
275
|
+
jlong adapter_id,
|
276
|
+
jlong peripheral_id) {
|
277
|
+
PeripheralWrapper* peripheral_wrapper = Cache::get().getPeripheral(adapter_id, peripheral_id);
|
278
|
+
|
279
|
+
Java::Util::ArrayList<ReleasableLocalRef> services_list;
|
280
|
+
for (auto& service : peripheral_wrapper->get().services()) {
|
281
|
+
Java::Util::ArrayList<ReleasableLocalRef> characteristics_list;
|
282
|
+
for (auto& characteristic : service.characteristics()) {
|
283
|
+
Java::Util::ArrayList<ReleasableLocalRef> descriptors_list;
|
284
|
+
for (auto& descriptor : characteristic.descriptors()) {
|
285
|
+
Org::SimpleJavaBLE::Descriptor descriptor_obj(descriptor.uuid());
|
286
|
+
descriptors_list.add(descriptor_obj);
|
287
|
+
}
|
288
|
+
Org::SimpleJavaBLE::Characteristic characteristic_obj(
|
289
|
+
characteristic.uuid(), descriptors_list.to_local(), characteristic.can_read(),
|
290
|
+
characteristic.can_write_request(), characteristic.can_write_command(), characteristic.can_notify(),
|
291
|
+
characteristic.can_indicate());
|
292
|
+
characteristics_list.add(characteristic_obj);
|
293
|
+
}
|
294
|
+
Org::SimpleJavaBLE::Service service_obj(service.uuid(), characteristics_list.to_local());
|
295
|
+
services_list.add(service_obj);
|
296
|
+
}
|
297
|
+
return services_list.release();
|
298
|
+
}
|
299
|
+
|
300
|
+
extern "C" JNIEXPORT jobject JNICALL Java_org_simplejavable_Peripheral_nativePeripheralManufacturerData(
|
301
|
+
JNIEnv* env, jobject thiz, jlong adapter_id, jlong instance_id) {
|
302
|
+
PeripheralWrapper* peripheral_wrapper = Cache::get().getPeripheral(adapter_id, instance_id);
|
303
|
+
auto manufacturer_data = peripheral_wrapper->get().manufacturer_data();
|
304
|
+
|
305
|
+
Java::Util::HashMap<ReleasableLocalRef> hash_map;
|
306
|
+
for (const auto& [key, value] : manufacturer_data) {
|
307
|
+
hash_map.put<LocalRef, LocalRef>(Java::Util::Integer<LocalRef>(key), ByteArray<LocalRef>(value));
|
308
|
+
}
|
309
|
+
return hash_map.release();
|
310
|
+
}
|
311
|
+
|
312
|
+
extern "C" JNIEXPORT jbyteArray JNICALL Java_org_simplejavable_Peripheral_nativePeripheralRead(
|
313
|
+
JNIEnv* env, jobject thiz, jlong adapter_id, jlong peripheral_id, jstring j_service, jstring j_characteristic) {
|
314
|
+
PeripheralWrapper* peripheral_wrapper = Cache::get().getPeripheral(adapter_id, peripheral_id);
|
315
|
+
String<LocalRef> service(j_service);
|
316
|
+
String<LocalRef> characteristic(j_characteristic);
|
317
|
+
return ByteArray<ReleasableLocalRef>(peripheral_wrapper->get().read(service.str(), characteristic.str())).release();
|
318
|
+
}
|
319
|
+
|
320
|
+
extern "C" JNIEXPORT void JNICALL Java_org_simplejavable_Peripheral_nativePeripheralWriteRequest(
|
321
|
+
JNIEnv* env, jobject thiz, jlong adapter_id, jlong peripheral_id, jstring j_service, jstring j_characteristic,
|
322
|
+
jbyteArray j_data) {
|
323
|
+
PeripheralWrapper* peripheral_wrapper = Cache::get().getPeripheral(adapter_id, peripheral_id);
|
324
|
+
String<LocalRef> service(j_service);
|
325
|
+
String<LocalRef> characteristic(j_characteristic);
|
326
|
+
ByteArray<LocalRef> data(j_data);
|
327
|
+
peripheral_wrapper->get().write_request(service.str(), characteristic.str(), data.bytes());
|
328
|
+
}
|
329
|
+
|
330
|
+
extern "C" JNIEXPORT void JNICALL Java_org_simplejavable_Peripheral_nativePeripheralWriteCommand(
|
331
|
+
JNIEnv* env, jobject thiz, jlong adapter_id, jlong peripheral_id, jstring j_service, jstring j_characteristic,
|
332
|
+
jbyteArray j_data) {
|
333
|
+
PeripheralWrapper* peripheral_wrapper = Cache::get().getPeripheral(adapter_id, peripheral_id);
|
334
|
+
String<LocalRef> service(j_service);
|
335
|
+
String<LocalRef> characteristic(j_characteristic);
|
336
|
+
ByteArray<LocalRef> data(j_data);
|
337
|
+
peripheral_wrapper->get().write_command(service.str(), characteristic.str(), data.bytes());
|
338
|
+
}
|
339
|
+
|
340
|
+
extern "C" JNIEXPORT jbyteArray JNICALL Java_org_simplejavable_Peripheral_nativePeripheralDescriptorRead(
|
341
|
+
JNIEnv* env, jobject thiz, jlong adapter_id, jlong peripheral_id, jstring j_service, jstring j_characteristic,
|
342
|
+
jstring j_descriptor) {
|
343
|
+
PeripheralWrapper* peripheral_wrapper = Cache::get().getPeripheral(adapter_id, peripheral_id);
|
344
|
+
String<LocalRef> service(j_service);
|
345
|
+
String<LocalRef> characteristic(j_characteristic);
|
346
|
+
String<LocalRef> descriptor(j_descriptor);
|
347
|
+
return ByteArray<ReleasableLocalRef>(
|
348
|
+
peripheral_wrapper->get().read(service.str(), characteristic.str(), descriptor.str()))
|
349
|
+
.release();
|
350
|
+
}
|
351
|
+
|
352
|
+
extern "C" JNIEXPORT void JNICALL Java_org_simplejavable_Peripheral_nativePeripheralDescriptorWrite(
|
353
|
+
JNIEnv* env, jobject thiz, jlong adapter_id, jlong peripheral_id, jstring j_service, jstring j_characteristic,
|
354
|
+
jstring j_descriptor, jbyteArray j_data) {
|
355
|
+
PeripheralWrapper* peripheral_wrapper = Cache::get().getPeripheral(adapter_id, peripheral_id);
|
356
|
+
String<LocalRef> service(j_service);
|
357
|
+
String<LocalRef> characteristic(j_characteristic);
|
358
|
+
String<LocalRef> descriptor(j_descriptor);
|
359
|
+
ByteArray<LocalRef> data(j_data);
|
360
|
+
peripheral_wrapper->get().write(service.str(), characteristic.str(), descriptor.str(), data.bytes());
|
361
|
+
}
|
@@ -0,0 +1,55 @@
|
|
1
|
+
#include <pybind11/functional.h>
|
2
|
+
#include <pybind11/pybind11.h>
|
3
|
+
#include <pybind11/stl.h>
|
4
|
+
|
5
|
+
#include "simpleble/SimpleBLE.h"
|
6
|
+
|
7
|
+
/**
|
8
|
+
* Useful links for documentation while I figure this one out.
|
9
|
+
* https://www.sphinx-doc.org/en/master/usage/extensions/autodoc.html
|
10
|
+
* https://www.sphinx-doc.org/en/master/usage/extensions/napoleon.html
|
11
|
+
* https://www.sphinx-doc.org/en/master/usage/extensions/autosummary.html
|
12
|
+
*/
|
13
|
+
|
14
|
+
namespace py = pybind11;
|
15
|
+
|
16
|
+
void wrap_types(py::module& m);
|
17
|
+
void wrap_descriptor(py::module& m);
|
18
|
+
void wrap_characteristic(py::module& m);
|
19
|
+
void wrap_service(py::module& m);
|
20
|
+
void wrap_peripheral(py::module& m);
|
21
|
+
void wrap_adapter(py::module& m);
|
22
|
+
void wrap_config(py::module& m);
|
23
|
+
|
24
|
+
PYBIND11_MODULE(_simplepyble, m) {
|
25
|
+
m.attr("__version__") = SIMPLEPYBLE_VERSION;
|
26
|
+
|
27
|
+
// m.doc() = R"pbdoc(
|
28
|
+
// ====================
|
29
|
+
// Python API Reference
|
30
|
+
// ====================
|
31
|
+
|
32
|
+
// .. currentmodule:: simplepyble
|
33
|
+
// .. autosummary::
|
34
|
+
// :toctree: _build
|
35
|
+
|
36
|
+
// get_operating_system
|
37
|
+
|
38
|
+
// )pbdoc";
|
39
|
+
|
40
|
+
m.def("get_operating_system", &SimpleBLE::get_operating_system, R"pbdoc(
|
41
|
+
Returns the currently-running operating system.
|
42
|
+
)pbdoc");
|
43
|
+
|
44
|
+
m.def("get_simpleble_version", &SimpleBLE::get_simpleble_version, R"pbdoc(
|
45
|
+
Returns the version of SimpleBLE.
|
46
|
+
)pbdoc");
|
47
|
+
|
48
|
+
wrap_types(m);
|
49
|
+
wrap_descriptor(m);
|
50
|
+
wrap_characteristic(m);
|
51
|
+
wrap_service(m);
|
52
|
+
wrap_peripheral(m);
|
53
|
+
wrap_adapter(m);
|
54
|
+
wrap_config(m);
|
55
|
+
}
|