Esempio n. 1
0
    def __init__(self, data: bytes, protocolVersion: int = 1):
        if len(data) != 16:
            raise ValueError

        self._startDate = OralBDate(data[0:4]).datetime

        durationS = struct.unpack("<H", data[4:6])[0]
        self._duration = timedelta(seconds=durationS)

        self._eventCount = data[6]

        self._prefMode = BrushMode(data[7])

        durationS = struct.unpack("<H", data[8:10])[0]
        self._timeUnderPressure = timedelta(seconds=durationS)

        self._nPressure = data[10]

        self._finalBatteryState = data[11]

        if (protocolVersion == 1):
            self._parseProtocolV1(data)
        elif protocolVersion == 2 or protocolVersion == 3:
            self._parseProtocolV2Or3(data)
        elif protocolVersion == 4:
            self._parseProtocolV4(data)
Esempio n. 2
0
 def test_fromDatetimeConvertToOralBDate(self):
     byteSeq1 = b"\x00\x00\x00\x00"
     date1 = datetime(year=2000, month=1, day=1)
     oralb1 = OralBDate(byteSeq1)
     self.assertEqual(oralb1.toBytes(), byteSeq1)
     byteSeq2 = b"\x05\x00\x00\x00"
     date2 = datetime(year=2000, month=1, day=1, second=5)
     oralb2 = OralBDate(byteSeq2)
     self.assertEqual(oralb2.toBytes(), byteSeq2)
Esempio n. 3
0
 def test_theConstructorThrowIfTheDataAreLessThan4Bytes(self):
     with self.assertRaises(ValueError):
         OralBDate(b"\x00")
Esempio n. 4
0
 def test_toByteReturnTheOriginalSequence(self):
     byteSeq = b"\x01\x02\x03\x04"
     date = OralBDate(byteSeq)
     self.assertEqual(byteSeq, date.toBytes())
Esempio n. 5
0
 def test_theBytesAreInLittleEndian(self):
     date = OralBDate(b"\x01\x00\x00\x00")
     self.assertEqual(date.datetime,
                      datetime(year=2000, month=1, day=1, second=1))
Esempio n. 6
0
 def test_theBytesAreTheSecondAfter2000gen1(self):
     date = OralBDate(b"\x00\x00\x00\x00")
     self.assertEqual(date.datetime, datetime(year=2000, month=1, day=1))
Esempio n. 7
0
 def _parseProtocolV1(self, data: bytes):
     self._lastCharge = OralBDate(data[12:16]).datetime
     self._sessionId = -1
     self._userId = 0
     self._sessionTargetTime = -1
     self._numberOfSectors = -1
Esempio n. 8
0
 def setCurrentTime(self, now=datetime.now()):
     self._writeControl(0x37, 0x26)
     date = OralBDate.fromDatetime(now)
     self._currentDateChar.write(date.toBytes())
Esempio n. 9
0
 def readCurrentTime(self) -> datetime:
     # self._writeControl(0x01,0x00) #seemsnot needed...
     rawSecAfter2000 = self._currentDateChar.read()
     return OralBDate(rawSecAfter2000).datetime