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)24int 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