/*
* @file hv_drv_UsbGadgetBillboard.h
* @brief The header of USB Billboard Gadget.
*
* @author HiView SoC Software Team
* @version 1.0.0
* @date 2022-06-15
*/

#ifndef __HV_DRV_USB_GADGET_BILLBOARD_H_
#define __HV_DRV_USB_GADGET_BILLBOARD_H_

#include "hv_drv_UsbCh9.h"
#include "hv_drv_UsbGadget.h"
#include "hv_drv_UsbGadgetComposite.h"


typedef int (*g_billboard_bind_callback_f)(struct usb_configuration *);

/* used in Gadget downloader callback linker list */
struct g_billboard_bind_callback {
    const char *usb_function_name;
    g_billboard_bind_callback_f fptr;
};

int     g_billboard_bind_fixup(struct usb_device_descriptor *, const char *);
int     g_billboard_get_board_bcd_device_number(int gcnum);
int     g_billboard_board_usb_cable_connected(void);
int     g_billboard_register(const char *s);
void    g_billboard_unregister(void);
void    g_billboard_set_serialnumber(char *);

int     run_usb_billboard_gadget(int usbctrl_index, char *usb_dnl_gadget);

#endif
