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

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


typedef struct T_JzWarnLightInfo{
    T_JzWarnLightAttribute Attribute;
    JZ_MODULE_CONTROL_WAY ControlMode; //控制模式 
}T_JzWarnLightInfo;

static T_JzWarnLightInfo g_WarnLightInfo;

T_JZsdkReturnCode WarnLight_Init(enum JZ_MODULE_CONTROL_WAY Mode)
{
    //初始化参数
    static T_JzWarnLightAttribute Attribute = {
        .Color1 = E_JZ_WARNLIGHT_COLOR_RED,
        .Color2 = E_JZ_WARNLIGHT_COLOR_BLUE,
        .mode = E_JZ_WARNLIGHT_MODE_ALTERATING_FAST_FALSHING,
        .status = JZ_FLAGCODE_OFF,
    };

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

    g_WarnLightInfo.ControlMode = Mode;

    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);

#if DEVICE_VERSION == JZ_H1T

    HalSend_type1Send_Set_WarningLight_Status(UART_DEV_1, 0x00, status, mode);

#elif DEVICE_VERSION == TF_A1 || \
        DEVICE_VERSION == JZ_U3S || \
        DEVICE_VERSION == JZ_U3D || \
        DEVICE_VERSION == JZ_U30 
    
    HalSend_type1Send_Set_WarningLight_Status(UART_DEV_2, 0x00, status, mode);

#elif DEVICE_VERSION == JZ_T40

    HalSend_type1Send_Set_WarningLight_Status(UART_DEV_2, 0x20, status, mode);

#endif

    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(UART_DEV_1);
    }

    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);

#if DEVICE_VERSION == JZ_H1T
    HalSend_type1Send_Set_WarningLight_Color(UART_DEV_1, 0x00, Color1, Color2);

#elif DEVICE_VERSION == TF_A1 || \
        DEVICE_VERSION == JZ_U3S || \
        DEVICE_VERSION == JZ_U3D || \
        DEVICE_VERSION == JZ_U30
        

    HalSend_type1Send_Set_WarningLight_Color(UART_DEV_2, 0x00, Color1, Color2);

#elif DEVICE_VERSION == JZ_T40

    HalSend_type1Send_Set_WarningLight_Color(UART_DEV_2, 0x20, Color1, Color2);
    
#endif

    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(UART_DEV_1);
    }

    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;
}