示例#1
0
        public void BindAnalyzer(IOProvider io)
        {
            this.io      = io;
            io.ByteRead += b =>
            {
                if (!TimeDomainsManager.Instance.TryGetVirtualTimeStamp(out var vts))
                {
                    // it happens when writing from uart analyzer
                    vts = new TimeStamp(default(TimeInterval), EmulationManager.ExternalWorld);
                }

                UART.GetMachine().HandleTimeDomainEvent(UART.WriteChar, (byte)b, vts);
            };

            Action <byte> writeAction = (b =>
            {
                lock (lockObject)
                {
                    io.Write(b);
                }
            });

            var mre = new ManualResetEventSlim();

            Task.Run(() =>
            {
                lock (lockObject)
                {
                    mre.Set();
                    RepeatHistory();
                    UART.CharReceived += writeAction;
                    actionsDictionary.Add(io, writeAction);
                }
            });
            mre.Wait();
        }