summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/isotp/isotp.c3
-rw-r--r--tests/test_receive.c11
2 files changed, 14 insertions, 0 deletions
diff --git a/src/isotp/isotp.c b/src/isotp/isotp.c
index 67a5df17..e233d386 100644
--- a/src/isotp/isotp.c
+++ b/src/isotp/isotp.c
@@ -56,6 +56,9 @@ IsoTpMessage isotp_receive_can_frame(IsoTpShims* shims, IsoTpHandle* handle,
return message;
}
} else if(handle->type == ISOTP_HANDLE_SENDING) {
+ // TODO this will need to be tested when we add multi-frame support,
+ // which is when it'll be necessary to pass in CAN messages to SENDING
+ // handles.
if(handle->send_handle.receiving_arbitration_id != arbitration_id) {
if(shims->log != NULL) {
shims->log("The arb ID 0x%x doesn't match the expected tx continuation ID 0x%x",
diff --git a/tests/test_receive.c b/tests/test_receive.c
index d8c2392e..95afb949 100644
--- a/tests/test_receive.c
+++ b/tests/test_receive.c
@@ -25,6 +25,16 @@ extern uint8_t last_message_sent_payload_size;
extern void setup();
+START_TEST (test_receive_empty_can_message)
+{
+ const uint8_t data[CAN_MESSAGE_BYTE_SIZE] = {0};
+ fail_if(HANDLE.completed);
+ IsoTpMessage message = isotp_receive_can_frame(&SHIMS, &HANDLE, 0x100, data, 0);
+ fail_if(message.completed);
+ fail_if(message_was_received);
+}
+END_TEST
+
START_TEST (test_receive_wrong_id)
{
const uint8_t data[CAN_MESSAGE_BYTE_SIZE] = {0};
@@ -79,6 +89,7 @@ Suite* testSuite(void) {
tcase_add_test(tc_core, test_receive_bad_pci);
tcase_add_test(tc_core, test_receive_single_frame);
tcase_add_test(tc_core, test_receive_single_frame_empty_payload);
+ tcase_add_test(tc_core, test_receive_empty_can_message);
suite_add_tcase(s, tc_core);
return s;