/// <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); }
/// <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; } }