Line data Source code
1 1 : /*
2 : * Copyright (c) 2023 Nordic Semiconductor ASA
3 : *
4 : * SPDX-License-Identifier: Apache-2.0
5 : */
6 :
7 : /**
8 : * @file
9 : * @brief USBD Mass Storage Class public header
10 : *
11 : * Header exposes API for registering LUNs.
12 : */
13 :
14 : #include <zephyr/sys/iterable_sections.h>
15 :
16 : #ifndef ZEPHYR_INCLUDE_USB_CLASS_USBD_MSC_H_
17 : #define ZEPHYR_INCLUDE_USB_CLASS_USBD_MSC_H_
18 :
19 0 : struct usbd_msc_lun {
20 0 : const char *disk;
21 0 : const char *vendor;
22 0 : const char *product;
23 0 : const char *revision;
24 : };
25 :
26 : /**
27 : * @brief USB Mass Storage Class device API
28 : * @defgroup usbd_msc_device USB Mass Storage Class device API
29 : * @ingroup usb
30 : * @since 3.4
31 : * @version 0.2.0
32 : * @{
33 : */
34 :
35 : /**
36 : * @brief Define USB Mass Storage Class logical unit
37 : *
38 : * Use this macro to create Logical Unit mapping in USB MSC for selected disk.
39 : * Up to `CONFIG_USBD_MSC_LUNS_PER_INSTANCE` disks can be registered on single
40 : * USB MSC instance. Currently only one USB MSC instance is supported.
41 : *
42 : * @param id Identifier by which the linker sorts registered LUNs
43 : * @param disk_name Disk name as used in @ref disk_access_interface
44 : * @param t10_vendor T10 Vendor Indetification
45 : * @param t10_product T10 Product Identification
46 : * @param t10_revision T10 Product Revision Level
47 : */
48 1 : #define USBD_DEFINE_MSC_LUN(id, disk_name, t10_vendor, t10_product, t10_revision) \
49 : static const STRUCT_SECTION_ITERABLE(usbd_msc_lun, usbd_msc_lun_##id) = { \
50 : .disk = disk_name, \
51 : .vendor = t10_vendor, \
52 : .product = t10_product, \
53 : .revision = t10_revision, \
54 : }
55 :
56 : /**
57 : * @}
58 : */
59 :
60 : #endif /* ZEPHYR_INCLUDE_USB_CLASS_USBD_MSC_H_ */
|