/*
 * task.h
 *
 *  Created on: 2024年6月24日
 *      Author: psx
 */

#ifndef APP_INC_TASK_H_
#define APP_INC_TASK_H_


#include "timeSliceOffset.h"
#include "uart_dev.h"
#include "math.h"

void Init();

/* 控制运行指示灯和喂狗  */
#define WdiRunled_reloadVal 1000            /* 任务执行间隔  */
#define WdiRunled_offset 100                /* 任务执行偏移量  */
#define wdi_RESET (60 * 60 * 24)            /* 一天复位一次  */
extern STR_TimeSliceOffset m_WdiRunled;
extern void Task_WdiRunled(void);

/* 刷新寄存器中的数据  */
#define refreshRegister_reloadVal 1000            /* 任务执行间隔  */
#define refreshRegister_offset 0                  /* 任务执行偏移量  */
extern STR_TimeSliceOffset m_refreshRegister;
extern void Task_refreshRegister(void);

/* 回路阻抗检测  */
#define impedanceCalculation_reloadVal 100              /* 任务执行间隔  */
#define impedanceCalculation_offset 0                   /* 任务执行偏移量  */
extern STR_TimeSliceOffset g_impedanceCalculation;
extern void Task_impedanceCalculation(void);

/* 短路保护  */
#define outputAgain_reloadVal 1000              /* 任务执行间隔  */
#define outputAgain_offset 0                    /* 任务执行偏移量  */
extern STR_TimeSliceOffset g_outputAgain;
extern void Task_outputAgain(void);

/* 过载保护  */
#define excessiveLoad_reloadVal 1000             /* 任务执行间隔  */
#define excessiveLoad_offset 0                   /* 任务执行偏移量  */
extern STR_TimeSliceOffset g_excessiveLoad;
extern void Task_excessiveLoad(void);

/* 软启动  */
#define softStart_reloadVal 10          /* 任务执行间隔  */
#define softStart_offset 0              /* 任务执行偏移量  */
extern STR_TimeSliceOffset m_softStart;
extern void Task_softStart(void);

/* 启动任务   */
#define startMpptControl_reloadVal 1000         /* 任务执行间隔  */
#define startMpptControl_offset 200             /* 任务执行偏移量  */
extern STR_TimeSliceOffset g_startMpptControl;
extern void Task_startMpptControl(void);

/* 根据寄存器数据完成一些判断 */
#define dataJudgment_reloadVal 1000         /* 任务执行间隔  */
#define dataJudgment_offset 500             /* 任务执行偏移量  */
extern STR_TimeSliceOffset g_dataJudgment;
extern void Task_dataJudgment(void);

/* 串口数据解析和处理 */
#define usartJudge_reloadVal 100             /* 任务执行间隔  */
#define usartJudge_offset 0                  /* 任务执行偏移量  */
extern STR_TimeSliceOffset m_usartJudge;
extern void Task_usartJudge(void);
#define usartHandle_reloadVal 20                /* 任务执行间隔  */
#define usartHandle_offset 0                    /* 任务执行偏移量  */
extern STR_TimeSliceOffset m_usartHandle;
extern void Task_usartHandle(void);
typedef void (*uartJudgeHandle)(device_handle device);
extern uartJudgeHandle uart_judge_handle;

/* 广播回应 */
#define recvbroadcast_reloadVal 3000            /* 任务执行间隔  */
#define recvbroadcast_offset 0                  /* 任务执行偏移量  */
extern uint8_t recvbroadcast_flag;              /* 是否需要再次发送标志 */
extern device_handle  g_recvBroadcastDevice;    /* 串口句柄 */
extern STR_TimeSliceOffset g_recvbroadcast;
extern void Task_recvbroadcast(void);

/* 再次注册延时 */
#define sensorEnableBroadcast_reloadVal 1000           /* 任务执行间隔  */
#define sensorEnableBroadcast_offset 0               /* 任务执行偏移量  */
extern STR_TimeSliceOffset g_sensorEnableBroadcast;
extern void Task_sensorEnableBroadcast(void);

/* 配置文件读取 */
#define uartConfigFile_reloadVal 200            /* 任务执行间隔  */
#define uartConfigFile_offset 0               /* 任务执行偏移量  */
extern STR_TimeSliceOffset m_uartConfigFile;
extern void Task_uartConfigFile(void);

///* 过载延时 */
//#define overloadDelay_reloadVal 10           /* 任务执行间隔  */
//#define overloadDelay_offset 0               /* 任务执行偏移量  */
//extern STR_TimeSliceOffset g_overloadDelay;
//extern void Task_overloadDelay(void);

/* 开路电压采集 */
#define collectOpenCircuitVoltage_reloadVal 1000         /* 任务执行间隔  */
#define collectOpenCircuitVoltage_offset 0               /* 任务执行偏移量  */
extern STR_TimeSliceOffset g_collectOpenCircuitVoltage;
extern uint8_t g_collectOpenCircuitVoltageFlag;
extern void Task_collectOpenCircuitVoltage(void);


/* HY进入配置模式延迟后退出 */
#define configurationModeDelayedExit_reloadVal 1000         /* 任务执行间隔  */
#define configurationModeDelayedExit_offset 0               /* 任务执行偏移量  */
extern STR_TimeSliceOffset g_configurationModeDelayedExit;
extern void Task_configurationModeDelayedExit(void);


#endif /* APP_INC_TASK_H_ */
