bri3d / esp32-isotp-ble-bridge

ESP32-IDF based BLE<->ISO-TP bridge targeting Macchina A0 hardware
Other
31 stars 28 forks source link

Fails to handle "large-ish" ISO-TP messages (larger than 0x2D bytes) #6

Closed brandonros closed 3 years ago

brandonros commented 3 years ago

I've got a test set up on bench that is doing $22 F15A over BLE.

Should be getting back 62 F15A 020004110a0b00191471020004110a0b00191471020004110a0b0019147102008005011000fe000002008005011000fe000002008005011000fe0000020004110a0b00191471020004110a0b00191471020004110a0b00191471020004110a0b00191471

Obviously this is going to be extremely difficult to trace back.

D (19871) ISOTPtoBLE: Sending TWAI Message with ID 000007E0
D (19881) ISOTPtoBLE: TX Data: 03
D (19881) ISOTPtoBLE: TX Data: 22
D (19891) ISOTPtoBLE: TX Data: F1
D (19901) ISOTPtoBLE: TX Data: 5A
D (19911) ISOTPtoBLE: TX Data: AA
D (19911) ISOTPtoBLE: TX Data: AA
D (19921) ISOTPtoBLE: TX Data: AA
D (19921) ISOTPtoBLE: TX Data: AA
I (19931) ISOTPtoBLE: Received TWAI message with identifier 000007E8 and length 00000008
D (19941) ISOTPtoBLE: RX Data: 10
D (19941) ISOTPtoBLE: RX Data: 67
D (19951) ISOTPtoBLE: RX Data: 62
D (19951) ISOTPtoBLE: RX Data: F1
D (19961) ISOTPtoBLE: RX Data: 5A
D (19961) ISOTPtoBLE: RX Data: 02
D (19961) ISOTPtoBLE: RX Data: 00
D (19971) ISOTPtoBLE: RX Data: 04
D (19971) ISOTPtoBLE: Took isotp_mutex
I (19981) ISOTPtoBLE: isotp_on_can_message(ECU)
D (19981) ISOTPtoBLE: Sending TWAI Message with ID 000007E0
D (19991) ISOTPtoBLE: TX Data: 30
D (19991) ISOTPtoBLE: TX Data: 08
D (20001) ISOTPtoBLE: TX Data: 00
D (20001) ISOTPtoBLE: TX Data: AA
D (20011) ISOTPtoBLE: TX Data: AA
D (20011) ISOTPtoBLE: TX Data: AA
D (20011) ISOTPtoBLE: TX Data: AA
D (20021) ISOTPtoBLE: TX Data: AA
I (20021) ISOTPtoBLE: Received TWAI message with identifier 000007E8 and length 00000008
D (20031) ISOTPtoBLE: RX Data: 21
D (20041) ISOTPtoBLE: RX Data: 11
D (20051) ISOTPtoBLE: RX Data: 0A
D (20051) ISOTPtoBLE: RX Data: 0B
D (20051) ISOTPtoBLE: RX Data: 00
D (20061) ISOTPtoBLE: RX Data: 19
D (20061) ISOTPtoBLE: RX Data: 14
D (20061) ISOTPtoBLE: RX Data: 71
D (20071) ISOTPtoBLE: Took isotp_mutex
I (20071) ISOTPtoBLE: isotp_on_can_message(ECU)
I (20071) ISOTPtoBLE: Received TWAI message with identifier 000007E8 and length 00000008
D (20091) ISOTPtoBLE: RX Data: 22
D (20101) ISOTPtoBLE: RX Data: 02
D (20101) ISOTPtoBLE: RX Data: 00
D (20111) ISOTPtoBLE: RX Data: 04
D (20111) ISOTPtoBLE: RX Data: 11
D (20121) ISOTPtoBLE: RX Data: 0A
D (20121) ISOTPtoBLE: RX Data: 0B
D (20131) ISOTPtoBLE: RX Data: 00
D (20141) ISOTPtoBLE: Took isotp_mutex
I (20141) ISOTPtoBLE: isotp_on_can_message(ECU)
I (20141) ISOTPtoBLE: Received TWAI message with identifier 000007E8 and length 00000008
D (20161) ISOTPtoBLE: RX Data: 23
D (20161) ISOTPtoBLE: RX Data: 19
D (20161) ISOTPtoBLE: RX Data: 14
D (20171) ISOTPtoBLE: RX Data: 71
D (20181) ISOTPtoBLE: RX Data: 02
D (20181) ISOTPtoBLE: RX Data: 00
D (20191) ISOTPtoBLE: RX Data: 04
D (20191) ISOTPtoBLE: RX Data: 11
D (20201) ISOTPtoBLE: Took isotp_mutex
I (20211) ISOTPtoBLE: isotp_on_can_message(ECU)
I (20211) ISOTPtoBLE: Received TWAI message with identifier 000007E8 and length 00000008
D (20221) ISOTPtoBLE: RX Data: 24
D (20231) ISOTPtoBLE: RX Data: 0A
D (20231) ISOTPtoBLE: RX Data: 0B
D (20241) ISOTPtoBLE: RX Data: 00
D (20251) ISOTPtoBLE: RX Data: 19
D (20251) ISOTPtoBLE: RX Data: 14
D (20261) ISOTPtoBLE: RX Data: 71
D (20261) ISOTPtoBLE: RX Data: 02
D (20271) ISOTPtoBLE: Took isotp_mutex
I (20281) ISOTPtoBLE: isotp_on_can_message(ECU)
I (20281) ISOTPtoBLE: Received TWAI message with identifier 000007E8 and length 00000008
D (20291) ISOTPtoBLE: RX Data: 25
D (20301) ISOTPtoBLE: RX Data: 00
D (20301) ISOTPtoBLE: RX Data: 80
D (20311) ISOTPtoBLE: RX Data: 05
D (20311) ISOTPtoBLE: RX Data: 01
D (20321) ISOTPtoBLE: RX Data: 10
D (20331) ISOTPtoBLE: RX Data: 00
D (20331) ISOTPtoBLE: RX Data: FE
D (20341) ISOTPtoBLE: Took isotp_mutex
I (20341) ISOTPtoBLE: isotp_on_can_message(ECU)
I (20351) ISOTPtoBLE: Received TWAI message with identifier 000007E8 and length 00000008
D (20361) ISOTPtoBLE: RX Data: 26
D (20371) ISOTPtoBLE: RX Data: 00
D (20371) ISOTPtoBLE: RX Data: 00
D (20371) ISOTPtoBLE: RX Data: 02
D (20381) ISOTPtoBLE: RX Data: 00
D (20381) ISOTPtoBLE: RX Data: 80
D (20391) ISOTPtoBLE: RX Data: 05
D (20401) ISOTPtoBLE: RX Data: 01
D (20401) ISOTPtoBLE: Took isotp_mutex
I (20401) ISOTPtoBLE: isotp_on_can_message(ECU)

