-
-
Save eblot/27b76ac849474dd4a770 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
From 0648fd141255e9e7c19e83ef8daec785b1873317 Mon Sep 17 00:00:00 2001 | |
From: Emmanuel Blot <eblot@moaningmarmot.info> | |
Date: Mon, 21 Jun 2010 22:24:34 +0200 | |
Subject: [PATCH] Fixup API: | |
* ftdi.h: fix up multiple inclusion definition, as __ is reserved for the compiler and should not be used in library files | |
ftdi.h: add missing definition for LIBFTDI_LINUX_ASYNC_MODE, remove older API definitions that do not have any implementation anymore | |
* ftdi.c: implement the same API whatever LIBFTDI_LINUX_ASYNC_MODE, but return an error when ASYNC mode is not enabled | |
ftdi.c, ftdi_stream.c: remove a couple of left-over tabulations | |
* ftdi.i: do not include LIBFTDI_LINUX_ASYNC_MODE API in Python bindings, and remove implementation-less bindings | |
--- | |
bindings/ftdi.i | 5 +++-- | |
src/ftdi.c | 39 ++++++++++++++++++++++++--------------- | |
src/ftdi.h | 9 ++++----- | |
src/ftdi_stream.c | 8 ++++---- | |
4 files changed, 35 insertions(+), 26 deletions(-) | |
diff --git a/bindings/ftdi.i b/bindings/ftdi.i | |
index 9af6057..1eceb58 100644 | |
--- a/bindings/ftdi.i | |
+++ b/bindings/ftdi.i | |
@@ -3,8 +3,9 @@ | |
%include "typemaps.i" | |
%include "cpointer.i" | |
%typemap(in) unsigned char* = char*; | |
-%ignore ftdi_write_data_async; | |
-%ignore ftdi_async_complete; | |
+%ignore ftdi_write_data_submit; | |
+%ignore ftdi_read_data_submit; | |
+%ignore ftdi_transfer_data_done; | |
%include ftdi.h | |
%{ | |
diff --git a/src/ftdi.c b/src/ftdi.c | |
index 167810b..2a12d66 100644 | |
--- a/src/ftdi.c | |
+++ b/src/ftdi.c | |
@@ -265,7 +265,7 @@ int ftdi_usb_find_all(struct ftdi_context *ftdi, struct ftdi_device_list **devli | |
*curdev = (struct ftdi_device_list*)malloc(sizeof(struct ftdi_device_list)); | |
if (!*curdev) | |
ftdi_error_return(-3, "out of memory"); | |
- | |
+ | |
(*curdev)->next = NULL; | |
(*curdev)->dev = dev; | |
@@ -736,24 +736,24 @@ int ftdi_usb_open_string(struct ftdi_context *ftdi, const char* description) | |
{ | |
libusb_device *dev; | |
libusb_device **devs; | |
- unsigned int bus_number, device_address; | |
- int i = 0; | |
+ unsigned int bus_number, device_address; | |
+ int i = 0; | |
if (libusb_init (&ftdi->usb_ctx) < 0) | |
- ftdi_error_return(-1, "libusb_init() failed"); | |
+ ftdi_error_return(-1, "libusb_init() failed"); | |
- if (libusb_get_device_list(ftdi->usb_ctx, &devs) < 0) | |
- ftdi_error_return(-2, "libusb_get_device_list() failed"); | |
+ if (libusb_get_device_list(ftdi->usb_ctx, &devs) < 0) | |
+ ftdi_error_return(-2, "libusb_get_device_list() failed"); | |
/* XXX: This doesn't handle symlinks/odd paths/etc... */ | |
if (sscanf (description + 2, "%u/%u", &bus_number, &device_address) != 2) | |
- ftdi_error_return_free_device_list(-11, "illegal description format", devs); | |
+ ftdi_error_return_free_device_list(-11, "illegal description format", devs); | |
- while ((dev = devs[i++]) != NULL) | |
+ while ((dev = devs[i++]) != NULL) | |
{ | |
int ret; | |
- if (bus_number == libusb_get_bus_number (dev) | |
- && device_address == libusb_get_device_address (dev)) | |
+ if (bus_number == libusb_get_bus_number (dev) | |
+ && device_address == libusb_get_device_address (dev)) | |
{ | |
ret = ftdi_usb_open_dev(ftdi, dev); | |
libusb_free_device_list(devs,1); | |
@@ -1239,7 +1239,7 @@ int ftdi_write_data(struct ftdi_context *ftdi, unsigned char *buf, int size) | |
#ifdef LIBFTDI_LINUX_ASYNC_MODE | |
#ifdef USB_CLASS_PTP | |
#error LIBFTDI_LINUX_ASYNC_MODE is not compatible with libusb-compat-0.1! | |
-#endif | |
+#endif // USB_CLASS_PTP | |
static void ftdi_read_data_cb(struct libusb_transfer *transfer) | |
{ | |
struct ftdi_transfer_control *tc = (struct ftdi_transfer_control *) transfer->user_data; | |
@@ -1321,7 +1321,6 @@ static void ftdi_read_data_cb(struct libusb_transfer *transfer) | |
tc->completed = 1; | |
} | |
- | |
static void ftdi_write_data_cb(struct libusb_transfer *transfer) | |
{ | |
struct ftdi_transfer_control *tc = (struct ftdi_transfer_control *) transfer->user_data; | |
@@ -1348,7 +1347,7 @@ static void ftdi_write_data_cb(struct libusb_transfer *transfer) | |
tc->completed = 1; | |
} | |
} | |
- | |
+#endif // LIBFTDI_LINUX_ASYNC_MODE | |
/** | |
Writes data to the chip. Does not wait for completion of the transfer | |
@@ -1367,6 +1366,7 @@ static void ftdi_write_data_cb(struct libusb_transfer *transfer) | |
struct ftdi_transfer_control *ftdi_write_data_submit(struct ftdi_context *ftdi, unsigned char *buf, int size) | |
{ | |
+#ifdef LIBFTDI_LINUX_ASYNC_MODE | |
struct ftdi_transfer_control *tc; | |
struct libusb_transfer *transfer = libusb_alloc_transfer(0); | |
int write_size, ret; | |
@@ -1407,6 +1407,9 @@ struct ftdi_transfer_control *ftdi_write_data_submit(struct ftdi_context *ftdi, | |
tc->transfer = transfer; | |
return tc; | |
+#else // LIBFTDI_LINUX_ASYNC_MODE | |
+ return NULL; | |
+#endif // ! LIBFTDI_LINUX_ASYNC_MODE | |
} | |
/** | |
@@ -1426,6 +1429,7 @@ struct ftdi_transfer_control *ftdi_write_data_submit(struct ftdi_context *ftdi, | |
struct ftdi_transfer_control *ftdi_read_data_submit(struct ftdi_context *ftdi, unsigned char *buf, int size) | |
{ | |
+#ifdef LIBFTDI_LINUX_ASYNC_MODE | |
struct ftdi_transfer_control *tc; | |
struct libusb_transfer *transfer; | |
int ret; | |
@@ -1490,6 +1494,9 @@ struct ftdi_transfer_control *ftdi_read_data_submit(struct ftdi_context *ftdi, u | |
tc->transfer = transfer; | |
return tc; | |
+#else // LIBFTDI_LINUX_ASYNC_MODE | |
+ return NULL; | |
+#endif // ! LIBFTDI_LINUX_ASYNC_MODE | |
} | |
/** | |
@@ -1506,6 +1513,7 @@ struct ftdi_transfer_control *ftdi_read_data_submit(struct ftdi_context *ftdi, u | |
int ftdi_transfer_data_done(struct ftdi_transfer_control *tc) | |
{ | |
+#ifdef LIBFTDI_LINUX_ASYNC_MODE | |
int ret; | |
while (!tc->completed) | |
@@ -1534,10 +1542,11 @@ int ftdi_transfer_data_done(struct ftdi_transfer_control *tc) | |
libusb_free_transfer(tc->transfer); | |
free(tc); | |
return ret; | |
+#else // LIBFTDI_LINUX_ASYNC_MODE | |
+ return -1; | |
+#endif // ! LIBFTDI_LINUX_ASYNC_MODE | |
} | |
-#endif // LIBFTDI_LINUX_ASYNC_MODE | |
- | |
/** | |
Configure write buffer chunk size. | |
Default is 4096. | |
diff --git a/src/ftdi.h b/src/ftdi.h | |
index 324d07b..13efba3 100644 | |
--- a/src/ftdi.h | |
+++ b/src/ftdi.h | |
@@ -14,8 +14,8 @@ | |
* * | |
***************************************************************************/ | |
-#ifndef __libftdi_h__ | |
-#define __libftdi_h__ | |
+#ifndef _libftdi_h_ | |
+#define _libftdi_h_ | |
#include <libusb.h> | |
@@ -356,9 +356,8 @@ extern "C" | |
int ftdi_readstream(struct ftdi_context *ftdi, FTDIStreamCallback *callback, | |
void *userdata, int packetsPerTransfer, int numTransfers); | |
- int ftdi_write_data_async(struct ftdi_context *ftdi, unsigned char *buf, int size); | |
- void ftdi_async_complete(struct ftdi_context *ftdi, int wait_for_more); | |
+ struct ftdi_transfer_control *ftdi_write_data_submit(struct ftdi_context *ftdi, unsigned char *buf, int size); | |
struct ftdi_transfer_control *ftdi_read_data_submit(struct ftdi_context *ftdi, unsigned char *buf, int size); | |
int ftdi_transfer_data_done(struct ftdi_transfer_control *tc); | |
@@ -407,4 +406,4 @@ extern "C" | |
} | |
#endif | |
-#endif /* __libftdi_h__ */ | |
+#endif /* _libftdi_h_ */ | |
diff --git a/src/ftdi_stream.c b/src/ftdi_stream.c | |
index c3eb465..2ebe185 100644 | |
--- a/src/ftdi_stream.c | |
+++ b/src/ftdi_stream.c | |
@@ -177,7 +177,7 @@ ftdi_readstream(struct ftdi_context *ftdi, | |
libusb_fill_bulk_transfer(transfer, ftdi->usb_dev, ftdi->out_ep, | |
malloc(bufferSize), bufferSize, | |
- ftdi_readstream_cb, | |
+ ftdi_readstream_cb, | |
&state, 0); | |
if (!transfer->buffer) { | |
@@ -247,10 +247,10 @@ ftdi_readstream(struct ftdi_context *ftdi, | |
&progress->prev.time); | |
progress->totalRate = | |
- progress->current.totalBytes /progress->totalTime; | |
+ progress->current.totalBytes /progress->totalTime; | |
progress->currentRate = | |
- (progress->current.totalBytes - | |
- progress->prev.totalBytes) / currentTime; | |
+ (progress->current.totalBytes - | |
+ progress->prev.totalBytes) / currentTime; | |
} | |
state.callback(NULL, 0, progress, state.userdata); | |
-- | |
1.7.0.2+GitX |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment