/*
 * lock.h
 *
 *  Created on: Jul 31, 2024
 *      Author: colorbass
 */

#ifndef INC_LOCK_H_
#define INC_LOCK_H_

#include "main.h"
#include "stdbool.h"


void GBT_Lock(uint8_t state);
void GBT_ManageLockSolenoid();
void GBT_ManageLockMotor();
uint8_t GBT_LockGetState();
void GBT_ForceLock(uint8_t state);
void GBT_ResetErrorTimeout();

typedef struct {
//    uint8_t state;
    uint8_t demand;
    uint8_t error;
    uint8_t action_requested;  // 0 = unlock, 1 = lock, 255 = no action
    uint8_t motor_state;        // 0 = idle, 1 = motor_on, 2 = waiting_off
    uint32_t last_action_time;  // время последнего изменения состояния мотора
    uint8_t retry_count;        // счетчик попыток
    uint32_t error_tick;        // время установки ошибки (для таймаута сброса)
} GBT_LockState_t;

extern GBT_LockState_t GBT_LockState;

#endif /* INC_LOCK_H_ */
