protected void OnIncomingDataEvent(IncomingDataEventArgs IncomingDataEventArgs) { if (IncomingDataEvent == null) { return; } IncomingDataEvent(this, IncomingDataEventArgs); }
public void OnIncomingDataReceived(IncomingDataEventArgs e) { //Send it out to the real device if (_writers.ContainsKey(e.Endpoint)) { int transferred; _writers[e.Endpoint].Write(e.Data, 0, e.Data.Length, 5000, out transferred); } }
protected override bool __evt__IncomingData(IncomingDataEventArgs args) { switch (args.Command) { case "001": case "002": this.instance.IsWorking = true; break; } return(base.__evt__IncomingData(args)); }
private void IncomingData(object?sender, IncomingDataEventArgs e) { Task.Run(async() => { var context = new DataTransferContext(); string requestId = null; var obj = JsonHelper.FromJsonStringStrongTyped <object>(e.Data); LogEnvironment.LogDebugEvent($"Message-Type: {obj.GetType()}", LogSeverity.Report); if (obj is Request req) { obj = req.Payload; requestId = req.RequestId; if (!string.IsNullOrEmpty(req.Identity)) { context.Identity = JsonHelper.FromJsonStringStrongTyped <TransferIdentity>(req.Identity).ToIdentity(); } } else if (obj is Response rep) { obj = null; var ok = waitingOperations.TryRemove(rep.RequestId, out var wait); if (ok) { wait.ServerResponse.SetResult(rep.Payload); } else { throw new CommunicationException("The given operation is not open."); } } if (obj != null) { var evData = new ObjectReceivedEventArgs { Value = obj, Context = context }; OnObjectReceived(evData); if (!string.IsNullOrEmpty(requestId) && outgoing != null) { await WriteAsync(new Response { RequestId = requestId, Payload = evData.Result }); } else if (evData.Result != null) { await WriteAsync(evData.Result); } } }); }
private void NetworkScannerNewNetworkDataEvent(object sender, IncomingDataEventArgs <NetworkData> e) { if (e.Data == null || Cache == null || GpsControl == null) { return; } //Add data to the cache _networkData = e.Data; Cache.AddData(e.Data.ToArray(), GpsControl.GetCurrentGpsData()); //Fire scan complete event OnScanComplete(_networkData, GpsControl.GetCurrentGpsData()); }
private void _device_IncomingDataReceived(object sender, IncomingDataEventArgs e) { if (_accumulatedBytes.Count() < _bytesGoal) { _accumulatedBytes = _accumulatedBytes.Concat(e.Data); if (_accumulatedBytes.Count() >= _bytesGoal) { _isDone = true; } } else { _isDone = true; } }
private void NetworkScannerNewNetworkDataEvent(object sender, IncomingDataEventArgs<NetworkData> e) { if (e.Data == null || Cache == null || GpsControl == null) return; //Add data to the cache _networkData = e.Data; Cache.AddData(e.Data.ToArray(), GpsControl.GetCurrentGpsData()); //Fire scan complete event OnScanComplete(_networkData, GpsControl.GetCurrentGpsData()); }
private void NetworkScannerNewNetworkDataEvent(object sender, IncomingDataEventArgs<NetworkData> e) { //Add data to the cache Cache.AddData(e.Data.ToArray(), GpsControl.GetCurrentGpsData()); //Fire scan complete event OnScanComplete(e.Data.ToArray(), GpsControl.GetCurrentGpsData()); }
public void OnIncomingDataReceived(IncomingDataEventArgs e) { //This shouldn't ever happen... }
public override bool __evt__IncomingData(IncomingDataEventArgs args) { switch(args.Command) { case "001": case "002": this.instance.IsWorking = true; break; } return base.__evt__IncomingData(args); }
public NetworkGenericErrEventArgs(IncomingDataEventArgs info, int id) : base(info) { this.ErrorId = id; this.Error = info.Message; }
protected internal virtual bool __evt__IncomingData(IncomingDataEventArgs args) { if (this.IncomingData != null) this.IncomingData(this, args); return args.Processed; }
public NetworkJoinErrorEventArgs(IncomingDataEventArgs info, int et) : base(info) { switch (et) { case 473: this.Error = ErrorType.InviteOnly; break; case 474: this.Error = ErrorType.Banned; break; default: this.Error = ErrorType.Unknown; break; } }
public void OnIncomingDataReceived(IncomingDataEventArgs e) { if (_dataRemaining > 0) { //This is more write sector data _image.Write(e.Data, 0, e.Data.Length); _dataRemaining -= e.Data.Length; } else { //This is probably a mass storage command switch (e.Data[0x0F]) { case 0x00: //Test Unit Ready { //Just return success _SendMassStorageResponse(e.Data, null); break; } case 0x12: //Inquiry { //Send inquiry data var data = new byte[0x24]; data[0] = 0x00; data[1] = 0x00; data[3] = 0x01; data[4] = 0x1F; Array.Copy(ASCIIEncoding.ASCII.GetBytes(_vendorName), 0, data, 8, _vendorName.Length); Array.Copy(ASCIIEncoding.ASCII.GetBytes(_productName), 0, data, 16, _productName.Length); var revision = _revision.ToString("N2"); revision = revision.Substring(0, Math.Min(revision.Length, 4)); Array.Copy(ASCIIEncoding.ASCII.GetBytes(revision), 0, data, 32, revision.Length); _SendMassStorageResponse(e.Data, data); break; } case 0x1A: //Actually...I'm not sure what this is. { //Send response var data = new byte[8]; data[0] = 0x12; data[7] = 0x1C; _SendMassStorageResponse(e.Data, data); break; } case 0x1B: //Start/Stop Unit { //Just return success _SendMassStorageResponse(e.Data, null); break; } case 0x1E: //Prevent/Allow Medium Removal { //Just return success _SendMassStorageResponse(e.Data, null); break; } case 0x23: //Read Format Capacities { //Send response var data = new byte[12]; data[3] = 0x08; data[4] = (byte)(((_sectors - 1) >> 24) & 0xFF); data[5] = (byte)(((_sectors - 1) >> 16) & 0xFF); data[6] = (byte)(((_sectors - 1) >> 8) & 0xFF); data[7] = (byte)((_sectors - 1) & 0xFF); data[8] = 0x02; data[10] = 0x02; _SendMassStorageResponse(e.Data, data); break; } case 0x25: //Read Capacity { //Send response var data = new byte[8]; data[0] = (byte)(((_sectors - 1) >> 24) & 0xFF); data[1] = (byte)(((_sectors - 1) >> 16) & 0xFF); data[2] = (byte)(((_sectors - 1) >> 8) & 0xFF); data[3] = (byte)((_sectors - 1) & 0xFF); data[6] = 0x02; _SendMassStorageResponse(e.Data, data); break; } case 0x28: //Read Sector { ulong LBA = (ulong)(e.Data[0x0F + 3]) | (ulong)(((ulong)e.Data[0x0F + 2] << 8) * 0x10000); LBA += (ulong)((ulong)e.Data[0x0F + 5] | (ulong)((ulong)e.Data[0x0F + 4] << 8)); int sectors = (e.Data[0x0F + 8] & 0xFF) | (e.Data[0x0F + 7] << 8); var sectorData = new byte[sectors * 0x200]; Logger.WriteLine(String.Format("MSD: Read: LBA {0}, Sectors {1}", LBA.ToString("X08"), sectors), Logger.LoggingLevel.Verbose); //Send response _image.Seek((long)(LBA * 0x200), SeekOrigin.Begin); for (int i = 0; i < sectors; i++) _image.Read(sectorData, 0x200 * i, 0x200); _SendMassStorageResponse(e.Data, sectorData); break; } case 0x2A: //Write Sector { ulong LBA = (ulong)(e.Data[0x0F+3]) | (ulong)(((ulong)e.Data[0x0F+2] << 8) * 0x10000); LBA += (ulong)((ulong)e.Data[0x0F+5] | (ulong)((ulong)e.Data[0x0F+4] << 8)); int sectors = (e.Data[0x0F+8] & 0xFF) | (e.Data[0x0F+7] << 8); Logger.WriteLine(String.Format("MSD: Write: LBA {0}, Sectors {1}", LBA.ToString("X08"), sectors), Logger.LoggingLevel.Verbose); //Seek to the correct point and start writing data as we receive it _dataRemaining = sectors * 0x200; _image.Seek((long)(LBA * 0x200), SeekOrigin.Begin); _SendMassStorageResponse(e.Data, null); break; } case 0x5A: //Mode Sense { //The host isn't happy until I send this -- not sure what the deal is (I ripped this from a real drive) var data = new byte[8]; data[1] = 0x46; data[2] = 0x94; _SendMassStorageResponse(e.Data, data); break; } default: { Logger.WriteLine("MSD: Unknown: " + BitConverter.ToString(e.Data, 0, e.Data.Length), Logger.LoggingLevel.Verbose); break; } } } }
private void NetworkScannerNewNetworkDataEvent(object sender, IncomingDataEventArgs<NetworkData> e) { if (e.Data == null || Cache == null || GpsControl == null) return; try { //Add data to the cache Cache.AddData(e.Data.ToArray(), GpsControl.GetCurrentGpsData()); //Fire scan complete event OnScanComplete(e.Data.ToArray(), GpsControl.GetCurrentGpsData()); } catch (NullReferenceException) { // This can exception for some reason, not sure why. } }
public void OnIncomingDataReceived(IncomingDataEventArgs e) { Console.WriteLine("Data received: " + BitConverter.ToString(e.Data)); }
public void OnIncomingDataReceived(IncomingDataEventArgs e) { if (_dataRemaining > 0) { //This is more write sector data _image.Write(e.Data, 0, e.Data.Length); _dataRemaining -= e.Data.Length; } else { //This is probably a mass storage command switch (e.Data[0x0F]) { case 0x00: //Test Unit Ready { //Just return success _SendMassStorageResponse(e.Data, null); break; } case 0x12: //Inquiry { //Send inquiry data var data = new byte[0x24]; data[0] = 0x00; data[1] = 0x00; data[3] = 0x01; data[4] = 0x1F; Array.Copy(ASCIIEncoding.ASCII.GetBytes(_vendorName), 0, data, 8, _vendorName.Length); Array.Copy(ASCIIEncoding.ASCII.GetBytes(_productName), 0, data, 16, _productName.Length); var revision = _revision.ToString("N2"); revision = revision.Substring(0, Math.Min(revision.Length, 4)); Array.Copy(ASCIIEncoding.ASCII.GetBytes(revision), 0, data, 32, revision.Length); _SendMassStorageResponse(e.Data, data); break; } case 0x1A: //Actually...I'm not sure what this is. { //Send response var data = new byte[8]; data[0] = 0x12; data[7] = 0x1C; _SendMassStorageResponse(e.Data, data); break; } case 0x1B: //Start/Stop Unit { //Just return success _SendMassStorageResponse(e.Data, null); break; } case 0x1E: //Prevent/Allow Medium Removal { //Just return success _SendMassStorageResponse(e.Data, null); break; } case 0x23: //Read Format Capacities { //Send response var data = new byte[12]; data[3] = 0x08; data[4] = (byte)(((_sectors - 1) >> 24) & 0xFF); data[5] = (byte)(((_sectors - 1) >> 16) & 0xFF); data[6] = (byte)(((_sectors - 1) >> 8) & 0xFF); data[7] = (byte)((_sectors - 1) & 0xFF); data[8] = 0x02; data[10] = 0x02; _SendMassStorageResponse(e.Data, data); break; } case 0x25: //Read Capacity { //Send response var data = new byte[8]; data[0] = (byte)(((_sectors - 1) >> 24) & 0xFF); data[1] = (byte)(((_sectors - 1) >> 16) & 0xFF); data[2] = (byte)(((_sectors - 1) >> 8) & 0xFF); data[3] = (byte)((_sectors - 1) & 0xFF); data[6] = 0x02; _SendMassStorageResponse(e.Data, data); break; } case 0x28: //Read Sector { ulong LBA = (ulong)(e.Data[0x0F + 3]) | (ulong)(((ulong)e.Data[0x0F + 2] << 8) * 0x10000); LBA += (ulong)((ulong)e.Data[0x0F + 5] | (ulong)((ulong)e.Data[0x0F + 4] << 8)); int sectors = (e.Data[0x0F + 8] & 0xFF) | (e.Data[0x0F + 7] << 8); var sectorData = new byte[sectors * 0x200]; Logger.WriteLine(String.Format("MSD: Read: LBA {0}, Sectors {1}", LBA.ToString("X08"), sectors), Logger.LoggingLevel.Verbose); //Send response _image.Seek((long)(LBA * 0x200), SeekOrigin.Begin); for (int i = 0; i < sectors; i++) { _image.Read(sectorData, 0x200 * i, 0x200); } _SendMassStorageResponse(e.Data, sectorData); break; } case 0x2A: //Write Sector { ulong LBA = (ulong)(e.Data[0x0F + 3]) | (ulong)(((ulong)e.Data[0x0F + 2] << 8) * 0x10000); LBA += (ulong)((ulong)e.Data[0x0F + 5] | (ulong)((ulong)e.Data[0x0F + 4] << 8)); int sectors = (e.Data[0x0F + 8] & 0xFF) | (e.Data[0x0F + 7] << 8); Logger.WriteLine(String.Format("MSD: Write: LBA {0}, Sectors {1}", LBA.ToString("X08"), sectors), Logger.LoggingLevel.Verbose); //Seek to the correct point and start writing data as we receive it _dataRemaining = sectors * 0x200; _image.Seek((long)(LBA * 0x200), SeekOrigin.Begin); _SendMassStorageResponse(e.Data, null); break; } case 0x5A: //Mode Sense { //The host isn't happy until I send this -- not sure what the deal is (I ripped this from a real drive) var data = new byte[8]; data[1] = 0x46; data[2] = 0x94; _SendMassStorageResponse(e.Data, data); break; } default: { Logger.WriteLine("MSD: Unknown: " + BitConverter.ToString(e.Data, 0, e.Data.Length), Logger.LoggingLevel.Verbose); break; } } } }