_ENCRYPT_=0    --LUA脚本加密

--数据类型定义
VT_LW = 1    --变量地址
VT_RW = 2    --FLASH存储
VT_0x = 10    --线圈
VT_1x = 11    --输入点
VT_3x = 12    --输入寄存器
VT_4x = 13    --保持寄存器


_warningTb = {
--1~96
    '相序保护',
    '水流开关保护',
    '水位开关保护',
    '制热出水温度过高',
    '下水流开关断开',
    '1#电流故障',
    '2#电流故障',
    '线控器通讯故障',
    '进水传感器故障',
    '出水传感器故障',
    '水箱传感器故障',
    '环境传感器故障',
    '1#盘管传感器故障',
    '2#盘管传感器故障',
    '1#排气传感器故障',
    '2#排气传感器故障',
    '下回水传感器故障',
    '1#回气传感器故障',
    '2#回气传感器故障',
    '1#高压开关保护',
    '2#高压开关保护',
    '1#低压开关保护',
    '2#低压开关保护',
    '冬季防冻保护',
    '制冷进出水温度过低保护',
    '进出水温差过大保护',
    '1#制热环境与盘管温差过大保护',
    '2#制热环境与盘管温差过大保护',
    '3#制热环境与盘管温差过大保护',
    '4#制热环境与盘管温差过大保护',
    '3#电流故障',
    '4#电流故障',
    '1#增焓进口传感器故障',
    '2#增焓进口传感器故障',
    '预留',
    '子设备掉线',
    '1#增焓出口传感器故障',
    '2#增焓出口传感器故障',
    '3#增焓出口传感器故障',
    '4#增焓出口传感器故障',
    '预留',
    '预留',
    '预留',
    '预留',
    '预留',
    '预留',
    '预留',
    '预留',
    '压机1过载保护',
    '压机2过载保护',
    '压机3过载保护',
    '压机4过载保护',
    '内风机1过载保护',
    '内风机2过载保护',
    '内风机3过载保护',
    '内风机4过载保护',
    '外风机1过载保护',
    '外风机2过载保护',
    '外风机3过载保护',
    '外风机4过载保护',
    '电辅热1过载保护',
    '电辅热2过载保护',
    '电辅热3过载保护',
    '电辅热4过载保护',
    '系统1高压保护',
    '系统2高压保护',
    '系统3高压保护',
    '系统4高压保护',
    '系统1低压保护',
    '系统2低压保护',
    '系统3低压保护',
    '系统4低压保护',
    '系统1排气过高保护',
    '系统2排气过高保护',
    '系统3排气过高保护',
    '系统4排气过高保护',
    '系统1电流保护',
    '系统2电流保护',
    '系统3电流保护',
    '系统4电流保护',
    '室内翅片1探头故障',
    '室内翅片2探头故障',
    '室内翅片3探头故障',
    '室内翅片4探头故障',
    '预留',
    '预留',
    '预留',
    '预留',
    '预留',
    '预留',
    '预留',
    '预留',
    '预留',
    '预留',
    '预留',
    '预留',
    '预留',
    '预留',
    '预留',
    '预留',

}

--告警过滤回调函数，通过判断告警，返回对应的告警控件。
--warning_id：告警ID
function on_filter_warning(warning_id)

    local ret = 0

    local cur_page = get_screen()

    if warning_id <= 100 and cur_page == 0 then ret = 1 end

    if warning_id > 100 and cur_page == 1 then ret = 1 end

    return ret
end

--告警解析回调函数
function on_parse_warning(warning_id,text,screen_id,control_id)

    if warning_id < 100
    then
        curWarnMsg = '设备1 : '.._warningTb[warning_id]
        
    elseif warning_id > 100
    then
        curWarnMsg = '设备2 : '.._warningTb[warning_id % 100]
    end
    
    return curWarnMsg, 1
end

function on_init()

    set_auto_read(0)  --脚本控制读取
    create_resp_que() --队列发送,使能回调 on_cmd_resp

    select_slave(0)
    start_read(1, VT_4x, 0x1000, 0x0001)

    select_slave(1)
    start_read(2, VT_4x, 0x1000, 0x0001)

    set_uint16(VT_LW, 0x0115, 1)
    warning_set_mode(1)

end

function on_cmd_resp(slave,vtype,addr,count,ret,wr)

    if ret == 0 and wr == 0
    then
        if slave == 0
        then
            if  vtype == VT_4x and addr == 0x1000 and count == 1
            then
                select_slave(0)
                local val = get_uint16(VT_4x, 0x1000)

                for i = 0, 15
                do
                    warning_set(i+1 ,((val >> i) & 0x01), 1)
                    --print('warning_set('..(i+1)..' ,'..((val >> i) & 0x01)..', 1) : '..val)
                end
                set_uint16(VT_LW, 0x0114, 0x0022) --刷新告警
            end

        elseif slave == 1
        then
            if  vtype == VT_4x and addr == 0x1000 and count == 1
            then
                select_slave(1)
                local val = get_uint16(VT_4x, 0x1000)

                for i = 0, 15
                do
                    warning_set(i+101 ,((val >> i) & 0x01), 1)
                    --print('warning_set('..(i+101)..' ,'..((val >> i) & 0x01)..', 1) : '..val)
                end
                set_uint16(VT_LW, 0x0114, 0x0022) --刷新告警
            end
        end
    end
end

function on_update(slave, vtype, addr)

end


function on_screen_change(screen)

end