On Fri, Jan 25, 2013 at 9:39 PM, Xiaofan Chen <xiaofanc@xxxxxxxxx> wrote:
> I think the better fix is to use usleep and get rid of the
> ugly __WIN32__ defines.
>
Yes this works fine. Here is the patch.
Change sleep() to usleep() to make examples build
successful under Windows with MinGW.
diff --git a/examples/bitbang.c b/examples/bitbang.c
index 1d69e2e..a6bd649 100644
--- a/examples/bitbang.c
+++ b/examples/bitbang.c
@@ -3,9 +3,6 @@
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
-#ifdef __WIN32__
-#define sleep(x) Sleep(x)
-#endif
#include <ftdi.h>
int main(int argc, char **argv)
@@ -35,7 +32,7 @@ int main(int argc, char **argv)
printf("enabling bitbang mode\n");
ftdi_set_bitmode(ftdi, 0xFF, BITMODE_BITBANG);
- sleep(3);
+ usleep(3000);
buf[0] = 0x0;
printf("turning everything on\n");
@@ -45,7 +42,7 @@ int main(int argc, char **argv)
fprintf(stderr,"write failed for 0x%x, error %d
(%s)\n",buf[0],f, ftdi_get_error_string(ftdi));
}
- sleep(3);
+ usleep(3000);
buf[0] = 0xFF;
printf("turning everything off\n");
@@ -55,7 +52,7 @@ int main(int argc, char **argv)
fprintf(stderr,"write failed for 0x%x, error %d
(%s)\n",buf[0],f, ftdi_get_error_string(ftdi));
}
- sleep(3);
+ usleep(3000);
for (i = 0; i < 32; i++)
{
@@ -71,7 +68,7 @@ int main(int argc, char **argv)
{
fprintf(stderr,"write failed for 0x%x, error %d
(%s)\n",buf[0],f, ftdi_get_error_string(ftdi));
}
- sleep(1);
+ usleep(1000);
}
printf("\n");
diff --git a/examples/bitbang2.c b/examples/bitbang2.c
index 26f3338..f10a496 100644
--- a/examples/bitbang2.c
+++ b/examples/bitbang2.c
@@ -32,9 +32,6 @@
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
-#ifdef __WIN32__
-#define usleep(x) Sleep((x+999)/1000)
-#endif
#include <ftdi.h>
void ftdi_fatal (struct ftdi_context *ftdi, char *str)
diff --git a/examples/bitbang_ft2232.c b/examples/bitbang_ft2232.c
index 253555a..0c2f33f 100644
--- a/examples/bitbang_ft2232.c
+++ b/examples/bitbang_ft2232.c
@@ -11,9 +11,6 @@
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
-#ifdef __WIN32__
-#define sleep(x) Sleep(x)
-#endif
#include <ftdi.h>
int main(int argc, char **argv)
@@ -70,28 +67,28 @@ int main(int argc, char **argv)
f = ftdi_write_data(ftdi, buf, 1);
if (f < 0)
fprintf(stderr,"write failed on channel 1 for 0x%x, error
%d (%s)\n", buf[0], f, ftdi_get_error_string(ftdi));
- sleep(1);
+ usleep(1000);
buf[0] = 0x2;
printf("porta: %02i: 0x%02x \n",i,buf[0]);
f = ftdi_write_data(ftdi, buf, 1);
if (f < 0)
fprintf(stderr,"write failed on channel 1 for 0x%x, error
%d (%s)\n", buf[0], f, ftdi_get_error_string(ftdi));
- sleep(1);
+ usleep(1000);
buf[0] = 0x1;
printf("portb: %02i: 0x%02x \n",i,buf[0]);
f = ftdi_write_data(ftdi2, buf, 1);
if (f < 0)
fprintf(stderr,"write failed on channel 2 for 0x%x, error
%d (%s)\n", buf[0], f, ftdi_get_error_string(ftdi2));
- sleep(1);
+ usleep(1000);
buf[0] = 0x2;
printf("portb: %02i: 0x%02x \n",i,buf[0]);
f = ftdi_write_data(ftdi2, buf, 1);
if (f < 0)
fprintf(stderr,"write failed on channel 2 for 0x%x, error
%d (%s)\n", buf[0], f, ftdi_get_error_string(ftdi2));
- sleep(1);
+ usleep(1000);
}
printf("\n");
diff --git a/examples/serial_test.c b/examples/serial_test.c
index 6a9d8ff..e883030 100644
--- a/examples/serial_test.c
+++ b/examples/serial_test.c
@@ -8,9 +8,6 @@
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
-#ifdef __WIN32__
-#define sleep(x) Sleep(x)
-#endif
#include <getopt.h>
#include <signal.h>
#include <ftdi.h>
@@ -162,7 +159,7 @@ int main(int argc, char **argv)
else
f = ftdi_read_data(ftdi, buf, sizeof(buf));
if (f<0)
- sleep(1);
+ usleep(1000);
else if(f> 0 && !do_write)
{
fprintf(stderr, "read %d bytes\n", f);
--
Xiaofan
--
libftdi - see http://www.intra2net.com/en/developer/libftdi for details.
To unsubscribe send a mail to libftdi+unsubscribe@xxxxxxxxxxxxxxxxxxxxxxx
|