Ejemplo n.º 1
0
        public byte[] GetWrittenBuffer(PacketIds packetid)
        {
            Packet p = new Packet((uint)this.Index + 4);

            p.WriteHeader(packetid, this);
            return(p.GetWrittenBuffer());
        }
Ejemplo n.º 2
0
        private void AppendSample(ElectrodeFrame[] samples, int length)
        {
            float[,] vReData        = new float[length, samples[0].ComplexVoltageMatrix.Length];
            float[,] vImData        = new float[length, samples[0].ComplexVoltageMatrix.Length];
            float[,] cReData        = new float[length, samples[0].ComplexCurrentMatrix.Length];
            float[,] cImData        = new float[length, samples[0].ComplexCurrentMatrix.Length];
            ulong[,] saturationData = new ulong[length, 1];
            long[,] timestampData   = new long[length, 1];
            // Write packet id, kalpa clock only if exist => value != Uint64.MaxValue (default value)
            ulong[,] packetIdData   = samples[0].PacketId == UInt64.MaxValue ? null : new ulong[length, 1];
            ulong[,] kalpaClockData = samples[0].KalpaClock == UInt64.MaxValue ? null : new ulong[length, 1];

            for (var i = 0; i < length; i++)
            {
                ElectrodeFrame electrodeFrame = samples[i];
                for (int j = 0; j < electrodeFrame.ComplexVoltageMatrix.Length; j++)
                {
                    vReData[i, j] = electrodeFrame.ComplexVoltageMatrix[j].Re;
                    vImData[i, j] = electrodeFrame.ComplexVoltageMatrix[j].Im;
                }

                for (int j = 0; j < electrodeFrame.ComplexCurrentMatrix.Length; j++)
                {
                    cReData[i, j] = electrodeFrame.ComplexCurrentMatrix[j].Re;
                    cImData[i, j] = electrodeFrame.ComplexCurrentMatrix[j].Im;
                }

                saturationData[i, 0] = electrodeFrame.SaturationMask;
                timestampData[i, 0]  = electrodeFrame.timestamp;
                if (packetIdData != null)
                {
                    packetIdData[i, 0] = electrodeFrame.PacketId;
                }

                if (kalpaClockData != null)
                {
                    kalpaClockData[i, 0] = electrodeFrame.KalpaClock;
                }
            }
            VoltagesReal.AppendOrCreateDataset(vReData);
            VoltagesIm.AppendOrCreateDataset(vImData);
            CurrentsReal.AppendOrCreateDataset(cReData);
            CurrentsIm.AppendOrCreateDataset(cImData);
            Saturation.AppendOrCreateDataset(saturationData);
            Timestamps.AppendOrCreateDataset(timestampData);
            if (packetIdData != null)
            {
                PacketIds.AppendOrCreateDataset(packetIdData);
            }

            if (kalpaClockData != null)
            {
                KalpaClocks.AppendOrCreateDataset(kalpaClockData);
            }
        }
Ejemplo n.º 3
0
 public void Dispose()
 {
     try
     {
         if (!Disposed)
         {
             UnFiltered.Dispose();
             Filtered.Dispose();
             Timestamps.Dispose();
             PacketIds?.Dispose();
             EcgSamplesData.Dispose();
             EcgTaskWriter.Dispose();
             Hdf5.CloseGroup(GroupId);
             Disposed = true;
         }
     }
     catch (Exception e)
     {
         Logger.LogError($"Error during dispose of ECG: {e.Message}");
     }
 }
Ejemplo n.º 4
0
 public void Dispose()
 {
     try
     {
         if (!Disposed)
         {
             VoltagesReal.Dispose();
             VoltagesIm.Dispose();
             CurrentsReal?.Dispose();
             CurrentsIm.Dispose();
             Saturation.Dispose();
             Timestamps.Dispose();
             PacketIds?.Dispose();
             ElectrodeTaskWriter.Dispose();
             Hdf5.CloseGroup(GroupId);
             Disposed = true;
         }
     }
     catch (Exception e)
     {
         Logger.LogError($"Error during dispose of EIT: {e.Message}");
     }
 }
