summaryrefslogtreecommitdiff
path: root/project/Core
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2025-11-05 00:42:51 -0500
committersowgro <tpoke.ferrari@gmail.com>2025-11-05 00:42:51 -0500
commitfc84eed99d54618377ec7b4c5bbd8f803814980c (patch)
tree0f0849c6a0e3a8a2e25543d511acf47dcd8ae2c1 /project/Core
parentd5dac33672ae1e940b3fda4ee4f4e940229d996f (diff)
download340-repo-Sowgro-fc84eed99d54618377ec7b4c5bbd8f803814980c.tar.gz
340-repo-Sowgro-fc84eed99d54618377ec7b4c5bbd8f803814980c.tar.bz2
340-repo-Sowgro-fc84eed99d54618377ec7b4c5bbd8f803814980c.zip
Get mode and all og functions besides pause working
Diffstat (limited to '')
-rw-r--r--project/Core/Inc/Project/local_control.h4
-rw-r--r--project/Core/Inc/Project/project.h6
-rw-r--r--project/Core/Inc/Project/remote_control.h4
-rw-r--r--project/Core/Src/Activties/activity10.c18
-rw-r--r--project/Core/Src/Project/local_control.c11
-rw-r--r--project/Core/Src/Project/project.c26
-rw-r--r--project/Core/Src/Project/remote_control.c14
7 files changed, 48 insertions, 35 deletions
diff --git a/project/Core/Inc/Project/local_control.h b/project/Core/Inc/Project/local_control.h
index b691cde..a28271b 100644
--- a/project/Core/Inc/Project/local_control.h
+++ b/project/Core/Inc/Project/local_control.h
@@ -8,10 +8,8 @@
#ifndef INC_PROJECT_LOCAL_CONTROL_H_
#define INC_PROJECT_LOCAL_CONTROL_H_
-void local_control_start();
+void local_control_init();
void local_control_loop();
-void local_control_stop();
-
#endif /* INC_PROJECT_LOCAL_CONTROL_H_ */
diff --git a/project/Core/Inc/Project/project.h b/project/Core/Inc/Project/project.h
index 1d07abd..ed41f78 100644
--- a/project/Core/Inc/Project/project.h
+++ b/project/Core/Inc/Project/project.h
@@ -8,7 +8,13 @@
#ifndef INC_PROJECT_H_
#define INC_PROJECT_H_
+#define REMOTE_MODE (0)
+#define LOCAL_MODE (1)
+
void project_run();
+
uint8_t *project_get_state();
+uint8_t project_get_mode();
+
#endif /* INC_PROJECT_H_ */
diff --git a/project/Core/Inc/Project/remote_control.h b/project/Core/Inc/Project/remote_control.h
index 469e4ab..d3bd926 100644
--- a/project/Core/Inc/Project/remote_control.h
+++ b/project/Core/Inc/Project/remote_control.h
@@ -8,10 +8,8 @@
#ifndef INC_PROJECT_REMOTE_CONTROL_H_
#define INC_PROJECT_REMOTE_CONTROL_H_
-void remote_control_start();
+void remote_control_init();
void remote_control_loop();
-void remote_control_stop();
-
#endif /* INC_PROJECT_REMOTE_CONTROL_H_ */
diff --git a/project/Core/Src/Activties/activity10.c b/project/Core/Src/Activties/activity10.c
index 78261ff..792ada5 100644
--- a/project/Core/Src/Activties/activity10.c
+++ b/project/Core/Src/Activties/activity10.c
@@ -16,12 +16,12 @@ void activity10_run() {
init_systick();
}
-void SysTick_Handler() {
- static int i = 0;
- i++;
-
- if (!(i & 1023)) {
- printf("%d\r\n", i>>10);
- }
-
-}
+//void SysTick_Handler() {
+// static int i = 0;
+// i++;
+//
+// if (!(i & 1023)) {
+// printf("%d\r\n", i>>10);
+// }
+//
+//}
diff --git a/project/Core/Src/Project/local_control.c b/project/Core/Src/Project/local_control.c
index 1ddcd2a..6b6f5e4 100644
--- a/project/Core/Src/Project/local_control.c
+++ b/project/Core/Src/Project/local_control.c
@@ -8,8 +8,9 @@
#include <stm32l4xx.h>
#include <stdio.h>
#include "GPIO.h"
+#include "project.h"
-void local_control_start() {
+void local_control_init() {
GPIO_Init();
NVIC_EnableIRQ(EXTI9_5_IRQn);
}
@@ -18,16 +19,14 @@ void local_control_loop() {
}
-void local_control_stop() {
- NVIC_DisableIRQ(EXTI15_10_IRQn);
-}
-
void EXTI9_5_IRQHandler() {
if (~EXTI->PR1 & EXTI_PR1_PIF9)
return;
-
EXTI->PR1 |= EXTI_PR1_PIF9;
+ if (project_get_mode() != LOCAL_MODE)
+ return;
+
int status = !(GPIOC->IDR & GPIO_PIN_9);
printf("Other %i\r\n", status);
}
diff --git a/project/Core/Src/Project/project.c b/project/Core/Src/Project/project.c
index be329fa..7188207 100644
--- a/project/Core/Src/Project/project.c
+++ b/project/Core/Src/Project/project.c
@@ -15,20 +15,22 @@
#include "local_control.h"
#include "remote_control.h"
#include "GPIO.h"
-
-#define LOCAL_MODE (1)
-#define REMOTE_MODE (2)
+#include "project.h"
static uint8_t state = STOPPED_STATE;
uint8_t *project_get_state() {
return &state;
}
+static uint8_t mode = REMOTE_MODE;
+
+uint8_t project_get_mode() {
+ return mode;
+}
void project_run() {
- int mode = LOCAL_MODE;
- local_control_start();
-// remote_control_start();
+ local_control_init();
+ remote_control_init();
GPIO_Init();
NVIC_EnableIRQ(EXTI15_10_IRQn);
@@ -41,8 +43,9 @@ void project_run() {
local_control_loop(); break;
}
- if (state == PAUSED_STATE)
+ if (state == PAUSED_STATE) {
pause_loop();
+ }
}
}
@@ -52,8 +55,13 @@ void EXTI15_10_IRQHandler() {
EXTI->PR1 |= EXTI_PR1_PIF13;
- int status = !(GPIOC->IDR & GPIO_PIN_13);
- printf("%i\r\n", status);
+ mode = !mode;
+ switch (mode) {
+ case REMOTE_MODE:
+ puts("\r\n***REMOTE MODE ACTIVE***\r\n"); break;
+ case LOCAL_MODE:
+ puts("\r\n***MANUAL OVERRIDE MODE ACTIVE***\r\n"); break;
+ }
}
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;
}