X-Git-Url: http://rtime.felk.cvut.cz/gitweb/lincan.git/blobdiff_plain/4ddb8468e0688f83f24fc041cfb62512ee45194a..4cf24de229090b1ab6279570a564d224e13dd706:/lincan/utils/rxtx.c diff --git a/lincan/utils/rxtx.c b/lincan/utils/rxtx.c new file mode 100644 index 0000000..0adcef1 --- /dev/null +++ b/lincan/utils/rxtx.c @@ -0,0 +1,124 @@ +#include +#include +#include +#include +#include + +#include "../include/can.h" +#define MAXL 40 + +int main(void) +{ + int i=0, fd=0, ret=0, count=0; + char loop=0; + 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 or receive Can messages.\n"); + printf("Please answer the following questions:\n\n"); + + while ( (*transmission!='s') && (*transmission!='r') ) { + printf("Would you like to send or receive a message?\n"); + printf("send: | receive: "); + strcpy(transmission,emptystring); + count=0; + while ( (ch=getchar()) != '\n' ) + transmission[count++]=ch; + transmission[count]='\0'; + } + + while ( *remote!='y' && *remote!='n' ) { + printf("Should the message be configured for Remote Transmission Requests?\n"); + printf("yes: | no: "); + strcpy(remote,emptystring); + count=0; + while ( (ch=getchar()) != '\n' ) + remote[count++]=ch; + remote[count]='\0'; + } + if (remote[0]=='y') + message.flags |= MSG_RTR; + else + message.flags = 0; +// message.flags |= MSG_EXT; hard code EXT for now + + if (transmission[0]=='s') { + 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'; + specialfile[MAXL]='\0'; + printf("Enter the Message ID "); + scanf("%lx",&message.id); + printf("Enter the Message Length "); + scanf("%d",&message.length); + for (i=0; ioop\n"); + loop = 'l'; + while ( loop == 'l') { + loop = getchar(); + ret=read(fd, &message, sizeof(struct canmsg_t)); + if (ret<0) + printf("Error receiving message on %s\n", + specialfile); + else { + printf("Id : %lx\n",message.id); + printf("length : %d\n",message.length); + printf("flags : 0x%02x\n", message.flags); + printf("time : %ld\n", message.timestamp); + for (i=0; i