diff options
-rw-r--r-- | src/cansend.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/cansend.c b/src/cansend.c index caec590..ffb888a 100644 --- a/src/cansend.c +++ b/src/cansend.c @@ -47,7 +47,9 @@ enum { int main(int argc, char **argv) { - struct can_frame frame; + struct can_frame frame = { + .can_id = 1, + }; struct ifreq ifr; struct sockaddr_can addr; char *interface = "can0"; @@ -70,8 +72,6 @@ int main(int argc, char **argv) { 0, 0, 0, 0 }, }; - frame.can_id = 1; - while ((opt = getopt_long(argc, argv, "hf:t:p:vi:l::re", long_options, NULL)) != -1) { switch (opt) { case 'h': @@ -155,11 +155,16 @@ int main(int argc, char **argv) } frame.can_dlc = dlc; - if (rtr) - frame.can_id |= CAN_RTR_FLAG; - if (extended) + if (extended) { + frame.can_id &= CAN_EFF_MASK; frame.can_id |= CAN_EFF_FLAG; + } else { + frame.can_id &= CAN_SFF_MASK; + } + + if (rtr) + frame.can_id |= CAN_RTR_FLAG; if (verbose) { printf("id: %d ", frame.can_id); |