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,93 @@
|
|
1
|
+
#include "Integer.h"
|
2
|
+
|
3
|
+
namespace Java::Util {
|
4
|
+
|
5
|
+
template <template <typename> class RefType>
|
6
|
+
SimpleJNI::GlobalRef<jclass> Integer<RefType>::_cls;
|
7
|
+
|
8
|
+
template <template <typename> class RefType>
|
9
|
+
jmethodID Integer<RefType>::_method_init = nullptr;
|
10
|
+
|
11
|
+
template <template <typename> class RefType>
|
12
|
+
jmethodID Integer<RefType>::_method_int_value = nullptr;
|
13
|
+
|
14
|
+
template <template <typename> class RefType>
|
15
|
+
jmethodID Integer<RefType>::_method_value_of = nullptr;
|
16
|
+
|
17
|
+
template <template <typename> class RefType>
|
18
|
+
const SimpleJNI::JNIDescriptor Integer<RefType>::descriptor{"java/lang/Integer", // Java class name
|
19
|
+
&_cls, // Where to store the jclass
|
20
|
+
{
|
21
|
+
// Methods to preload
|
22
|
+
{"<init>", "(I)V", &_method_init},
|
23
|
+
{"intValue", "()I", &_method_int_value},
|
24
|
+
}};
|
25
|
+
|
26
|
+
template <template <typename> class RefType>
|
27
|
+
const SimpleJNI::AutoRegister<Integer<RefType>> Integer<RefType>::registrar{&descriptor};
|
28
|
+
|
29
|
+
template <template <typename> class RefType>
|
30
|
+
Integer<RefType>::Integer() : _obj() {}
|
31
|
+
|
32
|
+
template <template <typename> class RefType>
|
33
|
+
Integer<RefType>::Integer(jobject obj) : _obj(obj) {
|
34
|
+
if (!_cls.get()) {
|
35
|
+
throw std::runtime_error("Integer JNI resources not preloaded");
|
36
|
+
}
|
37
|
+
}
|
38
|
+
|
39
|
+
template <template <typename> class RefType>
|
40
|
+
Integer<RefType>::Integer(int value) : _obj() {
|
41
|
+
if (!_cls.get()) {
|
42
|
+
throw std::runtime_error("Integer JNI resources not preloaded");
|
43
|
+
}
|
44
|
+
JNIEnv* env = SimpleJNI::VM::env();
|
45
|
+
jobject obj = env->NewObject(_cls.get(), _method_init, value);
|
46
|
+
_obj = SimpleJNI::Object<RefType, jobject>(obj, _cls.get());
|
47
|
+
}
|
48
|
+
|
49
|
+
template <template <typename> class RefType>
|
50
|
+
template <template <typename> class OtherRefType>
|
51
|
+
Integer<RefType>::Integer(const SimpleJNI::Object<OtherRefType, jobject>& obj) : _obj(obj.get()) {}
|
52
|
+
|
53
|
+
template <template <typename> class RefType>
|
54
|
+
Integer<SimpleJNI::LocalRef> Integer<RefType>::to_local() const {
|
55
|
+
if (!*this) return Integer<SimpleJNI::LocalRef>();
|
56
|
+
return Integer<SimpleJNI::LocalRef>(_obj.get());
|
57
|
+
}
|
58
|
+
|
59
|
+
template <template <typename> class RefType>
|
60
|
+
Integer<SimpleJNI::GlobalRef> Integer<RefType>::to_global() const {
|
61
|
+
if (!*this) return Integer<SimpleJNI::GlobalRef>();
|
62
|
+
return Integer<SimpleJNI::GlobalRef>(_obj.get());
|
63
|
+
}
|
64
|
+
|
65
|
+
template <template <typename> class RefType>
|
66
|
+
jobject Integer<RefType>::get() const {
|
67
|
+
return _obj.get();
|
68
|
+
}
|
69
|
+
|
70
|
+
template <template <typename> class RefType>
|
71
|
+
Integer<RefType>::operator bool() const {
|
72
|
+
return _obj.get() != nullptr;
|
73
|
+
}
|
74
|
+
|
75
|
+
template <template <typename> class RefType>
|
76
|
+
int Integer<RefType>::int_value() const {
|
77
|
+
if (!*this) {
|
78
|
+
throw std::runtime_error("Integer is not initialized");
|
79
|
+
}
|
80
|
+
return _obj.call_int_method(_method_int_value);
|
81
|
+
}
|
82
|
+
|
83
|
+
template <template <typename> class RefType>
|
84
|
+
Integer<RefType>::operator SimpleJNI::Object<RefType, jobject>() const {
|
85
|
+
return _obj;
|
86
|
+
}
|
87
|
+
|
88
|
+
// Explicit template instantiations
|
89
|
+
template class Integer<SimpleJNI::LocalRef>;
|
90
|
+
template class Integer<SimpleJNI::GlobalRef>;
|
91
|
+
template class Integer<SimpleJNI::WeakRef>;
|
92
|
+
template class Integer<SimpleJNI::ReleasableLocalRef>;
|
93
|
+
} // namespace Java::Util
|
@@ -0,0 +1,49 @@
|
|
1
|
+
#pragma once
|
2
|
+
|
3
|
+
#include "simplejni/Common.hpp"
|
4
|
+
#include "simplejni/Registry.hpp"
|
5
|
+
|
6
|
+
namespace Java::Util {
|
7
|
+
|
8
|
+
template <template <typename> class RefType>
|
9
|
+
class Integer {
|
10
|
+
public:
|
11
|
+
Integer();
|
12
|
+
explicit Integer(jobject obj);
|
13
|
+
explicit Integer(int value);
|
14
|
+
|
15
|
+
template <template <typename> class OtherRefType>
|
16
|
+
Integer(const SimpleJNI::Object<OtherRefType, jobject>& obj);
|
17
|
+
|
18
|
+
// Conversion methods
|
19
|
+
Integer<SimpleJNI::LocalRef> to_local() const;
|
20
|
+
Integer<SimpleJNI::GlobalRef> to_global() const;
|
21
|
+
|
22
|
+
// Get the underlying jobject
|
23
|
+
jobject get() const;
|
24
|
+
|
25
|
+
// Check if the object is valid
|
26
|
+
explicit operator bool() const;
|
27
|
+
|
28
|
+
// Implicit conversion to SimpleJNI::Object
|
29
|
+
operator SimpleJNI::Object<RefType, jobject>() const;
|
30
|
+
|
31
|
+
// Integer methods
|
32
|
+
int int_value() const;
|
33
|
+
|
34
|
+
private:
|
35
|
+
// Underlying JNI object
|
36
|
+
SimpleJNI::Object<RefType, jobject> _obj;
|
37
|
+
|
38
|
+
// Static JNI resources
|
39
|
+
static SimpleJNI::GlobalRef<jclass> _cls;
|
40
|
+
static jmethodID _method_init;
|
41
|
+
static jmethodID _method_int_value;
|
42
|
+
static jmethodID _method_value_of;
|
43
|
+
|
44
|
+
// JNI descriptor for auto-registration
|
45
|
+
static const SimpleJNI::JNIDescriptor descriptor;
|
46
|
+
static const SimpleJNI::AutoRegister<Integer> registrar;
|
47
|
+
};
|
48
|
+
|
49
|
+
} // namespace Java::Util
|
@@ -0,0 +1,85 @@
|
|
1
|
+
#include "Iterator.h"
|
2
|
+
|
3
|
+
namespace Java::Util {
|
4
|
+
|
5
|
+
template <template <typename> class RefType>
|
6
|
+
SimpleJNI::GlobalRef<jclass> Iterator<RefType>::_cls;
|
7
|
+
|
8
|
+
template <template <typename> class RefType>
|
9
|
+
jmethodID Iterator<RefType>::_method_has_next = nullptr;
|
10
|
+
|
11
|
+
template <template <typename> class RefType>
|
12
|
+
jmethodID Iterator<RefType>::_method_next = nullptr;
|
13
|
+
|
14
|
+
template <template <typename> class RefType>
|
15
|
+
const SimpleJNI::JNIDescriptor Iterator<RefType>::descriptor{"java/util/Iterator", // Java interface name
|
16
|
+
&_cls, // Where to store the jclass
|
17
|
+
{ // Methods to preload
|
18
|
+
{"hasNext", "()Z", &_method_has_next},
|
19
|
+
{"next", "()Ljava/lang/Object;", &_method_next}}};
|
20
|
+
|
21
|
+
template <template <typename> class RefType>
|
22
|
+
const SimpleJNI::AutoRegister<Iterator<RefType>> Iterator<RefType>::registrar{&descriptor};
|
23
|
+
|
24
|
+
template <template <typename> class RefType>
|
25
|
+
Iterator<RefType>::Iterator() : _obj() {}
|
26
|
+
|
27
|
+
template <template <typename> class RefType>
|
28
|
+
Iterator<RefType>::Iterator(jobject obj) : _obj(obj) {
|
29
|
+
if (!_cls.get()) {
|
30
|
+
throw std::runtime_error("Iterator JNI resources not preloaded");
|
31
|
+
}
|
32
|
+
_obj = SimpleJNI::Object<RefType, jobject>(obj, _cls.get());
|
33
|
+
}
|
34
|
+
|
35
|
+
template <template <typename> class RefType>
|
36
|
+
template <template <typename> class OtherRefType>
|
37
|
+
Iterator<RefType>::Iterator(const SimpleJNI::Object<OtherRefType, jobject>& obj) : _obj(obj.get()) {}
|
38
|
+
|
39
|
+
template <template <typename> class RefType>
|
40
|
+
Iterator<SimpleJNI::LocalRef> Iterator<RefType>::to_local() const {
|
41
|
+
if (!*this) return Iterator<SimpleJNI::LocalRef>();
|
42
|
+
return Iterator<SimpleJNI::LocalRef>(_obj.get());
|
43
|
+
}
|
44
|
+
|
45
|
+
template <template <typename> class RefType>
|
46
|
+
Iterator<SimpleJNI::GlobalRef> Iterator<RefType>::to_global() const {
|
47
|
+
if (!*this) return Iterator<SimpleJNI::GlobalRef>();
|
48
|
+
return Iterator<SimpleJNI::GlobalRef>(_obj.get());
|
49
|
+
}
|
50
|
+
|
51
|
+
template <template <typename> class RefType>
|
52
|
+
jobject Iterator<RefType>::get() const {
|
53
|
+
return _obj.get();
|
54
|
+
}
|
55
|
+
|
56
|
+
template <template <typename> class RefType>
|
57
|
+
Iterator<RefType>::operator bool() const {
|
58
|
+
return _obj.get() != nullptr;
|
59
|
+
}
|
60
|
+
|
61
|
+
template <template <typename> class RefType>
|
62
|
+
bool Iterator<RefType>::has_next() const {
|
63
|
+
if (!*this) return false;
|
64
|
+
return _obj.call_boolean_method(_method_has_next);
|
65
|
+
}
|
66
|
+
|
67
|
+
template <template <typename> class RefType>
|
68
|
+
SimpleJNI::Object<SimpleJNI::LocalRef> Iterator<RefType>::next() {
|
69
|
+
if (!*this) {
|
70
|
+
throw std::runtime_error("Iterator is not initialized");
|
71
|
+
}
|
72
|
+
return _obj.call_object_method(_method_next);
|
73
|
+
}
|
74
|
+
|
75
|
+
template <template <typename> class RefType>
|
76
|
+
Iterator<RefType>::operator SimpleJNI::Object<RefType, jobject>() const {
|
77
|
+
return _obj;
|
78
|
+
}
|
79
|
+
|
80
|
+
// Explicit template instantiations
|
81
|
+
template class Iterator<SimpleJNI::LocalRef>;
|
82
|
+
template class Iterator<SimpleJNI::GlobalRef>;
|
83
|
+
template class Iterator<SimpleJNI::WeakRef>;
|
84
|
+
template class Iterator<SimpleJNI::ReleasableLocalRef>;
|
85
|
+
} // namespace Java::Util
|
@@ -0,0 +1,48 @@
|
|
1
|
+
#pragma once
|
2
|
+
|
3
|
+
#include "simplejni/Common.hpp"
|
4
|
+
#include "simplejni/Registry.hpp"
|
5
|
+
|
6
|
+
namespace Java::Util {
|
7
|
+
|
8
|
+
template <template <typename> class RefType>
|
9
|
+
class Iterator {
|
10
|
+
public:
|
11
|
+
Iterator();
|
12
|
+
explicit Iterator(jobject obj);
|
13
|
+
|
14
|
+
template <template <typename> class OtherRefType>
|
15
|
+
Iterator(const SimpleJNI::Object<OtherRefType, jobject>& obj);
|
16
|
+
|
17
|
+
// Conversion methods
|
18
|
+
Iterator<SimpleJNI::LocalRef> to_local() const;
|
19
|
+
Iterator<SimpleJNI::GlobalRef> to_global() const;
|
20
|
+
|
21
|
+
// Get the underlying jobject
|
22
|
+
jobject get() const;
|
23
|
+
|
24
|
+
// Check if the object is valid
|
25
|
+
explicit operator bool() const;
|
26
|
+
|
27
|
+
// Implicit conversion to SimpleJNI::Object
|
28
|
+
operator SimpleJNI::Object<RefType, jobject>() const;
|
29
|
+
|
30
|
+
// Iterator methods
|
31
|
+
bool has_next() const;
|
32
|
+
SimpleJNI::Object<SimpleJNI::LocalRef> next();
|
33
|
+
|
34
|
+
private:
|
35
|
+
// Underlying JNI object
|
36
|
+
SimpleJNI::Object<RefType, jobject> _obj;
|
37
|
+
|
38
|
+
// Static JNI resources
|
39
|
+
static SimpleJNI::GlobalRef<jclass> _cls;
|
40
|
+
static jmethodID _method_has_next;
|
41
|
+
static jmethodID _method_next;
|
42
|
+
|
43
|
+
// JNI descriptor for auto-registration
|
44
|
+
static const SimpleJNI::JNIDescriptor descriptor;
|
45
|
+
static const SimpleJNI::AutoRegister<Iterator> registrar;
|
46
|
+
};
|
47
|
+
|
48
|
+
} // namespace Java::Util
|
@@ -0,0 +1,91 @@
|
|
1
|
+
#include "AdapterCallback.h"
|
2
|
+
|
3
|
+
namespace Org {
|
4
|
+
namespace SimpleJavaBLE {
|
5
|
+
|
6
|
+
// Define static JNI resources
|
7
|
+
SimpleJNI::GlobalRef<jclass> AdapterCallback::_cls;
|
8
|
+
jmethodID AdapterCallback::_method_on_scan_start = nullptr;
|
9
|
+
jmethodID AdapterCallback::_method_on_scan_stop = nullptr;
|
10
|
+
jmethodID AdapterCallback::_method_on_scan_updated = nullptr;
|
11
|
+
jmethodID AdapterCallback::_method_on_scan_found = nullptr;
|
12
|
+
|
13
|
+
// Define the JNI descriptor
|
14
|
+
const SimpleJNI::JNIDescriptor AdapterCallback::descriptor{
|
15
|
+
"org/simplejavable/Adapter$Callback", // Java interface name (inner class notation)
|
16
|
+
&_cls, // Where to store the jclass
|
17
|
+
{ // Methods to preload
|
18
|
+
{"onScanStart", "()V", &_method_on_scan_start},
|
19
|
+
{"onScanStop", "()V", &_method_on_scan_stop},
|
20
|
+
{"onScanUpdated", "(J)V", &_method_on_scan_updated},
|
21
|
+
{"onScanFound", "(J)V", &_method_on_scan_found}}};
|
22
|
+
|
23
|
+
// Define the AutoRegister instance
|
24
|
+
const SimpleJNI::AutoRegister<AdapterCallback> AdapterCallback::registrar{&descriptor};
|
25
|
+
|
26
|
+
/**
|
27
|
+
* @brief Construct a Callback from a Java object.
|
28
|
+
*
|
29
|
+
* Initializes the internal SimpleJNI::Object with the provided jobject and the preloaded
|
30
|
+
* jclass. The check for _cls.get() ensures that JNI_OnLoad has run and preloaded the
|
31
|
+
* necessary resources, throwing an exception otherwise to catch initialization issues early.
|
32
|
+
* @param obj The Java object implementing the Callback interface.
|
33
|
+
* @throws std::runtime_error if JNI resources are not preloaded.
|
34
|
+
*/
|
35
|
+
AdapterCallback::AdapterCallback(jobject obj) : _obj(obj, _cls.get()) {
|
36
|
+
if (!_cls.get()) {
|
37
|
+
throw std::runtime_error("AdapterCallback JNI resources not preloaded");
|
38
|
+
}
|
39
|
+
}
|
40
|
+
|
41
|
+
/**
|
42
|
+
* @brief Invoke the onScanStart method on the Java Callback object.
|
43
|
+
*
|
44
|
+
* Uses the preloaded _method_on_scan_start to call the Java method via SimpleJNI::Object.
|
45
|
+
* No additional checks are needed here since the constructor enforces resource availability.
|
46
|
+
*/
|
47
|
+
void AdapterCallback::on_scan_start() {
|
48
|
+
if (_obj.is_valid()) {
|
49
|
+
_obj.to_local().call_void_method(_method_on_scan_start);
|
50
|
+
}
|
51
|
+
}
|
52
|
+
|
53
|
+
/**
|
54
|
+
* @brief Invoke the onScanStop method on the Java Callback object.
|
55
|
+
*
|
56
|
+
* Calls the Java onScanStop() method using the preloaded jmethodID.
|
57
|
+
*/
|
58
|
+
void AdapterCallback::on_scan_stop() {
|
59
|
+
if (_obj.is_valid()) {
|
60
|
+
_obj.to_local().call_void_method(_method_on_scan_stop);
|
61
|
+
}
|
62
|
+
}
|
63
|
+
|
64
|
+
/**
|
65
|
+
* @brief Invoke the onScanUpdated method on the Java Callback object.
|
66
|
+
*
|
67
|
+
* Calls the Java onScanUpdated(long) method, converting the C++ int64_t to a JNI jlong.
|
68
|
+
* The preloaded jmethodID ensures the call is efficient and safe.
|
69
|
+
* @param peripheral_id The ID of the peripheral that was updated.
|
70
|
+
*/
|
71
|
+
void AdapterCallback::on_scan_updated(int64_t peripheral_id) {
|
72
|
+
if (_obj.is_valid()) {
|
73
|
+
_obj.to_local().call_void_method(_method_on_scan_updated, static_cast<jlong>(peripheral_id));
|
74
|
+
}
|
75
|
+
}
|
76
|
+
|
77
|
+
/**
|
78
|
+
* @brief Invoke the onScanFound method on the Java Callback object.
|
79
|
+
*
|
80
|
+
* Calls the Java onScanFound(long) method with the provided peripheral ID, using the
|
81
|
+
* preloaded jmethodID for efficiency.
|
82
|
+
* @param peripheral_id The ID of the peripheral that was found.
|
83
|
+
*/
|
84
|
+
void AdapterCallback::on_scan_found(int64_t peripheral_id) {
|
85
|
+
if (_obj.is_valid()) {
|
86
|
+
_obj.to_local().call_void_method(_method_on_scan_found, static_cast<jlong>(peripheral_id));
|
87
|
+
}
|
88
|
+
}
|
89
|
+
|
90
|
+
} // namespace SimpleJavaBLE
|
91
|
+
} // namespace Org
|
@@ -0,0 +1,90 @@
|
|
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.Adapter$Callback Java interface.
|
10
|
+
*
|
11
|
+
* This class encapsulates a jobject representing an instance of the Callback interface
|
12
|
+
* from the org.simplejavable.Adapter class. It provides methods to invoke the interface's
|
13
|
+
* Java methods (onScanStart, onScanStop, onScanUpdated, onScanFound) via JNI. JNI resources
|
14
|
+
* are preloaded during JNI_OnLoad using the AutoRegister mechanism.
|
15
|
+
*/
|
16
|
+
class AdapterCallback {
|
17
|
+
public:
|
18
|
+
AdapterCallback() = default;
|
19
|
+
|
20
|
+
/**
|
21
|
+
* @brief Construct a Callback from a Java object.
|
22
|
+
*
|
23
|
+
* Initializes the internal SimpleJNI::Object with the provided jobject and the preloaded
|
24
|
+
* jclass. Throws if JNI resources aren’t preloaded, enforcing initialization via JNI_OnLoad.
|
25
|
+
* @param obj The Java object implementing the Callback interface.
|
26
|
+
* @throws std::runtime_error if JNI resources are not preloaded.
|
27
|
+
*/
|
28
|
+
explicit AdapterCallback(jobject obj);
|
29
|
+
|
30
|
+
/**
|
31
|
+
* @brief Invoke the onScanStart method on the Java Callback object.
|
32
|
+
*
|
33
|
+
* Calls the Java onScanStart() method, which has no arguments and returns void.
|
34
|
+
*/
|
35
|
+
void on_scan_start();
|
36
|
+
|
37
|
+
/**
|
38
|
+
* @brief Invoke the onScanStop method on the Java Callback object.
|
39
|
+
*
|
40
|
+
* Calls the Java onScanStop() method, which has no arguments and returns void.
|
41
|
+
*/
|
42
|
+
void on_scan_stop();
|
43
|
+
|
44
|
+
/**
|
45
|
+
* @brief Invoke the onScanUpdated method on the Java Callback object.
|
46
|
+
*
|
47
|
+
* Calls the Java onScanUpdated(long) method, passing a peripheral ID as a jlong.
|
48
|
+
* @param peripheral_id The ID of the peripheral that was updated.
|
49
|
+
*/
|
50
|
+
void on_scan_updated(int64_t peripheral_id);
|
51
|
+
|
52
|
+
/**
|
53
|
+
* @brief Invoke the onScanFound method on the Java Callback object.
|
54
|
+
*
|
55
|
+
* Calls the Java onScanFound(long) method, passing a peripheral ID as a jlong.
|
56
|
+
* @param peripheral_id The ID of the peripheral that was found.
|
57
|
+
*/
|
58
|
+
void on_scan_found(int64_t peripheral_id);
|
59
|
+
|
60
|
+
private:
|
61
|
+
// Static JNI resources, populated by Registrar during JNI_OnLoad
|
62
|
+
static SimpleJNI::GlobalRef<jclass> _cls; ///< Preloaded jclass for org.simplejavable.Adapter$Callback.
|
63
|
+
static jmethodID _method_on_scan_start; ///< Preloaded jmethodID for onScanStart.
|
64
|
+
static jmethodID _method_on_scan_stop; ///< Preloaded jmethodID for onScanStop.
|
65
|
+
static jmethodID _method_on_scan_updated; ///< Preloaded jmethodID for onScanUpdated.
|
66
|
+
static jmethodID _method_on_scan_found; ///< Preloaded jmethodID for onScanFound.
|
67
|
+
|
68
|
+
/**
|
69
|
+
* @brief JNI descriptor defining the Callback interface and its methods.
|
70
|
+
*
|
71
|
+
* Declares the Java interface and its methods, linking to static storage locations
|
72
|
+
* where Registrar stores resolved JNI resources. Defined in Callback.cpp to ensure
|
73
|
+
* a single point of definition.
|
74
|
+
*/
|
75
|
+
static const SimpleJNI::JNIDescriptor descriptor;
|
76
|
+
|
77
|
+
/**
|
78
|
+
* @brief Automatic registration of the descriptor with Registrar.
|
79
|
+
*
|
80
|
+
* Triggers registration during static initialization of Callback.cpp, ensuring the
|
81
|
+
* descriptor is added to Registrar before JNI_OnLoad. Defined in Callback.cpp to
|
82
|
+
* maintain a single instantiation.
|
83
|
+
*/
|
84
|
+
static const SimpleJNI::AutoRegister<AdapterCallback> registrar;
|
85
|
+
|
86
|
+
SimpleJNI::Object<SimpleJNI::WeakRef> _obj; ///< Wrapped Java object with WeakGlobalRef lifetime.
|
87
|
+
};
|
88
|
+
|
89
|
+
} // namespace SimpleJavaBLE
|
90
|
+
} // namespace Org
|
@@ -0,0 +1,35 @@
|
|
1
|
+
#include "Characteristic.h"
|
2
|
+
|
3
|
+
namespace Org {
|
4
|
+
namespace SimpleJavaBLE {
|
5
|
+
|
6
|
+
// Define static JNI resources
|
7
|
+
SimpleJNI::GlobalRef<jclass> Characteristic::_cls;
|
8
|
+
jmethodID Characteristic::_init_method;
|
9
|
+
|
10
|
+
// Define the JNI descriptor
|
11
|
+
const SimpleJNI::JNIDescriptor Characteristic::descriptor{
|
12
|
+
"org/simplejavable/Characteristic", // Java class name
|
13
|
+
&_cls, // Where to store the jclass
|
14
|
+
{
|
15
|
+
{"<init>", "(Ljava/lang/String;Ljava/util/List;ZZZZZ)V", &_init_method} // Constructor method
|
16
|
+
}};
|
17
|
+
|
18
|
+
// Define the AutoRegister instance
|
19
|
+
const SimpleJNI::AutoRegister<Characteristic> Characteristic::registrar{&descriptor};
|
20
|
+
|
21
|
+
// Constructor implementation
|
22
|
+
Characteristic::Characteristic(const SimpleJNI::String<SimpleJNI::LocalRef>& uuid,
|
23
|
+
const Java::Util::ArrayList<SimpleJNI::LocalRef>& descriptors, bool canRead,
|
24
|
+
bool canWriteRequest, bool canWriteCommand, bool canNotify, bool canIndicate) {
|
25
|
+
// Use call_new_object to create a new Java Characteristic object
|
26
|
+
_obj = SimpleJNI::Object<SimpleJNI::ReleasableLocalRef>::call_new_object(
|
27
|
+
_cls.get(), _init_method, uuid.get(), descriptors.get(), static_cast<jboolean>(canRead),
|
28
|
+
static_cast<jboolean>(canWriteRequest), static_cast<jboolean>(canWriteCommand),
|
29
|
+
static_cast<jboolean>(canNotify), static_cast<jboolean>(canIndicate));
|
30
|
+
}
|
31
|
+
|
32
|
+
Characteristic::operator SimpleJNI::Object<SimpleJNI::ReleasableLocalRef, jobject>() const { return _obj; }
|
33
|
+
|
34
|
+
} // namespace SimpleJavaBLE
|
35
|
+
} // namespace Org
|
@@ -0,0 +1,60 @@
|
|
1
|
+
#pragma once
|
2
|
+
|
3
|
+
#include "Descriptor.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.Characteristic Java class.
|
13
|
+
*
|
14
|
+
* This class provides basic JNI registration functionality for the Characteristic class.
|
15
|
+
*/
|
16
|
+
class Characteristic {
|
17
|
+
public:
|
18
|
+
/**
|
19
|
+
* @brief Default constructor.
|
20
|
+
*/
|
21
|
+
Characteristic() = default;
|
22
|
+
|
23
|
+
/**
|
24
|
+
* @brief Constructor that creates a Characteristic with the specified properties.
|
25
|
+
*
|
26
|
+
* @param uuid The UUID string for the characteristic.
|
27
|
+
* @param descriptors List of descriptors associated with this characteristic.
|
28
|
+
* @param canRead Whether the characteristic supports read operations.
|
29
|
+
* @param canWriteRequest Whether the characteristic supports write request operations.
|
30
|
+
* @param canWriteCommand Whether the characteristic supports write command operations.
|
31
|
+
* @param canNotify Whether the characteristic supports notifications.
|
32
|
+
* @param canIndicate Whether the characteristic supports indications.
|
33
|
+
*/
|
34
|
+
Characteristic(const SimpleJNI::String<SimpleJNI::LocalRef>& uuid,
|
35
|
+
const Java::Util::ArrayList<SimpleJNI::LocalRef>& descriptors, bool canRead, bool canWriteRequest,
|
36
|
+
bool canWriteCommand, bool canNotify, bool canIndicate);
|
37
|
+
|
38
|
+
// Implicit conversion to SimpleJNI::Object
|
39
|
+
operator SimpleJNI::Object<SimpleJNI::ReleasableLocalRef, jobject>() const;
|
40
|
+
|
41
|
+
private:
|
42
|
+
// Static JNI resources, populated by Registrar during JNI_OnLoad
|
43
|
+
static SimpleJNI::GlobalRef<jclass> _cls;
|
44
|
+
static jmethodID _init_method;
|
45
|
+
|
46
|
+
/**
|
47
|
+
* @brief JNI descriptor defining the Characteristic class.
|
48
|
+
*/
|
49
|
+
static const SimpleJNI::JNIDescriptor descriptor;
|
50
|
+
|
51
|
+
/**
|
52
|
+
* @brief Automatic registration of the descriptor with Registrar.
|
53
|
+
*/
|
54
|
+
static const SimpleJNI::AutoRegister<Characteristic> registrar;
|
55
|
+
|
56
|
+
SimpleJNI::Object<SimpleJNI::ReleasableLocalRef> _obj; ///< Wrapped Java object with ReleasableLocalRef lifetime.
|
57
|
+
};
|
58
|
+
|
59
|
+
} // namespace SimpleJavaBLE
|
60
|
+
} // namespace Org
|
@@ -0,0 +1,33 @@
|
|
1
|
+
#include "DataCallback.h"
|
2
|
+
|
3
|
+
namespace Org {
|
4
|
+
namespace SimpleJavaBLE {
|
5
|
+
|
6
|
+
// Define static JNI resources
|
7
|
+
SimpleJNI::GlobalRef<jclass> DataCallback::_cls;
|
8
|
+
jmethodID DataCallback::_method_on_data_received = nullptr;
|
9
|
+
|
10
|
+
// Define the JNI descriptor
|
11
|
+
const SimpleJNI::JNIDescriptor DataCallback::descriptor{
|
12
|
+
"org/simplejavable/Peripheral$DataCallback", // Java interface name (inner class notation)
|
13
|
+
&_cls, // Where to store the jclass
|
14
|
+
{ // Methods to preload
|
15
|
+
{"onDataReceived", "([B)V", &_method_on_data_received}}};
|
16
|
+
|
17
|
+
// Define the AutoRegister instance
|
18
|
+
const SimpleJNI::AutoRegister<DataCallback> DataCallback::registrar{&descriptor};
|
19
|
+
|
20
|
+
DataCallback::DataCallback(jobject obj) : _obj(obj, _cls.get()) {
|
21
|
+
if (!_cls.get()) {
|
22
|
+
throw std::runtime_error("DataCallback JNI resources not preloaded");
|
23
|
+
}
|
24
|
+
}
|
25
|
+
|
26
|
+
void DataCallback::on_data_received(jbyteArray data) {
|
27
|
+
if (_obj.is_valid()) {
|
28
|
+
_obj.to_local().call_void_method(_method_on_data_received, data);
|
29
|
+
}
|
30
|
+
}
|
31
|
+
|
32
|
+
} // namespace SimpleJavaBLE
|
33
|
+
} // namespace Org
|
@@ -0,0 +1,45 @@
|
|
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$DataCallback Java interface.
|
10
|
+
*
|
11
|
+
* This class encapsulates a jobject representing an instance of the DataCallback interface
|
12
|
+
* from the org.simplejavable.Peripheral class. It provides methods to invoke the interface's
|
13
|
+
* Java methods (onDataReceived) via JNI. JNI resources are preloaded during
|
14
|
+
* JNI_OnLoad using the AutoRegister mechanism.
|
15
|
+
*/
|
16
|
+
class DataCallback {
|
17
|
+
public:
|
18
|
+
DataCallback() = 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 DataCallback(jobject obj);
|
27
|
+
|
28
|
+
/**
|
29
|
+
* @brief Invoke the onDataReceived method on the Java DataCallback object.
|
30
|
+
*/
|
31
|
+
void on_data_received(jbyteArray data);
|
32
|
+
|
33
|
+
private:
|
34
|
+
// Static JNI resources, populated by Registrar during JNI_OnLoad
|
35
|
+
static SimpleJNI::GlobalRef<jclass> _cls;
|
36
|
+
static jmethodID _method_on_data_received;
|
37
|
+
|
38
|
+
static const SimpleJNI::JNIDescriptor descriptor;
|
39
|
+
static const SimpleJNI::AutoRegister<DataCallback> registrar;
|
40
|
+
|
41
|
+
SimpleJNI::Object<SimpleJNI::WeakRef> _obj;
|
42
|
+
};
|
43
|
+
|
44
|
+
} // namespace SimpleJavaBLE
|
45
|
+
} // namespace Org
|
@@ -0,0 +1,30 @@
|
|
1
|
+
#include "Descriptor.h"
|
2
|
+
|
3
|
+
namespace Org {
|
4
|
+
namespace SimpleJavaBLE {
|
5
|
+
|
6
|
+
// Define static JNI resources
|
7
|
+
SimpleJNI::GlobalRef<jclass> Descriptor::_cls;
|
8
|
+
jmethodID Descriptor::_init_method;
|
9
|
+
|
10
|
+
// Define the JNI descriptor
|
11
|
+
const SimpleJNI::JNIDescriptor Descriptor::descriptor{
|
12
|
+
"org/simplejavable/Descriptor", // Java class name
|
13
|
+
&_cls, // Where to store the jclass
|
14
|
+
{
|
15
|
+
{"<init>", "(Ljava/lang/String;)V", &_init_method} // Constructor method
|
16
|
+
}};
|
17
|
+
|
18
|
+
// Define the AutoRegister instance
|
19
|
+
const SimpleJNI::AutoRegister<Descriptor> Descriptor::registrar{&descriptor};
|
20
|
+
|
21
|
+
// Constructor implementation
|
22
|
+
Descriptor::Descriptor(const SimpleJNI::String<SimpleJNI::LocalRef>& uuid) {
|
23
|
+
// Use call_new_object to create a new Java Descriptor object
|
24
|
+
_obj = SimpleJNI::Object<SimpleJNI::ReleasableLocalRef>::call_new_object(_cls.get(), _init_method, uuid.get());
|
25
|
+
}
|
26
|
+
|
27
|
+
Descriptor::operator SimpleJNI::Object<SimpleJNI::ReleasableLocalRef, jobject>() const { return _obj; }
|
28
|
+
|
29
|
+
} // namespace SimpleJavaBLE
|
30
|
+
} // namespace Org
|