Ejemplo n.º 5
0
        //Write methods

        private void WriteHeader(PacketIds so, Packet p)
        {
            WriteShort((short)so);
            WriteShort(p.Index);
            WriteArray(p.GetWrittenBuffer());
        }
Ejemplo n.º 6
0
        public bool Equals(EITEntry other)
        {
            if (ReferenceEquals(null, other))
            {
                return(false);
            }

            if (ReferenceEquals(this, other))
            {
                return(true);
            }

            var equal = Configuration == other.Configuration &&
                        StartDateTime.EqualsUpToMilliseconds(other.StartDateTime) &&
                        EndDateTime.EqualsUpToMilliseconds(other.EndDateTime) &&

                        VoltagesReal.Rank == other.VoltagesReal.Rank &&
                        Enumerable.Range(0, VoltagesReal.Rank).All(dimension =>
                                                                   VoltagesReal.GetLength(dimension) == other.VoltagesReal.GetLength(dimension)) &&
                        VoltagesReal.Cast <float>().SequenceEqual(other.VoltagesReal.Cast <float>()) &&

                        VoltagesIm.Rank == other.VoltagesIm.Rank &&
                        Enumerable.Range(0, VoltagesIm.Rank).All(dimension =>
                                                                 VoltagesIm.GetLength(dimension) == other.VoltagesIm.GetLength(dimension)) &&
                        VoltagesIm.Cast <float>().SequenceEqual(other.VoltagesIm.Cast <float>()) &&

                        CurrentsReal.Rank == other.CurrentsReal.Rank &&
                        Enumerable.Range(0, VoltagesIm.Rank).All(dimension =>
                                                                 CurrentsReal.GetLength(dimension) == other.CurrentsReal.GetLength(dimension)) &&
                        CurrentsReal.Cast <float>().SequenceEqual(other.CurrentsReal.Cast <float>()) &&

                        CurrentsIm.Rank == other.CurrentsIm.Rank &&
                        Enumerable.Range(0, CurrentsIm.Rank).All(dimension =>
                                                                 CurrentsIm.GetLength(dimension) == other.CurrentsIm.GetLength(dimension)) &&
                        CurrentsIm.Cast <float>().SequenceEqual(other.CurrentsIm.Cast <float>()) &&

                        Saturation.Rank == other.Saturation.Rank &&
                        Enumerable.Range(0, Saturation.Rank).All(dimension =>
                                                                 Saturation.GetLength(dimension) == other.Saturation.GetLength(dimension)) &&
                        Saturation.Cast <ulong>().SequenceEqual(other.Saturation.Cast <ulong>()) &&


                        Timestamps.Rank == other.Timestamps.Rank &&
                        Enumerable.Range(0, Timestamps.Rank).All(dimension =>
                                                                 Timestamps.GetLength(dimension) == other.Timestamps.GetLength(dimension)) &&
                        Timestamps.Cast <long>().SequenceEqual(other.Timestamps.Cast <long>());

            if (PacketIds != null && other.PacketIds != null)
            {
                equal = equal && PacketIds.Rank == other.PacketIds.Rank &&
                        Enumerable.Range(0, PacketIds.Rank).All(dimension =>
                                                                PacketIds.GetLength(dimension) == other.PacketIds.GetLength(dimension)) &&
                        PacketIds.Cast <ulong>().SequenceEqual(other.PacketIds.Cast <ulong>());
            }
            if (KalpaClocks != null && other.KalpaClocks != null)
            {
                equal = equal && KalpaClocks.Rank == other.KalpaClocks.Rank &&
                        Enumerable.Range(0, KalpaClocks.Rank).All(dimension =>
                                                                  KalpaClocks.GetLength(dimension) == other.KalpaClocks.GetLength(dimension)) &&
                        KalpaClocks.Cast <ulong>().SequenceEqual(other.KalpaClocks.Cast <ulong>());
            }
            return(equal);
        }
