@@ -48,10 +48,27 @@ def read(
4848 if address is not None and address != data [2 ]:
4949 raise ValueError (f"expected address { address } but got { data [2 ]} " )
5050
51+ index = None
5152 stride = data [1 ] + 2
5253 nrows = len (data ) // stride
53- payloadsize = stride - 12
54- payloadtype = payloadtypes [data [4 ] & ~ 0x10 ]
54+ payloadtype = data [4 ]
55+ payloadoffset = 5
56+ if payloadtype & 0x10 != 0 :
57+ seconds = np .ndarray (
58+ nrows , dtype = np .uint32 , buffer = data , offset = payloadoffset , strides = stride
59+ )
60+ payloadoffset += 4
61+ micros = np .ndarray (
62+ nrows , dtype = np .uint16 , buffer = data , offset = payloadoffset , strides = stride
63+ )
64+ payloadoffset += 2
65+ seconds = micros * _SECONDS_PER_TICK + seconds
66+ payloadtype = payloadtype & ~ 0x10
67+ index = pd .Series (seconds )
68+ index .name = "time"
69+
70+ payloadsize = stride - payloadoffset - 1
71+ payloadtype = payloadtypes [payloadtype ]
5572 if dtype is not None and dtype != payloadtype :
5673 raise ValueError (f"expected payload type { dtype } but got { payloadtype } " )
5774
@@ -60,16 +77,12 @@ def read(
6077 if length is not None and length != payloadshape [1 ]:
6178 raise ValueError (f"expected payload length { length } but got { payloadshape [1 ]} " )
6279
63- seconds = np .ndarray (nrows , dtype = np .uint32 , buffer = data , offset = 5 , strides = stride )
64- micros = np .ndarray (nrows , dtype = np .uint16 , buffer = data , offset = 9 , strides = stride )
65- seconds = micros * _SECONDS_PER_TICK + seconds
6680 payload = np .ndarray (
6781 payloadshape ,
6882 dtype = payloadtype ,
6983 buffer = data ,
70- offset = 11 ,
84+ offset = payloadoffset ,
7185 strides = (stride , elementsize ),
7286 )
73- time = pd .Series (seconds )
74- time .name = "time"
75- return pd .DataFrame (payload , index = time , columns = columns )
87+
88+ return pd .DataFrame (payload , index = index , columns = columns )
0 commit comments