summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/cansend.c17
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);