def testFrameTransmitterTransmitsAckFrameCorrectly(self):
     tmp = MockSink()
     sink = EscapingSink(tmp)
     transmitter = FrameTransmitter(sink)
     transmitter.transmit(FrameTransmitter.ACK() + 0x24)
     
     for i in range(0, 5):
         transmitter.schedule()
         sink.schedule()
     
     crc = crc_ccitt_update(0xFFFF, FrameTransmitter.ACK() + 0x24)
     self.assertEqual([EscapingSink.FLAG(), FrameTransmitter.ACK() + 0x24, crc >> 8, crc & 0xFF, EscapingSink.FLAG()], tmp.items)
Beispiel #2
0
 def go(self):
     if self.outer.transmitter.isReady():
         while self.zeroFrame != self.lastAckReceived:
             del (self.outgoingFrameBuffer[0])
             self.zeroFrame += 1
         if self.sendSyn:
             self.outer.transmitter.transmit(
                 FrameTransmitter.SYN_COMPLETE())
             self.idleCount = 0
             self.sendSyn = False
         elif self.sendAck:
             self.outer.transmitter.transmit(
                 FrameTransmitter.ACK() +
                 self.expectedSequenceNumber.value)
             self.idleCount = 0
             self.sendAck = False
         elif len(self.outgoingFrameBuffer) > 0:
             if self.sendUserFrame:
                 self.outer.transmitter.transmit(
                     self.zeroFrame.value, self.outgoingFrameBuffer[0])
                 self.idleCount = 0
                 self.sendUserFrame = False
             else:
                 self.idleCount += 1
                 if self.idleCount > self.timeout:
                     self.sendUserFrame = True
 def testFrameTransmitterBecomesReadyOnlyOnceTransmissionComplete(self):
     tmp = MockSink()
     sink = EscapingSink(tmp)
     transmitter = FrameTransmitter(sink)
     transmitter.transmit(FrameTransmitter.ACK() + 0x24)
     
     for i in range(0, 5):
         self.assertFalse(transmitter.isReady())
         transmitter.schedule()
         sink.schedule()
     
     self.assertTrue(transmitter.isReady())
 def testFrameTransmitterBecomesUnreadyWhenTransmitting(self):
     tmp = MockSink()
     sink = EscapingSink(tmp)
     transmitter = FrameTransmitter(sink)
     transmitter.transmit(FrameTransmitter.ACK() + 0x24)
     self.assertFalse(transmitter.isReady())