|
@@ -1,17 +1,21 @@
|
|
|
#include "stm32g4xx_hal.h"
|
|
|
#include "cmsis_os.h"
|
|
|
#include "menu_tree.h"
|
|
|
+#include "control.h"
|
|
|
#include <stdio.h>
|
|
|
|
|
|
+#define DBG if(0)
|
|
|
+
|
|
|
#define MON_DELAY 1000
|
|
|
|
|
|
+osMessageQId menu_event;
|
|
|
osThreadId menu_update_handle;
|
|
|
osThreadId menu_control_handle;
|
|
|
|
|
|
menuItem* selectedMenuItem;
|
|
|
bool update_flag = false;
|
|
|
|
|
|
-//static void vMenuEvent(void const *params);
|
|
|
+static void vControl(void const *params);
|
|
|
static void vUpdate(void const *params);
|
|
|
|
|
|
|
|
@@ -28,8 +32,12 @@ void menu_init(void)
|
|
|
v_task_event_handle = osThreadCreate(osThread(M_Event_Thread), NULL);
|
|
|
#endif
|
|
|
|
|
|
+ osMessageQDef(vButEventQueue, 1, uint8_t);
|
|
|
+ menu_event = osMessageCreate(osMessageQ(vButEventQueue), NULL);
|
|
|
+
|
|
|
+ // События. Сигналы энкодера
|
|
|
osThreadDef(control_thr, vControl, osPriorityNormal, 0, 6*configMINIMAL_STACK_SIZE);
|
|
|
- menu_update_handle = osThreadCreate(osThread(control_thr), NULL);
|
|
|
+ menu_control_handle = osThreadCreate(osThread(control_thr), NULL);
|
|
|
|
|
|
// Обновление меню
|
|
|
osThreadDef(menu_up_thr, vUpdate, osPriorityNormal, 0, 6*configMINIMAL_STACK_SIZE);
|
|
@@ -47,6 +55,41 @@ void menu_init(void)
|
|
|
#endif
|
|
|
}
|
|
|
|
|
|
+//
|
|
|
+void menu_send_event(control_t but)
|
|
|
+{
|
|
|
+ osMessagePut(menu_event, but, 0);
|
|
|
+}
|
|
|
+
|
|
|
+//
|
|
|
+static void vControl(void const *params)
|
|
|
+{
|
|
|
+ osEvent event;
|
|
|
+
|
|
|
+ for (;;)
|
|
|
+ {
|
|
|
+ event = osMessageGet(menu_event, 100);
|
|
|
+ if (event.status != osEventMessage)
|
|
|
+ continue;
|
|
|
+
|
|
|
+ switch (event.value.v)
|
|
|
+ {
|
|
|
+ case CONTROL_FWD :
|
|
|
+ printf("Encoder forward\r\n");
|
|
|
+ break;
|
|
|
+
|
|
|
+ case CONTROL_BACK :
|
|
|
+ printf("Encoder back\r\n");
|
|
|
+ break;
|
|
|
+
|
|
|
+ case CONTROL_PUSH :
|
|
|
+ printf("Encoder push");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
//
|
|
|
static void vUpdate(void const *params)
|
|
|
{
|