/// <summary>
        /// The data received.
        /// </summary>
        /// <param name="sender">
        /// The sender.
        /// </param>
        /// <param name="e">
        /// The e.
        /// </param>
        private void OnDataReceived(object sender, EventArgs e)
        {
            // remove the first two bytes from the read data.
            var packet = new HidPacket(this.Port.ReadAllBytes());

            // Notify all Subsystems.
            this.NotifyParsers(packet);

            // notify any raw data listeners.
            this.OnReceived(packet);
        }
Example #2
0
        /// <summary>
        /// The handle packet.
        /// </summary>
        /// <param name="raw">
        /// The raw.
        /// </param>
        protected override void HandlePacket(IEnumerable <byte> raw)
        {
            var data   = raw.ToList();
            var length = data[1];

            if (data.Count < 3)
            {
                return;
            }

            var converted = data.Skip(2).Take(length).ToArray();

            // skip the first byte as it is our flag byte.
            switch (data[0].ToEnum <RemoteMessageTypes>())
            {
            case RemoteMessageTypes.Server:
                this.Messages.RaiseEventClass(this, Encoding.ASCII.GetString(converted));
                break;

            case RemoteMessageTypes.ClientHid:
                var packet = new HidPacket(converted);
                this.NotifyParsers(packet);

                // notify any raw data listeners.
                this.OnReceived(packet);
                break;

            case RemoteMessageTypes.ClientGetFeature:
            case RemoteMessageTypes.ClientSetFeature:
                this.feature = converted;
                break;

            case RemoteMessageTypes.ClientGetReport:
            case RemoteMessageTypes.ClientSetReport:
                this.report = converted;
                break;
            }
        }