Skip to content

Commit 223a1fb

Browse files
committed
cleanin it up
1 parent 1ba7907 commit 223a1fb

File tree

2 files changed

+26
-3
lines changed

2 files changed

+26
-3
lines changed

board/drivers/canbitbang.h

+25-3
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,6 @@ void set_bitbanged_gmlan(int val) {
107107

108108
void bitbang_gmlan(CAN_FIFOMailBox_TypeDef *to_bang) {
109109
puts("called bitbang_gmlan\n");
110-
puth(can_num_lookup[3]);
111-
puts("\n");
112110

113111
char pkt_stuffed[MAX_BITS_CAN_PACKET];
114112
int len = get_bit_message(pkt_stuffed, to_bang);
@@ -117,13 +115,37 @@ void bitbang_gmlan(CAN_FIFOMailBox_TypeDef *to_bang) {
117115
set_bitbanged_gmlan(1); // recessive
118116
set_gpio_mode(GPIOB, 13, MODE_OUTPUT);
119117
enter_critical_section();
120-
int init = TIM2->CNT;
121118

119+
// wait for bus silent for 7 frames
120+
int silent_count = 0;
121+
while (silent_count < 7) {
122+
int read = get_gpio_input(GPIOB, 12);
123+
silent_count++;
124+
if (read == 0) {
125+
silent_count = 0;
126+
}
127+
int lwait = TIM2->CNT;
128+
while ((TIM2->CNT - lwait) < SPEEED);
129+
}
130+
131+
// send my message with optional failure
132+
int last = 1;
133+
int init = TIM2->CNT;
122134
for (int i = 0; i < len; i++) {
123135
while ((TIM2->CNT - init) < (SPEEED*i));
136+
int read = get_gpio_input(GPIOB, 12);
137+
if ((read == 0 && last == 1) && i != (len-11)) {
138+
puts("ERR: bus driven at ");
139+
puth(i);
140+
puts("\n");
141+
goto fail;
142+
}
124143
set_bitbanged_gmlan(pkt_stuffed[i]);
144+
last = pkt_stuffed[i];
125145
}
126146

147+
fail:
148+
set_bitbanged_gmlan(1); // recessive
127149
exit_critical_section();
128150
set_gpio_mode(GPIOB, 13, MODE_INPUT);
129151

tests/gmbitbang/test.py

+1
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,5 @@
2424
p1.can_send(123, "\x01\x02\x03\x04\x05\x06\x07\x08", bus=3)
2525
time.sleep(0.01)
2626
print p2.can_recv()
27+
exit(0)
2728

0 commit comments

Comments
 (0)