@autorunify/capacitor-nrfmesh 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.
- package/Android-nRF-Mesh-Library/.github/ISSUE_TEMPLATE/bug_report.md +28 -0
- package/Android-nRF-Mesh-Library/.github/ISSUE_TEMPLATE/feature_request.md +17 -0
- package/Android-nRF-Mesh-Library/.github/workflows/deploy-all.yml +79 -0
- package/Android-nRF-Mesh-Library/.github/workflows/deploy-to-nexus.yml +29 -0
- package/Android-nRF-Mesh-Library/.github/workflows/deploy-to-play-store.yml +28 -0
- package/Android-nRF-Mesh-Library/.github/workflows/generate-readme.yml +22 -0
- package/Android-nRF-Mesh-Library/ExampleFirmwares/Dimming/light_switch_dimming_client_nrf52832_xxAA_s132_6.1.1_merged.hex +15907 -0
- package/Android-nRF-Mesh-Library/ExampleFirmwares/Dimming/light_switch_dimming_client_nrf52840_xxAA_s140_6.1.1_merged.hex +16091 -0
- package/Android-nRF-Mesh-Library/ExampleFirmwares/Dimming/light_switch_dimming_server_nrf52832_xxAA_s132_6.1.1_merged.hex +16187 -0
- package/Android-nRF-Mesh-Library/ExampleFirmwares/Dimming/light_switch_dimming_server_nrf52840_xxAA_s140_6.1.1_merged.hex +16380 -0
- package/Android-nRF-Mesh-Library/ExampleFirmwares/Light/light_switch_client_nrf52832_xxAA_s132_6.1.1_merged.hex +15852 -0
- package/Android-nRF-Mesh-Library/ExampleFirmwares/Light/light_switch_client_nrf52840_xxAA_s140_6.1.1_merged.hex +16036 -0
- package/Android-nRF-Mesh-Library/ExampleFirmwares/Light/light_switch_server_nrf52832_xxAA_s132_6.1.1_merged.hex +16459 -0
- package/Android-nRF-Mesh-Library/ExampleFirmwares/Light/light_switch_server_nrf52840_xxAA_s140_6.1.1_merged.hex +16643 -0
- package/Android-nRF-Mesh-Library/ExampleFirmwares/Simple OnOff/simple_onoff_client_nrf52832_xxAA_s132_6.1.1_merged.hex +17165 -0
- package/Android-nRF-Mesh-Library/ExampleFirmwares/Simple OnOff/simple_onoff_server_nrf52832_xxAA_s132_6.1.1_merged.hex +17837 -0
- package/Android-nRF-Mesh-Library/Gemfile +3 -0
- package/Android-nRF-Mesh-Library/LICENSE +27 -0
- package/Android-nRF-Mesh-Library/README.md +182 -0
- package/Android-nRF-Mesh-Library/app/build.gradle +99 -0
- package/Android-nRF-Mesh-Library/app/proguard-rules.pro +21 -0
- package/Android-nRF-Mesh-Library/app/src/main/AndroidManifest.xml +242 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/DialogFragmentOobPublicKey.java +108 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/GroupCallbacks.java +94 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/GroupControlsActivity.java +359 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/GroupsFragment.java +201 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/MainActivity.java +173 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/NetworkFragment.java +216 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/ProvisioningActivity.java +519 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/ProxyFilterFragment.java +279 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/SettingsFragment.java +248 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/adapter/AddressTypeAdapter.java +94 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/adapter/AuthenticationOOBMethodsAdapter.java +103 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/adapter/ExtendedBluetoothDevice.java +140 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/adapter/FilterAddressAdapter.java +115 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/adapter/FilterAddressAdapter1.java +98 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/adapter/GroupAdapter.java +125 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/adapter/GroupAdapterSpinner.java +103 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/adapter/GroupAddressAdapter.java +129 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/adapter/GroupAddressDiffCallback.java +17 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/adapter/GroupDiffCallback.java +18 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/adapter/GroupItemUIState.java +48 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/adapter/GroupItemUiStateDiffCallback.java +17 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/adapter/GroupModelAdapter.java +162 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/adapter/ProvisioningProgressAdapter.java +87 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/adapter/SubGroupAdapter.java +222 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/ble/BleMeshManager.java +234 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/ble/BleMeshManagerCallbacks.java +46 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/ble/LoggableBleManager.java +48 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/ble/ReconnectActivity.java +109 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/ble/ScannerActivity.java +281 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/ble/adapter/DevicesAdapter.java +119 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/di/BleMeshManagerModule.java +46 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/di/MeshApplication.java +37 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/dialog/DialogFragmenPermissionDenied.java +62 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/dialog/DialogFragmentAuthenticationInput.java +263 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/dialog/DialogFragmentConfigStatus.java +57 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/dialog/DialogFragmentConfigurationComplete.java +62 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/dialog/DialogFragmentCreateGroup.java +246 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/dialog/DialogFragmentDeleteNode.java +83 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/dialog/DialogFragmentDisconnected.java +61 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/dialog/DialogFragmentError.java +57 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/dialog/DialogFragmentFilterAddAddress.java +172 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/dialog/DialogFragmentGroupSubscription.java +349 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/dialog/DialogFragmentMeshExportMsg.java +62 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/dialog/DialogFragmentMeshImport.java +67 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/dialog/DialogFragmentMeshImportMsg.java +63 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/dialog/DialogFragmentMessage.java +61 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/dialog/DialogFragmentNetworkName.java +133 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/dialog/DialogFragmentPermissionRationale.java +79 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/dialog/DialogFragmentProvisioningFailedError.java +56 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/dialog/DialogFragmentProxySet.java +73 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/dialog/DialogFragmentResetNetwork.java +65 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/dialog/DialogFragmentSelectOOBType.java +217 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/dialog/DialogFragmentTransactionStatus.java +57 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/dialog/DialogFragmentUnicastAddress.java +174 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/dialog/NetKeyListener.java +11 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/export/ExportNetworkActivity.java +227 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/export/adapters/SelectableNetworkKeyAdapter.java +117 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/export/adapters/SelectableProvisionerAdapter.java +133 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/keys/AddAppKeyActivity.java +156 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/keys/AddAppKeysActivity.java +112 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/keys/AddKeysActivity.java +187 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/keys/AddNetKeyActivity.java +136 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/keys/AddNetKeysActivity.java +86 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/keys/AppKeysActivity.java +229 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/keys/EditAppKeyActivity.java +145 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/keys/EditNetKeyActivity.java +152 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/keys/MeshKeyListener.java +22 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/keys/NetKeysActivity.java +242 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/keys/adapter/AddedAppKeyAdapter.java +134 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/keys/adapter/AddedNetKeyAdapter.java +135 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/keys/adapter/ApplicationKeyDiffCallback.java +18 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/keys/adapter/BoundAppKeysAdapter.java +129 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/keys/adapter/ManageAppKeyAdapter.java +133 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/keys/adapter/ManageBoundNetKeyAdapter.java +155 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/keys/adapter/ManageNetKeyAdapter.java +145 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/keys/adapter/NetworkKeyDiffCallback.java +18 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/keys/dialogs/DialogFragmentAddKey.java +116 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/keys/dialogs/DialogFragmentEditAppKey.java +125 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/keys/dialogs/DialogFragmentEditNetKey.java +125 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/keys/dialogs/DialogFragmentKeyName.java +112 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/BaseModelConfigurationActivity.java +661 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/ConfigurationClientActivity.java +27 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/ConfigurationServerActivity.java +526 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/GenericBatteryServerActivity.java +196 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/GenericDefaultTransitionTimeServerActivity.java +292 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/GenericLevelServerActivity.java +250 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/GenericModelConfigurationActivity.java +29 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/GenericOnOffServerActivity.java +238 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/GenericPowerOnOffServerActivity.java +141 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/GenericPowerOnOffSetupServerActivity.java +151 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/HeartbeatPublicationActivity.java +446 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/HeartbeatSubscriptionActivity.java +288 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/ModelConfigurationActivity.java +67 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/NodeConfigurationActivity.java +412 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/NodeDetailsActivity.java +154 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/PowerLevelServerActivity.java +272 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/PowerLevelSetupServerActivity.java +294 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/PropertyServerActivity.java +195 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/PublicationSettingsActivity.java +363 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/SceneServerModelActivity.java +178 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/SceneSetupServerModelActivity.java +152 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/SensorServerActivity.java +129 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/TimeServerActivity.java +259 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/TimeSetupServerActivity.java +558 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/VendorModelActivity.java +240 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/adapter/ElementAdapter.java +184 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/adapter/ElementDiffCallback.java +24 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/adapter/NodeAdapter.java +151 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/adapter/NodeDiffCallback.java +21 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/dialog/BottomSheetDetailsDialogFragment.java +110 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/dialog/BottomSheetLevelDialogFragment.java +131 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/dialog/BottomSheetOnOffDialogFragment.java +124 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/dialog/BottomSheetVendorDialogFragment.java +193 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/dialog/DestinationAddressCallbacks.java +24 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/dialog/DialogFragmentElementName.java +114 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/dialog/DialogFragmentHeartbeatDestination.java +370 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/dialog/DialogFragmentHeartbeatPublishTtl.java +49 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/dialog/DialogFragmentHeartbeatSource.java +148 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/dialog/DialogFragmentNetworkTransmitSettings.java +101 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/dialog/DialogFragmentNodeName.java +113 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/dialog/DialogFragmentPubRetransmitIntervalSteps.java +143 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/dialog/DialogFragmentPublicationResolution.java +74 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/dialog/DialogFragmentPublicationSteps.java +141 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/dialog/DialogFragmentPublishAddress.java +473 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/dialog/DialogFragmentPublishTtl.java +45 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/dialog/DialogFragmentResetNode.java +64 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/dialog/DialogFragmentRetransmitCount.java +146 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/dialog/DialogFragmentTtl.java +147 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/dialog/DialogRelayRetransmitSettings.java +112 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/node/dialog/PublicationDestinationCallbacks.java +24 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/provisioners/AddProvisionerActivity.java +302 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/provisioners/EditProvisionerActivity.java +300 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/provisioners/ProvisionersActivity.java +192 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/provisioners/RangeListener.java +11 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/provisioners/RangesActivity.java +432 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/provisioners/adapter/ProvisionerAdapter.java +129 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/provisioners/adapter/RangeAdapter.java +181 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/provisioners/adapter/RangeDiffCallback.java +46 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/provisioners/dialogs/DialogFragmentGroupRange.java +201 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/provisioners/dialogs/DialogFragmentProvisionerAddress.java +158 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/provisioners/dialogs/DialogFragmentProvisionerName.java +119 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/provisioners/dialogs/DialogFragmentSceneRange.java +191 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/provisioners/dialogs/DialogFragmentTtl.java +131 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/provisioners/dialogs/DialogFragmentUnassign.java +80 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/provisioners/dialogs/DialogFragmentUnicastRange.java +191 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/scenes/SceneCallbacks.java +54 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/scenes/ScenesActivity.java +234 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/scenes/adapter/ManageScenesAdapter.java +122 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/scenes/adapter/SceneDiffCallback.java +18 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/scenes/adapter/SceneItemDiffCallback.java +17 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/scenes/adapter/SceneUiState.java +83 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/scenes/adapter/StoredScenesAdapter.java +120 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/scenes/dialog/BottomSheetSceneRecallDialogFragment.java +119 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/scenes/dialog/DialogFragmentCreateScene.java +71 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/scenes/dialog/DialogFragmentEditScene.java +74 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/scenes/dialog/DialogFragmentScene.java +116 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/utils/AddressArrayDiffCallback.java +18 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/utils/HexKeyListener.java +41 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/utils/NetworkExportUtils.java +171 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/utils/ProvisionerDiffCallback.java +18 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/utils/ProvisionerStates.java +51 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/utils/Utils.java +292 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/viewmodels/AddAppKeyViewModel.java +63 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/viewmodels/AddKeysViewModel.java +51 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/viewmodels/AddNetKeyViewModel.java +60 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/viewmodels/AddProvisionerViewModel.java +30 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/viewmodels/AddedScenesViewModel.java +19 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/viewmodels/AppKeysViewModel.java +19 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/viewmodels/BaseActivity.java +117 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/viewmodels/BaseViewModel.java +358 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/viewmodels/EditAppKeyViewModel.java +85 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/viewmodels/EditNetKeyViewModel.java +67 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/viewmodels/EditProvisionerViewModel.java +29 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/viewmodels/ExportNetworkViewModel.java +195 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/viewmodels/ExtendedMeshNode.java +54 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/viewmodels/GroupControlsViewModel.java +60 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/viewmodels/HeartbeatViewModel.java +54 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/viewmodels/MeshMessageLiveData.java +22 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/viewmodels/MeshNetworkLiveData.java +154 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/viewmodels/ModelConfigurationViewModel.java +106 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/viewmodels/NetKeysViewModel.java +19 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/viewmodels/NodeConfigurationViewModel.java +55 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/viewmodels/NodeDetailsViewModel.java +41 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/viewmodels/NrfMeshRepository.java +1085 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/viewmodels/ProvisionerProgress.java +63 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/viewmodels/ProvisionersViewModel.java +24 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/viewmodels/ProvisioningStatusLiveData.java +156 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/viewmodels/ProvisioningViewModel.java +162 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/viewmodels/PublicationViewModel.java +318 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/viewmodels/RangesViewModel.java +30 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/viewmodels/ReconnectViewModel.java +41 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/viewmodels/ScannerLiveData.java +150 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/viewmodels/ScannerRepository.java +256 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/viewmodels/ScannerStateLiveData.java +101 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/viewmodels/ScannerViewModel.java +58 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/viewmodels/ScenesViewModel.java +19 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/viewmodels/SharedViewModel.java +99 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/viewmodels/SingleLiveEvent.java +84 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/viewmodels/TransactionStatus.java +27 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/widgets/DividerItemDecorator.java +34 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/widgets/ItemTouchHelperAdapter.java +49 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/widgets/RangeView.java +190 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/widgets/RemovableItemTouchHelperCallback.java +171 -0
- package/Android-nRF-Mesh-Library/app/src/main/java/no/nordicsemi/android/nrfmesh/widgets/RemovableViewHolder.java +54 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/color/bottom_nav_color.xml +5 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/color/filter_add_button_states.xml +5 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/color/proxy_filter_button_states.xml +6 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/blue_button_states.xml +5 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_account_check.xml +11 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_account_key.xml +12 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_add_white.xml +31 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_alien.xml +12 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_arrow_back.xml +33 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_arrow_collapse_black.xml +11 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_arrow_downward.xml +11 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_arrow_forward.xml +33 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_arrow_upward.xml +11 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_auto_fix_black.xml +33 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_barcode_black.xml +33 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_baseline_folder_open_24.xml +11 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_baseline_not_interested_24.xml +11 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_baseline_palette_24dp.xml +11 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_baseline_palette_48dp.xml +11 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_baseline_save_alt_24.xml +9 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_baseline_sensors_24.xml +11 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_bluetooth_disabled.xml +33 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_bluetooth_searching.xml +33 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_capabilities.xml +11 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_certificate.xml +33 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_chart.xml +11 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_check.xml +5 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_close.xml +5 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_content_copy.xml +11 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_debug_step_over.xml +12 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_delete.xml +33 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_delete_white.xml +31 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_device_bg.xml +31 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_domain_48dp.xml +4 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_domain_black.xml +33 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_domain_nordic_medium_gray.xml +9 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_done_all_black.xml +11 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_done_all_nordic_lake.xml +9 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_done_all_white.xml +9 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_drawing.xml +11 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_edit_black.xml +33 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_edit_white.xml +31 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_error_outline_black.xml +33 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_filter_list_24dp.xml +11 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_folder_key_24dp.xml +11 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_folder_provisioner_24dp.xml +11 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_friend_outline.xml +11 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_heart_beat.xml +11 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_help_outline_24dp.xml +9 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_help_outline_48dp.xml +9 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_index.xml +33 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_info_24dp.xml +11 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_info_outline.xml +33 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_label.xml +11 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_label_outline.xml +11 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_lan_24dp.xml +33 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_lan_48dp.xml +33 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_light_switch_24dp.xml +8 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_light_switch_48dp.xml +8 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_lightbulb_level_24dp.xml +35 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_lightbulb_level_48dp.xml +39 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_lightbulb_level_black_24dp.xml +37 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_lightbulb_outline_24dp.xml +9 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_lightbulb_outline_48dp.xml +5 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_lightbulb_outline_black_24dp.xml +11 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_linear_scale.xml +11 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_location_off.xml +33 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_lock_open_24dp.xml +20 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_mesh_black.xml +9 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_mesh_black_48dp.xml +11 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_mesh_white.xml +9 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_node_circular_bg_primary.xml +28 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_node_identity.xml +11 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_numeric.xml +33 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_oob_lock_outline.xml +12 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_outline_group.xml +19 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_outline_group_24dp.xml +20 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_outline_group_48dp.xml +20 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_outline_group_white_48dp.xml +18 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_outline_palette_24dp.xml +23 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_perm_identity.xml +33 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_proxy.xml +9 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_proxy_black.xml +11 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_publish.xml +33 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_puzzle.xml +11 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_range_48dp.xml +11 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_range_nordic_lake.xml +31 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_range_nordic_light_gray.xml +31 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_range_nordic_medium_gray.xml +31 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_range_nordic_red.xml +31 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_repeat.xml +11 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_reset.xml +11 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_round_call_received_24.xml +11 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_round_expand_less.xml +33 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_round_expand_more.xml +33 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_rounded_corner.xml +33 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_scene.xml +11 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_security.xml +33 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_settings.xml +31 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_settings_power.xml +11 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_shield_key.xml +11 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_shield_provisioner.xml +11 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_signal_0_bar.xml +33 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_signal_1_bar.xml +36 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_signal_2_bar.xml +36 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_signal_3_bar.xml +36 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_signal_4_bar.xml +32 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_signal_bar.xml +39 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_space_bar.xml +11 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_sparkles.xml +12 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_splash_screen.9.png +0 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_subscribe.xml +33 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_time.xml +11 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_timer.xml +33 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_vpn_key_24dp.xml +11 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_vpn_key_48dp.xml +33 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/ic_widgets.xml +11 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/nordic_logo.xml +142 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable/red_button_states.xml +5 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable-anydpi-v23/ic_splash_screen.xml +110 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable-anydpi-v26/ic_launcher_foreground.xml +13 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable-anydpi-v31/ic_splash_screen.xml +684 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/drawable-xxxhdpi/ic_mesh_feature.png +0 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/activity_add_keys.xml +121 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/activity_config_groups.xml +87 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/activity_edit_key.xml +165 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/activity_edit_provisioner.xml +199 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/activity_export.xml +129 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/activity_heartbeat_publication.xml +568 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/activity_heartbeat_subscription.xml +249 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/activity_keys.xml +103 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/activity_main.xml +112 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/activity_mesh_provisioner.xml +202 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/activity_model_configuration.xml +408 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/activity_net_keys.xml +177 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/activity_node_configuration.xml +507 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/activity_node_details.xml +208 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/activity_provisioners.xml +176 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/activity_publication_settings.xml +534 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/activity_ranges.xml +119 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/activity_reconnect.xml +88 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/activity_scanner.xml +151 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/activity_scenes.xml +114 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/address_item.xml +88 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/address_type_item.xml +40 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/checkable_row_item.xml +92 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/container_heartbeat_publication.xml +210 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/container_heartbeat_subscription.xml +243 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/custom_chip.xml +69 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/device_item.xml +77 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/dialog_fragment_address_input.xml +73 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/dialog_fragment_auth_input.xml +66 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/dialog_fragment_create_group.xml +99 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/dialog_fragment_create_scene.xml +97 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/dialog_fragment_filter_address.xml +99 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/dialog_fragment_group_subscription.xml +167 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/dialog_fragment_key_input.xml +74 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/dialog_fragment_name.xml +59 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/dialog_fragment_network_transmit_settings.xml +141 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/dialog_fragment_public_key_input.xml +84 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/dialog_fragment_publication_parameters.xml +63 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/dialog_fragment_publish_address.xml +167 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/dialog_fragment_publish_ttl_input.xml +71 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/dialog_fragment_range.xml +105 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/dialog_fragment_relay_settings.xml +172 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/dialog_fragment_select_oob_type.xml +158 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/dialog_fragment_ttl.xml +61 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/element_item.xml +115 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/export_configuration_layout.xml +177 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/fragment_bottom_sheet_dialog.xml +64 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/fragment_groups.xml +68 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/fragment_network.xml +67 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/fragment_proxy_filter.xml +232 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/fragment_settings.xml +137 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/group_element_item.xml +68 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/group_item.xml +99 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/group_model_item.xml +61 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/group_subscription_item.xml +71 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/grouped_app_key_item.xml +65 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/grouped_item.xml +140 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/info_element_count.xml +61 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/info_input_oob_actions.xml +63 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/info_input_oob_size.xml +60 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/info_live_provisioning_status.xml +38 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/info_no_app_key_bound.xml +54 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/info_no_app_keys.xml +57 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/info_no_bluetooth.xml +62 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/info_no_bluetooth_permissions.xml +70 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/info_no_devices.xml +76 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/info_no_groups_configured.xml +56 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/info_no_location_permission.xml +70 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/info_no_models_configured.xml +56 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/info_no_nodes_provisioned.xml +54 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/info_no_ranges.xml +56 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/info_no_scenes.xml +57 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/info_node_company_identifier.xml +64 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/info_node_crpl.xml +64 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/info_node_device_key.xml +64 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/info_node_features.xml +64 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/info_node_identifier.xml +66 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/info_node_name.xml +63 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/info_node_product_identifier.xml +65 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/info_node_product_version.xml +65 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/info_node_prov_timestamp.xml +64 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/info_node_security.xml +62 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/info_node_unicast_address.xml +63 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/info_output_oob_actions.xml +61 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/info_output_oob_size.xml +61 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/info_public_key_type.xml +61 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/info_range_legend.xml +156 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/info_static_oob_type.xml +62 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/info_supported_algorithms.xml +61 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/layout_capabilities.xml +101 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/layout_config_server_model.xml +631 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/layout_container.xml +82 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/layout_divider.xml +27 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/layout_generic_battery.xml +301 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/layout_generic_default_transition_time.xml +160 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/layout_generic_level.xml +233 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/layout_generic_level_bottom_sheet.xml +182 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/layout_generic_on_off.xml +234 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/layout_generic_on_off_bottom_sheet.xml +178 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/layout_generic_power_on_off.xml +97 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/layout_generic_power_on_off_setup.xml +100 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/layout_group_subscription.xml +52 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/layout_power_level_server.xml +233 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/layout_power_level_setup_server.xml +187 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/layout_properties.xml +52 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/layout_range_container.xml +62 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/layout_recall_scene_bottom_sheet.xml +154 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/layout_scene_server.xml +100 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/layout_scene_setup_server.xml +106 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/layout_sensors.xml +52 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/layout_time_server.xml +457 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/layout_time_setup_server.xml +539 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/layout_vendor_model_bottom_sheet.xml +134 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/layout_vendor_model_controls.xml +153 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/model_item.xml +59 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/network_item.xml +184 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/no_groups_layout.xml +20 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/oob_type_item.xml +35 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/progress_item.xml +57 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/range_item.xml +70 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/removable_row_item.xml +101 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/removable_row_item2.xml +102 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout/removable_row_item_provisioner.xml +90 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout-land/activity_ranges.xml +117 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout-land/info_range_legend.xml +187 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout-sw600dp/fragment_network.xml +67 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/layout-sw600dp/network_item.xml +183 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/menu/connect.xml +31 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/menu/disconnect.xml +30 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/menu/info.xml +32 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/menu/menu_apply.xml +31 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/menu/menu_bottom_navigation.xml +58 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/menu/menu_group_controls_connect.xml +39 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/menu/menu_group_controls_disconnect.xml +39 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/menu/menu_save.xml +31 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/menu/network_settings.xml +38 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +6 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +6 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/values/colors.xml +80 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/values/dimens.xml +46 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/values/ic_launcher_background.xml +4 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/values/plurals.xml +48 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/values/strings.xml +793 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/values/styles.xml +109 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/values/styles_splashscreen.xml +41 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/values-land/dimens.xml +28 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/values-night/colors.xml +79 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/values-night/styles.xml +17 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/values-night-v23/styles_splashscreen.xml +29 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/values-v21/styles.xml +32 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/values-v23/styles.xml +33 -0
- package/Android-nRF-Mesh-Library/app/src/main/res/values-v23/styles_splashscreen.xml +55 -0
- package/Android-nRF-Mesh-Library/app/src/test/java/no/nordicsemi/android/nrfmesh/ExampleUnitTest.java +35 -0
- package/Android-nRF-Mesh-Library/build.gradle +56 -0
- package/Android-nRF-Mesh-Library/fastlane/Appfile +2 -0
- package/Android-nRF-Mesh-Library/fastlane/Fastfile +34 -0
- package/Android-nRF-Mesh-Library/gradle/git-tag-version.gradle +29 -0
- package/Android-nRF-Mesh-Library/gradle/publish-module.gradle +62 -0
- package/Android-nRF-Mesh-Library/gradle/publish-root.gradle +22 -0
- package/Android-nRF-Mesh-Library/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/Android-nRF-Mesh-Library/gradle/wrapper/gradle-wrapper.properties +6 -0
- package/Android-nRF-Mesh-Library/gradle.properties +49 -0
- package/Android-nRF-Mesh-Library/gradlew +160 -0
- package/Android-nRF-Mesh-Library/gradlew.bat +90 -0
- package/Android-nRF-Mesh-Library/mesh/build.gradle +89 -0
- package/Android-nRF-Mesh-Library/mesh/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/Android-nRF-Mesh-Library/mesh/gradle/wrapper/gradle-wrapper.properties +6 -0
- package/Android-nRF-Mesh-Library/mesh/gradlew +172 -0
- package/Android-nRF-Mesh-Library/mesh/gradlew.bat +84 -0
- package/Android-nRF-Mesh-Library/mesh/mesh-proguard-rules.pro +25 -0
- package/Android-nRF-Mesh-Library/mesh/schemas/no.nordicsemi.android.mesh.MeshNetworkDb/10.json +658 -0
- package/Android-nRF-Mesh-Library/mesh/schemas/no.nordicsemi.android.mesh.MeshNetworkDb/11.json +666 -0
- package/Android-nRF-Mesh-Library/mesh/schemas/no.nordicsemi.android.mesh.MeshNetworkDb/12.json +667 -0
- package/Android-nRF-Mesh-Library/mesh/schemas/no.nordicsemi.android.mesh.MeshNetworkDb/9.json +658 -0
- package/Android-nRF-Mesh-Library/mesh/schemas/no.nordicsemi.android.meshprovisioner.MeshNetworkDatabase/1.json +724 -0
- package/Android-nRF-Mesh-Library/mesh/schemas/no.nordicsemi.android.meshprovisioner.MeshNetworkDb/1.json +645 -0
- package/Android-nRF-Mesh-Library/mesh/schemas/no.nordicsemi.android.meshprovisioner.MeshNetworkDb/2.json +651 -0
- package/Android-nRF-Mesh-Library/mesh/schemas/no.nordicsemi.android.meshprovisioner.MeshNetworkDb/3.json +646 -0
- package/Android-nRF-Mesh-Library/mesh/schemas/no.nordicsemi.android.meshprovisioner.MeshNetworkDb/4.json +664 -0
- package/Android-nRF-Mesh-Library/mesh/schemas/no.nordicsemi.android.meshprovisioner.MeshNetworkDb/5.json +664 -0
- package/Android-nRF-Mesh-Library/mesh/schemas/no.nordicsemi.android.meshprovisioner.MeshNetworkDb/6.json +664 -0
- package/Android-nRF-Mesh-Library/mesh/schemas/no.nordicsemi.android.meshprovisioner.MeshNetworkDb/7.json +658 -0
- package/Android-nRF-Mesh-Library/mesh/schemas/no.nordicsemi.android.meshprovisioner.MeshNetworkDb/8.json +658 -0
- package/Android-nRF-Mesh-Library/mesh/schemas/no.nordicsemi.android.meshprovisioner.MeshNetworkDb/9.json +652 -0
- package/Android-nRF-Mesh-Library/mesh/schemas/no.nordicsemi.android.meshprovisioner.data.MeshNetworkDatabase/1.json +598 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/AndroidManifest.xml +29 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/AddressRange.java +182 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/AllocatedGroupRange.java +116 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/AllocatedGroupRangeDeserializer.java +51 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/AllocatedSceneRange.java +209 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/AllocatedSceneRangeDeserializer.java +50 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/AllocatedUnicastRange.java +113 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/AllocatedUnicastRangeDeserializer.java +51 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/AppKeyDeserializer.java +66 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/ApplicationKey.java +137 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/ApplicationKeysConfig.java +48 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/BaseMeshNetwork.java +1550 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/ExportConfig.java +41 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/Features.java +260 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/Group.java +391 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/GroupsConfig.java +63 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/ImmutableSparseIntArray.java +129 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/ImportExportUtils.java +412 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/InternalMeshManagerCallbacks.java +36 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/InternalProvisioningCallbacks.java +19 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/InternalTransportCallbacks.java +105 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/IvIndex.java +130 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/LoadNetworkCallbacks.java +21 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/MeshBeacon.java +37 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/MeshKey.java +195 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/MeshManagerApi.java +1386 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/MeshManagerCallbacks.java +95 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/MeshMessageHandler.java +63 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/MeshMngrApi.java +317 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/MeshNetwork.java +945 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/MeshNetworkCallbacks.java +49 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/MeshNetworkDb.java +1039 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/MeshNetworkDeserializer.java +593 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/MeshProvisioningHandler.java +572 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/MeshProvisioningStatusCallbacks.java +62 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/MeshStatusCallbacks.java +112 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/MeshTAITime.java +58 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/MeshTypeConverters.java +166 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/NetKeyDeserializer.java +83 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/NetworkKey.java +360 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/NetworkKeysConfig.java +54 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/NetworkSettings.java +43 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/NodeKey.java +96 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/NodesConfig.java +69 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/Provisioner.java +538 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/ProvisionersConfig.java +54 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/ProvisioningSettings.java +284 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/Range.java +205 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/Retransmit.java +32 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/Scene.java +196 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/ScenesConfig.java +59 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/SecureNetworkBeacon.java +212 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/UnprovisionedBeacon.java +94 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/control/BlockAcknowledgementMessage.java +130 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/control/HeartbeatMessage.java +52 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/control/TransportControlMessage.java +47 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/data/ApplicationKeyDao.java +24 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/data/ApplicationKeys.java +18 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/data/ApplicationKeysDao.java +29 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/data/GenericTransitionTime.java +127 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/data/GlobalAltitude.java +146 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/data/GlobalLatitude.java +133 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/data/GlobalLongitude.java +133 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/data/GroupDao.java +23 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/data/Groups.java +18 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/data/GroupsDao.java +30 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/data/MeshNetworkDao.java +50 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/data/NetworkKeyDao.java +21 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/data/NetworkKeys.java +18 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/data/NetworkKeysDao.java +31 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/data/OnPowerUpState.java +33 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/data/ProvisionedMeshNodeDao.java +25 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/data/ProvisionedMeshNodes.java +18 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/data/ProvisionedMeshNodesDao.java +33 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/data/ProvisionerDao.java +42 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/data/Provisioners.java +18 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/data/ProvisionersDao.java +29 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/data/SceneDao.java +23 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/data/Scenes.java +18 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/data/ScenesDao.java +30 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/data/ScheduleEntry.java +444 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/data/TimeZoneOffset.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/logger/MeshLogger.java +70 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/BlobTransferClient.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/BlobTransferServer.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/ConfigurationClientModel.java +65 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/ConfigurationServerModel.java +111 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/FirmwareDistributionClient.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/FirmwareDistributionServer.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/FirmwareUpdateClient.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/FirmwareUpdateServer.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/GenericAdminPropertyServer.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/GenericBatteryClient.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/GenericBatteryServer.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/GenericClientPropertyServer.java +63 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/GenericDefaultTransitionTimeClient.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/GenericDefaultTransitionTimeServer.java +65 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/GenericLevelClientModel.java +66 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/GenericLevelServerModel.java +66 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/GenericLocationClient.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/GenericLocationServer.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/GenericLocationSetupServer.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/GenericManufacturerPropertyServer.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/GenericOnOffClientModel.java +66 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/GenericOnOffServerModel.java +66 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/GenericPowerLevelClient.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/GenericPowerLevelServer.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/GenericPowerLevelSetupServer.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/GenericPowerOnOffClient.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/GenericPowerOnOffServer.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/GenericPowerOnOffSetupServer.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/GenericPropertyClient.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/GenericUserPropertyServer.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/HealthClientModel.java +66 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/HealthServerModel.java +66 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/LargeCompositionDataClient.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/LargeCompositionDataServer.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/LightCtlClient.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/LightCtlServer.java +65 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/LightCtlSetupServer.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/LightCtlTemperatureServer.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/LightHslClient.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/LightHslHueServer.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/LightHslSaturationServer.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/LightHslServer.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/LightHslSetupServer.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/LightLcClient.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/LightLcServer.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/LightLcSetupServer.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/LightLightnessClient.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/LightLightnessServer.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/LightLightnessSetupServer.java +65 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/LightXylClient.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/LightXylServer.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/LightXylSetupServer.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/MeshPrivateBeaconClient.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/MeshPrivateBeaconServer.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/OnDemandPrivateProxyClient.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/OnDemandPrivateProxyServer.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/OpcodesAggregatorClient.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/OpcodesAggregatorServer.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/RemoteProvisioningClient.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/RemoteProvisioningServer.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/SarConfigurationClient.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/SarConfigurationServer.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/SceneClient.java +65 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/SceneServer.java +77 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/SceneSetupServer.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/SchedulerClient.java +65 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/SchedulerServer.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/SchedulerSetupServer.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/SensorClient.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/SensorServer.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/SensorSetupServer.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/SigModel.java +45 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/SigModelParser.java +282 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/SolicitationPduRplConfigurationClient.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/SolicitationPduRplConfigurationServer.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/TimeClient.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/TimeServer.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/TimeSetupServer.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/UnknownModel.java +65 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/models/VendorModel.java +97 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/opcodes/ApplicationMessageOpCodes.java +627 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/opcodes/ConfigMessageOpCodes.java +382 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/opcodes/ProxyConfigMessageOpCodes.java +47 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/opcodes/TransportLayerOpCodes.java +35 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/provisionerstates/ProvisioningCapabilities.java +289 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/provisionerstates/ProvisioningCapabilitiesState.java +78 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/provisionerstates/ProvisioningCompleteState.java +59 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/provisionerstates/ProvisioningConfirmationState.java +166 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/provisionerstates/ProvisioningDataState.java +182 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/provisionerstates/ProvisioningFailedState.java +120 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/provisionerstates/ProvisioningInputCompleteState.java +74 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/provisionerstates/ProvisioningInviteState.java +90 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/provisionerstates/ProvisioningPublicKeyState.java +198 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/provisionerstates/ProvisioningRandomConfirmationState.java +94 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/provisionerstates/ProvisioningStartState.java +148 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/provisionerstates/ProvisioningState.java +115 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/provisionerstates/RFU.java +27 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/provisionerstates/UnprovisionedBaseMeshNode.java +256 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/provisionerstates/UnprovisionedMeshNode.java +214 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/sensorutils/Bool.java +34 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/sensorutils/Coefficient.java +46 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/sensorutils/Count.java +71 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/sensorutils/DateUtc.java +49 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/sensorutils/DeviceProperty.java +1070 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/sensorutils/DevicePropertyCharacteristic.java +55 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/sensorutils/ElectricCurrent.java +52 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/sensorutils/Energy32.java +54 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/sensorutils/FixedString.java +66 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/sensorutils/Humidity.java +45 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/sensorutils/Illuminance.java +43 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/sensorutils/MarshalledPropertyId.java +92 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/sensorutils/MarshalledSensorData.java +78 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/sensorutils/PerceivedLightness.java +51 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/sensorutils/Percentage8.java +51 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/sensorutils/Power.java +50 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/sensorutils/Pressure.java +43 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/sensorutils/SensorDescriptor.java +96 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/sensorutils/SensorSamplingFunction.java +85 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/sensorutils/SensorSettingAccess.java +46 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/sensorutils/StatusTriggerDelta.java +70 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/sensorutils/StatusTriggerType.java +46 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/sensorutils/Temperature.java +85 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/sensorutils/TimeHour24.java +44 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/sensorutils/TimeMillisecond24.java +49 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/sensorutils/TimeSecond.java +82 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/sensorutils/UnknownCharacteristic.java +42 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/sensorutils/Voltage.java +52 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/AccessLayer.java +141 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/AccessMessage.java +118 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ApplicationMessage.java +55 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ApplicationMessageState.java +95 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ApplicationStatusMessage.java +38 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/BaseMeshMessageHandler.java +344 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigAppKeyAdd.java +105 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigAppKeyDelete.java +103 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigAppKeyGet.java +63 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigAppKeyList.java +122 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigAppKeyStatus.java +127 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigAppKeyUpdate.java +88 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigBeaconGet.java +30 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigBeaconSet.java +34 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigBeaconStatus.java +48 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigCompositionDataGet.java +57 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigCompositionDataStatus.java +325 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigDefaultTtlGet.java +31 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigDefaultTtlSet.java +41 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigDefaultTtlStatus.java +46 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigFriendGet.java +30 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigFriendSet.java +35 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigFriendStatus.java +47 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigGattProxyGet.java +54 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigGattProxySet.java +48 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigGattProxyStatus.java +102 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigHeartbeatPublicationGet.java +50 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigHeartbeatPublicationSet.java +123 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigHeartbeatPublicationStatus.java +120 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigHeartbeatSubscriptionGet.java +50 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigHeartbeatSubscriptionSet.java +97 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigHeartbeatSubscriptionStatus.java +117 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigKeyRefreshPhaseGet.java +63 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigKeyRefreshPhaseSet.java +67 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigKeyRefreshPhaseStatus.java +129 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigLowPowerNodePollTimeoutGet.java +42 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigLowPowerNodePollTimeoutStatus.java +55 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigMessage.java +24 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigMessageState.java +80 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigModelAppBind.java +123 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigModelAppStatus.java +153 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigModelAppUnbind.java +124 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigModelPublicationGet.java +113 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigModelPublicationSet.java +261 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigModelPublicationStatus.java +234 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigModelPublicationVirtualAddressSet.java +242 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigModelSubscriptionAdd.java +103 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigModelSubscriptionDelete.java +109 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigModelSubscriptionDeleteAll.java +91 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigModelSubscriptionOverwrite.java +104 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigModelSubscriptionStatus.java +148 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigModelSubscriptionVirtualAddressAdd.java +110 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigModelSubscriptionVirtualAddressDelete.java +110 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigModelSubscriptionVirtualAddressOverwrite.java +111 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigNetKeyAdd.java +77 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigNetKeyDelete.java +76 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigNetKeyGet.java +52 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigNetKeyList.java +107 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigNetKeyStatus.java +115 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigNetKeyUpdate.java +77 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigNetworkTransmitGet.java +53 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigNetworkTransmitSet.java +88 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigNetworkTransmitStatus.java +110 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigNodeIdentityGet.java +36 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigNodeIdentitySet.java +44 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigNodeIdentityStatus.java +71 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigNodeReset.java +33 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigNodeResetStatus.java +85 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigRelayGet.java +53 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigRelaySet.java +100 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigRelayStatus.java +131 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigSigModelAppGet.java +98 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigSigModelAppList.java +139 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigSigModelSubscriptionGet.java +75 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigSigModelSubscriptionList.java +147 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigStatusMessage.java +175 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigVendorModelAppGet.java +102 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigVendorModelAppList.java +142 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigVendorModelSubscriptionGet.java +80 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ConfigVendorModelSubscriptionList.java +147 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ControlMessage.java +101 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/DefaultNoOperationMessageState.java +718 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/Element.java +218 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ElementDbMigrator.java +58 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/GenericAdminPropertySet.java +44 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/GenericBatteryGet.java +33 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/GenericBatteryStatus.java +238 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/GenericDefaultTransitionTimeGet.java +36 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/GenericDefaultTransitionTimeSet.java +45 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/GenericDefaultTransitionTimeStatus.java +85 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/GenericDeltaSet.java +98 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/GenericLevelGet.java +38 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/GenericLevelSet.java +100 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/GenericLevelSetUnacknowledged.java +100 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/GenericLevelStatus.java +144 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/GenericLocationGlobalGet.java +41 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/GenericLocationGlobalSet.java +97 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/GenericLocationGlobalSetUnacknowledged.java +97 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/GenericLocationGlobalStatus.java +113 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/GenericManufacturerPropertiesGet.java +35 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/GenericManufacturerPropertiesStatus.java +70 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/GenericManufacturerPropertyGet.java +46 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/GenericManufacturerPropertySet.java +41 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/GenericOnOffGet.java +37 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/GenericOnOffSet.java +98 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/GenericOnOffSetUnacknowledged.java +98 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/GenericOnOffStatus.java +146 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/GenericOnPowerUpGet.java +27 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/GenericOnPowerUpSet.java +37 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/GenericOnPowerUpStatus.java +84 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/GenericPowerDefaultGet.java +37 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/GenericPowerDefaultSet.java +53 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/GenericPowerDefaultSetUnacknowledged.java +53 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/GenericPowerDefaultStatus.java +103 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/GenericPowerLastGet.java +37 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/GenericPowerLastStatus.java +103 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/GenericPowerLevelGet.java +37 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/GenericPowerLevelSet.java +98 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/GenericPowerLevelSetUnacknowledged.java +100 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/GenericPowerLevelStatus.java +162 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/GenericPowerRangeGet.java +37 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/GenericPowerRangeSet.java +62 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/GenericPowerRangeSetUnacknowledged.java +62 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/GenericPowerRangeStatus.java +126 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/GenericPropertyGet.java +46 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/GenericPropertyStatus.java +78 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/GenericUserPropertySet.java +41 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/HealthCurrentStatus.java +75 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/HealthFaultClear.java +36 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/HealthFaultGet.java +36 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/HealthFaultStatus.java +75 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/InternalElementListDeserializer.java +111 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/InternalMeshModelDeserializer.java +312 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/InternalMeshMsgHandlerCallbacks.java +37 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/LightCtlGet.java +38 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/LightCtlSet.java +124 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/LightCtlSetUnacknowledged.java +124 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/LightCtlStatus.java +169 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/LightCtlTemperatureRangeGet.java +38 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/LightCtlTemperatureRangeSet.java +65 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/LightCtlTemperatureRangeSetUnacknowledged.java +65 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/LightCtlTemperatureRangeStatus.java +105 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/LightHslGet.java +38 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/LightHslSet.java +126 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/LightHslSetUnacknowledged.java +126 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/LightHslStatus.java +157 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/LightLCLightOnOffGet.java +38 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/LightLCLightOnOffSet.java +94 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/LightLCLightOnOffSetUnacknowledged.java +94 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/LightLCLightOnOffStatus.java +150 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/LightLCModeGet.java +38 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/LightLCModeSet.java +42 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/LightLCModeSetUnacknowledged.java +42 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/LightLCModeStatus.java +92 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/LightLCOccupancyModeGet.java +38 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/LightLCOccupancyModeSet.java +42 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/LightLCOccupancyModeSetUnacknowledged.java +42 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/LightLCOccupancyModeStatus.java +92 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/LightLCPropertyGet.java +44 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/LightLCPropertySet.java +47 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/LightLCPropertySetUnacknowledged.java +49 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/LightLCPropertyStatus.java +112 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/LightLightnessGet.java +38 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/LightLightnessSet.java +103 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/LightLightnessSetUnacknowledged.java +104 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/LightLightnessStatus.java +145 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/LowerTransportLayer.java +837 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/LowerTransportLayerCallbacks.java +40 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/MeshMessage.java +98 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/MeshMessageHandlerApi.java +21 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/MeshMessageState.java +159 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/MeshModel.java +311 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/MeshModelListDeserializer.java +265 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/MeshStatusMessage.java +38 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/MeshTransport.java +326 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/Message.java +276 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/NetworkLayer.java +649 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/NetworkLayerCallbacks.java +61 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/NodeDeserializer.java +453 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ProvisionedBaseMeshNode.java +362 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ProvisionedMeshNode.java +594 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ProxyConfigAddAddressToFilter.java +58 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ProxyConfigFilterStatus.java +59 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ProxyConfigMessage.java +31 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ProxyConfigMessageState.java +80 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ProxyConfigRemoveAddressFromFilter.java +57 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ProxyConfigSetFilterType.java +38 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/ProxyConfigStatusMessage.java +29 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/PublicationSettings.java +441 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/SceneDelete.java +59 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/SceneDeleteUnacknowledged.java +59 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/SceneGet.java +36 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/SceneRecall.java +98 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/SceneRecallUnacknowledged.java +98 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/SceneRegisterGet.java +37 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/SceneRegisterStatus.java +138 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/SceneStatus.java +166 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/SceneStatuses.java +18 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/SceneStore.java +55 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/SceneStoreUnacknowledged.java +55 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/SchedulerActionGet.java +50 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/SchedulerActionSet.java +49 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/SchedulerActionStatus.java +98 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/SchedulerGet.java +34 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/SchedulerStatus.java +78 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/SensorCadenceGet.java +47 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/SensorCadenceSet.java +43 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/SensorCadenceSetUnacknowledged.java +43 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/SensorCadenceStatus.java +94 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/SensorColumnGet.java +52 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/SensorColumnStatus.java +106 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/SensorDescriptorGet.java +48 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/SensorDescriptorStatus.java +149 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/SensorGet.java +48 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/SensorMessage.java +165 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/SensorSeriesGet.java +77 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/SensorSeriesStatus.java +106 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/SensorSettingGet.java +67 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/SensorSettingSet.java +74 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/SensorSettingSetUnacknowledged.java +57 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/SensorSettingStatus.java +127 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/SensorSettingsGet.java +50 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/SensorSettingsStatus.java +112 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/SensorStatus.java +127 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/TimeGet.java +25 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/TimeRoleGet.java +25 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/TimeRoleSet.java +43 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/TimeRoleStatus.java +93 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/TimeSet.java +64 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/TimeStatus.java +125 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/TimeZoneGet.java +40 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/TimeZoneSet.java +78 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/TimeZoneStatus.java +109 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/UpperTransportLayer.java +406 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/UpperTransportLayerCallbacks.java +68 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/VendorModelMessageAcked.java +66 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/VendorModelMessageAckedState.java +91 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/VendorModelMessageStatus.java +104 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/VendorModelMessageUnacked.java +66 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/transport/VendorModelMessageUnackedState.java +88 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/utils/AddressArray.java +78 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/utils/AddressType.java +88 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/utils/AlgorithmInformationParser.java +39 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/utils/AlgorithmType.java +93 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/utils/AllocatedGroupRangeDbMigrator.java +42 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/utils/AllocatedUnicastRangeDbMigrator.java +42 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/utils/ArrayUtils.java +13 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/utils/AuthenticationOOBMethods.java +69 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/utils/BitReader.java +160 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/utils/BitWriter.java +103 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/utils/CompanyIdentifiers.java +3635 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/utils/CompositionDataParser.java +57 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/utils/ConfigModelPublicationSetParams.java +112 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/utils/DeviceFeatureUtils.java +102 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/utils/ExtendedInvalidCipherTextException.java +47 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/utils/Heartbeat.java +142 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/utils/HeartbeatPublication.java +162 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/utils/HeartbeatSubscription.java +153 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/utils/InputOOBAction.java +179 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/utils/InterfaceAdapter.java +76 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/utils/MeshAddress.java +396 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/utils/MeshParserUtils.java +821 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/utils/NetworkTransmitSettings.java +150 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/utils/OutputOOBAction.java +176 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/utils/ParseKeys.java +48 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/utils/ParsePublicKeyInformation.java +40 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/utils/ParseStaticOutputOOBInformation.java +40 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/utils/ProxyFilter.java +126 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/utils/ProxyFilterType.java +91 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/utils/PublicKeyOOB.java +57 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/utils/RelaySettings.java +136 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/utils/RemainingHeartbeatSubscriptionPeriod.java +5 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/utils/SecureUtils.java +533 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/utils/SensorFormat.java +46 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/utils/SparseIntArrayParcelable.java +57 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/utils/StaticOOBType.java +36 -0
- package/Android-nRF-Mesh-Library/mesh/src/main/res/values/strings.xml +49 -0
- package/Android-nRF-Mesh-Library/mesh/src/test/java/no/nordicsemi/android/mesh/AddressRangeTest.java +43 -0
- package/Android-nRF-Mesh-Library/mesh/src/test/java/no/nordicsemi/android/mesh/SecureNetworkBeaconTest.java +241 -0
- package/Android-nRF-Mesh-Library/mesh/src/test/java/no/nordicsemi/android/mesh/data/GenericTransitionTimeTest.java +108 -0
- package/Android-nRF-Mesh-Library/mesh/src/test/java/no/nordicsemi/android/mesh/sensorutils/DevicePropertyCharacteristicTest.java +311 -0
- package/Android-nRF-Mesh-Library/mesh/src/test/java/no/nordicsemi/android/mesh/transport/AccessLayerTests.java +130 -0
- package/Android-nRF-Mesh-Library/mesh/src/test/java/no/nordicsemi/android/mesh/transport/ConfigMessageTests.java +116 -0
- package/Android-nRF-Mesh-Library/mesh/src/test/java/no/nordicsemi/android/mesh/transport/EncryptionTests.java +177 -0
- package/Android-nRF-Mesh-Library/mesh/src/test/java/no/nordicsemi/android/mesh/transport/GenericLocationClientTests.java +214 -0
- package/Android-nRF-Mesh-Library/mesh/src/test/java/no/nordicsemi/android/mesh/transport/LowerTransportLayerTests.java +156 -0
- package/Android-nRF-Mesh-Library/mesh/src/test/java/no/nordicsemi/android/mesh/transport/NetworkLayerTests.java +252 -0
- package/Android-nRF-Mesh-Library/mesh/src/test/java/no/nordicsemi/android/mesh/transport/SchedulerActionGetTest.java +22 -0
- package/Android-nRF-Mesh-Library/mesh/src/test/java/no/nordicsemi/android/mesh/transport/SchedulerActionSetTest.java +26 -0
- package/Android-nRF-Mesh-Library/mesh/src/test/java/no/nordicsemi/android/mesh/transport/SchedulerActionStatusTest.java +48 -0
- package/Android-nRF-Mesh-Library/mesh/src/test/java/no/nordicsemi/android/mesh/transport/SchedulerGetTest.java +21 -0
- package/Android-nRF-Mesh-Library/mesh/src/test/java/no/nordicsemi/android/mesh/transport/SchedulerStatusTest.java +34 -0
- package/Android-nRF-Mesh-Library/mesh/src/test/java/no/nordicsemi/android/mesh/transport/TimeZoneTests.java +115 -0
- package/Android-nRF-Mesh-Library/mesh/src/test/java/no/nordicsemi/android/mesh/transport/UpperTransportLayerTests.java +83 -0
- package/Android-nRF-Mesh-Library/mesh/src/test/java/no/nordicsemi/android/mesh/transport/schedulerEntry/ActionSpecTest.java +18 -0
- package/Android-nRF-Mesh-Library/mesh/src/test/java/no/nordicsemi/android/mesh/transport/schedulerEntry/DayOfWeekSpecTest.java +31 -0
- package/Android-nRF-Mesh-Library/mesh/src/test/java/no/nordicsemi/android/mesh/transport/schedulerEntry/DaySpecTest.java +22 -0
- package/Android-nRF-Mesh-Library/mesh/src/test/java/no/nordicsemi/android/mesh/transport/schedulerEntry/EntrySpecTest.java +82 -0
- package/Android-nRF-Mesh-Library/mesh/src/test/java/no/nordicsemi/android/mesh/transport/schedulerEntry/HourSpecTest.java +23 -0
- package/Android-nRF-Mesh-Library/mesh/src/test/java/no/nordicsemi/android/mesh/transport/schedulerEntry/MinuteSpecTest.java +25 -0
- package/Android-nRF-Mesh-Library/mesh/src/test/java/no/nordicsemi/android/mesh/transport/schedulerEntry/MonthSpecTest.java +38 -0
- package/Android-nRF-Mesh-Library/mesh/src/test/java/no/nordicsemi/android/mesh/transport/schedulerEntry/SceneSpecTest.java +16 -0
- package/Android-nRF-Mesh-Library/mesh/src/test/java/no/nordicsemi/android/mesh/transport/schedulerEntry/SecondSpecTest.java +25 -0
- package/Android-nRF-Mesh-Library/mesh/src/test/java/no/nordicsemi/android/mesh/transport/schedulerEntry/YearSpecTest.java +32 -0
- package/Android-nRF-Mesh-Library/mesh/src/test/java/no/nordicsemi/android/mesh/utils/MeshParserUtilsTest.java +24 -0
- package/Android-nRF-Mesh-Library/moustache/README.mo +179 -0
- package/Android-nRF-Mesh-Library/moustache/mo +1106 -0
- package/Android-nRF-Mesh-Library/moustache/split.sh +8 -0
- package/Android-nRF-Mesh-Library/settings.gradle +24 -0
- package/AutorunifyCapacitorNrfmesh.podspec +17 -0
- package/Package.swift +28 -0
- package/README.md +1593 -0
- package/android/build.gradle +74 -0
- package/android/settings.gradle +5 -0
- package/android/src/main/AndroidManifest.xml +21 -0
- package/android/src/main/java/com/autorunify/capacitor/nrfmesh/AsyncManager.kt +346 -0
- package/android/src/main/java/com/autorunify/capacitor/nrfmesh/BleManager.kt +423 -0
- package/android/src/main/java/com/autorunify/capacitor/nrfmesh/FormatManager.kt +446 -0
- package/android/src/main/java/com/autorunify/capacitor/nrfmesh/MeshDevice.kt +49 -0
- package/android/src/main/java/com/autorunify/capacitor/nrfmesh/MeshManager.kt +608 -0
- package/android/src/main/java/com/autorunify/capacitor/nrfmesh/NrfMeshPlugin.kt +942 -0
- package/android/src/main/java/com/autorunify/capacitor/nrfmesh/SensorWrapper.kt +173 -0
- package/android/src/main/java/com/autorunify/capacitor/nrfmesh/Utils.kt +35 -0
- package/android/src/main/res/.gitkeep +0 -0
- package/dist/docs.json +5918 -0
- package/dist/esm/definitions.d.ts +343 -0
- package/dist/esm/definitions.js +2 -0
- package/dist/esm/definitions.js.map +1 -0
- package/dist/esm/index.d.ts +5 -0
- package/dist/esm/index.js +8 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/sensor.d.ts +185 -0
- package/dist/esm/sensor.js +859 -0
- package/dist/esm/sensor.js.map +1 -0
- package/dist/esm/web.d.ts +26 -0
- package/dist/esm/web.js +27 -0
- package/dist/esm/web.js.map +1 -0
- package/dist/plugin.cjs.js +933 -0
- package/dist/plugin.cjs.js.map +1 -0
- package/dist/plugin.js +936 -0
- package/dist/plugin.js.map +1 -0
- package/ios/Sources/NrfMeshPlugin/NrfMesh.swift +8 -0
- package/ios/Sources/NrfMeshPlugin/NrfMeshPlugin.swift +23 -0
- package/ios/Tests/NrfMeshPluginTests/NrfMeshTests.swift +15 -0
- package/package.json +82 -0
package/Android-nRF-Mesh-Library/mesh/src/main/java/no/nordicsemi/android/mesh/BaseMeshNetwork.java
ADDED
|
@@ -0,0 +1,1550 @@
|
|
|
1
|
+
package no.nordicsemi.android.mesh;
|
|
2
|
+
|
|
3
|
+
import android.text.TextUtils;
|
|
4
|
+
import android.util.SparseIntArray;
|
|
5
|
+
|
|
6
|
+
import com.google.gson.annotations.Expose;
|
|
7
|
+
import com.google.gson.annotations.SerializedName;
|
|
8
|
+
|
|
9
|
+
import java.lang.annotation.Retention;
|
|
10
|
+
import java.lang.annotation.RetentionPolicy;
|
|
11
|
+
import java.util.ArrayList;
|
|
12
|
+
import java.util.Arrays;
|
|
13
|
+
import java.util.Collections;
|
|
14
|
+
import java.util.Comparator;
|
|
15
|
+
import java.util.HashMap;
|
|
16
|
+
import java.util.List;
|
|
17
|
+
import java.util.Map;
|
|
18
|
+
import java.util.UUID;
|
|
19
|
+
|
|
20
|
+
import androidx.annotation.IntDef;
|
|
21
|
+
import androidx.annotation.NonNull;
|
|
22
|
+
import androidx.annotation.Nullable;
|
|
23
|
+
import androidx.annotation.RestrictTo;
|
|
24
|
+
import androidx.room.ColumnInfo;
|
|
25
|
+
import androidx.room.Ignore;
|
|
26
|
+
import androidx.room.PrimaryKey;
|
|
27
|
+
import androidx.room.TypeConverters;
|
|
28
|
+
import no.nordicsemi.android.mesh.logger.MeshLogger;
|
|
29
|
+
import no.nordicsemi.android.mesh.transport.ConfigAppKeyUpdate;
|
|
30
|
+
import no.nordicsemi.android.mesh.transport.ConfigKeyRefreshPhaseSet;
|
|
31
|
+
import no.nordicsemi.android.mesh.transport.ConfigNetKeyUpdate;
|
|
32
|
+
import no.nordicsemi.android.mesh.transport.Element;
|
|
33
|
+
import no.nordicsemi.android.mesh.transport.ProvisionedMeshNode;
|
|
34
|
+
import no.nordicsemi.android.mesh.utils.MeshAddress;
|
|
35
|
+
import no.nordicsemi.android.mesh.utils.MeshParserUtils;
|
|
36
|
+
import no.nordicsemi.android.mesh.utils.ProxyFilter;
|
|
37
|
+
import no.nordicsemi.android.mesh.utils.SecureUtils;
|
|
38
|
+
|
|
39
|
+
import static no.nordicsemi.android.mesh.NetworkKey.KeyRefreshPhase;
|
|
40
|
+
import static no.nordicsemi.android.mesh.NetworkKey.KeyRefreshPhaseTransition;
|
|
41
|
+
|
|
42
|
+
@SuppressWarnings({"WeakerAccess", "UnusedReturnValue", "ComparatorCombinators", "unused"})
|
|
43
|
+
abstract class BaseMeshNetwork {
|
|
44
|
+
private static final String TAG = "BaseMeshNetwork";
|
|
45
|
+
// Key refresh phases
|
|
46
|
+
public static final int NORMAL_OPERATION = 0; //Normal operation
|
|
47
|
+
public static final int IV_UPDATE_ACTIVE = 1; //IV Update active
|
|
48
|
+
@PrimaryKey
|
|
49
|
+
@NonNull
|
|
50
|
+
@ColumnInfo(name = "mesh_uuid")
|
|
51
|
+
@SerializedName("meshUUID")
|
|
52
|
+
@Expose
|
|
53
|
+
final String meshUUID;
|
|
54
|
+
@Ignore
|
|
55
|
+
protected final Comparator<ApplicationKey> appKeyComparator = (key1, key2) -> Integer.compare(key1.getKeyIndex(), key2.getKeyIndex());
|
|
56
|
+
@Ignore
|
|
57
|
+
protected final Comparator<NetworkKey> netKeyComparator = (key1, key2) -> Integer.compare(key1.getKeyIndex(), key2.getKeyIndex());
|
|
58
|
+
@Ignore
|
|
59
|
+
protected MeshNetworkCallbacks mCallbacks;
|
|
60
|
+
@Ignore
|
|
61
|
+
@SerializedName("$schema")
|
|
62
|
+
@Expose
|
|
63
|
+
String schema = "http://json-schema.org/draft-04/schema#";
|
|
64
|
+
@Ignore
|
|
65
|
+
@SerializedName("id")
|
|
66
|
+
@Expose
|
|
67
|
+
String id = "https://www.bluetooth.com/specifications/specs/mesh-cdb-1-0-1-schema.json#";
|
|
68
|
+
@Ignore
|
|
69
|
+
@SerializedName("version")
|
|
70
|
+
@Expose
|
|
71
|
+
String version = "1.0.1";
|
|
72
|
+
@ColumnInfo(name = "mesh_name")
|
|
73
|
+
@SerializedName("meshName")
|
|
74
|
+
@Expose
|
|
75
|
+
String meshName = "nRF Mesh Network";
|
|
76
|
+
@ColumnInfo(name = "timestamp", defaultValue = "0")
|
|
77
|
+
@SerializedName("timestamp")
|
|
78
|
+
@Expose
|
|
79
|
+
long timestamp = System.currentTimeMillis();
|
|
80
|
+
@ColumnInfo(name = "partial", defaultValue = "0")
|
|
81
|
+
@SerializedName("partial")
|
|
82
|
+
@Expose
|
|
83
|
+
boolean partial = false;
|
|
84
|
+
@ColumnInfo(name = "iv_index")
|
|
85
|
+
@TypeConverters(MeshTypeConverters.class)
|
|
86
|
+
@Expose
|
|
87
|
+
@NonNull
|
|
88
|
+
IvIndex ivIndex = new IvIndex(0, false, null);
|
|
89
|
+
//Properties with Ignore are stored in their own table with the network's UUID as the foreign key
|
|
90
|
+
@Ignore
|
|
91
|
+
@SerializedName("netKeys")
|
|
92
|
+
@Expose
|
|
93
|
+
List<NetworkKey> netKeys = new ArrayList<>();
|
|
94
|
+
@Ignore
|
|
95
|
+
@SerializedName("appKeys")
|
|
96
|
+
@Expose
|
|
97
|
+
List<ApplicationKey> appKeys = new ArrayList<>();
|
|
98
|
+
@Ignore
|
|
99
|
+
@SerializedName("provisioners")
|
|
100
|
+
@Expose
|
|
101
|
+
List<Provisioner> provisioners = new ArrayList<>();
|
|
102
|
+
@Ignore
|
|
103
|
+
@SerializedName("nodes")
|
|
104
|
+
@Expose
|
|
105
|
+
List<ProvisionedMeshNode> nodes = new ArrayList<>();
|
|
106
|
+
@Ignore
|
|
107
|
+
@SerializedName("groups")
|
|
108
|
+
@Expose
|
|
109
|
+
List<Group> groups = new ArrayList<>();
|
|
110
|
+
@Ignore
|
|
111
|
+
@SerializedName("scenes")
|
|
112
|
+
@Expose
|
|
113
|
+
List<Scene> scenes = new ArrayList<>();
|
|
114
|
+
@SerializedName("networkExclusions")
|
|
115
|
+
@TypeConverters(MeshTypeConverters.class)
|
|
116
|
+
@NonNull
|
|
117
|
+
@ColumnInfo(name = "network_exclusions", defaultValue = "{}")
|
|
118
|
+
@Expose
|
|
119
|
+
protected Map<Integer, List<Integer>> networkExclusions = new HashMap<>();
|
|
120
|
+
//Library related attributes
|
|
121
|
+
@Ignore
|
|
122
|
+
@ColumnInfo(name = "unicast_address")
|
|
123
|
+
@Expose
|
|
124
|
+
int unicastAddress = 0x0001;
|
|
125
|
+
@ColumnInfo(name = "last_selected")
|
|
126
|
+
@Expose
|
|
127
|
+
boolean lastSelected;
|
|
128
|
+
@Ignore
|
|
129
|
+
@Expose(serialize = false, deserialize = false)
|
|
130
|
+
protected SparseIntArray sequenceNumbers = new SparseIntArray();
|
|
131
|
+
@Ignore
|
|
132
|
+
@Expose(serialize = false, deserialize = false)
|
|
133
|
+
private ProxyFilter proxyFilter;
|
|
134
|
+
@Ignore
|
|
135
|
+
protected final Comparator<ProvisionedMeshNode> nodeComparator = (node1, node2) ->
|
|
136
|
+
Integer.compare(node1.getUnicastAddress(), node2.getUnicastAddress());
|
|
137
|
+
@Ignore
|
|
138
|
+
protected final Comparator<Group> groupComparator = (group1, group2) ->
|
|
139
|
+
Integer.compare(group1.getAddress(), group2.getAddress());
|
|
140
|
+
@Ignore
|
|
141
|
+
protected final Comparator<Scene> sceneComparator = (scene1, scene2) ->
|
|
142
|
+
Integer.compare(scene1.getNumber(), scene2.getNumber());
|
|
143
|
+
@Ignore
|
|
144
|
+
protected final Comparator<AllocatedUnicastRange> unicastRangeComparator = (range1, range2) ->
|
|
145
|
+
Integer.compare(range1.getLowAddress(), range2.getLowAddress());
|
|
146
|
+
@Ignore
|
|
147
|
+
protected final Comparator<AllocatedGroupRange> groupRangeComparator = (range1, range2) ->
|
|
148
|
+
Integer.compare(range1.getLowAddress(), range2.getLowAddress());
|
|
149
|
+
@Ignore
|
|
150
|
+
protected final Comparator<AllocatedSceneRange> sceneRangeComparator = (range1, range2) ->
|
|
151
|
+
Integer.compare(range1.getFirstScene(), range2.getFirstScene());
|
|
152
|
+
|
|
153
|
+
BaseMeshNetwork(@NonNull final String meshUUID) {
|
|
154
|
+
this.meshUUID = meshUUID;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
private boolean isNetKeyExists(@NonNull final byte[] key) {
|
|
158
|
+
for (int i = 0; i < netKeys.size(); i++) {
|
|
159
|
+
if (Arrays.equals(key, netKeys.get(i).getKey())) {
|
|
160
|
+
return true;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
return false;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Creates an Network key
|
|
168
|
+
*
|
|
169
|
+
* @return {@link NetworkKey}
|
|
170
|
+
* @throws IllegalArgumentException in case the generated application key already exists
|
|
171
|
+
*/
|
|
172
|
+
public NetworkKey createNetworkKey() throws IllegalArgumentException {
|
|
173
|
+
final NetworkKey key = new NetworkKey(getAvailableNetKeyIndex(), MeshParserUtils.toByteArray(SecureUtils.generateRandomNetworkKey()));
|
|
174
|
+
key.setMeshUuid(meshUUID);
|
|
175
|
+
return key;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Adds a Net key to the list of net keys with the given key index
|
|
180
|
+
*
|
|
181
|
+
* @param newNetKey Network key
|
|
182
|
+
* @throws IllegalArgumentException if the key already exists.
|
|
183
|
+
*/
|
|
184
|
+
public boolean addNetKey(@NonNull final NetworkKey newNetKey) {
|
|
185
|
+
if (isNetKeyExists(newNetKey.getKey())) {
|
|
186
|
+
throw new IllegalArgumentException("Net key already exists, check the contents of the key!");
|
|
187
|
+
} else {
|
|
188
|
+
newNetKey.setMeshUuid(meshUUID);
|
|
189
|
+
netKeys.add(newNetKey);
|
|
190
|
+
notifyNetKeyAdded(newNetKey);
|
|
191
|
+
}
|
|
192
|
+
return true;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
private int getAvailableNetKeyIndex() {
|
|
196
|
+
if (netKeys.isEmpty()) {
|
|
197
|
+
return 0;
|
|
198
|
+
} else {
|
|
199
|
+
Collections.sort(netKeys, netKeyComparator);
|
|
200
|
+
final int index = netKeys.size() - 1;
|
|
201
|
+
return netKeys.get(index).getKeyIndex() + 1;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* Update a network key with the given 16-byte hexadecimal string in the mesh network.
|
|
207
|
+
*
|
|
208
|
+
* <p>
|
|
209
|
+
* Updating a NetworkKey's key value requires initiating a Key Refresh Procedure. A NetworkKey that's in use
|
|
210
|
+
* would require a Key Refresh Procedure to update it's key contents. However a NetworkKey that's not in could
|
|
211
|
+
* be updated without this procedure. If the key is in use, call {@link #distributeNetKey(NetworkKey, byte[])}
|
|
212
|
+
* to initiate the Key Refresh Procedure.
|
|
213
|
+
* </p>
|
|
214
|
+
*
|
|
215
|
+
* @param networkKey Network key
|
|
216
|
+
* @param newNetKey 16-byte hexadecimal string
|
|
217
|
+
* @throws IllegalArgumentException if the key is already in use
|
|
218
|
+
*/
|
|
219
|
+
public boolean updateNetKey(@NonNull final NetworkKey networkKey, @NonNull final String newNetKey) throws IllegalArgumentException {
|
|
220
|
+
if (MeshParserUtils.validateKeyInput(newNetKey)) {
|
|
221
|
+
final byte[] key = MeshParserUtils.toByteArray(newNetKey);
|
|
222
|
+
if (isNetKeyExists(key)) {
|
|
223
|
+
throw new IllegalArgumentException("Net key value is already in use.");
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
final int keyIndex = networkKey.getKeyIndex();
|
|
227
|
+
final NetworkKey netKey = getNetKey(keyIndex);
|
|
228
|
+
if (!isKeyInUse(netKey)) {
|
|
229
|
+
//We check if the contents of the key are the same
|
|
230
|
+
//This will return true only if the key index and the key are the same
|
|
231
|
+
if (netKey.equals(networkKey)) {
|
|
232
|
+
netKey.setKey(key);
|
|
233
|
+
return updateMeshKey(netKey);
|
|
234
|
+
} else {
|
|
235
|
+
return false;
|
|
236
|
+
}
|
|
237
|
+
} else {
|
|
238
|
+
throw new IllegalArgumentException("Unable to update a network key that's already in use. ");
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
return false;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* Update a network key in the mesh network.
|
|
246
|
+
*
|
|
247
|
+
* <p>
|
|
248
|
+
* Updating a NetworkKey's key value requires initiating a Key Refresh Procedure. A NetworkKey that's in use
|
|
249
|
+
* would require a Key Refresh Procedure to update it's key contents. However a NetworkKey that's not in could
|
|
250
|
+
* be updated without this procedure. If the key is in use, call {@link #distributeNetKey(NetworkKey, byte[])}
|
|
251
|
+
* to initiate the Key Refresh Procedure.
|
|
252
|
+
* </p>
|
|
253
|
+
*
|
|
254
|
+
* @param networkKey Network key
|
|
255
|
+
* @throws IllegalArgumentException if the key is already in use
|
|
256
|
+
*/
|
|
257
|
+
public boolean updateNetKey(@NonNull final NetworkKey networkKey) throws IllegalArgumentException {
|
|
258
|
+
final int keyIndex = networkKey.getKeyIndex();
|
|
259
|
+
final NetworkKey key = getNetKey(keyIndex);
|
|
260
|
+
//We check if the contents of the key are the same
|
|
261
|
+
//This will return true only if the key index and the key are the same
|
|
262
|
+
if (key.equals(networkKey)) {
|
|
263
|
+
// The name might be updated so we must update the key.
|
|
264
|
+
return updateMeshKey(networkKey);
|
|
265
|
+
} else {
|
|
266
|
+
//If the keys are not the same we check if its in use before updating the key
|
|
267
|
+
if (!isKeyInUse(key)) {
|
|
268
|
+
//We check if the contents of the key are the same
|
|
269
|
+
//This will return true only if the key index and the key are the same
|
|
270
|
+
return updateMeshKey(networkKey);
|
|
271
|
+
} else {
|
|
272
|
+
throw new IllegalArgumentException("Unable to update a network key that's already in use.");
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
/**
|
|
278
|
+
* Distribute Net Key will start the key refresh procedure and return the newly updated key.
|
|
279
|
+
*
|
|
280
|
+
* <p>
|
|
281
|
+
* This process contains three phases.
|
|
282
|
+
* {@link KeyRefreshPhase#KEY_DISTRIBUTION} - Distribution of the new Keys {@link #distributeNetKey(NetworkKey, byte[])}.
|
|
283
|
+
* {@link KeyRefreshPhase#USING_NEW_KEYS} - Switching to the new keys {@link #switchToNewKey(NetworkKey)}.
|
|
284
|
+
* {@link KeyRefreshPhase#REVOKE_OLD_KEYS} - Revoking old keys {@link #revokeOldKey(NetworkKey)}.
|
|
285
|
+
* The new key is distributed to the provisioner node by setting the currently used key as the old key and setting the
|
|
286
|
+
* currently used key to the new key value. This will change the phase of the network key to{@link KeyRefreshPhase#KEY_DISTRIBUTION}.
|
|
287
|
+
* During this phase a node will transmit using the old key but may receive using both old and the new key. After a successful
|
|
288
|
+
* distribution to the provisioner, the user may start sending {@link ConfigNetKeyUpdate} messages to the respective nodes in the
|
|
289
|
+
* network that requires updating. In addition if the user wishes to update the AppKey call {@link #distributeAppKey(ApplicationKey, byte[])}
|
|
290
|
+
* to update the Application Key on the provisioner and then distribute it to other nodes by sending {@link ConfigAppKeyUpdate} to
|
|
291
|
+
* update an AppKey. However it shall be only successfully processed if the NetworkKey bound to the Application Key is in
|
|
292
|
+
* {@link KeyRefreshPhase#KEY_DISTRIBUTION} and the received app key value is different or when the received AppKey value is the same as
|
|
293
|
+
* previously received value. Also note that sending a ConfigNetKeyUpdate during {@link KeyRefreshPhase#NORMAL_OPERATION} will switch the
|
|
294
|
+
* phase to {@link KeyRefreshPhase#KEY_DISTRIBUTION}. Once distribution is completed, call {@link #switchToNewKey(NetworkKey)} and
|
|
295
|
+
* send {@link ConfigKeyRefreshPhaseSet} to other nodes.
|
|
296
|
+
* </p>
|
|
297
|
+
*
|
|
298
|
+
* @param networkKey Network key
|
|
299
|
+
* @param newNetKey 16-byte key
|
|
300
|
+
* @throws IllegalArgumentException the key value is already in use.
|
|
301
|
+
*/
|
|
302
|
+
public NetworkKey distributeNetKey(@NonNull final NetworkKey networkKey, @NonNull final byte[] newNetKey) throws IllegalArgumentException {
|
|
303
|
+
if (validateKey(newNetKey)) {
|
|
304
|
+
if (isNetKeyExists(newNetKey)) {
|
|
305
|
+
throw new IllegalArgumentException("Net key value is already in use.");
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
final int keyIndex = networkKey.getKeyIndex();
|
|
309
|
+
final NetworkKey netKey = getNetKey(keyIndex);
|
|
310
|
+
if (netKey.equals(networkKey)) {
|
|
311
|
+
if (netKey.distributeKey(newNetKey)) {
|
|
312
|
+
updateNodeKeyStatus(netKey);
|
|
313
|
+
if (updateMeshKey(netKey)) {
|
|
314
|
+
return netKey;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
return null;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
/**
|
|
323
|
+
* Updates the NodeKey object for Network or Application Keys
|
|
324
|
+
*
|
|
325
|
+
* @param meshKey Updated Key
|
|
326
|
+
*/
|
|
327
|
+
private void updateNodeKeyStatus(@NonNull final MeshKey meshKey) {
|
|
328
|
+
for (Provisioner provisioner : provisioners) {
|
|
329
|
+
for (ProvisionedMeshNode node : nodes) {
|
|
330
|
+
if (node.getUuid().equalsIgnoreCase(provisioner.getProvisionerUuid())) {
|
|
331
|
+
if (meshKey instanceof NetworkKey) {
|
|
332
|
+
for (NodeKey key : node.getAddedNetKeys()) {
|
|
333
|
+
if (key.getIndex() == meshKey.getKeyIndex()) {
|
|
334
|
+
key.setUpdated(true);
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
} else {
|
|
338
|
+
for (NodeKey key : node.getAddedAppKeys()) {
|
|
339
|
+
if (key.getIndex() == meshKey.getKeyIndex()) {
|
|
340
|
+
key.setUpdated(true);
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
/**
|
|
350
|
+
* Switches the new key, this will initiate the provisioner node transmitting messages using the new keys but will
|
|
351
|
+
* support receiving messages using both old and the new key.
|
|
352
|
+
*
|
|
353
|
+
* <p>
|
|
354
|
+
* This must be called after {@link #distributeNetKey(NetworkKey, byte[])}
|
|
355
|
+
* </p>
|
|
356
|
+
*
|
|
357
|
+
* @param networkKey Network key to switch too
|
|
358
|
+
* @return true if success or false otherwise
|
|
359
|
+
* @throws IllegalArgumentException if the provided key is not the same as the distributed key.
|
|
360
|
+
*/
|
|
361
|
+
public boolean switchToNewKey(@NonNull final NetworkKey networkKey) throws IllegalArgumentException {
|
|
362
|
+
if (!netKeys.contains(networkKey)) {
|
|
363
|
+
throw new IllegalArgumentException("Network Key not distributed");
|
|
364
|
+
}
|
|
365
|
+
return networkKey.switchToNewKey();
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
/**
|
|
369
|
+
* Revokes the old key.
|
|
370
|
+
* <p>
|
|
371
|
+
* This initiates {@link KeyRefreshPhase#REVOKE_OLD_KEYS} of the Key Refresh Procedure in which user must send {@link ConfigKeyRefreshPhaseSet}
|
|
372
|
+
* message with transition set to {@link KeyRefreshPhaseTransition#REVOKE_OLD_KEYS} to the other nodes going through the Key Refresh Procedure.
|
|
373
|
+
* The library at this point will set the given Network Key's Phase to {@link KeyRefreshPhase#NORMAL_OPERATION}.
|
|
374
|
+
* </p>
|
|
375
|
+
*
|
|
376
|
+
* @param networkKey Network key that was distributed
|
|
377
|
+
* @return true if success or false otherwise
|
|
378
|
+
*/
|
|
379
|
+
public boolean revokeOldKey(@NonNull final NetworkKey networkKey) {
|
|
380
|
+
if (netKeys.contains(networkKey)) {
|
|
381
|
+
return networkKey.revokeOldKey();
|
|
382
|
+
}
|
|
383
|
+
return false;
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
|
|
387
|
+
/**
|
|
388
|
+
* Removes a network key from the network key list
|
|
389
|
+
*
|
|
390
|
+
* @param networkKey key to be removed
|
|
391
|
+
* @throws IllegalArgumentException if the key is in use or if it does not exist in the list of keys
|
|
392
|
+
*/
|
|
393
|
+
public boolean removeNetKey(@NonNull final NetworkKey networkKey) throws IllegalArgumentException {
|
|
394
|
+
if (!isKeyInUse(networkKey)) {
|
|
395
|
+
if (netKeys.remove(networkKey)) {
|
|
396
|
+
notifyNetKeyDeleted(networkKey);
|
|
397
|
+
return true;
|
|
398
|
+
} else {
|
|
399
|
+
throw new IllegalArgumentException("Key does not exist.");
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
throw new IllegalArgumentException("Unable to delete a network key that's already in use.");
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
/**
|
|
406
|
+
* Returns a network key with a given key index.
|
|
407
|
+
*
|
|
408
|
+
* @param keyIndex index
|
|
409
|
+
*/
|
|
410
|
+
public NetworkKey getNetKey(final int keyIndex) {
|
|
411
|
+
for (NetworkKey key : netKeys) {
|
|
412
|
+
if (keyIndex == key.getKeyIndex()) {
|
|
413
|
+
try {
|
|
414
|
+
return key.clone();
|
|
415
|
+
} catch (CloneNotSupportedException e) {
|
|
416
|
+
MeshLogger.error(TAG, "Error while cloning key: " + e.getMessage());
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
return null;
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
/**
|
|
424
|
+
* Creates an application key
|
|
425
|
+
*
|
|
426
|
+
* @return {@link ApplicationKey}
|
|
427
|
+
* @throws IllegalArgumentException in case the generated application key already exists
|
|
428
|
+
*/
|
|
429
|
+
public ApplicationKey createAppKey() throws IllegalArgumentException {
|
|
430
|
+
if (netKeys.isEmpty()) {
|
|
431
|
+
throw new IllegalStateException("Cannot create an App Key without a Network key. Consider creating a network key first");
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
final ApplicationKey key = new ApplicationKey(getAvailableAppKeyIndex(), MeshParserUtils.toByteArray(SecureUtils.generateRandomApplicationKey()));
|
|
435
|
+
key.setMeshUuid(meshUUID);
|
|
436
|
+
return key;
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
/**
|
|
440
|
+
* Adds an app key to the list of keys with the given key index. If there is an existing key with the same index,
|
|
441
|
+
* an illegal argument exception is thrown.
|
|
442
|
+
*
|
|
443
|
+
* @param newAppKey application key
|
|
444
|
+
* @throws IllegalArgumentException if app key already exists
|
|
445
|
+
*/
|
|
446
|
+
public boolean addAppKey(@NonNull final ApplicationKey newAppKey) {
|
|
447
|
+
if (netKeys.isEmpty()) {
|
|
448
|
+
throw new IllegalStateException("Cannot create an App Key without a Network key. Consider creating a network key first");
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
if (isAppKeyExists(newAppKey.getKey())) {
|
|
452
|
+
throw new IllegalArgumentException("App key already exists, check the contents of the key!");
|
|
453
|
+
} else {
|
|
454
|
+
newAppKey.setMeshUuid(meshUUID);
|
|
455
|
+
appKeys.add(newAppKey);
|
|
456
|
+
notifyAppKeyAdded(newAppKey);
|
|
457
|
+
}
|
|
458
|
+
return true;
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
private int getAvailableAppKeyIndex() {
|
|
462
|
+
if (appKeys.isEmpty()) {
|
|
463
|
+
return 0;
|
|
464
|
+
} else {
|
|
465
|
+
Collections.sort(appKeys, appKeyComparator);
|
|
466
|
+
final int index = appKeys.size() - 1;
|
|
467
|
+
return appKeys.get(index).getKeyIndex() + 1;
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
/**
|
|
472
|
+
* Returns an application key with a given key index
|
|
473
|
+
*
|
|
474
|
+
* @param keyIndex index
|
|
475
|
+
*/
|
|
476
|
+
public ApplicationKey getAppKey(final int keyIndex) {
|
|
477
|
+
for (ApplicationKey key : appKeys) {
|
|
478
|
+
if (keyIndex == key.getKeyIndex()) {
|
|
479
|
+
try {
|
|
480
|
+
return key.clone();
|
|
481
|
+
} catch (CloneNotSupportedException e) {
|
|
482
|
+
MeshLogger.error(TAG, "Error while cloning key: " + e.getMessage());
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
return null;
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
/**
|
|
490
|
+
* Returns a list of application keys bound to a Network key
|
|
491
|
+
*
|
|
492
|
+
* @param boundNetKeyIndex Network Key index
|
|
493
|
+
*/
|
|
494
|
+
protected List<ApplicationKey> getAppKeys(final int boundNetKeyIndex) {
|
|
495
|
+
final List<ApplicationKey> applicationKeys = new ArrayList<>();
|
|
496
|
+
for (ApplicationKey applicationKey : appKeys) {
|
|
497
|
+
if (applicationKey.getBoundNetKeyIndex() == boundNetKeyIndex) {
|
|
498
|
+
applicationKeys.add(applicationKey);
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
return applicationKeys;
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
private boolean isAppKeyExists(@NonNull final byte[] appKey) {
|
|
505
|
+
for (int i = 0; i < appKeys.size(); i++) {
|
|
506
|
+
final ApplicationKey applicationKey = appKeys.get(i);
|
|
507
|
+
if (Arrays.equals(applicationKey.getKey(), appKey)) {
|
|
508
|
+
return true;
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
return false;
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
/**
|
|
515
|
+
* Updates an app key with a given key in the mesh network.
|
|
516
|
+
*
|
|
517
|
+
* <p>
|
|
518
|
+
* Updates the Key if it is not use, if not Updating a Key's key value requires initiating a Key Refresh Procedure.
|
|
519
|
+
* This requires the bound NetworkKey of the AppKey to be updated. A NetworkKey that's in use would require a
|
|
520
|
+
* Key Refresh Procedure to update it's key contents. However a NetworkKey that's not in could be updated without this
|
|
521
|
+
* procedure. If the key is in use, call {@link #distributeNetKey(NetworkKey, byte[])} to initiate the Key Refresh Procedure.
|
|
522
|
+
* </p>
|
|
523
|
+
*
|
|
524
|
+
* @param applicationKey {@link ApplicationKey}
|
|
525
|
+
* @param newAppKey Application key
|
|
526
|
+
* @throws IllegalArgumentException if the key is in use.
|
|
527
|
+
*/
|
|
528
|
+
public boolean updateAppKey(@NonNull final ApplicationKey applicationKey, @NonNull final String newAppKey) throws IllegalArgumentException {
|
|
529
|
+
if (MeshParserUtils.validateKeyInput(newAppKey)) {
|
|
530
|
+
final byte[] key = MeshParserUtils.toByteArray(newAppKey);
|
|
531
|
+
if (isNetKeyExists(key)) {
|
|
532
|
+
throw new IllegalArgumentException("Net key already in use");
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
final int keyIndex = applicationKey.getKeyIndex();
|
|
536
|
+
final ApplicationKey appKey = getAppKey(keyIndex);
|
|
537
|
+
if (!isKeyInUse(appKey)) {
|
|
538
|
+
//We check if the contents of the key are the same
|
|
539
|
+
//This will return true only if the key index and the key are the same
|
|
540
|
+
if (appKey.equals(applicationKey)) {
|
|
541
|
+
appKey.setKey(key);
|
|
542
|
+
return updateMeshKey(appKey);
|
|
543
|
+
} else {
|
|
544
|
+
return false;
|
|
545
|
+
}
|
|
546
|
+
} else {
|
|
547
|
+
throw new IllegalArgumentException("Unable to update a application key that's already in use.");
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
return false;
|
|
551
|
+
}
|
|
552
|
+
|
|
553
|
+
/**
|
|
554
|
+
* Updates an app key in the mesh network.
|
|
555
|
+
*
|
|
556
|
+
* <p>
|
|
557
|
+
* Updates the Key if it is not use, if not Updating a Key's key value requires initiating a Key Refresh Procedure. This requires
|
|
558
|
+
* the bound NetworkKey of the AppKey to be updated. A NetworkKey that's in use would require aKey Refresh Procedure to update
|
|
559
|
+
* it's key contents. However a NetworkKey that's not in could be updated without this procedure. If the key is in use, call
|
|
560
|
+
* {@link #distributeNetKey(NetworkKey, byte[])} to initiate the Key Refresh Procedure. After distributing the NetworkKey bound to
|
|
561
|
+
* the Application Key, user may call {@link #distributeAppKey(ApplicationKey, byte[])} to update the corresponding ApplicationKey.
|
|
562
|
+
* </p>
|
|
563
|
+
*
|
|
564
|
+
* @param applicationKey {@link ApplicationKey}
|
|
565
|
+
* @throws IllegalArgumentException if the key is already in use
|
|
566
|
+
*/
|
|
567
|
+
public boolean updateAppKey(@NonNull final ApplicationKey applicationKey) throws IllegalArgumentException {
|
|
568
|
+
final int keyIndex = applicationKey.getKeyIndex();
|
|
569
|
+
final ApplicationKey key = getAppKey(keyIndex);
|
|
570
|
+
//If the keys are not the same we check if its in use before updating the key
|
|
571
|
+
if (!isKeyInUse(key)) {
|
|
572
|
+
//We check if the contents of the key are the same
|
|
573
|
+
//This will return true only if the key index and the key are the same
|
|
574
|
+
return updateMeshKey(applicationKey);
|
|
575
|
+
} else {
|
|
576
|
+
throw new IllegalArgumentException("Unable to update a application key that's already in use.");
|
|
577
|
+
}
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
/**
|
|
581
|
+
* Distributes/updates the provisioner node's the application key and returns the updated Application Key.
|
|
582
|
+
*
|
|
583
|
+
* <p>
|
|
584
|
+
* This will only work if the NetworkKey bound to this ApplicationKey is in Phase 1 of the Key Refresh Procedure. Therefore the NetworkKey
|
|
585
|
+
* must be updated first before updating it's bound application key. Call {@link #distributeNetKey(NetworkKey, byte[])} to initiate the
|
|
586
|
+
* Key Refresh Procedure to update a Network Key that's in use by the provisioner or the nodes, if it has not been started already.
|
|
587
|
+
* To update a key that's not in use call {@link #updateAppKey(ApplicationKey, String)}
|
|
588
|
+
* <p>
|
|
589
|
+
* Once the provisioner nodes' AppKey is updated user must distribute the updated AppKey to the nodes. This can be done by sending
|
|
590
|
+
* {@link ConfigAppKeyUpdate} message with the new key.
|
|
591
|
+
* </p>
|
|
592
|
+
*
|
|
593
|
+
* @param applicationKey Network key
|
|
594
|
+
* @param newAppKey 16-byte key
|
|
595
|
+
* @throws IllegalArgumentException the key value is already in use.
|
|
596
|
+
*/
|
|
597
|
+
public ApplicationKey distributeAppKey(@NonNull final ApplicationKey applicationKey, @NonNull final byte[] newAppKey) throws IllegalArgumentException {
|
|
598
|
+
if (validateKey(newAppKey)) {
|
|
599
|
+
if (isAppKeyExists(newAppKey)) {
|
|
600
|
+
throw new IllegalArgumentException("App key value is already in use.");
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
final int keyIndex = applicationKey.getKeyIndex();
|
|
604
|
+
final ApplicationKey appKey = getAppKey(keyIndex);
|
|
605
|
+
if (appKey.equals(applicationKey)) {
|
|
606
|
+
if (appKey.distributeKey(newAppKey)) {
|
|
607
|
+
updateNodeKeyStatus(appKey);
|
|
608
|
+
if (updateMeshKey(appKey)) {
|
|
609
|
+
return appKey;
|
|
610
|
+
}
|
|
611
|
+
}
|
|
612
|
+
}
|
|
613
|
+
}
|
|
614
|
+
return null;
|
|
615
|
+
}
|
|
616
|
+
|
|
617
|
+
private boolean updateMeshKey(@NonNull final MeshKey key) {
|
|
618
|
+
if (key instanceof ApplicationKey) {
|
|
619
|
+
ApplicationKey appKey = null;
|
|
620
|
+
for (int i = 0; i < appKeys.size(); i++) {
|
|
621
|
+
final ApplicationKey tempKey = appKeys.get(i);
|
|
622
|
+
if (tempKey.getKeyIndex() == key.getKeyIndex()) {
|
|
623
|
+
appKey = (ApplicationKey) key;
|
|
624
|
+
appKeys.set(i, appKey);
|
|
625
|
+
break;
|
|
626
|
+
}
|
|
627
|
+
}
|
|
628
|
+
if (appKey != null) {
|
|
629
|
+
notifyAppKeyUpdated(appKey);
|
|
630
|
+
return true;
|
|
631
|
+
}
|
|
632
|
+
} else {
|
|
633
|
+
NetworkKey netKey = null;
|
|
634
|
+
for (int i = 0; i < netKeys.size(); i++) {
|
|
635
|
+
final NetworkKey tempKey = netKeys.get(i);
|
|
636
|
+
if (tempKey.getKeyIndex() == key.getKeyIndex()) {
|
|
637
|
+
netKey = (NetworkKey) key;
|
|
638
|
+
netKeys.set(i, netKey);
|
|
639
|
+
break;
|
|
640
|
+
}
|
|
641
|
+
}
|
|
642
|
+
if (netKey != null) {
|
|
643
|
+
netKey.setTimestamp(System.currentTimeMillis());
|
|
644
|
+
notifyNetKeyUpdated(netKey);
|
|
645
|
+
return true;
|
|
646
|
+
}
|
|
647
|
+
}
|
|
648
|
+
return false;
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
/**
|
|
652
|
+
* Removes an app key from the app key list
|
|
653
|
+
*
|
|
654
|
+
* @param appKey app key to be removed
|
|
655
|
+
* @throws IllegalArgumentException if the key is in use or if it does not exist in the list of keys
|
|
656
|
+
*/
|
|
657
|
+
public boolean removeAppKey(@NonNull final ApplicationKey appKey) throws IllegalArgumentException {
|
|
658
|
+
if (isKeyInUse(appKey)) {
|
|
659
|
+
throw new IllegalArgumentException("Unable to delete an app key that's in use.");
|
|
660
|
+
} else {
|
|
661
|
+
if (appKeys.remove(appKey)) {
|
|
662
|
+
notifyAppKeyDeleted(appKey);
|
|
663
|
+
return true;
|
|
664
|
+
} else {
|
|
665
|
+
throw new IllegalArgumentException("Key does not exist.");
|
|
666
|
+
}
|
|
667
|
+
}
|
|
668
|
+
}
|
|
669
|
+
|
|
670
|
+
/**
|
|
671
|
+
* Checks if the app key is in use.
|
|
672
|
+
*
|
|
673
|
+
* <p>
|
|
674
|
+
* This will check if the specified app key is added to a node other than the selected provisioner node
|
|
675
|
+
* </p>
|
|
676
|
+
*
|
|
677
|
+
* @param meshKey {@link MeshKey}
|
|
678
|
+
*/
|
|
679
|
+
public boolean isKeyInUse(@NonNull final MeshKey meshKey) {
|
|
680
|
+
// We should not allow deleting a network key that is bound to an application key.
|
|
681
|
+
// This would require deleting the application key that's bound to this network key before deleting network key.
|
|
682
|
+
if (meshKey instanceof NetworkKey) {
|
|
683
|
+
for (ApplicationKey applicationKey : appKeys) {
|
|
684
|
+
if (meshKey.getKeyIndex() == applicationKey.getBoundNetKeyIndex()) {
|
|
685
|
+
throw new IllegalArgumentException("Please unbind " + meshKey.name + " from the " + applicationKey.name + " or delete the bound " + applicationKey.name + " first.");
|
|
686
|
+
}
|
|
687
|
+
}
|
|
688
|
+
}
|
|
689
|
+
|
|
690
|
+
for (ProvisionedMeshNode node : nodes) {
|
|
691
|
+
if (!node.getUuid().equalsIgnoreCase(getSelectedProvisioner().getProvisionerUuid())) {
|
|
692
|
+
final int index = meshKey.getKeyIndex();
|
|
693
|
+
//We need to check if a key index is in use by checking in the added net/app key indexes
|
|
694
|
+
if (meshKey instanceof ApplicationKey) {
|
|
695
|
+
return MeshParserUtils.isNodeKeyExists(node.getAddedAppKeys(), index);
|
|
696
|
+
} else {
|
|
697
|
+
return MeshParserUtils.isNodeKeyExists(node.getAddedNetKeys(), index);
|
|
698
|
+
}
|
|
699
|
+
}
|
|
700
|
+
}
|
|
701
|
+
return false;
|
|
702
|
+
}
|
|
703
|
+
|
|
704
|
+
@Nullable
|
|
705
|
+
public Integer getProvisionerAddress() {
|
|
706
|
+
return getSelectedProvisioner().getProvisionerAddress();
|
|
707
|
+
}
|
|
708
|
+
|
|
709
|
+
/**
|
|
710
|
+
* Returns the next available unicast address
|
|
711
|
+
*
|
|
712
|
+
* @return unicast address
|
|
713
|
+
*/
|
|
714
|
+
@RestrictTo(RestrictTo.Scope.LIBRARY)
|
|
715
|
+
public int getUnicastAddress() {
|
|
716
|
+
return unicastAddress;
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
@RestrictTo(RestrictTo.Scope.LIBRARY)
|
|
720
|
+
public void setUnicastAddress(final int address) {
|
|
721
|
+
this.unicastAddress = address;
|
|
722
|
+
}
|
|
723
|
+
|
|
724
|
+
/**
|
|
725
|
+
* Assigns a unicast address, to be used by a node
|
|
726
|
+
*
|
|
727
|
+
* @param unicastAddress Unicast address
|
|
728
|
+
* @return true if success, false if the address is in use by another device
|
|
729
|
+
*/
|
|
730
|
+
public boolean assignUnicastAddress(final int unicastAddress) throws IllegalArgumentException {
|
|
731
|
+
if (getNode(unicastAddress) != null)
|
|
732
|
+
throw new IllegalArgumentException("Unicast address is already in use.");
|
|
733
|
+
|
|
734
|
+
this.unicastAddress = unicastAddress;
|
|
735
|
+
notifyNetworkUpdated();
|
|
736
|
+
return true;
|
|
737
|
+
}
|
|
738
|
+
|
|
739
|
+
private boolean isAddressInUse(@Nullable final Integer address) {
|
|
740
|
+
if (address == null)
|
|
741
|
+
return false;
|
|
742
|
+
|
|
743
|
+
for (ProvisionedMeshNode node : nodes) {
|
|
744
|
+
if (address == node.getUnicastAddress()) {
|
|
745
|
+
return true;
|
|
746
|
+
}
|
|
747
|
+
}
|
|
748
|
+
return false;
|
|
749
|
+
}
|
|
750
|
+
|
|
751
|
+
public int getGlobalTtl() {
|
|
752
|
+
return getSelectedProvisioner().getGlobalTtl();
|
|
753
|
+
}
|
|
754
|
+
|
|
755
|
+
/**
|
|
756
|
+
* Sets the global ttl of the messages sent by the provisioner
|
|
757
|
+
*
|
|
758
|
+
* @param globalTtl ttl
|
|
759
|
+
*/
|
|
760
|
+
public void setGlobalTtl(final int globalTtl) {
|
|
761
|
+
final Provisioner provisioner = provisioners.get(0);
|
|
762
|
+
provisioner.setGlobalTtl(globalTtl);
|
|
763
|
+
notifyProvisionerUpdated(provisioner);
|
|
764
|
+
}
|
|
765
|
+
|
|
766
|
+
/**
|
|
767
|
+
* Returns the list of {@link Provisioner}
|
|
768
|
+
*/
|
|
769
|
+
public List<Provisioner> getProvisioners() {
|
|
770
|
+
return Collections.unmodifiableList(provisioners);
|
|
771
|
+
}
|
|
772
|
+
|
|
773
|
+
void setProvisioners(List<Provisioner> provisioners) {
|
|
774
|
+
this.provisioners = provisioners;
|
|
775
|
+
}
|
|
776
|
+
|
|
777
|
+
/**
|
|
778
|
+
* Creates a provisioner with a given name
|
|
779
|
+
*
|
|
780
|
+
* @param name Provisioner name
|
|
781
|
+
* @return {@link Provisioner}
|
|
782
|
+
* @throws IllegalArgumentException if the name is empty
|
|
783
|
+
*/
|
|
784
|
+
public Provisioner createProvisioner(@NonNull final String name) throws IllegalArgumentException {
|
|
785
|
+
return createProvisioner(name,
|
|
786
|
+
new AllocatedUnicastRange(0x0001, 0x199A),
|
|
787
|
+
new AllocatedGroupRange(0xC000, 0xCC9A),
|
|
788
|
+
new AllocatedSceneRange(0x0001, 0x3333));
|
|
789
|
+
}
|
|
790
|
+
|
|
791
|
+
/**
|
|
792
|
+
* Creates a provisioner
|
|
793
|
+
*
|
|
794
|
+
* @param name Provisioner name
|
|
795
|
+
* @param unicastRange {@link AllocatedUnicastRange} for the provisioner
|
|
796
|
+
* @param groupRange {@link AllocatedGroupRange} for the provisioner
|
|
797
|
+
* @param sceneRange {@link AllocatedSceneRange} for the provisioner
|
|
798
|
+
* @return {@link Provisioner}
|
|
799
|
+
* @throws IllegalArgumentException if the name is empty
|
|
800
|
+
*/
|
|
801
|
+
public Provisioner createProvisioner(@NonNull final String name,
|
|
802
|
+
@NonNull final AllocatedUnicastRange unicastRange,
|
|
803
|
+
@NonNull final AllocatedGroupRange groupRange,
|
|
804
|
+
@NonNull final AllocatedSceneRange sceneRange) throws IllegalArgumentException {
|
|
805
|
+
if (TextUtils.isEmpty(name)) {
|
|
806
|
+
throw new IllegalArgumentException("Name cannot be empty.");
|
|
807
|
+
}
|
|
808
|
+
final List<AllocatedUnicastRange> unicastRanges = new ArrayList<>();
|
|
809
|
+
final List<AllocatedGroupRange> groupRanges = new ArrayList<>();
|
|
810
|
+
final List<AllocatedSceneRange> sceneRanges = new ArrayList<>();
|
|
811
|
+
unicastRanges.add(unicastRange);
|
|
812
|
+
groupRanges.add(groupRange);
|
|
813
|
+
sceneRanges.add(sceneRange);
|
|
814
|
+
final Provisioner provisioner = new Provisioner(UUID.randomUUID().toString(), unicastRanges, groupRanges, sceneRanges, meshUUID);
|
|
815
|
+
provisioner.setProvisionerName(name);
|
|
816
|
+
return provisioner;
|
|
817
|
+
}
|
|
818
|
+
|
|
819
|
+
/**
|
|
820
|
+
* Adds a provisioner to the network
|
|
821
|
+
*
|
|
822
|
+
* @param provisioner {@link Provisioner}
|
|
823
|
+
* @throws IllegalArgumentException if unicast address is invalid, in use by a node
|
|
824
|
+
*/
|
|
825
|
+
public boolean addProvisioner(@NonNull final Provisioner provisioner) throws IllegalArgumentException {
|
|
826
|
+
|
|
827
|
+
if (provisioner.allocatedUnicastRanges.isEmpty()) {
|
|
828
|
+
if (provisioner.getProvisionerAddress() != null) {
|
|
829
|
+
throw new IllegalArgumentException("Provisioner has no allocated unicast range assigned.");
|
|
830
|
+
}
|
|
831
|
+
}
|
|
832
|
+
|
|
833
|
+
for (Provisioner other : provisioners) {
|
|
834
|
+
if (provisioner.hasOverlappingUnicastRanges(other.getAllocatedUnicastRanges())
|
|
835
|
+
|| provisioner.hasOverlappingGroupRanges(other.getAllocatedGroupRanges())
|
|
836
|
+
|| provisioner.hasOverlappingSceneRanges(other.getAllocatedSceneRanges())) {
|
|
837
|
+
throw new IllegalArgumentException("Provisioner ranges overlap.");
|
|
838
|
+
}
|
|
839
|
+
}
|
|
840
|
+
|
|
841
|
+
if (!provisioner.isAddressWithinAllocatedRange(provisioner.getProvisionerAddress())) {
|
|
842
|
+
throw new IllegalArgumentException("Unicast address assigned to a provisioner must be within an allocated unicast address range.");
|
|
843
|
+
}
|
|
844
|
+
|
|
845
|
+
if (isAddressInUse(provisioner.getProvisionerAddress())) {
|
|
846
|
+
throw new IllegalArgumentException("Unicast address is in use by another node.");
|
|
847
|
+
}
|
|
848
|
+
|
|
849
|
+
if (provisioner.isNodeAddressInUse(nodes)) {
|
|
850
|
+
throw new IllegalArgumentException("Unicast address is already in use.");
|
|
851
|
+
}
|
|
852
|
+
|
|
853
|
+
if (isProvisionerUuidInUse(provisioner.getProvisionerUuid())) {
|
|
854
|
+
throw new IllegalArgumentException("Provisioner uuid already in use.");
|
|
855
|
+
}
|
|
856
|
+
|
|
857
|
+
provisioner.assignProvisionerAddress(provisioner.getProvisionerAddress());
|
|
858
|
+
provisioners.add(provisioner);
|
|
859
|
+
notifyProvisionerAdded(provisioner);
|
|
860
|
+
if (provisioner.isLastSelected()) {
|
|
861
|
+
selectProvisioner(provisioner);
|
|
862
|
+
}
|
|
863
|
+
if (provisioner.getProvisionerAddress() != null) {
|
|
864
|
+
final ProvisionedMeshNode node = new ProvisionedMeshNode(provisioner, netKeys, appKeys);
|
|
865
|
+
nodes.add(node);
|
|
866
|
+
notifyNodeAdded(node);
|
|
867
|
+
}
|
|
868
|
+
return true;
|
|
869
|
+
}
|
|
870
|
+
|
|
871
|
+
/**
|
|
872
|
+
* Update provisioner
|
|
873
|
+
*
|
|
874
|
+
* @param provisioner {@link Provisioner}
|
|
875
|
+
* @return returns true if updated and false otherwise
|
|
876
|
+
*/
|
|
877
|
+
public boolean updateProvisioner(@NonNull final Provisioner provisioner) {
|
|
878
|
+
if (!isProvisionerUuidInUse(provisioner.getProvisionerUuid())) {
|
|
879
|
+
throw new IllegalArgumentException("Provisioner does not exist, consider adding a provisioner first.");
|
|
880
|
+
}
|
|
881
|
+
|
|
882
|
+
if (provisioner.allocatedUnicastRanges.isEmpty()) {
|
|
883
|
+
if (provisioner.getProvisionerAddress() != null) {
|
|
884
|
+
throw new IllegalArgumentException("Provisioner has no allocated unicast range assigned.");
|
|
885
|
+
}
|
|
886
|
+
}
|
|
887
|
+
|
|
888
|
+
for (Provisioner other : provisioners) {
|
|
889
|
+
if (!other.getProvisionerUuid().equalsIgnoreCase(provisioner.getProvisionerUuid())) {
|
|
890
|
+
if (provisioner.hasOverlappingUnicastRanges(other.getAllocatedUnicastRanges())
|
|
891
|
+
|| provisioner.hasOverlappingGroupRanges(other.getAllocatedGroupRanges())
|
|
892
|
+
|| provisioner.hasOverlappingSceneRanges(other.getAllocatedSceneRanges())) {
|
|
893
|
+
throw new IllegalArgumentException("Provisioner ranges overlap.");
|
|
894
|
+
}
|
|
895
|
+
}
|
|
896
|
+
}
|
|
897
|
+
|
|
898
|
+
if (!provisioner.isAddressWithinAllocatedRange(provisioner.getProvisionerAddress())) {
|
|
899
|
+
throw new IllegalArgumentException("Unicast address assigned to a provisioner must be within an allocated unicast address range.");
|
|
900
|
+
}
|
|
901
|
+
|
|
902
|
+
for (ProvisionedMeshNode node : nodes) {
|
|
903
|
+
if (!node.getUuid().equalsIgnoreCase(provisioner.getProvisionerUuid())) {
|
|
904
|
+
if (provisioner.getProvisionerAddress() != null) {
|
|
905
|
+
if (node.getUnicastAddress() == provisioner.getProvisionerAddress()) {
|
|
906
|
+
throw new IllegalArgumentException("Unicast address is in use by another node.");
|
|
907
|
+
}
|
|
908
|
+
}
|
|
909
|
+
}
|
|
910
|
+
}
|
|
911
|
+
|
|
912
|
+
if (provisioner.isNodeAddressInUse(nodes)) {
|
|
913
|
+
throw new IllegalArgumentException("Unicast address is already in use by another provisioner.");
|
|
914
|
+
}
|
|
915
|
+
|
|
916
|
+
boolean provisionerExists = false;
|
|
917
|
+
for (int i = 0; i < provisioners.size(); i++) {
|
|
918
|
+
final Provisioner p = provisioners.get(i);
|
|
919
|
+
if (p.getProvisionerUuid().equalsIgnoreCase(provisioner.getProvisionerUuid())) {
|
|
920
|
+
provisioners.set(i, provisioner);
|
|
921
|
+
provisionerExists = true;
|
|
922
|
+
}
|
|
923
|
+
}
|
|
924
|
+
boolean nodeExists = false;
|
|
925
|
+
if (provisionerExists) {
|
|
926
|
+
if (provisioner.getProvisionerAddress() != null) {
|
|
927
|
+
ProvisionedMeshNode node = getNode(provisioner.getProvisionerUuid());
|
|
928
|
+
if (node == null) {
|
|
929
|
+
node = new ProvisionedMeshNode(provisioner, netKeys, appKeys);
|
|
930
|
+
nodes.add(node);
|
|
931
|
+
notifyNodeAdded(node);
|
|
932
|
+
} else {
|
|
933
|
+
for (int i = 0; i < nodes.size(); i++) {
|
|
934
|
+
final ProvisionedMeshNode meshNode = nodes.get(i);
|
|
935
|
+
if (meshNode.getUuid().equalsIgnoreCase(provisioner.getProvisionerUuid())) {
|
|
936
|
+
final int sequenceNumber;
|
|
937
|
+
if (meshNode.getUnicastAddress() != provisioner.getProvisionerAddress()) {
|
|
938
|
+
sequenceNumber = sequenceNumbers.get(provisioner.getProvisionerAddress());
|
|
939
|
+
} else {
|
|
940
|
+
sequenceNumber = sequenceNumbers.get(node.getUnicastAddress(), node.getSequenceNumber());
|
|
941
|
+
}
|
|
942
|
+
node = new ProvisionedMeshNode(provisioner, netKeys, appKeys);
|
|
943
|
+
node.setSequenceNumber(sequenceNumber);
|
|
944
|
+
nodes.set(i, node);
|
|
945
|
+
notifyNodeUpdated(node);
|
|
946
|
+
break;
|
|
947
|
+
}
|
|
948
|
+
}
|
|
949
|
+
}
|
|
950
|
+
}
|
|
951
|
+
if (provisioner.isLastSelected()) {
|
|
952
|
+
selectProvisioner(provisioner);
|
|
953
|
+
} else {
|
|
954
|
+
notifyProvisionerUpdated(provisioner);
|
|
955
|
+
}
|
|
956
|
+
return true;
|
|
957
|
+
}
|
|
958
|
+
return false;
|
|
959
|
+
}
|
|
960
|
+
|
|
961
|
+
/**
|
|
962
|
+
* Update provisioner
|
|
963
|
+
*
|
|
964
|
+
* @param provisioner {@link Provisioner}
|
|
965
|
+
* @return returns true if updated and false otherwise
|
|
966
|
+
*/
|
|
967
|
+
public boolean disableConfigurationCapabilities(@NonNull final Provisioner provisioner) {
|
|
968
|
+
final ProvisionedMeshNode node = getNode(provisioner.getProvisionerUuid());
|
|
969
|
+
if (node == null)
|
|
970
|
+
return true;
|
|
971
|
+
else if (nodes.remove(node)) {
|
|
972
|
+
provisioner.assignProvisionerAddress(null);
|
|
973
|
+
notifyNodeDeleted(node);
|
|
974
|
+
return true;
|
|
975
|
+
}
|
|
976
|
+
return false;
|
|
977
|
+
}
|
|
978
|
+
|
|
979
|
+
/**
|
|
980
|
+
* Removes a provisioner from the mesh network
|
|
981
|
+
*
|
|
982
|
+
* @param provisioner {@link Provisioner}
|
|
983
|
+
* @return true if the provisioner was deleted or false otherwise
|
|
984
|
+
*/
|
|
985
|
+
public boolean removeProvisioner(@NonNull final Provisioner provisioner) {
|
|
986
|
+
return removeProvisionerAndNode(getNode(provisioner.getProvisionerAddress()), provisioner);
|
|
987
|
+
/*if (provisioners.remove(provisioner)) {
|
|
988
|
+
notifyProvisionerDeleted(provisioner);
|
|
989
|
+
if (provisioner.getProvisionerAddress() != null) {
|
|
990
|
+
final ProvisionedMeshNode node = getNode(provisioner.getProvisionerAddress());
|
|
991
|
+
if (node != null) {
|
|
992
|
+
deleteNode(node);
|
|
993
|
+
notifyNodeDeleted(node);
|
|
994
|
+
}
|
|
995
|
+
}
|
|
996
|
+
return true;
|
|
997
|
+
}
|
|
998
|
+
return false;*/
|
|
999
|
+
}
|
|
1000
|
+
|
|
1001
|
+
/**
|
|
1002
|
+
* Selects a provisioner if there are multiple provisioners.
|
|
1003
|
+
*
|
|
1004
|
+
* @param provisioner {@link Provisioner}
|
|
1005
|
+
*/
|
|
1006
|
+
public final void selectProvisioner(final Provisioner provisioner) {
|
|
1007
|
+
provisioner.setLastSelected(true);
|
|
1008
|
+
for (Provisioner prov : provisioners) {
|
|
1009
|
+
if (!prov.getProvisionerUuid().equalsIgnoreCase(provisioner.getProvisionerUuid())) {
|
|
1010
|
+
prov.setLastSelected(false);
|
|
1011
|
+
}
|
|
1012
|
+
}
|
|
1013
|
+
notifyProvisionersUpdated(getProvisioners());
|
|
1014
|
+
}
|
|
1015
|
+
|
|
1016
|
+
/**
|
|
1017
|
+
* Checks if the provisioner is selected
|
|
1018
|
+
* <p> There could be networks that may contain more than one provisioner</p>
|
|
1019
|
+
*
|
|
1020
|
+
* @return true if a provisioner was selected or false otherwise
|
|
1021
|
+
*/
|
|
1022
|
+
public final boolean isProvisionerSelected() {
|
|
1023
|
+
if (provisioners.size() == 1) {
|
|
1024
|
+
if (!provisioners.get(0).isLastSelected())
|
|
1025
|
+
selectProvisioner(provisioners.get(0));
|
|
1026
|
+
return true;
|
|
1027
|
+
}
|
|
1028
|
+
|
|
1029
|
+
for (Provisioner provisioner : provisioners) {
|
|
1030
|
+
if (provisioner.isLastSelected()) {
|
|
1031
|
+
return true;
|
|
1032
|
+
}
|
|
1033
|
+
}
|
|
1034
|
+
return false;
|
|
1035
|
+
}
|
|
1036
|
+
|
|
1037
|
+
/**
|
|
1038
|
+
* Returns the selected provisioner in the network
|
|
1039
|
+
*/
|
|
1040
|
+
public Provisioner getSelectedProvisioner() {
|
|
1041
|
+
for (Provisioner provisioner : provisioners) {
|
|
1042
|
+
if (provisioner.isLastSelected()) {
|
|
1043
|
+
return provisioner;
|
|
1044
|
+
}
|
|
1045
|
+
}
|
|
1046
|
+
return null;
|
|
1047
|
+
}
|
|
1048
|
+
|
|
1049
|
+
protected boolean isProvisionerUuidInUse(@NonNull final String uuid) {
|
|
1050
|
+
for (Provisioner provisioner : provisioners) {
|
|
1051
|
+
if (provisioner.getProvisionerUuid().equalsIgnoreCase(uuid)) {
|
|
1052
|
+
return true;
|
|
1053
|
+
}
|
|
1054
|
+
}
|
|
1055
|
+
return false;
|
|
1056
|
+
}
|
|
1057
|
+
|
|
1058
|
+
/**
|
|
1059
|
+
* Returns the list of {@link ProvisionedMeshNode}
|
|
1060
|
+
*/
|
|
1061
|
+
public List<ProvisionedMeshNode> getNodes() {
|
|
1062
|
+
return Collections.unmodifiableList(nodes);
|
|
1063
|
+
}
|
|
1064
|
+
|
|
1065
|
+
/**
|
|
1066
|
+
* Sets the list of {@link ProvisionedMeshNode}
|
|
1067
|
+
*
|
|
1068
|
+
* @param nodes list of {@link ProvisionedMeshNode}
|
|
1069
|
+
*/
|
|
1070
|
+
void setNodes(@NonNull List<ProvisionedMeshNode> nodes) {
|
|
1071
|
+
this.nodes = nodes;
|
|
1072
|
+
}
|
|
1073
|
+
|
|
1074
|
+
/**
|
|
1075
|
+
* Returns the list of {@link ProvisionedMeshNode} containing the given network key
|
|
1076
|
+
*
|
|
1077
|
+
* @param networkKey Network Key
|
|
1078
|
+
*/
|
|
1079
|
+
public List<ProvisionedMeshNode> getNodes(final NetworkKey networkKey) {
|
|
1080
|
+
final List<ProvisionedMeshNode> nodes = new ArrayList<>();
|
|
1081
|
+
for (ProvisionedMeshNode node : this.nodes) {
|
|
1082
|
+
for (NodeKey nodeKey : node.getAddedNetKeys()) {
|
|
1083
|
+
if (nodeKey.getIndex() == networkKey.getKeyIndex()) {
|
|
1084
|
+
nodes.add(node);
|
|
1085
|
+
}
|
|
1086
|
+
}
|
|
1087
|
+
}
|
|
1088
|
+
return nodes;
|
|
1089
|
+
}
|
|
1090
|
+
|
|
1091
|
+
/**
|
|
1092
|
+
* Returns the mesh node with the corresponding unicast address
|
|
1093
|
+
*
|
|
1094
|
+
* @param unicastAddress unicast address of the node
|
|
1095
|
+
*/
|
|
1096
|
+
public ProvisionedMeshNode getNode(@NonNull final byte[] unicastAddress) {
|
|
1097
|
+
for (ProvisionedMeshNode node : nodes) {
|
|
1098
|
+
if (node.hasUnicastAddress(MeshAddress.addressBytesToInt(unicastAddress))) {
|
|
1099
|
+
return node;
|
|
1100
|
+
}
|
|
1101
|
+
}
|
|
1102
|
+
return null;
|
|
1103
|
+
}
|
|
1104
|
+
|
|
1105
|
+
/**
|
|
1106
|
+
* Returns the mesh node with the corresponding unicast address
|
|
1107
|
+
*
|
|
1108
|
+
* @param unicastAddress unicast address of the node
|
|
1109
|
+
*/
|
|
1110
|
+
public ProvisionedMeshNode getNode(final Integer unicastAddress) {
|
|
1111
|
+
if(unicastAddress == null)
|
|
1112
|
+
return null;
|
|
1113
|
+
for (ProvisionedMeshNode node : nodes) {
|
|
1114
|
+
if (node.hasUnicastAddress(unicastAddress)) {
|
|
1115
|
+
return node;
|
|
1116
|
+
}
|
|
1117
|
+
}
|
|
1118
|
+
return null;
|
|
1119
|
+
}
|
|
1120
|
+
|
|
1121
|
+
/**
|
|
1122
|
+
* Returns the mesh node with the corresponding unicast address
|
|
1123
|
+
*
|
|
1124
|
+
* @param uuid unicast address of the node
|
|
1125
|
+
*/
|
|
1126
|
+
public ProvisionedMeshNode getNode(final String uuid) {
|
|
1127
|
+
for (ProvisionedMeshNode node : nodes) {
|
|
1128
|
+
if (node.getUuid().equalsIgnoreCase(uuid)) {
|
|
1129
|
+
return node;
|
|
1130
|
+
}
|
|
1131
|
+
}
|
|
1132
|
+
return null;
|
|
1133
|
+
}
|
|
1134
|
+
|
|
1135
|
+
/**
|
|
1136
|
+
* Update node name
|
|
1137
|
+
*
|
|
1138
|
+
* @param node {@link ProvisionedMeshNode}
|
|
1139
|
+
* @param name Name
|
|
1140
|
+
* @return true if successful and false otherwise
|
|
1141
|
+
*/
|
|
1142
|
+
public boolean updateNodeName(@NonNull ProvisionedMeshNode node, @NonNull final String name) {
|
|
1143
|
+
if (TextUtils.isEmpty(name))
|
|
1144
|
+
return false;
|
|
1145
|
+
final ProvisionedMeshNode meshNode = getNode(node.getUuid());
|
|
1146
|
+
if (meshNode == null)
|
|
1147
|
+
return false;
|
|
1148
|
+
meshNode.setNodeName(name);
|
|
1149
|
+
notifyNodeUpdated(meshNode);
|
|
1150
|
+
return true;
|
|
1151
|
+
}
|
|
1152
|
+
|
|
1153
|
+
/**
|
|
1154
|
+
* Adds a mesh node to the list of provisioned nodes
|
|
1155
|
+
*
|
|
1156
|
+
* <p>
|
|
1157
|
+
* Note that This method should only be used to add debug Nodes, or Nodes
|
|
1158
|
+
* that have already been provisioned.
|
|
1159
|
+
* </p>
|
|
1160
|
+
*
|
|
1161
|
+
* @param meshNode node to be added
|
|
1162
|
+
* @return true if added and false otherwise
|
|
1163
|
+
*/
|
|
1164
|
+
public boolean addNode(@NonNull final ProvisionedMeshNode meshNode) {
|
|
1165
|
+
ProvisionedMeshNode sameAddressNode = getNode(meshNode.getUnicastAddress());
|
|
1166
|
+
if (sameAddressNode != null) {
|
|
1167
|
+
throw new IllegalStateException("cant add node with conflicting unicast address");
|
|
1168
|
+
}
|
|
1169
|
+
boolean hasMatchingNetKey = false;
|
|
1170
|
+
for (NodeKey nodeKey : meshNode.getAddedNetKeys()) {
|
|
1171
|
+
for (NetworkKey networkKey : netKeys) {
|
|
1172
|
+
hasMatchingNetKey = nodeKey.getIndex() == networkKey.getKeyIndex();
|
|
1173
|
+
if (hasMatchingNetKey) break;
|
|
1174
|
+
}
|
|
1175
|
+
if (hasMatchingNetKey) break;
|
|
1176
|
+
}
|
|
1177
|
+
if (!hasMatchingNetKey) {
|
|
1178
|
+
throw new IllegalStateException("Network key added to the node is not a part of the mesh network");
|
|
1179
|
+
}
|
|
1180
|
+
|
|
1181
|
+
boolean hasMatchingAppKey = false;
|
|
1182
|
+
for (NodeKey nodeKey : meshNode.getAddedAppKeys()) {
|
|
1183
|
+
for (ApplicationKey appKey : appKeys) {
|
|
1184
|
+
hasMatchingAppKey = nodeKey.getIndex() == appKey.getKeyIndex();
|
|
1185
|
+
if (hasMatchingAppKey) break;
|
|
1186
|
+
}
|
|
1187
|
+
if (hasMatchingAppKey) break;
|
|
1188
|
+
}
|
|
1189
|
+
if (!hasMatchingAppKey) {
|
|
1190
|
+
throw new IllegalStateException("Application key added to the node is not a part of the mesh network");
|
|
1191
|
+
}
|
|
1192
|
+
|
|
1193
|
+
int index = 0;
|
|
1194
|
+
for (ProvisionedMeshNode node : nodes) {
|
|
1195
|
+
if (node.getUuid().equalsIgnoreCase(meshNode.getUuid())) {
|
|
1196
|
+
nodes.set(index, meshNode); //replace a node if uuid matches
|
|
1197
|
+
notifyNodeUpdated(meshNode);
|
|
1198
|
+
return true;
|
|
1199
|
+
}
|
|
1200
|
+
index++;
|
|
1201
|
+
}
|
|
1202
|
+
if (nodes.add(meshNode)) {
|
|
1203
|
+
notifyNodeAdded(meshNode);
|
|
1204
|
+
return true;
|
|
1205
|
+
}
|
|
1206
|
+
return false;
|
|
1207
|
+
}
|
|
1208
|
+
|
|
1209
|
+
/**
|
|
1210
|
+
* Deletes a mesh node from the list of provisioned nodes
|
|
1211
|
+
*
|
|
1212
|
+
* <p>
|
|
1213
|
+
* Note that deleting a node manually will not reset the node, but only be deleted from the stored list of provisioned nodes.
|
|
1214
|
+
* However you may still be able to connect to the same node, if it was not reset since the network may still exist. This
|
|
1215
|
+
* would be useful to in case if a node was physically reset and needs to be removed from the mesh network/db
|
|
1216
|
+
* </p>
|
|
1217
|
+
*
|
|
1218
|
+
* @param meshNode node to be deleted
|
|
1219
|
+
* @return true if deleted and false otherwise
|
|
1220
|
+
*/
|
|
1221
|
+
public boolean deleteNode(@NonNull final ProvisionedMeshNode meshNode) {
|
|
1222
|
+
//Let's look if there is a provisioner for a given node.
|
|
1223
|
+
Provisioner provisioner = null;
|
|
1224
|
+
for (Provisioner prov : provisioners) {
|
|
1225
|
+
if (prov.getProvisionerUuid().equalsIgnoreCase(meshNode.getUuid())) {
|
|
1226
|
+
provisioner = prov;
|
|
1227
|
+
break;
|
|
1228
|
+
}
|
|
1229
|
+
}
|
|
1230
|
+
return removeProvisionerAndNode(meshNode, provisioner);
|
|
1231
|
+
}
|
|
1232
|
+
|
|
1233
|
+
private boolean removeProvisionerAndNode(@Nullable final ProvisionedMeshNode node, @Nullable final Provisioner provisioner){
|
|
1234
|
+
if (provisioner != null && provisioners.remove(provisioner)) {
|
|
1235
|
+
if(node != null){
|
|
1236
|
+
excludeNode(node);
|
|
1237
|
+
if(nodes.remove(node)){
|
|
1238
|
+
notifyNodeDeleted(node);
|
|
1239
|
+
}
|
|
1240
|
+
} else {
|
|
1241
|
+
notifyProvisionerDeleted(provisioner);
|
|
1242
|
+
}
|
|
1243
|
+
notifyNetworkUpdated();
|
|
1244
|
+
return true;
|
|
1245
|
+
}
|
|
1246
|
+
if(node != null && nodes.remove(node)) {
|
|
1247
|
+
excludeNode(node);
|
|
1248
|
+
if(provisioner != null){
|
|
1249
|
+
if(provisioners.remove(provisioner)){
|
|
1250
|
+
notifyProvisionerDeleted(provisioner);
|
|
1251
|
+
}
|
|
1252
|
+
} else {
|
|
1253
|
+
notifyNodeDeleted(node);
|
|
1254
|
+
}
|
|
1255
|
+
notifyNetworkUpdated();
|
|
1256
|
+
return true;
|
|
1257
|
+
}
|
|
1258
|
+
return false;
|
|
1259
|
+
}
|
|
1260
|
+
|
|
1261
|
+
/**
|
|
1262
|
+
* Returns true if the given node is a provisioner node
|
|
1263
|
+
*
|
|
1264
|
+
* @param node {@link ProvisionedMeshNode}
|
|
1265
|
+
* @return True if the node is a provisioner or false otherwise
|
|
1266
|
+
*/
|
|
1267
|
+
public boolean isProvisioner(@NonNull final ProvisionedMeshNode node) {
|
|
1268
|
+
for (Provisioner provisioner : provisioners) {
|
|
1269
|
+
if (provisioner.getProvisionerUuid().equalsIgnoreCase(node.getUuid())) {
|
|
1270
|
+
return true;
|
|
1271
|
+
}
|
|
1272
|
+
}
|
|
1273
|
+
return false;
|
|
1274
|
+
}
|
|
1275
|
+
|
|
1276
|
+
/**
|
|
1277
|
+
* @param element {@link Element}
|
|
1278
|
+
* @param name Name
|
|
1279
|
+
* @return true if successful and false otherwise
|
|
1280
|
+
* @throws IllegalArgumentException if name is empty
|
|
1281
|
+
*/
|
|
1282
|
+
public boolean updateElementName(@NonNull final Element element, @NonNull final String name) throws IllegalArgumentException {
|
|
1283
|
+
if (TextUtils.isEmpty(name))
|
|
1284
|
+
throw new IllegalArgumentException("Element name cannot be empty.");
|
|
1285
|
+
|
|
1286
|
+
final ProvisionedMeshNode node = getNode(element.getElementAddress());
|
|
1287
|
+
if (node != null) {
|
|
1288
|
+
if (node.getElements().containsKey(element.getElementAddress())) {
|
|
1289
|
+
element.setName(name);
|
|
1290
|
+
node.getElements().put(element.getElementAddress(), element);
|
|
1291
|
+
notifyNodeUpdated(node);
|
|
1292
|
+
return true;
|
|
1293
|
+
}
|
|
1294
|
+
}
|
|
1295
|
+
return false;
|
|
1296
|
+
}
|
|
1297
|
+
|
|
1298
|
+
/**
|
|
1299
|
+
* @param address {@link Element} address
|
|
1300
|
+
* @param name Name
|
|
1301
|
+
* @return true if successful and false otherwise
|
|
1302
|
+
* @throws IllegalArgumentException if name is empty
|
|
1303
|
+
*/
|
|
1304
|
+
public boolean updateElementName(final int address, @NonNull final String name) throws IllegalArgumentException {
|
|
1305
|
+
if (TextUtils.isEmpty(name))
|
|
1306
|
+
throw new IllegalArgumentException("Element name cannot be empty.");
|
|
1307
|
+
|
|
1308
|
+
final ProvisionedMeshNode node = getNode(address);
|
|
1309
|
+
if (node != null) {
|
|
1310
|
+
final Element element = node.getElements().get(address);
|
|
1311
|
+
if (element != null) {
|
|
1312
|
+
element.setName(name);
|
|
1313
|
+
notifyNodeUpdated(node);
|
|
1314
|
+
return true;
|
|
1315
|
+
}
|
|
1316
|
+
}
|
|
1317
|
+
return false;
|
|
1318
|
+
}
|
|
1319
|
+
|
|
1320
|
+
/**
|
|
1321
|
+
* Returns the sequence numbers used by the network where key is the address and the value being the sequence number.
|
|
1322
|
+
*/
|
|
1323
|
+
public SparseIntArray getSequenceNumbers() {
|
|
1324
|
+
return sequenceNumbers.clone();
|
|
1325
|
+
}
|
|
1326
|
+
|
|
1327
|
+
/**
|
|
1328
|
+
* Sets the sequence number. This method is used for internal use only, changing will result messages to fail
|
|
1329
|
+
*
|
|
1330
|
+
* @param sequenceNumbers Sequence numbers used in the network
|
|
1331
|
+
*/
|
|
1332
|
+
@RestrictTo(RestrictTo.Scope.LIBRARY)
|
|
1333
|
+
public void setSequenceNumbers(@NonNull final SparseIntArray sequenceNumbers) {
|
|
1334
|
+
this.sequenceNumbers = sequenceNumbers;
|
|
1335
|
+
}
|
|
1336
|
+
|
|
1337
|
+
/**
|
|
1338
|
+
* Returns the sequence number for a given address
|
|
1339
|
+
*
|
|
1340
|
+
* @param address Address
|
|
1341
|
+
* @return sequence number or zero if address not found
|
|
1342
|
+
*/
|
|
1343
|
+
protected Integer getSequenceNumber(final int address) {
|
|
1344
|
+
return sequenceNumbers.get(address, 0);
|
|
1345
|
+
}
|
|
1346
|
+
|
|
1347
|
+
/**
|
|
1348
|
+
* Loads the sequence numbers known to the network
|
|
1349
|
+
*/
|
|
1350
|
+
protected void loadSequenceNumbers() {
|
|
1351
|
+
for (ProvisionedMeshNode node : nodes) {
|
|
1352
|
+
sequenceNumbers.put(node.getUnicastAddress(), node.getSequenceNumber());
|
|
1353
|
+
}
|
|
1354
|
+
}
|
|
1355
|
+
|
|
1356
|
+
/**
|
|
1357
|
+
* Returns the map of network exclusions
|
|
1358
|
+
*/
|
|
1359
|
+
public Map<Integer, List<Integer>> getNetworkExclusions() {
|
|
1360
|
+
return Collections.unmodifiableMap(networkExclusions);
|
|
1361
|
+
}
|
|
1362
|
+
|
|
1363
|
+
/**
|
|
1364
|
+
* Setter required by room db and is restricted for internal use.
|
|
1365
|
+
*/
|
|
1366
|
+
@RestrictTo(RestrictTo.Scope.LIBRARY)
|
|
1367
|
+
public void setNetworkExclusions(@NonNull final Map<Integer, List<Integer>> networkExclusions) {
|
|
1368
|
+
this.networkExclusions = networkExclusions;
|
|
1369
|
+
}
|
|
1370
|
+
|
|
1371
|
+
|
|
1372
|
+
/**
|
|
1373
|
+
* Returns the {@link ProxyFilter} set on the proxy
|
|
1374
|
+
*/
|
|
1375
|
+
@Nullable
|
|
1376
|
+
public ProxyFilter getProxyFilter() {
|
|
1377
|
+
return proxyFilter;
|
|
1378
|
+
}
|
|
1379
|
+
|
|
1380
|
+
/**
|
|
1381
|
+
* Sets the {@link ProxyFilter} settings on the proxy
|
|
1382
|
+
* <p>
|
|
1383
|
+
* Please note that this is not persisted within the node since the filter is reinitialized to a whitelist filter upon connecting to a proxy node.
|
|
1384
|
+
* Therefore after setting a proxy filter and disconnecting users will have to manually
|
|
1385
|
+
* <p/>
|
|
1386
|
+
*/
|
|
1387
|
+
public void setProxyFilter(@Nullable final ProxyFilter proxyFilter) {
|
|
1388
|
+
this.proxyFilter = proxyFilter;
|
|
1389
|
+
}
|
|
1390
|
+
|
|
1391
|
+
/**
|
|
1392
|
+
* Excludes a node from the mesh network.
|
|
1393
|
+
* The given node will marked as excluded and added to the exclusion list and the node will be removed once
|
|
1394
|
+
* the Key Refresh Procedure is completed. After the IV update procedure, when the network transitions to an
|
|
1395
|
+
* IV Normal Operation state with a higher IV index, the exclusionList object that has the ivIndex property
|
|
1396
|
+
* value that is lower by a count of two (or more) than the current IV index of the network is removed from
|
|
1397
|
+
* the networkExclusions property array.
|
|
1398
|
+
*
|
|
1399
|
+
* @param node Provisioned mesh node.
|
|
1400
|
+
*/
|
|
1401
|
+
private void excludeNode(@NonNull final ProvisionedMeshNode node) {
|
|
1402
|
+
//Exclude node
|
|
1403
|
+
// node.setExcluded(true);
|
|
1404
|
+
// notifyNodeUpdated(node);
|
|
1405
|
+
List<Integer> addresses = networkExclusions.get(ivIndex.getIvIndex());
|
|
1406
|
+
if (addresses == null) {
|
|
1407
|
+
addresses = new ArrayList<>();
|
|
1408
|
+
}
|
|
1409
|
+
|
|
1410
|
+
for (Integer address : node.getElements().keySet()) {
|
|
1411
|
+
if (!addresses.contains(address)) {
|
|
1412
|
+
addresses.add(address);
|
|
1413
|
+
}
|
|
1414
|
+
}
|
|
1415
|
+
|
|
1416
|
+
networkExclusions.put(ivIndex.getIvIndex(), addresses);
|
|
1417
|
+
//notifyNetworkUpdated();
|
|
1418
|
+
}
|
|
1419
|
+
|
|
1420
|
+
private boolean validateKey(@NonNull final byte[] key) {
|
|
1421
|
+
if (key.length != 16)
|
|
1422
|
+
throw new IllegalArgumentException("Key must be 16 bytes");
|
|
1423
|
+
return true;
|
|
1424
|
+
}
|
|
1425
|
+
|
|
1426
|
+
final void notifyNetworkUpdated() {
|
|
1427
|
+
if (mCallbacks != null) {
|
|
1428
|
+
mCallbacks.onMeshNetworkUpdated();
|
|
1429
|
+
}
|
|
1430
|
+
}
|
|
1431
|
+
|
|
1432
|
+
final void notifyNetKeyAdded(@NonNull final NetworkKey networkKey) {
|
|
1433
|
+
if (mCallbacks != null) {
|
|
1434
|
+
mCallbacks.onNetworkKeyAdded(networkKey);
|
|
1435
|
+
}
|
|
1436
|
+
}
|
|
1437
|
+
|
|
1438
|
+
final void notifyNetKeyUpdated(@NonNull final NetworkKey networkKey) {
|
|
1439
|
+
if (mCallbacks != null) {
|
|
1440
|
+
mCallbacks.onNetworkKeyUpdated(networkKey);
|
|
1441
|
+
}
|
|
1442
|
+
}
|
|
1443
|
+
|
|
1444
|
+
final void notifyNetKeyDeleted(@NonNull final NetworkKey networkKey) {
|
|
1445
|
+
if (mCallbacks != null) {
|
|
1446
|
+
mCallbacks.onNetworkKeyDeleted(networkKey);
|
|
1447
|
+
}
|
|
1448
|
+
}
|
|
1449
|
+
|
|
1450
|
+
final void notifyAppKeyAdded(@NonNull final ApplicationKey appKey) {
|
|
1451
|
+
if (mCallbacks != null) {
|
|
1452
|
+
mCallbacks.onApplicationKeyAdded(appKey);
|
|
1453
|
+
}
|
|
1454
|
+
}
|
|
1455
|
+
|
|
1456
|
+
final void notifyAppKeyUpdated(@NonNull final ApplicationKey appKey) {
|
|
1457
|
+
if (mCallbacks != null) {
|
|
1458
|
+
mCallbacks.onApplicationKeyUpdated(appKey);
|
|
1459
|
+
}
|
|
1460
|
+
}
|
|
1461
|
+
|
|
1462
|
+
final void notifyAppKeyDeleted(@NonNull final ApplicationKey appKey) {
|
|
1463
|
+
if (mCallbacks != null) {
|
|
1464
|
+
mCallbacks.onApplicationKeyDeleted(appKey);
|
|
1465
|
+
}
|
|
1466
|
+
}
|
|
1467
|
+
|
|
1468
|
+
final void notifyProvisionerAdded(@NonNull final Provisioner provisioner) {
|
|
1469
|
+
if (mCallbacks != null) {
|
|
1470
|
+
mCallbacks.onProvisionerAdded(provisioner);
|
|
1471
|
+
}
|
|
1472
|
+
}
|
|
1473
|
+
|
|
1474
|
+
final void notifyProvisionerUpdated(@NonNull final Provisioner provisioner) {
|
|
1475
|
+
if (mCallbacks != null) {
|
|
1476
|
+
mCallbacks.onProvisionerUpdated(provisioner);
|
|
1477
|
+
}
|
|
1478
|
+
}
|
|
1479
|
+
|
|
1480
|
+
final void notifyProvisionersUpdated(@NonNull final List<Provisioner> provisioner) {
|
|
1481
|
+
if (mCallbacks != null) {
|
|
1482
|
+
mCallbacks.onProvisionersUpdated(provisioner);
|
|
1483
|
+
}
|
|
1484
|
+
}
|
|
1485
|
+
|
|
1486
|
+
final void notifyProvisionerDeleted(@NonNull final Provisioner provisioner) {
|
|
1487
|
+
if (mCallbacks != null) {
|
|
1488
|
+
mCallbacks.onProvisionerDeleted(provisioner);
|
|
1489
|
+
}
|
|
1490
|
+
}
|
|
1491
|
+
|
|
1492
|
+
final void notifyNodeAdded(@NonNull final ProvisionedMeshNode node) {
|
|
1493
|
+
if (mCallbacks != null) {
|
|
1494
|
+
mCallbacks.onNodeAdded(node);
|
|
1495
|
+
}
|
|
1496
|
+
}
|
|
1497
|
+
|
|
1498
|
+
final void notifyNodeUpdated(@NonNull final ProvisionedMeshNode node) {
|
|
1499
|
+
if (mCallbacks != null) {
|
|
1500
|
+
mCallbacks.onNodeUpdated(node);
|
|
1501
|
+
}
|
|
1502
|
+
}
|
|
1503
|
+
|
|
1504
|
+
final void notifyNodeDeleted(@NonNull final ProvisionedMeshNode meshNode) {
|
|
1505
|
+
if (mCallbacks != null) {
|
|
1506
|
+
mCallbacks.onNodeDeleted(meshNode);
|
|
1507
|
+
}
|
|
1508
|
+
}
|
|
1509
|
+
|
|
1510
|
+
final void notifySceneAdded(@NonNull final Scene scene) {
|
|
1511
|
+
if (mCallbacks != null) {
|
|
1512
|
+
mCallbacks.onSceneAdded(scene);
|
|
1513
|
+
}
|
|
1514
|
+
}
|
|
1515
|
+
|
|
1516
|
+
final void notifySceneUpdated(@NonNull final Scene scene) {
|
|
1517
|
+
if (mCallbacks != null) {
|
|
1518
|
+
mCallbacks.onSceneUpdated(scene);
|
|
1519
|
+
}
|
|
1520
|
+
}
|
|
1521
|
+
|
|
1522
|
+
final void notifySceneDeleted(@NonNull final Scene scene) {
|
|
1523
|
+
if (mCallbacks != null) {
|
|
1524
|
+
mCallbacks.onSceneDeleted(scene);
|
|
1525
|
+
}
|
|
1526
|
+
}
|
|
1527
|
+
|
|
1528
|
+
final void notifyGroupAdded(@NonNull final Group group) {
|
|
1529
|
+
if (mCallbacks != null) {
|
|
1530
|
+
mCallbacks.onGroupAdded(group);
|
|
1531
|
+
}
|
|
1532
|
+
}
|
|
1533
|
+
|
|
1534
|
+
final void notifyGroupUpdated(@NonNull final Group group) {
|
|
1535
|
+
if (mCallbacks != null) {
|
|
1536
|
+
mCallbacks.onGroupUpdated(group);
|
|
1537
|
+
}
|
|
1538
|
+
}
|
|
1539
|
+
|
|
1540
|
+
final void notifyGroupDeleted(@NonNull final Group group) {
|
|
1541
|
+
if (mCallbacks != null) {
|
|
1542
|
+
mCallbacks.onGroupDeleted(group);
|
|
1543
|
+
}
|
|
1544
|
+
}
|
|
1545
|
+
|
|
1546
|
+
@Retention(RetentionPolicy.SOURCE)
|
|
1547
|
+
@IntDef({NORMAL_OPERATION, IV_UPDATE_ACTIVE})
|
|
1548
|
+
public @interface IvUpdateStates {
|
|
1549
|
+
}
|
|
1550
|
+
}
|