commit 6a860ee100c3ddc1858abebd4631c10316c57150 Author: cfif Date: Fri Jan 24 13:22:33 2025 +0300 Перенос на новую организацию GONEC diff --git a/Inc/TaskMsd.h b/Inc/TaskMsd.h new file mode 100644 index 0000000..a29df75 --- /dev/null +++ b/Inc/TaskMsd.h @@ -0,0 +1,42 @@ +// +// Created by cfif on 04.10.2022. +// + +#ifndef TTASKMSD_H +#define TTASKMSD_H + +#include +#include "Gnss.h" +#include "EraGlonassMsd.h" +#include "ModemMain.h" +#include "ModemGnss.h" +#include "Gpios.h" + +typedef struct { + + tGnss *gnss; + tRtcIO *rtcIo; + tModemMain *modemMain; + tGpios *gpios; + + struct { + osThreadId_t id; + uint32_t stack[2048]; + StaticTask_t controlBlock; + osThreadAttr_t attr; + } thread; + +} tTaskMsd; + +void TaskMsd_Init( + tTaskMsd *env, + tGnss *gnss, + tRtcIO *rtcIo, + tModemMain *modemMain, + tGpios *gpios +); + +void TaskMsd_StartThread(tTaskMsd *env); + + +#endif //TTASKMSD_H diff --git a/Src/TaskMsd.c b/Src/TaskMsd.c new file mode 100644 index 0000000..f160e68 --- /dev/null +++ b/Src/TaskMsd.c @@ -0,0 +1,59 @@ +// +// Created by cfif on 04.10.2022. +// + +#include +#include +#include +#include +#include "fs_interface.h" + + +void TaskMsd_Init( + tTaskMsd *env, + tGnss *gnss, + tRtcIO *rtcIo, + tModemMain *modemMain, + tGpios *gpios +) { + + env->gnss = gnss; + env->rtcIo = rtcIo; + env->modemMain = modemMain; + env->gpios = gpios; + + //Инициализируем поток + InitThreadAtrStatic(&env->thread.attr, "TaskMsd", env->thread.controlBlock, env->thread.stack, osPriorityNormal); + env->thread.id = 0; +} + +static _Noreturn void TaskMsd_Thread(tTaskMsd *env) { + + bool isFlagStuckSos = false; + + for (;;) { + + bool isButtonSosPress = GpioPinGet(&env->gpios->Power.discretIn1_pg2); + + // Нажата кнопка SOS + if (isButtonSosPress) { + isFlagStuckSos = true; + } else { + if (isFlagStuckSos) { + isFlagStuckSos = false; + sendMsd(env->modemMain); + } + } + + SystemDelayMs(200); + + } +} + +void TaskMsd_StartThread(tTaskMsd *env) { + if (!env->thread.id) { + env->thread.id = osThreadNew((osThreadFunc_t) (TaskMsd_Thread), (void *) (env), &env->thread.attr); + } else { + osThreadResume(env->thread.id); + } +} diff --git a/modular.json b/modular.json new file mode 100644 index 0000000..2774ab2 --- /dev/null +++ b/modular.json @@ -0,0 +1,18 @@ +{ + "dep": [ + { + "type": "git", + "provider": "GONEC", + "repo": "SystemDelayInterface" + } + ], + + "cmake": { + "inc_dirs": [ + "Inc" + ], + "srcs": [ + "Src/**.c" + ] + } +} \ No newline at end of file