X-Git-Url: http://developer.intra2net.com/git/?p=libftdi;a=blobdiff_plain;f=examples%2Fserial_test.c;h=289dd97bd7bd02b3eb937e73e16eccd134cad991;hp=60c5a84b87028b394f9ecbd4795e65fa3d0fc038;hb=19f1452cde9bfe9da0e2830af128fae958ae877a;hpb=8b0b694fd737f5318adc29fa4cc48783a77a502e diff --git a/examples/serial_test.c b/examples/serial_test.c index 60c5a84..289dd97 100644 --- a/examples/serial_test.c +++ b/examples/serial_test.c @@ -28,13 +28,13 @@ int main(int argc, char **argv) { struct ftdi_context *ftdi; unsigned char buf[1024]; - int f, i; - int vid = 0; + int f = 0, i; + int vid = 0x403; int pid = 0; int baudrate = 115200; int interface = INTERFACE_ANY; int do_write = 0; - unsigned int pattern; + unsigned int pattern = 0xffff; int retval = EXIT_FAILURE; while ((i = getopt(argc, argv, "i:v:p:b:w::")) != -1) @@ -55,9 +55,13 @@ int main(int argc, char **argv) break; case 'w': do_write = 1; - pattern = strtoul(optarg, NULL, 0); + if (optarg) + pattern = strtoul(optarg, NULL, 0); if (pattern > 0xff) + { fprintf(stderr, "Please provide a 8 bit pattern\n"); + exit(-1); + } break; default: fprintf(stderr, "usage: %s [-i interface] [-v vid] [-p pid] [-b baudrate] [-w [pattern]]\n", *argv); @@ -126,6 +130,21 @@ int main(int argc, char **argv) exit(-1); } + /* Set line parameters + * + * TODO: Make these parameters settable from the command line + * + * Parameters are choosen that sending a continous stream of 0x55 + * should give a square wave + * + */ + f = ftdi_set_line_property(ftdi, 8, STOP_BIT_1, NONE); + if (f < 0) + { + fprintf(stderr, "unable to set line parameters: %d (%s)\n", f, ftdi_get_error_string(ftdi)); + exit(-1); + } + if (do_write) for(i=0; i<1024; i++) buf[i] = pattern; @@ -134,11 +153,13 @@ int main(int argc, char **argv) while (!exitRequested) { if (do_write) - f = ftdi_write_data(ftdi, buf, sizeof(buf)); + f = ftdi_write_data(ftdi, buf, + (baudrate/512 >sizeof(buf))?sizeof(buf): + (baudrate/512)?baudrate/512:1); else f = ftdi_read_data(ftdi, buf, sizeof(buf)); if (f<0) - sleep(1); + usleep(1 * 1000000); else if(f> 0 && !do_write) { fprintf(stderr, "read %d bytes\n", f);