Fix all leak in the examples shown with no device connected
[libftdi] / examples / simple.c
CommitLineData
bf956a00
TJ
1/* simple.c
2
3 Simple libftdi usage example
4
5 This program is distributed under the GPL, version 2
6*/
7
ad397a4b 8#include <stdio.h>
579b006f 9#include <stdlib.h>
ad397a4b
TJ
10#include <ftdi.h>
11
6ac169ea 12int main(void)
ad397a4b
TJ
13{
14 int ret;
15 struct ftdi_context ftdic;
6ac169ea
TJ
16 if (ftdi_init(&ftdic) < 0)
17 {
18 fprintf(stderr, "ftdi_init failed\n");
19 return EXIT_FAILURE;
20 }
ad397a4b 21
22d12cda
TJ
22 if ((ret = ftdi_usb_open(&ftdic, 0x0403, 0x6001)) < 0)
23 {
ad397a4b 24 fprintf(stderr, "unable to open ftdi device: %d (%s)\n", ret, ftdi_get_error_string(&ftdic));
4cc3fa8a 25 ftdi_deinit(&ftdic);
ad397a4b
TJ
26 return EXIT_FAILURE;
27 }
28
cb6250fa 29 // Read out FTDIChip-ID of R type chips
22d12cda
TJ
30 if (ftdic.type == TYPE_R)
31 {
cb6250fa
TJ
32 unsigned int chipid;
33 printf("ftdi_read_chipid: %d\n", ftdi_read_chipid(&ftdic, &chipid));
34 printf("FTDI chipid: %X\n", chipid);
35 }
36
6ac169ea
TJ
37 if ((ret = ftdi_usb_close(&ftdic)) < 0)
38 {
39 fprintf(stderr, "unable to close ftdi device: %d (%s)\n", ret, ftdi_get_error_string(&ftdic));
4cc3fa8a 40 ftdi_deinit(&ftdic);
6ac169ea
TJ
41 return EXIT_FAILURE;
42 }
43
ad397a4b
TJ
44 ftdi_deinit(&ftdic);
45
46 return EXIT_SUCCESS;
47}