Example #1
0
        public void ReadOneValueEmptiesFifo()
        {
            var fifo = new FifoBuffer <int>(5);

            fifo.Write(99);
            int result;

            Assert.IsTrue(fifo.Read(out result));
            Assert.IsFalse(fifo.Read(out result));
        }
Example #2
0
        public void ReadEmptyFifoReturnsFalse()
        {
            var           fifo = new FifoBuffer <KeyboardEvent>(5);
            KeyboardEvent result;

            Assert.IsFalse(fifo.Read(out result));
            Assert.IsNull(result);
        }
Example #3
0
                void ReadCallback(object state)
                {
                    FifoBuffer fifoBuffer = _stream._fifoRead;

                    fifoBuffer.WaitHandle.WaitOne();

                    int bytesRead = Math.Min(fifoBuffer.Available, _count);

                    _bytesRead = fifoBuffer.Read(_buffer, _offset, bytesRead);

                    _completed = true;
                    _mre.Set();

                    if (_callback != null)
                    {
                        _callback(this);
                    }
                }
Example #4
0
        internal override int DeviceRead(byte[] Data)
        {
            if (!_isInitialized)
            {
                return(-1);
            }

            if (_isReadFailure)
            {
                // retry reading, and let the user determine when to close
                _isReadFailure = false;
                _asyncResult   = null;
                StartRead();

                return(-1);
            }

            int bytesRead = _fifoToDevice.Read(Data, 0, Data.Length);

            return(bytesRead);
        }
Example #5
0
        public byte Read(ushort address)
        {
            lock (this)
            {
                Debug.Assert(address < Size);
                KeyboardEvent evt;

                switch (address)
                {
                case CONTROL_REGISTER:
                    return(_controlRegister);

                case STATUS_REGISTER:
                    if (_eventBuffer.Read(out evt))
                    {
                        _current = evt;
                        return(evt.Status);
                    }
                    _current = null;
                    break;

                case DATA_REGISTER:
                    if (_current != null)
                    {
                        return(_current.Data);
                    }
                    return(0x00);

                case SCAN_CODE_REGISTER:
                    if (_current != null)
                    {
                        return(_current.Data);
                    }
                    return(0x00);
                }
            }

            return(0x00);
        }
Example #6
0
 public override int Read(byte[] buffer, int offset, int count)
 {
     return(_fifoRead.Read(buffer, offset, count));
 }