public void ReadBlockReceived() { lock (ReadTimerLock) { TimeoutsHappened = 0; DeviceLost = false; FIFOReset(true); USBRXDeviceNative.ResetEpFifo(DevNum); if (PreQueueTransfer) { //PreQueueTransfer = true; //Log.AddMessage("ReadTrigger [new transfer]"); lock (Lock) { USBRXDeviceNative.UsbSetControlledTransfer(DevNum, ReadBlockSize, ReadFragmentSize); } FIFOReset(false); } ReadTimerLocked = false; Monitor.Pulse(ReadTimerLock); } }
private void StartStreamRead() { StartThreads(); lock (Lock) { USBRXDeviceNative.ResetEpFifo(DevNum); USBRXDeviceNative.UsbSetGPIFMode(DevNum); USBRXDeviceNative.UsbSetControlledTransfer(DevNum, 0, ReadBlockSize); } FIFOReset(false); }
private void StartRead() { StartThreads(); lock (Lock) { USBRXDeviceNative.ResetEpFifo(DevNum); USBRXDeviceNative.UsbSetGPIFMode(DevNum); } ReadTimerLocked = false; ReadTimer.Start(); lock (ReadTimerLock) { Monitor.Pulse(ReadTimerLock); } }
private void ReadThreadMain() { try { lock (ReadTrigger) { while (true) { /* when read timer fires */ while (!ReadTriggered) { Monitor.Wait(ReadTrigger, 50); } //Log.AddMessage("ReadTrigger [was fired]"); ReadTriggered = false; /* start a new transfer */ if (!PreQueueTransfer) { //PreQueueTransfer = true; //Log.AddMessage("ReadTrigger [new transfer]"); lock (Lock) { USBRXDeviceNative.ResetEpFifo(DevNum); USBRXDeviceNative.UsbSetControlledTransfer(DevNum, ReadBlockSize, ReadFragmentSize); } FIFOReset(false); } ExpectedReadDuration = SamplesPerBlock / (double)Tuner.SamplingRate; /* dont fire next read until data was processed */ ReadTimerLocked = true; } } } catch (ThreadAbortException ex) { return; } }