In xenomai-2.5.5.2/src/utils/can/rtcansend.c, the code that handles local loopback mode looks like this:

static void print_usage(char *prg)
{
...
            " -L, --loopback=0|1    switch local loopback off or on\n"
...
}

static int loopback=-1;

        switch (opt) {
        ...
        case 'L':
            loopback = strtoul(optarg, NULL, 0);
            break;
        ...
        }

...
    if (loopback >= 0) {
        ret = rt_dev_setsockopt(s, SOL_CAN_RAW, CAN_RAW_LOOPBACK,
                                &loopback, sizeof(loopback));
        if (ret < 0) {
            fprintf(stderr, "rt_dev_setsockopt: %s\n", strerror(-ret));
            goto failure;
        }
        if (verbose)
            printf("Using loopback=%d\n", loopback);
    }

It looks like the default value for loopback is -1, and if you set it to 0 or 1, it turns loopback on, which seems strange. I don't understand rt_dev_setsockopt() fully, so I'm not sure if it's a bug - I don't know if -1 and 0 and 1 are three separate loopback states, but I think it merits attention. I think either the code is wrong or the help string and man page are not clear.

-Andy

_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help

Reply via email to