]> rtime.felk.cvut.cz Git - lincan.git/blobdiff - lincan/utils/send.c
The first enhanced version of Linux CAN-bus driver for OCERA project
[lincan.git] / lincan / utils / send.c
diff --git a/lincan/utils/send.c b/lincan/utils/send.c
new file mode 100644 (file)
index 0000000..c8373b1
--- /dev/null
@@ -0,0 +1,67 @@
+#include <stdio.h>
+#include <string.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <sys/ioctl.h>
+
+#include "../include/can.h"
+#define MAXL 40
+
+int main(void)
+{
+       int i=0, fd=0, ret=0, count=0;
+       char loop=0;
+       unsigned long bits;
+       char ch, transmission[MAXL+1], specialfile[MAXL+1]="/dev/can0", emptystring[MAXL+1]="", buf[MAXL+1];
+       char remote[MAXL+1];
+       struct canmsg_t message;
+
+       printf("\nThis program allows you to send  a stream of Can messages.\n");
+       printf("Please answer the following questions:\n\n");
+
+//             message.flags = 0;
+       message.flags |= MSG_EXT;  //hard code EXT for now
+
+       printf("From wich device file would you like to send the message?\n");
+       printf(specialfile);
+       *buf='\0';
+       fgets(buf,MAXL,stdin);
+       buf[strcspn(buf,"\n")]='\0';
+       if(*buf)
+               strncpy(specialfile,buf,MAXL);
+       specialfile[MAXL]='\0';
+       printf("Enter the starting Message ID ");
+       scanf("%lx",&message.id);
+       printf("Enter the Message Length ");
+       scanf("%d",&message.length);
+       for (i=0; i<message.length; i++) {
+               printf("Enter data byte [%d] ",i);
+               scanf("%x",(int *)&message.data[i]);
+       }
+
+       fd=open(specialfile,O_RDWR);
+       if (fd<0) {
+               printf("Error opening %s\n",specialfile);
+               return -1;
+       }
+
+       bits=0;
+       while(1) {
+               message.flags = MSG_EXT;
+               message.id++;
+               message.length %= 8;
+               message.length++;
+               bits += 8*(4+message.length);
+               memcpy(message.data,&bits,sizeof(bits));
+               ret=write(fd, &message, sizeof(struct canmsg_t));
+               if (ret<0)
+                       printf("Error sending message from %s\n",specialfile);
+       }
+
+       if (close(fd)) {
+               printf("Error closing %s\n",specialfile);
+               return -1;
+       }
+
+       return 0;
+}