Fix hang when user has no libusb access because of plugdev under e.g linux.
[fw/stlink] / src / st-probe.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4 #include <sys/types.h>
5 #include "stlink-common.h"
6
7 void stlink_print_info(stlink_t *sl)
8 {
9         const chip_params_t *params = NULL;
10
11         if (!sl)
12                 return;
13
14         for (size_t n = 0; n < sizeof(sl->serial); n++)
15                 printf("%02x", sl->serial[n]);
16         printf("\n");
17
18         printf("\t flash: %zu (pagesize: %zu)\n", sl->flash_size, sl->flash_pgsz);
19         printf("\t  sram: %zu\n",       sl->sram_size);
20         printf("\tchipid: 0x%.4x\n",    sl->chip_id);
21
22         for (size_t i = 0; i < sizeof(devices) / sizeof(devices[0]); i++) {
23                 if(devices[i].chip_id == sl->chip_id) {
24                         params = &devices[i];
25                         break;
26                 }
27         }
28
29         if (params)
30                 printf("\t descr: %s\n", params->description);
31 }
32
33 int main(void)
34 {
35         stlink_t **stdevs;
36         size_t size;
37
38         size = stlink_probe_usb(&stdevs);
39
40         printf("Found %zu stlink programmers\n", size);
41
42         for (size_t n = 0; n < size; n++)
43                 stlink_print_info(stdevs[n]);
44
45         stlink_probe_usb_free(&stdevs, size);
46
47         return EXIT_SUCCESS;
48 }