/** * @brief Manages CDC Menu Process. * @param None * @retval None */ void CDC_MenuProcess(void) { switch(CdcDemo.state) { case CDC_DEMO_WAIT: if(Appli_state == APPLICATION_READY) { BSP_LCD_SetTextColor(LCD_COLOR_GREEN); BSP_LCD_DisplayStringAtLine(19, (uint8_t *)"Press User button to start sending data "); /* Wait for User Input */ while((BSP_PB_GetState(BUTTON_TAMPER) != SET) && (Appli_state != APPLICATION_DISCONNECT)) { } CdcDemo.state = CDC_DEMO_SEND; /* Prevent debounce effect for user key */ HAL_Delay(400); BSP_LCD_ClearStringLine(19); } break; case CDC_DEMO_SEND: /* Read and Write File Here */ if(Appli_state == APPLICATION_READY) { CDC_Handle_Send_Menu(); } break; case CDC_DEMO_RECEIVE: if(Appli_state == APPLICATION_READY) { CDC_Handle_Receive_Menu(); } break; default: break; } if(Appli_state == APPLICATION_DISCONNECT) { Appli_state = APPLICATION_IDLE; LCD_LOG_ClearTextZone(); LCD_ErrLog("CDC device disconnected!\n"); CdcDemo.state = CDC_DEMO_WAIT; CdcDemo.Receive_state = CDC_RECEIVE_IDLE; CdcDemo.Send_state = CDC_SEND_IDLE; CdcDemo.select = 0; } }
/** * @brief Manages CDC Menu Process. * @param None * @retval None */ void CDC_MenuProcess(void) { switch(CdcDemo.state) { case CDC_DEMO_IDLE: CDC_SelectItem(CDC_main_menu, 0); CdcDemo.state = CDC_DEMO_WAIT; CdcDemo.select = 0; break; case CDC_DEMO_WAIT: if(CdcDemo.select != PrevSelect) { PrevSelect = CdcDemo.select; CDC_SelectItem(CDC_main_menu, CdcDemo.select & 0x7F); /* Handle select item */ if(CdcDemo.select & 0x80) { switch(CdcDemo.select & 0x7F) { case 0: CdcDemo.state = CDC_DEMO_SEND; CdcDemo.Send_state = CDC_SEND_IDLE; break; case 1: CdcDemo.state = CDC_DEMO_RECEIVE; CdcDemo.Receive_state = CDC_RECEIVE_IDLE; break; case 2: CdcDemo.state = CDC_DEMO_CONFIGURATION; CdcDemo.Configuration_state = CDC_CONFIGURATION_IDLE; break; case 3: CdcDemo.state = CDC_DEMO_REENUMERATE; break; default: break; } } } break; case CDC_DEMO_SEND: if(Appli_state == APPLICATION_READY) { CDC_Handle_Send_Menu(); } else { CdcDemo.state = CDC_DEMO_WAIT; } break; case CDC_DEMO_RECEIVE: if(Appli_state == APPLICATION_READY) { CDC_Handle_Receive_Menu(); } else { CdcDemo.state = CDC_DEMO_WAIT; } break; case CDC_DEMO_CONFIGURATION: if(Appli_state == APPLICATION_READY) { CDC_Handle_Configuration_Menu(); } else { CdcDemo.state = CDC_DEMO_WAIT; } break; case CDC_DEMO_REENUMERATE: /* Force MSC Device to re-enumerate */ USBH_ReEnumerate(&hUSBHost); CdcDemo.state = CDC_DEMO_WAIT; break; default: break; } CdcDemo.select &= 0x7F; if(Appli_state == APPLICATION_DISCONNECT) { Appli_state = APPLICATION_IDLE; LCD_LOG_ClearTextZone(); LCD_ErrLog("CDC device disconnected!\n"); CDC_ChangeSelectMode(CDC_SELECT_MENU); CdcDemo.state = CDC_DEMO_IDLE; CdcDemo.select = 0; } }