a096a95c0d4c6973e5d03e1faa2e156949b6b345
[fw/openocd] / src / jtag / drivers / cmsis_dap.h
1 #ifndef OPENOCD_JTAG_DRIVERS_CMSIS_DAP_H
2 #define OPENOCD_JTAG_DRIVERS_CMSIS_DAP_H
3
4 #include <stdint.h>
5
6 struct cmsis_dap_backend;
7 struct cmsis_dap_backend_data;
8 struct command_registration;
9
10 struct cmsis_dap {
11         struct cmsis_dap_backend_data *bdata;
12         const struct cmsis_dap_backend *backend;
13         uint16_t packet_size;
14         int packet_count;
15         uint8_t *packet_buffer;
16         uint16_t packet_buffer_size;
17         uint8_t caps;
18         uint8_t mode;
19 };
20
21 struct cmsis_dap_backend {
22         const char *name;
23         int (*open)(struct cmsis_dap *dap, uint16_t vids[], uint16_t pids[], char *serial);
24         void (*close)(struct cmsis_dap *dap);
25         int (*read)(struct cmsis_dap *dap, int timeout_ms);
26         int (*write)(struct cmsis_dap *dap, int len, int timeout_ms);
27         int (*packet_buffer_alloc)(struct cmsis_dap *dap, unsigned int pkt_sz);
28 };
29
30 extern const struct cmsis_dap_backend cmsis_dap_hid_backend;
31 extern const struct cmsis_dap_backend cmsis_dap_usb_backend;
32 extern const struct command_registration cmsis_dap_usb_subcommand_handlers[];
33
34 #define REPORT_ID_SIZE   1
35
36 #endif