use of com.zsmartsystems.zigbee.dongle.telegesis.internal.protocol.TelegesisNetworkLostEvent in project com.zsmartsystems.zigbee by zsmartsystems.
the class ZigBeeDongleTelegesis method telegesisEventReceived.
@Override
public void telegesisEventReceived(TelegesisEvent event) {
if (event instanceof TelegesisReceiveMessageEvent) {
TelegesisReceiveMessageEvent rxMessage = (TelegesisReceiveMessageEvent) event;
ZigBeeApsFrame apsFrame = new ZigBeeApsFrame();
// apsFrame.setApsCounter(emberApsFrame.getSequence());
apsFrame.setCluster(rxMessage.getClusterId());
apsFrame.setDestinationEndpoint(rxMessage.getDestinationEp());
apsFrame.setProfile(rxMessage.getProfileId());
apsFrame.setSourceEndpoint(rxMessage.getSourceEp());
apsFrame.setSourceAddress(rxMessage.getNetworkAddress());
apsFrame.setPayload(rxMessage.getMessageData());
zigbeeTransportReceive.receiveCommand(apsFrame);
return;
}
// Handle devices joining and leaving
if (event instanceof TelegesisDeviceJoinedNetworkEvent) {
TelegesisDeviceJoinedNetworkEvent deviceJoinedEvent = (TelegesisDeviceJoinedNetworkEvent) event;
zigbeeTransportReceive.nodeStatusUpdate(ZigBeeNodeStatus.UNSECURED_JOIN, deviceJoinedEvent.getNetworkAddress(), deviceJoinedEvent.getIeeeAddress());
return;
}
if (event instanceof TelegesisDeviceLeftNetworkEvent) {
TelegesisDeviceLeftNetworkEvent deviceLeftEvent = (TelegesisDeviceLeftNetworkEvent) event;
zigbeeTransportReceive.nodeStatusUpdate(ZigBeeNodeStatus.DEVICE_LEFT, deviceLeftEvent.getNetworkAddress(), deviceLeftEvent.getIeeeAddress());
return;
}
// Handle link changes and notify framework or just reset link with dongle?
if (event instanceof TelegesisNetworkLeftEvent | event instanceof TelegesisNetworkLostEvent) {
zigbeeTransportReceive.setNetworkState(ZigBeeTransportState.OFFLINE);
return;
}
if (event instanceof TelegesisNetworkJoinedEvent) {
zigbeeTransportReceive.setNetworkState(ZigBeeTransportState.ONLINE);
return;
}
logger.debug("Unhandled Telegesis Frame: {}", event.toString());
}
use of com.zsmartsystems.zigbee.dongle.telegesis.internal.protocol.TelegesisNetworkLostEvent in project com.zsmartsystems.zigbee by zsmartsystems.
the class TelegesisFrameHandlerTest method testEventWait.
@Ignore
@Test
public void testEventWait() {
final TelegesisFrameHandler frameHandler = new TelegesisFrameHandler();
final List<TelegesisEvent> eventCapture = new ArrayList<TelegesisEvent>();
Thread waitThread = new Thread() {
@Override
public void run() {
// Send the transaction and wait for the response
eventCapture.add(frameHandler.eventWait(TelegesisSleepyDeviceAnnounceEvent.class));
synchronized (eventCapture) {
eventCapture.notify();
}
}
};
waitThread.start();
TelegesisEvent eventOk = new TelegesisSleepyDeviceAnnounceEvent();
TelegesisEvent eventNOk = new TelegesisNetworkLostEvent();
try {
Method privateMethod;
try {
privateMethod = TelegesisFrameHandler.class.getDeclaredMethod("notifyEventReceived", new Class[] { TelegesisEvent.class });
privateMethod.setAccessible(true);
privateMethod.invoke(frameHandler, eventNOk);
privateMethod.invoke(frameHandler, eventOk);
} catch (NoSuchMethodException | SecurityException | IllegalArgumentException | IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
}
synchronized (eventCapture) {
eventCapture.wait(1000);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
assertEquals(1, eventCapture.size());
}
Aggregations