Example #1
0
        private void OnNewDataAvailable(byte[] frame)
        {
            ArrayList data = new ArrayList(frame);

            do
            {
                try
                {
                    SPPMessage msg = SPPMessage.DecodeMessage(data.OfType <byte>().ToArray());

                    MessageReceived?.Invoke(this, msg);

                    if (msg.TotalPacketSize >= data.Count)
                    {
                        break;
                    }
                    data.RemoveRange(0, msg.TotalPacketSize);
                }
                catch (InvalidDataException e)
                {
                    InvalidDataException?.Invoke(this, e);
                }
            } while (data.Count > 0);

            NewDataAvailable?.Invoke(this, frame);
        }