Exemple #1
0
        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);
            }
        }
Exemple #2
0
        private void StartStreamRead()
        {
            StartThreads();

            lock (Lock)
            {
                USBRXDeviceNative.ResetEpFifo(DevNum);
                USBRXDeviceNative.UsbSetGPIFMode(DevNum);
                USBRXDeviceNative.UsbSetControlledTransfer(DevNum, 0, ReadBlockSize);
            }

            FIFOReset(false);
        }
Exemple #3
0
        private void StartRead()
        {
            StartThreads();

            lock (Lock)
            {
                USBRXDeviceNative.ResetEpFifo(DevNum);
                USBRXDeviceNative.UsbSetGPIFMode(DevNum);
            }
            ReadTimerLocked = false;
            ReadTimer.Start();

            lock (ReadTimerLock)
            {
                Monitor.Pulse(ReadTimerLock);
            }
        }
Exemple #4
0
        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;
            }
        }