use of com.zsmartsystems.zigbee.ZigBeeNode in project com.zsmartsystems.zigbee by zsmartsystems.
the class ZigBeeNetworkDiscovererTest method testNormal.
@Ignore
@Test
public void testNormal() {
// Add all the required responses to a list
IeeeAddressResponse ieeeResponse = new IeeeAddressResponse();
ieeeResponse.setStatus(ZdoStatus.SUCCESS);
ieeeResponse.setSourceAddress(new ZigBeeEndpointAddress(0));
ieeeResponse.setDestinationAddress(new ZigBeeEndpointAddress(0));
ieeeResponse.setIeeeAddrRemoteDev(new IeeeAddress("1234567890ABCDEF"));
responses.put(ZdoCommandType.IEEE_ADDRESS_REQUEST.getClusterId(), ieeeResponse);
NodeDescriptorResponse nodeResponse = new NodeDescriptorResponse();
nodeResponse.setStatus(ZdoStatus.SUCCESS);
nodeResponse.setSourceAddress(new ZigBeeEndpointAddress(0));
nodeResponse.setDestinationAddress(new ZigBeeEndpointAddress(0));
nodeResponse.setNwkAddrOfInterest(0);
NodeDescriptor nodeDescriptor = new NodeDescriptor();
nodeResponse.setNodeDescriptor(nodeDescriptor);
responses.put(ZdoCommandType.NODE_DESCRIPTOR_REQUEST.getClusterId(), nodeResponse);
PowerDescriptorResponse powerResponse = new PowerDescriptorResponse();
powerResponse.setStatus(ZdoStatus.SUCCESS);
powerResponse.setSourceAddress(new ZigBeeEndpointAddress(0));
powerResponse.setDestinationAddress(new ZigBeeEndpointAddress(0));
powerResponse.setNwkAddrOfInterest(0);
PowerDescriptor powerDescriptor = new PowerDescriptor();
powerResponse.setPowerDescriptor(powerDescriptor);
responses.put(ZdoCommandType.POWER_DESCRIPTOR_REQUEST.getClusterId(), powerResponse);
ActiveEndpointsResponse endpointsResponse = new ActiveEndpointsResponse();
endpointsResponse.setStatus(ZdoStatus.SUCCESS);
endpointsResponse.setSourceAddress(new ZigBeeEndpointAddress(0));
endpointsResponse.setDestinationAddress(new ZigBeeEndpointAddress(0));
endpointsResponse.setNwkAddrOfInterest(0);
List<Integer> activeEpList = new ArrayList<Integer>();
activeEpList.add(1);
endpointsResponse.setActiveEpList(activeEpList);
responses.put(ZdoCommandType.ACTIVE_ENDPOINTS_REQUEST.getClusterId(), endpointsResponse);
SimpleDescriptorResponse simpleResponse = new SimpleDescriptorResponse();
simpleResponse.setStatus(ZdoStatus.SUCCESS);
simpleResponse.setSourceAddress(new ZigBeeEndpointAddress(0));
simpleResponse.setDestinationAddress(new ZigBeeEndpointAddress(0, 1));
simpleResponse.setNwkAddrOfInterest(0);
SimpleDescriptor simpleDescriptor = new SimpleDescriptor();
simpleDescriptor.setDeviceId(0);
simpleDescriptor.setDeviceVersion(0);
simpleDescriptor.setEndpoint(1);
simpleDescriptor.setProfileId(0x104);
List<Integer> inputClusterList = new ArrayList<Integer>();
List<Integer> outputClusterList = new ArrayList<Integer>();
simpleDescriptor.setInputClusterList(inputClusterList);
simpleDescriptor.setOutputClusterList(outputClusterList);
simpleResponse.setSimpleDescriptor(simpleDescriptor);
responses.put(ZdoCommandType.SIMPLE_DESCRIPTOR_REQUEST.getClusterId(), simpleResponse);
ZigBeeNetworkDiscoverer discoverer = new ZigBeeNetworkDiscoverer(networkManager);
discoverer.setRetryPeriod(1);
discoverer.startup();
// Check that the listener registers for startup notifications
Mockito.verify(networkManager).addNetworkStateListener(discoverer);
// Put the system online so it initialises
discoverer.networkStateUpdated(ZigBeeTransportState.ONLINE);
// Check it registers listeners
Mockito.verify(networkManager).addCommandListener(discoverer);
Mockito.verify(networkManager).addAnnounceListener(discoverer);
// Then wait for the node to be added
Mockito.verify(networkManager, Mockito.timeout(5000).times(1)).addNode(nodeCapture.capture());
ZigBeeNode node = nodeCapture.getValue();
assertNotNull(node);
assertEquals(Integer.valueOf(0), node.getNetworkAddress());
assertEquals(new IeeeAddress("1234567890ABCDEF"), node.getIeeeAddress());
assertEquals(1, node.getEndpoints().size());
}
use of com.zsmartsystems.zigbee.ZigBeeNode in project com.zsmartsystems.zigbee by zsmartsystems.
the class ZigBeeOtaServerTest method testNotify.
@Test
public void testNotify() {
ArgumentCaptor<ZigBeeCommand> mockedCommandCaptor = ArgumentCaptor.forClass(ZigBeeCommand.class);
NodeDescriptor nodeDescriptor = new NodeDescriptor();
IeeeAddress ieeeAddress = new IeeeAddress("1234567890ABCDEF");
ZigBeeEndpointAddress networkAddress = new ZigBeeEndpointAddress(1234, 56);
ZigBeeNetworkManager mockedNetworkManager = Mockito.mock(ZigBeeNetworkManager.class);
ZigBeeNode node = new ZigBeeNode(mockedNetworkManager, ieeeAddress);
node.setNetworkAddress(networkAddress.getAddress());
node.setNodeDescriptor(nodeDescriptor);
ZigBeeEndpoint endpoint = new ZigBeeEndpoint(mockedNetworkManager, node, networkAddress.getEndpoint());
// device.setIeeeAddress(ieeeAddress);
List<Integer> outClusters = new ArrayList<Integer>();
outClusters.add(ZclOtaUpgradeCluster.CLUSTER_ID);
endpoint.setOutputClusterIds(outClusters);
ZigBeeOtaStatusCallback mockedCallback = Mockito.mock(ZigBeeOtaStatusCallback.class);
otaStatusCapture = new ArrayList<ZigBeeOtaServerStatus>();
Set<ZigBeeEndpoint> devices = new HashSet<ZigBeeEndpoint>();
devices.add(endpoint);
Mockito.when(mockedNetworkManager.getNode((IeeeAddress) Matchers.anyObject())).thenReturn(node);
// Mockito.when(mockedNetworkManager.getDevice((ZigBeeAddress) Matchers.anyObject())).thenReturn(endpoint);
// Mockito.when(mockedNetworkManager.getNodeDevices((IeeeAddress) Matchers.anyObject())).thenReturn(devices);
// ZigBeeTransportTransmit mockedTransport = Mockito.mock(ZigBeeTransportTransmit.class);
// ArgumentCaptor<ZigBeeApsFrame> mockedApsFrameListener = ArgumentCaptor.forClass(ZigBeeApsFrame.class);
// try {
// Mockito.doNothing().when(mockedTransport).sendCommand(mockedApsFrameListener.capture());
// } catch (ZigBeeException e) {
// e.printStackTrace();
// }
Mockito.doAnswer(new Answer<Integer>() {
@Override
public Integer answer(InvocationOnMock invocation) {
return 0;
}
}).when(mockedNetworkManager).sendCommand(mockedCommandCaptor.capture());
Mockito.doAnswer(new Answer<Future<CommandResult>>() {
@Override
public Future<CommandResult> answer(InvocationOnMock invocation) {
return null;
}
}).when(mockedNetworkManager).unicast(mockedCommandCaptor.capture(), (ZigBeeTransactionMatcher) Matchers.anyObject());
ZclOtaUpgradeCluster cluster = new ZclOtaUpgradeCluster(mockedNetworkManager, endpoint);
ZigBeeOtaServer server = new ZigBeeOtaServer();
assertTrue(server.appStartup(cluster));
server.addListener(this);
ZigBeeOtaFile otaFile = Mockito.mock(ZigBeeOtaFile.class);
// Set the firmware and send notification
server.setFirmware(otaFile);
assertEquals(1, mockedCommandCaptor.getAllValues().size());
org.awaitility.Awaitility.await().until(otaListenerUpdated(), org.hamcrest.Matchers.equalTo(1));
assertEquals(1, otaStatusCapture.size());
ZigBeeOtaServerStatus status = otaStatusCapture.get(0);
assertEquals(ZigBeeOtaServerStatus.OTA_WAITING, status);
ZigBeeCommand command = mockedCommandCaptor.getValue();
assertEquals(Integer.valueOf(0x19), command.getClusterId());
assertTrue(command instanceof ImageNotifyCommand);
ImageNotifyCommand notifyCommand = (ImageNotifyCommand) command;
assertEquals(new ZigBeeEndpointAddress(1234, 56), notifyCommand.getDestinationAddress());
assertTrue(notifyCommand.getQueryJitter() >= 1 && notifyCommand.getQueryJitter() <= 100);
}
use of com.zsmartsystems.zigbee.ZigBeeNode in project com.zsmartsystems.zigbee by zsmartsystems.
the class ZclClusterTest method bind.
@Test
public void bind() {
createNetworkManager();
ZigBeeNode node = new ZigBeeNode(networkManager, new IeeeAddress());
node.setNetworkAddress(1234);
ZigBeeEndpoint device = new ZigBeeEndpoint(networkManager, node, 5);
ZclCluster cluster = new ZclOnOffCluster(networkManager, device);
cluster.bind(new IeeeAddress("1234567890ABCDEF"), 11);
assertEquals(1, commandCapture.getAllValues().size());
ZigBeeCommand command = commandCapture.getValue();
assertNotNull(command);
System.out.println(command);
assertTrue(command instanceof BindRequest);
BindRequest bindCommand = (BindRequest) command;
assertEquals(new ZigBeeEndpointAddress(1234, 0), bindCommand.getDestinationAddress());
assertEquals(new IeeeAddress("1234567890ABCDEF"), bindCommand.getDstAddress());
assertEquals(Integer.valueOf(5), bindCommand.getSrcEndpoint());
assertEquals(Integer.valueOf(11), bindCommand.getDstEndpoint());
assertEquals(Integer.valueOf(3), bindCommand.getDstAddrMode());
assertEquals(Integer.valueOf(0x0021), bindCommand.getClusterId());
assertEquals(Integer.valueOf(6), bindCommand.getBindCluster());
}
use of com.zsmartsystems.zigbee.ZigBeeNode in project com.zsmartsystems.zigbee by zsmartsystems.
the class ZclClusterTest method isAttributeSupported.
@Test
public void isAttributeSupported() {
createNetworkManager();
ZigBeeNode node = new ZigBeeNode(networkManager, new IeeeAddress());
node.setNetworkAddress(1234);
ZigBeeEndpoint device = new ZigBeeEndpoint(networkManager, node, 5);
ZclCluster cluster = new ZclOnOffCluster(networkManager, device);
Set<Integer> set = new HashSet<Integer>();
set.add(1);
set.add(4);
set.add(2);
setSupportedClusters(cluster, set);
assertEquals(3, cluster.getSupportedAttributes().size());
assertTrue(cluster.isAttributeSupported(1));
assertTrue(cluster.isAttributeSupported(2));
assertFalse(cluster.isAttributeSupported(3));
}
use of com.zsmartsystems.zigbee.ZigBeeNode in project com.zsmartsystems.zigbee by zsmartsystems.
the class ZclClusterTest method handleAttributeReport.
@Test
public void handleAttributeReport() {
createNetworkManager();
ZigBeeNode node = new ZigBeeNode(networkManager, new IeeeAddress());
node.setNetworkAddress(1234);
ZigBeeEndpoint device = new ZigBeeEndpoint(networkManager, node, 5);
ZclCluster cluster = new ZclOnOffCluster(networkManager, device);
ZclAttributeListener listenerMock = Mockito.mock(ZclAttributeListener.class);
ArgumentCaptor<ZclAttribute> attributeCapture = ArgumentCaptor.forClass(ZclAttribute.class);
cluster.addAttributeListener(listenerMock);
List<AttributeReport> attributeList = new ArrayList<AttributeReport>();
AttributeReport report;
report = new AttributeReport();
report.setAttributeDataType(ZclDataType.SIGNED_8_BIT_INTEGER);
report.setAttributeIdentifier(0);
report.setAttributeValue(Integer.valueOf(1));
System.out.println(report);
attributeList.add(report);
cluster.handleAttributeReport(attributeList);
ZclAttribute attribute = cluster.getAttribute(0);
assertTrue(attribute.getLastValue() instanceof Boolean);
Mockito.verify(listenerMock, Mockito.timeout(1000).times(1)).attributeUpdated(attributeCapture.capture());
attribute = attributeCapture.getValue();
assertTrue(attribute.getLastValue() instanceof Boolean);
assertEquals(ZclDataType.BOOLEAN, attribute.getDataType());
assertEquals(0, attribute.getId());
assertEquals(true, attribute.getLastValue());
}
Aggregations