@Override
public void process(ZigBeeNetworkManager networkManager, String[] args, PrintStream out)
throws IllegalArgumentException, InterruptedException, ExecutionException {
if (args.length != 2) {
throw new IllegalArgumentException("Invalid number of arguments");
}
ZigBeeNode node = getNode(networkManager, args[1]);
final Boolean result = node.updateBindingTable().get();
if (!result) {
out.println("Binding table read error");
return;
}
out.println("Binding table for node " + node.getNetworkAddress() + " [" + node.getIeeeAddress() + "]");
if (node.getBindingTable().isEmpty()) {
out.println("--- Empty");
return;
}
out.println("Src Address | Dest Address | Group | Mode | Cluster");
for (BindingTable entry : node.getBindingTable()) {
out.println(String
.format("%s | %20s | %5s | %-7s | %04X:%s", getAddress(entry.getSrcAddr(), entry.getSrcEndpoint()),
entry.getDstAddrMode() == 3 ? getAddress(entry.getDstNodeAddr(), entry.getDstNodeEndpoint())
: "",
entry.getDstAddrMode() == 1 ? Integer.toString(entry.getDstGroupAddr()) : "",
getAddressMode(entry.getDstAddrMode()), entry.getClusterId(),
ZclClusterType.getValueById(entry.getClusterId())));
}
}