Beispiel #1
0
        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();
                }));
            }
        }
Beispiel #2
0
        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)}");
        }
Beispiel #3
0
        // 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));
            }
        }
Beispiel #4
0
        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();
                }));
            }
        }
Beispiel #5
0
        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();
                }));
            }
        }
Beispiel #6
0
        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)
 {
 }
Beispiel #8
0
        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);
        }
Beispiel #9
0
        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);
        }
Beispiel #10
0
        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);
        }
Beispiel #11
0
        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);
        }