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,739 @@
|
|
1
|
+
#include <simpledbus/base/Holder.h>
|
2
|
+
#include <iomanip>
|
3
|
+
#include <sstream>
|
4
|
+
|
5
|
+
#include "dbus/dbus-protocol.h"
|
6
|
+
|
7
|
+
using namespace SimpleDBus;
|
8
|
+
|
9
|
+
Holder::Holder() {}
|
10
|
+
|
11
|
+
Holder::~Holder() {}
|
12
|
+
|
13
|
+
bool Holder::operator!=(const Holder& other) const { return !(*this == other); }
|
14
|
+
|
15
|
+
bool Holder::operator==(const Holder& other) const {
|
16
|
+
if (type() != other.type()) {
|
17
|
+
return false;
|
18
|
+
}
|
19
|
+
|
20
|
+
switch (type()) {
|
21
|
+
case NONE:
|
22
|
+
return true;
|
23
|
+
case BYTE:
|
24
|
+
return get_byte() == other.get_byte();
|
25
|
+
case BOOLEAN:
|
26
|
+
return get_boolean() == other.get_boolean();
|
27
|
+
case INT16:
|
28
|
+
return get_int16() == other.get_int16();
|
29
|
+
case UINT16:
|
30
|
+
return get_uint16() == other.get_uint16();
|
31
|
+
case INT32:
|
32
|
+
return get_int32() == other.get_int32();
|
33
|
+
case UINT32:
|
34
|
+
return get_uint32() == other.get_uint32();
|
35
|
+
case INT64:
|
36
|
+
return get_int64() == other.get_int64();
|
37
|
+
case UINT64:
|
38
|
+
return get_uint64() == other.get_uint64();
|
39
|
+
case DOUBLE:
|
40
|
+
return get_double() == other.get_double();
|
41
|
+
case STRING:
|
42
|
+
return get_string() == other.get_string();
|
43
|
+
case OBJ_PATH:
|
44
|
+
return get_object_path() == other.get_object_path();
|
45
|
+
case SIGNATURE:
|
46
|
+
return get_signature() == other.get_signature();
|
47
|
+
case ARRAY:
|
48
|
+
return get_array() == other.get_array();
|
49
|
+
case DICT:
|
50
|
+
return (get_dict_uint8() == other.get_dict_uint8()) && (get_dict_uint16() == other.get_dict_uint16()) &&
|
51
|
+
(get_dict_int16() == other.get_dict_int16()) && (get_dict_uint32() == other.get_dict_uint32()) &&
|
52
|
+
(get_dict_int32() == other.get_dict_int32()) && (get_dict_uint64() == other.get_dict_uint64()) &&
|
53
|
+
(get_dict_int64() == other.get_dict_int64()) && (get_dict_string() == other.get_dict_string()) &&
|
54
|
+
(get_dict_object_path() == other.get_dict_object_path()) &&
|
55
|
+
(get_dict_signature() == other.get_dict_signature());
|
56
|
+
default:
|
57
|
+
return false;
|
58
|
+
}
|
59
|
+
}
|
60
|
+
|
61
|
+
Holder::Type Holder::type() const { return _type; }
|
62
|
+
|
63
|
+
std::string Holder::_represent_simple() const {
|
64
|
+
std::ostringstream output;
|
65
|
+
output << std::boolalpha;
|
66
|
+
|
67
|
+
switch (_type) {
|
68
|
+
case BOOLEAN:
|
69
|
+
output << get_boolean();
|
70
|
+
break;
|
71
|
+
case BYTE:
|
72
|
+
output << (int)get_byte();
|
73
|
+
break;
|
74
|
+
case INT16:
|
75
|
+
output << (int)get_int16();
|
76
|
+
break;
|
77
|
+
case UINT16:
|
78
|
+
output << (int)get_uint16();
|
79
|
+
break;
|
80
|
+
case INT32:
|
81
|
+
output << get_int32();
|
82
|
+
break;
|
83
|
+
case UINT32:
|
84
|
+
output << get_uint32();
|
85
|
+
break;
|
86
|
+
case INT64:
|
87
|
+
output << get_int64();
|
88
|
+
break;
|
89
|
+
case UINT64:
|
90
|
+
output << get_uint64();
|
91
|
+
break;
|
92
|
+
case DOUBLE:
|
93
|
+
output << get_double();
|
94
|
+
break;
|
95
|
+
case STRING:
|
96
|
+
case OBJ_PATH:
|
97
|
+
case SIGNATURE:
|
98
|
+
output << get_string();
|
99
|
+
break;
|
100
|
+
}
|
101
|
+
return output.str();
|
102
|
+
}
|
103
|
+
|
104
|
+
std::vector<std::string> Holder::_represent_container() const {
|
105
|
+
std::vector<std::string> output_lines;
|
106
|
+
switch (_type) {
|
107
|
+
case BOOLEAN:
|
108
|
+
case BYTE:
|
109
|
+
case INT16:
|
110
|
+
case UINT16:
|
111
|
+
case INT32:
|
112
|
+
case UINT32:
|
113
|
+
case INT64:
|
114
|
+
case UINT64:
|
115
|
+
case DOUBLE:
|
116
|
+
case STRING:
|
117
|
+
case OBJ_PATH:
|
118
|
+
case SIGNATURE:
|
119
|
+
output_lines.push_back(_represent_simple());
|
120
|
+
break;
|
121
|
+
case ARRAY: {
|
122
|
+
output_lines.push_back("Array:");
|
123
|
+
std::vector<std::string> additional_lines;
|
124
|
+
if (holder_array.size() > 0 && holder_array[0]._type == BYTE) {
|
125
|
+
// Dealing with an array of bytes, use custom print functionality.
|
126
|
+
std::string temp_line = "";
|
127
|
+
for (int i = 0; i < holder_array.size(); i++) {
|
128
|
+
// Represent each byte as a hex string
|
129
|
+
std::stringstream stream;
|
130
|
+
stream << std::setfill('0') << std::setw(2) << std::hex << ((int)holder_array[i].get_byte());
|
131
|
+
temp_line += (stream.str() + " ");
|
132
|
+
if ((i + 1) % 32 == 0) {
|
133
|
+
additional_lines.push_back(temp_line);
|
134
|
+
temp_line = "";
|
135
|
+
}
|
136
|
+
}
|
137
|
+
additional_lines.push_back(temp_line);
|
138
|
+
} else {
|
139
|
+
for (int i = 0; i < holder_array.size(); i++) {
|
140
|
+
for (auto& line : holder_array[i]._represent_container()) {
|
141
|
+
additional_lines.push_back(line);
|
142
|
+
}
|
143
|
+
}
|
144
|
+
}
|
145
|
+
for (auto& line : additional_lines) {
|
146
|
+
output_lines.push_back(" " + line);
|
147
|
+
}
|
148
|
+
break;
|
149
|
+
}
|
150
|
+
case DICT:
|
151
|
+
output_lines.push_back("Dictionary:");
|
152
|
+
for (auto& [key_type_internal, key, value] : holder_dict) {
|
153
|
+
output_lines.push_back(_represent_type(key_type_internal, key) + ":");
|
154
|
+
auto additional_lines = value._represent_container();
|
155
|
+
for (auto& line : additional_lines) {
|
156
|
+
output_lines.push_back(" " + line);
|
157
|
+
}
|
158
|
+
}
|
159
|
+
break;
|
160
|
+
}
|
161
|
+
return output_lines;
|
162
|
+
}
|
163
|
+
|
164
|
+
std::string Holder::represent() const {
|
165
|
+
std::ostringstream output;
|
166
|
+
auto output_lines = _represent_container();
|
167
|
+
for (auto& output_line : output_lines) {
|
168
|
+
output << output_line << std::endl;
|
169
|
+
}
|
170
|
+
return output.str();
|
171
|
+
}
|
172
|
+
|
173
|
+
std::string Holder::_signature_simple() const {
|
174
|
+
switch (_type) {
|
175
|
+
case BOOLEAN:
|
176
|
+
return DBUS_TYPE_BOOLEAN_AS_STRING;
|
177
|
+
case BYTE:
|
178
|
+
return DBUS_TYPE_BYTE_AS_STRING;
|
179
|
+
case INT16:
|
180
|
+
return DBUS_TYPE_INT16_AS_STRING;
|
181
|
+
case UINT16:
|
182
|
+
return DBUS_TYPE_UINT16_AS_STRING;
|
183
|
+
case INT32:
|
184
|
+
return DBUS_TYPE_INT32_AS_STRING;
|
185
|
+
case UINT32:
|
186
|
+
return DBUS_TYPE_UINT32_AS_STRING;
|
187
|
+
case INT64:
|
188
|
+
return DBUS_TYPE_INT64_AS_STRING;
|
189
|
+
case UINT64:
|
190
|
+
return DBUS_TYPE_UINT64_AS_STRING;
|
191
|
+
case DOUBLE:
|
192
|
+
return DBUS_TYPE_DOUBLE_AS_STRING;
|
193
|
+
case STRING:
|
194
|
+
return DBUS_TYPE_STRING_AS_STRING;
|
195
|
+
case OBJ_PATH:
|
196
|
+
return DBUS_TYPE_OBJECT_PATH_AS_STRING;
|
197
|
+
case SIGNATURE:
|
198
|
+
return DBUS_TYPE_SIGNATURE_AS_STRING;
|
199
|
+
}
|
200
|
+
return "";
|
201
|
+
}
|
202
|
+
|
203
|
+
std::string Holder::_signature_type(Type type) noexcept {
|
204
|
+
switch (type) {
|
205
|
+
case BOOLEAN:
|
206
|
+
return DBUS_TYPE_BOOLEAN_AS_STRING;
|
207
|
+
case BYTE:
|
208
|
+
return DBUS_TYPE_BYTE_AS_STRING;
|
209
|
+
case INT16:
|
210
|
+
return DBUS_TYPE_INT16_AS_STRING;
|
211
|
+
case UINT16:
|
212
|
+
return DBUS_TYPE_UINT16_AS_STRING;
|
213
|
+
case INT32:
|
214
|
+
return DBUS_TYPE_INT32_AS_STRING;
|
215
|
+
case UINT32:
|
216
|
+
return DBUS_TYPE_UINT32_AS_STRING;
|
217
|
+
case INT64:
|
218
|
+
return DBUS_TYPE_INT64_AS_STRING;
|
219
|
+
case UINT64:
|
220
|
+
return DBUS_TYPE_UINT64_AS_STRING;
|
221
|
+
case DOUBLE:
|
222
|
+
return DBUS_TYPE_DOUBLE_AS_STRING;
|
223
|
+
case STRING:
|
224
|
+
return DBUS_TYPE_STRING_AS_STRING;
|
225
|
+
case OBJ_PATH:
|
226
|
+
return DBUS_TYPE_OBJECT_PATH_AS_STRING;
|
227
|
+
case SIGNATURE:
|
228
|
+
return DBUS_TYPE_SIGNATURE_AS_STRING;
|
229
|
+
}
|
230
|
+
return "";
|
231
|
+
}
|
232
|
+
|
233
|
+
std::string Holder::_represent_type(Type type, std::any value) noexcept {
|
234
|
+
std::ostringstream output;
|
235
|
+
output << std::boolalpha;
|
236
|
+
|
237
|
+
switch (type) {
|
238
|
+
case BOOLEAN:
|
239
|
+
output << std::any_cast<bool>(value);
|
240
|
+
break;
|
241
|
+
case BYTE:
|
242
|
+
output << std::any_cast<uint8_t>(value);
|
243
|
+
break;
|
244
|
+
case INT16:
|
245
|
+
output << std::any_cast<int16_t>(value);
|
246
|
+
break;
|
247
|
+
case UINT16:
|
248
|
+
output << std::any_cast<uint16_t>(value);
|
249
|
+
break;
|
250
|
+
case INT32:
|
251
|
+
output << std::any_cast<int32_t>(value);
|
252
|
+
break;
|
253
|
+
case UINT32:
|
254
|
+
output << std::any_cast<uint32_t>(value);
|
255
|
+
break;
|
256
|
+
case INT64:
|
257
|
+
output << std::any_cast<int64_t>(value);
|
258
|
+
break;
|
259
|
+
case UINT64:
|
260
|
+
output << std::any_cast<uint64_t>(value);
|
261
|
+
break;
|
262
|
+
case DOUBLE:
|
263
|
+
output << std::any_cast<double>(value);
|
264
|
+
break;
|
265
|
+
case STRING:
|
266
|
+
case OBJ_PATH:
|
267
|
+
case SIGNATURE:
|
268
|
+
output << std::any_cast<std::string>(value);
|
269
|
+
break;
|
270
|
+
}
|
271
|
+
return output.str();
|
272
|
+
}
|
273
|
+
|
274
|
+
void Holder::signature_override(const std::string& signature) {
|
275
|
+
// TODO: Check that the signature is valid for the Holder type and contents.
|
276
|
+
_signature = signature;
|
277
|
+
}
|
278
|
+
|
279
|
+
std::string Holder::signature() const {
|
280
|
+
if (_signature) {
|
281
|
+
return *_signature;
|
282
|
+
}
|
283
|
+
|
284
|
+
std::string output;
|
285
|
+
switch (_type) {
|
286
|
+
case BOOLEAN:
|
287
|
+
case BYTE:
|
288
|
+
case INT16:
|
289
|
+
case UINT16:
|
290
|
+
case INT32:
|
291
|
+
case UINT32:
|
292
|
+
case INT64:
|
293
|
+
case UINT64:
|
294
|
+
case DOUBLE:
|
295
|
+
case STRING:
|
296
|
+
case OBJ_PATH:
|
297
|
+
case SIGNATURE:
|
298
|
+
output = _signature_simple();
|
299
|
+
break;
|
300
|
+
case ARRAY:
|
301
|
+
output = DBUS_TYPE_ARRAY_AS_STRING;
|
302
|
+
if (holder_array.size() == 0) {
|
303
|
+
output += DBUS_TYPE_VARIANT_AS_STRING;
|
304
|
+
} else {
|
305
|
+
// Check if all elements of holder_array are the same type
|
306
|
+
auto first_type = holder_array[0]._type;
|
307
|
+
bool all_same_type = true;
|
308
|
+
for (auto& element : holder_array) {
|
309
|
+
if (element._type != first_type) {
|
310
|
+
all_same_type = false;
|
311
|
+
break;
|
312
|
+
}
|
313
|
+
}
|
314
|
+
|
315
|
+
if (all_same_type) {
|
316
|
+
output += holder_array[0]._signature_simple();
|
317
|
+
} else {
|
318
|
+
output += DBUS_TYPE_VARIANT_AS_STRING;
|
319
|
+
}
|
320
|
+
}
|
321
|
+
break;
|
322
|
+
case DICT:
|
323
|
+
output = DBUS_TYPE_ARRAY_AS_STRING;
|
324
|
+
output += DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING;
|
325
|
+
|
326
|
+
if (holder_dict.size() == 0) {
|
327
|
+
output += DBUS_TYPE_STRING_AS_STRING;
|
328
|
+
output += DBUS_TYPE_VARIANT_AS_STRING;
|
329
|
+
} else {
|
330
|
+
// Check if all keys of holder_dict are the same type
|
331
|
+
auto first_key_type = std::get<0>(holder_dict[0]);
|
332
|
+
bool all_same_key_type = true;
|
333
|
+
for (auto& [key_type_internal, key, value] : holder_dict) {
|
334
|
+
if (key_type_internal != first_key_type) {
|
335
|
+
all_same_key_type = false;
|
336
|
+
break;
|
337
|
+
}
|
338
|
+
}
|
339
|
+
if (all_same_key_type) {
|
340
|
+
output += _signature_type(first_key_type);
|
341
|
+
} else {
|
342
|
+
output += DBUS_TYPE_VARIANT_AS_STRING;
|
343
|
+
}
|
344
|
+
|
345
|
+
// Check if all values of holder_dict are the same type
|
346
|
+
auto first_value_type = std::get<2>(holder_dict[0])._type;
|
347
|
+
bool all_same_value_type = true;
|
348
|
+
for (auto& [key_type_internal, key, value] : holder_dict) {
|
349
|
+
if (value._type != first_value_type) {
|
350
|
+
all_same_value_type = false;
|
351
|
+
break;
|
352
|
+
}
|
353
|
+
}
|
354
|
+
|
355
|
+
if (all_same_value_type && first_value_type != ARRAY && first_value_type != DICT) {
|
356
|
+
output += std::get<2>(holder_dict[0])._signature_simple();
|
357
|
+
} else {
|
358
|
+
output += DBUS_TYPE_VARIANT_AS_STRING;
|
359
|
+
}
|
360
|
+
}
|
361
|
+
|
362
|
+
output += DBUS_DICT_ENTRY_END_CHAR_AS_STRING;
|
363
|
+
break;
|
364
|
+
}
|
365
|
+
return output;
|
366
|
+
}
|
367
|
+
|
368
|
+
Holder Holder::create_byte(uint8_t value) {
|
369
|
+
Holder h;
|
370
|
+
h._type = BYTE;
|
371
|
+
h.holder_integer = value;
|
372
|
+
return h;
|
373
|
+
}
|
374
|
+
Holder Holder::create_boolean(bool value) {
|
375
|
+
Holder h;
|
376
|
+
h._type = BOOLEAN;
|
377
|
+
h.holder_boolean = value;
|
378
|
+
return h;
|
379
|
+
}
|
380
|
+
Holder Holder::create_int16(int16_t value) {
|
381
|
+
Holder h;
|
382
|
+
h._type = INT16;
|
383
|
+
h.holder_integer = value;
|
384
|
+
return h;
|
385
|
+
}
|
386
|
+
Holder Holder::create_uint16(uint16_t value) {
|
387
|
+
Holder h;
|
388
|
+
h._type = UINT16;
|
389
|
+
h.holder_integer = value;
|
390
|
+
return h;
|
391
|
+
}
|
392
|
+
Holder Holder::create_int32(int32_t value) {
|
393
|
+
Holder h;
|
394
|
+
h._type = INT32;
|
395
|
+
h.holder_integer = value;
|
396
|
+
return h;
|
397
|
+
}
|
398
|
+
Holder Holder::create_uint32(uint32_t value) {
|
399
|
+
Holder h;
|
400
|
+
h._type = UINT32;
|
401
|
+
h.holder_integer = value;
|
402
|
+
return h;
|
403
|
+
}
|
404
|
+
Holder Holder::create_int64(int64_t value) {
|
405
|
+
Holder h;
|
406
|
+
h._type = INT64;
|
407
|
+
h.holder_integer = value;
|
408
|
+
return h;
|
409
|
+
}
|
410
|
+
Holder Holder::create_uint64(uint64_t value) {
|
411
|
+
Holder h;
|
412
|
+
h._type = UINT64;
|
413
|
+
h.holder_integer = value;
|
414
|
+
return h;
|
415
|
+
}
|
416
|
+
Holder Holder::create_double(double value) {
|
417
|
+
Holder h;
|
418
|
+
h._type = DOUBLE;
|
419
|
+
h.holder_double = value;
|
420
|
+
return h;
|
421
|
+
}
|
422
|
+
Holder Holder::create_string(const std::string& str) {
|
423
|
+
Holder h;
|
424
|
+
h._type = STRING;
|
425
|
+
h.holder_string = str;
|
426
|
+
return h;
|
427
|
+
}
|
428
|
+
Holder Holder::create_object_path(const ObjectPath& path) {
|
429
|
+
Holder h;
|
430
|
+
h._type = OBJ_PATH;
|
431
|
+
h.holder_string = path;
|
432
|
+
return h;
|
433
|
+
}
|
434
|
+
Holder Holder::create_signature(const Signature& signature) {
|
435
|
+
Holder h;
|
436
|
+
h._type = SIGNATURE;
|
437
|
+
h.holder_string = signature;
|
438
|
+
return h;
|
439
|
+
}
|
440
|
+
Holder Holder::create_array() {
|
441
|
+
Holder h;
|
442
|
+
h._type = ARRAY;
|
443
|
+
h.holder_array.clear();
|
444
|
+
return h;
|
445
|
+
}
|
446
|
+
Holder Holder::create_dict() {
|
447
|
+
Holder h;
|
448
|
+
h._type = DICT;
|
449
|
+
h.holder_dict.clear();
|
450
|
+
return h;
|
451
|
+
}
|
452
|
+
|
453
|
+
template <>
|
454
|
+
Holder Holder::create(bool value) {
|
455
|
+
return create_boolean(value);
|
456
|
+
}
|
457
|
+
|
458
|
+
template <>
|
459
|
+
Holder Holder::create(uint8_t value) {
|
460
|
+
return create_byte(value);
|
461
|
+
}
|
462
|
+
|
463
|
+
template <>
|
464
|
+
Holder Holder::create(int16_t value) {
|
465
|
+
return create_int16(value);
|
466
|
+
}
|
467
|
+
|
468
|
+
template <>
|
469
|
+
Holder Holder::create(uint16_t value) {
|
470
|
+
return create_uint16(value);
|
471
|
+
}
|
472
|
+
|
473
|
+
template <>
|
474
|
+
Holder Holder::create(int32_t value) {
|
475
|
+
return create_int32(value);
|
476
|
+
}
|
477
|
+
|
478
|
+
template <>
|
479
|
+
Holder Holder::create(uint32_t value) {
|
480
|
+
return create_uint32(value);
|
481
|
+
}
|
482
|
+
|
483
|
+
template <>
|
484
|
+
Holder Holder::create(int64_t value) {
|
485
|
+
return create_int64(value);
|
486
|
+
}
|
487
|
+
|
488
|
+
template <>
|
489
|
+
Holder Holder::create(uint64_t value) {
|
490
|
+
return create_uint64(value);
|
491
|
+
}
|
492
|
+
|
493
|
+
template <>
|
494
|
+
Holder Holder::create(double value) {
|
495
|
+
return create_double(value);
|
496
|
+
}
|
497
|
+
|
498
|
+
template <>
|
499
|
+
Holder Holder::create(const std::string& value) {
|
500
|
+
return create_string(value);
|
501
|
+
}
|
502
|
+
|
503
|
+
template <>
|
504
|
+
Holder Holder::create(const ObjectPath& value) {
|
505
|
+
return create_object_path(value);
|
506
|
+
}
|
507
|
+
|
508
|
+
template <>
|
509
|
+
Holder Holder::create(const Signature& value) {
|
510
|
+
return create_signature(value);
|
511
|
+
}
|
512
|
+
|
513
|
+
template <>
|
514
|
+
Holder Holder::create<std::vector<Holder>>() {
|
515
|
+
return create_array();
|
516
|
+
}
|
517
|
+
|
518
|
+
template <>
|
519
|
+
Holder Holder::create<std::map<std::string, Holder>>() {
|
520
|
+
return create_dict();
|
521
|
+
}
|
522
|
+
|
523
|
+
std::any Holder::get_contents() const {
|
524
|
+
// Only return the contents for simple types
|
525
|
+
switch (_type) {
|
526
|
+
case BOOLEAN:
|
527
|
+
return get_boolean();
|
528
|
+
case BYTE:
|
529
|
+
return get_byte();
|
530
|
+
case INT16:
|
531
|
+
return get_int16();
|
532
|
+
case UINT16:
|
533
|
+
return get_uint16();
|
534
|
+
case INT32:
|
535
|
+
return get_int32();
|
536
|
+
case UINT32:
|
537
|
+
return get_uint32();
|
538
|
+
case INT64:
|
539
|
+
return get_int64();
|
540
|
+
case UINT64:
|
541
|
+
return get_uint64();
|
542
|
+
case DOUBLE:
|
543
|
+
return get_double();
|
544
|
+
case STRING:
|
545
|
+
return get_string();
|
546
|
+
case OBJ_PATH:
|
547
|
+
return get_object_path();
|
548
|
+
case SIGNATURE:
|
549
|
+
return get_signature();
|
550
|
+
default:
|
551
|
+
return std::any();
|
552
|
+
}
|
553
|
+
}
|
554
|
+
|
555
|
+
bool Holder::get_boolean() const { return holder_boolean; }
|
556
|
+
|
557
|
+
uint8_t Holder::get_byte() const { return (uint8_t)(holder_integer & 0x00000000000000FFL); }
|
558
|
+
|
559
|
+
int16_t Holder::get_int16() const { return (int16_t)(holder_integer & 0x000000000000FFFFL); }
|
560
|
+
|
561
|
+
uint16_t Holder::get_uint16() const { return (uint16_t)(holder_integer & 0x000000000000FFFFL); }
|
562
|
+
|
563
|
+
int32_t Holder::get_int32() const { return (int32_t)(holder_integer & 0x00000000FFFFFFFFL); }
|
564
|
+
|
565
|
+
uint32_t Holder::get_uint32() const { return (uint32_t)(holder_integer & 0x00000000FFFFFFFFL); }
|
566
|
+
|
567
|
+
int64_t Holder::get_int64() const { return (int64_t)holder_integer; }
|
568
|
+
|
569
|
+
uint64_t Holder::get_uint64() const { return holder_integer; }
|
570
|
+
|
571
|
+
double Holder::get_double() const { return holder_double; }
|
572
|
+
|
573
|
+
std::string Holder::get_string() const { return holder_string; }
|
574
|
+
|
575
|
+
std::string Holder::get_object_path() const { return holder_string; }
|
576
|
+
|
577
|
+
std::string Holder::get_signature() const { return holder_string; }
|
578
|
+
|
579
|
+
std::vector<Holder> Holder::get_array() const { return holder_array; }
|
580
|
+
|
581
|
+
std::map<uint8_t, Holder> Holder::get_dict_uint8() const { return _get_dict<uint8_t>(BYTE); }
|
582
|
+
|
583
|
+
std::map<uint16_t, Holder> Holder::get_dict_uint16() const { return _get_dict<uint16_t>(UINT16); }
|
584
|
+
|
585
|
+
std::map<uint32_t, Holder> Holder::get_dict_uint32() const { return _get_dict<uint32_t>(UINT32); }
|
586
|
+
|
587
|
+
std::map<uint64_t, Holder> Holder::get_dict_uint64() const { return _get_dict<uint64_t>(UINT64); }
|
588
|
+
|
589
|
+
std::map<int16_t, Holder> Holder::get_dict_int16() const { return _get_dict<int16_t>(INT16); }
|
590
|
+
|
591
|
+
std::map<int32_t, Holder> Holder::get_dict_int32() const { return _get_dict<int32_t>(INT32); }
|
592
|
+
|
593
|
+
std::map<int64_t, Holder> Holder::get_dict_int64() const { return _get_dict<int64_t>(INT64); }
|
594
|
+
|
595
|
+
std::map<std::string, Holder> Holder::get_dict_string() const { return _get_dict<std::string>(STRING); }
|
596
|
+
|
597
|
+
std::map<std::string, Holder> Holder::get_dict_object_path() const { return _get_dict<std::string>(OBJ_PATH); }
|
598
|
+
|
599
|
+
std::map<std::string, Holder> Holder::get_dict_signature() const { return _get_dict<std::string>(SIGNATURE); }
|
600
|
+
|
601
|
+
template <>
|
602
|
+
bool Holder::get() const {
|
603
|
+
return get_boolean();
|
604
|
+
}
|
605
|
+
|
606
|
+
template <>
|
607
|
+
uint8_t Holder::get() const {
|
608
|
+
return get_byte();
|
609
|
+
}
|
610
|
+
|
611
|
+
template <>
|
612
|
+
int16_t Holder::get() const {
|
613
|
+
return get_int16();
|
614
|
+
}
|
615
|
+
|
616
|
+
template <>
|
617
|
+
uint16_t Holder::get() const {
|
618
|
+
return get_uint16();
|
619
|
+
}
|
620
|
+
|
621
|
+
template <>
|
622
|
+
int32_t Holder::get() const {
|
623
|
+
return get_int32();
|
624
|
+
}
|
625
|
+
|
626
|
+
template <>
|
627
|
+
uint32_t Holder::get() const {
|
628
|
+
return get_uint32();
|
629
|
+
}
|
630
|
+
|
631
|
+
template <>
|
632
|
+
int64_t Holder::get() const {
|
633
|
+
return get_int64();
|
634
|
+
}
|
635
|
+
|
636
|
+
template <>
|
637
|
+
uint64_t Holder::get() const {
|
638
|
+
return get_uint64();
|
639
|
+
}
|
640
|
+
|
641
|
+
template <>
|
642
|
+
double Holder::get() const {
|
643
|
+
return get_double();
|
644
|
+
}
|
645
|
+
|
646
|
+
template <>
|
647
|
+
std::string Holder::get() const {
|
648
|
+
return get_string();
|
649
|
+
}
|
650
|
+
|
651
|
+
template <>
|
652
|
+
std::vector<Holder> Holder::get() const {
|
653
|
+
return get_array();
|
654
|
+
}
|
655
|
+
|
656
|
+
template <>
|
657
|
+
std::map<uint8_t, Holder> Holder::get() const {
|
658
|
+
return get_dict_uint8();
|
659
|
+
}
|
660
|
+
|
661
|
+
template <>
|
662
|
+
std::map<uint16_t, Holder> Holder::get() const {
|
663
|
+
return get_dict_uint16();
|
664
|
+
}
|
665
|
+
|
666
|
+
template <>
|
667
|
+
std::map<uint32_t, Holder> Holder::get() const {
|
668
|
+
return get_dict_uint32();
|
669
|
+
}
|
670
|
+
|
671
|
+
template <>
|
672
|
+
std::map<uint64_t, Holder> Holder::get() const {
|
673
|
+
return get_dict_uint64();
|
674
|
+
}
|
675
|
+
|
676
|
+
template <>
|
677
|
+
std::map<int16_t, Holder> Holder::get() const {
|
678
|
+
return get_dict_int16();
|
679
|
+
}
|
680
|
+
|
681
|
+
template <>
|
682
|
+
std::map<int32_t, Holder> Holder::get() const {
|
683
|
+
return get_dict_int32();
|
684
|
+
}
|
685
|
+
|
686
|
+
template <>
|
687
|
+
std::map<int64_t, Holder> Holder::get() const {
|
688
|
+
return get_dict_int64();
|
689
|
+
}
|
690
|
+
|
691
|
+
template <>
|
692
|
+
std::map<std::string, Holder> Holder::get() const {
|
693
|
+
return get_dict_string();
|
694
|
+
}
|
695
|
+
|
696
|
+
template <>
|
697
|
+
std::map<ObjectPath, Holder> Holder::get() const {
|
698
|
+
std::map<ObjectPath, Holder> output;
|
699
|
+
for (auto& [key_type_internal, key, value] : holder_dict) {
|
700
|
+
if (key_type_internal == OBJ_PATH) {
|
701
|
+
output[ObjectPath(std::any_cast<std::string>(key))] = value;
|
702
|
+
}
|
703
|
+
}
|
704
|
+
return output;
|
705
|
+
}
|
706
|
+
|
707
|
+
template <>
|
708
|
+
std::map<Signature, Holder> Holder::get() const {
|
709
|
+
std::map<Signature, Holder> output;
|
710
|
+
for (auto& [key_type_internal, key, value] : holder_dict) {
|
711
|
+
if (key_type_internal == SIGNATURE) {
|
712
|
+
output[Signature(std::any_cast<std::string>(key))] = value;
|
713
|
+
}
|
714
|
+
}
|
715
|
+
return output;
|
716
|
+
}
|
717
|
+
|
718
|
+
void Holder::array_append(Holder holder) { holder_array.push_back(holder); }
|
719
|
+
|
720
|
+
void Holder::dict_append(Type key_type, std::any key, Holder value) {
|
721
|
+
if (key.type() == typeid(const char*)) {
|
722
|
+
key = std::string(std::any_cast<const char*>(key));
|
723
|
+
}
|
724
|
+
|
725
|
+
// TODO : VALIDATE THAT THE SPECIFIED KEY TYPE IS CORRECT
|
726
|
+
|
727
|
+
holder_dict.push_back(std::make_tuple(key_type, key, value));
|
728
|
+
}
|
729
|
+
|
730
|
+
template <typename T>
|
731
|
+
std::map<T, Holder> Holder::_get_dict(Type key_type) const {
|
732
|
+
std::map<T, Holder> output;
|
733
|
+
for (auto& [key_type_internal, key, value] : holder_dict) {
|
734
|
+
if (key_type_internal == key_type) {
|
735
|
+
output[std::any_cast<T>(key)] = value;
|
736
|
+
}
|
737
|
+
}
|
738
|
+
return output;
|
739
|
+
}
|