HeartBeat.c 1.7 KB
#include <stdio.h>
#include <pthread.h>

#include "JZsdkLib.h"
#include "JZsdk_Hal.h"
#include "Hal_Send/HalSend_type1/HalSend_type1.h"

T_JZsdkReturnCode HeartBeat_HalCheck()
{
    s_JZsdk_Hal_Info *HalInfo = JZsdk_Hal_GetHalInfo();

    //1、获取心跳帧的开启情况 发送心跳帧
    for (int i = 0; i < HalInfo->HaveUsePortNum; i++)
    {
        if (HalInfo->HalPort[HalInfo->HaveUsePort[i]].HeartBeatStatusSend == JZ_FLAGCODE_ON)
        {
            HalSend_type1Send_Ask_HeartBeatStatus(HalInfo->HaveUsePort[i], 0x00, HalInfo->HalPort[HalInfo->HaveUsePort[i]].ConnectStatus);
        }
    }
    
}

static void *HeartBeatTask(void *arg)
{
    int angle = 0;
    int UAV_self_angle;
    int PitchFineTuning;

    JZSDK_LOG_DEBUG("心跳帧发送线程\n");

    while (1)
    {
        delayS(10);

        HeartBeat_HalCheck();
    }
    
}

/*****************
 * 
 *  心跳帧主设备类型的初始化
 * 
 * 
 * *************************/
static T_JZsdkReturnCode HeartBeat_Main()
{
    pthread_t PowerMangerTask;
	pthread_attr_t task_attribute; //线程属性
	pthread_attr_init(&task_attribute);  //初始化线程属性
	pthread_attr_setdetachstate(&task_attribute, PTHREAD_CREATE_DETACHED);      //设置线程分离属性
	int opus_Protection = pthread_create(&PowerMangerTask,&task_attribute,HeartBeatTask,NULL);		//线程
	if(opus_Protection != 0)
	{
		JZSDK_LOG_ERROR("创建心跳线程失败!");
		return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
    }

    return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}

/*****************
 * 
 *  心跳帧初始化
 * 
 * 
 * *************************/
T_JZsdkReturnCode HeartBeat_Init()
{
    HeartBeat_Main();

    return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}