20230201_1811_emb/1811Project_LPc/Src/Usr/Task/Task-DianZiCang/HeartTask.c
Rjh913828050 78f3903d1d 类型:重构
内容:1811项目下位机软件第一版完整程序
人员:任家豪
2023-10-08 13:56:23 +08:00

64 lines
1.7 KiB
C

#include "HeartTask.h"
#include "WatchdogTask.h"
#include "FileSysTask.h"
#include "TimerTask.h"
#include "UpcCommTask.h"
#include <stdio.h>
#include <string.h>
#include <cpu.h>
#include <os.h>
static int gTaskHeartWatchDogId = -1; // 心跳包看门狗事件ID
static int gTaskHeartTimerEventId = -1; // 心跳包定时事件ID
static int gTaskHeartEnableSend = 1; // 默认上电发送心跳包
static unsigned short gTaskHeartSendSerial = 0;
static void TaskHeartEnableSend(void);
static void TaskHeartDisableSend(void);
/* 心跳包初始化 */
void TaskHeartInit(void)
{
/* 注册看门狗事件 */
gTaskHeartWatchDogId = TaskWatchdogRegEvent("TaskHeart");
gTaskHeartTimerEventId = TaskTimerRegEventId();
}
/* 心跳包任务 */
void TaskHeart(void *arg)
{
int i = 0;
unsigned int RealWbyte;
/* 将时钟同步任务开启写入日志 */
TaskFileLogWrite("TaskHeart: Join in!!\n", strlen("TaskHeart: Join in!!\n"), &RealWbyte);
TaskTimerStartEvent(&gTaskHeartTimerEventId, 10, 0xffffffff, TaskHeartEnableSend);
while (1) {
TaskWatchdogFreed(gTaskHeartWatchDogId);
OSTimeDly(50);
if (gTaskHeartEnableSend == 1) {
/* 发送函数 */
i = TaskUpcCommSendMessage(TASK_HEART_MESSGAE_ID, &gTaskHeartSendSerial, NULL, 0);
if (i == 0) { // 发送失败的处理
OSTimeDly (1000);
TaskWatchdogFreed(gTaskHeartWatchDogId);
continue;
}
TaskHeartDisableSend();
gTaskHeartSendSerial++;
}
}
}
static void TaskHeartDisableSend(void)
{
gTaskHeartEnableSend = 0;
}
static void TaskHeartEnableSend(void)
{
gTaskHeartEnableSend = 1;
}