Skip to content

Commit 76aabb6

Browse files
committed
Hytera IPSC Sync dissection and documentation
1 parent a7708a7 commit 76aabb6

File tree

1 file changed

+32
-7
lines changed

1 file changed

+32
-7
lines changed

okdmr/dmrlib/hytera/hytera_ipsc_sync.py

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,46 @@ def __init__(
1414
Hytera IPSC sync packet is different, not dmr data,
1515
it does not contain EMB or SLOT PDUs, ending might be some RCP / HRNP / HDAP or different hytera-specific protocol
1616
17-
example payload: 0000 0000 0000 [0000 0000 006f] [0023 0037 00fa] 2a34 102c 2a94 102c 2af4 102c 2e01 4f83
17+
example full frame:
18+
5a5a5a5a0000000042000501010000001111eeee555511114000000000000000000000006f0023003700fa00000000000000000000000000834f00c3e20801006f000000fa372300
1819
19-
contains 16-bit fields
20-
[00 00]
21-
[00 00]
22-
[00 00]
20+
dissected:
21+
[5a 5a 5a 5a] - fixed header
22+
[00] - sequence number
23+
[00 00 00] - unknown data (3 bytes)
24+
[42] - packet type
25+
[00 05 01 01 00 00 00] - unknown data (7 bytes)
26+
[11 11] - timeslot "1" in this case, [22 22] means TS2
27+
[EE EE] - slot type - "SYNC" in this case
28+
[55 55] - color code "5"
29+
[11 11] - frame type - "voice sync" in this case
30+
[40 00 E2 08] - unknown data (4 bytes)
31+
[01] - call type - "group call" in this case, 00 means "private call"
32+
33+
--- IPSC DMR Data payload begin ---
34+
35+
[00 00 00 00 00] - unknown data (5 bytes)
2336
2437
[00 00] \
25-
[00 00] => these 3 identify source radio/repeater, (16)[00006F] == (10)[111]
38+
[00 00] => these 3 identify destination radio/repeater, (16)[00006F] == (10)[111]
2639
[00 6F] /
2740
2841
[00 23] \
29-
[00 37] => these 3 identify destination radio/repeater, (16)[2337FA] == (10)[2308090]
42+
[00 37] => these 3 identify source radio/repeater, (16)[2337FA] == (10)[2308090]
3043
[00 FA] /
3144
45+
[ 13 times 00 ] - unknown data (13 bytes)
46+
[83 4F 00 C3] - unknown data (4 bytes), possible signature, checksum or similar
47+
48+
--- IPSC DMR Data payload end ---
49+
50+
[E2 08 01] - unknown data, but matches end of "unknown data (4 bytes) and call type" fields from before payload
51+
52+
[00 6F 00 00] -> U4LE destination radio/repeater, (16)[00006F] == (10)[111]
53+
[00 FA 37 23] -> U4LE source radio/repeater, (16)[2337FA] == (10)[2308090]
54+
55+
[00] - unknown data (1 byte)
56+
3257
"""
3358
super().__init__(full_bits, burst_type)
3459
self.has_emb = False

0 commit comments

Comments
 (0)