summaryrefslogtreecommitdiffstats
path: root/src/isotp/receive.c
blob: 1692f8d39bc1aa61b0726a1e956563b1d80a87f2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <isotp/receive.h>

bool isotp_handle_single_frame(IsoTpHandle* handle, IsoTpMessage* message) {
    isotp_complete_receive(handle, message);
    return true;
}

void isotp_complete_receive(IsoTpHandle* handle, IsoTpMessage* message) {
    if(handle->receive_handle.message_received_callback != NULL) {
        handle->receive_handle.message_received_callback(message);
    }
}

IsoTpHandle isotp_receive(IsoTpShims* shims,
        const uint16_t arbitration_id, IsoTpMessageReceivedHandler callback) {
    IsoTpReceiveHandle receive_handle = {
        arbitration_id: arbitration_id,
        message_received_callback: callback
    };

    IsoTpHandle handle = {
        success: false,
        completed: true,
        receive_handle: receive_handle,
        type: ISOTP_HANDLE_RECEIVING
    };
    return handle;
}