/* * remote_control.c * * Created on: Nov 4, 2025 * Author: sowgro */ #include #include #include #include "player_actions.h" #include "UART.h" #include "project.h" static char buffer[80]; static char* cur = buffer; void remote_control_start() { NVIC_EnableIRQ (USART2_IRQn); USART2->CR1 |= USART_CR1_RXNEIE; // 1 << 5 help(); } void remote_control_loop() { } void remote_control_stop() { } static void parse_input(char buffer[]) { uint8_t *state = project_get_state(); if (!strcmp(buffer, "HELP")) { help(); } else if (!strcmp(buffer, "NEXT")) { next(); } else if (!strcmp(buffer, "PLAY")) { play(); *state = PLAYING_STATE; } else if (!strcmp(buffer, "PAUSE")) { pause(); *state = PAUSED_STATE; } else if (!strcmp(buffer, "STOP")) { stop(); *state = STOPPED_STATE; } else { printf("Unknown command \"%s\"\n\r", buffer); } } #include "systick.h" void USART2_IRQHandler() { int ch = USART_Read(USART2); putchar(ch); if (!ch) return; if (ch == '\r') { *cur = 0; parse_input(buffer); cur = buffer; return; } if (ch == 0x08 || ch == 0x7F) { if (cur <= buffer) return; cur--; printf("\b \b"); return; } *cur++ = ch; }