@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/MeshManagerApi.java
ADDED
|
@@ -0,0 +1,1386 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2018, Nordic Semiconductor
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*
|
|
5
|
+
* Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
|
6
|
+
*
|
|
7
|
+
* 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
|
8
|
+
*
|
|
9
|
+
* 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the
|
|
10
|
+
* documentation and/or other materials provided with the distribution.
|
|
11
|
+
*
|
|
12
|
+
* 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this
|
|
13
|
+
* software without specific prior written permission.
|
|
14
|
+
*
|
|
15
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
16
|
+
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
17
|
+
* HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
18
|
+
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
19
|
+
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
|
|
20
|
+
* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
package no.nordicsemi.android.mesh;
|
|
24
|
+
|
|
25
|
+
import android.content.Context;
|
|
26
|
+
import android.net.Uri;
|
|
27
|
+
import android.os.Handler;
|
|
28
|
+
import android.os.Looper;
|
|
29
|
+
|
|
30
|
+
import java.nio.ByteBuffer;
|
|
31
|
+
import java.nio.ByteOrder;
|
|
32
|
+
import java.security.Security;
|
|
33
|
+
import java.util.ArrayList;
|
|
34
|
+
import java.util.Arrays;
|
|
35
|
+
import java.util.Calendar;
|
|
36
|
+
import java.util.Iterator;
|
|
37
|
+
import java.util.List;
|
|
38
|
+
import java.util.Locale;
|
|
39
|
+
import java.util.Map.Entry;
|
|
40
|
+
import java.util.UUID;
|
|
41
|
+
|
|
42
|
+
import androidx.annotation.NonNull;
|
|
43
|
+
import androidx.annotation.Nullable;
|
|
44
|
+
import no.nordicsemi.android.mesh.data.ApplicationKeyDao;
|
|
45
|
+
import no.nordicsemi.android.mesh.data.ApplicationKeysDao;
|
|
46
|
+
import no.nordicsemi.android.mesh.data.GroupDao;
|
|
47
|
+
import no.nordicsemi.android.mesh.data.GroupsDao;
|
|
48
|
+
import no.nordicsemi.android.mesh.data.MeshNetworkDao;
|
|
49
|
+
import no.nordicsemi.android.mesh.data.NetworkKeyDao;
|
|
50
|
+
import no.nordicsemi.android.mesh.data.NetworkKeysDao;
|
|
51
|
+
import no.nordicsemi.android.mesh.data.ProvisionedMeshNodeDao;
|
|
52
|
+
import no.nordicsemi.android.mesh.data.ProvisionedMeshNodesDao;
|
|
53
|
+
import no.nordicsemi.android.mesh.data.ProvisionerDao;
|
|
54
|
+
import no.nordicsemi.android.mesh.data.ProvisionersDao;
|
|
55
|
+
import no.nordicsemi.android.mesh.data.SceneDao;
|
|
56
|
+
import no.nordicsemi.android.mesh.data.ScenesDao;
|
|
57
|
+
import no.nordicsemi.android.mesh.logger.MeshLogger;
|
|
58
|
+
import no.nordicsemi.android.mesh.provisionerstates.UnprovisionedMeshNode;
|
|
59
|
+
import no.nordicsemi.android.mesh.transport.MeshMessage;
|
|
60
|
+
import no.nordicsemi.android.mesh.transport.NetworkLayerCallbacks;
|
|
61
|
+
import no.nordicsemi.android.mesh.transport.ProvisionedMeshNode;
|
|
62
|
+
import no.nordicsemi.android.mesh.transport.UpperTransportLayerCallbacks;
|
|
63
|
+
import no.nordicsemi.android.mesh.utils.ExtendedInvalidCipherTextException;
|
|
64
|
+
import no.nordicsemi.android.mesh.utils.InputOOBAction;
|
|
65
|
+
import no.nordicsemi.android.mesh.utils.MeshAddress;
|
|
66
|
+
import no.nordicsemi.android.mesh.utils.MeshParserUtils;
|
|
67
|
+
import no.nordicsemi.android.mesh.utils.OutputOOBAction;
|
|
68
|
+
import no.nordicsemi.android.mesh.utils.ProxyFilter;
|
|
69
|
+
import no.nordicsemi.android.mesh.utils.SecureUtils;
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
@SuppressWarnings("WeakerAccess")
|
|
73
|
+
public class MeshManagerApi implements MeshMngrApi {
|
|
74
|
+
|
|
75
|
+
private static final String TAG = MeshManagerApi.class.getSimpleName();
|
|
76
|
+
public final static UUID MESH_PROVISIONING_UUID = UUID.fromString("00001827-0000-1000-8000-00805F9B34FB");
|
|
77
|
+
public final static UUID MESH_PROXY_UUID = UUID.fromString("00001828-0000-1000-8000-00805F9B34FB");
|
|
78
|
+
public static final byte PDU_TYPE_PROVISIONING = 0x03;
|
|
79
|
+
|
|
80
|
+
//PDU types
|
|
81
|
+
public static final byte PDU_TYPE_NETWORK = 0x00;
|
|
82
|
+
public static final byte PDU_TYPE_MESH_BEACON = 0x01;
|
|
83
|
+
public static final byte PDU_TYPE_PROXY_CONFIGURATION = 0x02;
|
|
84
|
+
//GATT level segmentation
|
|
85
|
+
private static final byte GATT_SAR_COMPLETE = 0b00;
|
|
86
|
+
private static final byte GATT_SAR_START = 0b01;
|
|
87
|
+
private static final byte GATT_SAR_CONTINUATION = 0b10;
|
|
88
|
+
private static final byte GATT_SAR_END = 0b11;
|
|
89
|
+
//GATT level segmentation mask
|
|
90
|
+
private static final int GATT_SAR_MASK = 0xC0;
|
|
91
|
+
private static final int GATT_SAR_UNMASK = 0x3F;
|
|
92
|
+
private static final int SAR_BIT_OFFSET = 6;
|
|
93
|
+
|
|
94
|
+
private static final long PROXY_SAR_TRANSFER_TIME_OUT = 20 * 1000; // According to the spec the proxy protocol must contain an SAR timeout of 20 seconds.
|
|
95
|
+
private final static int HASH_RANDOM_NUMBER_LENGTH = 64; // Length of the random number required to calculate the hash containing the node id in bits
|
|
96
|
+
private static final int ADVERTISEMENT_TYPE_NETWORK_ID = 0x00;
|
|
97
|
+
private static final int ADVERTISEMENT_TYPE_NODE_IDENTITY = 0x01;
|
|
98
|
+
private final static int ADVERTISED_HASH_OFFSET = 1; // Offset of the hash contained in the advertisement service data
|
|
99
|
+
private final static int ADVERTISED_HASH_LENGTH = 8; // Length of the hash contained in the advertisement service data
|
|
100
|
+
private final static int ADVERTISED_RANDOM_OFFSET = 9; // Offset of the hash contained in the advertisement service data
|
|
101
|
+
private final static int ADVERTISED_RANDOM_LENGTH = 8; //Length of the hash contained in the advertisement service data
|
|
102
|
+
private final static int ADVERTISED_NETWORK_ID_OFFSET = 1; //Offset of the network id contained in the advertisement service data
|
|
103
|
+
private final static int ADVERTISED_NETWORK_ID_LENGTH = 8; //Length of the network id contained in the advertisement service data
|
|
104
|
+
|
|
105
|
+
private final Context mContext;
|
|
106
|
+
private final Handler mHandler;
|
|
107
|
+
private MeshManagerCallbacks mMeshManagerCallbacks;
|
|
108
|
+
private final MeshProvisioningHandler mMeshProvisioningHandler;
|
|
109
|
+
private final MeshMessageHandler mMeshMessageHandler;
|
|
110
|
+
private final ImportExportUtils mImportExportUtils;
|
|
111
|
+
private byte[] mIncomingBuffer;
|
|
112
|
+
private int mIncomingBufferOffset;
|
|
113
|
+
private byte[] mOutgoingBuffer;
|
|
114
|
+
private int mOutgoingBufferOffset;
|
|
115
|
+
private MeshNetwork mMeshNetwork;
|
|
116
|
+
private boolean ivUpdateTestModeActive = false;
|
|
117
|
+
private boolean allowIvIndexRecoveryOver42 = false;
|
|
118
|
+
|
|
119
|
+
private MeshNetworkDb mMeshNetworkDb;
|
|
120
|
+
private MeshNetworkDao mMeshNetworkDao;
|
|
121
|
+
private NetworkKeyDao mNetworkKeyDao;
|
|
122
|
+
private NetworkKeysDao mNetworkKeysDao;
|
|
123
|
+
private ApplicationKeyDao mApplicationKeyDao;
|
|
124
|
+
private ApplicationKeysDao mApplicationKeysDao;
|
|
125
|
+
private ProvisionerDao mProvisionerDao;
|
|
126
|
+
private ProvisionersDao mProvisionersDao;
|
|
127
|
+
private ProvisionedMeshNodeDao mProvisionedNodeDao;
|
|
128
|
+
private ProvisionedMeshNodesDao mProvisionedNodesDao;
|
|
129
|
+
private GroupDao mGroupDao;
|
|
130
|
+
private GroupsDao mGroupsDao;
|
|
131
|
+
private SceneDao mSceneDao;
|
|
132
|
+
private ScenesDao mScenesDao;
|
|
133
|
+
private boolean isNetworkImportInProgress = false;
|
|
134
|
+
|
|
135
|
+
private final Runnable mProxyProtocolTimeoutRunnable = new Runnable() {
|
|
136
|
+
@Override
|
|
137
|
+
public void run() {
|
|
138
|
+
mMeshMessageHandler.onIncompleteTimerExpired(MeshAddress.UNASSIGNED_ADDRESS);
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* The mesh manager api constructor.
|
|
144
|
+
*
|
|
145
|
+
* @param context context
|
|
146
|
+
*/
|
|
147
|
+
public MeshManagerApi(@NonNull final Context context) {
|
|
148
|
+
this.mContext = context;
|
|
149
|
+
mHandler = new Handler(Looper.getMainLooper());
|
|
150
|
+
mMeshProvisioningHandler = new MeshProvisioningHandler(context, internalTransportCallbacks, internalMeshMgrCallbacks);
|
|
151
|
+
mMeshMessageHandler = new MeshMessageHandler(context, internalTransportCallbacks, networkLayerCallbacks, upperTransportLayerCallbacks);
|
|
152
|
+
mImportExportUtils = new ImportExportUtils();
|
|
153
|
+
initBouncyCastle();
|
|
154
|
+
//Init database
|
|
155
|
+
initDb(context);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
@Override
|
|
159
|
+
public void setMeshManagerCallbacks(@NonNull final MeshManagerCallbacks callbacks) {
|
|
160
|
+
mMeshManagerCallbacks = callbacks;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
@Override
|
|
164
|
+
public void setProvisioningStatusCallbacks(@NonNull final MeshProvisioningStatusCallbacks callbacks) {
|
|
165
|
+
mMeshProvisioningHandler.setProvisioningCallbacks(callbacks);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
@Override
|
|
169
|
+
public void setMeshStatusCallbacks(@NonNull final MeshStatusCallbacks callbacks) {
|
|
170
|
+
mMeshMessageHandler.setMeshStatusCallbacks(callbacks);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
@Override
|
|
174
|
+
public void loadMeshNetwork() {
|
|
175
|
+
mMeshNetworkDb.loadNetwork(mMeshNetworkDao, mNetworkKeysDao, mApplicationKeysDao, mProvisionersDao, mProvisionedNodesDao,
|
|
176
|
+
mGroupsDao, mScenesDao, networkLoadCallbacks);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
@Override
|
|
180
|
+
public MeshNetwork getMeshNetwork() {
|
|
181
|
+
return mMeshNetwork;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
@Override
|
|
185
|
+
public boolean isIvUpdateTestModeActive() {
|
|
186
|
+
return ivUpdateTestModeActive;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
@Override
|
|
190
|
+
public void setIvUpdateTestModeActive(final boolean ivUpdateTestMode) {
|
|
191
|
+
ivUpdateTestModeActive = ivUpdateTestMode;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
@Override
|
|
195
|
+
public void allowIvIndexRecoveryOver42(final boolean allowIvIndexRecoveryOver42) {
|
|
196
|
+
this.allowIvIndexRecoveryOver42 = allowIvIndexRecoveryOver42;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
private void initBouncyCastle() {
|
|
200
|
+
Security.insertProviderAt(new org.spongycastle.jce.provider.BouncyCastleProvider(), 1);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
private void initDb(final Context context) {
|
|
204
|
+
mMeshNetworkDb = MeshNetworkDb.getDatabase(context);
|
|
205
|
+
mMeshNetworkDao = mMeshNetworkDb.meshNetworkDao();
|
|
206
|
+
mNetworkKeyDao = mMeshNetworkDb.networkKeyDao();
|
|
207
|
+
mNetworkKeysDao = mMeshNetworkDb.networkKeysDao();
|
|
208
|
+
mApplicationKeyDao = mMeshNetworkDb.applicationKeyDao();
|
|
209
|
+
mApplicationKeysDao = mMeshNetworkDb.applicationKeysDao();
|
|
210
|
+
mProvisionerDao = mMeshNetworkDb.provisionerDao();
|
|
211
|
+
mProvisionersDao = mMeshNetworkDb.provisionersDao();
|
|
212
|
+
mProvisionedNodeDao = mMeshNetworkDb.provisionedMeshNodeDao();
|
|
213
|
+
mProvisionedNodesDao = mMeshNetworkDb.provisionedMeshNodesDao();
|
|
214
|
+
mGroupDao = mMeshNetworkDb.groupDao();
|
|
215
|
+
mGroupsDao = mMeshNetworkDb.groupsDao();
|
|
216
|
+
mSceneDao = mMeshNetworkDb.sceneDao();
|
|
217
|
+
mScenesDao = mMeshNetworkDb.scenesDao();
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
private void insertNetwork(final MeshNetwork meshNetwork) {
|
|
221
|
+
meshNetwork.setLastSelected(true);
|
|
222
|
+
//If there is only one provisioner we default to the zeroth
|
|
223
|
+
if (meshNetwork.getProvisioners().size() == 1) {
|
|
224
|
+
meshNetwork.getProvisioners().get(0).setLastSelected(true);
|
|
225
|
+
}
|
|
226
|
+
mMeshNetworkDb.insertNetwork(mMeshNetworkDao,
|
|
227
|
+
mNetworkKeysDao,
|
|
228
|
+
mApplicationKeysDao,
|
|
229
|
+
mProvisionersDao,
|
|
230
|
+
mProvisionedNodesDao,
|
|
231
|
+
mGroupsDao, mScenesDao,
|
|
232
|
+
meshNetwork);
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
@Override
|
|
236
|
+
public final void handleNotifications(final int mtuSize, @NonNull final byte[] data) {
|
|
237
|
+
byte[] unsegmentedPdu;
|
|
238
|
+
if (!isGattSegmented(data)) {
|
|
239
|
+
unsegmentedPdu = data;
|
|
240
|
+
} else {
|
|
241
|
+
final byte[] combinedPdu = appendPdu(mtuSize, data);
|
|
242
|
+
if (combinedPdu == null) {
|
|
243
|
+
//Start the timer
|
|
244
|
+
toggleProxyProtocolSarTimeOut(data);
|
|
245
|
+
return;
|
|
246
|
+
} else {
|
|
247
|
+
toggleProxyProtocolSarTimeOut(data);
|
|
248
|
+
unsegmentedPdu = removeSegmentation(mtuSize, combinedPdu);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
parseNotifications(unsegmentedPdu);
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
/**
|
|
255
|
+
* Toggles the Segmentation and Reassembly timeout for proxy configuration messages received via proxy protocol
|
|
256
|
+
*
|
|
257
|
+
* @param data pdu
|
|
258
|
+
*/
|
|
259
|
+
private void toggleProxyProtocolSarTimeOut(final byte[] data) {
|
|
260
|
+
final int pduType = MeshParserUtils.unsignedByteToInt(data[0]);
|
|
261
|
+
if (pduType == ((GATT_SAR_START << SAR_BIT_OFFSET) | MeshManagerApi.PDU_TYPE_PROXY_CONFIGURATION)) {
|
|
262
|
+
mHandler.postDelayed(mProxyProtocolTimeoutRunnable, PROXY_SAR_TRANSFER_TIME_OUT);
|
|
263
|
+
} else if (pduType == ((GATT_SAR_END << SAR_BIT_OFFSET) | MeshManagerApi.PDU_TYPE_PROXY_CONFIGURATION)) {
|
|
264
|
+
mHandler.removeCallbacks(mProxyProtocolTimeoutRunnable);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
/**
|
|
269
|
+
* Parses notifications received by the client.
|
|
270
|
+
*
|
|
271
|
+
* @param unsegmentedPdu pdu received by the client.
|
|
272
|
+
*/
|
|
273
|
+
private void parseNotifications(final byte[] unsegmentedPdu) {
|
|
274
|
+
try {
|
|
275
|
+
switch (unsegmentedPdu[0]) {
|
|
276
|
+
case PDU_TYPE_NETWORK:
|
|
277
|
+
//MeshNetwork PDU
|
|
278
|
+
MeshLogger.verbose(TAG, "Received network pdu: " + MeshParserUtils.bytesToHex(unsegmentedPdu, true));
|
|
279
|
+
mMeshMessageHandler.parseMeshPduNotifications(unsegmentedPdu, mMeshNetwork);
|
|
280
|
+
break;
|
|
281
|
+
case PDU_TYPE_MESH_BEACON:
|
|
282
|
+
//Validate SNBs against all network keys
|
|
283
|
+
NetworkKey networkKey;
|
|
284
|
+
for (int i = 0; i < mMeshNetwork.getNetKeys().size(); i++) {
|
|
285
|
+
networkKey = mMeshNetwork.getNetKeys().get(i);
|
|
286
|
+
final byte[] receivedBeaconData = new byte[unsegmentedPdu.length - 1];
|
|
287
|
+
System.arraycopy(unsegmentedPdu, 1, receivedBeaconData, 0, receivedBeaconData.length);
|
|
288
|
+
final SecureNetworkBeacon receivedBeacon = new SecureNetworkBeacon(receivedBeaconData);
|
|
289
|
+
|
|
290
|
+
final byte[] n = networkKey.getTxNetworkKey();
|
|
291
|
+
final int flags = receivedBeacon.getFlags();
|
|
292
|
+
final byte[] networkId = SecureUtils.calculateK3(n);
|
|
293
|
+
final int ivIndex = receivedBeacon.getIvIndex().getIvIndex();
|
|
294
|
+
MeshLogger.debug(TAG, "Received mesh beacon: " + receivedBeacon);
|
|
295
|
+
|
|
296
|
+
final SecureNetworkBeacon localSecureNetworkBeacon = SecureUtils.createSecureNetworkBeacon(n, flags, networkId, ivIndex);
|
|
297
|
+
//Check the the beacon received is a valid by matching the authentication values
|
|
298
|
+
if (Arrays.equals(receivedBeacon.getAuthenticationValue(), localSecureNetworkBeacon.getAuthenticationValue())) {
|
|
299
|
+
MeshLogger.debug(TAG, "Secure Network Beacon authenticated.");
|
|
300
|
+
|
|
301
|
+
// The library does not retransmit Secure Network Beacon.
|
|
302
|
+
// If this node is a member of a primary subnet and receives a Secure Network
|
|
303
|
+
// beacon on a secondary subnet, it will disregard it.
|
|
304
|
+
if (mMeshNetwork.getPrimaryNetworkKey() != null && networkKey.keyIndex != 0) {
|
|
305
|
+
MeshLogger.debug(TAG, "Discarding beacon for secondary subnet with network key index: " + networkKey.keyIndex);
|
|
306
|
+
return;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
// Get the last IV Index.
|
|
310
|
+
/// The last used IV Index for this mesh network.
|
|
311
|
+
final IvIndex lastIvIndex = mMeshNetwork.getIvIndex();
|
|
312
|
+
MeshLogger.debug(TAG, "Last IV Index: " + lastIvIndex.getIvIndex());
|
|
313
|
+
/// The date of the last change of IV Index or IV Update Flag.
|
|
314
|
+
final Calendar lastTransitionDate = lastIvIndex.getTransitionDate();
|
|
315
|
+
/// A flag whether the IV has recently been updated using IV Recovery procedure.
|
|
316
|
+
/// The at-least-96h requirement for the duration of the current state will not apply.
|
|
317
|
+
/// The node shall not execute more than one IV Index Recovery within a period of 192 hours.
|
|
318
|
+
final boolean isIvRecoveryActive = lastIvIndex.getIvRecoveryFlag();
|
|
319
|
+
/// The test mode disables the 96h rule, leaving all other behavior unchanged.
|
|
320
|
+
final boolean isIvTestModeActive = ivUpdateTestModeActive;
|
|
321
|
+
|
|
322
|
+
final boolean flag = allowIvIndexRecoveryOver42;
|
|
323
|
+
if (!receivedBeacon.canOverwrite(lastIvIndex, lastTransitionDate, isIvRecoveryActive, isIvTestModeActive, flag)) {
|
|
324
|
+
String numberOfHoursSinceDate = ((Calendar.getInstance().getTimeInMillis() -
|
|
325
|
+
(lastTransitionDate != null ? lastTransitionDate.getTimeInMillis() : 0)) / (3600 * 1000)) + "h";
|
|
326
|
+
MeshLogger.warn(TAG, "Discarding beacon " + receivedBeacon.getIvIndex() +
|
|
327
|
+
", last " + lastIvIndex.getIvIndex() + ", changed: "
|
|
328
|
+
+ numberOfHoursSinceDate + " ago, test mode: " + ivUpdateTestModeActive);
|
|
329
|
+
return;
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
final IvIndex receivedIvIndex = receivedBeacon.getIvIndex();
|
|
333
|
+
if (receivedIvIndex.getIvIndex() > lastIvIndex.getIvIndex()) {
|
|
334
|
+
mMeshNetwork.ivIndex = receivedIvIndex;
|
|
335
|
+
MeshLogger.info(TAG, "Applying: " + mMeshNetwork.ivIndex.getIvIndex());
|
|
336
|
+
} else {
|
|
337
|
+
// This will leave the IV update active state intact or will switch from false to true.
|
|
338
|
+
// canOverwrite() ensures this by discarding the secureNetworkBeacon received.
|
|
339
|
+
mMeshNetwork.ivIndex.setIvUpdateActive(receivedIvIndex.isIvUpdateActive());
|
|
340
|
+
MeshLogger.info(TAG, "Setting IV Update Active to: " + receivedIvIndex.isIvUpdateActive());
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
// If the IV Index used for transmitting messages effectively increased,
|
|
344
|
+
// the Node shall reset the sequence number to 0x000000.
|
|
345
|
+
if (mMeshNetwork.ivIndex.getTransmitIvIndex() > lastIvIndex.getTransmitIvIndex()) {
|
|
346
|
+
MeshLogger.info(TAG, "Resetting local sequence numbers to 0");
|
|
347
|
+
final Provisioner provisioner = mMeshNetwork.getSelectedProvisioner();
|
|
348
|
+
final ProvisionedMeshNode node = mMeshNetwork.getNode(provisioner.getProvisionerUuid());
|
|
349
|
+
node.setSequenceNumber(0);
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
//Updating the iv recovery flag
|
|
353
|
+
if (lastIvIndex != mMeshNetwork.ivIndex) {
|
|
354
|
+
final boolean ivRecovery = mMeshNetwork.getIvIndex().getIvIndex() > lastIvIndex.getIvIndex() + 1
|
|
355
|
+
&& !receivedBeacon.getIvIndex().isIvUpdateActive();
|
|
356
|
+
mMeshNetwork.getIvIndex().setIvRecoveryFlag(ivRecovery);
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
if (!mMeshNetwork.ivIndex.getIvRecoveryFlag()) {
|
|
360
|
+
final Iterator<Entry<Integer, List<Integer>>> iterator = mMeshNetwork.networkExclusions.entrySet().iterator();
|
|
361
|
+
while (iterator.hasNext()) {
|
|
362
|
+
final Entry<Integer, List<Integer>> exclusions = iterator.next();
|
|
363
|
+
final int expectedIncrement = exclusions.getKey() + 2;
|
|
364
|
+
if (mMeshNetwork.ivIndex.getIvIndex() >= expectedIncrement) {
|
|
365
|
+
// Clear the last known sequence number of addresses that are to be removed from the exclusion list.
|
|
366
|
+
// Decided to retain the last known sequence number as the IV Indexes increment the sequence number
|
|
367
|
+
// will be greater than the last known anyways
|
|
368
|
+
//for (Integer address : mMeshNetwork.networkExclusions.get(expectedIncrement)) {
|
|
369
|
+
// mMeshNetwork.sequenceNumbers.removeAt(address);
|
|
370
|
+
//}
|
|
371
|
+
iterator.remove();
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
break;
|
|
378
|
+
case PDU_TYPE_PROXY_CONFIGURATION:
|
|
379
|
+
//Proxy configuration
|
|
380
|
+
MeshLogger.verbose(TAG, "Received proxy configuration message: " + MeshParserUtils.bytesToHex(unsegmentedPdu, true));
|
|
381
|
+
mMeshMessageHandler.parseMeshPduNotifications(unsegmentedPdu, mMeshNetwork);
|
|
382
|
+
break;
|
|
383
|
+
case PDU_TYPE_PROVISIONING:
|
|
384
|
+
//Provisioning PDU
|
|
385
|
+
MeshLogger.verbose(TAG, "Received provisioning message: " + MeshParserUtils.bytesToHex(unsegmentedPdu, true));
|
|
386
|
+
mMeshProvisioningHandler.parseProvisioningNotifications(unsegmentedPdu);
|
|
387
|
+
break;
|
|
388
|
+
}
|
|
389
|
+
} catch (ExtendedInvalidCipherTextException ex) {
|
|
390
|
+
//TODO handle decryption failure
|
|
391
|
+
} catch (IllegalArgumentException ex) {
|
|
392
|
+
MeshLogger.error(TAG, "Parsing notification failed: " + MeshParserUtils.bytesToHex(unsegmentedPdu, true) + " - " + ex.getMessage());
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
@Override
|
|
397
|
+
public final void handleWriteCallbacks(final int mtuSize, @NonNull final byte[] data) {
|
|
398
|
+
byte[] unsegmentedPdu;
|
|
399
|
+
if (!isGattSegmented(data)) {
|
|
400
|
+
unsegmentedPdu = data;
|
|
401
|
+
} else {
|
|
402
|
+
final byte[] combinedPdu = appendWritePdu(mtuSize, data);
|
|
403
|
+
if (combinedPdu == null)
|
|
404
|
+
return;
|
|
405
|
+
else {
|
|
406
|
+
unsegmentedPdu = removeSegmentation(mtuSize, combinedPdu);
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
handleWriteCallbacks(unsegmentedPdu);
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
/**
|
|
413
|
+
* Handles callbacks after writing to characteristics to maintain/update the state machine
|
|
414
|
+
*
|
|
415
|
+
* @param data written to the peripheral
|
|
416
|
+
*/
|
|
417
|
+
private void handleWriteCallbacks(final byte[] data) {
|
|
418
|
+
switch (data[0]) {
|
|
419
|
+
case PDU_TYPE_NETWORK: // MeshNetwork PDU
|
|
420
|
+
MeshLogger.verbose(TAG, "MeshNetwork pdu sent: " + MeshParserUtils.bytesToHex(data, true));
|
|
421
|
+
break;
|
|
422
|
+
case PDU_TYPE_MESH_BEACON: // MESH BEACON
|
|
423
|
+
MeshLogger.verbose(TAG, "Mesh beacon pdu sent: " + MeshParserUtils.bytesToHex(data, true));
|
|
424
|
+
break;
|
|
425
|
+
case PDU_TYPE_PROXY_CONFIGURATION: // Proxy configuration
|
|
426
|
+
MeshLogger.verbose(TAG, "Proxy configuration pdu sent: " + MeshParserUtils.bytesToHex(data, true));
|
|
427
|
+
break;
|
|
428
|
+
case PDU_TYPE_PROVISIONING: // Provisioning PDU
|
|
429
|
+
MeshLogger.verbose(TAG, "Provisioning pdu sent: " + MeshParserUtils.bytesToHex(data, true));
|
|
430
|
+
mMeshProvisioningHandler.handleProvisioningWriteCallbacks();
|
|
431
|
+
break;
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
@SuppressWarnings("BooleanMethodIsAlwaysInverted")
|
|
436
|
+
private boolean isGattSegmented(final byte[] pdu) {
|
|
437
|
+
final int gattSar = (pdu[0] & GATT_SAR_MASK) >> SAR_BIT_OFFSET;
|
|
438
|
+
switch (gattSar) {
|
|
439
|
+
case GATT_SAR_START:
|
|
440
|
+
case GATT_SAR_CONTINUATION:
|
|
441
|
+
case GATT_SAR_END:
|
|
442
|
+
return true;
|
|
443
|
+
default:
|
|
444
|
+
return false;
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
/**
|
|
449
|
+
* Appends the PDUs that are segmented at gatt layer.
|
|
450
|
+
*
|
|
451
|
+
* @param mtuSize mtu size supported by the device/node
|
|
452
|
+
* @param pdu pdu received by the provisioner
|
|
453
|
+
* @return the combine pdu or returns null if not complete.
|
|
454
|
+
*/
|
|
455
|
+
private byte[] appendPdu(final int mtuSize, final byte[] pdu) {
|
|
456
|
+
final int length = Math.min(pdu.length, mtuSize);
|
|
457
|
+
if (mIncomingBuffer == null) {
|
|
458
|
+
mIncomingBufferOffset = 0;
|
|
459
|
+
mIncomingBufferOffset += length;
|
|
460
|
+
mIncomingBuffer = pdu;
|
|
461
|
+
} else {
|
|
462
|
+
final byte[] buffer = new byte[mIncomingBuffer.length + length];
|
|
463
|
+
System.arraycopy(mIncomingBuffer, 0, buffer, 0, mIncomingBufferOffset);
|
|
464
|
+
System.arraycopy(pdu, 0, buffer, mIncomingBufferOffset, length);
|
|
465
|
+
mIncomingBufferOffset += length;
|
|
466
|
+
mIncomingBuffer = buffer;
|
|
467
|
+
final int sar = MeshParserUtils.unsignedByteToInt(pdu[0]) >> SAR_BIT_OFFSET;
|
|
468
|
+
if (sar == GATT_SAR_END) {
|
|
469
|
+
final byte[] packet = mIncomingBuffer;
|
|
470
|
+
mIncomingBuffer = null;
|
|
471
|
+
return packet;
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
return null;
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
/**
|
|
478
|
+
* Appends the PDUs that are segmented at gatt layer.
|
|
479
|
+
*
|
|
480
|
+
* @param mtuSize mtu size supported by the device/node
|
|
481
|
+
* @param pdu pdu received by the provisioner
|
|
482
|
+
* @return the combine pdu or returns null if not complete.
|
|
483
|
+
*/
|
|
484
|
+
private byte[] appendWritePdu(final int mtuSize, final byte[] pdu) {
|
|
485
|
+
if (mOutgoingBuffer == null) {
|
|
486
|
+
final int length = Math.min(pdu.length, mtuSize);
|
|
487
|
+
mOutgoingBufferOffset = 0;
|
|
488
|
+
mOutgoingBufferOffset += length;
|
|
489
|
+
mOutgoingBuffer = pdu;
|
|
490
|
+
} else {
|
|
491
|
+
final int length = Math.min(pdu.length, mtuSize);
|
|
492
|
+
final byte[] buffer = new byte[mOutgoingBuffer.length + length];
|
|
493
|
+
System.arraycopy(mOutgoingBuffer, 0, buffer, 0, mOutgoingBufferOffset);
|
|
494
|
+
System.arraycopy(pdu, 0, buffer, mOutgoingBufferOffset, length);
|
|
495
|
+
mOutgoingBufferOffset += length;
|
|
496
|
+
mOutgoingBuffer = buffer;
|
|
497
|
+
if (length < mtuSize) {
|
|
498
|
+
final byte[] packet = mOutgoingBuffer;
|
|
499
|
+
mOutgoingBuffer = null;
|
|
500
|
+
return packet;
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
return null;
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
private byte[] applySegmentation(final int mtuSize, final byte[] pdu) {
|
|
507
|
+
int srcOffset = 0;
|
|
508
|
+
int dstOffset = 0;
|
|
509
|
+
final int chunks = (pdu.length + (mtuSize - 1)) / mtuSize;
|
|
510
|
+
|
|
511
|
+
final int pduType = pdu[0];
|
|
512
|
+
if (chunks > 1) {
|
|
513
|
+
final byte[] segmentedBuffer = new byte[pdu.length + chunks - 1];
|
|
514
|
+
int length;
|
|
515
|
+
for (int i = 0; i < chunks; i++) {
|
|
516
|
+
if (i == 0) {
|
|
517
|
+
length = Math.min(pdu.length - srcOffset, mtuSize);
|
|
518
|
+
System.arraycopy(pdu, srcOffset, segmentedBuffer, dstOffset, length);
|
|
519
|
+
segmentedBuffer[0] = (byte) ((GATT_SAR_START << 6) | pduType);
|
|
520
|
+
} else if (i == chunks - 1) {
|
|
521
|
+
length = Math.min(pdu.length - srcOffset, mtuSize);
|
|
522
|
+
segmentedBuffer[dstOffset] = (byte) ((GATT_SAR_END << 6) | pduType);
|
|
523
|
+
System.arraycopy(pdu, srcOffset, segmentedBuffer, dstOffset + 1, length);
|
|
524
|
+
} else {
|
|
525
|
+
length = Math.min(pdu.length - srcOffset, mtuSize - 1);
|
|
526
|
+
segmentedBuffer[dstOffset] = (byte) ((GATT_SAR_CONTINUATION << 6) | pduType);
|
|
527
|
+
System.arraycopy(pdu, srcOffset, segmentedBuffer, dstOffset + 1, length);
|
|
528
|
+
}
|
|
529
|
+
srcOffset += length;
|
|
530
|
+
dstOffset += mtuSize;
|
|
531
|
+
}
|
|
532
|
+
return segmentedBuffer;
|
|
533
|
+
}
|
|
534
|
+
return pdu;
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
private byte[] removeSegmentation(final int mtuSize, final byte[] data) {
|
|
538
|
+
int srcOffset = 0;
|
|
539
|
+
int dstOffset = 0;
|
|
540
|
+
final int chunks = (data.length + (mtuSize - 1)) / mtuSize;
|
|
541
|
+
if (chunks > 1) {
|
|
542
|
+
final byte[] buffer = new byte[data.length - (chunks - 1)];
|
|
543
|
+
int length;
|
|
544
|
+
for (int i = 0; i < chunks; i++) {
|
|
545
|
+
// when removing segmentation bits we only remove the start because the pdu type would be the same for each segment.
|
|
546
|
+
// Therefore we can ignore this pdu type byte as they are already put together in the ble
|
|
547
|
+
length = Math.min(buffer.length - dstOffset, mtuSize);
|
|
548
|
+
if (i == 0) {
|
|
549
|
+
System.arraycopy(data, srcOffset, buffer, dstOffset, length);
|
|
550
|
+
buffer[0] = (byte) (buffer[0] & GATT_SAR_UNMASK);
|
|
551
|
+
} else if (i == chunks - 1) {
|
|
552
|
+
System.arraycopy(data, srcOffset + 1, buffer, dstOffset, length);
|
|
553
|
+
} else {
|
|
554
|
+
length = length - 1;
|
|
555
|
+
System.arraycopy(data, srcOffset + 1, buffer, dstOffset, length);
|
|
556
|
+
}
|
|
557
|
+
srcOffset += mtuSize;
|
|
558
|
+
dstOffset += length;
|
|
559
|
+
}
|
|
560
|
+
return buffer;
|
|
561
|
+
}
|
|
562
|
+
return data;
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
@Override
|
|
566
|
+
public void identifyNode(@NonNull final UUID deviceUUID) throws IllegalArgumentException {
|
|
567
|
+
identifyNode(deviceUUID, MeshProvisioningHandler.ATTENTION_TIMER);
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
@Override
|
|
571
|
+
public void identifyNode(@NonNull final UUID deviceUuid,
|
|
572
|
+
final int attentionTimer) throws IllegalArgumentException {
|
|
573
|
+
final NetworkKey networkKey = mMeshNetwork.getPrimaryNetworkKey();
|
|
574
|
+
if (networkKey != null) {
|
|
575
|
+
mMeshProvisioningHandler.identify(deviceUuid, networkKey, mMeshNetwork.getProvisioningFlags(),
|
|
576
|
+
mMeshNetwork.getIvIndex().getIvIndex(), mMeshNetwork.getGlobalTtl(), attentionTimer);
|
|
577
|
+
}
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
@Override
|
|
581
|
+
public void startProvisioning(@NonNull final UnprovisionedMeshNode unprovisionedMeshNode) throws IllegalArgumentException {
|
|
582
|
+
if (isAddressValid(unprovisionedMeshNode)) {
|
|
583
|
+
mMeshProvisioningHandler.startProvisioningNoOOB(unprovisionedMeshNode);
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
@Override
|
|
588
|
+
public void startProvisioningWithStaticOOB(@NonNull final UnprovisionedMeshNode unprovisionedMeshNode) throws IllegalArgumentException {
|
|
589
|
+
if (isAddressValid(unprovisionedMeshNode)) {
|
|
590
|
+
mMeshProvisioningHandler.startProvisioningWithStaticOOB(unprovisionedMeshNode);
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
@Override
|
|
595
|
+
public void startProvisioningWithOutputOOB(@NonNull final UnprovisionedMeshNode unprovisionedMeshNode,
|
|
596
|
+
@NonNull final OutputOOBAction oobAction) throws IllegalArgumentException {
|
|
597
|
+
if (isAddressValid(unprovisionedMeshNode)) {
|
|
598
|
+
mMeshProvisioningHandler.startProvisioningWithOutputOOB(unprovisionedMeshNode, oobAction);
|
|
599
|
+
}
|
|
600
|
+
}
|
|
601
|
+
|
|
602
|
+
@Override
|
|
603
|
+
public void startProvisioningWithInputOOB(@NonNull final UnprovisionedMeshNode unprovisionedMeshNode,
|
|
604
|
+
@NonNull final InputOOBAction oobAction) throws IllegalArgumentException {
|
|
605
|
+
if (isAddressValid(unprovisionedMeshNode)) {
|
|
606
|
+
mMeshProvisioningHandler.startProvisioningWithInputOOB(unprovisionedMeshNode, oobAction);
|
|
607
|
+
}
|
|
608
|
+
}
|
|
609
|
+
|
|
610
|
+
@Override
|
|
611
|
+
public void setProvisioningAuthentication(@NonNull final String authentication) {
|
|
612
|
+
mMeshProvisioningHandler.sendProvisioningConfirmation(authentication);
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
@NonNull
|
|
616
|
+
@Override
|
|
617
|
+
public UUID getDeviceUuid(@NonNull final byte[] serviceData) throws IllegalArgumentException {
|
|
618
|
+
if (serviceData.length < 18)
|
|
619
|
+
throw new IllegalArgumentException("Service data cannot be null");
|
|
620
|
+
|
|
621
|
+
final ByteBuffer buffer = ByteBuffer.wrap(serviceData);
|
|
622
|
+
final long msb = buffer.getLong();
|
|
623
|
+
final long lsb = buffer.getLong();
|
|
624
|
+
|
|
625
|
+
return new UUID(msb, lsb);
|
|
626
|
+
}
|
|
627
|
+
|
|
628
|
+
@Override
|
|
629
|
+
public boolean isMeshBeacon(@NonNull final byte[] advertisementData) {
|
|
630
|
+
for (int i = 0; i < advertisementData.length; i++) {
|
|
631
|
+
final int length = MeshParserUtils.unsignedByteToInt(advertisementData[i]);
|
|
632
|
+
if (length == 0)
|
|
633
|
+
break;
|
|
634
|
+
final int type = MeshParserUtils.unsignedByteToInt(advertisementData[i + 1]);
|
|
635
|
+
if (type == MeshBeacon.MESH_BEACON) {
|
|
636
|
+
return true;
|
|
637
|
+
}
|
|
638
|
+
i = i + length;
|
|
639
|
+
}
|
|
640
|
+
return false;
|
|
641
|
+
}
|
|
642
|
+
|
|
643
|
+
@Nullable
|
|
644
|
+
@Override
|
|
645
|
+
public byte[] getMeshBeaconData(@NonNull final byte[] advertisementData) {
|
|
646
|
+
if (isMeshBeacon(advertisementData)) {
|
|
647
|
+
for (int i = 0; i < advertisementData.length; i++) {
|
|
648
|
+
final int length = MeshParserUtils.unsignedByteToInt(advertisementData[i]);
|
|
649
|
+
final int type = MeshParserUtils.unsignedByteToInt(advertisementData[i + 1]);
|
|
650
|
+
if (type == MeshBeacon.MESH_BEACON) {
|
|
651
|
+
final byte[] beaconData = new byte[length];
|
|
652
|
+
final ByteBuffer buffer = ByteBuffer.wrap(advertisementData);
|
|
653
|
+
buffer.position(i + 2);
|
|
654
|
+
buffer.get(beaconData, 0, length);
|
|
655
|
+
return beaconData;
|
|
656
|
+
}
|
|
657
|
+
i = i + length;
|
|
658
|
+
}
|
|
659
|
+
}
|
|
660
|
+
return null;
|
|
661
|
+
}
|
|
662
|
+
|
|
663
|
+
@Nullable
|
|
664
|
+
@Override
|
|
665
|
+
public MeshBeacon getMeshBeacon(final byte[] beaconData) {
|
|
666
|
+
if (beaconData != null) {
|
|
667
|
+
final int beaconType = beaconData[0];
|
|
668
|
+
if (beaconType == 0x00) {
|
|
669
|
+
return new UnprovisionedBeacon(beaconData);
|
|
670
|
+
} else if (beaconType == 0x01) {
|
|
671
|
+
return new SecureNetworkBeacon(beaconData);
|
|
672
|
+
}
|
|
673
|
+
}
|
|
674
|
+
return null;
|
|
675
|
+
}
|
|
676
|
+
|
|
677
|
+
@Override
|
|
678
|
+
public String generateNetworkId(@NonNull final byte[] networkKey) {
|
|
679
|
+
return MeshParserUtils.bytesToHex(SecureUtils.calculateK3(networkKey), false);
|
|
680
|
+
}
|
|
681
|
+
|
|
682
|
+
@Override
|
|
683
|
+
public boolean nodeIdentityMatches(@NonNull final ProvisionedMeshNode meshNode, @NonNull final byte[] serviceData) {
|
|
684
|
+
final byte[] advertisedHash = getAdvertisedHash(serviceData);
|
|
685
|
+
//If there is no advertised hash return false as this is used to match against the generated hash
|
|
686
|
+
if (advertisedHash == null) {
|
|
687
|
+
return false;
|
|
688
|
+
}
|
|
689
|
+
|
|
690
|
+
//If there is no advertised random return false as this is used to generate the hash to match against the advertised
|
|
691
|
+
final byte[] random = getAdvertisedRandom(serviceData);
|
|
692
|
+
if (random == null) {
|
|
693
|
+
return false;
|
|
694
|
+
}
|
|
695
|
+
|
|
696
|
+
for (NetworkKey key : mMeshNetwork.netKeys) {
|
|
697
|
+
if (Arrays.equals(advertisedHash, SecureUtils.
|
|
698
|
+
calculateHash(key.getIdentityKey(), random, MeshAddress.addressIntToBytes(meshNode.getUnicastAddress()))) ||
|
|
699
|
+
(key.getOldIdentityKey() != null &&
|
|
700
|
+
Arrays.equals(advertisedHash, SecureUtils.
|
|
701
|
+
calculateHash(key.getOldIdentityKey(), random, MeshAddress.addressIntToBytes(meshNode.getUnicastAddress())))))
|
|
702
|
+
return true;
|
|
703
|
+
}
|
|
704
|
+
return false;
|
|
705
|
+
}
|
|
706
|
+
|
|
707
|
+
|
|
708
|
+
@Override
|
|
709
|
+
public boolean isAdvertisedWithNodeIdentity(@Nullable final byte[] serviceData) {
|
|
710
|
+
return serviceData != null && serviceData.length == 17
|
|
711
|
+
&& serviceData[ADVERTISED_HASH_OFFSET - 1] == ADVERTISEMENT_TYPE_NODE_IDENTITY;
|
|
712
|
+
}
|
|
713
|
+
|
|
714
|
+
/**
|
|
715
|
+
* Returns the advertised hash
|
|
716
|
+
*
|
|
717
|
+
* @param serviceData advertised service data
|
|
718
|
+
* @return returns the advertised hash
|
|
719
|
+
*/
|
|
720
|
+
private byte[] getAdvertisedHash(final byte[] serviceData) {
|
|
721
|
+
if (serviceData == null)
|
|
722
|
+
return null;
|
|
723
|
+
final ByteBuffer expectedBufferHash = ByteBuffer.allocate(ADVERTISED_HASH_LENGTH).order(ByteOrder.BIG_ENDIAN);
|
|
724
|
+
expectedBufferHash.put(serviceData, ADVERTISED_HASH_OFFSET, ADVERTISED_HASH_LENGTH);
|
|
725
|
+
return expectedBufferHash.array();
|
|
726
|
+
}
|
|
727
|
+
|
|
728
|
+
/**
|
|
729
|
+
* Returns the advertised random
|
|
730
|
+
*
|
|
731
|
+
* @param serviceData advertised service data
|
|
732
|
+
* @return returns the advertised random
|
|
733
|
+
*/
|
|
734
|
+
private byte[] getAdvertisedRandom(final byte[] serviceData) {
|
|
735
|
+
if (serviceData == null || serviceData.length <= ADVERTISED_RANDOM_LENGTH)
|
|
736
|
+
return null;
|
|
737
|
+
final ByteBuffer expectedBufferHash = ByteBuffer.allocate(ADVERTISED_RANDOM_LENGTH).order(ByteOrder.BIG_ENDIAN);
|
|
738
|
+
expectedBufferHash.put(serviceData, ADVERTISED_RANDOM_OFFSET, ADVERTISED_RANDOM_LENGTH);
|
|
739
|
+
return expectedBufferHash.array();
|
|
740
|
+
}
|
|
741
|
+
|
|
742
|
+
@Override
|
|
743
|
+
public boolean networkIdMatches(@NonNull final String networkId, @Nullable final byte[] serviceData) {
|
|
744
|
+
final byte[] advertisedNetworkId = getAdvertisedNetworkId(serviceData);
|
|
745
|
+
if (advertisedNetworkId != null) {
|
|
746
|
+
final String advertisedNetworkIdString = MeshParserUtils.bytesToHex(advertisedNetworkId, false).toUpperCase(Locale.US);
|
|
747
|
+
return networkId.equals(advertisedNetworkIdString);
|
|
748
|
+
}
|
|
749
|
+
return false;
|
|
750
|
+
}
|
|
751
|
+
|
|
752
|
+
@Override
|
|
753
|
+
public boolean networkIdMatches(@Nullable final byte[] serviceData) {
|
|
754
|
+
final byte[] advertisedNetworkId = getAdvertisedNetworkId(serviceData);
|
|
755
|
+
if (advertisedNetworkId != null) {
|
|
756
|
+
for (NetworkKey key : mMeshNetwork.getNetKeys()) {
|
|
757
|
+
if (Arrays.equals(key.getNetworkId(), advertisedNetworkId) || Arrays.equals(key.getOldNetworkId(), advertisedNetworkId))
|
|
758
|
+
return true;
|
|
759
|
+
}
|
|
760
|
+
}
|
|
761
|
+
return false;
|
|
762
|
+
}
|
|
763
|
+
|
|
764
|
+
@Override
|
|
765
|
+
public boolean isAdvertisingWithNetworkIdentity(@Nullable final byte[] serviceData) {
|
|
766
|
+
return serviceData != null && serviceData.length == 9
|
|
767
|
+
&& serviceData[ADVERTISED_NETWORK_ID_OFFSET - 1] == ADVERTISEMENT_TYPE_NETWORK_ID;
|
|
768
|
+
}
|
|
769
|
+
|
|
770
|
+
/**
|
|
771
|
+
* Returns the advertised network identity
|
|
772
|
+
*
|
|
773
|
+
* @param serviceData advertised service data
|
|
774
|
+
* @return returns the advertised network identity
|
|
775
|
+
*/
|
|
776
|
+
private byte[] getAdvertisedNetworkId(final byte[] serviceData) {
|
|
777
|
+
if (serviceData == null)
|
|
778
|
+
return null;
|
|
779
|
+
final ByteBuffer advertisedNetworkID = ByteBuffer.allocate(ADVERTISED_NETWORK_ID_LENGTH).order(ByteOrder.BIG_ENDIAN);
|
|
780
|
+
advertisedNetworkID.put(serviceData, ADVERTISED_NETWORK_ID_OFFSET, ADVERTISED_HASH_LENGTH);
|
|
781
|
+
return advertisedNetworkID.array();
|
|
782
|
+
}
|
|
783
|
+
|
|
784
|
+
/**
|
|
785
|
+
* Resets the provisioned mesh network and will generate a new one
|
|
786
|
+
* <p>
|
|
787
|
+
* This method will clear the provisioned nodes, reset the sequence number and generate new network with new provisioning data.
|
|
788
|
+
* {@link MeshManagerCallbacks#onNetworkLoaded(MeshNetwork)} will return the newly generated network
|
|
789
|
+
* </p>
|
|
790
|
+
*/
|
|
791
|
+
public final void resetMeshNetwork() {
|
|
792
|
+
//We delete the existing network as the user has already given the
|
|
793
|
+
ivUpdateTestModeActive = false;
|
|
794
|
+
allowIvIndexRecoveryOver42 = false;
|
|
795
|
+
final MeshNetwork meshNet = mMeshNetwork;
|
|
796
|
+
deleteMeshNetworkFromDb(meshNet);
|
|
797
|
+
final MeshNetwork newMeshNetwork = generateMeshNetwork();
|
|
798
|
+
newMeshNetwork.setCallbacks(callbacks);
|
|
799
|
+
insertNetwork(newMeshNetwork);
|
|
800
|
+
mMeshNetwork = newMeshNetwork;
|
|
801
|
+
mMeshManagerCallbacks.onNetworkLoaded(newMeshNetwork);
|
|
802
|
+
}
|
|
803
|
+
|
|
804
|
+
/**
|
|
805
|
+
* Creates a new mesh network and with new provisioning data.
|
|
806
|
+
* <p>
|
|
807
|
+
* {@link MeshManagerCallbacks#onNetworkLoaded(MeshNetwork)} will return the newly generated network
|
|
808
|
+
* </p>
|
|
809
|
+
*/
|
|
810
|
+
public final void createMeshNetwork() {
|
|
811
|
+
ivUpdateTestModeActive = false;
|
|
812
|
+
allowIvIndexRecoveryOver42 = false;
|
|
813
|
+
final MeshNetwork newMeshNetwork = generateMeshNetwork();
|
|
814
|
+
newMeshNetwork.setCallbacks(callbacks);
|
|
815
|
+
insertNetwork(newMeshNetwork);
|
|
816
|
+
mMeshNetwork = newMeshNetwork;
|
|
817
|
+
mMeshManagerCallbacks.onNetworkLoaded(newMeshNetwork);
|
|
818
|
+
}
|
|
819
|
+
|
|
820
|
+
private MeshNetwork generateMeshNetwork() {
|
|
821
|
+
final String meshUuid = UUID.randomUUID().toString().toUpperCase(Locale.US);
|
|
822
|
+
|
|
823
|
+
final MeshNetwork network = new MeshNetwork(meshUuid);
|
|
824
|
+
network.netKeys = generateNetKeys(meshUuid);
|
|
825
|
+
// network.appKeys = generateAppKeys(meshUuid); Let's not generate app keys for now users can add them later
|
|
826
|
+
final AllocatedUnicastRange unicastRange = new AllocatedUnicastRange(0x0001, 0x199A);
|
|
827
|
+
final AllocatedGroupRange groupRange = new AllocatedGroupRange(0xC000, 0xCC9A);
|
|
828
|
+
final AllocatedSceneRange sceneRange = new AllocatedSceneRange(0x0001, 0x3333);
|
|
829
|
+
final Provisioner provisioner = network.createProvisioner("nRF Mesh Provisioner", unicastRange, groupRange, sceneRange);
|
|
830
|
+
final int unicast = provisioner.getAllocatedUnicastRanges().get(0).getLowAddress();
|
|
831
|
+
provisioner.assignProvisionerAddress(unicast);
|
|
832
|
+
network.selectProvisioner(provisioner);
|
|
833
|
+
network.addProvisioner(provisioner);
|
|
834
|
+
final ProvisionedMeshNode node = network.getNode(unicast);
|
|
835
|
+
if (node != null) {
|
|
836
|
+
network.unicastAddress = node.getUnicastAddress() + (node.getNumberOfElements() - 1);
|
|
837
|
+
} else {
|
|
838
|
+
network.unicastAddress = 1;
|
|
839
|
+
}
|
|
840
|
+
network.lastSelected = true;
|
|
841
|
+
network.sequenceNumbers.clear(); //Clear the sequence numbers first
|
|
842
|
+
network.loadSequenceNumbers();
|
|
843
|
+
ivUpdateTestModeActive = false;
|
|
844
|
+
allowIvIndexRecoveryOver42 = false;
|
|
845
|
+
return network;
|
|
846
|
+
}
|
|
847
|
+
|
|
848
|
+
private List<NetworkKey> generateNetKeys(final String meshUuid) {
|
|
849
|
+
final List<NetworkKey> networkKeys = new ArrayList<>();
|
|
850
|
+
final NetworkKey networkKey = new NetworkKey(0, SecureUtils.generateRandomNumber());
|
|
851
|
+
networkKey.setMeshUuid(meshUuid);
|
|
852
|
+
networkKeys.add(networkKey);
|
|
853
|
+
return networkKeys;
|
|
854
|
+
}
|
|
855
|
+
|
|
856
|
+
private List<ApplicationKey> generateAppKeys(final String meshUuid) {
|
|
857
|
+
final List<ApplicationKey> appKeys = new ArrayList<>();
|
|
858
|
+
for (int i = 0; i < 3; i++) {
|
|
859
|
+
final ApplicationKey appKey = new ApplicationKey(i, SecureUtils.generateRandomNumber());
|
|
860
|
+
appKey.setMeshUuid(meshUuid);
|
|
861
|
+
appKeys.add(appKey);
|
|
862
|
+
}
|
|
863
|
+
return appKeys;
|
|
864
|
+
}
|
|
865
|
+
|
|
866
|
+
/**
|
|
867
|
+
* Deletes an existing mesh network from the local database
|
|
868
|
+
*
|
|
869
|
+
* @param meshNetwork mesh network to be deleted
|
|
870
|
+
*/
|
|
871
|
+
public final void deleteMeshNetworkFromDb(final MeshNetwork meshNetwork) {
|
|
872
|
+
mMeshNetworkDb.delete(mMeshNetworkDao, meshNetwork);
|
|
873
|
+
}
|
|
874
|
+
|
|
875
|
+
@Override
|
|
876
|
+
public void createMeshPdu(final int dst, @NonNull final MeshMessage meshMessage) {
|
|
877
|
+
if (!MeshAddress.isAddressInRange(dst)) {
|
|
878
|
+
throw new IllegalArgumentException("Invalid address, destination address must be a valid 16-bit value.");
|
|
879
|
+
}
|
|
880
|
+
final Provisioner provisioner = mMeshNetwork.getSelectedProvisioner();
|
|
881
|
+
if (provisioner != null && provisioner.getProvisionerAddress() != null) {
|
|
882
|
+
UUID label = null;
|
|
883
|
+
if (MeshAddress.isValidVirtualAddress(dst)) {
|
|
884
|
+
label = mMeshNetwork.getLabelUuid(dst);
|
|
885
|
+
if (label == null) {
|
|
886
|
+
throw new IllegalArgumentException("Label UUID unavailable for the virtual address provided");
|
|
887
|
+
}
|
|
888
|
+
}
|
|
889
|
+
mMeshMessageHandler.createMeshMessage(provisioner.getProvisionerAddress(), dst, label, meshMessage);
|
|
890
|
+
} else {
|
|
891
|
+
throw new IllegalArgumentException("Provisioner address not set, please assign an address to the provisioner.");
|
|
892
|
+
}
|
|
893
|
+
}
|
|
894
|
+
|
|
895
|
+
@Override
|
|
896
|
+
public String exportMeshNetwork() {
|
|
897
|
+
try {
|
|
898
|
+
final MeshNetwork meshNetwork = mMeshNetwork;
|
|
899
|
+
return mImportExportUtils.export(meshNetwork, false);
|
|
900
|
+
} catch (Exception ex) {
|
|
901
|
+
mMeshManagerCallbacks.onNetworkImportFailed(ex.getMessage());
|
|
902
|
+
}
|
|
903
|
+
return null;
|
|
904
|
+
}
|
|
905
|
+
|
|
906
|
+
@Override
|
|
907
|
+
public String exportMeshNetwork(@NonNull final NetworkKeysConfig networkKeysConfig,
|
|
908
|
+
@NonNull final ApplicationKeysConfig applicationKeysConfig,
|
|
909
|
+
@NonNull final NodesConfig nodesConfig,
|
|
910
|
+
@NonNull final ProvisionersConfig provisionersConfig,
|
|
911
|
+
@NonNull final GroupsConfig groupsConfig,
|
|
912
|
+
@NonNull final ScenesConfig scenesConfig) {
|
|
913
|
+
try {
|
|
914
|
+
final MeshNetwork network = mMeshNetwork;
|
|
915
|
+
return mImportExportUtils.export(network, networkKeysConfig, applicationKeysConfig,
|
|
916
|
+
nodesConfig, provisionersConfig, groupsConfig, scenesConfig);
|
|
917
|
+
} catch (Exception ex) {
|
|
918
|
+
mMeshManagerCallbacks.onNetworkImportFailed(ex.getMessage());
|
|
919
|
+
}
|
|
920
|
+
return null;
|
|
921
|
+
}
|
|
922
|
+
|
|
923
|
+
@Override
|
|
924
|
+
public void importMeshNetwork(@NonNull final Uri uri) {
|
|
925
|
+
try {
|
|
926
|
+
isNetworkImportInProgress = true;
|
|
927
|
+
importMeshNetworkJson(mImportExportUtils.readJsonStringFromUri(mContext.getContentResolver(), uri));
|
|
928
|
+
isNetworkImportInProgress = false;
|
|
929
|
+
} catch (Exception ex) {
|
|
930
|
+
isNetworkImportInProgress = false;
|
|
931
|
+
mMeshManagerCallbacks.onNetworkImportFailed(ex.getMessage());
|
|
932
|
+
}
|
|
933
|
+
}
|
|
934
|
+
|
|
935
|
+
@Override
|
|
936
|
+
public void importMeshNetworkJson(@NonNull String networkJson) {
|
|
937
|
+
try {
|
|
938
|
+
isNetworkImportInProgress = true;
|
|
939
|
+
final MeshNetwork importedNetwork = mImportExportUtils.importNetwork(networkJson);
|
|
940
|
+
importedNetwork.setCallbacks(callbacks);
|
|
941
|
+
final MeshNetwork network = mMeshNetworkDb.getMeshNetwork(mMeshNetworkDao, importedNetwork.getMeshUUID());
|
|
942
|
+
if (network != null) {
|
|
943
|
+
final List<ProvisionedMeshNode> nodes = mMeshNetworkDb.getNodes(mProvisionedNodesDao, importedNetwork.getMeshUUID());
|
|
944
|
+
importedNetwork.unicastAddress = network.unicastAddress;
|
|
945
|
+
for (ProvisionedMeshNode meshNode : importedNetwork.getNodes()) {
|
|
946
|
+
for (ProvisionedMeshNode node : nodes) {
|
|
947
|
+
if (node.getUuid().equalsIgnoreCase(meshNode.getUuid())) {
|
|
948
|
+
meshNode.setSequenceNumber(node.getSequenceNumber());
|
|
949
|
+
}
|
|
950
|
+
}
|
|
951
|
+
}
|
|
952
|
+
importedNetwork.loadSequenceNumbers();
|
|
953
|
+
// Load the last known ivIndex.
|
|
954
|
+
// Note: The iv index will be updated based on the secure network beacon after connecting to a proxy.
|
|
955
|
+
importedNetwork.ivIndex = network.ivIndex;
|
|
956
|
+
}
|
|
957
|
+
mMeshNetworkDb.update(mMeshNetworkDao, importedNetwork, false);
|
|
958
|
+
insertNetwork(importedNetwork);
|
|
959
|
+
mMeshNetwork = importedNetwork;
|
|
960
|
+
mMeshManagerCallbacks.onNetworkImported(importedNetwork);
|
|
961
|
+
isNetworkImportInProgress = false;
|
|
962
|
+
} catch (Exception ex) {
|
|
963
|
+
isNetworkImportInProgress = false;
|
|
964
|
+
mMeshManagerCallbacks.onNetworkImportFailed(ex.getMessage());
|
|
965
|
+
}
|
|
966
|
+
}
|
|
967
|
+
|
|
968
|
+
@SuppressWarnings("FieldCanBeLocal")
|
|
969
|
+
private final InternalTransportCallbacks internalTransportCallbacks = new InternalTransportCallbacks() {
|
|
970
|
+
|
|
971
|
+
@Override
|
|
972
|
+
public List<ApplicationKey> getApplicationKeys(final int boundNetKeyIndex) {
|
|
973
|
+
return mMeshNetwork.getAppKeys(boundNetKeyIndex);
|
|
974
|
+
}
|
|
975
|
+
|
|
976
|
+
@Override
|
|
977
|
+
public ProvisionedMeshNode getNode(final int unicast) {
|
|
978
|
+
return mMeshNetwork.getNode(unicast);
|
|
979
|
+
}
|
|
980
|
+
|
|
981
|
+
@Override
|
|
982
|
+
public Provisioner getProvisioner(final int unicast) {
|
|
983
|
+
return null;
|
|
984
|
+
}
|
|
985
|
+
|
|
986
|
+
@Override
|
|
987
|
+
public void sendProvisioningPdu(final UnprovisionedMeshNode meshNode, final byte[] pdu) {
|
|
988
|
+
final int mtu = mMeshManagerCallbacks.getMtu();
|
|
989
|
+
mMeshManagerCallbacks.sendProvisioningPdu(meshNode, applySegmentation(mtu, pdu));
|
|
990
|
+
}
|
|
991
|
+
|
|
992
|
+
@Override
|
|
993
|
+
public void onMeshPduCreated(final int dst, final byte[] pdu) {
|
|
994
|
+
//We must save the mesh network state for every message that is being sent out.
|
|
995
|
+
//This will specifically save the sequence number for every message sent.
|
|
996
|
+
final ProvisionedMeshNode meshNode = mMeshNetwork.getNode(dst);
|
|
997
|
+
updateNetwork(meshNode);
|
|
998
|
+
final int mtu = mMeshManagerCallbacks.getMtu();
|
|
999
|
+
mMeshManagerCallbacks.onMeshPduCreated(applySegmentation(mtu, pdu));
|
|
1000
|
+
}
|
|
1001
|
+
|
|
1002
|
+
@Override
|
|
1003
|
+
public ProxyFilter getProxyFilter() {
|
|
1004
|
+
return mMeshNetwork.getProxyFilter();
|
|
1005
|
+
}
|
|
1006
|
+
|
|
1007
|
+
@Override
|
|
1008
|
+
public void setProxyFilter(@NonNull final ProxyFilter filter) {
|
|
1009
|
+
mMeshNetwork.setProxyFilter(filter);
|
|
1010
|
+
}
|
|
1011
|
+
|
|
1012
|
+
@Override
|
|
1013
|
+
public void updateMeshNetwork(final MeshMessage message) {
|
|
1014
|
+
final ProvisionedMeshNode meshNode = mMeshNetwork.getNode(message.getSrc());
|
|
1015
|
+
updateNetwork(meshNode);
|
|
1016
|
+
}
|
|
1017
|
+
|
|
1018
|
+
@Override
|
|
1019
|
+
public void onMeshNodeReset(final ProvisionedMeshNode meshNode) {
|
|
1020
|
+
if (meshNode != null) {
|
|
1021
|
+
mMeshNetwork.deleteNode(meshNode);
|
|
1022
|
+
}
|
|
1023
|
+
}
|
|
1024
|
+
|
|
1025
|
+
@Override
|
|
1026
|
+
public MeshNetwork getMeshNetwork() {
|
|
1027
|
+
return mMeshNetwork;
|
|
1028
|
+
}
|
|
1029
|
+
|
|
1030
|
+
@Override
|
|
1031
|
+
public void addGroup(final Group group) {
|
|
1032
|
+
mMeshNetwork.addGroup(group);
|
|
1033
|
+
}
|
|
1034
|
+
|
|
1035
|
+
@Override
|
|
1036
|
+
public void storeScene(final int address, final int currentScene, final List<Integer> scenes) {
|
|
1037
|
+
final Scene scene = mMeshNetwork.getScene(currentScene);
|
|
1038
|
+
if (scene != null && !scene.getAddresses().contains(address)) {
|
|
1039
|
+
scene.addresses.add(address);
|
|
1040
|
+
}
|
|
1041
|
+
}
|
|
1042
|
+
|
|
1043
|
+
@Override
|
|
1044
|
+
public void deleteScene(final int address, final int currentScene, final List<Integer> scenes) {
|
|
1045
|
+
final Scene scene = mMeshNetwork.getScene(currentScene);
|
|
1046
|
+
if (scene != null && scene.getAddresses().contains(address)) {
|
|
1047
|
+
scene.addresses.remove((Integer) address);
|
|
1048
|
+
}
|
|
1049
|
+
}
|
|
1050
|
+
|
|
1051
|
+
private void updateNetwork(final ProvisionedMeshNode meshNode) {
|
|
1052
|
+
if (meshNode != null) {
|
|
1053
|
+
for (int i = 0; i < mMeshNetwork.nodes.size(); i++) {
|
|
1054
|
+
if (meshNode.getUnicastAddress() == mMeshNetwork.nodes.get(i).getUnicastAddress()) {
|
|
1055
|
+
mMeshNetwork.nodes.set(i, meshNode);
|
|
1056
|
+
break;
|
|
1057
|
+
}
|
|
1058
|
+
}
|
|
1059
|
+
}
|
|
1060
|
+
mMeshNetworkDb.update(mMeshNetwork, mMeshNetworkDao, mNetworkKeysDao, mApplicationKeysDao, mProvisionersDao, mProvisionedNodesDao,
|
|
1061
|
+
mGroupsDao, mScenesDao);
|
|
1062
|
+
mMeshManagerCallbacks.onNetworkUpdated(mMeshNetwork);
|
|
1063
|
+
}
|
|
1064
|
+
};
|
|
1065
|
+
|
|
1066
|
+
/**
|
|
1067
|
+
* Deletes an address from the scenes in the network. This is to be called when resetting or deleting a node from the network.
|
|
1068
|
+
*
|
|
1069
|
+
* @param address Address to be removed.
|
|
1070
|
+
*/
|
|
1071
|
+
private void deleteSceneAddress(final int address) {
|
|
1072
|
+
for (Scene scene : mMeshNetwork.getScenes()) {
|
|
1073
|
+
if (scene.addresses.remove((Integer) address)) {
|
|
1074
|
+
MeshLogger.debug(TAG, "Node removed from " + scene.getName());
|
|
1075
|
+
}
|
|
1076
|
+
}
|
|
1077
|
+
}
|
|
1078
|
+
|
|
1079
|
+
@SuppressWarnings("FieldCanBeLocal")
|
|
1080
|
+
private final InternalMeshManagerCallbacks internalMeshMgrCallbacks = new InternalMeshManagerCallbacks() {
|
|
1081
|
+
@Override
|
|
1082
|
+
public void onNodeProvisioned(final ProvisionedMeshNode meshNode, final int numberOfElements) {
|
|
1083
|
+
updateProvisionedNodeList(meshNode);
|
|
1084
|
+
mMeshNetwork.sequenceNumbers.put(meshNode.getUnicastAddress(), meshNode.getSequenceNumber());
|
|
1085
|
+
mMeshNetwork.unicastAddress = mMeshNetwork.nextAvailableUnicastAddress(numberOfElements, mMeshNetwork.getSelectedProvisioner());
|
|
1086
|
+
//Set the mesh network uuid to the node so we can identify nodes belonging to a network
|
|
1087
|
+
meshNode.setMeshUuid(mMeshNetwork.getMeshUUID());
|
|
1088
|
+
mMeshNetworkDb.insert(mProvisionedNodeDao, meshNode);
|
|
1089
|
+
mMeshNetworkDb.update(mProvisionerDao,
|
|
1090
|
+
mMeshNetwork.getSelectedProvisioner());
|
|
1091
|
+
mMeshManagerCallbacks.onNetworkUpdated(mMeshNetwork);
|
|
1092
|
+
}
|
|
1093
|
+
|
|
1094
|
+
private void updateProvisionedNodeList(final ProvisionedMeshNode meshNode) {
|
|
1095
|
+
for (int i = 0; i < mMeshNetwork.nodes.size(); i++) {
|
|
1096
|
+
final ProvisionedMeshNode node = mMeshNetwork.nodes.get(i);
|
|
1097
|
+
if (meshNode.getUuid().equals(node.getUuid())) {
|
|
1098
|
+
mMeshNetwork.nodes.remove(i);
|
|
1099
|
+
break;
|
|
1100
|
+
}
|
|
1101
|
+
}
|
|
1102
|
+
mMeshNetwork.nodes.add(meshNode);
|
|
1103
|
+
updateNetworkKeySecurity(meshNode);
|
|
1104
|
+
}
|
|
1105
|
+
};
|
|
1106
|
+
|
|
1107
|
+
/**
|
|
1108
|
+
* Updates the minimum security property of a Network Key. If the node was provisioned
|
|
1109
|
+
* insecurely, all network keys added to the node are marked as insecure.
|
|
1110
|
+
*
|
|
1111
|
+
* @param node Provisioned mesh node.
|
|
1112
|
+
*/
|
|
1113
|
+
private void updateNetworkKeySecurity(final ProvisionedMeshNode node) {
|
|
1114
|
+
if (!node.isSecurelyProvisioned()) {
|
|
1115
|
+
for (NodeKey nodeKey : node.getAddedNetKeys()) {
|
|
1116
|
+
for(NetworkKey key : mMeshNetwork.netKeys) {
|
|
1117
|
+
if(key.keyIndex == nodeKey.getIndex()) {
|
|
1118
|
+
key.markAsInsecure();
|
|
1119
|
+
}
|
|
1120
|
+
}
|
|
1121
|
+
}
|
|
1122
|
+
}
|
|
1123
|
+
}
|
|
1124
|
+
|
|
1125
|
+
@SuppressWarnings("FieldCanBeLocal")
|
|
1126
|
+
private final NetworkLayerCallbacks networkLayerCallbacks = new NetworkLayerCallbacks() {
|
|
1127
|
+
|
|
1128
|
+
@Override
|
|
1129
|
+
public Provisioner getProvisioner() {
|
|
1130
|
+
return mMeshNetwork.getSelectedProvisioner();
|
|
1131
|
+
}
|
|
1132
|
+
|
|
1133
|
+
@Override
|
|
1134
|
+
public Provisioner getProvisioner(final int unicastAddress) {
|
|
1135
|
+
for (Provisioner provisioner : mMeshNetwork.getProvisioners()) {
|
|
1136
|
+
if (provisioner.isLastSelected())
|
|
1137
|
+
return provisioner;
|
|
1138
|
+
}
|
|
1139
|
+
return null;
|
|
1140
|
+
}
|
|
1141
|
+
|
|
1142
|
+
@Override
|
|
1143
|
+
public NetworkKey getPrimaryNetworkKey() {
|
|
1144
|
+
return mMeshNetwork.getPrimaryNetworkKey();
|
|
1145
|
+
}
|
|
1146
|
+
|
|
1147
|
+
@Override
|
|
1148
|
+
public NetworkKey getNetworkKey(final int keyIndex) {
|
|
1149
|
+
return mMeshNetwork.getNetKey(keyIndex);
|
|
1150
|
+
}
|
|
1151
|
+
|
|
1152
|
+
@Override
|
|
1153
|
+
public List<NetworkKey> getNetworkKeys() {
|
|
1154
|
+
return mMeshNetwork.getNetKeys();
|
|
1155
|
+
}
|
|
1156
|
+
};
|
|
1157
|
+
|
|
1158
|
+
@SuppressWarnings("FieldCanBeLocal")
|
|
1159
|
+
private final UpperTransportLayerCallbacks upperTransportLayerCallbacks = new UpperTransportLayerCallbacks() {
|
|
1160
|
+
|
|
1161
|
+
@Override
|
|
1162
|
+
public ProvisionedMeshNode getNode(final int unicastAddress) {
|
|
1163
|
+
return mMeshNetwork.getNode(unicastAddress);
|
|
1164
|
+
}
|
|
1165
|
+
|
|
1166
|
+
@Override
|
|
1167
|
+
public byte[] getIvIndex() {
|
|
1168
|
+
int ivIndex = mMeshNetwork.getIvIndex().getTransmitIvIndex();
|
|
1169
|
+
return ByteBuffer.allocate(4).putInt(ivIndex).array();
|
|
1170
|
+
}
|
|
1171
|
+
|
|
1172
|
+
@Override
|
|
1173
|
+
public byte[] getApplicationKey(final int aid) {
|
|
1174
|
+
for (ApplicationKey key : mMeshNetwork.getAppKeys()) {
|
|
1175
|
+
final byte[] k = key.getKey();
|
|
1176
|
+
if (aid == SecureUtils.calculateK4(k)) {
|
|
1177
|
+
return key.getKey();
|
|
1178
|
+
}
|
|
1179
|
+
}
|
|
1180
|
+
return null;
|
|
1181
|
+
}
|
|
1182
|
+
|
|
1183
|
+
@Override
|
|
1184
|
+
public List<ApplicationKey> getApplicationKeys(final int boundNetKeyIndex) {
|
|
1185
|
+
final List<ApplicationKey> keys = new ArrayList<>();
|
|
1186
|
+
for (ApplicationKey key : mMeshNetwork.getAppKeys()) {
|
|
1187
|
+
if (key.getBoundNetKeyIndex() == boundNetKeyIndex) {
|
|
1188
|
+
keys.add(key);
|
|
1189
|
+
}
|
|
1190
|
+
}
|
|
1191
|
+
return keys;
|
|
1192
|
+
}
|
|
1193
|
+
|
|
1194
|
+
@Override
|
|
1195
|
+
public List<Group> gerVirtualGroups() {
|
|
1196
|
+
return mMeshNetwork.getGroups();
|
|
1197
|
+
}
|
|
1198
|
+
};
|
|
1199
|
+
|
|
1200
|
+
/**
|
|
1201
|
+
* Callbacks to notify when the database has been loaded
|
|
1202
|
+
*/
|
|
1203
|
+
private final LoadNetworkCallbacks networkLoadCallbacks = new LoadNetworkCallbacks() {
|
|
1204
|
+
@Override
|
|
1205
|
+
public void onNetworkLoadedFromDb(final MeshNetwork meshNetwork) {
|
|
1206
|
+
final MeshNetwork network;
|
|
1207
|
+
//If there is no network we generate a new one
|
|
1208
|
+
if (meshNetwork == null) {
|
|
1209
|
+
network = generateMeshNetwork();
|
|
1210
|
+
insertNetwork(network);
|
|
1211
|
+
} else {
|
|
1212
|
+
network = meshNetwork;
|
|
1213
|
+
network.loadSequenceNumbers();
|
|
1214
|
+
}
|
|
1215
|
+
network.setCallbacks(callbacks);
|
|
1216
|
+
mMeshNetwork = network;
|
|
1217
|
+
mMeshManagerCallbacks.onNetworkLoaded(network);
|
|
1218
|
+
}
|
|
1219
|
+
|
|
1220
|
+
@Override
|
|
1221
|
+
public void onNetworkLoadFailed(final String error) {
|
|
1222
|
+
mMeshManagerCallbacks.onNetworkLoadFailed(error);
|
|
1223
|
+
}
|
|
1224
|
+
};
|
|
1225
|
+
|
|
1226
|
+
private void deleteNode(@NonNull final ProvisionedMeshNode meshNode) {
|
|
1227
|
+
deleteSceneAddress(meshNode.getUnicastAddress());
|
|
1228
|
+
// We should not remove the last known sequence number when resetting a node.
|
|
1229
|
+
// This should be kept until the current iv index has incremented by 2 and delete it when
|
|
1230
|
+
// clearing the exclusion lists
|
|
1231
|
+
// mMeshNetwork.sequenceNumbers.delete(meshNode.getUnicastAddress());
|
|
1232
|
+
mMeshMessageHandler.resetState(meshNode.getUnicastAddress());
|
|
1233
|
+
mMeshNetworkDb.deleteNode(mProvisionedNodeDao, meshNode);
|
|
1234
|
+
mMeshNetwork.setTimestamp(System.currentTimeMillis());
|
|
1235
|
+
mMeshNetworkDb.update(mMeshNetworkDao, mMeshNetwork);
|
|
1236
|
+
mMeshManagerCallbacks.onNetworkUpdated(mMeshNetwork);
|
|
1237
|
+
}
|
|
1238
|
+
|
|
1239
|
+
/**
|
|
1240
|
+
* Callbacks observing user updates on the mesh network object
|
|
1241
|
+
*/
|
|
1242
|
+
private final MeshNetworkCallbacks callbacks = new MeshNetworkCallbacks() {
|
|
1243
|
+
@Override
|
|
1244
|
+
public void onMeshNetworkUpdated() {
|
|
1245
|
+
if (!isNetworkImportInProgress)
|
|
1246
|
+
mMeshNetwork.setTimestamp(System.currentTimeMillis());
|
|
1247
|
+
mMeshNetworkDb.update(mMeshNetworkDao, mMeshNetwork);
|
|
1248
|
+
mMeshManagerCallbacks.onNetworkUpdated(mMeshNetwork);
|
|
1249
|
+
}
|
|
1250
|
+
|
|
1251
|
+
@Override
|
|
1252
|
+
public void onNetworkKeyAdded(@NonNull final NetworkKey networkKey) {
|
|
1253
|
+
mMeshNetworkDb.insert(mNetworkKeyDao, networkKey);
|
|
1254
|
+
onMeshNetworkUpdated();
|
|
1255
|
+
}
|
|
1256
|
+
|
|
1257
|
+
@Override
|
|
1258
|
+
public void onNetworkKeyUpdated(@NonNull final NetworkKey networkKey) {
|
|
1259
|
+
mMeshNetworkDb.update(mNetworkKeyDao, networkKey);
|
|
1260
|
+
onMeshNetworkUpdated();
|
|
1261
|
+
}
|
|
1262
|
+
|
|
1263
|
+
@Override
|
|
1264
|
+
public void onNetworkKeyDeleted(@NonNull final NetworkKey networkKey) {
|
|
1265
|
+
mMeshNetworkDb.delete(mNetworkKeyDao, networkKey);
|
|
1266
|
+
onMeshNetworkUpdated();
|
|
1267
|
+
}
|
|
1268
|
+
|
|
1269
|
+
@Override
|
|
1270
|
+
public void onApplicationKeyAdded(@NonNull final ApplicationKey applicationKey) {
|
|
1271
|
+
mMeshNetworkDb.insert(mApplicationKeyDao, applicationKey);
|
|
1272
|
+
onMeshNetworkUpdated();
|
|
1273
|
+
}
|
|
1274
|
+
|
|
1275
|
+
@Override
|
|
1276
|
+
public void onApplicationKeyUpdated(@NonNull final ApplicationKey applicationKey) {
|
|
1277
|
+
mMeshNetworkDb.update(mApplicationKeyDao, applicationKey);
|
|
1278
|
+
onMeshNetworkUpdated();
|
|
1279
|
+
}
|
|
1280
|
+
|
|
1281
|
+
@Override
|
|
1282
|
+
public void onApplicationKeyDeleted(@NonNull final ApplicationKey applicationKey) {
|
|
1283
|
+
mMeshNetworkDb.delete(mApplicationKeyDao, applicationKey);
|
|
1284
|
+
onMeshNetworkUpdated();
|
|
1285
|
+
}
|
|
1286
|
+
|
|
1287
|
+
@Override
|
|
1288
|
+
public void onProvisionerAdded(@NonNull final Provisioner provisioner) {
|
|
1289
|
+
mMeshNetworkDb.insert(mProvisionerDao, provisioner);
|
|
1290
|
+
onMeshNetworkUpdated();
|
|
1291
|
+
}
|
|
1292
|
+
|
|
1293
|
+
@Override
|
|
1294
|
+
public void onProvisionerUpdated(@NonNull final Provisioner provisioner) {
|
|
1295
|
+
mMeshNetworkDb.update(mProvisionerDao, provisioner);
|
|
1296
|
+
onMeshNetworkUpdated();
|
|
1297
|
+
}
|
|
1298
|
+
|
|
1299
|
+
@Override
|
|
1300
|
+
public void onProvisionersUpdated(@NonNull final List<Provisioner> provisioners) {
|
|
1301
|
+
mMeshNetworkDb.update(mProvisionerDao, provisioners);
|
|
1302
|
+
onMeshNetworkUpdated();
|
|
1303
|
+
}
|
|
1304
|
+
|
|
1305
|
+
@Override
|
|
1306
|
+
public void onProvisionerDeleted(@NonNull Provisioner provisioner) {
|
|
1307
|
+
mMeshNetworkDb.delete(mProvisionerDao, provisioner);
|
|
1308
|
+
// Network update is invoked independent in the case of node deletion or provisioner deletion
|
|
1309
|
+
// onMeshNetworkUpdated();
|
|
1310
|
+
}
|
|
1311
|
+
|
|
1312
|
+
@Override
|
|
1313
|
+
public void onNodeDeleted(@NonNull final ProvisionedMeshNode meshNode) {
|
|
1314
|
+
//deleteNode(meshNode);
|
|
1315
|
+
deleteSceneAddress(meshNode.getUnicastAddress());
|
|
1316
|
+
// We should not remove the last known sequence number when resetting a node.
|
|
1317
|
+
// This should be kept until the current iv index has incremented by 2 and delete it when
|
|
1318
|
+
// clearing the exclusion lists
|
|
1319
|
+
// mMeshNetwork.sequenceNumbers.delete(meshNode.getUnicastAddress());
|
|
1320
|
+
mMeshNetworkDb.deleteNode(mProvisionedNodeDao, meshNode);
|
|
1321
|
+
mMeshMessageHandler.resetState(meshNode.getUnicastAddress());
|
|
1322
|
+
// Network update is invoked independent in the case of node deletion or provisioner deletion
|
|
1323
|
+
// mMeshNetworkDb.update(mMeshNetworkDao, mMeshNetwork);
|
|
1324
|
+
}
|
|
1325
|
+
|
|
1326
|
+
@Override
|
|
1327
|
+
public void onNodeAdded(@NonNull final ProvisionedMeshNode meshNode) {
|
|
1328
|
+
mMeshNetworkDb.insert(mProvisionedNodeDao, meshNode);
|
|
1329
|
+
onMeshNetworkUpdated();
|
|
1330
|
+
}
|
|
1331
|
+
|
|
1332
|
+
@Override
|
|
1333
|
+
public void onNodeUpdated(@NonNull final ProvisionedMeshNode meshNode) {
|
|
1334
|
+
mMeshNetworkDb.update(mProvisionedNodeDao, meshNode);
|
|
1335
|
+
onMeshNetworkUpdated();
|
|
1336
|
+
}
|
|
1337
|
+
|
|
1338
|
+
@Override
|
|
1339
|
+
public void onGroupAdded(@NonNull final Group group) {
|
|
1340
|
+
mMeshNetworkDb.insert(mGroupDao, group);
|
|
1341
|
+
onMeshNetworkUpdated();
|
|
1342
|
+
}
|
|
1343
|
+
|
|
1344
|
+
@Override
|
|
1345
|
+
public void onGroupUpdated(@NonNull final Group group) {
|
|
1346
|
+
mMeshNetworkDb.update(mGroupDao, group);
|
|
1347
|
+
onMeshNetworkUpdated();
|
|
1348
|
+
}
|
|
1349
|
+
|
|
1350
|
+
@Override
|
|
1351
|
+
public void onGroupDeleted(@NonNull final Group group) {
|
|
1352
|
+
mMeshNetworkDb.delete(mGroupDao, group);
|
|
1353
|
+
onMeshNetworkUpdated();
|
|
1354
|
+
}
|
|
1355
|
+
|
|
1356
|
+
@Override
|
|
1357
|
+
public void onSceneAdded(@NonNull final Scene scene) {
|
|
1358
|
+
mMeshNetworkDb.insert(mSceneDao, scene);
|
|
1359
|
+
onMeshNetworkUpdated();
|
|
1360
|
+
}
|
|
1361
|
+
|
|
1362
|
+
@Override
|
|
1363
|
+
public void onSceneUpdated(@NonNull final Scene scene) {
|
|
1364
|
+
mMeshNetworkDb.update(mSceneDao, scene);
|
|
1365
|
+
onMeshNetworkUpdated();
|
|
1366
|
+
}
|
|
1367
|
+
|
|
1368
|
+
@Override
|
|
1369
|
+
public void onSceneDeleted(@NonNull final Scene scene) {
|
|
1370
|
+
mMeshNetworkDb.delete(mSceneDao, scene);
|
|
1371
|
+
onMeshNetworkUpdated();
|
|
1372
|
+
}
|
|
1373
|
+
};
|
|
1374
|
+
|
|
1375
|
+
private boolean isAddressValid(@NonNull final UnprovisionedMeshNode node) {
|
|
1376
|
+
final int unicast = mMeshNetwork.nextAvailableUnicastAddress(node.getNumberOfElements(), mMeshNetwork.getSelectedProvisioner());
|
|
1377
|
+
if (!MeshAddress.isValidUnicastAddress(unicast)) {
|
|
1378
|
+
throw new IllegalArgumentException("Invalid address");
|
|
1379
|
+
}
|
|
1380
|
+
if (!mMeshNetwork.getSelectedProvisioner().isAddressWithinAllocatedRange(mMeshNetwork.getUnicastAddress())) {
|
|
1381
|
+
throw new IllegalArgumentException("Address assigned to node is outside of provisioner's allocated unicast range.");
|
|
1382
|
+
}
|
|
1383
|
+
node.setUnicastAddress(mMeshNetwork.getUnicastAddress());
|
|
1384
|
+
return true;
|
|
1385
|
+
}
|
|
1386
|
+
}
|