blob: 577606cc83ccd7e5fb49e95aec42e2632d27fe2f (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
#
# Copyright 2020 Ettus Research, a National Instruments Brand
#
# SPDX-License-Identifier: GPL-3.0-or-later
#
from . import libpyuhd as lib
ChdrPacket = lib.chdr.ChdrPacket
Endianness = lib.chdr.Endianness
ChdrWidth = lib.chdr.ChdrWidth
ChdrHeader = lib.chdr.ChdrHeader
CtrlPayload = lib.chdr.CtrlPayload
CtrlStatus = lib.chdr.CtrlStatus
PacketType = lib.chdr.PacketType
CtrlOpCode = lib.chdr.CtrlOpCode
MgmtPayload = lib.chdr.MgmtPayload
MgmtHop = lib.chdr.MgmtHop
MgmtOp = lib.chdr.MgmtOp
MgmtOpCode = lib.chdr.MgmtOpCode
MgmtOpSelDest = lib.chdr.MgmtOpSelDest
MgmtOpCfg = lib.chdr.MgmtOpCfg
MgmtOpNodeInfo = lib.chdr.MgmtOpNodeInfo
StrsPayload = lib.chdr.StrsPayload
StrsStatus = lib.chdr.StrsStatus
StrcPayload = lib.chdr.StrcPayload
StrcOpCode = lib.chdr.StrcOpCode
def __get_payload(self):
pkt_type = self.get_header().pkt_type
if pkt_type == PacketType.MGMT:
return self.get_payload_mgmt()
elif pkt_type == PacketType.CTRL:
return self.get_payload_ctrl()
elif pkt_type == PacketType.STRC:
return self.get_payload_strc()
elif pkt_type == PacketType.STRS:
return self.get_payload_strs()
elif pkt_type in {PacketType.DATA_NO_TS, PacketType.DATA_WITH_TS}:
raise RuntimeError("Cannot deserialize a Data Payload")
else:
raise RuntimeError("Invalid pkt_type in ChdrHeader")
ChdrPacket.get_payload = __get_payload
def __to_string_with_payload(self):
pkt_type = self.get_header().pkt_type
if pkt_type == PacketType.MGMT:
return self.to_string_with_payload_mgmt()
elif pkt_type == PacketType.CTRL:
return self.to_string_with_payload_ctrl()
elif pkt_type == PacketType.STRC:
return self.to_string_with_payload_strc()
elif pkt_type == PacketType.STRS:
return self.to_string_with_payload_strs()
elif pkt_type in {PacketType.DATA_NO_TS, PacketType.DATA_WITH_TS}:
return self.__str__()
else:
raise RuntimeError("Invalid pkt_type in ChdrHeader")
ChdrPacket.to_string_with_payload = __to_string_with_payload
|