Ejemplo n.º 7
0
        private void HandlePacket(Packet p)
        {
            int curByte = 0;
            int maxByte = p.Length;

            while (curByte < maxByte)
            {
                int    parsedLength = p.ReadShort((curByte + 2)) + 4;
                byte[] parsed       = new byte[parsedLength];

                // read bytes from buffer to parsed packets.
                for (int i = 0; i < parsed.Length; i++)
                {
                    parsed[i] = p.GetBuffer()[i + curByte];
                }

                // decrypt those bytes as a new real deal parsed packet
                Packet Parsed = Packet.Decrypt(new Packet(parsed), key);
                curByte += parsedLength;

                PacketIds PI = (PacketIds)Parsed.ReadShort();
                switch (PI)
                {
                    #region Login Recvs
                case PacketIds.Recv_GameLogin:
                    HandleRecvGameLogin(Parsed);
                    break;

                case PacketIds.Recv_ConnectWorld:
                    HandleRecvConnectWorld(Parsed);
                    break;

                    #endregion

                    #region World Recvs

                case PacketIds.RecvUnitLogin:
                    HandleRecvUnitLogin(Parsed);
                    break;

                case PacketIds.RecvCreateCharacter:
                    HandleRecvCreateCharacter(Parsed);
                    break;

                case PacketIds.RecvChannelRequest:
                    HandleRecvChannelRequest(Parsed);
                    break;

                    #endregion

                    #region Channel Recvs
                case PacketIds.RecvPing:
                    // needs check if too fast or so :I
                    break;

                case PacketIds.RecvChannelLogin:
                    HandleRecvChannelLogin(Parsed);
                    break;

                case PacketIds.RecvChannelChange:
                    HandleRecvChannelChange(Parsed);
                    break;

                case PacketIds.RecvChannelSomething:
                    HandleRecvChannelStuff(Parsed);
                    break;

                case PacketIds.RecvLoadMap:
                    HandleRecvMapRequest(Parsed);
                    break;

                case PacketIds.RecvRequestSkillList:
                    HandleRecvSkillRequest(Parsed);
                    break;

                case PacketIds.RecvRequestInventory:
                    HandleRecvInventoryRequest(Parsed);
                    break;

                case PacketIds.RecvMoveItem:
                    HandleRecvMoveItem(Parsed);
                    break;

                case PacketIds.RecvDropItem:
                    HandleRecvDropItem(Parsed);
                    break;

                case PacketIds.RecvPickItem:
                    HandleRecvPickItem(Parsed);
                    break;

                case PacketIds.RecvImbueItem:
                    HandleRecvImbueItem(Parsed);
                    break;

                case PacketIds.RecvAcceptImbueItem:
                    HandleRecvAcceptImbueItem(Parsed);
                    break;

                case PacketIds.RecvNpcTrade:
                    HandleRecvNpcTrade(Parsed);
                    break;

                case PacketIds.RecvBuyItem:
                    HandleRecvBuyItem(Parsed);
                    break;

                case PacketIds.RecvSomething:
                    Send(PacketManager.SendSomething());
                    break;

                case PacketIds.RecvRequestFriendList:
                    Send(PacketManager.SendFriendList());
                    break;

                case PacketIds.RecvRequestGuildList:
                    // AD GUILD LIST SEND
                    break;

                case PacketIds.RecvSomething2:
                    Send(PacketManager.SendSomething2());
                    break;

                case PacketIds.RecvStatRequest:
                    HandleRecvStatRequest(Parsed);
                    break;

                case PacketIds.RecvSpawnRequest:
                    HandleRecvSpawnRequest(Parsed);
                    break;

                case PacketIds.RecvSpawnPlayer:     // request for other player to spawn
                    HandleRecvSpawnOtherPlayerRequest(Parsed);
                    break;

                case PacketIds.RecvRequestStats:
                    HandleRecvRequestStats(Parsed);
                    break;

                case PacketIds.RecvAddStat:
                    HandleRecvAddStat(Parsed);
                    break;

                case PacketIds.RecvPlayerID:
                    HandleRecvSendPlayerIDRequest(Parsed);
                    break;

                case PacketIds.RecvStartMoving:
                    HandleRecvStartMoving(Parsed);
                    break;

                case PacketIds.RecvKeepMoving:
                    HandleRecvKeepMoving(Parsed);
                    break;

                case PacketIds.RecvStopMoving:
                    HandleRecvStopMoving(Parsed);
                    break;

                case PacketIds.RecvWalkToPortal:
                    HandleRecvWalkToPortal(Parsed);
                    break;

                case PacketIds.RecvChatMessage:
                    HandleRecvChatMessage(Parsed);
                    break;

                case PacketIds.RecvCommand:
                    HandleRecvCommand(Parsed);
                    break;

                    #endregion

                default:
                    HandleRecvUnknownPacket(Parsed);
                    break;     // needs logging system like "packet id received: " then whole buffer like in old one
                }
            }
        }
