Merge branch 'eeprom-new'
authorThomas Jarosch <thomas.jarosch@intra2net.com>
Fri, 20 May 2011 14:10:11 +0000 (16:10 +0200)
committerThomas Jarosch <thomas.jarosch@intra2net.com>
Fri, 20 May 2011 14:10:11 +0000 (16:10 +0200)
Conflicts:
examples/stream_test.c

AUTHORS
CMakeLists.txt
bindings/ftdi.i
examples/stream_test.c
ftdipp/ftdi.hpp

diff --git a/AUTHORS b/AUTHORS
index d96a319..9a507fa 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -10,6 +10,7 @@ see Changelog for full details:
   Andrew John Rogers <andrew@rogerstech.co.uk>
   Arnim Läuger <arnim.laeuger@gmx.net>
   Aurelien Jarno <aurelien@aurel32.net>
+  Chris Zeh <chris.w.zeh@gmail.com>
   Clifford Wolf <clifford@clifford.at>
   Daniel Kirkham <d.kirkham@telstra.com>
   David Challis <dchallis@qsimaging.com>
@@ -39,5 +40,6 @@ see Changelog for full details:
   Tim Ansell <mithro@mithis.com>
   Tom Saunders <trsaunders@gmail.com>
   Uwe Bonnes <bon@elektron.ikp.physik.tu-darmstadt.de>
+  Vladimir Yakovlev <nagos@inbox.ru>
   Wilfried Holzke <libftdi@holzke.net>
   Yi-Shin Li <ysli@araisrobo.com>
index 7533abe..73517cf 100644 (file)
@@ -59,7 +59,7 @@ endif(NOT APPLE)
 
 # Package information
 set(CPACK_PACKAGE_VERSION              ${VERSION_STRING})
-set(CPACK_PACKAGE_CONTACT              "Marek Vavrusa <marek@vavrusa.com>")
+set(CPACK_PACKAGE_CONTACT              "Intra2net AG <libftdi@developer.intra2net.com>")
 set(CPACK_PACKAGE_DESCRIPTION          "libftdi library.")
 set(CPACK_PACKAGE_DESCRIPTION_SUMMARY  ${CPACK_PACKAGE_DESCRIPTION}
                                        )
@@ -125,8 +125,8 @@ if(DOCUMENTATION AND DOXYGEN_FOUND)
    # Create doc directory
    add_custom_command(
    OUTPUT ${CMAKE_BINARY_DIR}/doc
-   COMMAND rm -rf ${CMAKE_BINARY_DIR}/doc
-   COMMAND mkdir ${CMAKE_BINARY_DIR}/doc
+   COMMAND rm -rf ${CMAKE_BINARY_DIR}/doc/{html,man}
+   COMMAND mkdir -p ${CMAKE_BINARY_DIR}/doc
    DEPENDS ftdi ftdipp
    )
 
index 6e56cfe..b1d550a 100644 (file)
@@ -3,6 +3,8 @@
 %include "typemaps.i"
 %include "cpointer.i"
 %pointer_functions(unsigned int, uintp);
+%pointer_functions(unsigned char *, ucharp);
+%pointer_functions(char *, charp);
 
 %typemap(in) unsigned char* = char*;
 %ignore ftdi_write_data_async;
index 47f2f39..f8d024e 100644 (file)
@@ -4,7 +4,7 @@
  *
  * The FT2232H must supply data due to an appropriate circuit
  *
- * To check for skipped block with appended code,
+ * To check for skipped block with appended code, 
  *     a structure as follows is assumed
  * 1* uint32_t num (incremented in 0x4000 steps)
  * 3* uint32_t dont_care
@@ -39,28 +39,28 @@ static int exitRequested = 0;
 static void
 sigintHandler(int signum)
 {
-    exitRequested = 1;
+   exitRequested = 1;
 }
 
 static void
 usage(const char *argv0)
 {
-    fprintf(stderr,
-            "Usage: %s [options...] \n"
-            "Test streaming read from FT2232H\n"
-            "[-P string] only look for product with given string\n"
-            "[-n] don't check for special block structure\n"
-            "\n"
-            "If some filename is given, write data read to that file\n"
-            "Progess information is printed each second\n"
-            "Abort with ^C\n"
-            "\n"
-            "Options:\n"
-            "\n"
-            "Copyright (C) 2009 Micah Dowty <micah@navi.cx>\n"
-            "Adapted for use with libftdi (C) 2010 Uwe Bonnes <bon@elektron.ikp.physik.tu-darmstadt.de>\n",
-            argv0);
-    exit(1);
+   fprintf(stderr,
+           "Usage: %s [options...] \n"
+           "Test streaming read from FT2232H\n"
+           "[-P string] only look for product with given string\n"
+           "[-n] don't check for special block structure\n"
+           "\n"
+           "If some filename is given, write data read to that file\n"
+           "Progess information is printed each second\n"
+           "Abort with ^C\n"
+           "\n"
+           "Options:\n"
+           "\n"
+           "Copyright (C) 2009 Micah Dowty <micah@navi.cx>\n"
+           "Adapted for use with libftdi (C) 2010 Uwe Bonnes <bon@elektron.ikp.physik.tu-darmstadt.de>\n",
+           argv0);
+   exit(1);
 }
 
 static uint32_t start = 0;
