/*
* @file hv_drv_UsbGadgetConfig.h
* @brief Header file of hv_drv_UsbGadgetConfig(Simplify building config descriptors). 
*
* @author HiView SoC Software Team
* @version 1.0.0
* @date 2022-06-15
*/


#ifndef __HV_DRV_USB_GADGET_CONFIG_H_
#define __HV_DRV_USB_GADGET_CONFIG_H_

#include "hv_drv_UsbGadgetComposite.h"
#include "hv_drv_UsbDefines.h"

void usb_free_all_descriptors(struct usb_function *f);

int usb_assign_descriptors(struct usb_function *f,struct usb_descriptor_header **fs,struct usb_descriptor_header **hs,struct usb_descriptor_header **ss);

struct usb_descriptor_header ** usb_copy_descriptors(struct usb_descriptor_header **src);

int usb_gadget_config_buf(const struct usb_config_descriptor *config,void *buf,unsigned    length,const struct usb_descriptor_header **desc);

int usb_descriptor_fillbuf(void *buf, unsigned buflen,const struct usb_descriptor_header **src);

#endif
