support fake LIN sending

master
George Hotz 2017-04-26 16:30:01 -07:00
parent 00791dcea8
commit dd676652b5
1 changed files with 8 additions and 0 deletions

View File

@ -490,6 +490,7 @@ void usb_cb_ep2_out(uint8_t *usbdata, int len) {
// send on CAN
void usb_cb_ep3_out(uint8_t *usbdata, int len) {
int dpkt = 0;
int i;
for (dpkt = 0; dpkt < len; dpkt += 0x10) {
uint32_t *tf = (uint32_t*)(&usbdata[dpkt]);
int flags = (tf[1] >> 4) & 0xF;
@ -509,6 +510,13 @@ void usb_cb_ep3_out(uint8_t *usbdata, int len) {
CAN = CAN3;
can_q = &can_tx3_q;
#endif
} else if (flags == 8 || flags == 9) {
// fake LIN as CAN
uart_ring *lin_ring = (flags == 8) ? &lin1_ring : &lin2_ring;
for (i = 0; i < (tf[1] & 0xF); i++ ){
putc(lin_ring, ((uint8_t*)tf[2])[i]);
}
continue;
} else {
// no crash
continue;