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,37 @@
|
|
1
|
+
#include "AdapterWrapper.h"
|
2
|
+
#include "Cache.h"
|
3
|
+
#include "PeripheralWrapper.h"
|
4
|
+
|
5
|
+
AdapterWrapper::AdapterWrapper(const SimpleBLE::Adapter& adapter) : _adapter(adapter) {}
|
6
|
+
|
7
|
+
AdapterWrapper::~AdapterWrapper() {
|
8
|
+
_adapter.set_callback_on_scan_found(nullptr);
|
9
|
+
_adapter.set_callback_on_scan_updated(nullptr);
|
10
|
+
_adapter.set_callback_on_scan_start(nullptr);
|
11
|
+
_adapter.set_callback_on_scan_stop(nullptr);
|
12
|
+
}
|
13
|
+
|
14
|
+
SimpleBLE::Adapter& AdapterWrapper::get() { return _adapter; }
|
15
|
+
|
16
|
+
const SimpleBLE::Adapter& AdapterWrapper::get() const { return _adapter; }
|
17
|
+
|
18
|
+
void AdapterWrapper::setCallback(Org::SimpleJavaBLE::AdapterCallback& callback) {
|
19
|
+
_callback = std::move(callback);
|
20
|
+
|
21
|
+
_adapter.set_callback_on_scan_found([this](const SimpleBLE::Peripheral& peripheral) {
|
22
|
+
PeripheralWrapper peripheral_wrapper(peripheral);
|
23
|
+
Cache::get().addPeripheral(getHash(), peripheral_wrapper.getHash(), peripheral_wrapper);
|
24
|
+
_callback.on_scan_found(peripheral_wrapper.getHash());
|
25
|
+
});
|
26
|
+
|
27
|
+
_adapter.set_callback_on_scan_updated([this](const SimpleBLE::Peripheral& peripheral) {
|
28
|
+
PeripheralWrapper peripheral_wrapper(peripheral);
|
29
|
+
_callback.on_scan_updated(peripheral_wrapper.getHash());
|
30
|
+
});
|
31
|
+
|
32
|
+
_adapter.set_callback_on_scan_start([this]() { _callback.on_scan_start(); });
|
33
|
+
|
34
|
+
_adapter.set_callback_on_scan_stop([this]() { _callback.on_scan_stop(); });
|
35
|
+
}
|
36
|
+
|
37
|
+
size_t AdapterWrapper::getHash() { return std::hash<std::string>{}(_adapter.identifier()); }
|
@@ -0,0 +1,23 @@
|
|
1
|
+
#pragma once
|
2
|
+
#include <simpleble/SimpleBLE.h>
|
3
|
+
#include "simplejni/Common.hpp"
|
4
|
+
#include "simplejni/Registry.hpp"
|
5
|
+
#include "org/simplejavable/AdapterCallback.h"
|
6
|
+
|
7
|
+
class AdapterWrapper {
|
8
|
+
public:
|
9
|
+
explicit AdapterWrapper(const SimpleBLE::Adapter& adapter);
|
10
|
+
~AdapterWrapper();
|
11
|
+
|
12
|
+
// Accessor to the underlying adapter
|
13
|
+
SimpleBLE::Adapter& get();
|
14
|
+
const SimpleBLE::Adapter& get() const;
|
15
|
+
|
16
|
+
void setCallback(Org::SimpleJavaBLE::AdapterCallback& callback);
|
17
|
+
|
18
|
+
size_t getHash();
|
19
|
+
|
20
|
+
private:
|
21
|
+
SimpleBLE::Adapter _adapter;
|
22
|
+
Org::SimpleJavaBLE::AdapterCallback _callback;
|
23
|
+
};
|
@@ -0,0 +1,58 @@
|
|
1
|
+
#include "Cache.h"
|
2
|
+
|
3
|
+
Cache& Cache::get() {
|
4
|
+
static Cache instance;
|
5
|
+
return instance;
|
6
|
+
}
|
7
|
+
|
8
|
+
void Cache::addAdapter(size_t adapter_id, const AdapterWrapper& adapter) {
|
9
|
+
if (hasAdapter(adapter_id)) return;
|
10
|
+
|
11
|
+
cached_adapters.emplace(adapter_id, adapter);
|
12
|
+
}
|
13
|
+
|
14
|
+
AdapterWrapper* Cache::getAdapter(size_t adapter_id) {
|
15
|
+
auto it = cached_adapters.find(adapter_id);
|
16
|
+
return (it != cached_adapters.end()) ? &it->second : nullptr;
|
17
|
+
}
|
18
|
+
|
19
|
+
bool Cache::hasAdapter(size_t adapter_id) const { return cached_adapters.find(adapter_id) != cached_adapters.end(); }
|
20
|
+
|
21
|
+
bool Cache::hasPeripheral(size_t adapter_id, size_t peripheral_id) const {
|
22
|
+
auto adapter_it = cached_peripherals.find(adapter_id);
|
23
|
+
return (adapter_it != cached_peripherals.end()) &&
|
24
|
+
(adapter_it->second.find(peripheral_id) != adapter_it->second.end());
|
25
|
+
}
|
26
|
+
|
27
|
+
void Cache::addPeripheral(size_t adapter_id, size_t peripheral_id, const PeripheralWrapper& peripheral) {
|
28
|
+
if (!hasAdapter(adapter_id)) {
|
29
|
+
// Optional: Log or throw
|
30
|
+
return;
|
31
|
+
}
|
32
|
+
|
33
|
+
if (hasPeripheral(adapter_id, peripheral_id)) {
|
34
|
+
return;
|
35
|
+
}
|
36
|
+
|
37
|
+
cached_peripherals[adapter_id].emplace(peripheral_id, peripheral);
|
38
|
+
}
|
39
|
+
|
40
|
+
PeripheralWrapper* Cache::getPeripheral(size_t adapter_id, size_t peripheral_id) {
|
41
|
+
auto adapter_it = cached_peripherals.find(adapter_id);
|
42
|
+
if (adapter_it == cached_peripherals.end()) return nullptr;
|
43
|
+
|
44
|
+
auto peripheral_it = adapter_it->second.find(peripheral_id);
|
45
|
+
return (peripheral_it != adapter_it->second.end()) ? &peripheral_it->second : nullptr;
|
46
|
+
}
|
47
|
+
|
48
|
+
void Cache::removeAdapter(size_t adapter_id) {
|
49
|
+
cached_adapters.erase(adapter_id);
|
50
|
+
cached_peripherals.erase(adapter_id);
|
51
|
+
}
|
52
|
+
|
53
|
+
void Cache::removePeripheral(size_t adapter_id, size_t peripheral_id) {
|
54
|
+
auto adapter_it = cached_peripherals.find(adapter_id);
|
55
|
+
if (adapter_it != cached_peripherals.end()) {
|
56
|
+
adapter_it->second.erase(peripheral_id);
|
57
|
+
}
|
58
|
+
}
|
@@ -0,0 +1,34 @@
|
|
1
|
+
#pragma once
|
2
|
+
#include <map>
|
3
|
+
|
4
|
+
#include "AdapterWrapper.h"
|
5
|
+
#include "PeripheralWrapper.h"
|
6
|
+
|
7
|
+
class Cache {
|
8
|
+
private:
|
9
|
+
Cache() = default;
|
10
|
+
|
11
|
+
// Maps now store wrappers
|
12
|
+
std::map<size_t, AdapterWrapper> cached_adapters;
|
13
|
+
std::map<size_t, std::map<size_t, PeripheralWrapper>> cached_peripherals;
|
14
|
+
|
15
|
+
public:
|
16
|
+
static Cache& get();
|
17
|
+
|
18
|
+
Cache(const Cache&) = delete;
|
19
|
+
Cache& operator=(const Cache&) = delete;
|
20
|
+
|
21
|
+
// Adapter management
|
22
|
+
void addAdapter(size_t adapter_id, const AdapterWrapper& adapter);
|
23
|
+
AdapterWrapper* getAdapter(size_t adapter_id);
|
24
|
+
bool hasAdapter(size_t adapter_id) const;
|
25
|
+
|
26
|
+
// Peripheral management
|
27
|
+
void addPeripheral(size_t adapter_id, size_t peripheral_id, const PeripheralWrapper& peripheral);
|
28
|
+
PeripheralWrapper* getPeripheral(size_t adapter_id, size_t peripheral_id);
|
29
|
+
bool hasPeripheral(size_t adapter_id, size_t peripheral_id) const;
|
30
|
+
|
31
|
+
// Removal methods
|
32
|
+
void removeAdapter(size_t adapter_id);
|
33
|
+
void removePeripheral(size_t adapter_id, size_t peripheral_id);
|
34
|
+
};
|
@@ -0,0 +1,17 @@
|
|
1
|
+
#include "PeripheralWrapper.h"
|
2
|
+
|
3
|
+
PeripheralWrapper::PeripheralWrapper(const SimpleBLE::Peripheral& peripheral) : _peripheral(peripheral) {}
|
4
|
+
|
5
|
+
SimpleBLE::Peripheral& PeripheralWrapper::get() { return _peripheral; }
|
6
|
+
|
7
|
+
const SimpleBLE::Peripheral& PeripheralWrapper::get() const { return _peripheral; }
|
8
|
+
|
9
|
+
void PeripheralWrapper::setCallback(Org::SimpleJavaBLE::PeripheralCallback& callback) {
|
10
|
+
_callback = std::move(callback);
|
11
|
+
|
12
|
+
_peripheral.set_callback_on_connected([this]() { _callback.on_connected(); });
|
13
|
+
|
14
|
+
_peripheral.set_callback_on_disconnected([this]() { _callback.on_disconnected(); });
|
15
|
+
}
|
16
|
+
|
17
|
+
size_t PeripheralWrapper::getHash() { return std::hash<std::string>{}(_peripheral.address()); }
|
@@ -0,0 +1,19 @@
|
|
1
|
+
#pragma once
|
2
|
+
#include <simpleble/SimpleBLE.h>
|
3
|
+
#include "org/simplejavable/PeripheralCallback.h"
|
4
|
+
|
5
|
+
class PeripheralWrapper {
|
6
|
+
public:
|
7
|
+
explicit PeripheralWrapper(const SimpleBLE::Peripheral& peripheral);
|
8
|
+
|
9
|
+
SimpleBLE::Peripheral& get();
|
10
|
+
const SimpleBLE::Peripheral& get() const;
|
11
|
+
|
12
|
+
void setCallback(Org::SimpleJavaBLE::PeripheralCallback& callback);
|
13
|
+
|
14
|
+
size_t getHash();
|
15
|
+
|
16
|
+
private:
|
17
|
+
SimpleBLE::Peripheral _peripheral;
|
18
|
+
Org::SimpleJavaBLE::PeripheralCallback _callback;
|
19
|
+
};
|
@@ -0,0 +1,257 @@
|
|
1
|
+
#include "ArrayList.h"
|
2
|
+
|
3
|
+
namespace Java::Util {
|
4
|
+
|
5
|
+
template <template <typename> class RefType>
|
6
|
+
SimpleJNI::GlobalRef<jclass> ArrayList<RefType>::_cls;
|
7
|
+
|
8
|
+
template <template <typename> class RefType>
|
9
|
+
jmethodID ArrayList<RefType>::_constructor = nullptr;
|
10
|
+
|
11
|
+
template <template <typename> class RefType>
|
12
|
+
jmethodID ArrayList<RefType>::_constructor_capacity = nullptr;
|
13
|
+
|
14
|
+
template <template <typename> class RefType>
|
15
|
+
jmethodID ArrayList<RefType>::_method_iterator = nullptr;
|
16
|
+
|
17
|
+
template <template <typename> class RefType>
|
18
|
+
jmethodID ArrayList<RefType>::_method_add = nullptr;
|
19
|
+
|
20
|
+
template <template <typename> class RefType>
|
21
|
+
jmethodID ArrayList<RefType>::_method_add_at_index = nullptr;
|
22
|
+
|
23
|
+
template <template <typename> class RefType>
|
24
|
+
jmethodID ArrayList<RefType>::_method_remove_object = nullptr;
|
25
|
+
|
26
|
+
template <template <typename> class RefType>
|
27
|
+
jmethodID ArrayList<RefType>::_method_remove_index = nullptr;
|
28
|
+
|
29
|
+
template <template <typename> class RefType>
|
30
|
+
jmethodID ArrayList<RefType>::_method_clear = nullptr;
|
31
|
+
|
32
|
+
template <template <typename> class RefType>
|
33
|
+
jmethodID ArrayList<RefType>::_method_size = nullptr;
|
34
|
+
|
35
|
+
template <template <typename> class RefType>
|
36
|
+
jmethodID ArrayList<RefType>::_method_get = nullptr;
|
37
|
+
|
38
|
+
template <template <typename> class RefType>
|
39
|
+
jmethodID ArrayList<RefType>::_method_set = nullptr;
|
40
|
+
|
41
|
+
template <template <typename> class RefType>
|
42
|
+
jmethodID ArrayList<RefType>::_method_isEmpty = nullptr;
|
43
|
+
|
44
|
+
template <template <typename> class RefType>
|
45
|
+
jmethodID ArrayList<RefType>::_method_ensureCapacity = nullptr;
|
46
|
+
|
47
|
+
template <template <typename> class RefType>
|
48
|
+
jmethodID ArrayList<RefType>::_method_trimToSize = nullptr;
|
49
|
+
|
50
|
+
template <template <typename> class RefType>
|
51
|
+
const SimpleJNI::JNIDescriptor ArrayList<RefType>::descriptor{
|
52
|
+
"java/util/ArrayList", // Java class name
|
53
|
+
&_cls, // Where to store the jclass
|
54
|
+
{ // Methods to preload
|
55
|
+
{"<init>", "()V", &_constructor},
|
56
|
+
{"<init>", "(I)V", &_constructor_capacity},
|
57
|
+
{"iterator", "()Ljava/util/Iterator;", &_method_iterator},
|
58
|
+
{"add", "(Ljava/lang/Object;)Z", &_method_add},
|
59
|
+
{"add", "(ILjava/lang/Object;)V", &_method_add_at_index},
|
60
|
+
{"remove", "(Ljava/lang/Object;)Z", &_method_remove_object},
|
61
|
+
{"remove", "(I)Ljava/lang/Object;", &_method_remove_index},
|
62
|
+
{"clear", "()V", &_method_clear},
|
63
|
+
{"size", "()I", &_method_size},
|
64
|
+
{"get", "(I)Ljava/lang/Object;", &_method_get},
|
65
|
+
{"set", "(ILjava/lang/Object;)Ljava/lang/Object;", &_method_set},
|
66
|
+
{"isEmpty", "()Z", &_method_isEmpty},
|
67
|
+
{"ensureCapacity", "(I)V", &_method_ensureCapacity},
|
68
|
+
{"trimToSize", "()V", &_method_trimToSize}}};
|
69
|
+
|
70
|
+
template <template <typename> class RefType>
|
71
|
+
const SimpleJNI::AutoRegister<ArrayList<RefType>> ArrayList<RefType>::registrar{&descriptor};
|
72
|
+
|
73
|
+
template <template <typename> class RefType>
|
74
|
+
ArrayList<RefType>::ArrayList() : _obj() {
|
75
|
+
if (!_cls.get()) {
|
76
|
+
throw std::runtime_error("ArrayList JNI resources not preloaded");
|
77
|
+
}
|
78
|
+
|
79
|
+
SimpleJNI::Env env;
|
80
|
+
jobject obj = env->NewObject(_cls.get(), _constructor);
|
81
|
+
if (obj == nullptr) {
|
82
|
+
throw std::runtime_error("Failed to create ArrayList instance");
|
83
|
+
}
|
84
|
+
|
85
|
+
_obj = SimpleJNI::Object<RefType, jobject>(obj, _cls.get());
|
86
|
+
env->DeleteLocalRef(obj);
|
87
|
+
}
|
88
|
+
|
89
|
+
template <template <typename> class RefType>
|
90
|
+
ArrayList<RefType>::ArrayList(int initialCapacity) : _obj() {
|
91
|
+
if (!_cls.get()) {
|
92
|
+
throw std::runtime_error("ArrayList JNI resources not preloaded");
|
93
|
+
}
|
94
|
+
|
95
|
+
SimpleJNI::Env env;
|
96
|
+
jobject obj = env->NewObject(_cls.get(), _constructor_capacity, initialCapacity);
|
97
|
+
if (obj == nullptr) {
|
98
|
+
throw std::runtime_error("Failed to create ArrayList instance with capacity");
|
99
|
+
}
|
100
|
+
|
101
|
+
_obj = SimpleJNI::Object<RefType, jobject>(obj, _cls.get());
|
102
|
+
env->DeleteLocalRef(obj);
|
103
|
+
}
|
104
|
+
|
105
|
+
template <template <typename> class RefType>
|
106
|
+
ArrayList<RefType>::ArrayList(jobject obj) : _obj() {
|
107
|
+
if (!_cls.get()) {
|
108
|
+
throw std::runtime_error("ArrayList JNI resources not preloaded");
|
109
|
+
}
|
110
|
+
_obj = SimpleJNI::Object<RefType, jobject>(obj, _cls.get());
|
111
|
+
}
|
112
|
+
|
113
|
+
template <template <typename> class RefType>
|
114
|
+
template <template <typename> class OtherRefType>
|
115
|
+
ArrayList<RefType>::ArrayList(const SimpleJNI::Object<OtherRefType, jobject>& obj) : _obj(obj.get()) {}
|
116
|
+
|
117
|
+
template <template <typename> class RefType>
|
118
|
+
ArrayList<SimpleJNI::LocalRef> ArrayList<RefType>::to_local() const {
|
119
|
+
if (!*this) return ArrayList<SimpleJNI::LocalRef>();
|
120
|
+
return ArrayList<SimpleJNI::LocalRef>(_obj.get());
|
121
|
+
}
|
122
|
+
|
123
|
+
template <template <typename> class RefType>
|
124
|
+
ArrayList<SimpleJNI::GlobalRef> ArrayList<RefType>::to_global() const {
|
125
|
+
if (!*this) return ArrayList<SimpleJNI::GlobalRef>();
|
126
|
+
return ArrayList<SimpleJNI::GlobalRef>(_obj.get());
|
127
|
+
}
|
128
|
+
|
129
|
+
template <template <typename> class RefType>
|
130
|
+
jobject ArrayList<RefType>::get() const {
|
131
|
+
return _obj.get();
|
132
|
+
}
|
133
|
+
|
134
|
+
template <template <typename> class RefType>
|
135
|
+
template <template <typename> class R>
|
136
|
+
typename std::enable_if<std::is_same<R<jobject>, SimpleJNI::ReleasableLocalRef<jobject>>::value, jobject>::type
|
137
|
+
ArrayList<RefType>::release() {
|
138
|
+
return _obj.release();
|
139
|
+
}
|
140
|
+
|
141
|
+
template <template <typename> class RefType>
|
142
|
+
ArrayList<RefType>::operator bool() const {
|
143
|
+
return _obj.get() != nullptr;
|
144
|
+
}
|
145
|
+
|
146
|
+
template <template <typename> class RefType>
|
147
|
+
ArrayList<RefType>::operator SimpleJNI::Object<RefType, jobject>() const {
|
148
|
+
return _obj;
|
149
|
+
}
|
150
|
+
|
151
|
+
template <template <typename> class RefType>
|
152
|
+
Iterator<SimpleJNI::LocalRef> ArrayList<RefType>::iterator() const {
|
153
|
+
if (!*this) {
|
154
|
+
throw std::runtime_error("ArrayList is not initialized");
|
155
|
+
}
|
156
|
+
jobject iter = _obj.call_object_method(_method_iterator).get();
|
157
|
+
return Iterator<SimpleJNI::LocalRef>(iter);
|
158
|
+
}
|
159
|
+
|
160
|
+
template <template <typename> class RefType>
|
161
|
+
void ArrayList<RefType>::add(const SimpleJNI::Object<RefType, jobject>& element) {
|
162
|
+
if (!*this) {
|
163
|
+
throw std::runtime_error("ArrayList is not initialized");
|
164
|
+
}
|
165
|
+
_obj.call_boolean_method(_method_add, element.get());
|
166
|
+
}
|
167
|
+
|
168
|
+
template <template <typename> class RefType>
|
169
|
+
void ArrayList<RefType>::add(size_t index, const SimpleJNI::Object<RefType, jobject>& element) {
|
170
|
+
if (!*this) {
|
171
|
+
throw std::runtime_error("ArrayList is not initialized");
|
172
|
+
}
|
173
|
+
_obj.call_void_method(_method_add_at_index, static_cast<jint>(index), element.get());
|
174
|
+
}
|
175
|
+
|
176
|
+
template <template <typename> class RefType>
|
177
|
+
bool ArrayList<RefType>::remove(const SimpleJNI::Object<RefType, jobject>& element) {
|
178
|
+
if (!*this) {
|
179
|
+
throw std::runtime_error("ArrayList is not initialized");
|
180
|
+
}
|
181
|
+
return _obj.call_boolean_method(_method_remove_object, element.get());
|
182
|
+
}
|
183
|
+
|
184
|
+
template <template <typename> class RefType>
|
185
|
+
SimpleJNI::Object<SimpleJNI::LocalRef> ArrayList<RefType>::remove(size_t index) {
|
186
|
+
if (!*this) {
|
187
|
+
throw std::runtime_error("ArrayList is not initialized");
|
188
|
+
}
|
189
|
+
return _obj.call_object_method(_method_remove_index, static_cast<jint>(index));
|
190
|
+
}
|
191
|
+
|
192
|
+
template <template <typename> class RefType>
|
193
|
+
void ArrayList<RefType>::clear() {
|
194
|
+
if (!*this) {
|
195
|
+
throw std::runtime_error("ArrayList is not initialized");
|
196
|
+
}
|
197
|
+
_obj.call_void_method(_method_clear);
|
198
|
+
}
|
199
|
+
|
200
|
+
template <template <typename> class RefType>
|
201
|
+
size_t ArrayList<RefType>::size() const {
|
202
|
+
if (!*this) {
|
203
|
+
throw std::runtime_error("ArrayList is not initialized");
|
204
|
+
}
|
205
|
+
return static_cast<size_t>(_obj.call_int_method(_method_size));
|
206
|
+
}
|
207
|
+
|
208
|
+
template <template <typename> class RefType>
|
209
|
+
SimpleJNI::Object<SimpleJNI::LocalRef> ArrayList<RefType>::get(size_t index) const {
|
210
|
+
if (!*this) {
|
211
|
+
throw std::runtime_error("ArrayList is not initialized");
|
212
|
+
}
|
213
|
+
return _obj.call_object_method(_method_get, static_cast<jint>(index));
|
214
|
+
}
|
215
|
+
|
216
|
+
template <template <typename> class RefType>
|
217
|
+
SimpleJNI::Object<SimpleJNI::LocalRef> ArrayList<RefType>::set(size_t index,
|
218
|
+
const SimpleJNI::Object<RefType, jobject>& element) {
|
219
|
+
if (!*this) {
|
220
|
+
throw std::runtime_error("ArrayList is not initialized");
|
221
|
+
}
|
222
|
+
return _obj.call_object_method(_method_set, static_cast<jint>(index), element.get());
|
223
|
+
}
|
224
|
+
|
225
|
+
template <template <typename> class RefType>
|
226
|
+
bool ArrayList<RefType>::isEmpty() const {
|
227
|
+
if (!*this) {
|
228
|
+
throw std::runtime_error("ArrayList is not initialized");
|
229
|
+
}
|
230
|
+
return _obj.call_boolean_method(_method_isEmpty);
|
231
|
+
}
|
232
|
+
|
233
|
+
template <template <typename> class RefType>
|
234
|
+
void ArrayList<RefType>::ensureCapacity(int minCapacity) {
|
235
|
+
if (!*this) {
|
236
|
+
throw std::runtime_error("ArrayList is not initialized");
|
237
|
+
}
|
238
|
+
_obj.call_void_method(_method_ensureCapacity, minCapacity);
|
239
|
+
}
|
240
|
+
|
241
|
+
template <template <typename> class RefType>
|
242
|
+
void ArrayList<RefType>::trimToSize() {
|
243
|
+
if (!*this) {
|
244
|
+
throw std::runtime_error("ArrayList is not initialized");
|
245
|
+
}
|
246
|
+
_obj.call_void_method(_method_trimToSize);
|
247
|
+
}
|
248
|
+
|
249
|
+
// Explicit template instantiations
|
250
|
+
template class ArrayList<SimpleJNI::LocalRef>;
|
251
|
+
template class ArrayList<SimpleJNI::GlobalRef>;
|
252
|
+
template class ArrayList<SimpleJNI::WeakRef>;
|
253
|
+
template class ArrayList<SimpleJNI::ReleasableLocalRef>;
|
254
|
+
|
255
|
+
template jobject ArrayList<SimpleJNI::ReleasableLocalRef>::release<SimpleJNI::ReleasableLocalRef>();
|
256
|
+
|
257
|
+
} // namespace Java::Util
|
@@ -0,0 +1,78 @@
|
|
1
|
+
#pragma once
|
2
|
+
|
3
|
+
#include <cstddef>
|
4
|
+
#include "Iterator.h"
|
5
|
+
#include "simplejni/Common.hpp"
|
6
|
+
#include "simplejni/Registry.hpp"
|
7
|
+
|
8
|
+
namespace Java::Util {
|
9
|
+
|
10
|
+
template <template <typename> class RefType>
|
11
|
+
class ArrayList {
|
12
|
+
public:
|
13
|
+
ArrayList();
|
14
|
+
explicit ArrayList(jobject obj);
|
15
|
+
ArrayList(int initialCapacity);
|
16
|
+
|
17
|
+
template <template <typename> class OtherRefType>
|
18
|
+
ArrayList(const SimpleJNI::Object<OtherRefType, jobject>& obj);
|
19
|
+
|
20
|
+
// Conversion methods
|
21
|
+
ArrayList<SimpleJNI::LocalRef> to_local() const;
|
22
|
+
ArrayList<SimpleJNI::GlobalRef> to_global() const;
|
23
|
+
|
24
|
+
// Get the underlying jobject
|
25
|
+
jobject get() const;
|
26
|
+
|
27
|
+
// Release the underlying jobject
|
28
|
+
template <template <typename> class R = RefType>
|
29
|
+
typename std::enable_if<std::is_same<R<jobject>, SimpleJNI::ReleasableLocalRef<jobject>>::value, jobject>::type
|
30
|
+
release();
|
31
|
+
|
32
|
+
// Check if the object is valid
|
33
|
+
explicit operator bool() const;
|
34
|
+
|
35
|
+
// Implicit conversion to SimpleJNI::Object
|
36
|
+
operator SimpleJNI::Object<RefType, jobject>() const;
|
37
|
+
|
38
|
+
// ArrayList methods
|
39
|
+
Iterator<SimpleJNI::LocalRef> iterator() const;
|
40
|
+
void add(const SimpleJNI::Object<RefType, jobject>& element);
|
41
|
+
void add(size_t index, const SimpleJNI::Object<RefType, jobject>& element);
|
42
|
+
bool remove(const SimpleJNI::Object<RefType, jobject>& element);
|
43
|
+
SimpleJNI::Object<SimpleJNI::LocalRef> remove(size_t index);
|
44
|
+
void clear();
|
45
|
+
size_t size() const;
|
46
|
+
SimpleJNI::Object<SimpleJNI::LocalRef> get(size_t index) const;
|
47
|
+
SimpleJNI::Object<SimpleJNI::LocalRef> set(size_t index, const SimpleJNI::Object<RefType, jobject>& element);
|
48
|
+
bool isEmpty() const;
|
49
|
+
void ensureCapacity(int minCapacity);
|
50
|
+
void trimToSize();
|
51
|
+
|
52
|
+
private:
|
53
|
+
// Underlying JNI object
|
54
|
+
SimpleJNI::Object<RefType, jobject> _obj;
|
55
|
+
|
56
|
+
// Static JNI resources
|
57
|
+
static SimpleJNI::GlobalRef<jclass> _cls;
|
58
|
+
static jmethodID _constructor;
|
59
|
+
static jmethodID _constructor_capacity;
|
60
|
+
static jmethodID _method_iterator;
|
61
|
+
static jmethodID _method_add;
|
62
|
+
static jmethodID _method_add_at_index;
|
63
|
+
static jmethodID _method_remove_object;
|
64
|
+
static jmethodID _method_remove_index;
|
65
|
+
static jmethodID _method_clear;
|
66
|
+
static jmethodID _method_size;
|
67
|
+
static jmethodID _method_get;
|
68
|
+
static jmethodID _method_set;
|
69
|
+
static jmethodID _method_isEmpty;
|
70
|
+
static jmethodID _method_ensureCapacity;
|
71
|
+
static jmethodID _method_trimToSize;
|
72
|
+
|
73
|
+
// JNI descriptor for auto-registration
|
74
|
+
static const SimpleJNI::JNIDescriptor descriptor;
|
75
|
+
static const SimpleJNI::AutoRegister<ArrayList> registrar;
|
76
|
+
};
|
77
|
+
|
78
|
+
} // namespace Java::Util
|
@@ -0,0 +1,96 @@
|
|
1
|
+
#include "HashMap.h"
|
2
|
+
|
3
|
+
namespace Java::Util {
|
4
|
+
|
5
|
+
template <template <typename> class RefType>
|
6
|
+
SimpleJNI::GlobalRef<jclass> HashMap<RefType>::_cls;
|
7
|
+
|
8
|
+
template <template <typename> class RefType>
|
9
|
+
jmethodID HashMap<RefType>::_method_init = nullptr;
|
10
|
+
|
11
|
+
template <template <typename> class RefType>
|
12
|
+
jmethodID HashMap<RefType>::_method_put = nullptr;
|
13
|
+
|
14
|
+
template <template <typename> class RefType>
|
15
|
+
const SimpleJNI::JNIDescriptor HashMap<RefType>::descriptor{
|
16
|
+
"java/util/HashMap", // Java class name
|
17
|
+
&_cls, // Where to store the jclass
|
18
|
+
{ // Methods to preload
|
19
|
+
{"<init>", "()V", &_method_init},
|
20
|
+
{"put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;", &_method_put}}};
|
21
|
+
|
22
|
+
template <template <typename> class RefType>
|
23
|
+
const SimpleJNI::AutoRegister<HashMap<RefType>> HashMap<RefType>::registrar{&descriptor};
|
24
|
+
|
25
|
+
template <template <typename> class RefType>
|
26
|
+
HashMap<RefType>::HashMap() : _obj() {
|
27
|
+
if (!_cls.get()) {
|
28
|
+
throw std::runtime_error("HashMap JNI resources not preloaded");
|
29
|
+
}
|
30
|
+
|
31
|
+
JNIEnv* env = SimpleJNI::VM::env();
|
32
|
+
jobject obj = env->NewObject(_cls.get(), _method_init);
|
33
|
+
_obj = SimpleJNI::Object<RefType, jobject>(obj, _cls.get());
|
34
|
+
}
|
35
|
+
|
36
|
+
template <template <typename> class RefType>
|
37
|
+
HashMap<RefType>::HashMap(jobject obj) : _obj(obj) {}
|
38
|
+
|
39
|
+
template <template <typename> class RefType>
|
40
|
+
template <template <typename> class OtherRefType>
|
41
|
+
HashMap<RefType>::HashMap(const SimpleJNI::Object<OtherRefType, jobject>& obj) : _obj(obj.get()) {}
|
42
|
+
|
43
|
+
template <template <typename> class RefType>
|
44
|
+
HashMap<SimpleJNI::LocalRef> HashMap<RefType>::to_local() const {
|
45
|
+
if (!*this) return HashMap<SimpleJNI::LocalRef>();
|
46
|
+
return HashMap<SimpleJNI::LocalRef>(_obj.get());
|
47
|
+
}
|
48
|
+
|
49
|
+
template <template <typename> class RefType>
|
50
|
+
HashMap<SimpleJNI::GlobalRef> HashMap<RefType>::to_global() const {
|
51
|
+
if (!*this) return HashMap<SimpleJNI::GlobalRef>();
|
52
|
+
return HashMap<SimpleJNI::GlobalRef>(_obj.get());
|
53
|
+
}
|
54
|
+
|
55
|
+
template <template <typename> class RefType>
|
56
|
+
jobject HashMap<RefType>::get() const {
|
57
|
+
return _obj.get();
|
58
|
+
}
|
59
|
+
|
60
|
+
template <template <typename> class RefType>
|
61
|
+
template <template <typename> class R>
|
62
|
+
typename std::enable_if<std::is_same<R<jobject>, SimpleJNI::ReleasableLocalRef<jobject>>::value, jobject>::type
|
63
|
+
HashMap<RefType>::release() {
|
64
|
+
return _obj.release();
|
65
|
+
}
|
66
|
+
|
67
|
+
template <template <typename> class RefType>
|
68
|
+
HashMap<RefType>::operator bool() const {
|
69
|
+
return _obj.get() != nullptr;
|
70
|
+
}
|
71
|
+
|
72
|
+
template <template <typename> class RefType>
|
73
|
+
template <template <typename> class KeyRefType, template <typename> class ValueRefType>
|
74
|
+
SimpleJNI::Object<SimpleJNI::LocalRef> HashMap<RefType>::put(const SimpleJNI::Object<KeyRefType, jobject>& key,
|
75
|
+
const SimpleJNI::Object<ValueRefType, jobject>& value) {
|
76
|
+
return _obj.call_object_method(_method_put, key.get(), value.get());
|
77
|
+
}
|
78
|
+
|
79
|
+
template <template <typename> class RefType>
|
80
|
+
HashMap<RefType>::operator SimpleJNI::Object<RefType, jobject>() const {
|
81
|
+
return _obj;
|
82
|
+
}
|
83
|
+
|
84
|
+
// Explicit template instantiations
|
85
|
+
template class HashMap<SimpleJNI::LocalRef>;
|
86
|
+
template class HashMap<SimpleJNI::GlobalRef>;
|
87
|
+
template class HashMap<SimpleJNI::WeakRef>;
|
88
|
+
template class HashMap<SimpleJNI::ReleasableLocalRef>;
|
89
|
+
|
90
|
+
template SimpleJNI::Object<SimpleJNI::LocalRef, jobject> HashMap<SimpleJNI::ReleasableLocalRef>::put<
|
91
|
+
SimpleJNI::LocalRef, SimpleJNI::LocalRef>(const SimpleJNI::Object<SimpleJNI::LocalRef, jobject>& key,
|
92
|
+
const SimpleJNI::Object<SimpleJNI::LocalRef, jobject>& value);
|
93
|
+
|
94
|
+
template jobject HashMap<SimpleJNI::ReleasableLocalRef>::release<SimpleJNI::ReleasableLocalRef>();
|
95
|
+
|
96
|
+
} // namespace Java::Util
|
@@ -0,0 +1,54 @@
|
|
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 HashMap {
|
10
|
+
public:
|
11
|
+
HashMap();
|
12
|
+
explicit HashMap(jobject obj);
|
13
|
+
|
14
|
+
template <template <typename> class OtherRefType>
|
15
|
+
HashMap(const SimpleJNI::Object<OtherRefType, jobject>& obj);
|
16
|
+
|
17
|
+
// Conversion methods
|
18
|
+
HashMap<SimpleJNI::LocalRef> to_local() const;
|
19
|
+
HashMap<SimpleJNI::GlobalRef> to_global() const;
|
20
|
+
|
21
|
+
// Get the underlying jobject
|
22
|
+
jobject get() const;
|
23
|
+
|
24
|
+
// Release the underlying jobject
|
25
|
+
template <template <typename> class R = RefType>
|
26
|
+
typename std::enable_if<std::is_same<R<jobject>, SimpleJNI::ReleasableLocalRef<jobject>>::value, jobject>::type
|
27
|
+
release();
|
28
|
+
|
29
|
+
// Check if the object is valid
|
30
|
+
explicit operator bool() const;
|
31
|
+
|
32
|
+
// Implicit conversion to SimpleJNI::Object
|
33
|
+
operator SimpleJNI::Object<RefType, jobject>() const;
|
34
|
+
|
35
|
+
// Put a key-value pair into the map
|
36
|
+
template <template <typename> class KeyRefType, template <typename> class ValueRefType>
|
37
|
+
SimpleJNI::Object<SimpleJNI::LocalRef> put(const SimpleJNI::Object<KeyRefType, jobject>& key,
|
38
|
+
const SimpleJNI::Object<ValueRefType, jobject>& value);
|
39
|
+
|
40
|
+
private:
|
41
|
+
// Underlying JNI object
|
42
|
+
SimpleJNI::Object<RefType, jobject> _obj;
|
43
|
+
|
44
|
+
// Static JNI resources
|
45
|
+
static SimpleJNI::GlobalRef<jclass> _cls;
|
46
|
+
static jmethodID _method_init;
|
47
|
+
static jmethodID _method_put;
|
48
|
+
|
49
|
+
// JNI descriptor for auto-registration
|
50
|
+
static const SimpleJNI::JNIDescriptor descriptor;
|
51
|
+
static const SimpleJNI::AutoRegister<HashMap> registrar;
|
52
|
+
};
|
53
|
+
|
54
|
+
} // namespace Java::Util
|