- 使用 Spring Initializr 创建 Spring Boot 应用程序
- 在Spring Boot中配置Cassandra
- 在 Spring Boot 上配置 Tomcat 连接池
- 将Camel消息路由到嵌入WildFly的Artemis上
本文整理了Java中com.zsmartsystems.zigbee.app.discovery.ZigBeeNodeServiceDiscoverer
类的一些代码示例,展示了ZigBeeNodeServiceDiscoverer
类的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。ZigBeeNodeServiceDiscoverer
类的具体详情如下:
包路径:com.zsmartsystems.zigbee.app.discovery.ZigBeeNodeServiceDiscoverer
类名称:ZigBeeNodeServiceDiscoverer
[英]This class contains methods for discovering the services and features of a ZigBeeNode. All discovery methods are private and the class is utilised by calling #startDiscovery(Set) with a set of #NodeDiscoveryState for the stages wishing to be discovered or updated.
A single worker thread is ensured - if the thread is already active when #startDiscovery(Set) is called, the new tasks will be added to the existing task queue if they are not already in the queue. If the worker thread is not running, it will be started.
This class provides a centralised helper, used for discovering and updating information about the ZigBeeNode
A random exponential backoff is used for retries to reduce congestion. If the device replies that a command is not supported, then this will not be issued again on subsequent requests.
Once the discovery update is complete the ZigBeeNetworkManager#updateNode(ZigBeeNode) is called to alert users.
[中]此类包含用于发现ZigBeeNode的服务和功能的方法。所有发现方法都是私有的,该类通过调用#startDiscovery(Set)和一组#NodeDiscoveryState来使用,用于希望被发现或更新的阶段。
确保一个工作线程——如果在调用#startDiscovery(Set)时线程已经处于活动状态,则新任务将被添加到现有任务队列中(如果它们尚未在队列中)。如果工作线程没有运行,它将被启动。
这个类提供了一个集中的助手,用于发现和更新关于ZigBeeNode的信息
随机指数退避用于重试以减少拥塞。如果设备回复不支持命令,则不会在后续请求中再次发出该命令。
一旦发现更新完成,就会调用ZigBeeNetworkManager#updateNode(ZigBeeNode)来提醒用户。
代码示例来源:origin: zsmartsystems/com.zsmartsystems.zigbee
private void outputDiscoveryTasks(ZigBeeDiscoveryExtension extension, PrintStream out) {
out.println("Mesh update period : " + extension.getUpdatePeriod() + " seconds");
out.println();
out.println("Address Nwk Last Start Last Complete Current Tasks");
for (ZigBeeNodeServiceDiscoverer discoverer : extension.getNodeDiscoverers()) {
ZigBeeNode node = discoverer.getNode();
out.println(String.format("%s %-5d %-20s %-20s %s", node.getIeeeAddress(), node.getNetworkAddress(),
discoverer.getLastDiscoveryStarted() == null ? NEVER
: dfIso8601.format(discoverer.getLastDiscoveryStarted().getTime()),
discoverer.getLastDiscoveryCompleted() == null ? NEVER
: dfIso8601.format(discoverer.getLastDiscoveryCompleted().getTime()),
tasksToString(discoverer.getTasks())));
}
}
代码示例来源:origin: zsmartsystems/com.zsmartsystems.zigbee
protected void startDiscovery(ZigBeeNode node) {
ZigBeeNodeServiceDiscoverer nodeDiscoverer = new ZigBeeNodeServiceDiscoverer(networkManager, node);
nodeDiscovery.put(node.getIeeeAddress(), nodeDiscoverer);
nodeDiscoverer.startDiscovery();
}
代码示例来源:origin: zsmartsystems/com.zsmartsystems.zigbee
@Override
public void run() {
logger.debug("DISCOVERY Extension: Starting mesh update");
for (ZigBeeNodeServiceDiscoverer node : nodeDiscovery.values()) {
logger.debug("DISCOVERY Extension: Starting mesh update for {}", node.getNode().getIeeeAddress());
node.updateMesh();
}
}
};
代码示例来源:origin: zsmartsystems/com.zsmartsystems.zigbee
private void displayNodeMesh(ZigBeeNode node, ZigBeeNodeServiceDiscoverer discoverer, PrintStream out) {
out.println("IEEE Address : " + node.getIeeeAddress().toString());
out.println("NWK Address : " + node.getNetworkAddress().toString());
out.println("Last discovery started : " + discoverer.getLastDiscoveryStarted() == null ? NEVER
: dfIso8601.format(discoverer.getLastDiscoveryStarted().getTime()));
out.println("Last discovery completed : " + discoverer.getLastDiscoveryCompleted() == null ? NEVER
: dfIso8601.format(discoverer.getLastDiscoveryStarted().getTime()));
out.println("Current tasks : " + tasksToString(discoverer.getTasks()));
}
代码示例来源:origin: zsmartsystems/com.zsmartsystems.zigbee
@Test
public void test() throws Exception {
ZigBeeNode node = Mockito.mock(ZigBeeNode.class);
ZigBeeNodeServiceDiscoverer discoverer = new ZigBeeNodeServiceDiscoverer(networkManager, node);
discoverer.setMaxBackoff(10);
assertEquals(10, discoverer.getMaxBackoff());
assertTrue(discoverer.getTasks().isEmpty());
assertEquals(node, discoverer.getNode());
responses.put(ZdoCommandType.MANAGEMENT_ROUTING_REQUEST.getClusterId(), routingResponse);
discoverer.startDiscovery();
assertTrue(discoverer.getTasks().contains(NodeDiscoveryTask.ACTIVE_ENDPOINTS));
代码示例来源:origin: zsmartsystems/com.zsmartsystems.zigbee
@Test
public void testLocal() throws Exception {
ZigBeeNode node = Mockito.mock(ZigBeeNode.class);
ZigBeeNodeServiceDiscoverer discoverer = new ZigBeeNodeServiceDiscoverer(networkManager, node);
TestUtilities.setField(ZigBeeNodeServiceDiscoverer.class, discoverer, "retryPeriod", 1);
NodeDescriptor initialNodeDescriptor = Mockito.mock(NodeDescriptor.class);
Mockito.when(initialNodeDescriptor.getLogicalType()).thenReturn(LogicalType.UNKNOWN);
Mockito.when(node.getNodeDescriptor()).thenReturn(initialNodeDescriptor);
PowerDescriptor initialPowerDescriptor = Mockito.mock(PowerDescriptor.class);
Mockito.when(initialPowerDescriptor.getCurrentPowerMode()).thenReturn(CurrentPowerModeType.UNKNOWN);
Mockito.when(node.getPowerDescriptor()).thenReturn(initialPowerDescriptor);
// Use node 0 and we should not try and get the local endpoints
Mockito.when(node.getNetworkAddress()).thenReturn(0);
ScheduledFuture<?> futureTask = Mockito.mock(ScheduledFuture.class);
TestUtilities.setField(ZigBeeNodeServiceDiscoverer.class, discoverer, "futureTask", futureTask);
discoverer.startDiscovery();
Mockito.verify(futureTask, Mockito.times(1)).cancel(true);
assertFalse(discoverer.getTasks().contains(NodeDiscoveryTask.ACTIVE_ENDPOINTS));
}
}
代码示例来源:origin: zsmartsystems/com.zsmartsystems.zigbee
break;
case "start":
discoverer.startDiscovery();
out.println("Discovery for " + node.getIeeeAddress().toString() + " has been started.");
return;
case "update":
discoverer.updateMesh();
out.println("Network mesh update for " + node.getIeeeAddress().toString() + " has been started.");
return;
代码示例来源:origin: zsmartsystems/com.zsmartsystems.zigbee
/**
* Starts service discovery for the node in order to update the mesh. This adds the
* {@link NodeDiscoveryTask#NEIGHBORS} and {@link NodeDiscoveryTask#ROUTES} tasks to the task list.
* <p>
* Note that {@link NodeDiscoveryTask#ROUTES} is not added for end devices.
*/
public void updateMesh() {
logger.debug("{}: Node SVC Discovery: Update mesh", node.getIeeeAddress());
Set<NodeDiscoveryTask> tasks = new HashSet<NodeDiscoveryTask>();
tasks.add(NodeDiscoveryTask.NEIGHBORS);
if (node.getNodeDescriptor().getLogicalType() != LogicalType.END_DEVICE) {
tasks.add(NodeDiscoveryTask.ROUTES);
}
startDiscovery(tasks);
}
代码示例来源:origin: zsmartsystems/com.zsmartsystems.zigbee
private ZigBeeNodeServiceDiscoverer getNodeDiscoverer(ZigBeeDiscoveryExtension extension, IeeeAddress ieeeAddress) {
for (ZigBeeNodeServiceDiscoverer discoverer : extension.getNodeDiscoverers()) {
if (discoverer.getNode().getIeeeAddress().equals(ieeeAddress)) {
return discoverer;
}
}
return null;
}
代码示例来源:origin: zsmartsystems/com.zsmartsystems.zigbee
ZigBeeEndpoint endpoint = getSimpleDescriptor(endpointId);
if (endpoint == null) {
return false;
代码示例来源:origin: zsmartsystems/com.zsmartsystems.zigbee
/**
* Starts service discovery for the node.
*/
public void startDiscovery() {
logger.debug("{}: Node SVC Discovery: start discovery", node.getIeeeAddress());
Set<NodeDiscoveryTask> tasks = new HashSet<NodeDiscoveryTask>();
// Always request the network address - in case it's changed
tasks.add(NodeDiscoveryTask.NWK_ADDRESS);
if (node.getNodeDescriptor().getLogicalType() == LogicalType.UNKNOWN) {
tasks.add(NodeDiscoveryTask.NODE_DESCRIPTOR);
}
if (node.getPowerDescriptor().getCurrentPowerMode() == CurrentPowerModeType.UNKNOWN) {
tasks.add(NodeDiscoveryTask.POWER_DESCRIPTOR);
}
if (node.getEndpoints().size() == 0 && node.getNetworkAddress() != networkManager.getLocalNwkAddress()) {
tasks.add(NodeDiscoveryTask.ACTIVE_ENDPOINTS);
}
tasks.add(NodeDiscoveryTask.NEIGHBORS);
startDiscovery(tasks);
}
COM 内存泄漏最常见的原因是什么? 我读过将初始化的 CComBSTR 的地址作为 [out] 参数传递给函数会导致泄漏。我正在寻找像这样枚举其他常见的编程错误。 最佳答案 未能为 COM 对象使用
在COM服务器执行过程中分配一 block 内存,然后通过一个输出参数将该内存块传递给客户端是很常见的。然后,客户端有义务使用 CoTaskMemFree() 等方法释放该内存。 问题是,这 bloc
我有一些 MFC 代码(自定义 CWnd 控件和一些要公开的类),我需要将它们制作成带有接口(interface)的 activex/COM 对象。使用 MFC 支持制作 ATL 项目并以这种方式制作
Devenv.com 是 visual studio 命令行界面,当您键入 devenv/? 时,devenv 的帮助会出现在控制台上。但是,如果没有任何选项,devenv.com 只会调用 deve
如何将 COM 接口(interface)的引用作为 COM 库中的参数传递? 这是示例: 1)客户端代码成功创建coclass并接收到pFunctionDiscovery中的接口(interface
我正在使用 django,我在 s3 中存储了诸如 imgs 之类的东西(为此我使用的是 boto),但最近我收到了这个错误: 'foo.bar.com.s3.amazonaws.com' doesn
我已经使用组件服务 MSC 对话框创建了一个 COM+ 应用程序。我将一个现有的 COM 对象导入到这个新的 COM+ 应用程序中。 我知道可以通过 COM+ 应用程序调用该 COM 对象。我可以简单
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 11 年前。 Improve thi
我正在使用通过 COM Interop 包装器公开的第三方 dll。但是,其中一个 COM 调用经常卡住(至少从不返回)。为了至少让我的代码更健壮一些,我异步包装了调用(_getDeviceInfoW
很多年前我读到有一个简单的 php 脚本可以将您的网站重定向到 http://example.com/google.com 到 google.com它适用于正斜杠右侧的任何域。我忘记了这个脚本是什么或
我正在实现我的第一个进程外 COM 服务器(我的第一个 COM 服务器,就此而言)。我已经按照步骤编写了一个 IDL 文件,为代理/ stub DLL 生成代码,编译 DLL,并注册它。 当我检查注册
是否可以在未知接口(interface)上增加 RCW 引用计数? (即不是底层 COM 对象的引用计数) 我有一些旧的 COM 服务器代码 int Method1(object comobject)
我注意到许多关于 COM 的书籍等都指出,在 COM 聚合中实现一个可用作内部对象的对象相对容易。但是,除非我遗漏了什么,否则聚合似乎只能在极其有限的场景中成功,因此只有在明确识别出这种场景时才应提供
假设我正在开发一个安装 COM 组件并安装程序注册它们的应用程序。这很好用。 现在该软件需要从内存棒上运行。如何注册我的库运行时并确保在运行应用程序后清理注册表? 最佳答案 您总是在 XP 或更高版本
我们已经使用Microsoft的ActiveX/COM(VB6)技术开发了一个软件系统。去年,我对自动化构建过程和整个SCM越来越感兴趣。我集中搜索了网络的大部分内容,以获取有关如何使用基于COM的软
我对 com 线程模型有点困惑。 我有一个 inproc 服务器,我想创建一个可从任何线程访问的接口(interface),而不管 CoInitializeEx 中使用的线程模型和/或标志。 当将接口
我的包以旁加载方式安装,并不断遇到特定于应用程序的权限错误。 是的,许多人建议在 regedit 和组件服务中手动更改权限和所有者。 我的应用实际上在组件服务(DCOMCNFG、DCOMCNFG -3
我正在使用第三方应用程序,并调用创建 的实例。我的 COM 对象。这个调用成功了,但是第三方应用程序上的函数没有返回指向创建对象的指针(我不知道为什么)。有没有办法获得指向我的对象的指针? 为了澄清,
我有一个用 C# 编写的托管 COM 对象和一个用 C++(MFC 和 ATL)编写的 native COM 客户端和接收器。客户端创建对象并在启动时向其事件接口(interface)提供建议,并在其
我的应用程序需要注册两个 COM DLL。如果用户有必要的访问权限,它会自动完成,否则可以使用 regsvr32 完成。 . 现在在一些工作站上会发生以下情况: 开始cmd.exe作为管理员 注册第一
我是一名优秀的程序员,十分优秀!