X-Git-Url: http://developer.intra2net.com/git/?a=blobdiff_plain;f=examples%2Fbitbang.c;fp=examples%2Fbitbang.c;h=1234852b88fe5c10fef7023e3c032f74e4601555;hb=ad397a4bb9a5c258c8655e30f6856c0103d49a9e;hp=0000000000000000000000000000000000000000;hpb=5d5ed648011229545f85385828346aee57e20815;p=libftdi diff --git a/examples/bitbang.c b/examples/bitbang.c new file mode 100644 index 0000000..1234852 --- /dev/null +++ b/examples/bitbang.c @@ -0,0 +1,69 @@ +/* This program is distributed under the GPL, version 2 */ + +#include +#include +#include + +int main(int argc, char **argv) +{ + struct ftdi_context ftdic; + int f,i; + + ftdi_init(&ftdic); + + f = ftdi_usb_open(&ftdic, 0x0403, 0x6001); + + if(f < 0 && f != -5) { + fprintf(stderr, "unable to open ftdi device: %d (%s)\n", f, ftdi_get_error_string(&ftdic)); + exit(-1); + } + + printf("ftdi open succeeded: %d\n",f); + + printf("enabling bitbang mode\n"); + ftdi_enable_bitbang(&ftdic, 0xFF); + + char buf[1]; + + sleep(3); + + buf[0] = 0x0; + printf("turning everything on\n"); + f = ftdi_write_data(&ftdic, buf, 1); + if(f < 0) { + fprintf(stderr,"write failed for 0x%x, error %d (%s)\n",buf[0],f, ftdi_get_error_string(&ftdic)); + } + + sleep(3); + + buf[0] = 0xFF; + printf("turning everything off\n"); + f = ftdi_write_data(&ftdic, buf, 1); + if(f < 0) { + fprintf(stderr,"write failed for 0x%x, error %d (%s)\n",buf[0],f, ftdi_get_error_string(&ftdic)); + } + + sleep(3); + + for(i = 0; i < 32; i++) { + buf[0] = 0 | (0xFF ^ 1 << (i % 8)); + if( i > 0 && (i % 8) == 0) { + printf("\n"); + } + printf("%02hhx ",buf[0]); + fflush(stdout); + f = ftdi_write_data(&ftdic, buf, 1); + if(f < 0) { + fprintf(stderr,"write failed for 0x%x, error %d (%s)\n",buf[0],f, ftdi_get_error_string(&ftdic)); + } + sleep(1); + } + + printf("\n"); + + printf("disabling bitbang mode\n"); + ftdi_disable_bitbang(&ftdic); + + ftdi_usb_close(&ftdic); + ftdi_deinit(&ftdic); +}