/** * @brief This function handles SysTick Handler. * @param None * @retval None */ void SysTick_Handler(void) { HAL_IncTick(); Toggle_Leds(); /* Check periodically the buffer state and fill played buffer with new data following the state that has been updated by the BSP_AUDIO_OUT_TransferComplete_CallBack() and BSP_AUDIO_OUT_HalfTransfer_CallBack() */ AUDIO_Process(); }
/** * @brief Manages MTP Menu Process. * @param None * @retval None */ void MTP_MenuProcess(void) { switch(mtp_demo.state) { case MTP_DEMO_IDLE: MTP_SelectItem(MTP_main_menu, 0); mtp_demo.state = MTP_DEMO_WAIT; mtp_demo.select = 0; BSP_LCD_SetTextColor(LCD_COLOR_GREEN); BSP_LCD_DisplayStringAtLine(15, (uint8_t *)"Use [Joystick Left/Right] to scroll up/down"); BSP_LCD_DisplayStringAtLine(16, (uint8_t *)"Use [Joystick Up/Down] to scroll MTP menu"); break; case MTP_DEMO_WAIT: if(mtp_demo.select != prev_select) { prev_select = mtp_demo.select; MTP_SelectItem(MTP_main_menu, mtp_demo.select & 0x7F); /* Handle select item */ if(mtp_demo.select & 0x80) { switch(mtp_demo.select & 0x7F) { case 0: mtp_demo.state = MTP_DEMO_EXPLORE; break; case 1: /* Display HMI messages */ BSP_LCD_SetTextColor(LCD_COLOR_GREEN); BSP_LCD_DisplayStringAtLine(14, (uint8_t *)" "); BSP_LCD_DisplayStringAtLine(15, (uint8_t *)" "); BSP_LCD_DisplayStringAtLine(16, (uint8_t *)"Use [User Key] To Stop and return from player"); BSP_LCD_SetTextColor(LCD_COLOR_WHITE); /* Set PLAYBACK state and start playing 1st file */ audio_state = AUDIO_STATE_IDLE; mtp_demo.state = MTP_DEMO_PLAYBACK; MTP_ChangeSelectMode(MTP_PLAYBACK_CONTROL); break; case 2: mtp_demo.state = MTP_REENUMERATE; break; default: break; } } } break; case MTP_DEMO_EXPLORE: if(Appli_state == APPLICATION_READY) { if(MTP_Init() == 0) { if(MTP_ExploreWavFile() > 0) { LCD_ErrLog("There is no WAV file on the microSD.\n" ); MTP_ChangeSelectMode(MTP_SELECT_MENU); mtp_demo.state = MTP_DEMO_IDLE; } else { mtp_demo.state = MTP_DEMO_WAIT; } } } else { mtp_demo.state = MTP_DEMO_WAIT; } break; case MTP_DEMO_PLAYBACK: if(Appli_state == APPLICATION_READY) { if(MTP_Init() == 0) { if(audio_state == AUDIO_STATE_IDLE) { /* Start Playing */ audio_state = AUDIO_STATE_INIT; if(AUDIO_Start(0) == AUDIO_ERROR_IO) { MTP_ChangeSelectMode(MTP_SELECT_MENU); mtp_demo.state = MTP_DEMO_IDLE; } else { BSP_LCD_SetTextColor(LCD_COLOR_YELLOW); BSP_LCD_DisplayStringAtLine(10, (uint8_t *)"[ UP ] : Volume +"); BSP_LCD_DisplayStringAtLine(11, (uint8_t *)"[ DOWN ] : Volume -"); BSP_LCD_DisplayStringAtLine(12, (uint8_t *)"[ LEFT ] : Previous"); BSP_LCD_DisplayStringAtLine(13, (uint8_t *)"[ RIGHT ] : Next"); BSP_LCD_DisplayStringAtLine(14, (uint8_t *)"[ SEL ] : Pause/Resume"); BSP_LCD_SetTextColor(LCD_COLOR_WHITE); } } else /* Not idle */ { if(AUDIO_Process() == AUDIO_ERROR_IO) { MTP_ChangeSelectMode(MTP_SELECT_MENU); mtp_demo.state = MTP_DEMO_IDLE; } } } } else { mtp_demo.state = MTP_DEMO_WAIT; } break; case MTP_REENUMERATE: /* Force MTP Device to re-enumerate */ USBH_ReEnumerate(&hUSBHost); mtp_demo.state = MTP_DEMO_WAIT; break; default: break; } if(Appli_state == APPLICATION_DISCONNECT) { Appli_state = APPLICATION_IDLE; BSP_AUDIO_OUT_Stop(CODEC_PDWN_SW); MTP_ChangeSelectMode(MTP_SELECT_MENU); } mtp_demo.select &= 0x7F; }
/** * @brief Manages Audio Menu Process. * @param None * @retval None */ void AUDIO_MenuProcess(void) { switch(audio_demo.state) { case AUDIO_DEMO_IDLE: BSP_LCD_SetTextColor(LCD_COLOR_GREEN); BSP_LCD_DisplayStringAtLine(16, (uint8_t *)" "); BSP_LCD_DisplayStringAtLine(17, (uint8_t *)"Use [Buttons Left/Right] to scroll up/down "); BSP_LCD_DisplayStringAtLine(18, (uint8_t *)"Use [Joystick Up/Down] to scroll audio menu "); BSP_LCD_SetTextColor(LCD_COLOR_WHITE); AUDIO_MenuSelectItem(AUDIO_main_menu, 0); audio_demo.state = AUDIO_DEMO_WAIT; audio_demo.select = 0; break; case AUDIO_DEMO_WAIT: if(audio_demo.select != prev_select) { prev_select = audio_demo.select; AUDIO_MenuSelectItem(AUDIO_main_menu, audio_demo.select & 0x7F); /* Handle select item */ if(audio_demo.select & 0x80) { audio_demo.select &= 0x7F; switch(audio_demo.select) { case 0: audio_demo.state = AUDIO_DEMO_EXPLORE; break; case 1: /* Display HMI messages */ BSP_LCD_SetTextColor(LCD_COLOR_GREEN); BSP_LCD_DisplayStringAtLine(14, (uint8_t *)" "); BSP_LCD_DisplayStringAtLine(15, (uint8_t *)" "); BSP_LCD_DisplayStringAtLine(16, (uint8_t *)"Use [User Key] To Stop and return from player"); BSP_LCD_SetTextColor(LCD_COLOR_WHITE); /* Set PLAYBACK state and start playing 1st file */ audio_state = AUDIO_STATE_IDLE; audio_demo.state = AUDIO_DEMO_PLAYBACK; Audio_ChangeSelectMode(AUDIO_PLAYBACK_CONTROL); break; case 2: audio_demo.state = AUDIO_REENUMERATE; break; default: break; } } } break; case AUDIO_DEMO_EXPLORE: if(Appli_state == APPLICATION_AUDIO) { if(Audio_ShowWavFiles() > 0) { LCD_ErrLog("There is no WAV file on the microSD.\n"); Audio_ChangeSelectMode(AUDIO_SELECT_MENU); } else { audio_demo.state = AUDIO_DEMO_WAIT; } } break; case AUDIO_DEMO_PLAYBACK: if(Appli_state == APPLICATION_AUDIO) { if(audio_state == AUDIO_STATE_IDLE) { /* Start Playing...*/ audio_state = AUDIO_STATE_INIT; if(AUDIO_Start(0) == AUDIO_ERROR_IO) { Audio_ChangeSelectMode(AUDIO_SELECT_MENU); } else { BSP_LCD_SetTextColor(LCD_COLOR_YELLOW); BSP_LCD_DisplayStringAtLine(10, (uint8_t *)"[ UP ] : Volume +"); BSP_LCD_DisplayStringAtLine(11, (uint8_t *)"[ DOWN ] : Volume -"); BSP_LCD_DisplayStringAtLine(12, (uint8_t *)"[ LEFT ] : Previous"); BSP_LCD_DisplayStringAtLine(13, (uint8_t *)"[ RIGHT ] : Next"); BSP_LCD_DisplayStringAtLine(14, (uint8_t *)"[ SEL ] : Pause/Resume"); BSP_LCD_SetTextColor(LCD_COLOR_WHITE); } } else /* Not idle */ { if(AUDIO_Process() == AUDIO_ERROR_IO) { Audio_ChangeSelectMode(AUDIO_SELECT_MENU); } } } break; case AUDIO_REENUMERATE: /* Force Audio Device to re-enumerate */ USBH_ReEnumerate(&hUSBHost); audio_demo.state = AUDIO_DEMO_WAIT; break; default: break; } }
/** * @brief Manages AUDIO Menu Process. * @param None * @retval None */ void AUDIO_MenuProcess(void) { if(AppliState == APPLICATION_READY) { switch(AudioDemo.state) { case AUDIO_DEMO_IDLE: AUDIO_SelectItem(AUDIO_main_menu, 0); if(AUDIO_ShowWavFiles() > 0) { LCD_ErrLog("There is no WAV file on the USB Key.\n"); AUDIO_ChangeSelectMode(AUDIO_SELECT_MENU); AudioDemo.state = AUDIO_DEMO_IDLE; } else { AudioDemo.state = AUDIO_DEMO_WAIT; } AudioDemo.select = 0; BSP_LCD_SetTextColor(LCD_COLOR_GREEN); BSP_LCD_DisplayStringAtLine(17, (uint8_t *)"Use [Joystick Left/Right] to scroll up/down"); BSP_LCD_DisplayStringAtLine(18, (uint8_t *)"Use [Joystick Up/Down] to scroll Audio Playback and Record menu"); break; case AUDIO_DEMO_WAIT: if(AudioDemo.select != PrevSelect) { PrevSelect = AudioDemo.select; AUDIO_SelectItem(AUDIO_main_menu, AudioDemo.select & 0x7F); /* Handle select item */ if(AudioDemo.select & 0x80) { switch(AudioDemo.select & 0x7F) { case 0: AudioDemo.state = AUDIO_DEMO_EXPLORE; break; case 1: /* Display HMI messages */ BSP_LCD_SetTextColor(LCD_COLOR_GREEN); BSP_LCD_DisplayStringAtLine(14 ,(uint8_t *)" "); BSP_LCD_DisplayStringAtLine(15 ,(uint8_t *)" "); BSP_LCD_DisplayStringAtLine(16 ,(uint8_t *)" "); BSP_LCD_DisplayStringAtLine(17 ,(uint8_t *)" "); BSP_LCD_DisplayStringAtLine(18 ,(uint8_t *)"Use [User Key] To Stop and return from player/recorder"); BSP_LCD_SetTextColor(LCD_COLOR_WHITE); /* Set PLAYBACK state and start playing 1st file */ AudioState = AUDIO_STATE_IDLE; AudioDemo.state = AUDIO_DEMO_PLAYBACK; AUDIO_ChangeSelectMode(AUDIO_PLAYBACK_CONTROL); break; case 2: /* Display HMI messages */ BSP_LCD_SetTextColor(LCD_COLOR_GREEN); BSP_LCD_DisplayStringAtLine(14 ,(uint8_t *)" "); BSP_LCD_DisplayStringAtLine(15 ,(uint8_t *)" "); BSP_LCD_DisplayStringAtLine(16 ,(uint8_t *)" "); BSP_LCD_DisplayStringAtLine(17 ,(uint8_t *)" "); BSP_LCD_DisplayStringAtLine(18 ,(uint8_t *)"Use [User Key] To Stop and return from player/recorder"); BSP_LCD_SetTextColor(LCD_COLOR_WHITE); /* Set PLAYBACK state and start playing 1st file */ AudioState = AUDIO_STATE_IDLE; AudioDemo.state = AUDIO_DEMO_IN; AUDIO_ChangeSelectMode(AUDIO_PLAYBACK_CONTROL); break; default: break; } } } break; case AUDIO_DEMO_EXPLORE: if(AppliState == APPLICATION_READY) { if(AUDIO_ShowWavFiles() > 0) { LCD_ErrLog("There is no WAV file on the USB Key.\n"); AUDIO_ChangeSelectMode(AUDIO_SELECT_MENU); AudioDemo.state = AUDIO_DEMO_IDLE; } else { AudioDemo.state = AUDIO_DEMO_WAIT; } } else { AudioDemo.state = AUDIO_DEMO_WAIT; } break; case AUDIO_DEMO_PLAYBACK: if(AppliState == APPLICATION_READY) { if(AudioState == AUDIO_STATE_IDLE) { /* Start Playing */ AudioState = AUDIO_STATE_INIT; if(AUDIO_Start(0) == AUDIO_ERROR_IO) { AUDIO_ChangeSelectMode(AUDIO_SELECT_MENU); AudioDemo.state = AUDIO_DEMO_IDLE; } else { BSP_LCD_SetTextColor(LCD_COLOR_YELLOW); BSP_LCD_DisplayStringAtLine(10, (uint8_t *)"[ UP ] : Volume +"); BSP_LCD_DisplayStringAtLine(11, (uint8_t *)"[ DOWN ] : Volume -"); BSP_LCD_DisplayStringAtLine(12, (uint8_t *)"[ LEFT ] : Previous"); BSP_LCD_DisplayStringAtLine(13, (uint8_t *)"[ RIGHT ] : Next"); BSP_LCD_DisplayStringAtLine(14, (uint8_t *)"[ SEL ] : Pause/Resume"); BSP_LCD_SetTextColor(LCD_COLOR_WHITE); } } else /* Not idle */ { if(AUDIO_Process() == AUDIO_ERROR_IO) { AUDIO_ChangeSelectMode(AUDIO_SELECT_MENU); AudioDemo.state = AUDIO_DEMO_IDLE; } } } else { AudioDemo.state = AUDIO_DEMO_WAIT; } break; case AUDIO_DEMO_IN: if(AppliState == APPLICATION_READY) { if(AudioState == AUDIO_STATE_IDLE) { /* Start Playing */ AudioState = AUDIO_STATE_INIT; /* Configure the audio recorder: sampling frequency, bits-depth, number of channels */ if(AUDIO_REC_Start() == AUDIO_ERROR_IO) { AUDIO_ChangeSelectMode(AUDIO_SELECT_MENU); AudioDemo.state = AUDIO_DEMO_IDLE; } else { BSP_LCD_SetTextColor(LCD_COLOR_YELLOW); BSP_LCD_DisplayStringAtLine(11, (uint8_t *)"[ UP ] : Volume +"); BSP_LCD_DisplayStringAtLine(12, (uint8_t *)"[ DOWN ] : Volume -"); BSP_LCD_DisplayStringAtLine(13, (uint8_t *)"[ SEL ] : Pause/Resume"); BSP_LCD_SetTextColor(LCD_COLOR_WHITE); } } else /* Not idle */ { if(AUDIO_REC_Process() == AUDIO_ERROR_IO) { AUDIO_ChangeSelectMode(AUDIO_SELECT_MENU); AudioDemo.state = AUDIO_DEMO_IDLE; } } } else { AudioDemo.state = AUDIO_DEMO_WAIT; } break; default: break; } } if(AppliState == APPLICATION_DISCONNECT) { AppliState = APPLICATION_IDLE; AUDIO_ChangeSelectMode(AUDIO_SELECT_MENU); BSP_AUDIO_OUT_Stop(CODEC_PDWN_SW); } AudioDemo.select &= 0x7F; }