// -----------------------------------------------------------------------------
// Library "USBLib"
// Target:  for stm32l151
// Author:  Sychov A.
// Date:    19/04/2019
// Version: 1.0
// -----------------------------------------------------------------------------
// File:    Main header file of USB-library bridging layer
// Version: 1.0
// -----------------------------------------------------------------------------

#ifndef UBOOT_BRIDGE_H
#define UBOOT_BRIDGE_H
  #include "core/config.h"
  #include "usb/usb_spec.h"
  #include "usb/usb_transfers.h"
  #include "usb/usb_hooks.h"
  
  // @usb_bridge_register_dataapp
  // Register (assign) the data-stream handler @dataApp for the specified endpoint (@epnum)
  // After the registering all the data requests relates to the endpoint will be routed to
  // the aproptiate handler.
  bool usb_bridge_register_dataapp( uint8_t epnum, const sUSBAppEntry_Data_t * dataApp );

  // @usb_bridge_unregister_dataapp
  // De-Register (detach) the data-stream handler @dataApp from the specified endpoint (@epnum)
  // After the deregistering all the data requests relates to the endpoint will be routed to
  // the default data handler handler or will be discared
  bool usb_bridge_unregister_dataapp( uint8_t epnum );

  #define MAX_DATAAPP_ENDPOINTS   8  // value: maximum EP count for data applications plus one (reserved)

  #define USB_ACM_CONFIGURATION_VALUE    1
  #define USB_ACM_INTERFACE_INDEX        1
  #define USB_ACM_INTERFACE_VALUE        0
  #define USB_TMC_CONFIGURATION_VALUE    1
  #define USB_TMC_INTERFACE_INDEX        1  
  #define USB_TMC_INTERFACE_VALUE        0 
#endif