-
Notifications
You must be signed in to change notification settings - Fork 1
/
test.py
executable file
·104 lines (86 loc) · 3.47 KB
/
test.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#!/usr/bin/env python3
import time, random, spidev, struct
from protocol import *
seq = random.randrange(0x10000)
def calc_checksum(pid, payload):
return ((0xaa - (sum(struct.pack('BH', pid, len(payload)+1)+payload) % 256)) % 256)
#l = len(payload)
#sum = pid
#sum = (sum + ((l+1) & 0xff)) % 256
#sum = (sum + (((l+1) >> 8) & 0xff)) % 256
#for i in payload:
# sum = (sum + i) % 256
#return (0xaa - sum) % 256
def xfer(data, *, recv=True):
print('\033[94m> '+' '.join('%02x' % i for i in data)+'\033[0m')
spi.xfer2(data)
time.sleep(0.1)
if (not recv): return
while (True):
r = bytes(spi.readbytes(256))
if (not r.strip(b'\0')):
time.sleep(0.01)
continue
print('\033[92m< '+' '.join('%02x' % i for i in r.rstrip(b'\0'))+'\033[0m')
break
def send(pid, payload, **kwargs):
payload = bytes.fromhex(payload)
l = len(payload)
data = bytearray(struct.pack('<BH', pid, l+1) + payload)
data.append(calc_checksum(pid, payload))
return xfer(data, **kwargs)
if (__name__ == '__main__'):
spi = spidev.SpiDev(0, 0)
#while (True):
# print(bytes(spi.readbytes(65535)))
# time.sleep(0.001)
#xfer(bytes.fromhex('cc f2 3b 82 a0 06 00 a6 96 03 00 01 02 0e 00 00'), recv=False)
#xfer(bytes.fromhex('cc f2 3c 82 a0 06 00 a6 a8 03 00 00 00 ff 00 00'), recv=False)
#xfer(bytes.fromhex('cc f2 00 00 a0 06 00 a6 00 03 00 00 00 a7 00 00'), recv=False)
#xfer(bytes.fromhex('a0 06 00 a6 00 03 00 00 00 a7 00 00'))
#for i in range(256):
#xfer(bytes.fromhex('cc f2 01 ae a0 09 00 a9 ae 06 00 55 0e 52 00 00 41 00 00 00'), recv=False)
#xfer(bytes.fromhex('cc f2 3c 82 a0 14 00 b4 32 11 00 0c 01 80 ab 80 bc 80 a0 80 ae 80 a3 80 b0 f1 6c f5 00 00 00'), recv=False)
#xfer(bytes.fromhex('cc f2 01 82 a0 06 00 a6 20 03 00 01 00 86 00 00'), recv=False)
#xfer(bytes.fromhex('cc f2 00 82 a0 14 00 b4 32 11 00 0c 01 80 ab 80 bc 80 a0 80 ae 80 a3 80 b0 f1 6c f5 00 00'), recv=False)
#xfer(bytes.fromhex('cc f2 b4 ae a0 14 00 b4 32 11 00 0c 01 80 ae 80 bf 80 a1 80 b2 80 a4 80 b3 05 44 fa 00 00'), recv=False)
#xfer(bytes.fromhex('cc f2 b6 ae a0 12 00 b2 34 0f 00 0e 01 80 98 80 be 80 83 80 92 80 84 80 9d cc 00 00'), recv=False)
#xfer(bytes.fromhex('cc f2 05 ae a0 06 00 a6 a8 03 00 00 00 ff 00 00'), recv=False)
#xfer(RTRMessage().pack())
'''
xfer(SPIPackage(seq,
ProtocolPackage(ProtocolPackage.Flags.MSG_PROTOCOL,
PacketNop.new(0),
))).pack(), recv=False); seq += 1
#xfer(RTRMessage().pack())
xfer(SPIPackage(seq,
ProtocolPackage(ProtocolPackage.Flags.MSG_PROTOCOL,
PacketReset.new(PacketReset.Flags.SOFT_RESET_MCU, 20),
))).pack(), recv=False); seq += 1
#xfer(RTRMessage().pack())
xfer(SPIPackage(seq,
ProtocolPackage(ProtocolPackage.Flags.MSG_PROTOCOL,
PacketNop.new(0),
))).pack(), recv=False); seq += 1
#xfer(RTRMessage().pack())
xfer(SPIPackage(seq,
ProtocolPackage(ProtocolPackage.Flags.MSG_PROTOCOL,
PacketEnableChip.new(True, 0),
))).pack(), recv=False); seq += 1
#xfer(RTRMessage().pack())
xfer(SPIPackage(seq,
ProtocolPackage(ProtocolPackage.Flags.MSG_PROTOCOL,
PacketNop.new(0),
))).pack(), recv=False); seq += 1
#xfer(RTRMessage().pack())
xfer(SPIPackage(seq,
ProtocolPackage(ProtocolPackage.Flags.MSG_PROTOCOL,
PacketReset.new(PacketReset.Flags.RESET_SENSOR, 20),
))).pack(), recv=False); seq += 1
#xfer(RTRMessage().pack())
xfer(SPIPackage(seq,
ProtocolPackage(ProtocolPackage.Flags.MSG_PROTOCOL,
PacketQueryMcuState.new(0),
))).pack(), recv=False); seq += 1
xfer(RTRMessage().pack())
'''