/// <summary> /// TODO: Update Comments /// /// </summary> /// <param name="packet" type="NETMF.OpenSource.XBee.Api.XBeeResponse"> /// <para> /// /// </para> /// </param> /// <returns> /// A bool value... /// </returns> public bool Accepted(XBeeResponse packet) { return packet is RemoteAtResponse || packet is Zigbee.RxResponse || packet is Zigbee.TxStatusResponse || packet is Zigbee.NodeIdentificationResponse; }
protected void OnAddressReceived(XBeeResponse response, bool finished) { if (response is RemoteAtResponse) { var atResponse = response as RemoteAtResponse; AddressLookup[atResponse.RemoteSerial] = atResponse.RemoteAddress; } else if (response is RxResponse) { var zigbeeResponse = response as RxResponse; AddressLookup[zigbeeResponse.SourceSerial] = zigbeeResponse.SourceAddress; } else if (response is TxStatusResponse && _currentRequest is Api.Zigbee.TxRequest) { var txRequest = _currentRequest as Api.Zigbee.TxRequest; var txResponse = response as TxStatusResponse; var dataDelivered = txResponse.DeliveryStatus == TxStatusResponse.DeliveryResult.Success; AddressLookup[txRequest.DestinationSerial] = dataDelivered ? txResponse.DestinationAddress : XBeeAddress16.Unknown; } else if (response is NodeIdentificationResponse) { var identPacket = response as NodeIdentificationResponse; AddressLookup[identPacket.Sender.SerialNumber] = identPacket.Sender.NetworkAddress; AddressLookup[identPacket.Remote.SerialNumber] = identPacket.Remote.NetworkAddress; } }
/// <summary> /// TODO: Update Comments /// /// </summary> /// <param name="packet" type="NETMF.OpenSource.XBee.Api.XBeeResponse"> /// <para> /// /// </para> /// </param> /// <returns> /// A bool value... /// </returns> public bool Accepted(XBeeResponse packet) { return(packet is RemoteAtResponse || packet is Zigbee.RxResponse || packet is Zigbee.TxStatusResponse || packet is Zigbee.NodeIdentificationResponse); }
/// <summary> /// TODO: Update Comments /// /// </summary> /// <param name="packet" type="NETMF.OpenSource.XBee.Api.XBeeResponse"> /// <para> /// /// </para> /// </param> /// <returns> /// A bool value... /// </returns> public override bool Accepted(XBeeResponse packet) { if (!base.Accepted(packet)) return false; var frameIdResponse = (XBeeFrameIdResponse)packet; var accepted = ExpectedPacketId == PacketIdGenerator.DefaultId || frameIdResponse.FrameId == ExpectedPacketId; _finished = accepted; return accepted; }
/// <summary> /// TODO: Update Comments /// /// </summary> /// <param name="packet" type="NETMF.OpenSource.XBee.Api.XBeeResponse"> /// <para> /// /// </para> /// </param> /// <returns> /// A bool value... /// </returns> public override bool Accepted(XBeeResponse packet) { if (!base.Accepted(packet)) return false; if (!(packet is AtResponse)) return false; var accepted = (packet as AtResponse).Command == _atCmd; _finished = accepted; return accepted; }
public bool SpoolMessage(MailMessage message, out string reply) { reply = null; string subject = message.Subject; if (String.IsNullOrEmpty(subject)) { reply = "Missing subject"; return(false); } string[] parts = subject.Split('|'); if (parts.Length == 0) { reply = "Missing command arguments seperator"; return(false); } if (parts[0] == "NI") { using (XBee xbee = new XBee("COM4", ApiType.Enabled)) { xbee.Open(); XBeeResponse res = xbee.Execute(new NodeIdentifierCommand()); if (res == null) { reply = "Could not execute NI command"; return(false); } AtCommandResponse atr = res as AtCommandResponse; if (atr != null) { NodeIdentifier ni = NodeIdentifier.Parse(atr); if (ni != null) { reply = "XBee module response: " + ni.GetType() + " = " + ni.Identifier; return(false); } } } } return(true); }
static void xbee_OnPacketReceived(object sender, FrameReceivedEventArgs e) { XBeeResponse response = e.Response; if (response != null) { Console.WriteLine(response.ToString() + "\r\n=============================="); } AtCommandResponse res = response as AtCommandResponse; if (res != null) { //if (res.ParseValue() is ZNetNodeDiscover) //{ // ZNetNodeDiscover nd = res.ParseValue() as ZNetNodeDiscover; // if (nd.NodeIdentifier == "SENSOR") // { // (sender as XBee).Execute(new RemoteAtRequest(nd.SerialNumber, nd.ShortAddress, new ForceSample())); // //sender.SendCommand(new AtRemoteCommand(nd.SerialNumber, nd.ShortAddress, new XBeeSensorSample())); // } // else // { // ZNetTxRequest x = new ZNetTxRequest(nd.SerialNumber, nd.ShortAddress, Encoding.ASCII.GetBytes(DateTime.Now.ToLongTimeString())); // (sender as XBee).Execute(x); // } //} return; } RemoteAtResponse res2 = response as RemoteAtResponse; if (res2 != null) { //if (res2.ParseValue() is ForceSampleData) //{ // ForceSampleData d = res2.ParseValue() as ForceSampleData; // double mVanalog = (((float)d.AD2) / 1023.0) * 1200.0; // double temp_C = (mVanalog - 500.0) / 10.0 - 4.0; // double lux = (((float)d.AD1) / 1023.0) * 1200.0; // mVanalog = (((float)d.AD3) / 1023.0) * 1200.0; // double hum = ((mVanalog * (108.2 / 33.2)) - 0.16) / (5 * 0.0062 * 1000.0); // temperature = temp_C; //} } }
protected DiscoverResult GetDiscoverResponse(XBeeResponse response) { var discoverResponse = Config.IsSeries1() ? (DiscoverResult)Api.Wpan.DiscoverResult.Parse(response) : Api.Zigbee.DiscoverResult.Parse(response); if (_addressLookupEnabled) { var nodeInfo = discoverResponse.NodeInfo; AddressLookup[nodeInfo.SerialNumber] = nodeInfo.NetworkAddress; } return(discoverResponse); }
/// <summary> /// TODO: Update Comments /// /// </summary> /// <param name="packet" type="NETMF.OpenSource.XBee.Api.XBeeResponse"> /// <para> /// /// </para> /// </param> /// <returns> /// A bool value... /// </returns> public override bool Accepted(XBeeResponse packet) { if (!base.Accepted(packet)) { return(false); } var frameIdResponse = (XBeeFrameIdResponse)packet; var accepted = ExpectedPacketId == PacketIdGenerator.DefaultId || frameIdResponse.FrameId == ExpectedPacketId; _finished = accepted; return(accepted); }
/// <summary> /// TODO: Update Comments /// /// </summary> /// <param name="packet" type="NETMF.OpenSource.XBee.Api.XBeeResponse"> /// <para> /// /// </para> /// </param> /// <returns> /// A bool value... /// </returns> public override bool Accepted(XBeeResponse packet) { if (!base.Accepted(packet)) { return(false); } if (!(packet is AtResponse)) { return(false); } var accepted = (packet as AtResponse).Command == _atCmd; _finished = accepted; return(accepted); }
public override bool Accepted(XBeeResponse packet) { if (!base.Accepted(packet)) return false; var atResponse = (AtResponse)packet; // empty response is received in series 1 modules // in series 2 the timeout determines the end of discovery if (atResponse.Value == null || atResponse.Value.Length == 0) { _finished = true; return false; } return true; }
public override bool Accepted(XBeeResponse packet) { if (!base.Accepted(packet)) { return(false); } var atResponse = (AtResponse)packet; // empty response is received in series 1 modules // in series 2 the timeout determines the end of discovery if (atResponse.Value == null || atResponse.Value.Length == 0) { _finished = true; return(false); } return(true); }
protected void OnDataReceived(XBeeResponse response, bool finished) { if (response is Api.Wpan.RxResponse) { var rxResponse = response as Api.Wpan.RxResponse; NotifyDataReceived(rxResponse.Payload, rxResponse.Source); } else if (response is RxResponse) { if (response is ExplicitRxResponse) { var profileId = (response as ExplicitRxResponse).ProfileId; var clusterId = (response as ExplicitRxResponse).ClusterId; // if module AtCmd.ApiOptions has been set to value other than default (0) // received API frames will be transported using explicit frames // those frames have profile id set to Zigbee.ProfileId.Digi if (profileId != (ushort)ProfileId.Digi) { return; } // cluster id will be set to ApiId value switch ((ApiId)clusterId) { case ApiId.TxRequest16: case ApiId.TxRequest64: case ApiId.ZnetTxRequest: case ApiId.ZnetExplicitTxRequest: break; default: return; } } var rxResponse = response as RxResponse; NotifyDataReceived(rxResponse.Payload, rxResponse.SourceSerial); } }
private void ProcessMessage(XBeeResponse msg) { try { if (msg.getApiId() == XBee.ZB_RX_RESPONSE) { ZBRxResponse response = new ZBRxResponse(); msg.getZBRxResponse(response); byte[] body = response.getData(); string topic = ""; string payload = ""; SReceivePacket pkt = null; switch ((EMessageType)body[0]) { case EMessageType.TankWatererStats: pkt = new STankWatererStats(body); topic = $"/tele/TankWaterer/{response.getRemoteAddress64().get().ToString("X16")}/info"; break; case EMessageType.TankWatererManual: pkt = new STankWatererValve(body); topic = $"/tele/TankWaterer/{response.getRemoteAddress64().get().ToString("X16")}/manual"; break; case EMessageType.TankWatererParameters: pkt = new STankWatererParameters(body); topic = $"/tele/TankWaterer/{response.getRemoteAddress64().get().ToString("X16")}/parameters"; break; case EMessageType.PotPlantStats: pkt = new SPotPlantStats(body); topic = $"/tele/PotPlant/{response.getRemoteAddress64().get().ToString("X16")}/info"; break; case EMessageType.RainGaugeStats: pkt = new SRainGaugeStats(body); topic = $"/tele/RainGauge/{response.getRemoteAddress64().get().ToString("X16")}/info"; break; } payload = JsonConvert.SerializeObject(pkt); Log(topic + " " + payload); mqttClient.Publish(topic, Encoding.ASCII.GetBytes(payload)); } else if (msg.getApiId() == XBee.ZB_TX_STATUS_RESPONSE) { ZBTxStatusResponse response = new ZBTxStatusResponse(); msg.getZBTxStatusResponse(response); Log("TxResponse " + (response.isSuccess() ? "OK" : $"Error: {response.getErrorCode()}")); } else { Log($"Got Packet ApiId={msg.getApiId()}"); } } catch (Exception ex) { Log("Unhandled exception while processing message: " + ex.ToString()); } }
static void xbee_OnPacketReceived(object sender, FrameReceivedEventArgs e) { XBeeResponse response = e.Response; Debug.Print(response.ToString()); }
public static DiscoverResult Parse(XBeeResponse response) { return(Parse(response as AtResponse)); }
public static DiscoverResult Parse(XBeeResponse response) { return Parse(response as AtResponse); }
protected void OnModemStatusReceived(XBeeResponse response, bool finished) { var statusResponse = (ModemStatusResponse)response; NotifyStatusChanged(statusResponse.Status); }
/// <summary> /// TODO: Update Comments /// /// </summary> /// <param name="packet" type="NETMF.OpenSource.XBee.Api.XBeeResponse"> /// <para> /// /// </para> /// </param> /// <returns> /// A bool value... /// </returns> public bool Accepted(XBeeResponse packet) { return packet is Wpan.RxResponse || packet is Zigbee.RxResponse; }
/// <summary> /// TODO: Update Comments /// /// </summary> /// <param name="packet" type="NETMF.OpenSource.XBee.Api.XBeeResponse"> /// <para> /// /// </para> /// </param> /// <returns> /// A bool value... /// </returns> public bool Accepted(XBeeResponse packet) { return(packet is Wpan.RxResponse || packet is Zigbee.RxResponse); }
private void CheckFrame() { if (_readBuffer.Count < 4) // we don't have the start byte, the length and the checksum { return; } if (_readBuffer[0] != XBeePacket.PACKET_STARTBYTE) { return; } ByteReader br = new ByteReader(_readBuffer.ToArray(), ByteOrder.BigEndian); br.ReadByte(); // start byte short length = br.ReadInt16(); if (br.AvailableBytes < length + 1) // the frame data and checksum { return; } // verify checksum XBeeChecksum checksum = new XBeeChecksum(); byte[] bytes = new byte[length + 1]; Array.Copy(_readBuffer.ToArray(), 3, bytes, 0, length + 1); checksum.AddBytes(bytes); if (!checksum.Verify()) { //TODO: ERRO no quadro. Limpar os recursos e retornar função return; } XBeeApiType apiId = (XBeeApiType)br.Peek(); XBeeResponse res = null; //TODO: implementar a descoberta de dispositivos switch (apiId) { case XBeeApiType.ATCommandResponse: res = new AtCommandResponse(length, br); if (res.Command == "ND") { byte[] dados = res.Value; } break; case XBeeApiType.NodeIdentificationIndicator: res = new NodeIdentification(length, br); break; case XBeeApiType.ZigBeeReceivePacket: res = new ZigbeeReceivePacket(length, br); break; case XBeeApiType.XBeeSensorReadIndicator: res = new XBeeSensorRead(length, br); break; case XBeeApiType.RemoteCommandResponse: res = new AtRemoteCommandResponse(length, br); if (res.Command == "IS") { XBee.XBee newDev; if (devices.TryGetValue(res.Address64, out newDev)) { devices[res.Address64].SetIOStatus(res.Value); } else { newDev = new XBee.XBee(res.Address64, res.Address16); devices.Add(res.Address64, newDev); devices[res.Address64].SetIOStatus(res.Value); //repetido } } break; case XBeeApiType.ZigBeeIODataSampleRxIndicator: res = new ZigBeeIODataSample(length, br); break; case XBeeApiType.APIIOSupportReceivePacket64bits: res = new APIIOSupportReceivePacket64bits(length, br); devices[res.Address64].SetIOStatus(res.Value); break; default: //TODO: tratar erro na leitura do pacote break; } if (res != null) { objAtual = res.ToString(); DataReceived(res.ToString()); } _readBuffer.RemoveRange(0, length + 1 + 2 + 1); }