Ejemplo n.º 8
0
        private void AppendSample(ECGFrame[] samples, int length)
        {
            var sampleForSize = samples.First();

            double[,] unFilteredData = new double[length * sampleForSize.FrameData.First().Count, sampleForSize.FrameData.Count];
            double[,] filteredData   = new double[length * sampleForSize.FilteredFrameData.First().Count, sampleForSize.FilteredFrameData.Count];
            long[,] timestampData    = new long[length * sampleForSize.FilteredFrameData.First().Count, 1];
            ulong[,] packetIdData    = samples[0].PacketId == UInt64.MaxValue ? null : new ulong[length, 1];
            ulong[,] kalpaClockData  = samples[0].KalpaClock == UInt64.MaxValue ? null : new ulong[length, 1];

            for (var i = 0; i < length; i++)
            {
                var dataSample = samples[i];
                var rows       = dataSample.FrameData.First().Count;
                var columns    = dataSample.FrameData.Count;
                for (int rowIndex = 0; rowIndex < rows; rowIndex++)
                {
                    for (var columnIndex = 0; columnIndex < columns; columnIndex++)
                    {
                        unFilteredData[i * rows + rowIndex, columnIndex] = dataSample.FrameData[columnIndex][rowIndex];
                    }
                }

                rows    = dataSample.FilteredFrameData.First().Count;
                columns = dataSample.FilteredFrameData.Count;
                for (int rowIndex = 0; rowIndex < rows; rowIndex++)
                {
                    for (var columnIndex = 0; columnIndex < columns; columnIndex++)
                    {
                        filteredData[i * rows + rowIndex, columnIndex] = dataSample.FilteredFrameData[columnIndex][rowIndex];
                    }
                }

                int rowsTimestamps = dataSample.FilteredFrameData.First().Count;

                for (int k = 0; k < rowsTimestamps; k++)
                {
                    var date = dataSample.Timestamp;
                    if (SamplingRate > 0)
                    {
                        date = (long)(dataSample.Timestamp + k * 1000.0 / SamplingRate);
                    }
                    timestampData[i * rowsTimestamps + k, 0] = date;
                    EndDateTime = date;
                }
                if (packetIdData != null)
                {
                    packetIdData[i, 0] = dataSample.PacketId;
                }

                if (kalpaClockData != null)
                {
                    kalpaClockData[i, 0] = dataSample.KalpaClock;
                }
            }
            UnFiltered.AppendOrCreateDataset(unFilteredData);
            Filtered.AppendOrCreateDataset(filteredData);
            Timestamps.AppendOrCreateDataset(timestampData);
            if (packetIdData != null)
            {
                PacketIds.AppendOrCreateDataset(packetIdData);
            }
        }
Ejemplo n.º 9
0
 //Write methods
 private void WriteHeader(PacketIds so, Packet p)
 {
     WriteShort((short)so);
     WriteShort(p.Index);
     WriteArray(p.GetWrittenBuffer());
 }
Ejemplo n.º 10
0
 public byte[] GetWrittenBuffer(PacketIds packetid)
 {
     Packet p = new Packet((uint)this.Index + 4);
     p.WriteHeader(packetid, this);
     return p.GetWrittenBuffer();
 }