apix_can_example: Add CANFD support to configure data bitrate
This commit adds CANFD support to configure the data bitrate and to enable the CANFD feature. Signed-off-by: Mike Engel <Mike.Engel@digi.com> https://jira.digi.com/browse/DEL-6588
This commit is contained in:
parent
953f10971c
commit
41289be92e
|
|
@ -63,8 +63,14 @@ Once the binary is in the target, launch the application:
|
|||
Usage: %s -i <can-iface> -b <bitrate> [options]"
|
||||
-i <can-iface> Name of the CAN interface"
|
||||
-b <bitrate> Bitrate to use (Hz)"
|
||||
"-s <sample-ponit> Bitrate Sample Point\n"
|
||||
-f <filters> Comma-separated filter list in the format"
|
||||
id:mask (id and mask values in hex)"
|
||||
"-o Enable CAN FD support\n"
|
||||
"--- CAN FD options ---\n"
|
||||
" -d <dbitrate> Maximum data bitrate for CAN FD (Hz)\n"
|
||||
" -a <dsample-point> CAN FD data bitate sample point\n"
|
||||
"---\n"
|
||||
-p Print message info"
|
||||
-c Print message counter"
|
||||
-h Help"
|
||||
|
|
@ -89,10 +95,16 @@ Example application using libdigiapix CAN support"
|
|||
"Usage: %s -i <can-iface> -b <bitrate> [options]"
|
||||
"-i <can-iface> Name of the CAN interface"
|
||||
"-b <bitrate> Bitrate to use (Hz)"
|
||||
"-s <sample_point> CAN bitrate sample point\n"
|
||||
"-n <num_msgs> Number of messages to send (default 1)"
|
||||
"-t <delay> Inter frame delay in ms (default 100)"
|
||||
"-I <msg_id> Message id in hex (default 123)"
|
||||
"-l <data_length> Payload length (default 8)"
|
||||
"-o Enable CAN FD support\n"
|
||||
"--- CAN FD options ---\n"
|
||||
" -d <dbitrate> Maximum data bitrate for CAN FD (Hz)\n"
|
||||
" -p <dsample-point> CAN FD data bitate sample point\n"
|
||||
"---\n"
|
||||
"-r Generate a random ID (will ignore the -I parameter)"
|
||||
"-p Generate a random payload (will ignore the -l parameter)"
|
||||
"-e Use extended id"
|
||||
|
|
|
|||
|
|
@ -49,8 +49,14 @@ static void usage_and_exit(char *name, int exitval)
|
|||
"Usage: %s -i <can-iface> -b <bitrate> [options]\n\n"
|
||||
"-i <can-iface> Name of the CAN interface\n"
|
||||
"-b <bitrate> Bitrate to use (Hz)\n"
|
||||
"-s <sample-point> Bitrate Sample Point\n"
|
||||
"-f <filters> Comma-separated filter list in the format\n"
|
||||
" id:mask (id and mask values in hex)\n"
|
||||
"-o Enable CAN FD support\n"
|
||||
"--- CAN FD options ---\n"
|
||||
" -d <dbitrate> Maximum data bitrate for CAN FD (Hz)\n"
|
||||
" -a <dsample-point> CAN FD data bitate sample point\n"
|
||||
"---\n"
|
||||
"-p Print message info\n"
|
||||
"-c Print message counter\n"
|
||||
"-h Help\n"
|
||||
|
|
@ -58,7 +64,8 @@ static void usage_and_exit(char *name, int exitval)
|
|||
"Examples:\n"
|
||||
"%s -i can0 -b 500000 -f 023:fff,006:00f\n"
|
||||
"%s -i can1 -b 100000\n"
|
||||
"\n", name, name, name);
|
||||
"%s -i can1 -b 100000 -d 100000 -o -p\n"
|
||||
"\n", name, name, name, name);
|
||||
|
||||
exit(exitval);
|
||||
}
|
||||
|
|
@ -201,6 +208,7 @@ int main(int argc, char **argv)
|
|||
int nfilters = 0;
|
||||
int opt;
|
||||
int ret;
|
||||
float sp = 0.0;
|
||||
struct can_filter deffilter;
|
||||
|
||||
deffilter.can_id = 0;
|
||||
|
|
@ -212,7 +220,7 @@ int main(int argc, char **argv)
|
|||
|
||||
ldx_can_set_defconfig(&ifcfg);
|
||||
|
||||
while ((opt = getopt(argc, argv, "i:b:f:pc")) > 0) {
|
||||
while ((opt = getopt(argc, argv, "i:b:f:d:s:a:opc")) > 0) {
|
||||
switch (opt) {
|
||||
case 'i':
|
||||
iface = optarg;
|
||||
|
|
@ -222,6 +230,20 @@ int main(int argc, char **argv)
|
|||
ifcfg.bitrate = strtoul(optarg, NULL, 10);
|
||||
break;
|
||||
|
||||
case 'd':
|
||||
ifcfg.dbitrate = strtoul(optarg, NULL, 10);
|
||||
break;
|
||||
|
||||
case 's':
|
||||
sp = strtof(optarg, NULL);
|
||||
ifcfg.bit_timing.sample_point = (__u32)(sp * 1000);
|
||||
break;
|
||||
|
||||
case 'a':
|
||||
sp = strtof(optarg, NULL);
|
||||
ifcfg.dbit_timing.sample_point = (__u32)(sp * 1000);
|
||||
break;
|
||||
|
||||
case 'f':
|
||||
ret = parse_filters(optarg, &cfilter, &nfilters);
|
||||
if (ret) {
|
||||
|
|
@ -230,6 +252,10 @@ int main(int argc, char **argv)
|
|||
}
|
||||
break;
|
||||
|
||||
case 'o':
|
||||
ifcfg.canfd_enabled = true;
|
||||
break;
|
||||
|
||||
case 'p':
|
||||
prn_msg_info = true;
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -61,19 +61,26 @@ static void usage_and_exit(char *name, int exitval)
|
|||
"Usage: %s -i <can-iface> -b <bitrate> [options]\n\n"
|
||||
"-i <can-iface> Name of the CAN interface\n"
|
||||
"-b <bitrate> Bitrate to use (Hz)\n"
|
||||
"-s <sample-point> CAN bitrate sample point\n"
|
||||
"-n <num_msgs> Number of messages to send (default 1)\n"
|
||||
"-t <delay> Inter frame delay in ms (default 100)\n"
|
||||
"-I <msg_id> Message id in hex (default 123)\n"
|
||||
"-l <data_length> Payload length (default 8)\n"
|
||||
"-o Enable CAN FD support\n"
|
||||
"--- CAN FD options ---\n"
|
||||
" -d <dbitrate> Maximum data bitrate for CAN FD (Hz)\n"
|
||||
" -p <dsample-point> CAN FD data bitate sample point\n"
|
||||
"---\n"
|
||||
"-r Generate a random ID (will ignore the -I parameter)\n"
|
||||
"-p Generate a random payload (will ignore the -l parameter)\n"
|
||||
"-c Generate a random payload (will ignore the -l parameter)\n"
|
||||
"-e Use extended id\n"
|
||||
"-R Set RTR\n"
|
||||
"\n"
|
||||
"Examples:\n"
|
||||
"%s -i can0 -b 500000 -n 100 -R\n"
|
||||
"%s -i can1 -b 100000\n"
|
||||
"\n", name, name, name);
|
||||
"%s -i can1 -b 100000 -d 100000 -n 10 -o\n"
|
||||
"\n", name, name, name, name);
|
||||
|
||||
exit(exitval);
|
||||
}
|
||||
|
|
@ -180,6 +187,7 @@ int main(int argc, char **argv)
|
|||
uint32_t msg_id = 0x123;
|
||||
uint8_t msg_len = 8;
|
||||
uint8_t flags = 0;
|
||||
float sp = 0.0;
|
||||
struct canfd_frame frame;
|
||||
|
||||
srand (time(NULL));
|
||||
|
|
@ -190,7 +198,7 @@ int main(int argc, char **argv)
|
|||
|
||||
ldx_can_set_defconfig(&ifcfg);
|
||||
|
||||
while ((opt = getopt(argc, argv, "i:b:n:t:I:l:erRp")) > 0) {
|
||||
while ((opt = getopt(argc, argv, "i:b:n:t:I:l:a:d:s:t:oerRc")) > 0) {
|
||||
switch (opt) {
|
||||
case 'i':
|
||||
iface = optarg;
|
||||
|
|
@ -200,6 +208,10 @@ int main(int argc, char **argv)
|
|||
ifcfg.bitrate = strtoul(optarg, NULL, 10);
|
||||
break;
|
||||
|
||||
case 'd':
|
||||
ifcfg.dbitrate = strtoul(optarg, NULL, 10);
|
||||
break;
|
||||
|
||||
case 'n':
|
||||
num_msgs = strtoul(optarg, NULL, 10);
|
||||
break;
|
||||
|
|
@ -208,6 +220,16 @@ int main(int argc, char **argv)
|
|||
ms_delay = strtoul(optarg, NULL, 10);
|
||||
break;
|
||||
|
||||
case 's':
|
||||
sp = strtof(optarg, NULL);
|
||||
ifcfg.bit_timing.sample_point = (__u32)(sp * 1000);
|
||||
break;
|
||||
|
||||
case 'a':
|
||||
sp = strtof(optarg, NULL);
|
||||
ifcfg.dbit_timing.sample_point = (__u32)(sp * 1000);
|
||||
break;
|
||||
|
||||
case 'I':
|
||||
msg_id = strtoul(optarg, NULL, 16);
|
||||
break;
|
||||
|
|
@ -220,6 +242,10 @@ int main(int argc, char **argv)
|
|||
flags |= EXT_ID_MASK;
|
||||
break;
|
||||
|
||||
case 'o':
|
||||
ifcfg.canfd_enabled = true;
|
||||
break;
|
||||
|
||||
case 'r':
|
||||
flags |= RANDOM_ID_MASK;
|
||||
break;
|
||||
|
|
@ -228,7 +254,7 @@ int main(int argc, char **argv)
|
|||
flags |= RTR_BIT_MASK;
|
||||
break;
|
||||
|
||||
case 'p':
|
||||
case 'c':
|
||||
flags |= RANDOM_DLC_MASK;
|
||||
break;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue