69 lines
1.8 KiB
C
69 lines
1.8 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;
|
||
|
|
int ret = 0;
|
||
|
|
/* 将时钟同步任务开启写入日志 */
|
||
|
|
do {
|
||
|
|
ret = TaskFileLogWrite("TaskHeart: Join in!!\n", strlen("TaskHeart: Join in!!\n"), &RealWbyte);
|
||
|
|
TaskWatchdogFreed(gTaskHeartWatchDogId);
|
||
|
|
OSTimeDly(1);
|
||
|
|
} while (ret > 0);
|
||
|
|
TaskTimerStartEvent(&gTaskHeartTimerEventId, 10, 0xffffffff, TaskHeartEnableSend);
|
||
|
|
while (1) {
|
||
|
|
if (gTaskHeartEnableSend == 1) {
|
||
|
|
/* 发送函数 */
|
||
|
|
i = TaskUpcCommSendMessage(TASK_HEART_MESSGAE_ID, &gTaskHeartSendSerial, NULL, 0);
|
||
|
|
if (i == 0) { // 发送失败的处理
|
||
|
|
OSTimeDly (1000);
|
||
|
|
TaskWatchdogFreed(gTaskHeartWatchDogId);
|
||
|
|
continue;
|
||
|
|
}
|
||
|
|
TaskHeartDisableSend();
|
||
|
|
gTaskHeartSendSerial++;
|
||
|
|
}
|
||
|
|
TaskWatchdogFreed(gTaskHeartWatchDogId);
|
||
|
|
OSTimeDly(50);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
static void TaskHeartDisableSend(void)
|
||
|
|
{
|
||
|
|
gTaskHeartEnableSend = 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
static void TaskHeartEnableSend(void)
|
||
|
|
{
|
||
|
|
gTaskHeartEnableSend = 1;
|
||
|
|
}
|