diff --git a/examples/java-matter-controller/BUILD.gn b/examples/java-matter-controller/BUILD.gn index f27a63dd19d8f2..a8d426cc48f92d 100644 --- a/examples/java-matter-controller/BUILD.gn +++ b/examples/java-matter-controller/BUILD.gn @@ -18,8 +18,8 @@ import("//build_overrides/chip.gni") import("${chip_root}/build/chip/java/rules.gni") import("${chip_root}/build/chip/tools.gni") -java_binary("java-matter-controller") { - output_name = "java-matter-controller" +java_library("java") { + output_name = "JavaMatterController.jar" deps = [ "${chip_root}/src/controller/java", "${chip_root}/src/setup_payload/java", @@ -27,7 +27,6 @@ java_binary("java-matter-controller") { ] sources = [ - "java/src/com/matter/controller/Main.java", "java/src/com/matter/controller/commands/common/Argument.java", "java/src/com/matter/controller/commands/common/ArgumentType.java", "java/src/com/matter/controller/commands/common/Command.java", @@ -37,9 +36,6 @@ java_binary("java-matter-controller") { "java/src/com/matter/controller/commands/common/IPAddress.java", "java/src/com/matter/controller/commands/common/MatterCommand.java", "java/src/com/matter/controller/commands/common/RealResult.java", - "java/src/com/matter/controller/commands/discover/DiscoverCommand.java", - "java/src/com/matter/controller/commands/discover/DiscoverCommissionablesCommand.java", - "java/src/com/matter/controller/commands/discover/DiscoverCommissionersCommand.java", "java/src/com/matter/controller/commands/pairing/CloseSessionCommand.java", "java/src/com/matter/controller/commands/pairing/DiscoveryFilterType.java", "java/src/com/matter/controller/commands/pairing/PairAddressPaseCommand.java", @@ -66,6 +62,23 @@ java_binary("java-matter-controller") { javac_flags = [ "-Xlint:deprecation" ] } +kotlin_binary("java-matter-controller") { + output_name = "java-matter-controller" + deps = [ + ":java", + "${chip_root}/third_party/java_deps:kotlin-stdlib", + ] + + sources = [ + "java/src/com/matter/controller/Main.kt", + "java/src/com/matter/controller/commands/discover/DiscoverCommand.kt", + "java/src/com/matter/controller/commands/discover/DiscoverCommissionablesCommand.kt", + "java/src/com/matter/controller/commands/discover/DiscoverCommissionersCommand.kt", + ] + + kotlinc_flags = [ "-Xlint:deprecation" ] +} + group("default") { deps = [ ":java-matter-controller" ] } diff --git a/examples/java-matter-controller/Manifest.txt b/examples/java-matter-controller/Manifest.txt index ebdd1a402677f7..d221d20b748873 100644 --- a/examples/java-matter-controller/Manifest.txt +++ b/examples/java-matter-controller/Manifest.txt @@ -1,3 +1,3 @@ -Main-Class: com.matter.controller.Main -Class-Path: ../lib/third_party/connectedhomeip/src/controller/java/CHIPController.jar ../lib/third_party/connectedhomeip/src/setup_payload/java/SetupPayloadParser.jar ../lib/third_party/connectedhomeip/third_party/java_deps/stub_src/Android.jar ../lib/third_party/connectedhomeip/third_party/java_deps/json-20220924.jar ../lib/third_party/connectedhomeip/third_party/java_deps/jsr305-3.0.2.jar +Main-Class: com.matter.controller.MainKt +Class-Path: ../lib/third_party/connectedhomeip/src/controller/java/CHIPController.jar ../lib/third_party/connectedhomeip/src/setup_payload/java/SetupPayloadParser.jar ../lib/third_party/connectedhomeip/third_party/java_deps/stub_src/Android.jar ../lib/third_party/connectedhomeip/third_party/java_deps/json-20220924.jar ../lib/third_party/connectedhomeip/third_party/java_deps/jsr305-3.0.2.jar ../lib/third_party/connectedhomeip/third_party/java_deps/kotlin-stdlib-1.8.10.jar diff --git a/examples/java-matter-controller/README.md b/examples/java-matter-controller/README.md index fae126f8b7af10..3b67056eceba90 100644 --- a/examples/java-matter-controller/README.md +++ b/examples/java-matter-controller/README.md @@ -21,7 +21,7 @@ You need to have the following two software installed on your Ubuntu system: 1. Java Runtime Environment (JRE) 2. Java Development Kit (JDK) -``` +```shell java -version ``` @@ -36,20 +36,63 @@ sudo apt install default-jre Install Java default JRE After installing the JRE, let us check if we have the Java Development Kit installed on our system or not. -``` +```shell javac -version ``` The above output shows that I need to install the Java compiler or the JDK on my system. You can install it through the following command as root: -``` +```shell sudo apt install default-jdk ``` -### Linux +You also need to install kotlin compiler on your Ubuntu system: + +kotlin compiler version 1.8.10 or above is needed to compile +java-matter-controller, if you already have lower version kotlin compiler +installed on your Ubuntu from apt, +you need to remove the Kotlin compiler package, run the following command: +```shell +sudo apt-get remove kotlin ``` + +Wait for the removal process to complete. Once it's done, the Kotlin compiler +will be removed from your system. + +(Optional) If you want to remove any configuration files associated with Kotlin, +run the following command: + +```shell +sudo apt-get purge kotlin +``` + +Install kotlin compiler 1.8.10 or above, such as +[kotlin-compiler-1.8.10-url](https://github.com/JetBrains/kotlin/releases/download/v1.8.10/kotlin-compiler-1.8.10.zip) + +```shell +cd /usr/lib \ +&& sudo wget -q [kotlin-compiler-1.8.10-url] \ +&& sudo unzip kotlin-compiler-*.zip \ +&& sudo rm kotlin-compiler-*.zip \ +&& sudo rm -f kotlinc/bin/*.bat +``` + +Add a directory to PATH permanently by editing the `.bashrc` file located in the +Home directory. Follow these steps: + +1. Open the `.bashrc` file using a text editor. +2. Go to the end of the file. +3. Paste the export syntax at the end of the file. + +```shell +export PATH="/usr/lib/kotlinc/bin:$PATH" +``` + +### Linux + +```shell export JAVA_PATH=[JDK path] ``` @@ -81,6 +124,6 @@ The Java executable file `java-matter-controller` will be generated at Run the java-matter-controller -``` +```shell java -Djava.library.path=../lib/jni -jar java-matter-controller ``` diff --git a/examples/java-matter-controller/java/src/com/matter/controller/Main.java b/examples/java-matter-controller/java/src/com/matter/controller/Main.java deleted file mode 100644 index 59c2e666589365..00000000000000 --- a/examples/java-matter-controller/java/src/com/matter/controller/Main.java +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright (c) 2022-2023 Project CHIP Authors - * All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package com.matter.controller; - -import chip.devicecontroller.ChipDeviceController; -import chip.devicecontroller.ControllerParams; -import com.matter.controller.commands.common.*; -import com.matter.controller.commands.discover.*; -import com.matter.controller.commands.pairing.*; -import java.util.ArrayList; -import java.util.logging.Level; -import java.util.logging.Logger; - -public class Main { - private static Logger logger = Logger.getLogger(Main.class.getName()); - - private static void registerCommandsDiscover( - ChipDeviceController controller, - CommandManager commandManager, - CredentialsIssuer credentialsIssuer) { - ArrayList clusterCommands = new ArrayList(); - DiscoverCommand discoverCommand = new DiscoverCommand(controller, credentialsIssuer); - DiscoverCommissionablesCommand discoverCommissionablesCommand = - new DiscoverCommissionablesCommand(controller, credentialsIssuer); - DiscoverCommissionersCommand discoverCommissionersCommand = - new DiscoverCommissionersCommand(controller, credentialsIssuer); - clusterCommands.add(discoverCommand); - clusterCommands.add(discoverCommissionablesCommand); - clusterCommands.add(discoverCommissionersCommand); - - commandManager.register("discover", clusterCommands); - } - - private static void registerCommandsPairing( - ChipDeviceController controller, - CommandManager commandManager, - CredentialsIssuer credentialsIssuer) { - ArrayList clusterCommands = new ArrayList(); - UnpairCommand unpairCommand = new UnpairCommand(controller, credentialsIssuer); - PairCodeCommand pairCodeCommand = new PairCodeCommand(controller, credentialsIssuer); - PairCodePaseCommand pairCodePaseCommand = - new PairCodePaseCommand(controller, credentialsIssuer); - PairCodeWifiCommand pairCodeWifiCommand = - new PairCodeWifiCommand(controller, credentialsIssuer); - PairCodeThreadCommand pairCodeThreadCommand = - new PairCodeThreadCommand(controller, credentialsIssuer); - PairAddressPaseCommand pairAddressPaseCommand = - new PairAddressPaseCommand(controller, credentialsIssuer); - PairAlreadyDiscoveredCommand pairAlreadyDiscoveredCommand = - new PairAlreadyDiscoveredCommand(controller, credentialsIssuer); - PairOnNetworkCommand pairOnNetworkCommand = - new PairOnNetworkCommand(controller, credentialsIssuer); - PairOnNetworkShortCommand pairOnNetworkShortCommand = - new PairOnNetworkShortCommand(controller, credentialsIssuer); - PairOnNetworkLongCommand pairOnNetworkLongCommand = - new PairOnNetworkLongCommand(controller, credentialsIssuer); - PairOnNetworkVendorCommand pairOnNetworkVendorCommand = - new PairOnNetworkVendorCommand(controller, credentialsIssuer); - PairOnNetworkCommissioningModeCommand pairOnNetworkCommissioningModeCommand = - new PairOnNetworkCommissioningModeCommand(controller, credentialsIssuer); - PairOnNetworkCommissionerCommand pairOnNetworkCommissionerCommand = - new PairOnNetworkCommissionerCommand(controller, credentialsIssuer); - PairOnNetworkDeviceTypeCommand pairOnNetworkDeviceTypeCommand = - new PairOnNetworkDeviceTypeCommand(controller, credentialsIssuer); - PairOnNetworkInstanceNameCommand pairOnNetworkInstanceNameCommand = - new PairOnNetworkInstanceNameCommand(controller, credentialsIssuer); - clusterCommands.add(unpairCommand); - clusterCommands.add(pairCodeCommand); - clusterCommands.add(pairCodePaseCommand); - clusterCommands.add(pairCodeWifiCommand); - clusterCommands.add(pairCodeThreadCommand); - clusterCommands.add(pairAddressPaseCommand); - clusterCommands.add(pairAlreadyDiscoveredCommand); - clusterCommands.add(pairOnNetworkCommand); - clusterCommands.add(pairOnNetworkShortCommand); - clusterCommands.add(pairOnNetworkLongCommand); - clusterCommands.add(pairOnNetworkVendorCommand); - clusterCommands.add(pairOnNetworkCommissioningModeCommand); - clusterCommands.add(pairOnNetworkCommissionerCommand); - clusterCommands.add(pairOnNetworkDeviceTypeCommand); - clusterCommands.add(pairOnNetworkInstanceNameCommand); - - commandManager.register("pairing", clusterCommands); - } - - public static void main(String[] args) { - ChipDeviceController controller = - new ChipDeviceController( - ControllerParams.newBuilder() - .setUdpListenPort(0) - .setControllerVendorId(0xFFF1) - .setCountryCode("US") - .build()); - - CredentialsIssuer credentialsIssuer = new CredentialsIssuer(); - CommandManager commandManager = new CommandManager(); - - registerCommandsDiscover(controller, commandManager, credentialsIssuer); - registerCommandsPairing(controller, commandManager, credentialsIssuer); - - try { - commandManager.run(args); - } catch (Exception e) { - logger.log(Level.INFO, "Run command failed with exception: " + e.getMessage()); - System.exit(1); - } - controller.shutdownCommissioning(); - } -} diff --git a/examples/java-matter-controller/java/src/com/matter/controller/Main.kt b/examples/java-matter-controller/java/src/com/matter/controller/Main.kt new file mode 100644 index 00000000000000..51d68ad5f8902c --- /dev/null +++ b/examples/java-matter-controller/java/src/com/matter/controller/Main.kt @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2023 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package com.matter.controller + +import chip.devicecontroller.ChipDeviceController +import chip.devicecontroller.ControllerParams +import com.matter.controller.commands.common.* +import com.matter.controller.commands.discover.* +import com.matter.controller.commands.pairing.* + +private fun getDiscoveryCommands( + controller: ChipDeviceController, + credentialsIssuer: CredentialsIssuer +): List { + return listOf( + DiscoverCommand(controller, credentialsIssuer), + DiscoverCommissionablesCommand(controller, credentialsIssuer), + DiscoverCommissionersCommand(controller, credentialsIssuer), + ) +} + +private fun getPairingCommands( + controller: ChipDeviceController, + credentialsIssuer: CredentialsIssuer +): List { + return listOf( + UnpairCommand(controller, credentialsIssuer), + PairCodeCommand(controller, credentialsIssuer), + PairCodePaseCommand(controller, credentialsIssuer), + PairCodeWifiCommand(controller, credentialsIssuer), + PairCodeThreadCommand(controller, credentialsIssuer), + PairAddressPaseCommand(controller, credentialsIssuer), + PairAlreadyDiscoveredCommand(controller, credentialsIssuer), + PairOnNetworkCommand(controller, credentialsIssuer), + PairOnNetworkShortCommand(controller, credentialsIssuer), + PairOnNetworkLongCommand(controller, credentialsIssuer), + PairOnNetworkVendorCommand(controller, credentialsIssuer), + PairOnNetworkCommissioningModeCommand(controller, credentialsIssuer), + PairOnNetworkCommissionerCommand(controller, credentialsIssuer), + PairOnNetworkDeviceTypeCommand(controller, credentialsIssuer), + PairOnNetworkInstanceNameCommand(controller, credentialsIssuer), + ) +} + +fun main(args: Array) { + val controller = ChipDeviceController( + ControllerParams.newBuilder() + .setUdpListenPort(0) + .setControllerVendorId(0xFFF1) + .setCountryCode("US") + .build() + ) + val credentialsIssuer = CredentialsIssuer() + val commandManager = CommandManager() + + commandManager.register("discover", getDiscoveryCommands(controller, credentialsIssuer)) + commandManager.register("pairing", getPairingCommands(controller, credentialsIssuer)) + + try { + commandManager.run(args) + } catch (e: Exception) { + println("Run command failed with exception: " + e.message) + System.exit(1) + } + controller.shutdownCommissioning() +} diff --git a/examples/java-matter-controller/java/src/com/matter/controller/commands/common/CommandManager.java b/examples/java-matter-controller/java/src/com/matter/controller/commands/common/CommandManager.java index 47e184ec3ae4d7..202c6763a2187e 100644 --- a/examples/java-matter-controller/java/src/com/matter/controller/commands/common/CommandManager.java +++ b/examples/java-matter-controller/java/src/com/matter/controller/commands/common/CommandManager.java @@ -18,21 +18,19 @@ package com.matter.controller.commands.common; -import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.Optional; import java.util.logging.Level; import java.util.logging.Logger; public final class CommandManager { - private final ArrayList mCommandMgr = new ArrayList(); - private final Map> mClusters = - new HashMap>(); + private final Map> mClusters = new HashMap>(); private static Logger logger = Logger.getLogger(CommandManager.class.getName()); - public final void register(String clusterName, ArrayList commandsList) { + public final void register(String clusterName, List commandsList) { mClusters.put(clusterName, commandsList); } @@ -45,7 +43,7 @@ public final void run(String[] args) throws Exception { return; } - ArrayList commands = mClusters.get(args[0]); + List commands = mClusters.get(args[0]); if (commands == null) { logger.log(Level.INFO, "Unknown cluster: " + args[0]); showClusters(); @@ -121,7 +119,7 @@ private boolean isGlobalCommand(String commandName) { return isAttributeCommand(commandName) || isEventCommand(commandName); } - private Command getCommand(ArrayList commands, String commandName) { + private Command getCommand(List commands, String commandName) { for (Command command : commands) { if (commandName.equals(command.getName())) { return command; @@ -132,7 +130,7 @@ private Command getCommand(ArrayList commands, String commandName) { } private Command getGlobalCommand( - ArrayList commands, String commandName, String attributeName) { + List commands, String commandName, String attributeName) { for (Command command : commands) { if (commandName.equals(command.getName()) && attributeName.equals(command.getAttribute())) { return command; @@ -166,7 +164,7 @@ private void showClusters() { " +-------------------------------------------------------------------------------------+"); } - private void showCluster(String clusterName, ArrayList commands) { + private void showCluster(String clusterName, List commands) { logger.log(Level.INFO, "Usage:"); logger.log( Level.INFO, @@ -216,7 +214,7 @@ private void showCluster(String clusterName, ArrayList commands) { } private void showClusterAttributes( - String clusterName, String commandName, ArrayList commands) { + String clusterName, String commandName, List commands) { logger.log(Level.INFO, "Usage:"); System.out.printf( " java-matter-controller %s %s attribute-name [param1 param2 ...]\n", @@ -241,8 +239,7 @@ private void showClusterAttributes( " +-------------------------------------------------------------------------------------+"); } - private void showClusterEvents( - String clusterName, String commandName, ArrayList commands) { + private void showClusterEvents(String clusterName, String commandName, List commands) { logger.log(Level.INFO, "Usage:"); System.out.printf( " java-matter-controller %s %s event-name [param1 param2 ...]\n", diff --git a/examples/java-matter-controller/java/src/com/matter/controller/commands/discover/DiscoverCommand.java b/examples/java-matter-controller/java/src/com/matter/controller/commands/discover/DiscoverCommand.java deleted file mode 100644 index 988e97bb23c3b8..00000000000000 --- a/examples/java-matter-controller/java/src/com/matter/controller/commands/discover/DiscoverCommand.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2022 Project CHIP Authors - * All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package com.matter.controller.commands.discover; - -import chip.devicecontroller.ChipDeviceController; -import com.matter.controller.commands.common.CredentialsIssuer; -import com.matter.controller.commands.common.MatterCommand; -import java.util.concurrent.atomic.AtomicLong; - -public final class DiscoverCommand extends MatterCommand { - private final AtomicLong mNodeId = new AtomicLong(); - private final AtomicLong mFabricId = new AtomicLong(); - - public DiscoverCommand(ChipDeviceController controller, CredentialsIssuer credsIssuer) { - super(controller, "resolve", credsIssuer); - addArgument("nodeid", 0, Long.MAX_VALUE, mNodeId, null, false); - addArgument("fabricid", 0, Long.MAX_VALUE, mFabricId, null, false); - } - - @Override - protected final void runCommand() { - runCommand(mNodeId.get(), mFabricId.get()); - } - - private final void runCommand(long remoteId, long fabricId) {} -} diff --git a/examples/java-matter-controller/java/src/com/matter/controller/commands/discover/DiscoverCommand.kt b/examples/java-matter-controller/java/src/com/matter/controller/commands/discover/DiscoverCommand.kt new file mode 100644 index 00000000000000..2d570a6eb0ef7a --- /dev/null +++ b/examples/java-matter-controller/java/src/com/matter/controller/commands/discover/DiscoverCommand.kt @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2023 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package com.matter.controller.commands.discover + +import chip.devicecontroller.ChipDeviceController +import com.matter.controller.commands.common.CredentialsIssuer +import com.matter.controller.commands.common.MatterCommand +import java.util.concurrent.atomic.AtomicLong + +class DiscoverCommand(controller: ChipDeviceController, credsIssuer: CredentialsIssuer?) : + MatterCommand(controller, "resolve", credsIssuer) { + private val nodeId: AtomicLong = AtomicLong() + private val fabricId: AtomicLong = AtomicLong() + + init { + addArgument("nodeid", 0, Long.MAX_VALUE, nodeId, null, false) + addArgument("fabricid", 0, Long.MAX_VALUE, fabricId, null, false) + } + + override fun runCommand() {} +} diff --git a/examples/java-matter-controller/java/src/com/matter/controller/commands/discover/DiscoverCommissionablesCommand.java b/examples/java-matter-controller/java/src/com/matter/controller/commands/discover/DiscoverCommissionablesCommand.java deleted file mode 100644 index 2ba38307554fbd..00000000000000 --- a/examples/java-matter-controller/java/src/com/matter/controller/commands/discover/DiscoverCommissionablesCommand.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (c) 2022 Project CHIP Authors - * All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package com.matter.controller.commands.discover; - -import chip.devicecontroller.ChipDeviceController; -import chip.devicecontroller.DiscoveredDevice; -import com.matter.controller.commands.common.CredentialsIssuer; -import com.matter.controller.commands.common.MatterCommand; - -public final class DiscoverCommissionablesCommand extends MatterCommand { - private static final int MAX_DISCOVERED_DEVICES = 10; - - public DiscoverCommissionablesCommand( - ChipDeviceController controller, CredentialsIssuer credsIssuer) { - super(controller, "commissionables", credsIssuer); - } - - @Override - protected final void runCommand() { - currentCommissioner().discoverCommissionableNodes(); - - // Pause for 7 seconds - try { - Thread.sleep(7000); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - - getDiscoveredDevice(); - } - - private final void getDiscoveredDevice() { - // Log at most MAX_DISCOVERED_DEVICES discovered devices - for (int i = 0; i < MAX_DISCOVERED_DEVICES; i++) { - DiscoveredDevice device = currentCommissioner().getDiscoveredDevice(i); - if (device == null) { - break; - } - - logDevice(device); - } - } - - private final void logDevice(DiscoveredDevice device) { - System.out.println("Discovered node:"); - System.out.format("\tDiscriminator: %d", device.discriminator); - System.out.format("\tIP Address : %s%n", device.ipAddress); - } -} diff --git a/examples/java-matter-controller/java/src/com/matter/controller/commands/discover/DiscoverCommissionablesCommand.kt b/examples/java-matter-controller/java/src/com/matter/controller/commands/discover/DiscoverCommissionablesCommand.kt new file mode 100644 index 00000000000000..6eef21ba8c01e0 --- /dev/null +++ b/examples/java-matter-controller/java/src/com/matter/controller/commands/discover/DiscoverCommissionablesCommand.kt @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2023 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package com.matter.controller.commands.discover + +import chip.devicecontroller.ChipDeviceController +import chip.devicecontroller.DiscoveredDevice +import com.matter.controller.commands.common.CredentialsIssuer +import com.matter.controller.commands.common.MatterCommand +import java.util.concurrent.TimeUnit + +private const val MAX_DISCOVERED_DEVICES = 10 +private const val TIME_TO_WAIT_FOR_RESULTS_SECONDS = 7L + +class DiscoverCommissionablesCommand( + controller: ChipDeviceController, credsIssuer: CredentialsIssuer? +) : MatterCommand(controller, "commissionables", credsIssuer) { + + override fun runCommand() { + currentCommissioner().discoverCommissionableNodes() + + try { + TimeUnit.SECONDS.sleep(TIME_TO_WAIT_FOR_RESULTS_SECONDS) + } catch (e: InterruptedException) { + throw RuntimeException(e) + } + + logDiscoveredDevice() + } + + private fun logDiscoveredDevice() { + // Log at most MAX_DISCOVERED_DEVICES discovered devices + for (i in 0 until MAX_DISCOVERED_DEVICES) { + val device: DiscoveredDevice = currentCommissioner().getDiscoveredDevice(i) ?: break + logDevice(device) + } + } + + private fun logDevice(device: DiscoveredDevice) { + println("Discovered node:") + System.out.format("\tDiscriminator: %d", device.discriminator) + System.out.format("\tIP Address : %s%n", device.ipAddress) + } +} diff --git a/examples/java-matter-controller/java/src/com/matter/controller/commands/discover/DiscoverCommissionersCommand.java b/examples/java-matter-controller/java/src/com/matter/controller/commands/discover/DiscoverCommissionersCommand.java deleted file mode 100644 index ed5eca264a6106..00000000000000 --- a/examples/java-matter-controller/java/src/com/matter/controller/commands/discover/DiscoverCommissionersCommand.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (c) 2022 Project CHIP Authors - * All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package com.matter.controller.commands.discover; - -import chip.devicecontroller.ChipDeviceController; -import com.matter.controller.commands.common.CredentialsIssuer; -import com.matter.controller.commands.common.MatterCommand; - -public final class DiscoverCommissionersCommand extends MatterCommand { - public DiscoverCommissionersCommand( - ChipDeviceController controller, CredentialsIssuer credsIssuer) { - super(controller, "commissioners", credsIssuer); - } - - @Override - protected final void runCommand() { - // mCommissionableNodeController.DiscoverCommissioners(); - } -} diff --git a/examples/java-matter-controller/java/src/com/matter/controller/commands/discover/DiscoverCommissionersCommand.kt b/examples/java-matter-controller/java/src/com/matter/controller/commands/discover/DiscoverCommissionersCommand.kt new file mode 100644 index 00000000000000..ebc0ec1343a9eb --- /dev/null +++ b/examples/java-matter-controller/java/src/com/matter/controller/commands/discover/DiscoverCommissionersCommand.kt @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2023 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package com.matter.controller.commands.discover + +import chip.devicecontroller.ChipDeviceController +import com.matter.controller.commands.common.CredentialsIssuer +import com.matter.controller.commands.common.MatterCommand + +class DiscoverCommissionersCommand( + controller: ChipDeviceController, credsIssuer: CredentialsIssuer? +) : MatterCommand(controller, "commissioners", credsIssuer) { + override fun runCommand() {} +}