Support override of tx_complete
This commit is contained in:
@@ -55,21 +55,23 @@ class GmiiFrame:
|
|||||||
else:
|
else:
|
||||||
self.data = bytearray(data)
|
self.data = bytearray(data)
|
||||||
self.error = error
|
self.error = error
|
||||||
|
|
||||||
|
if tx_complete is not None:
|
||||||
self.tx_complete = tx_complete
|
self.tx_complete = tx_complete
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_payload(cls, payload, min_len=60):
|
def from_payload(cls, payload, min_len=60, tx_complete=None):
|
||||||
payload = bytearray(payload)
|
payload = bytearray(payload)
|
||||||
if len(payload) < min_len:
|
if len(payload) < min_len:
|
||||||
payload.extend(bytearray(min_len-len(payload)))
|
payload.extend(bytearray(min_len-len(payload)))
|
||||||
payload.extend(struct.pack('<L', zlib.crc32(payload)))
|
payload.extend(struct.pack('<L', zlib.crc32(payload)))
|
||||||
return cls.from_raw_payload(payload)
|
return cls.from_raw_payload(payload, tx_complete=tx_complete)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_raw_payload(cls, payload):
|
def from_raw_payload(cls, payload, tx_complete=None):
|
||||||
data = bytearray(ETH_PREAMBLE)
|
data = bytearray(ETH_PREAMBLE)
|
||||||
data.extend(payload)
|
data.extend(payload)
|
||||||
return cls(data)
|
return cls(data, tx_complete=tx_complete)
|
||||||
|
|
||||||
def get_preamble_len(self):
|
def get_preamble_len(self):
|
||||||
return self.data.index(EthPre.SFD)+1
|
return self.data.index(EthPre.SFD)+1
|
||||||
|
|||||||
@@ -57,21 +57,23 @@ class XgmiiFrame:
|
|||||||
else:
|
else:
|
||||||
self.data = bytearray(data)
|
self.data = bytearray(data)
|
||||||
self.ctrl = ctrl
|
self.ctrl = ctrl
|
||||||
|
|
||||||
|
if tx_complete is not None:
|
||||||
self.tx_complete = tx_complete
|
self.tx_complete = tx_complete
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_payload(cls, payload, min_len=60):
|
def from_payload(cls, payload, min_len=60, tx_complete=None):
|
||||||
payload = bytearray(payload)
|
payload = bytearray(payload)
|
||||||
if len(payload) < min_len:
|
if len(payload) < min_len:
|
||||||
payload.extend(bytearray(min_len-len(payload)))
|
payload.extend(bytearray(min_len-len(payload)))
|
||||||
payload.extend(struct.pack('<L', zlib.crc32(payload)))
|
payload.extend(struct.pack('<L', zlib.crc32(payload)))
|
||||||
return cls.from_raw_payload(payload)
|
return cls.from_raw_payload(payload, tx_complete=tx_complete)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_raw_payload(cls, payload):
|
def from_raw_payload(cls, payload, tx_complete=None):
|
||||||
data = bytearray(ETH_PREAMBLE)
|
data = bytearray(ETH_PREAMBLE)
|
||||||
data.extend(payload)
|
data.extend(payload)
|
||||||
return cls(data)
|
return cls(data, tx_complete=tx_complete)
|
||||||
|
|
||||||
def get_preamble_len(self):
|
def get_preamble_len(self):
|
||||||
return self.data.index(EthPre.SFD)+1
|
return self.data.index(EthPre.SFD)+1
|
||||||
|
|||||||
Reference in New Issue
Block a user