WarnLight.c 3.7 KB
#include "JZsdkLib.h"

#include "version_choose.h"
#include "Hal_Send/HalSend.h"
#include "WarnLight/WarnLight.h"


static T_JzWarnLightInfo g_WarnLightInfo;

T_JZsdkReturnCode WarnLight_Init(T_JzWarnLightInfo RegInfo)
{
    //初始化参数
    memset(&g_WarnLightInfo, 0, sizeof(T_JzWarnLightInfo));
    memcpy(&g_WarnLightInfo, &RegInfo, sizeof(T_JzWarnLightInfo));

    //打印参数
    JZSDK_LOG_INFO("WarnLightControlMode:%d",g_WarnLightInfo.ControlMode);

    JZSDK_LOG_INFO("WarnLight Init Success");

    return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}

T_JZsdkReturnCode WarnLight_Set_StatusAndMode(int status, int mode)
{   
    JZSDK_LOG_DEBUG("WarnLight_Set_StatusAndMode: status = %d, mode = %d", status, mode);

    T_JZsdkOsalHandler *osalHandle = JZsdk_Platform_GetOsalHandler();
    if (osalHandle == NULL)
    {
        return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
    }
    
    U8_t FrameSequence = g_WarnLightInfo.FrameSequence;
    osalHandle->GetFrameSequenceQueueNum(&FrameSequence);

    HalSend_type1Send_Set_WarningLight_Status(g_WarnLightInfo.Device, FrameSequence, status, mode);

    g_WarnLightInfo.Attribute.mode = mode;
    g_WarnLightInfo.Attribute.status = status;

    return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}

//收到警灯状态
T_JZsdkReturnCode WarnLight_Obatin_StatusAndMode(int status, int mode)
{
    JZSDK_LOG_DEBUG("%x警灯状态改变 状态%d 模式%d",DEVICE_VERSION, status ,mode);

    g_WarnLightInfo.Attribute.mode = mode;
    g_WarnLightInfo.Attribute.status = status;

    return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}

/*********
 * 
 *  刷新警灯状态
 * 
**********/
T_JZsdkReturnCode WarnLight_Flush_StatusAndMode()
{
    //如果是中继设备,则进行一次灯光属性查询
    if(g_WarnLightInfo.ControlMode == JZ_MODULE_CONTROL_WAY_TRANSPARENT)
    {
        //查询灯光属性
        HalSend_type1Send_CheckStatus_WarningLightStatus(g_WarnLightInfo.Device);
    }

    return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}



//设置警灯颜色
T_JZsdkReturnCode WarnLight_Set_Color(int Color1, int Color2)
{
    JZSDK_LOG_DEBUG("设置0x%x:警灯颜色 Color1:0x%x, color:0x%x",DEVICE_VERSION, Color1, Color2);

    T_JZsdkOsalHandler *osalHandle = JZsdk_Platform_GetOsalHandler();
    if (osalHandle == NULL)
    {
        return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
    }

    U8_t FrameSequence = g_WarnLightInfo.FrameSequence;
    osalHandle->GetFrameSequenceQueueNum(&FrameSequence);

    //发送警灯颜色
    HalSend_type1Send_Set_WarningLight_Color(g_WarnLightInfo.Device, FrameSequence, Color1, Color2);

    g_WarnLightInfo.Attribute.Color1 = Color1;
    g_WarnLightInfo.Attribute.Color2 = Color2;

    return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}

//收到警灯颜色
T_JZsdkReturnCode WarnLight_Obatin_Color(int Color1, int Color2)
{
    JZSDK_LOG_DEBUG("收到0x%x:警灯颜色 Color1:0x%x, color:0x%x",DEVICE_VERSION, Color1, Color2);

    g_WarnLightInfo.Attribute.Color1 = Color1;
    g_WarnLightInfo.Attribute.Color2 = Color2;

    return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}

//刷新警灯颜色
T_JZsdkReturnCode WarnLight_Flush_Color()
{
    //如果是中继设备,则进行一次灯光属性查询
    if(g_WarnLightInfo.ControlMode == JZ_MODULE_CONTROL_WAY_TRANSPARENT)
    {
        //查询灯光属性
        HalSend_type1Send_CheckStatus_WarningLightColor(g_WarnLightInfo.Device);
    }

    return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}

//获取警灯属性
T_JZsdkReturnCode WarnLight_Get_Attribute(T_JzWarnLightAttribute *Attribute)
{
    if(Attribute == NULL)
    {
        return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
    }

    memcpy(Attribute, &(g_WarnLightInfo.Attribute), sizeof(T_JzWarnLightAttribute));

    return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}