Skip to content

Commit

Permalink
Merge pull request #31 from linville/issue-30
Browse files Browse the repository at this point in the history
Fix TimeF1 ms decoding
  • Loading branch information
mcferrill committed Dec 7, 2022
2 parents 292f151 + 27e2f88 commit dfce463
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 2 deletions.
4 changes: 2 additions & 2 deletions chapter10/time.py
Original file line number Diff line number Diff line change
Expand Up @@ -108,14 +108,14 @@ def __init__(self, *args, **kwargs):
for name in self.data_format.names:
setattr(self, name, 0)
self._initial_time = 0
if not self.time:
if getattr(self, "time", True):
self.time = datetime.now()
return

raw = self.buffer.read(self.data_length - 4)
self.__dict__.update(self.data_format.unpack(raw))

ms = ((self.Hmn * 10) + self.Tmn)
ms = (self.Hmn * 100) + (self.Tmn * 10)
seconds = self.Sn + (self.TSn * 10)
minutes = self.Mn + (self.TMn * 10)
hours = self.Hn + (self.THn * 10)
Expand Down
13 changes: 13 additions & 0 deletions tests/unit/test_time.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@

from datetime import datetime
import io

from chapter10 import time, C10
Expand All @@ -18,3 +19,15 @@ def test_time_bytes():
break
raw = bytes(packet)
assert time.TimeF1(io.BytesIO(raw)).time == packet.time


def test_time_bytes_with_ms():
t0 = time.TimeF1()

# Note trailing 0, IRIG 106-15 Time F1 only allows precision
# to tenths of ms, but fromisoformat requires specifying to 1-ms.
t0.time = datetime.fromisoformat('2022-12-05 01:02:03.450')

raw = bytes(t0)

assert time.TimeF1(io.BytesIO(raw)).time == t0.time

0 comments on commit dfce463

Please sign in to comment.