]> rtime.felk.cvut.cz Git - mf6xx.git/commitdiff
Changes in Hudaqlib to make it work with MF614 (only this card for now) through UIO.
authorRostislav Lisovy <lisovy@gmail.com>
Sat, 5 Mar 2011 01:48:47 +0000 (02:48 +0100)
committerRostislav Lisovy <lisovy@gmail.com>
Sat, 5 Mar 2011 01:48:47 +0000 (02:48 +0100)
src/HuLinux-2.4.3/hudaq_internal.h
src/HuLinux-2.4.3/hudaqlib.h
src/HuLinux-2.4.3/opendevh.c
src/HuLinux-2.4.3/resources.c

index d9acc22aff7a5e23284801a5b67c52fddbd7b4fc..b55b250ca8a92b83bcd1fbccc30bd28a9e922e2d 100644 (file)
 #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
@@ -43,12 +43,12 @@ typedef struct CallTable;
 /** 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
@@ -56,11 +56,11 @@ typedef struct
 \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
index 43099cf4d08eb7d253dabfedece3ae1b55a68c89..89c1cc590a6791d635dca399d35da093f43c36cf 100644 (file)
@@ -218,6 +218,8 @@ typedef struct
 {\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
index 8a60409603c19c31f2f8d25e590a9ee9539f51a1..bd8efe4d9a5cbec09dde91f1fde4e2ea6b7379a6 100644 (file)
@@ -19,191 +19,159 @@ static int sysfs_get_value(const char *FileName)
        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
@@ -216,46 +184,45 @@ static int ScanProc(DWORD DeviceID, int deviceorder, DriverRecord *Rec)
   ;****************************************************************************/
 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;
 }
 
 
index b61a019a639d875e644f7cdc6e800c69d33c690b..7c962fe638e3cb4c588a95b208e7f0471368c2ab 100644 (file)
@@ -22,7 +22,7 @@
 \r
 \r
 #ifdef _MSC_VER\r
-#pragma comment(lib, "setupapi")\r
+       #pragma comment(lib, "setupapi")\r
 #endif //_MSC_VER\r
 \r
 \r
@@ -51,25 +51,23 @@ const CallTable * const AllCTs[] =
 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
@@ -82,55 +80,53 @@ static void device_unmmap_range(uintptr_t mem_start, size_t mem_length)
        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
@@ -138,32 +134,36 @@ int DeviceIoControl(int Operation, DriverRecord *Rec)
                        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
@@ -179,13 +179,14 @@ HUDAQSTATUS InternalResetDevice(DeviceRecord *DevRecord, int ShareFlag)
 {\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
@@ -205,23 +206,25 @@ HUDAQHANDLE HUDAQAPI HudaqOpenDevice(const char* devicename, int deviceorder, in
 {\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
@@ -235,15 +238,17 @@ HUDAQHANDLE HUDAQAPI HudaqOpenDevice(const char* devicename, int deviceorder, in
        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
@@ -262,15 +267,18 @@ void HUDAQAPI HudaqCloseDevice(HUDAQHANDLE handle)
 \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
@@ -285,7 +293,8 @@ const HudaqResourceInfo* HUDAQAPI HudaqGetDeviceResources(HUDAQHANDLE handle)
 {\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
@@ -297,7 +306,8 @@ const char* HUDAQAPI HudaqGetBoardName(HUDAQHANDLE handle)
 {\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
@@ -336,7 +346,7 @@ return 1;   // Ok
 int timeGetTime(void)\r
 {\r
        struct timespec current_time;\r
-       clock_gettime(CLOCK_REALTIME,&current_time);\r
+       clock_gettime(CLOCK_REALTIME, &current_time);\r
 \r
        return current_time.tv_nsec/1000 + current_time.tv_sec*1000;\r
 }\r