====== USB Audio Call Tree ====== ---- ===== USB_Istr ===== USB_Istr <-- USB_LP_CAN1_RX0_IRQHandler | CTR_LP | | In0_Process | | Setup0_Process | | Out0_Process | | (*pEpInt_OUT[EPindex-1])() -- Callback | | | EP1_OUT_Callback | | | | GetENDPOINT | | | | GetEPDblBuf0Count | | | | GetEPDblBuf1Count | | | | PMAToUserBufferCopy | | | EP2_OUT_Callback | | | EP3_OUT_Callback | | | EP4_OUT_Callback | | | EP5_OUT_Callback | | | EP6_OUT_Callback | | | EP7_OUT_Callback | | (*pEpInt_IN[EPindex-1])() | | | EP1_IN_Callback | | | EP2_IN_Callback | | | EP3_IN_Callback | | | EP4_IN_Callback | | | EP5_IN_Callback | | | EP6_IN_Callback | | | EP7_IN_Callback | Speaker_Reset -- Callback ==== Setup0_Process ==== Setup0_Process | NoData_Setup0 | | Standard_SetConfiguration | | Standard_SetDeviceFeature | | Standard_ClearFeature | | Standard_SetInterface | | | Speaker_Get_Interface_Setting - **Callback** via Class_Get_Interface_Setting | | | Speaker_SetInterface - **Callback** via User_SetInterface | | Standard_ClearFeature | | Standard_SetEndPointFeature | | Class_NoData_Setup | | USB_StatusIn | Data_Setup0 | Post0_Process ==== USB_HP_CAN1_TX_IRQHandler/USB_HP_IRQHandler ==== USB_HP_CAN1_TX_IRQHandler / USB_HP_IRQHandler | CTR_HP(); | | (*pEpInt_OUT[EPindex-1])() -- Callback | | | EP1_OUT_Callback | | | | GetENDPOINT | | | | GetEPDblBuf0Count | | | | GetEPDblBuf1Count | | | | PMAToUserBufferCopy | | | EP2_OUT_Callback | | | EP3_OUT_Callback | | | EP4_OUT_Callback | | | EP5_OUT_Callback | | | EP6_OUT_Callback | | | EP7_OUT_Callback | | (*pEpInt_IN[EPindex-1])() | | | EP1_IN_Callback | | | EP2_IN_Callback | | | EP3_IN_Callback | | | EP4_IN_Callback | | | EP5_IN_Callback | | | EP6_IN_Callback | | | EP7_IN_Callback ===== USB_Init ===== USB_Init | Speaker_init - Callback | | Get_SerialNum | | PowerOn | | | USB_Cable_Config | | USB_SIL_Init | | | _SetISTR | | | _SetCNTR ===== APIs ===== ---- ==== usb_regs ==== The usb_regs module implements the hardware abstraction layer, it offers a set of basic functions for accessing the USB-FS_Device **peripheral registers**. ^ Common register functions ^^ ^ Register ^ Function ^ | CNTR | void SetCNTR (uint16_t wValue) | | ::: | uint16_t GetCNTR (void) | | ISTR | void SetISTR (uint16_t wValue) | | ::: | uint16_t GetISTR (void) | | FNR | uint16_t GetFNR (void) | | DADDR | void SetDADDR (uint16_t wValue) | | ::: | uint16_t GetDADDR (void) | | BTABLE | void SetBTABLE (uint16_t wValue) | | ::: | uint16_t GetBTABLE (void) | ==== Endpoint register functions ==== All operations with endpoint registers can be obtained with the SetENDPOINT and GetENDPOINT functions. However, many functions are derived from these to offer the advantage of a direct action on a specific field.