-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathtest.c
66 lines (56 loc) · 1.81 KB
/
test.c
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <stdio.h>
#include "isotp.h"
void raw_can_send(uint32_t can_id, uint8_t *can_data, uint8_t can_dlc)
{
printf("can send\n");
for (int i = 0; i < can_dlc; i++)
{
printf("%02x ", can_data[i]);
}
printf("\n");
}
void isotp_rx_cb(uint8_t *data, int len, enum isotp_tatype tatype)
{
printf("rx complete\n");
for (int i = 0; i < len; i++)
{
printf("%02x ", data[i]);
}
printf("\n");
}
int main(void)
{
struct isotp isotp;
isotp_init(&isotp, 0x234, raw_can_send, isotp_rx_cb);
//// rx test
uint8_t sim_can_data[][8] = {
{0x07, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07},
{0x10, 0x10, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06},
{0x21, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d},
{0x22, 0x0e, 0x0f, 0x10, 0x00, 0x00, 0x00, 0x00},
};
// rx single frame
isotp_rcv(&isotp, sim_can_data[0], 8, ISOTP_TATYPE_PHYSICAL);
isotp_poll(&isotp);
// rx multi frame
isotp_rcv(&isotp, sim_can_data[1], 8, ISOTP_TATYPE_PHYSICAL);
isotp_poll(&isotp);
isotp_rcv(&isotp, sim_can_data[2], 8, ISOTP_TATYPE_PHYSICAL);
isotp_poll(&isotp);
isotp_rcv(&isotp, sim_can_data[3], 8, ISOTP_TATYPE_PHYSICAL);
isotp_poll(&isotp);
//// tx test
// tx single frame
uint8_t tx_data_0[] = {0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77};
isotp_send(&isotp, tx_data_0, sizeof(tx_data_0));
isotp_poll(&isotp);
// tx multi frame
uint8_t tx_data_1[] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10};
uint8_t sim_fc[] = {0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
isotp_send(&isotp, tx_data_1, sizeof(tx_data_1));
isotp_rcv(&isotp, sim_fc, 8, ISOTP_TATYPE_PHYSICAL);
isotp_poll(&isotp);
isotp_poll(&isotp);
isotp_poll(&isotp);
return 0;
}