#define __int32 int\r
\r
#ifndef max\r
- #define max(x,y) (((x)>(y))?(x):(y))\r
+ #define max(x,y) (((x) > (y)) ? (x) : (y))\r
#endif\r
#ifndef min\r
- #define min(x,y) (((x)>(y))?(x):(y))\r
+ #define min(x,y) (((x) > (y)) ? (x) : (y))\r
#endif\r
\r
\r
/**\r
* Resource information structure obtained from low level kernel driver.\r
-*/\r
+ */\r
typedef struct\r
{\r
- size_t Size; ///< Size of this structure.\r
- int NumPhysMemResources; ///< Amount of memory mapped ranges in particular device.\r
- HudaqResourceRange PhysMemResources[8];///< Memory resources available for user access.\r
- HudaqResourceInfo Resources; ///< External structure for users\r
- size_t DriverDataSize; ///< Size of shared memory among all applications.\r
- void* DriverData; ///< Internal data for one device shared across all applications.\r
-\r
- // TODO: these two items are planned to be filled from kernel driver\r
+ size_t Size; ///< Size of this structure.\r
+ int NumPhysMemResources; ///< Amount of memory-mapped ranges in particular device.\r
+ HudaqResourceRange PhysMemResources[8]; ///< Memory resources available for user access.\r
+ HudaqResourceInfo Resources; ///< External structure for users\r
+ size_t DriverDataSize; ///< Size of shared memory among all applications.\r
+ void* DriverData; ///< Internal data for one device shared across all applications.\r
+ unsigned int UioDevNum; ///< Which UIO device handles our card\r
+ // TODO: these two items are planned to be filled from kernel driver\r
} DriverRecord;\r
\r
\r
/** Device record that contains common information about general device resources. */\r
typedef struct\r
{\r
-//HANDLE SysHandle; ///< System handle assigned from kernel driver\r
- char Name[256]; ///< Device name in ASCII\r
- int Order; ///< Order of device\r
- DriverRecord DrvRes; ///< Kernel resource info\r
+ //HANDLE SysHandle; ///< System handle assigned from kernel driver\r
+ char Name[256]; ///< Device name in ASCII\r
+ int Order; ///< Order of device\r
+ DriverRecord DrvRes; ///< Kernel resource info\r
\r
- const struct CallTable *pCT; ///< Interface functions\r
+ const struct CallTable *pCT; ///< Interface functions\r
} DeviceRecord;\r
\r
\r
\r
\r
#if __GNUC__ == 3 && __GNUC_MINOR__ >= 3\r
- #ifdef HUDAQAPI\r
- #undef HUDAQAPI\r
- #define HUDAQAPI __attribute__ ((visibility("default")))\r
- #pragma visibility(hidden)\r
- #endif\r
+#ifdef HUDAQAPI\r
+#undef HUDAQAPI\r
+#define HUDAQAPI __attribute__ ((visibility("default")))\r
+#pragma visibility(hidden)\r
+#endif\r
#endif\r
\r
int timeGetTime(void);\r
{\r
size_t Base; ///< Base addres/IO port.\r
size_t Length; ///< Amount resources.\r
+ unsigned int UioMappingIndex; ///< With UIO driver, we are doing mmap on /dev/uioX; \r
+ //for different mappings we just add Index*PAGESIZE as offset\r
} HudaqResourceRange;\r
\r
\r
FILE *F;
int RetVal;
- F=fopen(FileName,"rb");
- if(F==NULL) return -1;
+ F = fopen(FileName, "rb");
+ if(F == NULL)
+ return -1;
- fscanf(F,"%X",&RetVal);
+ fscanf(F, "%X", &RetVal);
fclose(F);
return RetVal;
}
static int ScanSys(DWORD DeviceID, int deviceorder, DriverRecord *Rec)
{
- DIR *dir;
+ DIR *dir_uio, *dir_memmaps;
FILE *F;
char ch;
- struct dirent *entry;
+ struct dirent *direntry_uio, *direntry_memmaps;
unsigned vendor_id;
unsigned device_id;
char FileName[1024];
- const char *SysDir="/sys/bus/pci/devices";
+ const char *SysDir="/sys/class/uio/";
unsigned long long start, end, size;
- DWORD Resources[14];
+ unsigned int index;
+ DWORD Resources[7 * 3];
int i;
- int RetVal=0;
+ int j = 0;
+ int RetVal = 0;
- if(deviceorder <= 0) return -1;
- if(Rec==NULL) return -2;
+ if(deviceorder <= 0)
+ return -1;
+ if(Rec == NULL)
+ return -2;
Rec->NumPhysMemResources = Rec->Resources.NumIOResources = 0;
- sprintf(FileName,"%s",SysDir);
- dir = opendir(FileName);
- if(!dir)
+ sprintf(FileName, "%s", SysDir);
+ dir_uio = opendir(FileName);
+ if(!dir_uio)
{
- //fprintf(stderr,"Cannot open /sys/bus/pci/devices");
+ perror("opendir()");
return -3;
}
- while ((entry = readdir(dir)))
+ while (direntry_uio = readdir(dir_uio))
{
- if(entry->d_name[0]=='.') continue;
+ if((strcmp((direntry_uio->d_name), ".") == 0) ||
+ (strcmp((direntry_uio->d_name), "..") == 0))
+ {
+ continue;
+ }
- sprintf(FileName,"%s/%s/vendor",SysDir,entry->d_name);
+ sprintf(FileName, "%s/%s/device/vendor", SysDir, direntry_uio->d_name);
vendor_id = sysfs_get_value(FileName);
- sprintf(FileName,"%s/%s/device",SysDir,entry->d_name);
+ sprintf(FileName, "%s/%s/device/device", SysDir, direntry_uio->d_name);
device_id = sysfs_get_value(FileName);
- memset(Resources, 0, sizeof(Resources));
- sprintf(FileName,"%s/%s/resource",SysDir,entry->d_name);
- F=fopen(FileName,"rb");
- if(F)
- {
- for(i=0;i<7;i++)
+
+ //Fixme search also through iomaps; add into the same Resources array
+ memset(Resources, 0, sizeof(Resources));
+ sprintf(FileName, "%s/%s/maps", SysDir, direntry_uio->d_name);
+ dir_memmaps = opendir(FileName);
+ if (!dir_memmaps) {
+ perror("opendir()");
+ printf("%s\n", FileName);
+ return -3;
+ }
+ while (direntry_memmaps = readdir(dir_memmaps)) {
+ if((strcmp(direntry_memmaps->d_name, ".") == 0) || (strcmp(direntry_memmaps->d_name, "..") == 0))
+ continue;
+
+ //printf("maps: %s\n", direntry_memmaps->d_name);
+ sprintf(FileName, "%s/%s/maps/%s/addr", SysDir, direntry_uio->d_name, direntry_memmaps->d_name);
+ F = fopen(FileName, "rb");
+ if(F)
{
- if(fscanf(F,"%llx %llx", &start, &end) != 2)
+ if(fscanf(F, "%llx", &start) != 1)
{
- fprintf(stderr,"Syntax error in %s", FileName);
+ fprintf(stderr, "Syntax error in %s", FileName);
break;
}
- do
- {
- ch=fgetc(F);
- if(feof(F)) break;
- } while(ch!='\r' && ch!='\n' && ch!=0);
-
- if(start)
- size = end - start + 1;
- else
- size = 0;
-
- Resources[i]=start;
- Resources[i+7]=size;
+
+ Resources[j] = start;
+ fclose(F);
}
- fclose(F);
- }
- if(DeviceID==(device_id+(vendor_id<<16)))
- {
- //printf("DEVICE HAS BEEN FOUND!");
- if(--deviceorder<1)
+ sprintf(FileName, "%s/%s/maps/%s/size", SysDir, direntry_uio->d_name, direntry_memmaps->d_name);
+ F = fopen(FileName, "rb");
+ if(F)
{
- for(i=0;i<7;i++)
+ if(fscanf(F, "%llx", &size) != 1)
{
- if(Resources[i]!=0)
- {
- if(Resources[i] > 0xFFFF)
- {
- Rec->PhysMemResources[Rec->NumPhysMemResources].Base=Resources[i];
- Rec->PhysMemResources[Rec->NumPhysMemResources].Length=Resources[i+7];
- Rec->NumPhysMemResources++;
- }
- else
- {
- Rec->Resources.IOResources[Rec->Resources.NumIOResources].Base=Resources[i];
- Rec->Resources.IOResources[Rec->Resources.NumIOResources].Length=Resources[i+7];
- Rec->Resources.NumIOResources++;
- }
- }
+ fprintf(stderr, "Syntax error in %s", FileName);
+ break;
}
- RetVal=1; //device has been found!!
- break;
- }
- }
-
- // printf("%X %X %s\n", vendor_id, device_id, entry->d_name);
- }
-
- closedir(dir);
- return RetVal;
-}
-
-static int ScanProc(DWORD DeviceID, int deviceorder, DriverRecord *Rec)
-{
- FILE *devices;
- DWORD DevTblID;
- DWORD DevPos, DevInt;
- DWORD Resources[14];
- int i;
- char ch;
- int RetVal=0;
-
- if(deviceorder <= 0) return -1;
- if(Rec==NULL) return -2;
-
- Rec->NumPhysMemResources = Rec->Resources.NumIOResources = 0;
-
- //devices=fopen("devices","rb");
- devices=fopen("/proc/bus/pci/devices","rb");
- if(devices==NULL) return -4;
-
- /* loop over devices */
- while (!feof(devices))
- {
- if(fscanf(devices,"%X %X %X", &DevPos, &DevTblID, & DevInt)!=3)
- return -5;
-
- memset(Resources, 0, sizeof(Resources));
- for(i=0; i<14; i++)
- {
- if(fscanf(devices,"%X", &Resources[i])!=1)
- {
- if(i==6 || i==7) break; //correct
- break; //strange
+ Resources[j + 7] = size;
+
+ fclose(F);
}
+
+
+ index = atoi((direntry_memmaps->d_name) + 3); // "+3", because we have to skip over the word "map"
+ Resources[j + 7 + 7] = index;
+ j ++;
}
- do {
- ch=fgetc(devices);
- if(feof(devices)) break;
- } while(ch!='\r' && ch!='\n' && ch!=0);
+
+ closedir(dir_memmaps);
- if(DeviceID==DevTblID)
+ if(DeviceID == (device_id + (vendor_id << 16)))
{
- if(--deviceorder<1)
+ printf("DEVICE HAS BEEN FOUND!\n");
+ if(--deviceorder < 1)
{
- for(i=0;i<7;i++)
+ for(i = 0; i < 7; i++)
{
- if(Resources[i]!=0)
+ if(Resources[i] != 0)
{
- if(Resources[i] & 1)
+ if(Resources[i] > 0xFFFF)
{
- Rec->Resources.IOResources[Rec->Resources.NumIOResources].Base = Resources[i] & ~1;
- Rec->Resources.IOResources[Rec->Resources.NumIOResources].Length=Resources[i+7];
- Rec->Resources.NumIOResources++;
+ Rec->PhysMemResources[Rec->NumPhysMemResources].Base = Resources[i];
+ Rec->PhysMemResources[Rec->NumPhysMemResources].Length = Resources[i + 7];
+ Rec->PhysMemResources[Rec->NumPhysMemResources].UioMappingIndex =
+ Resources[i + 7 + 7];
+ Rec->NumPhysMemResources ++;
}
else
{
- Rec->PhysMemResources[Rec->NumPhysMemResources].Base=Resources[i];
- Rec->PhysMemResources[Rec->NumPhysMemResources].Length=Resources[i+7];
- Rec->NumPhysMemResources++;
+ Rec->Resources.IOResources[Rec->Resources.NumIOResources].Base = Resources[i];
+ Rec->Resources.IOResources[Rec->Resources.NumIOResources].Length = Resources[i + 7];
+ Rec->Resources.IOResources[Rec->Resources.NumIOResources].UioMappingIndex =
+ Resources[i + 7 + 7];
+ Rec->Resources.NumIOResources ++;
}
}
}
- RetVal=1; //device has been found!!
+
+ Rec->UioDevNum = atoi((direntry_uio->d_name) + 3); //number of uio device
+
+ RetVal = 1; //device has been found!!
break;
}
- }
+ }
+
+ //printf("%X %X %s\n", vendor_id, device_id, direntry_uio->d_name);
}
- fclose(devices);
- return(RetVal);
+ closedir(dir_uio);
+ return RetVal;
}
+
/*****************************************************************************
;*
;* OpenDeviceHandle
;****************************************************************************/
int OpenDeviceHandle(const char *devicename, int deviceorder, DriverRecord *Rec)
{
- DWORD DeviceID=0;
+ DWORD DeviceID = 0;
int RetVal;
- if(deviceorder <= 0) return -1;
- if(Rec==NULL) return -2;
+ if(deviceorder <= 0)
+ return -1;
+ if(Rec == NULL)
+ return -2;
/* Humusoft */
#ifdef MF61X
- if(!strcmp(devicename,"AD612")) DeviceID=0x186C0612;
- if(!strcmp(devicename,"MF614")) DeviceID=0x186C0614;
+ if(!strcmp(devicename,"AD612")) DeviceID = 0x186C0612; /*DeviceID = (Device_ID & (Vendor_ID << 16))*/
+ if(!strcmp(devicename,"MF614")) DeviceID = 0x186C0614;
#endif
#ifdef MF62X
- if(!strcmp(devicename,"AD622")) DeviceID=0x186C0622;
- if(!strcmp(devicename,"MF624")) DeviceID=0x186C0624;
- if(!strcmp(devicename,"MF625")) DeviceID=0x186C0625;
+ if(!strcmp(devicename,"AD622")) DeviceID = 0x186C0622;
+ if(!strcmp(devicename,"MF624")) DeviceID = 0x186C0624;
+ if(!strcmp(devicename,"MF625")) DeviceID = 0x186C0625;
#endif
/* Advantech */
#ifdef PCI1753
- if(!strcmp(devicename,"PCI1753")) DeviceID=0x13FE1753;
+ if(!strcmp(devicename,"PCI1753")) DeviceID = 0x13FE1753;
#endif
/* Tedia */
#ifdef PCD7004
- if(!strcmp(devicename,"PCD7004")) DeviceID=0x17600101;
+ if(!strcmp(devicename,"PCD7004")) DeviceID = 0x17600101;
#endif
#ifdef PCT7303B
- if(!strcmp(devicename,"PCT7303B")) DeviceID=0x17600201;
+ if(!strcmp(devicename,"PCT7303B")) DeviceID = 0x17600201;
#endif
//printf("\n%s deviceID = %X", devicename, DeviceID);
- if(DeviceID==0) return -3;
+ if(DeviceID == 0)
+ return -3;
RetVal = ScanSys(DeviceID, deviceorder, Rec);
- if(RetVal>0) return RetVal;
- RetVal = ScanProc(DeviceID, deviceorder, Rec);
- if(RetVal>0) return RetVal;
-
- return(RetVal);
+ return RetVal;
}
\r
\r
#ifdef _MSC_VER\r
-#pragma comment(lib, "setupapi")\r
+ #pragma comment(lib, "setupapi")\r
#endif //_MSC_VER\r
\r
\r
int OpenDeviceHandle(const char* devicename, int deviceorder, DriverRecord *Rec);\r
\r
\r
-static uintptr_t device_mmap_range(int fd, uintptr_t mem_start, size_t mem_length)\r
+static uintptr_t device_mmap_range(int device_fd, uintptr_t mem_start, size_t mem_length, unsigned int mmap_offset)\r
{\r
size_t pagesize;\r
unsigned char *mm;\r
unsigned char *ptr;\r
\r
- pagesize=getpagesize();\r
- mem_length+=(mem_start & (pagesize-1))+pagesize-1;\r
- mem_length&=~(pagesize-1);\r
+ pagesize = getpagesize();\r
+ //mem_length += (mem_start & (pagesize-1))+pagesize-1;\r
+ //mem_length &= ~(pagesize-1);\r
\r
- mm = mmap(NULL, mem_length, PROT_WRITE|PROT_READ,\r
- MAP_SHARED, fd, mem_start & ~(pagesize-1));\r
\r
- if ((mm == NULL) || (mm == (unsigned char*)-1)) {\r
- fprintf(stderr,"\nHudaqlib: mmap FAILED for range 0x%08lx length 0x%08lx\n",\r
- (long)mem_start,(long)mem_length);\r
+ mm = mmap(0, mem_length, PROT_READ | PROT_WRITE, MAP_SHARED, device_fd, mmap_offset * getpagesize());\r
+ if ((mm == NULL) || (mm == MAP_FAILED)) {\r
+ perror("mmap()");\r
return 0;\r
}\r
- ptr=mm + (mem_start & (pagesize-1));\r
+ ptr = mm + (mem_start & (pagesize-1));\r
\r
//fprintf(stderr,"mmap OK for range 0x%08lx length 0x%08lx -> 0x%08lx\n",\r
// (long)mem_start,(long)mem_length,(long)ptr);\r
size_t pagesize;\r
unsigned char *mm;\r
\r
- pagesize=getpagesize();\r
- mem_length+=(mem_start & (pagesize-1))+pagesize-1;\r
- mem_length&=~(pagesize-1);\r
+ pagesize = getpagesize();\r
+ mem_length += (mem_start & (pagesize-1))+pagesize-1;\r
+ mem_length &= ~(pagesize-1);\r
\r
mm = (mem_start & ~(pagesize-1));\r
\r
- if(munmap(mm, mem_length)!=0)\r
+ if(munmap(mm, mem_length) != 0) {\r
printf("\nHudaqlib: unmmap failed.");\r
+ }\r
}\r
\r
-\r
-/*********************************\r
- *********************************/\r
+/* Allocate available resources (?)*/\r
int DeviceIoControl(int Operation, DriverRecord *Rec)\r
{\r
- int i,ret;\r
+ int i, ret;\r
int fd;\r
- const char *memdev="/dev/mem";\r
+ char memdev[64];\r
\r
- if(Rec==NULL) return 0;\r
+ if(Rec == NULL) {\r
+ return 0;\r
+ }\r
+ sprintf(memdev, "/dev/uio%d", Rec->UioDevNum);\r
\r
if(Operation) //Allocate resources\r
{\r
- fd = open(memdev, O_RDWR|O_SYNC);\r
+ fd = open(memdev, O_RDWR | O_SYNC);\r
+ if (fd < 0) {\r
+ perror("open()"); \r
+ }\r
if (fd >= 0)\r
- { \r
- for(i=0;i<Rec->NumPhysMemResources;i++)\r
+ { \r
+ for(i = 0; i < Rec->NumPhysMemResources; i ++)\r
{\r
- Rec->Resources.MemResources[i].Base=\r
- device_mmap_range(fd, Rec->PhysMemResources[i].Base, Rec->PhysMemResources[i].Length);\r
- /* \r
- Rec->Resources.MemResources[i].Base = //Rec->PhysMemResources[i].Base;\r
- (size_t)mmap(0,\r
- Rec->PhysMemResources[i].Length,\r
- PROT_WRITE|PROT_READ,\r
- MAP_SHARED, \r
- fd,\r
- Rec->PhysMemResources[i].Base); */ \r
- Rec->Resources.MemResources[i].Length =\r
- Rec->PhysMemResources[i].Length;\r
+ Rec->Resources.MemResources[i].Base = \r
+ device_mmap_range(fd, Rec->PhysMemResources[i].Base, \r
+ Rec->PhysMemResources[i].Length, \r
+ Rec->PhysMemResources[i].UioMappingIndex);\r
+ Rec->Resources.MemResources[i].Length = Rec->PhysMemResources[i].Length;\r
Rec->Resources.NumMemResources++;\r
} \r
close(fd);\r
}\r
\r
- for(i=0;i<Rec->Resources.NumIOResources;i++)\r
+ for(i = 0; i < Rec->Resources.NumIOResources; i ++)\r
{ /*baze, delka useku, 1=povoleni 0=zakazani*/\r
//printf("IOPERM %X %X",Rec->Resources.IOResources[i].Base,Rec->Resources.IOResources[i].Length);\r
- if(Rec->Resources.IOResources[i].Base+Rec->Resources.IOResources[i].Length<=0x3FF)\r
+ if(Rec->Resources.IOResources[i].Base + Rec->Resources.IOResources[i].Length <= 0x3FF)\r
{\r
ret = ioperm(Rec->Resources.IOResources[i].Base,\r
Rec->Resources.IOResources[i].Length, 1);\r
else \r
{\r
iopl(3);\r
- IOPLsUsed++;\r
+ IOPLsUsed ++;\r
}\r
}\r
return 1;\r
}\r
else //free resources\r
{\r
- for(i=0;i<Rec->Resources.NumMemResources;i++)\r
+ for(i = 0; i < Rec->Resources.NumMemResources; i ++)\r
{\r
- device_unmmap_range((void *)Rec->Resources.MemResources[i].Base,\r
+ device_unmmap_range((void *) Rec->Resources.MemResources[i].Base,\r
Rec->Resources.MemResources[i].Length);\r
}\r
- Rec->Resources.NumMemResources=0;\r
+ Rec->Resources.NumMemResources = 0;\r
\r
- for(i=0;i<Rec->Resources.NumIOResources;i++)\r
+ for(i = 0; i < Rec->Resources.NumIOResources; i ++)\r
{\r
/* !!!!!!!!!!! BUG, scan all allocated ranges prevent disabling already used space. !!!!!!!!!!! */\r
- if(Rec->Resources.IOResources[i].Base+Rec->Resources.IOResources[i].Length<=0x3FF)\r
+ if(Rec->Resources.IOResources[i].Base + Rec->Resources.IOResources[i].Length <= 0x3FF)\r
{ /*base, IO length, 1=enable 0=disable*/\r
ret = ioperm(Rec->Resources.IOResources[i].Base,\r
Rec->Resources.IOResources[i].Length, 0);\r
}\r
else \r
{\r
- if(IOPLsUsed>0) IOPLsUsed--;\r
- if(IOPLsUsed<=0) iopl(0);\r
+ if(IOPLsUsed > 0) {\r
+ IOPLsUsed --;\r
+ }\r
+ if(IOPLsUsed <= 0) {\r
+ iopl(0);\r
+ }\r
}\r
}\r
return 1;\r
{\r
int Iter;\r
\r
- if(DevRecord==NULL) return HUDAQFAILURE;\r
+ if(DevRecord == NULL)\r
+ return HUDAQFAILURE;\r
\r
/* Traverse a list with supported devices. A PCI ID would be much more better. */\r
- for(Iter=0; Iter<(sizeof(AllCTs)/sizeof(CallTable*));Iter++)\r
+ for(Iter = 0; Iter < (sizeof(AllCTs) / sizeof(CallTable*)); Iter ++)\r
{\r
//printf("\nTry to match: %s %s",AllCTs[Iter]->DeviceString,DevRecord->Name);\r
- if(!strcmp(AllCTs[Iter]->DeviceString,DevRecord->Name))\r
+ if(!strcmp(AllCTs[Iter]->DeviceString, DevRecord->Name))\r
{\r
if(AllCTs[Iter]->HudaqInit(DevRecord, ShareFlag) > 0)\r
return HUDAQSUCCESS;\r
{\r
DeviceRecord* devrecord;\r
\r
- if (devicename==NULL) return(0); /* Invalid device name. */\r
-\r
+ if (devicename == NULL) {\r
+ return 0; /* Invalid device name. */\r
+ }\r
/* allocate memory for the device record */\r
devrecord = calloc(1, sizeof(DeviceRecord));\r
- if (devrecord==0)\r
- return(0);\r
+ if (devrecord == 0) {\r
+ return 0;\r
+ }\r
\r
/* copy device name and order */\r
devrecord->DrvRes.Size = sizeof(DriverRecord);\r
- strncpy(devrecord->Name, devicename, sizeof(devrecord->Name)-1);\r
+ strncpy(devrecord->Name, devicename, sizeof(devrecord->Name) - 1);\r
devrecord->Order = deviceorder;\r
\r
/* open the system device handle */\r
- if(OpenDeviceHandle(devrecord->Name, devrecord->Order, &devrecord->DrvRes)<0)\r
+ if(OpenDeviceHandle(devrecord->Name, devrecord->Order, &devrecord->DrvRes) < 0)\r
{\r
free(devrecord);\r
- return(0);\r
+ return 0;\r
}\r
\r
/* get the resources */\r
devrecord->DrvRes.DriverData = calloc(1, 1024); //!!!! THIS SHOULD BE SHARED !!!!\r
devrecord->DrvRes.DriverDataSize = 1024;\r
\r
- switch(InternalResetDevice(devrecord,shareflag))\r
+ /*\r
+ switch(InternalResetDevice(devrecord, shareflag))\r
{\r
case HUDAQSUCCESS: break; // everything is OK\r
case HUDAQPARTIAL: break; // unknown device, return its resources only\r
case HUDAQFAILURE: // initialisation failed - go on\r
default: // unexpected return code\r
- HudaqCloseDevice((HUDAQHANDLE)devrecord);\r
+ HudaqCloseDevice((HUDAQHANDLE) devrecord);\r
return(0);\r
}\r
+ */\r
\r
return((HUDAQHANDLE) devrecord);\r
}\r
\r
/* typecast handle to device record, check for validity */\r
DeviceRecord* devrecord = (DeviceRecord*) handle;\r
- if (devrecord==0) return;\r
+ if (devrecord == 0)\r
+ return;\r
\r
devrecord->pCT->HudaqDone(devrecord);\r
\r
/* free the resources */\r
DeviceIoControl(0, &(devrecord->DrvRes));\r
\r
- if(devrecord->DrvRes.DriverData)\r
- {free(devrecord->DrvRes.DriverData); devrecord->DrvRes.DriverData=NULL;}\r
+ if(devrecord->DrvRes.DriverData) {\r
+ free(devrecord->DrvRes.DriverData);\r
+ devrecord->DrvRes.DriverData = NULL;\r
+ }\r
\r
/* close the system device handle */\r
// CloseHandle(devrecord->SysHandle);\r
{\r
/* typecast handle to device record, check for validity */\r
DeviceRecord* devrecord = (DeviceRecord*) handle;\r
- if (devrecord==0) return(0);\r
+ if (devrecord == 0)\r
+ return(0);\r
\r
/* return the pointer to resource structure */\r
return(&(devrecord->DrvRes.Resources));\r
{\r
/* typecast handle to device record, check for validity */\r
DeviceRecord* devrecord = (DeviceRecord*) handle;\r
- if (devrecord==0) return(NULL);\r
+ if (devrecord == 0)\r
+ return(NULL);\r
\r
/* Return a pointer to the device name. */\r
return(devrecord->Name);\r
int timeGetTime(void)\r
{\r
struct timespec current_time;\r
- clock_gettime(CLOCK_REALTIME,¤t_time);\r
+ clock_gettime(CLOCK_REALTIME, ¤t_time);\r
\r
return current_time.tv_nsec/1000 + current_time.tv_sec*1000;\r
}\r