1 /*
2  * Copyright (c) 2023 Nordic Semiconductor ASA
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #include <sample_usbd.h>
8 
9 #include <zephyr/kernel.h>
10 #include <zephyr/device.h>
11 #include <zephyr/sys/byteorder.h>
12 #include <zephyr/usb/usbd.h>
13 #include <zephyr/usb/bos.h>
14 #include <zephyr/usb/msos_desc.h>
15 
16 #include <cmsis_dap.h>
17 
18 #include <zephyr/logging/log.h>
19 LOG_MODULE_REGISTER(dap_sample, LOG_LEVEL_INF);
20 
21 #include "webusb.h"
22 #include "msosv2.h"
23 
main(void)24 int main(void)
25 {
26 	const struct device *const swd_dev = DEVICE_DT_GET_ONE(zephyr_swdp_gpio);
27 	struct usbd_context *sample_usbd;
28 	int ret;
29 
30 	ret = dap_setup(swd_dev);
31 	if (ret) {
32 		LOG_ERR("Failed to initialize DAP controller, %d", ret);
33 		return ret;
34 	}
35 
36 	sample_usbd = sample_usbd_setup_device(NULL);
37 	if (sample_usbd == NULL) {
38 		LOG_ERR("Failed to setup USB device");
39 		return -ENODEV;
40 	}
41 
42 	ret = usbd_add_descriptor(sample_usbd, &bos_vreq_msosv2);
43 	if (ret) {
44 		LOG_ERR("Failed to add MSOSv2 capability descriptor");
45 		return ret;
46 	}
47 
48 	ret = usbd_add_descriptor(sample_usbd, &bos_vreq_webusb);
49 	if (ret) {
50 		LOG_ERR("Failed to add WebUSB capability descriptor");
51 		return ret;
52 	}
53 
54 	ret = usbd_init(sample_usbd);
55 	if (ret) {
56 		LOG_ERR("Failed to initialize device support");
57 		return ret;
58 	}
59 
60 	ret = usbd_enable(sample_usbd);
61 	if (ret) {
62 		LOG_ERR("Failed to enable device support");
63 		return ret;
64 	}
65 
66 	return 0;
67 }
68