53 lines
1.1 KiB
C
53 lines
1.1 KiB
C
//
|
|
// Created by villuton on 01.09.2025.
|
|
//
|
|
|
|
#ifndef CHARGER_INDICATION_H
|
|
#define CHARGER_INDICATION_H
|
|
|
|
#include "ChargerConfig.h"
|
|
#include "Gpios.h"
|
|
#include "cmsis_os2.h"
|
|
#include "FreeRTOS.h"
|
|
|
|
///Перечисление режимов индикации
|
|
typedef enum {
|
|
MOD_CH_STARTUP = 0,
|
|
MOD_CH_ERROR,
|
|
MOD_CH_OK,
|
|
MOD_CH_CHARGE,
|
|
} eIndicationMod;
|
|
|
|
typedef struct {
|
|
uint32_t timer;
|
|
uint32_t timeOn;
|
|
uint32_t timeOff;
|
|
bool pinFlag;
|
|
bool isPermanent;
|
|
} tMod;
|
|
|
|
typedef struct {
|
|
tMod mod[INDICATION_MOD_NUM];
|
|
uint32_t iterationMs;
|
|
tLedPins *ledPins;
|
|
uint8_t chanel[INDICATION_CHANEL_NUM];
|
|
|
|
struct {
|
|
osThreadId_t id;
|
|
uint32_t stack[128];
|
|
StaticTask_t controlBlock;
|
|
osThreadAttr_t attr;
|
|
} thread;
|
|
} tIndication;
|
|
|
|
|
|
void Indication_Init(tIndication *env,
|
|
tLedPins *ledPins);
|
|
|
|
void Indication_StartThread(tIndication *env);
|
|
|
|
void Indication_ChanelSetMode(tIndication *env,
|
|
eIndicationMod indicationMod,
|
|
eChargerChannels channel);
|
|
#endif //CHARGER_INDICATION_H
|