/* * UserInput.c * * Created on: Jun 3, 2021 * Author: zemon */ #include "UserInput.h" #include #include void UserInput_Init( tUserInput *env, tUserInputPins *pins ) { UserInputButtonWatcher_InitStatic(&env->watcher, env->mem.watches, 128); UserInputButtonWatcher_Add(&env->watcher, pins->emergency, UI_BUTTON_EMERGENCY); UserInputButtonWatcher_Add(&env->watcher, pins->additional, UI_BUTTON_ADDITIONAL); env->buttonsInterface = UserInputButtonWatcher_GetInterface(&env->watcher); InitThreadAtrStatic(&env->thread.attr, "UserInput", env->thread.controlBlock, env->thread.stack, osPriorityNormal); env->thread.id = 0; } static _Noreturn void UserInput_Thread(tUserInput *env) { for (;;) { UserInputButtonWatcher_Check(&env->watcher); SystemDelayMs(5); } } void UserInput_StartThread(tUserInput *env) { if (!env->thread.id) { env->thread.id = osThreadNew((osThreadFunc_t) (UserInput_Thread), (void *) (env), &env->thread.attr); } else { osThreadResume(env->thread.id); } } void UserInput_Suspend(tUserInput *env) { if (env->thread.id) { osThreadSuspend(env->thread.id); } }