#include
#include
#include
#include
#include
#include
#include
//#include
//#include
//#include
#include "DIO96.h"
#include "control.h"
//hrtime_t samtime;
//hrtime_t samtime_old = 0;
int main()
{
unsigned char buf[10];
fd_set rfds;
struct timeval tv;
int retval;
int fd0, fd1, ctl, sem;
int n;
unsigned char data_ready;
struct msg_struct msg;
FILE *fp0;
if((fp0 = fopen("data_file", "w"))<0) {
fprintf(stderr, "Error opening data_file\n");
exit(1);
}
if ((fd0 = open("/dev/rtf0", O_RDONLY)) < 0) {
fprintf(stderr, "Error opening /dev/rtf0\n");
exit(1);
}
if ((fd1 = open("/dev/rtf1", O_RDONLY)) < 0) {
fprintf(stderr, "Error opening /dev/rtf1\n");
exit(1);
}
if ((ctl = open("/dev/rtf2", O_WRONLY)) < 0) {
fprintf(stderr, "Error opening /dev/rtf2\n");
exit(1);
}
if ((sem = open("/dev/rtf4", O_RDONLY)) < 0) {
fprintf(stderr, "Error opening /dev/rtf4\n");
exit(1);
}
msg.command = START_TASK;
msg.period = TICK_RESOLUTION; /* 1ns per tick */
msg.conf = DIO96_CONF;
msg.buffer_size=BUFSIZE/2;
if (write(ctl, &msg, sizeof(msg)) < 0) {
fprintf(stderr, "Can't send a command to RT-task\n");
exit(1);
}
while(1) {
FD_ZERO(&rfds);
FD_SET(sem, &rfds);
tv.tv_sec = 2;
tv.tv_usec = 0;
retval = select(sem+1, &rfds, NULL, NULL, &tv);
if (retval >0) {
n = read(sem, &data_ready, 1);
printf("FIFO 0x%x: ", data_ready);
if(data_ready==0x00) {
read(fd0, buf, BUFSIZE);
printf("fd0=0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x\n", buf[0],buf[1],buf[2],buf[3],buf[4],buf[5],buf[6],buf[7],buf[8],buf[9]);
}
if(data_ready==0x01) {
read(fd1, buf, BUFSIZE);
printf("fd1=0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x\n", buf[0],buf[1],buf[2],buf[3],buf[4],buf[5],buf[6],buf[7],buf[8],buf[9]);
}
}
}
close(fd0);
close(fd1);
close(ctl);
return 0;
}