public void XbeeEventReceived(IXBeeEvent xbeeEvent) { if (xbeeEvent is XBeeReceivePacketExplicitEvent rxMessage) { ZigBeeApsFrame apsFrame = new ZigBeeApsFrame { Cluster = (ushort)rxMessage.GetClusterId(), DestinationEndpoint = (byte)rxMessage.GetDestinationEndpoint(), Profile = (ushort)rxMessage.GetProfileId(), SourceEndpoint = (byte)rxMessage.GetSourceEndpoint(), SourceAddress = (ushort)rxMessage.GetNetworkAddress(), Payload = rxMessage.GetData().Select(item => (byte)item).ToArray() }; _zigBeeTransportReceive.ReceiveCommand(apsFrame); return; } // Handle dongle status messages if (xbeeEvent is XBeeModemStatusEvent modemStatus) { ModemStatus modemCurrentStatus = modemStatus.GetStatus(); switch (modemCurrentStatus) { case ModemStatus.COORDINATOR_STARTED: { _coordinatorStarted = true; SetNetworkState(ZigBeeTransportState.ONLINE); } break; case ModemStatus.DISASSOCIATED: { SetNetworkState(ZigBeeTransportState.OFFLINE); } break; case ModemStatus.HARDWARE_RESET: case ModemStatus.JOINED_NETWORK: case ModemStatus.NETWORK_SECURITY_KEY_UPDATED: case ModemStatus.WATCHDOG_TIMER_RESET: break; default: break; } return; } Log.Debug($"Unhandled XBee Frame: {xbeeEvent.ToString()}"); }
public void TestBootloaderEvent() { int[] data = GetPacketData("00 16 A0 00 13 A2 00 41 62 F6 1A 00 00 01 40 00 00 00 00 00 00 00 FF FF B8"); IXBeeEvent frame = XBeeEventFactory.GetXBeeFrame(data); Assert.True(frame is XBeeOtaFirmwareUpdateStatusEvent); _output.WriteLine(frame.ToString()); XBeeOtaFirmwareUpdateStatusEvent xbeeEvent = (XBeeOtaFirmwareUpdateStatusEvent)frame; Assert.Equal(0, xbeeEvent.GetBlockNumber()); Assert.Equal(new IeeeAddress(BigInteger.Parse("0013A2004162F61A", System.Globalization.NumberStyles.HexNumber)), xbeeEvent.GetIeeeAddress()); Assert.Equal(0, xbeeEvent.GetNetworkAddress()); }
public void TestGetEvent() { int[] data = GetPacketData("00 1A 91 00 17 88 01 02 13 65 36 F7 7B 02 01 00 01 01 04 41 18 7C 01 21 00 00 20 C8 C4"); IXBeeEvent frame = XBeeEventFactory.GetXBeeFrame(data); Assert.True(frame is XBeeReceivePacketExplicitEvent); _output.WriteLine(frame.ToString()); XBeeReceivePacketExplicitEvent xbeeEvent = (XBeeReceivePacketExplicitEvent)frame; Assert.Equal(1, xbeeEvent.GetClusterId()); Assert.Equal(1, xbeeEvent.GetDestinationEndpoint()); Assert.Equal(63355, xbeeEvent.GetNetworkAddress()); Assert.Equal(0x104, xbeeEvent.GetProfileId()); }
/// <summary> /// Notify any event listeners when we receive an event. /// </summary> /// <param name="xBeeEvent">the <see cref="IXBeeEvent"/> received.</param> private void NotifyEventReceived(IXBeeEvent xBeeEvent) { Log.Debug($"RX XBEE: {xBeeEvent.ToString()}"); lock (_eventListeners) { foreach (IXBeeEventListener listener in _eventListeners) { try { listener.XbeeEventReceived(xBeeEvent); } catch (Exception e) { Log.Debug($"Exception processing XBee frame: {xBeeEvent}: ", e); } } } }