+ # Link layer (byte sized units)
+
+ # State machine.
+ if (self.lnk_event == "RESET"):
+ self.lnk_cnt = 0
+ self.lnk_byte = 0x00
+ elif (self.lnk_event == "DATA BIT"):
+ if (self.net_mode in ["WRITE", "READ"]):
+ self.lnk_cnt = self.lnk_cnt + 1
+ self.lnk_byte = (self.lnk_byte << 1) | self.lnk_bit
+ if (self.lnk_cnt == 8):
+ print ("DEBUG: BYTE=0x%02x t0=%d t+=%d" % (self.lnk_byte, self.lnk_fall, self.samplenum))
+ self.lnk_event = "DATA BYTE"
+ self.lnk_cnt = 0
+ self.lnk_byte = 0x00
+ elif (self.net_mode == "SEARCH"):
+ self.lnk_cnt = self.lnk_cnt + 1
+ self.lnk_byte = (self.lnk_byte << 1) | self.lnk_bit
+ if (self.lnk_cnt == 8):
+ print ("DEBUG: BYTE=0x%02x t0=%d t+=%d" % (self.lnk_byte, self.lnk_fall, self.samplenum))
+ self.lnk_event = "DATA BYTE"
+ self.lnk_cnt = 0
+ self.lnk_byte = 0x00
+ else:
+ raise Exception('Invalid net_mode: %s' % self.net_mode)
+ elif not (self.lnk_event == "NONE"):
+ raise Exception('Invalid lnk_event: %s' % self.lnk_event)
+