3 ms·
Played around with the format a bit and made a Kaitai format if anybody else wants to play with it. Not confident about the year, but I have observed some times
by jcc11 11mo ago
Played around with the format a bit and made a Kaitai format if anybody else wants to play with it. Not confident about the year, but I have observed some timestamps based on date of manufacture if the device came out approximately 2016. The rest seems to line up rather well as bit-packed integers.
Kaitai Structured Output:
0 [BpMsg]: 2025-11-10 11:03 - SYS:137, DIA:113, OPP:121, MAP:121, PP:24, HR:67
unk1 = 0xA = 10
sys = 0x89 = 137
dia = 0x71 = 113
hr = 0x43 = 67
timestamp [Datetime]: 2025-11-10 11:03
yearMinus2016 = 0x9 = 9
month = 0xB = 11
day = 0xA = 10
hour = 0xB = 11
min = 0x3 = 3
paddedDay = 10
paddedHour = 11
paddedMin = 03
paddedMonth = 11
year = 2025
unk2 = 0x50 = 80
opp = 0x79 = 121
unk3 = 0x0 = 0
unk4 = 0x0 = 0
unk5 = 0x0 = 0
unk6 = 0x0 = 0
unk7 = 0x0 = 0
unk8 = 0x0 = 0
map = 0x79 = 121
pp = 0x18 = 24
1 [BpMsg]: 2025-11-10 11:31 - SYS:132, DIA:86, OPP:95, MAP:101, PP:46, HR:68
2 [BpMsg]: 2025-11-10 12:01 - SYS:126, DIA:84, OPP:90, MAP:98, PP:42, HR:82
3 [BpMsg]: 2025-11-10 12:35 - SYS:128, DIA:80, OPP:86, MAP:96, PP:48, HR:61
KSY:
meta:
id: bp
title: BP Msg Format
endian: le
seq:
- id: msgs
type: bp_msg
repeat: eos
types:
datetime:
-webide-representation: '{year:dec}-{padded_month}-{padded_day} {padded_hour}:{padded_min}'
seq:
- id: year_minus_2016
type: b4
- id: month
type: b4
- id: day
type: b5
- id: hour
type: b5
- id: min
type: b6
instances:
padded_day:
value: '(day <= 9 ? "0" : "") + day.to_s'
padded_month:
value: '(month <= 9 ? "0" : "") + month.to_s'
padded_min:
value: '(min <= 9 ? "0" : "") + min.to_s'
padded_hour:
value: '(hour <= 9 ? "0" : "") + hour.to_s'
year:
value: (year_minus_2016 + 2016).to_s
bp_msg:
-webide-representation: '{timestamp} - SYS:{sys:dec}, DIA:{dia:dec}, OPP:{opp:dec}, MAP:{map:dec}, PP:{pp:dec}, HR:{hr:dec}'
seq:
- id: unk1
type: u1
- id: sys
type: u1
- id: dia
type: u1
- id: hr
type: u1
- id: timestamp
type: datetime
- id: unk2
type: u1
- id: opp
type: u1
- id: unk3
type: u1
- id: unk4
type: u1
- id: unk5
type: u1
- id: unk6
type: u1
- id: unk7
type: u1
- id: unk8
type: u1
instances:
pp:
value: sys - dia
map:
value: (2 * dia + sys) / 3
Using the following hex dump as my source "binary":
0a89 7143 9b52 c350 7900 0000 0000 0000 ..qC.R.Py.......
8456 449b 52df 505f 0000 0000 0000 007e .VD.R.P_.......~
5452 9b53 0150 5a00 0000 0000 000a 8050 TR.S.PZ........P
3d9b 5323 5056 0000 0000 0000 0094 5d41 =.S#PV........]A
9b53 4050 6700 0000 0000 0000 795c 4a9b .S@Pg.......y\J.
535e 506a 0000 0000 0000 007b 5341 9b53 S^Pj.......{SA.S
5f50 5a00 0000 0000 0000 7b4f 4e9b 5381 _PZ.......{ON.S.
5058 0000 0000 0000 PX......