1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2025-12-25 06:23:53 +01:00

test: conn_can: add remote request test

This commit is contained in:
Giuseppe Tipaldi 2020-03-27 17:48:15 +01:00
parent 267433b006
commit 1acb24b13e

View File

@ -67,6 +67,7 @@ static void print_usage(void)
{
puts("test_can list");
puts("test_can send ifnum can_id [B1 [B2 [B3 [B4 [B5 [B6 [B7 [B8]]]]]]]]");
puts("test_can sendrtr ifnum can_id lenght(0..8)");
printf("test_can recv ifnum user_id timeout can_id1 [can_id2..can_id%d]\n", MAX_FILTER);
puts("test_can close user_id");
#ifdef MODULE_CAN_ISOTP
@ -101,7 +102,7 @@ static int _list(int argc, char **argv) {
return 0;
}
static int _send(int argc, char **argv)
static int _send(int argc, char **argv, bool rtr)
{
if (argc < 5) {
print_usage();
@ -114,15 +115,28 @@ static int _send(int argc, char **argv)
return 1;
}
frame.can_id = strtoul(argv[3], NULL, 16);
frame.can_dlc = argc - 4;
if (rtr) {
frame.can_id = CAN_RTR_FLAG | strtoul(argv[3], NULL, 16);
frame.can_dlc = strtoul(argv[4], NULL, 10);
} else {
frame.can_id = strtoul(argv[3], NULL, 16);
frame.can_dlc = argc - 4;
}
if (frame.can_dlc > 8) {
puts("Invalid length");
return 1;
}
for (int i = 0; i < frame.can_dlc; i++) {
frame.data[i] = strtol(argv[4 + i], NULL, 16);
if (rtr) {
for (int i = 0; i < frame.can_dlc; i++) {
frame.data[i] = 0x0;
}
} else {
for (int i = 0; i < frame.can_dlc; i++) {
frame.data[i] = strtol(argv[4 + i], NULL, 16);
}
}
conn_can_raw_t conn;
conn_can_raw_create(&conn, NULL, 0, ifnum, 0);
int ret = conn_can_raw_send(&conn, &frame, 0);
@ -498,7 +512,10 @@ static int _can_handler(int argc, char **argv)
return _list(argc, argv);
}
else if (strncmp(argv[1], "send", 5) == 0) {
return _send(argc, argv);
return _send(argc, argv, false);
}
else if (strncmp(argv[1], "sendrtr", 8) == 0) {
return _send(argc, argv, true);
}
else if (strncmp(argv[1], "recv", 5) == 0) {
return _receive(argc, argv);