2020-03-02 05:56 AM
I want to implement an USB host MSC class for concurrent log transfer to an USB stick inside an RTOS context. I have seen the newest USB host device librarie implements an RTOS / CMSIS interface. But I have seen in code that there are still a lot of busy waitings. For example: In function
USBH_MSC_Write
in usbh_msc.c
there is the following wile loop:
while (USBH_MSC_RdWrProcess(phost, lun) == USBH_BUSY)
{
if(((phost->Timer - timeout) > (10000U * length)) || (phost->device.is_connected == 0U))
{
MSC_Handle->state = MSC_IDLE;
return USBH_FAIL;
}
}
Inside this loop in the function
static USBH_StatusTypeDef USBH_MSC_RdWrProcess(USBH_HandleTypeDef *phost, uint8_t lun)
there is a state machine which checks some inner states.
Does this while Loop blocks the whole CPU during transfer preventing lower priorized task to run?
Thanks and kindly regards
Bernhard.