1 /*
2  * Copyright (c) 2024, sakumisu
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 #ifndef USBD_ADB_H
7 #define USBD_ADB_H
8 
9 #include <stdint.h>
10 
11 #define ADB_SHELL_LOALID     0x01
12 #define ADB_FILE_LOALID      0x02
13 
14 // clang-format off
15 #define ADB_DESCRIPTOR_INIT(bFirstInterface, in_ep, out_ep, wMaxPacketSize)                   \
16     USB_INTERFACE_DESCRIPTOR_INIT(bFirstInterface, 0x00, 0x02, 0xff, 0x42, 0x01, 0x02), \
17     USB_ENDPOINT_DESCRIPTOR_INIT(in_ep, 0x02, wMaxPacketSize, 0x00),     \
18     USB_ENDPOINT_DESCRIPTOR_INIT(out_ep, 0x02, wMaxPacketSize, 0x00)
19 // clang-format on
20 
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
24 
25 struct usbd_interface *usbd_adb_init_intf(uint8_t busid, struct usbd_interface *intf, uint8_t in_ep, uint8_t out_ep);
26 
27 void usbd_adb_notify_shell_read(uint8_t *data, uint32_t len);
28 void usbd_adb_notify_file_read(uint8_t *data, uint32_t len);
29 void usbd_adb_notify_write_done(void);
30 bool usbd_adb_can_write(void);
31 int usbd_abd_write(uint32_t localid, const uint8_t *data, uint32_t len);
32 void usbd_adb_close(uint32_t localid);
33 
34 #ifdef __cplusplus
35 }
36 #endif
37 
38 #endif /* USBD_ADB_H */