@@ -71,242 +71,241 @@ static uint32_t n_err = 0;
 static int
 readCallback(uint8_t *buffer, int length, FTDIProgressInfo *progress, void *userdata)
 {
-    if (length)
-    {
-        if (check)
-        {
-            int i,rem;
-            uint32_t num;
-            for (i= offset; i<length-16; i+=16)
-            {
-                num = *(uint32_t*) (buffer+i);
-                if (start && (num != start +0x4000))
-                {
-                    uint32_t delta = ((num-start)/0x4000)-1;
-                    fprintf(stderr, "Skip %7d blocks from 0x%08x to 0x%08x at blocks %10llu\n",
-                            delta, start -0x4000, num, (unsigned long long)blocks);
-                    n_err++;
-                    skips += delta;
-                }
-                blocks ++;
-                start = num;
-            }
-            rem = length -i;
-            if (rem >3)
-            {
-                num = *(uint32_t*) (buffer+i);
-                if (start && (num != start +0x4000))
-                {
-                    uint32_t delta = ((num-start)/0x4000)-1;
-                    fprintf(stderr, "Skip %7d blocks from 0x%08x to 0x%08x at blocks %10llu\n",
-                            delta, start -0x4000, num, (unsigned long long) blocks);
-                    n_err++;
-                    skips += delta;
-                }
-                start = num;
-            }
-            else if (rem)
-                start += 0x4000;
-            if (rem != 0);
-            {
-                blocks ++;
-                offset = 16-rem;
-            }
-        }
-        if (outputFile)
-        {
-            if (fwrite(buffer, length, 1, outputFile) != 1)
-            {
-                perror("Write error");
-                return 1;
-            }
-        }
-    }
-    if (progress)
-    {
-        fprintf(stderr, "%10.02fs total time %9.3f MiB captured %7.1f kB/s curr rate %7.1f kB/s totalrate %d dropouts\n",
-                progress->totalTime,
-                progress->current.totalBytes / (1024.0 * 1024.0),
-                progress->currentRate / 1024.0,
-                progress->totalRate / 1024.0,
-                n_err);
-    }
-    return exitRequested ? 1 : 0;
+   if (length)
+   {
+       if (check)
+       {
+           int i,rem;
+           uint32_t num;
+           for (i= offset; i<length-16; i+=16)
+           {
+               num = *(uint32_t*) (buffer+i);
+               if (start && (num != start +0x4000))
+               {
+                   uint32_t delta = ((num-start)/0x4000)-1;
+                   fprintf(stderr, "Skip %7d blocks from 0x%08x to 0x%08x at blocks %10llu\n",
+                           delta, start -0x4000, num, (unsigned long long)blocks);
+                   n_err++;
+                   skips += delta;
+               }
+               blocks ++;
+               start = num;
+           }
+           rem = length -i;
+           if (rem >3)
+           {
+               num = *(uint32_t*) (buffer+i);
+               if (start && (num != start +0x4000))
+               {
+                   uint32_t delta = ((num-start)/0x4000)-1;
+                   fprintf(stderr, "Skip %7d blocks from 0x%08x to 0x%08x at blocks %10llu\n",
+                           delta, start -0x4000, num, (unsigned long long) blocks);
+                   n_err++;
+                   skips += delta;
+               }
+               start = num;
+           }
+           else if (rem)
+               start += 0x4000;
+           if (rem != 0);
+           {
+               blocks ++;
+               offset = 16-rem;
+           }
+       }
+       if (outputFile)
+       {
+           if (fwrite(buffer, length, 1, outputFile) != 1)
+           {
+               perror("Write error");
+               return 1;
+           }
+       }
+   }
+   if (progress)
+   {
+       fprintf(stderr, "%10.02fs total time %9.3f MiB captured %7.1f kB/s curr rate %7.1f kB/s totalrate %d dropouts\n",
+               progress->totalTime,
+               progress->current.totalBytes / (1024.0 * 1024.0),
+               progress->currentRate / 1024.0,
+               progress->totalRate / 1024.0,
+               n_err);
+   }
+   return exitRequested ? 1 : 0;
 }
 
 int main(int argc, char **argv)
 {
-    struct ftdi_context ftdic;
-    int err, c;
-    FILE *of = NULL;
-    char const *outfile  = 0;
-    outputFile =0;
-    exitRequested = 0;
-    char *descstring = NULL;
-    int option_index;
-    static struct option long_options[] = {{NULL},};
-
-    while ((c = getopt_long(argc, argv, "P:n", long_options, &option_index)) !=- 1)
-        switch (c)
-        {
-            case -1:
-                break;
-            case 'P':
-                descstring = optarg;
-                break;
-            case 'n':
-                check = 0;
-                break;
-            default:
-                usage(argv[0]);
-        }
-
-    if (optind == argc - 1)
-    {
-        // Exactly one extra argument- a dump file
-        outfile = argv[optind];
-    }
-    else if (optind < argc)
-    {
-        // Too many extra args
-        usage(argv[0]);
-    }
-
-    if (ftdi_init(&ftdic) < 0)
-    {
-        fprintf(stderr, "ftdi_init failed\n");
-        return EXIT_FAILURE;
-    }
-
-    if (ftdi_set_interface(&ftdic, INTERFACE_A) < 0)
-    {
-        fprintf(stderr, "ftdi_set_interface failed\n");
-        return EXIT_FAILURE;
-    }
-
-    if (ftdi_usb_open_desc(&ftdic, 0x0403, 0x6010, descstring, NULL) < 0)
-    {
-        fprintf(stderr,"Can't open ftdi device: %s\n",ftdi_get_error_string(&ftdic));
-        return EXIT_FAILURE;
-    }
+   struct ftdi_context ftdic;
+   int err, c;
+   FILE *of = NULL;
+   char const *outfile  = 0;
+   outputFile =0;
+   exitRequested = 0;
+   char *descstring = NULL;
+   int option_index;
+   static struct option long_options[] = {{NULL},};
 
-    /* A timeout value of 1 results in may skipped blocks */
-    if (ftdi_set_latency_timer(&ftdic, 2))
-    {
-        fprintf(stderr,"Can't set latency, Error %s\n",ftdi_get_error_string(&ftdic));
-        return EXIT_FAILURE;
-    }
-
-    /*   if(ftdi_usb_purge_rx_buffer(&ftdic) < 0)
+   while ((c = getopt_long(argc, argv, "P:n", long_options, &option_index)) !=- 1)
+       switch (c) 
+       {
+       case -1:
+           break;
+       case 'P':
+           descstring = optarg;
+           break;
+       case 'n':
+           check = 0;
+           break;
+       default:
+           usage(argv[0]);
+       }
+   
+   if (optind == argc - 1)
+   {
+       // Exactly one extra argument- a dump file
+       outfile = argv[optind];
+   }
+   else if (optind < argc)
+   {
+       // Too many extra args
+       usage(argv[0]);
+   }
+   
+   if (ftdi_init(&ftdic) < 0)
+   {
+       fprintf(stderr, "ftdi_init failed\n");
+       return EXIT_FAILURE;
+   }
+   
+   if (ftdi_set_interface(&ftdic, INTERFACE_A) < 0)
+   {
+       fprintf(stderr, "ftdi_set_interface failed\n");
+       return EXIT_FAILURE;
+   }
+   
+   if (ftdi_usb_open_desc(&ftdic, 0x0403, 0x6010, descstring, NULL) < 0)
+   {
+       fprintf(stderr,"Can't open ftdi device: %s\n",ftdi_get_error_string(&ftdic));
+       return EXIT_FAILURE;
+   }
+   
+   /* A timeout value of 1 results in may skipped blocks */
+   if(ftdi_set_latency_timer(&ftdic, 2))
+   {
+       fprintf(stderr,"Can't set latency, Error %s\n",ftdi_get_error_string(&ftdic));
+       return EXIT_FAILURE;
+   }
+   
+/*   if(ftdi_usb_purge_rx_buffer(&ftdic) < 0)
+   {
+       fprintf(stderr,"Can't rx purge\n",ftdi_get_error_string(&ftdic));
+       return EXIT_FAILURE;
+       }*/
+   if (outfile)
+       if ((of = fopen(outfile,"w+")) == 0)
+           fprintf(stderr,"Can't open logfile %s, Error %s\n", outfile, strerror(errno));
+   if (of)
+       if (setvbuf(of, NULL, _IOFBF , 1<<16) == 0)
+           outputFile = of;
+   signal(SIGINT, sigintHandler);
+   
+   err = ftdi_readstream(&ftdic, readCallback, NULL, 8, 256);
+   if (err < 0 && !exitRequested)
+       exit(1);
+   
+   if (outputFile) {
+       fclose(outputFile);
+       outputFile = NULL;
+   }
+   fprintf(stderr, "Capture ended.\n");
+   
+   if (ftdi_set_bitmode(&ftdic,  0xff, BITMODE_RESET) < 0)
+   {
+       fprintf(stderr,"Can't set synchronous fifo mode, Error %s\n",ftdi_get_error_string(&ftdic));
+       return EXIT_FAILURE;
+   }
+   ftdi_usb_close(&ftdic);
+   ftdi_deinit(&ftdic);
+   signal(SIGINT, SIG_DFL);
+   if (check && outfile)
+   {
+       if ((outputFile = fopen(outfile,"r")) == 0)
        {
-           fprintf(stderr,"Can't rx purge\n",ftdi_get_error_string(&ftdic));
+           fprintf(stderr,"Can't open logfile %s, Error %s\n", outfile, strerror(errno));
            return EXIT_FAILURE;
-           }*/
-    if (outfile)
-        if ((of = fopen(outfile,"w+")) == 0)
-            fprintf(stderr,"Can't open logfile %s, Error %s\n", outfile, strerror(errno));
-    if (of)
-        if (setvbuf(of, NULL, _IOFBF , 1<<16) == 0)
-            outputFile = of;
-    signal(SIGINT, sigintHandler);
-
-    err = ftdi_readstream(&ftdic, readCallback, NULL, 8, 256);
-    if (err < 0 && !exitRequested)
-        exit(1);
-
-    if (outputFile)
-    {
-        fclose(outputFile);
-        outputFile = NULL;
-    }
-    fprintf(stderr, "Capture ended.\n");
-
-    if (ftdi_set_bitmode(&ftdic,  0xff, BITMODE_RESET) < 0)
-    {
-        fprintf(stderr,"Can't set synchronous fifo mode, Error %s\n",ftdi_get_error_string(&ftdic));
-        return EXIT_FAILURE;
-    }
-    ftdi_usb_close(&ftdic);
-    ftdi_deinit(&ftdic);
-    signal(SIGINT, SIG_DFL);
-    if (check && outfile)
-    {
-        if ((outputFile = fopen(outfile,"r")) == 0)
-        {
-            fprintf(stderr,"Can't open logfile %s, Error %s\n", outfile, strerror(errno));
-            return EXIT_FAILURE;
-        }
-        check_outfile(descstring);
-        fclose(outputFile);
-    }
-    else if (check)
-        fprintf(stderr,"%d errors of %llu blocks (%Le), %d (%Le) blocks skipped\n",
-                n_err, (unsigned long long) blocks, (long double)n_err/(long double) blocks,
-                skips, (long double)skips/(long double) blocks);
-    exit (0);
+       }
+       check_outfile(descstring);
+       fclose(outputFile);
+   }
+   else if (check)
+       fprintf(stderr,"%d errors of %llu blocks (%Le), %d (%Le) blocks skipped\n",
+               n_err, (unsigned long long) blocks, (long double)n_err/(long double) blocks,
+               skips, (long double)skips/(long double) blocks);
+   exit (0);
 }
 
 void check_outfile(char *descstring)
 {
-    if (strcmp(descstring,"FT2232HTEST") == 0)
+    if(strcmp(descstring,"FT2232HTEST") == 0)
     {
-        char buf0[1024];
-        char buf1[1024];
-        char bufr[1024];
-        char *pa, *pb, *pc;
-        unsigned int num_lines = 0, line_num = 1;
-        int err_count = 0;
-        unsigned int num_start, num_end;
-
-        pa = buf0;
-        pb = buf1;
-        pc = buf0;
-        if (fgets(pa, 1023, outputFile) == NULL)
-        {
-            fprintf(stderr,"Empty output file\n");
-            return;
-        }
-        while (fgets(pb, 1023, outputFile) != NULL)
-        {
-            num_lines++;
-            unsigned int num_save = num_start;
-            if ( sscanf(pa,"%6u%94s%6u",&num_start, bufr,&num_end) !=3)
-            {
-                fprintf(stdout,"Format doesn't match at line %8d \"%s",
-                        num_lines, pa);
-                err_count++;
-                line_num = num_save +2;
-            }
-            else
-            {
-                if ((num_start+1)%100000 != num_end)
-                {
-                    if (err_count < 20)
-                        fprintf(stdout,"Malformed line %d \"%s\"\n",
-                                num_lines, pa);
-                    err_count++;
-                }
-                else if (num_start != line_num)
-                {
-                    if (err_count < 20)
-                        fprintf(stdout,"Skipping from %d to %d\n",
-                                line_num, num_start);
-                    err_count++;
+       char buf0[1024];
+       char buf1[1024];
+       char bufr[1024];
+       char *pa, *pb, *pc;
+       unsigned int num_lines = 0, line_num = 1;
+       int err_count = 0;
+       unsigned int num_start, num_end;
 
-                }
-                line_num = num_end;
-            }
-            pa = pb;
-            pb = pc;
-            pc = pa;
-        }
-        if (err_count)
-            fprintf(stdout,"\n%d errors of %d data sets %f\n", err_count, num_lines, (double) err_count/(double)num_lines);
-        else
-            fprintf(stdout,"No errors for %d lines\n",num_lines);
-    }
-    else if (strcmp(descstring,"LLBBC10") == 0)
-    {
+       pa = buf0;
+       pb = buf1;
+       pc = buf0;
+       if(fgets(pa, 1023, outputFile) == NULL)
+       {
+           fprintf(stderr,"Empty output file\n");
+           return;
+       }
+       while(fgets(pb, 1023, outputFile) != NULL)
+       {
+           num_lines++;
+           unsigned int num_save = num_start;
+           if( sscanf(pa,"%6u%94s%6u",&num_start, bufr,&num_end) !=3)
+           {
+               fprintf(stdout,"Format doesn't match at line %8d \"%s",
+                       num_lines, pa);
+               err_count++;
+               line_num = num_save +2;
+           }
+           else
+           {
+               if ((num_start+1)%100000 != num_end)
+               {
+                   if (err_count < 20)
+                       fprintf(stdout,"Malformed line %d \"%s\"\n", 
+                               num_lines, pa);
+                   err_count++;
+               }
+               else if(num_start != line_num)
+               {
+                   if (err_count < 20)
+                       fprintf(stdout,"Skipping from %d to %d\n", 
+                               line_num, num_start);
+                   err_count++;
+                  
+               }
+               line_num = num_end;
+           }
+           pa = pb;
+           pb = pc;
+           pc = pa;
+       }
+       if(err_count)
+           fprintf(stdout,"\n%d errors of %d data sets %f\n", err_count, num_lines, (double) err_count/(double)num_lines);
+       else
+           fprintf(stdout,"No errors for %d lines\n",num_lines);
+   }
+    else if(strcmp(descstring,"LLBBC10") == 0)
+    { 
         uint32_t block0[4];
         uint32_t block1[4];
         uint32_t *pa = block0;
@@ -321,13 +320,13 @@ void check_outfile(char *descstring)
             fprintf(stderr,"Empty result file\n");
             return;
         }
-        while (fread(pb, sizeof(uint32_t), 4,outputFile) != 0)
+        while(fread(pb, sizeof(uint32_t), 4,outputFile) != 0)
         {
             blocks++;
             nread =  pa[0];
-            if (start>0 && (nread != start))
+            if(start>0 && (nread != start))
             {
-                if (n_shown < 30)
+                if(n_shown < 30)
                 {
                     fprintf(stderr, "Skip %7d blocks from 0x%08x to 0x%08x at blocks %10llu \n",
                             (nread-start)/0x4000, start -0x4000, nread, (unsigned long long) blocks);
@@ -335,14 +334,14 @@ void check_outfile(char *descstring)
                 }
                 n_errors++;
             }
-            else if (n_shown >0)
-                n_shown--;
+            else if (n_shown >0) 
+                n_shown--; 
             start = nread + 0x4000;
             pa = pb;
             pb = pc;
             pc = pa;
         }
-        if (n_errors)
+        if(n_errors)
             fprintf(stderr, "%d blocks wrong from %llu blocks read\n",
                     n_errors, (unsigned long long) blocks);
         else
index 2ac4bc2..3a5d993 100644 (file)
@@ -32,7 +32,7 @@ on this file might be covered by the GNU General Public License.
 #include <list>
 #include <string>
 #include <boost/shared_ptr.hpp>
-#include "ftdi.h"
+#include <ftdi.h>
 
 namespace Ftdi
 {