Skip to content

Commit ed2920c

Browse files
committed
support extended addressing in canbitbang
1 parent 36df099 commit ed2920c

File tree

2 files changed

+22
-7
lines changed

2 files changed

+22
-7
lines changed

board/drivers/canbitbang.h

+14-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#define MAX_BITS_CAN_PACKET (64+44+25)
1+
#define MAX_BITS_CAN_PACKET (200)
22

33
// returns out_len
44
int do_bitstuff(char *out, char *in, int in_len) {
@@ -71,8 +71,19 @@ int get_bit_message(char *out, CAN_FIFOMailBox_TypeDef *to_bang) {
7171
// test packet
7272
int dlc_len = to_bang->RDTR & 0xF;
7373
len = append_int(pkt, len, 0, 1); // Start-of-frame
74-
len = append_int(pkt, len, to_bang->RIR >> 21, 11); // Identifier
75-
len = append_int(pkt, len, 0, 3); // RTR+IDE+reserved
74+
75+
if (to_bang->RIR & 4) {
76+
// extended identifier
77+
len = append_int(pkt, len, to_bang->RIR >> 21, 11); // Identifier
78+
len = append_int(pkt, len, 3, 2); // SRR+IDE
79+
len = append_int(pkt, len, (to_bang->RIR >> 3) & ((1<<18)-1), 18); // Identifier
80+
len = append_int(pkt, len, 0, 3); // RTR+r1+r0
81+
} else {
82+
// standard identifier
83+
len = append_int(pkt, len, to_bang->RIR >> 21, 11); // Identifier
84+
len = append_int(pkt, len, 0, 3); // RTR+IDE+reserved
85+
}
86+
7687
len = append_int(pkt, len, dlc_len, 4); // Data length code
7788

7889
// append data

tests/gmbitbang/test.py

+8-4
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
import time
33
from panda import Panda
44

5-
p1 = Panda('430026000951363338383037')
6-
p2 = Panda('380016000551363338383037')
5+
p1 = Panda('380016000551363338383037')
6+
p2 = Panda('430026000951363338383037')
77

88
# this is a test, no safety
99
p1.set_safety_mode(Panda.SAFETY_ALLOUTPUT)
@@ -17,11 +17,15 @@
1717
p2.set_gmlan(bus=2)
1818

1919
# send w bitbang then without
20+
#iden = 123
21+
iden = 18000
22+
#dat = "\x01\x02"
23+
dat = "\x01\x02\x03\x04\x05\x06\x07\x08"
2024
while 1:
2125
p1.set_gmlan(bus=None)
22-
p1.can_send(123, "\x01\x02\x03\x04\x05\x06\x07\x08", bus=3)
26+
p1.can_send(iden, dat, bus=3)
2327
p1.set_gmlan(bus=2)
24-
p1.can_send(123, "\x01\x02\x03\x04\x05\x06\x07\x08", bus=3)
28+
p1.can_send(iden, dat, bus=3)
2529
time.sleep(0.01)
2630
print p2.can_recv()
2731
exit(0)

0 commit comments

Comments
 (0)