/* * player_actions.c * Code related to the player states and actions * * Created on: Oct 17, 2025 * Author: sowgro */ #include #include #include "player_actions.h" #include "song_info.h" #include "song.h" #include "LED.h" #include "systick.h" static uint8_t state = STOPPED_STATE; /** * Returns the current player state to other files */ uint8_t player_get_state() { return state; } /** * Sets the current player state from other files */ void player_set_state(uint8_t newState) { state = newState; } /** * Prints the help message */ void player_help() { printf("\r***REMOTE LED CONTROL MENU***\r\n"); printf("Available User Commands:\r\n"); printf("NEXT - Show next song info\r\n"); printf("PLAY - Play the song (LED on)\r\n"); printf("PAUSE - Pause the song (LED flash)\r\n"); printf("STOP - Stop the song (LED off)\r\n"); } /** * Advances the player to the next song. */ void player_next() { static int current_song = -1; current_song++; if (current_song > 4) current_song = 0; void *song = get_song(current_song).p_song; song_info_t song_info = get_song_info(song); printf("Song #%i\r\n", current_song + 1); if (song_info.title) printf("Title: %s\r\n", song_info.title); if (song_info.copyright) printf("Copyright: %s\r\n", song_info.copyright); if (song_info.tempo) printf("Tempo: %i\r\n", song_info.tempo); } /** * Switches to the play state */ void player_play() { state = PLAYING_STATE; LED_On(); } /** * Switches to the pause state */ void player_pause() { state = PAUSED_STATE; init_systick(); } /** * Switches to the stop state */ void player_stop() { state = STOPPED_STATE; LED_Off(); } /** * Toggles the LED every second if in pause mode */ void SysTick_Handler2(int count) { if (state != PAUSED_STATE) return; if(!(count & 1023)) { LED_Toggle(); } }