sn_counter = 0
local dev_status = {}        --app演示页面的控件值寄存器
local meter_value = 0        --仪表数值
local meter_flag = 0         --仪表数值的状态，0表示增周期、1表示减周期
flag = 0

local screen_can = 43
local CAN_CMD_ID = 10
local send_data_buffer = {}

local screen_net = 44
local count_getip = 0


function on_systick()
    state,process = get_upgrade_state()                                     --获取更新状态与进度
    if state ~= 0
      then
          set_value(23,1,process)                                           --设置进度条
 		  set_value(23,3,process)                                           --设置数值 
      end
      
    set_value(23,2,state)                                                   --升级状态提示
	
    wifi_connect = get_network_state()                                      --获取网络状态
	if wifi_connect~=0
	then
      set_text(19,1,'连接成功')             
	end
	
	--显示当前连接的WIFI
	wifimode,secumode,ssid,password = get_wifi_cfg()                       --获取WIFI配置
	dhcp,ipaddr = get_network_cfg()                                        --获取网络配置
	 
	if wifi_connect>0
	then
	   set_text(19,3,ssid)                                                 --显示WIFI信息
	   set_text(19,2,ipaddr)
	else
       set_text(19,3,' ')
	   set_text(19,2,' ')	   
	end		
end


--初始化函数
function on_init()
    start_timer(0,30000,0,0)
	canbus_open(0,125,0,0)

	
end

--控制仪表
function on_timer(timer_id)  
  if timer_id==1
  then
    if meter_value <=0                                                       --小于0时，数值加
  	then
  		meter_flag = 0
    end
    if meter_value >=260                                                     --大于0时，数值减
  	then
  		meter_flag = 1
    end
    if meter_flag  ==0
    then
    set_value(6,2,meter_value)                                               --指针转动
	meter_value = meter_value+4                                              --数值增加
	end
	if meter_flag ==1
	then
	set_value(6,2,meter_value)                                               --指针转动
	meter_value = meter_value-4                                              --数值增加
	end  
  elseif timer_id==2
  then
		set_text(screen_can,3,"通讯失败")
		set_text(screen_can,2,"")
		set_fore_color(screen_can,3,0xC800)
		
  elseif timer_id==3
  then
        local dhcp, ipaddr, netmask, gateway, dns =  get_network_cfg()	
		if string.len(ipaddr) >4 then
			set_text(screen_net,1,ipaddr)
			
		else
			count_getip = count_getip + 1
			if count_getip >= 3 then
				count_getip = 0
				set_text(screen_net,3,"读取IP地址失败")
				set_fore_color(screen_net,3,0xC800)
			    stop_timer(3)
			end		
		end

  end	

end

--扫描wifi与显示
function scan_ap_fill_list()
    ap_cnt = scan_ap()                                                       --扫描可用热点
	  
	for i=1,ap_cnt do
	  ssid,security,quality = get_ap_info(i-1)                               --获取信息
	  set_text(21,i,ssid)                                                    --显示id
	end
	
	for i=ap_cnt,10 do
	   set_text(21,i,"")                                                     --清空后面的
	end
end