SHOULD KEEP GOING, doesn't?
brandonros commented 3 years ago
106762F15A020004
21110A0B00191471
22020004110A0B00
2319147102000411
240A0B0019147102
25008005011000FE
2600000200800501
rest is missing

Get to about there RX wise before everything falls apart

brandonros commented 3 years ago

ok, progress. twai_general_config_t rx_queue_len was 5, got it fixed it a branch. however, new problem:

I (9155) ISOTPtoBLE: Received a message from BLE stack with length 0000000B
I (9165) ISOTPtoBLE: Received a message from BLE stack with length 0000000B rx_id 000007e0 tx_id 000007e8
I (9175) ISOTPtoBLE: isotp_send_queue_task: sending message with 3 size (rx id: 000007e0 / tx id: 000007e8)
D (9185) ISOTPtoBLE: Sending TWAI Message with ID 000007E0
D (9195) ISOTPtoBLE: TX Data: 03
D (9195) ISOTPtoBLE: TX Data: 22
D (9205) ISOTPtoBLE: TX Data: F1
D (9215) ISOTPtoBLE: TX Data: 5A
D (9215) ISOTPtoBLE: TX Data: AA
D (9215) ISOTPtoBLE: TX Data: AA
D (9225) ISOTPtoBLE: TX Data: AA
D (9225) ISOTPtoBLE: TX Data: AA
I (9245) ISOTPtoBLE: Received TWAI message with identifier 000007E8 and length 00000008
I (9255) ISOTPtoBLE: rx_queue_len = 1024
I (9255) ISOTPtoBLE: tx_queue_len = 1024
D (9265) ISOTPtoBLE: RX Data: 10
D (9275) ISOTPtoBLE: RX Data: 67
D (9275) ISOTPtoBLE: RX Data: 62
D (9275) ISOTPtoBLE: RX Data: F1
D (9285) ISOTPtoBLE: RX Data: 5A
D (9295) ISOTPtoBLE: RX Data: 02
D (9295) ISOTPtoBLE: RX Data: 00
D (9295) ISOTPtoBLE: RX Data: 04
D (9305) ISOTPtoBLE: Taking isotp_mutex
D (9315) ISOTPtoBLE: Took isotp_mutex
I (9325) ISOTPtoBLE: isotp_on_can_message(ECU)
isotp_on_can_message len = 8
isotp_on_can_message [00] = 10
isotp_on_can_message [01] = 67
isotp_on_can_message [02] = 62
isotp_on_can_message [03] = f1
isotp_on_can_message [04] = 5a
isotp_on_can_message [05] = 02
isotp_on_can_message [06] = 00
isotp_on_can_message [07] = 04
isotp_on_can_message: ISOTP_PCI_TYPE_FIRST_FRAME
D (9375) ISOTPtoBLE: Sending TWAI Message with ID 000007E0
D (9385) ISOTPtoBLE: TX Data: 30
D (9385) ISOTPtoBLE: TX Data: 08
D (9395) ISOTPtoBLE: TX Data: 00
D (9395) ISOTPtoBLE: TX Data: AA
D (9405) ISOTPtoBLE: TX Data: AA
D (9405) ISOTPtoBLE: TX Data: AA
D (9415) ISOTPtoBLE: TX Data: AA
D (9415) ISOTPtoBLE: TX Data: AA
I (9425) ISOTPtoBLE: Received TWAI message with identifier 000007E8 and length 00000008
I (9435) ISOTPtoBLE: rx_queue_len = 1024
I (9435) ISOTPtoBLE: tx_queue_len = 1024
D (9445) ISOTPtoBLE: RX Data: 21
D (9445) ISOTPtoBLE: RX Data: 11
D (9445) ISOTPtoBLE: RX Data: 0A
D (9455) ISOTPtoBLE: RX Data: 0B
D (9455) ISOTPtoBLE: RX Data: 00
D (9455) ISOTPtoBLE: RX Data: 19
D (9465) ISOTPtoBLE: RX Data: 14
D (9465) ISOTPtoBLE: RX Data: 71
D (9465) ISOTPtoBLE: Taking isotp_mutex
D (9475) ISOTPtoBLE: Took isotp_mutex
I (9475) ISOTPtoBLE: isotp_on_can_message(ECU)
isotp_on_can_message len = 8
isotp_on_can_message [00] = 21
isotp_on_can_message [01] = 11
isotp_on_can_message [02] = 0a
isotp_on_can_message [03] = 0b
isotp_on_can_message [04] = 00
isotp_on_can_message [05] = 19
isotp_on_can_message [06] = 14
isotp_on_can_message [07] = 71
isotp_on_can_message: ISOTP_PCI_TYPE_CONSECUTIVE_FRAME
I (9525) ISOTPtoBLE: Received TWAI message with identifier 000007E8 and length 00000008
I (9525) ISOTPtoBLE: rx_queue_len = 1024
I (9535) ISOTPtoBLE: tx_queue_len = 1024
D (9545) ISOTPtoBLE: RX Data: 22
D (9545) ISOTPtoBLE: RX Data: 02
D (9555) ISOTPtoBLE: RX Data: 00
D (9555) ISOTPtoBLE: RX Data: 04
D (9555) ISOTPtoBLE: RX Data: 11
D (9565) ISOTPtoBLE: RX Data: 0A
D (9575) ISOTPtoBLE: RX Data: 0B
D (9575) ISOTPtoBLE: RX Data: 00
D (9585) ISOTPtoBLE: Taking isotp_mutex
D (9585) ISOTPtoBLE: Took isotp_mutex
I (9595) ISOTPtoBLE: isotp_on_can_message(ECU)
isotp_on_can_message len = 8
isotp_on_can_message [00] = 22
isotp_on_can_message [01] = 02
isotp_on_can_message [02] = 00
isotp_on_can_message [03] = 04
isotp_on_can_message [04] = 11
isotp_on_can_message [05] = 0a
isotp_on_can_message [06] = 0b
isotp_on_can_message [07] = 00
isotp_on_can_message: ISOTP_PCI_TYPE_CONSECUTIVE_FRAME
I (9635) ISOTPtoBLE: Received TWAI message with identifier 000007E8 and length 00000008
I (9645) ISOTPtoBLE: rx_queue_len = 1024
I (9655) ISOTPtoBLE: tx_queue_len = 1024
D (9665) ISOTPtoBLE: RX Data: 23
D (9665) ISOTPtoBLE: RX Data: 19
D (9675) ISOTPtoBLE: RX Data: 14
D (9675) ISOTPtoBLE: RX Data: 71
D (9685) ISOTPtoBLE: RX Data: 02
D (9695) ISOTPtoBLE: RX Data: 00
D (9695) ISOTPtoBLE: RX Data: 04
D (9705) ISOTPtoBLE: RX Data: 11
D (9705) ISOTPtoBLE: Taking isotp_mutex
D (9715) ISOTPtoBLE: Took isotp_mutex
I (9715) ISOTPtoBLE: isotp_on_can_message(ECU)
isotp_on_can_message len = 8
isotp_on_can_message [00] = 23
isotp_on_can_message [01] = 19
isotp_on_can_message [02] = 14
isotp_on_can_message [03] = 71
isotp_on_can_message [04] = 02
isotp_on_can_message [05] = 00
isotp_on_can_message [06] = 04
isotp_on_can_message [07] = 11
isotp_on_can_message: ISOTP_PCI_TYPE_CONSECUTIVE_FRAME
I (9775) ISOTPtoBLE: Received TWAI message with identifier 000007E8 and length 00000008
I (9785) ISOTPtoBLE: rx_queue_len = 1024
I (9785) ISOTPtoBLE: tx_queue_len = 1024
D (9795) ISOTPtoBLE: RX Data: 24
D (9805) ISOTPtoBLE: RX Data: 0A
D (9805) ISOTPtoBLE: RX Data: 0B
D (9815) ISOTPtoBLE: RX Data: 00
D (9825) ISOTPtoBLE: RX Data: 19
D (9825) ISOTPtoBLE: RX Data: 14
D (9825) ISOTPtoBLE: RX Data: 71
D (9835) ISOTPtoBLE: RX Data: 02
D (9845) ISOTPtoBLE: Taking isotp_mutex
D (9845) ISOTPtoBLE: Took isotp_mutex
I (9855) ISOTPtoBLE: isotp_on_can_message(ECU)
isotp_on_can_message len = 8
isotp_on_can_message [00] = 24
isotp_on_can_message [01] = 0a
isotp_on_can_message [02] = 0b
isotp_on_can_message [03] = 00
isotp_on_can_message [04] = 19
isotp_on_can_message [05] = 14
isotp_on_can_message [06] = 71
isotp_on_can_message [07] = 02
isotp_on_can_message: ISOTP_PCI_TYPE_CONSECUTIVE_FRAME
I (9915) ISOTPtoBLE: Received TWAI message with identifier 000007E8 and length 00000008
I (9915) ISOTPtoBLE: rx_queue_len = 1024
I (9925) ISOTPtoBLE: tx_queue_len = 1024
D (9935) ISOTPtoBLE: RX Data: 25
D (9935) ISOTPtoBLE: RX Data: 00
D (9945) ISOTPtoBLE: RX Data: 80
D (9955) ISOTPtoBLE: RX Data: 05
D (9955) ISOTPtoBLE: RX Data: 01
D (9965) ISOTPtoBLE: RX Data: 10
D (9965) ISOTPtoBLE: RX Data: 00
D (9975) ISOTPtoBLE: RX Data: FE
D (9975) ISOTPtoBLE: Taking isotp_mutex
D (9985) ISOTPtoBLE: Took isotp_mutex
I (9985) ISOTPtoBLE: isotp_on_can_message(ECU)
isotp_on_can_message len = 8
isotp_on_can_message [00] = 25
isotp_on_can_message [01] = 00
isotp_on_can_message [02] = 80
isotp_on_can_message [03] = 05
isotp_on_can_message [04] = 01
isotp_on_can_message [05] = 10
isotp_on_can_message [06] = 00
isotp_on_can_message [07] = fe
isotp_on_can_message: ISOTP_PCI_TYPE_CONSECUTIVE_FRAME
I (10045) ISOTPtoBLE: Received TWAI message with identifier 000007E8 and length 00000008
I (10055) ISOTPtoBLE: rx_queue_len = 1024
I (10055) ISOTPtoBLE: tx_queue_len = 1024
D (10065) ISOTPtoBLE: RX Data: 26
D (10065) ISOTPtoBLE: RX Data: 00
D (10075) ISOTPtoBLE: RX Data: 00
D (10075) ISOTPtoBLE: RX Data: 02
D (10075) ISOTPtoBLE: RX Data: 00
D (10085) ISOTPtoBLE: RX Data: 80
D (10085) ISOTPtoBLE: RX Data: 05
D (10085) ISOTPtoBLE: RX Data: 01
D (10095) ISOTPtoBLE: Taking isotp_mutex
D (10105) ISOTPtoBLE: Took isotp_mutex
I (10105) ISOTPtoBLE: isotp_on_can_message(ECU)
isotp_on_can_message len = 8
isotp_on_can_message [00] = 26
isotp_on_can_message [01] = 00
isotp_on_can_message [02] = 00
isotp_on_can_message [03] = 02
isotp_on_can_message [04] = 00
isotp_on_can_message [05] = 80
isotp_on_can_message [06] = 05
isotp_on_can_message [07] = 01
isotp_on_can_message: ISOTP_PCI_TYPE_CONSECUTIVE_FRAME
I (10155) ISOTPtoBLE: Received TWAI message with identifier 000007E8 and length 00000008
I (10155) ISOTPtoBLE: rx_queue_len = 1024
I (10165) ISOTPtoBLE: tx_queue_len = 1024
D (10165) ISOTPtoBLE: RX Data: 27
D (10175) ISOTPtoBLE: RX Data: 10
D (10175) ISOTPtoBLE: RX Data: 00
D (10185) ISOTPtoBLE: RX Data: FE
D (10195) ISOTPtoBLE: RX Data: 00
D (10195) ISOTPtoBLE: RX Data: 00
D (10195) ISOTPtoBLE: RX Data: 02
D (10205) ISOTPtoBLE: RX Data: 00
D (10205) ISOTPtoBLE: Taking isotp_mutex
D (10205) ISOTPtoBLE: Took isotp_mutex
I (10215) ISOTPtoBLE: isotp_on_can_message(ECU)
isotp_on_can_message len = 8
isotp_on_can_message [00] = 27
isotp_on_can_message [01] = 10
isotp_on_can_message [02] = 00
isotp_on_can_message [03] = fe
isotp_on_can_message [04] = 00
isotp_on_can_message [05] = 00
isotp_on_can_message [06] = 02
isotp_on_can_message [07] = 00
isotp_on_can_message: ISOTP_PCI_TYPE_CONSECUTIVE_FRAME
I (10265) ISOTPtoBLE: Received TWAI message with identifier 000007E8 and length 00000008
I (10275) ISOTPtoBLE: rx_queue_len = 1024
I (10285) ISOTPtoBLE: tx_queue_len = 1024
D (10285) ISOTPtoBLE: RX Data: 28
D (10295) ISOTPtoBLE: RX Data: 80
D (10295) ISOTPtoBLE: RX Data: 05
D (10305) ISOTPtoBLE: RX Data: 01
D (10305) ISOTPtoBLE: RX Data: 10
D (10315) ISOTPtoBLE: RX Data: 00
D (10315) ISOTPtoBLE: RX Data: FE
D (10325) ISOTPtoBLE: RX Data: 00
D (10335) ISOTPtoBLE: Taking isotp_mutex
D (10335) ISOTPtoBLE: Took isotp_mutex
I (10345) ISOTPtoBLE: isotp_on_can_message(ECU)
isotp_on_can_message len = 8
isotp_on_can_message [00] = 28
isotp_on_can_message [01] = 80
isotp_on_can_message [02] = 05
isotp_on_can_message [03] = 01
isotp_on_can_message [04] = 10
isotp_on_can_message [05] = 00
isotp_on_can_message [06] = fe
isotp_on_can_message [07] = 00
isotp_on_can_message: ISOTP_PCI_TYPE_CONSECUTIVE_FRAME
D (10405) ISOTPtoBLE: Sending TWAI Message with ID 000007E0
D (10405) ISOTPtoBLE: TX Data: 30
D (10415) ISOTPtoBLE: TX Data: 08
D (10415) ISOTPtoBLE: TX Data: 00
D (10415) ISOTPtoBLE: TX Data: AA
D (10425) ISOTPtoBLE: TX Data: AA
D (10425) ISOTPtoBLE: TX Data: AA
D (10435) ISOTPtoBLE: TX Data: AA
D (10435) ISOTPtoBLE: TX Data: AA

notice the timestamps here, 4+ seconds?

I (14245) ISOTPtoBLE: Received a message from BLE stack with length 0000000B
brandonros commented 3 years ago

multi-part fix in https://github.com/bri3d/esp32-isotp-ble-bridge/pull/5