Reformat example code to match libftdi style:
[libftdi] / examples / bitbang_ft2232.c
1 /* bitbang_ft2232.c
2
3    Output some flickering in bitbang mode to the FT2232
4
5    Thanks to max@koeln.ccc.de for fixing and extending
6    the example for the second channel.
7
8    This program is distributed under the GPL, version 2
9 */
10
11 #include <stdio.h>
12 #include <stdlib.h>
13 #include <unistd.h>
14 #ifdef __WIN32__
15 #define sleep(x) _sleep(x)
16 #endif
17 #include <ftdi.h>
18
19 int main(int argc, char **argv)
20 {
21     struct ftdi_context ftdic, ftdic2;
22     unsigned char buf[1];
23     int f,i;
24
25     // Init 1. channel
26     if (ftdi_init(&ftdic) < 0)
27     {
28         fprintf(stderr, "ftdi_init failed\n");
29         return EXIT_FAILURE;
30     }
31
32     ftdi_set_interface(&ftdic, INTERFACE_A);
33     f = ftdi_usb_open(&ftdic, 0x0403, 0x6001);
34     if (f < 0 && f != -5)
35     {
36         fprintf(stderr, "unable to open ftdi device: %d (%s)\n", f, ftdi_get_error_string(&ftdic));
37         exit(-1);
38     }
39     printf("ftdi open succeeded(channel 1): %d\n",f);
40
41     printf("enabling bitbang mode(channel 1)\n");
42     ftdi_set_bitmode(&ftdic, 0xFF, BITMODE_BITBANG);
43
44     // Init 2. channel
45     if (ftdi_init(&ftdic2) < 0)
46     {
47         fprintf(stderr, "ftdi_init failed\n");
48         return EXIT_FAILURE;
49     }
50     ftdi_set_interface(&ftdic2, INTERFACE_B);
51     f = ftdi_usb_open(&ftdic2, 0x0403, 0x6001);
52     if (f < 0 && f != -5)
53     {
54         fprintf(stderr, "unable to open ftdi device: %d (%s)\n", f, ftdi_get_error_string(&ftdic2));
55         exit(-1);
56     }
57     printf("ftdi open succeeded(channel 2): %d\n",f);
58
59     printf("enabling bitbang mode (channel 2)\n");
60     ftdi_set_bitmode(&ftdic2, 0xFF, BITMODE_BITBANG);
61
62     // Write data
63     printf("startloop\n");
64     for (i = 0; i < 23; i++)
65     {
66         buf[0] =  0x1;
67         printf("porta: %02i: 0x%02x \n",i,buf[0]);
68         f = ftdi_write_data(&ftdic, buf, 1);
69         if (f < 0)
70             fprintf(stderr,"write failed on channel 1 for 0x%x, error %d (%s)\n", buf[0], f, ftdi_get_error_string(&ftdic));
71         sleep(1);
72
73         buf[0] =  0x2;
74         printf("porta: %02i: 0x%02x \n",i,buf[0]);
75         f = ftdi_write_data(&ftdic, buf, 1);
76         if (f < 0)
77             fprintf(stderr,"write failed on channel 1 for 0x%x, error %d (%s)\n", buf[0], f, ftdi_get_error_string(&ftdic));
78         sleep(1);
79
80         buf[0] =  0x1;
81         printf("portb: %02i: 0x%02x \n",i,buf[0]);
82         f = ftdi_write_data(&ftdic2, buf, 1);
83         if (f < 0)
84             fprintf(stderr,"write failed on channel 2 for 0x%x, error %d (%s)\n", buf[0], f, ftdi_get_error_string(&ftdic2));
85         sleep(1);
86
87         buf[0] =  0x2;
88         printf("portb: %02i: 0x%02x \n",i,buf[0]);
89         f = ftdi_write_data(&ftdic2, buf, 1);
90         if (f < 0)
91             fprintf(stderr,"write failed on channel 2 for 0x%x, error %d (%s)\n", buf[0], f, ftdi_get_error_string(&ftdic2));
92         sleep(1);
93     }
94     printf("\n");
95
96     printf("disabling bitbang mode(channel 1)\n");
97     ftdi_disable_bitbang(&ftdic);
98     ftdi_usb_close(&ftdic);
99     ftdi_deinit(&ftdic);
100
101     printf("disabling bitbang mode(channel 2)\n");
102     ftdi_disable_bitbang(&ftdic2);
103     ftdi_usb_close(&ftdic2);
104     ftdi_deinit(&ftdic2);
105
106     return 0;
107 }