blob: d1f2c37f318c35033b3142240192355b98e67038 [file] [log] [blame]
package com.matter.controller.commands.pairing
import com.matter.controller.commands.common.CredentialsIssuer
import java.util.logging.Level
import java.util.logging.Logger
import kotlinx.coroutines.runBlocking
import matter.controller.MatterController
import matter.controller.cluster.clusters.BasicInformationCluster
class PairOnNetworkLongImReadCommand(controller: MatterController, credsIssue: CredentialsIssuer?) :
PairingCommand(
controller,
"onnetwork-long-im-read",
credsIssue,
PairingModeType.ON_NETWORK,
PairingNetworkType.NONE,
DiscoveryFilterType.LONG_DISCRIMINATOR
) {
override fun runCommand() {
runBlocking {
try {
val basicInformationCluster =
BasicInformationCluster(controller = currentCommissioner(), endpointId = DEFAULT_ENDPOINT)
val vendorName = basicInformationCluster.readVendorNameAttribute()
// By running command readVendorIDAttribute, we are implicitly requesting CASE to be
// established if it's not already present.
val vendorId = basicInformationCluster.readVendorIDAttribute()
logger.log(Level.INFO, "Read command succeeded, Verdor Name:${vendorName} (ID:${vendorId})")
} catch (ex: Exception) {
logger.log(Level.WARNING, "General read failure occurred with error ${ex.message}")
setFailure("read failure")
} finally {
clear()
}
}
setSuccess()
}
companion object {
private val logger = Logger.getLogger(PairOnNetworkLongImReadCommand::class.java.name)
private const val MATTER_PORT = 5540
private const val DEFAULT_ENDPOINT: UShort = 0u
}
}