#include "HeartTask.h" #include "WatchdogTask.h" #include "FileSysTask.h" #include "TimerTask.h" #include "UpcCommTask.h" #include #include #include #include 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; }