summaryrefslogtreecommitdiff
path: root/project/Core/Src/Project/remote_control.c
diff options
context:
space:
mode:
Diffstat (limited to 'project/Core/Src/Project/remote_control.c')
-rw-r--r--project/Core/Src/Project/remote_control.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/project/Core/Src/Project/remote_control.c b/project/Core/Src/Project/remote_control.c
index dd48cb7..2153a4a 100644
--- a/project/Core/Src/Project/remote_control.c
+++ b/project/Core/Src/Project/remote_control.c
@@ -15,7 +15,7 @@
static char buffer[80];
static char* cur = buffer;
-void remote_control_start() {
+void remote_control_init() {
NVIC_EnableIRQ (USART2_IRQn);
USART2->CR1 |= USART_CR1_RXNEIE; // 1 << 5
@@ -26,10 +26,6 @@ void remote_control_loop() {
}
-void remote_control_stop() {
-
-}
-
static void parse_input(char buffer[]) {
uint8_t *state = project_get_state();
if (!strcmp(buffer, "HELP")) {
@@ -58,15 +54,22 @@ static void parse_input(char buffer[]) {
#include "systick.h"
void USART2_IRQHandler() {
int ch = USART_Read(USART2);
+
+ if (project_get_mode() != REMOTE_MODE)
+ return;
+
putchar(ch);
if (!ch)
return;
+
if (ch == '\r') {
+ putchar('\n');
*cur = 0;
parse_input(buffer);
cur = buffer;
return;
}
+
if (ch == 0x08 || ch == 0x7F) {
if (cur <= buffer)
return;
@@ -74,6 +77,7 @@ void USART2_IRQHandler() {
printf("\b \b");
return;
}
+
*cur++ = ch;
}