| @@ 973-1000 (lines=28) @@ | ||
| 970 | self.ServerPicoseconds = None |
|
| 971 | self._freeze = True |
|
| 972 | ||
| 973 | def to_binary(self): |
|
| 974 | packet = [] |
|
| 975 | if self.Value: |
|
| 976 | self.Encoding |= (1 << 0) |
|
| 977 | if self.StatusCode: |
|
| 978 | self.Encoding |= (1 << 1) |
|
| 979 | if self.SourceTimestamp: |
|
| 980 | self.Encoding |= (1 << 2) |
|
| 981 | if self.ServerTimestamp: |
|
| 982 | self.Encoding |= (1 << 3) |
|
| 983 | if self.SourcePicoseconds: |
|
| 984 | self.Encoding |= (1 << 4) |
|
| 985 | if self.ServerPicoseconds: |
|
| 986 | self.Encoding |= (1 << 5) |
|
| 987 | packet.append(uabin.Primitives.UInt8.pack(self.Encoding)) |
|
| 988 | if self.Value: |
|
| 989 | packet.append(self.Value.to_binary()) |
|
| 990 | if self.StatusCode: |
|
| 991 | packet.append(self.StatusCode.to_binary()) |
|
| 992 | if self.SourceTimestamp: |
|
| 993 | packet.append(uabin.Primitives.DateTime.pack(self.SourceTimestamp)) # self.SourceTimestamp.to_binary()) |
|
| 994 | if self.ServerTimestamp: |
|
| 995 | packet.append(uabin.Primitives.DateTime.pack(self.ServerTimestamp)) # self.ServerTimestamp.to_binary()) |
|
| 996 | if self.SourcePicoseconds: |
|
| 997 | packet.append(uabin.Primitives.UInt16.pack(self.SourcePicoseconds)) |
|
| 998 | if self.ServerPicoseconds: |
|
| 999 | packet.append(uabin.Primitives.UInt16.pack(self.ServerPicoseconds)) |
|
| 1000 | return b''.join(packet) |
|
| 1001 | ||
| 1002 | @staticmethod |
|
| 1003 | def from_binary(data): |
|
| @@ 1016-1037 (lines=22) @@ | ||
| 1013 | packet.append(uabin.Primitives.UInt16.pack(self.SourcePicoseconds)) |
|
| 1014 | if self.ServerTimestamp: |
|
| 1015 | packet.append(uabin.Primitives.DateTime.pack(self.ServerTimestamp)) |
|
| 1016 | if self.ServerPicoseconds: |
|
| 1017 | packet.append(uabin.Primitives.UInt16.pack(self.ServerPicoseconds)) |
|
| 1018 | return b''.join(packet) |
|
| 1019 | ||
| 1020 | @staticmethod |
|
| 1021 | def from_binary(data): |
|
| 1022 | obj = DataValue() |
|
| 1023 | self.Encoding = uabin.Primitives.UInt8.unpack(data) |
|
| 1024 | if obj.Encoding & (1 << 0): |
|
| 1025 | obj.Value = Variant.from_binary(data) |
|
| 1026 | else: |
|
| 1027 | obj.Value = Variant() |
|
| 1028 | if obj.Encoding & (1 << 1): |
|
| 1029 | obj.StatusCode = StatusCode.from_binary(data) |
|
| 1030 | else: |
|
| 1031 | obj.StatusCode = StatusCode() |
|
| 1032 | if obj.Encoding & (1 << 2): |
|
| 1033 | self.SourceTimestamp = uabin.Primitives.DateTime.unpack(data) |
|
| 1034 | else: |
|
| 1035 | obj.SourceTimestamp = datetime.utcnow() |
|
| 1036 | if obj.Encoding & (1 << 3): |
|
| 1037 | self.SourcePicoseconds = uabin.Primitives.UInt16.unpack(data) |
|
| 1038 | else: |
|
| 1039 | obj.SourcePicoseconds = 0 |
|
| 1040 | if obj.Encoding & (1 << 4): |
|