KISS Data Aquisition and Control System
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

61 lines
1.2 KiB

/*
*
* PRU Debug Program - UIO routines
* (c) Copyright 2011,2013 by Arctica Technologies
* Written by Steven Anderson
*
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <dirent.h>
#include <string.h>
#include "uio.h"
// get UIO devices and put into structure
int uio_getprussfile(char *devname)
{
DIR *d;
struct dirent *dent;
char fn[UIO_MAX_UIO_FILEPATH];
FILE *fd;
char s_name[UIO_MAX_DEV_NAME];
// clear user buffer
devname[0] = 0;
// open directory /dev and scan for uio* files
d = opendir("/dev");
// read in first entry
dent = readdir(d);
// scan the entries
while (dent != NULL) {
// determine if this is a uio* file
if (dent->d_name[0] == 'u' && dent->d_name[1] == 'i' && dent->d_name[2] == 'o' && devname[0] == 0) {
// get uio device name and version
sprintf(fn, "/sys/class/uio/%s/name", dent->d_name);
fd = fopen (fn, "r");
fgets(s_name, UIO_MAX_DEV_NAME, fd);
s_name[strlen(s_name)-1] = 0;
if (!strncmp(s_name, "pruss", 5)) {
sprintf(devname, "/dev/%s", dent->d_name);
}
fclose(fd);
}
// read next directory entry
dent = readdir(d);
}
// close directory handle
closedir(d);
return 0;
}