def run(latency): @mint.proc() def sender(): a.framer.send('\x12\x34\x56\x78') yield mint.end @mint.proc() def receiver(): data = yield b.framer.recv() print 'bytes recv by {}: {}'.format(b, fmt(data, 'hex')) data = yield b.framer.recv() print 'bytes recv by {}: {}'.format(b, fmt(data, 'hex')) print 'bits ever received at {}: {}'.format( b.port, fmt(utils.unbitify(b.port.bits_received), 'bin')) print 'bits ever received at {} (shifted): {}'.format( b.port, fmt(utils.unbitify(b.port.bits_received[3:]), 'hex')) raise mint.Stop yield mint.end a = PC('a') b = PC('b') link = Link(a, b) link.latency = latency
def run(sep, latency): @mint.proc() def sender(): a.port.put('\xff') yield mint.env.timeout(sep) a.port.put('\xff') yield mint.end @mint.proc() def receiver(): data = yield b.recv(4) print 'Received at {}: {}'.format(mint.env.now, fmt(data, 'hex')) print ' {}'.format(fmt(data, 'bin')) raise mint.Stop yield mint.end a = PC('a') b = PC('b') link = Link(a, b) link.latency = latency
latency == 3 b recv 000111 a recv 00010101 ''' import time import mint from mint.components import Endpoint, Link a = Endpoint('a') b = Endpoint('b') link = Link(a, b) a_data = '111' b_data = '10101' latency = 3 link.latency = latency @mint.proc def sender(): a.port.send(a_data) print '{} recv: {}'.format(a, a.port.recv(len(b_data) + latency)) print 'now is {}'.format(mint.env.now) @mint.proc def receiver(): b.port.send(b_data) print '{} recv: {}'.format(b, b.port.recv(len(a_data) + latency)) print 'now is {}'.format(mint.env.now) mint.run()