public void cms50_OnPacketProcessed(object sender, PacketProcessedEventArgs status) { if (this.IsHandleCreated) { CMS50Packet lastPacket = (CMS50Packet)status.HRMPacket; this.BeginInvoke(new MethodInvoker(delegate() { this.SuspendLayout(); tbHeartRate.Text = lastPacket.HeartRate.ToString(); tbHeartbeatCount.Text = cms50.HeartBeats.ToString(); tbBeat.Text = lastPacket.Beep.ToString(); tbSpO2.Text = lastPacket.SpO2.ToString(); tbSpO2Drop.Text = lastPacket.SpO2Drop.ToString(); tbWaveform.Text = lastPacket.Waveform.ToString(); tbBarGraph.Text = lastPacket.BarGraph.ToString(); if (lastPacket.SignalStrength > pbStrength.Maximum) { pbStrength.Maximum = lastPacket.SignalStrength; } pbStrength.Value = lastPacket.SignalStrength; string strStatus = "OK"; bool flgStatus = false; if (lastPacket.ProbeError) { strStatus = "Probe error"; flgStatus = true; } if (lastPacket.Searching) { if (flgStatus) { strStatus += " - Searching"; } else { strStatus = "Searching"; } flgStatus = true; } if (lastPacket.SearchingTooLong) { if (flgStatus) { strStatus += " - Searching too long"; } else { strStatus = "Searching too long"; } flgStatus = true; } tbStatus.Text = strStatus; this.ResumeLayout(); })); } }
private void ProcessorOnPacketProcessed(object sender, PacketProcessedEventArgs e) { var payload = e.ClientPacket.Payload; //Logger.Debug("Received packet"); Logger.Debug($"Received packet:\n" + $"\t{"Id",-9}: {payload.Opcode} ({(int)payload.Opcode})\n" + $"\t{"Length",-9}: {payload.Length}\n" + $"\t{"Packet type",-9}: {payload.PacketType} \n" + $"\t{"Hex dump",-9}:\n" + $"{HexUtils.HexDump(payload.Payload)}"); }
// HRM event handler private void hrm_PacketProcessed(object sender, PacketProcessedEventArgs e) { signalGenerator.BPM = (int)e.HRMPacket.HeartRate; alarm.BPM = (int)e.HRMPacket.HeartRate; if (logger != null && logger.Running) { logger.Log(e.HRMPacket); } if (PacketProcessed != null) { PacketProcessed(this, new HRMStatus(bundle.Device, e.HRMPacket)); } }
public void btHrp_OnPacketProcessed(object sender, PacketProcessedEventArgs status) { if (this.IsHandleCreated) { BtHrpPacket lastPacket = (BtHrpPacket)status.HRMPacket; this.BeginInvoke(new MethodInvoker(delegate() { this.SuspendLayout(); tbHeartRate.Text = lastPacket.HeartRate.ToString(); this.ResumeLayout(); })); } }
public void bundle_OnPacketProcessed(object sender, PacketProcessedEventArgs status) { if (this.IsHandleCreated) { ZephyrPacket lastPacket = (ZephyrPacket)status.HRMPacket; this.BeginInvoke(new MethodInvoker(delegate() { this.SuspendLayout(); pbBattery.Value = Convert.ToInt32(zephyrHxM.SmoothedBatteryLevel); if (zephyrHxM.TotalPackets != 0) { pbIntegrity.Value = 100 - Convert.ToInt32(zephyrHxM.CorruptedPackets / zephyrHxM.TotalPackets) * 100; } else { pbIntegrity.Value = 0; } tbDeviceId.Text = lastPacket.hardwareId.ToString() + " - " + lastPacket.firmwareId.ToString(); tbHeartRate.Text = lastPacket.heartRate.ToString(); tbHeartbeatCount.Text = lastPacket.heartBeatNumber.ToString(); tbRR1.Text = lastPacket.rrIntervals[0].ToString(); tbRR2.Text = lastPacket.rrIntervals[1].ToString(); tbRR3.Text = lastPacket.rrIntervals[2].ToString(); tbRR4.Text = lastPacket.rrIntervals[3].ToString(); tbRR5.Text = lastPacket.rrIntervals[4].ToString(); tbRR6.Text = lastPacket.rrIntervals[5].ToString(); tbRR7.Text = lastPacket.rrIntervals[6].ToString(); tbRR8.Text = lastPacket.rrIntervals[7].ToString(); tbRR9.Text = lastPacket.rrIntervals[8].ToString(); tbRR10.Text = lastPacket.rrIntervals[9].ToString(); tbRR11.Text = lastPacket.rrIntervals[10].ToString(); tbRR12.Text = lastPacket.rrIntervals[11].ToString(); tbRR13.Text = lastPacket.rrIntervals[12].ToString(); tbRR14.Text = lastPacket.rrIntervals[13].ToString(); this.ResumeLayout(); })); } }
private void OnPacketProcessed(object sender, PacketProcessedEventArgs e) { var packet = e.ClientPacket.Payload; switch (packet.Opcode) { case Opcode.KeepAlive: break; case Opcode.ReqHash: { // 0 = HashField 0 // 4 = HashField 1 // 8 = HashField 2 // 12 = HashField 3 int hashField0 = packet.ReadInt(); int hashField1 = packet.ReadInt(); int hashField2 = packet.ReadInt(); int hashField3 = packet.ReadInt(); var rspPacket = new ServerPacket(Opcode.ReqHash + 1); rspPacket.WriteInt(0); rspPacket.WriteStringUnicode("Yo /0"); Send(rspPacket); } break; case Opcode.ReqErrorReportServerAddress: { var rspPacket = new ServerPacket(Opcode.ReqErrorReportServerAddress + 1); rspPacket.WriteStringUnicode("127.0.0.1"); rspPacket.WriteByte(0); rspPacket.WriteInt(55999); Send(rspPacket); } break; case Opcode.ReqClientChallenge: { var rspPacket = new ServerPacket(Opcode.ReqClientChallenge + 1); rspPacket.WriteStringUnicode("New key 0/"); rspPacket.WriteInt(10381); Send(rspPacket); } break; case Opcode.ReqClientChecksum: { var rspPacket = new ServerPacket(Opcode.ReqClientChecksum + 1); //byte[] buffer1 = new byte[66]; //Buffer.BlockCopy(packet.PayloadBody,0, buffer1, 0, 66); //byte[] version = BitConverter.GetBytes(400000.0); //Array.Reverse(version); rspPacket.WriteInt(0); //rspPacket.WriteBuffer(buffer1); //rspPacket.WriteBuffer(version); Send(rspPacket); } break; case Opcode.ReqLoginWithGlobal: { var rspPacket = new ServerPacket(Opcode.ReqLoginWithGlobal + 1); rspPacket.WriteInt(0); Send(rspPacket); } break; case Opcode.ReqLoginHouseTest: { var rspPacket = new ServerPacket(Opcode.ReqLoginHouseTest + 1); var d = new DateTime(); rspPacket.WriteByte(0); rspPacket.WriteStringUnicode("dekxze"); rspPacket.WriteByte(0); rspPacket.WriteInt((int)d.Ticks); rspPacket.WriteInt(0); rspPacket.WriteInt(0); rspPacket.WriteInt(0); rspPacket.WriteInt(0); rspPacket.WriteInt(0); rspPacket.WriteByte(1); rspPacket.WriteStringUnicode("Yooooo"); rspPacket.WriteByte(0); rspPacket.WriteStringUnicode(d.ToString()); rspPacket.WriteByte(1); rspPacket.WriteDouble(0); Send(rspPacket); } break; case Opcode.ReqCharInfo: { var rspPacket = new ServerPacket(Opcode.ReqCharInfo + 1); rspPacket.WriteInt(0); rspPacket.WriteStringUnicode("delxze"); rspPacket.WriteByte(0); rspPacket.WriteInt(10); rspPacket.WriteInt(100); rspPacket.WriteStringUnicode("DX"); rspPacket.WriteByte(0); Send(rspPacket); } break; /*case Opcode.ReqServerList: * { * var rspPacket = new ServerPacket(Opcode.ReqServerList + 1); //response is 14 * rspPacket.WriteEmpty(140, 0x01); * rspPacket.WriteStringUnicode("delxze"); // servername; * rspPacket.WriteByte(0); * rspPacket.WriteStringUnicode("dx"); //server short name * rspPacket.WriteByte(0); * rspPacket.WriteStringUnicode("127.0.0.1"); // server ip * rspPacket.WriteByte(0); * rspPacket.WriteInt(55999); // serverport * rspPacket.WriteStringUnicode("ChannelName"); // channelname * rspPacket.WriteByte(0); * rspPacket.WriteStringUnicode("CN"); // channelnickname * rspPacket.WriteByte(0); * rspPacket.WriteInt(1); // channelnum * rspPacket.WriteInt(10); // max user * rspPacket.WriteInt(0); // curr user * rspPacket.WriteStringUnicode("Group name"); // group name * rspPacket.WriteByte(0); * rspPacket.WriteInt(0); // group id * rspPacket.WriteInt(0); // group disp order * rspPacket.WriteInt(0);// dataport * rspPacket.WriteByte(0); // count * rspPacket.WriteByte(0); // key * rspPacket.WriteByte(0); // value * rspPacket.WriteByte(0); // count * rspPacket.WriteByte(0); // Key_int * rspPacket.WriteInt(0); //Value int * rspPacket.WriteByte(0); // count float; * rspPacket.WriteByte(0); // key float; * rspPacket.WriteInt(0); // value float; * rspPacket.WriteByte(0); //clan channel; * rspPacket.WriteByte(0); // is dedi * Send(rspPacket); * } * break; * */ } ; }
private void OnPacketProcessed(object sender, PacketProcessedEventArgs e) { }
private void ProcessPackets() { #if DEBUG logger.Debug("Processing packets"); #endif // Smoothed values computation if (heartRateSmoothing[0] == null) { for (int i = 0; i < heartRateSmoothing.Length; i++) { heartRateSmoothing[i] = lastPacket.heartRate; } SmoothedHeartRate = lastPacket.heartRate; } else { byte?[] shiftedArray = new byte?[heartRateSmoothing.Length]; Array.Copy(heartRateSmoothing, 0, shiftedArray, 1, heartRateSmoothing.Length - 1); heartRateSmoothing = shiftedArray; heartRateSmoothing[0] = lastPacket.heartRate; double d = 0; for (int i = 0; i < heartRateSmoothing.Length; i++) { d += heartRateSmoothing[i] ?? 0; } SmoothedHeartRate = d / heartRateSmoothing.Length; } if (batteryLevelSmoothing[0] == null) { for (int i = 0; i < batteryLevelSmoothing.Length; i++) { batteryLevelSmoothing[i] = lastPacket.batteryChargeIndicator; } SmoothedBatteryLevel = lastPacket.batteryChargeIndicator; } else { byte?[] shiftedArray = new byte?[batteryLevelSmoothing.Length]; Array.Copy(batteryLevelSmoothing, 0, shiftedArray, 1, batteryLevelSmoothing.Length - 1); batteryLevelSmoothing = shiftedArray; batteryLevelSmoothing[0] = lastPacket.batteryChargeIndicator; double d = 0; for (int i = 0; i < batteryLevelSmoothing.Length; i++) { d += batteryLevelSmoothing[i] ?? 0; } SmoothedBatteryLevel = d / batteryLevelSmoothing.Length; } // Computation across multiple packets if (MinHeartRate == null && lastPacket.heartRate > 30) { MinHeartRate = lastPacket.heartRate; } else if (lastPacket.heartRate < MinHeartRate && lastPacket.heartRate > 30) { MinHeartRate = lastPacket.heartRate; } if (MaxHeartRate == null && lastPacket.heartRate < 240) { MaxHeartRate = lastPacket.heartRate; } else if (lastPacket.heartRate > MaxHeartRate && lastPacket.heartRate < 240) { MaxHeartRate = lastPacket.heartRate; } if (secondLastPacket == null) { HeartBeats = 1; return; } int newHeartBeats; if (lastPacket.heartBeatNumber == 0 && secondLastPacket.heartBeatNumber == 0) { newHeartBeats = 0; } else if (lastPacket.heartBeatNumber > secondLastPacket.heartBeatNumber) { newHeartBeats = lastPacket.heartBeatNumber - secondLastPacket.heartBeatNumber; } else { newHeartBeats = ZephyrPacket.MaxHeartBeatNumber - secondLastPacket.heartBeatNumber + lastPacket.heartBeatNumber; } HeartBeats += newHeartBeats; NewRRIntervals = new List <int>(); if (newHeartBeats == 1) { int rrInterval; if (lastPacket.hearBeatTimestamps[0] > lastPacket.hearBeatTimestamps[1]) { rrInterval = lastPacket.hearBeatTimestamps[0] - lastPacket.hearBeatTimestamps[1]; } else { rrInterval = ZephyrPacket.MaxTimestamp - lastPacket.hearBeatTimestamps[1] + lastPacket.hearBeatTimestamps[0]; } NewRRIntervals.Add(rrInterval); } else if (newHeartBeats > 1) { int min = Math.Min(newHeartBeats, lastPacket.hearBeatTimestamps.Length - 1); for (int i = 0; i < min; i++) { int rrInterval; if (lastPacket.hearBeatTimestamps[i] > lastPacket.hearBeatTimestamps[i + 1]) { rrInterval = lastPacket.hearBeatTimestamps[i] - lastPacket.hearBeatTimestamps[i + 1]; } else { rrInterval = ZephyrPacket.MaxTimestamp - lastPacket.hearBeatTimestamps[i + 1] + lastPacket.hearBeatTimestamps[i]; } NewRRIntervals.Add(rrInterval); } } lastReceivedDate = DateTime.Now; #if DEBUG logger.Debug("Firing PacketProcessed event, packet = " + LastPacket); #endif PacketProcessedEventArgs args = new PacketProcessedEventArgs(LastPacket); base.FirePacketProcessed(args); }
private void ProcessPackets() { #if DEBUG logger.Debug("Processing HRP packets"); #endif // Smoothed values computation if (heartRateSmoothing[0] == null) { for (int i = 0; i < heartRateSmoothing.Length; i++) { heartRateSmoothing[i] = lastPacket.HeartRate; } SmoothedHeartRate = lastPacket.HeartRate; } else { int?[] shiftedArray = new int?[heartRateSmoothing.Length]; Array.Copy(heartRateSmoothing, 0, shiftedArray, 1, heartRateSmoothing.Length - 1); heartRateSmoothing = shiftedArray; heartRateSmoothing[0] = lastPacket.HeartRate; double d = 0; for (int i = 0; i < heartRateSmoothing.Length; i++) { d += heartRateSmoothing[i] ?? 0; } SmoothedHeartRate = d / heartRateSmoothing.Length; } // Computation across multiple packets if (MinHeartRate == null && lastPacket.HeartRate > 30) { MinHeartRate = (byte)lastPacket.HeartRate; } else if (lastPacket.HeartRate < MinHeartRate && lastPacket.HeartRate > 30) { MinHeartRate = (byte)lastPacket.HeartRate; } if (MaxHeartRate == null && lastPacket.HeartRate < 240) { MaxHeartRate = (byte)lastPacket.HeartRate; } else if (lastPacket.HeartRate > MaxHeartRate && lastPacket.HeartRate < 240) { MaxHeartRate = (byte)lastPacket.HeartRate; } if (secondLastPacket == null) { HeartBeats = 1; return; } ++HeartBeats; lastReceivedDate = DateTime.Now; #if DEBUG logger.Debug("Firing PacketProcessed event, packet = " + LastPacket); #endif PacketProcessedEventArgs args = new PacketProcessedEventArgs(LastPacket); base.FirePacketProcessed(args); }
private void ProcessPackets() { #if DEBUG logger.Debug("Processing packets"); #endif // Smoothed values computation if (heartRateSmoothing[0] == null) { for (int i = 0; i < heartRateSmoothing.Length; i++) { heartRateSmoothing[i] = lastPacket.PulseRate; } SmoothedHeartRate = lastPacket.PulseRate; } else { byte?[] shiftedArray = new byte?[heartRateSmoothing.Length]; Array.Copy(heartRateSmoothing, 0, shiftedArray, 1, heartRateSmoothing.Length - 1); heartRateSmoothing = shiftedArray; heartRateSmoothing[0] = lastPacket.PulseRate; double d = 0; for (int i = 0; i < heartRateSmoothing.Length; i++) { d += heartRateSmoothing[i] ?? 0; } SmoothedHeartRate = d / heartRateSmoothing.Length; } if (spO2Smoothing[0] == null) { for (int i = 0; i < spO2Smoothing.Length; i++) { spO2Smoothing[i] = lastPacket.SpO2; } SmoothedSpO2 = lastPacket.SpO2; } else { byte?[] shiftedArray = new byte?[spO2Smoothing.Length]; Array.Copy(spO2Smoothing, 0, shiftedArray, 1, spO2Smoothing.Length - 1); spO2Smoothing = shiftedArray; spO2Smoothing[0] = lastPacket.SpO2; double d = 0; for (int i = 0; i < spO2Smoothing.Length; i++) { d += spO2Smoothing[i] ?? 0; } SmoothedSpO2 = d / spO2Smoothing.Length; } // Computation across multiple packets if (MinHeartRate == null) { MinHeartRate = lastPacket.PulseRate; } else if (lastPacket.PulseRate < MinHeartRate) { MinHeartRate = lastPacket.PulseRate; } if (MaxHeartRate == null) { MaxHeartRate = lastPacket.PulseRate; } else if (lastPacket.PulseRate > MaxHeartRate) { MaxHeartRate = lastPacket.PulseRate; } if (MinSpO2 == null) { MinSpO2 = lastPacket.SpO2; } else if (lastPacket.SpO2 < MinSpO2) { MinSpO2 = lastPacket.SpO2; } if (MaxSpO2 == null) { MaxSpO2 = lastPacket.SpO2; } else if (lastPacket.SpO2 > MaxSpO2) { MaxSpO2 = lastPacket.SpO2; } if (secondLastPacket == null) { HeartBeats = 1; return; } if (lastPacket.Beep) { HeartBeats++; } lastReceivedDate = DateTime.Now; #if DEBUG logger.Debug($"Firing PacketProcessed event, packet = {LastPacket}"); #endif PacketProcessedEventArgs args = new PacketProcessedEventArgs(LastPacket); base.FirePacketProcessed(args); }
void timer_Elapsed(object sender, ElapsedEventArgs e) { lastPacket = new HRMEmulatorPacket(bpm); #if DEBUG logger.Debug($"Generated emulated packet = {lastPacket}"); #endif if (MinHeartRate == null) { MinHeartRate = (byte)bpm; } else { if (bpm < MinHeartRate) { MinHeartRate = (byte)bpm; } } if (MaxHeartRate == null) { MaxHeartRate = (byte)bpm; } else { if (bpm > MaxHeartRate) { MaxHeartRate = (byte)bpm; } } if (bpm >= 180) { maxSlope = 3; } else if (bpm >= 120) { maxSlope = 2; } else { maxSlope = 1; } int slopeVar = random.Next(-1, 2); slope += slopeVar; if (slope > maxSlope) { slope = maxSlope; } else if (slope < -maxSlope) { slope = -maxSlope; } bpm += slope; if (bpm > MAX_BPM) { bpm = MAX_BPM; slope = 0; } else if (bpm < MIN_BPM) { bpm = MIN_BPM; slope = 0; } TotalPackets++; heartBeats += bpm / 60D; HeartBeats = (int)heartBeats; #if DEBUG logger.Debug($"Firing PacketProcessed event, packet = ${lastPacket}"); #endif PacketProcessedEventArgs args2 = new PacketProcessedEventArgs(lastPacket); base.FirePacketProcessed(args2); }