/** * @brief Joystick audio menu * @param None * @retval None */ void Joystick_AudioMenu(void) { static JOYState_TypeDef JoyState = JOY_NONE; /* Get the Joystick State */ JoyState = BSP_JOY_GetState(); if(AudioSelectMode == AUDIO_SELECT_MENU) { AUDIO_MenuProbeKey(JoyState); switch(JoyState) { case JOY_LEFT: LCD_LOG_ScrollBack(); break; case JOY_RIGHT: LCD_LOG_ScrollForward(); break; default: break; } } else if(AudioSelectMode == AUDIO_PLAYBACK_CONTROL) { AUDIO_PlaybackProbeKey(JoyState); } }
/** * @brief Probes the Audio joystick state. * @param state: Joystick state * @retval None */ void AUDIO_MenuProbeKey(JOYState_TypeDef state) { /* Handle Joystick inputs */ if(audio_select_mode == AUDIO_SELECT_MENU) { /* Handle Menu inputs */ if((state == JOY_UP) && (audio_demo.select > 0)) { audio_demo.select--; } else if((audio_demo.select < 2) && (state == JOY_DOWN)) { audio_demo.select++; } else if(state == JOY_SEL) { audio_demo.select |= 0x80; } } else { AUDIO_PlaybackProbeKey(state); } }
/** * @brief EXTI line detection callbacks. * @param GPIO_Pin: Specifies the pins connected EXTI line * @retval None */ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { static JOYState_TypeDef JoyState = JOY_NONE; static uint32_t debounce_time = 0; if(GPIO_Pin == GPIO_PIN_8) { /* Get the Joystick State */ JoyState = BSP_JOY_GetState(); HAL_Delay(200); /* Clear joystick interrupt pending bits */ BSP_IO_ITClear(); if(Appli_state == APPLICATION_MSC) { MSC_DEMO_ProbeKey(JoyState); } else if(Appli_state == APPLICATION_HID) { HID_DEMO_ProbeKey(JoyState); } else if(Appli_state == APPLICATION_AUDIO) { if(audio_select_mode == AUDIO_SELECT_MENU) { AUDIO_MenuProbeKey(JoyState); } else if(audio_select_mode == AUDIO_PLAYBACK_CONTROL) { AUDIO_PlaybackProbeKey(JoyState); } } switch(JoyState) { case JOY_LEFT: LCD_LOG_ScrollBack(); break; case JOY_RIGHT: LCD_LOG_ScrollForward(); break; default: break; } } if(audio_demo.state == AUDIO_DEMO_PLAYBACK) { if(GPIO_Pin == KEY_BUTTON_PIN) { /* Prevent debounce effect for user key */ if((HAL_GetTick() - debounce_time) > 50) { debounce_time = HAL_GetTick(); } else { return; } /* Change the selection type */ if(audio_select_mode == AUDIO_SELECT_MENU) { Audio_ChangeSelectMode(AUDIO_PLAYBACK_CONTROL); } else if(audio_select_mode == AUDIO_PLAYBACK_CONTROL) { Audio_ChangeSelectMode(AUDIO_SELECT_MENU); } } } }
/** * @brief EXTI line detection callbacks. * @param GPIO_Pin: Specifies the pins connected EXTI line * @retval None */ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { static JOYState_TypeDef JoyState = JOY_NONE; static uint32_t debounce_time = 0; if(GPIO_Pin == GPIO_PIN_2) { /* Get the Joystick State */ JoyState = BSP_JOY_GetState(); /* Clear joystick interrupt pending bits */ BSP_IO_ITClear(JOY_ALL_PINS); if(mtp_select_mode == MTP_SELECT_MENU) { MTP_MenuProbeKey(JoyState); switch(JoyState) { case JOY_LEFT: LCD_LOG_ScrollBack(); break; case JOY_RIGHT: LCD_LOG_ScrollForward(); break; default: break; } } else if(mtp_select_mode == MTP_PLAYBACK_CONTROL) { AUDIO_PlaybackProbeKey(JoyState); } } if(mtp_demo.state == MTP_DEMO_PLAYBACK) { if(GPIO_Pin == KEY_BUTTON_PIN) { /* Prevent debounce effect for user key */ if((HAL_GetTick() - debounce_time) > 50) { debounce_time = HAL_GetTick(); } else { return; } /* Change the selection type */ if(mtp_select_mode == MTP_SELECT_MENU) { MTP_ChangeSelectMode(MTP_PLAYBACK_CONTROL); } else if(mtp_select_mode == MTP_PLAYBACK_CONTROL) { AUDIO_Stop(); } } } }