Fix marshalling issue
authorJelmer Vernooij <jelmer@samba.org>
Wed, 24 May 2006 15:03:02 +0000 (17:03 +0200)
committerJelmer Vernooij <jelmer@samba.org>
Wed, 24 May 2006 15:03:02 +0000 (17:03 +0200)
ftdi-test.cs
ftdi.cs

index 76ef139f9a13fe5015f657b3ccdcff8a09cdeefc..d950cda12d877db1d106fbe199eacde14cae59c7 100644 (file)
@@ -5,6 +5,17 @@ class FTDITest {
        public static void Main() {
                IntPtr[] devices = FTDIContext.GetDeviceList(0x0403, 0x6001);
 
+               if (devices.Length == 0) {
+                       Console.WriteLine("No devices found, exiting");
+                       return;
+               }
+                       
                Console.WriteLine("{0} devices found", devices.Length);
+
+               FTDIContext ftdi = new FTDIContext(devices[0]);
+
+//             FTDIContext ftdi = new FTDIContext(0x0403, 0x6001);
+
+               Console.WriteLine(ftdi);
        }
 }
diff --git a/ftdi.cs b/ftdi.cs
index 35de962681c46e6dc32412e8c73b2072d7a50adc..2171e1e47013b8b3c7e672d17260735a30f64f6d 100644 (file)
--- a/ftdi.cs
+++ b/ftdi.cs
@@ -103,7 +103,7 @@ namespace FTDI
                byte bitbang_mode;
        
                // misc
-               string error_str;
+               IntPtr error_str; /* const char * */
        };
        
 
@@ -147,8 +147,7 @@ namespace FTDI
                }
 
                public FTDIContext(int vendor, int product) : this() {
-                       int ret = ftdi_usb_open(ref ftdi, vendor, product);
-                       CheckRet(ret);
+                       CheckRet(ftdi_usb_open(ref ftdi, vendor, product));
                }
 
                public FTDIContext(int vendor, int product, string description, string serial) : this() {
@@ -327,11 +326,11 @@ namespace FTDI
                [DllImport("libftdi.so.0")] internal unsafe static extern int ftdi_usb_find_all(ref ftdi_context ftdi, ftdi_device_list **devlist, int vendor, int product);
                [DllImport("libftdi.so.0")] internal unsafe static extern void ftdi_list_free(ftdi_device_list **devlist);
 
-               public static unsafe IntPtr[] GetDeviceList(int vendor, int product) {
+               public static unsafe IntPtr[] GetDeviceList(int vendor, int product) 
+               {
                        ArrayList ar = new ArrayList();
-                       ftdi_context ftdi = new ftdi_context();
-
                        ftdi_device_list *devlist, d;
+                       ftdi_context ftdi = new ftdi_context();
                        ftdi_init(ref ftdi);
 
                        CheckRet(ftdi_usb_find_all(ref ftdi, &devlist, vendor, product));