Add from_raw_payload, pad frames to min length in from_payload
This commit is contained in:
@@ -50,11 +50,17 @@ class GmiiFrame(object):
|
|||||||
self.error = error
|
self.error = error
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_payload(cls, payload, add_fcs=True):
|
def from_payload(cls, payload, min_len=60):
|
||||||
|
payload = bytearray(payload)
|
||||||
|
if len(payload) < min_len:
|
||||||
|
payload.extend(bytearray(min_len-len(payload)))
|
||||||
|
payload.extend(struct.pack('<L', zlib.crc32(payload)))
|
||||||
|
return cls.from_raw_payload(payload)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_raw_payload(cls, payload):
|
||||||
data = bytearray(ETH_PREAMBLE)
|
data = bytearray(ETH_PREAMBLE)
|
||||||
data.extend(payload)
|
data.extend(payload)
|
||||||
if add_fcs:
|
|
||||||
data.extend(struct.pack('<L', zlib.crc32(payload)))
|
|
||||||
return cls(data)
|
return cls(data)
|
||||||
|
|
||||||
def get_preamble_len(self):
|
def get_preamble_len(self):
|
||||||
|
|||||||
@@ -52,11 +52,17 @@ class XgmiiFrame(object):
|
|||||||
self.ctrl = ctrl
|
self.ctrl = ctrl
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_payload(cls, payload, add_fcs=True):
|
def from_payload(cls, payload, min_len=60):
|
||||||
|
payload = bytearray(payload)
|
||||||
|
if len(payload) < min_len:
|
||||||
|
payload.extend(bytearray(min_len-len(payload)))
|
||||||
|
payload.extend(struct.pack('<L', zlib.crc32(payload)))
|
||||||
|
return cls.from_raw_payload(payload)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_raw_payload(cls, payload):
|
||||||
data = bytearray(ETH_PREAMBLE)
|
data = bytearray(ETH_PREAMBLE)
|
||||||
data.extend(payload)
|
data.extend(payload)
|
||||||
if add_fcs:
|
|
||||||
data.extend(struct.pack('<L', zlib.crc32(payload)))
|
|
||||||
return cls(data)
|
return cls(data)
|
||||||
|
|
||||||
def get_preamble_len(self):
|
def get_preamble_len(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user