--控制控件
function on_control_notify(screen,control,value) 
    if screen==5                                                             --进度条
    then
        if control==3 and value > 0                                                       --控件‘减’
        then
		    value=get_value(5,1)                             
            if value>0 
            then
            value=value-5
            end
             if value<0 
            then
            value=0
            end
 		    set_value(5,1,value)                                                 --设置数值
            set_value(5,2,value)	
         end
         if control==4 and value > 0                                                      --控件‘加’
         then
 	         value=get_value(5,1)
             if value<100
             then
             value=value+5
             end
             if value>100
             then
             value=100
             end
 		 	 set_value(5,1,value)                                                 --设置数值
             set_value(5,2,value) 
        end
	    if control==1                                                        --直接点击进度条
	    then
            value=value
 		    set_value(5,1,value)                                                 --设置数值
            set_value(5,2,value)	
	    end
    end
    
	if 	screen==6 and control==1 and value == 1                              --控制仪表指针
	then
		start_timer(1,20,0,0)                                                 --启动定时器，20毫秒周期
  	end

  	if 	screen==6 and control==1 and value == 0                              --取消控制仪表指针
	then
		stop_timer(1) 
  	end

	if screen==7 and control==2                                              --滑块调节背光
	then	 
        set_value(7,3,value)                                                 --修改进度条
        set_backlight(value)		
	end
	
	if screen==18 and control==5 and value==1                                --从音乐返回时，暂停音乐
	then
		play_sound('0')
		set_value(18,3,0)
 		set_value(18,4,0)	
	end
	
	if screen==23 and control==4 and value==1                                --远程升级
	then
	   start_upgrade('ftp://192.168.0.2/DCIOT.PKG')
	end
	
	 --点击扫描热点
	if screen==19 and control==7 and value==1 or 
	   screen==21 and control==21 and value==1
	then
		scan_ap_fill_list()
	end
	
	if screen==19 and control==8 and value==1                                --保存设置
	then
		ssid = get_text(19,4)
		psw = get_text(19,5)
		set_wifi_cfg(1,0,ssid,psw)                                           --1网卡模式，0自动识别加密
		save_network_cfg();
		set_text(19,1,'连接中...')
	end
	
	--选取热点
	if screen==21 and control>=11 and control<=20
	then
		ssid = get_text(21,control-10)                                  --文本控件从1~10
		set_text(19,4,ssid)
	end
	
	if screen==43 and control==4 and value==1  
	then
		send_data_buffer[0] =  get_value(screen_can,1)>> 8
		send_data_buffer[1] =  get_value(screen_can,1)&0xFF
		canbus_write(0,CAN_CMD_ID,2,0,0,send_data_buffer)
		stop_timer(2)
		start_timer(2,2000,1,1)  
	end
	if screen==44 and control==4 and value==1 
	then
         local dhcp, ipaddr, netmask, gateway, dns =  get_network_cfg()	

		if string.len(ipaddr) <4 then
			 set_text(screen_net,1,"获取失败")
		else
			set_text(screen_net,1,ipaddr)
		    set_text(screen_net,3,"")		
		end
	end
end

function on_audio_callback(state)                                           --播放声音结束的回调函数
	set_value(18,3,0)
 	set_value(18,4,0)	
end

function on_screen_change(screen)
	
	if screen==17                                                           --在进入视频页面时，播放键总是按下状态，其它键总是弹起
	then
			set_text_roll(17,5,110)                                         --文字滚动
			set_value(17,1,1)                                               --播放键按下
 			set_value(17,2,0)                                               --暂停键按下
			set_value(17,3,0)                                               --停止键弹起
	end

	--切换到网络设置页面
	if screen==19
	then
		wifimode,secumode,ssid,password = get_wifi_cfg()                        --获取网络信息
		set_text(19,4,ssid)                                                     --写入
	end
  
	if screen==screen_can
	then	
		send_data_buffer[0] =  get_value(screen_can,1)>> 8
		send_data_buffer[1] =  get_value(screen_can,1)&0xFF
		canbus_write(0,CAN_CMD_ID,2,0,0,send_data_buffer)
		stop_timer(2)
		start_timer(2,2000,1,1)  
	end	
	 local dhcp, ipaddr, netmask, gateway, dns = 0
	if screen==screen_net
	then	
         dhcp, ipaddr, netmask, gateway, dns =  get_network_cfg()	

		if string.len(ipaddr) <4 then
			stop_timer(3)
			start_timer(3,500,1,0)  
		else
		    set_text(screen_net,1,ipaddr)	
			set_text(screen_net,3,"")	
		end
	end	
	
end



function on_canbus_recv (index,identifier,dlc,rtr,ide,data)

	if CAN_CMD_ID == identifier then
		if data[0] ~= nil and data[1] ~= nil then
			local show_value = (data[0]<<8) + data[1] 
			set_value(screen_can,2,show_value)
			set_value(screen_can,1,show_value)
			set_text(screen_can,3,"通讯成功")
			canbus_write(0,CAN_CMD_ID,2,0,0,data)
			set_fore_color(screen_can,3,0x07E0)
			stop_timer(2)			
			start_timer(2,2000,1,1)  
		end

	end
	
end