Page popupTimer
    Attributes
        Scope              : local
        Dragging           : 0
        Send Component ID  : disabled
        Locked             : no
        Swide up page ID   : disabled
        Swide down page ID : disabled
        Swide left page ID : disabled
        Swide right page ID: disabled
    
    Events
        Preinitialize Event
            dim=dimValueNormal
            //get entitiy name
            tEntity.txt=pageIcons.tTmp1.txt
            //get entity id
            entn.txt=pageIcons.tTmp2.txt
            tIcon1.txt=pageIcons.tTmp3.txt
            tTime.txt=pageIcons.vaTime.txt
            vis p0,0
            vis tSend,0
            vis tTmp,0
            vis tInstruction,0
            vis tId,0
            vis bZ1P,0
            vis bZ1M,0
            vis bZ2P,0
            vis bZ2M,0
            vis bZ3P,0
            vis bZ3M,0
            vis bZ4P,0
            vis bZ4M,0
            vis t0,0
            vis fToggleEdit,0
            vis b1,0
            vis b2,0
            vis b3,0
            //page open event
            // event,pageOpenDetail,typeOfPage,tEntityName
            // craft command
            tSend.txt="event,pageOpenDetail,popupTimer,"+entn.txt
            //send calc crc
            btlen tSend.txt,sys0
            crcrest 1,0xffff // reset CRC
            crcputh 55 bb
            crcputs sys0,2
            crcputs tSend.txt,0
            //send cmd
            printh 55 bb
            prints sys0,2
            prints tSend.txt,0
            prints crcval,2
            popupTimer.bco=defaultBcoColor
            for(sys0=0;sys0<34;sys0++)
            {
                if(b[sys0].type==98||b[sys0].type==116)
                {
                    b[sys0].bco=defaultBcoColor
                    //b[sys0].pco=defaultFontColor
                }
                if(b[sys0].type==53&&defaultBcoColor==0)
                {
                    b[sys0].pic=10
                    b[sys0].pic2=11
                }
            }
        
Variable (int32) editable
    Attributes
        Scope: local
        Value: 1
    
Variable (string) entn
    Attributes
        Scope         : local
        Text          : 
        Max. Text Size: 80
    
Variable (int32) mode
    Attributes
        Scope: local
        Value: 1
    
Variable (int32) mode_temp
    Attributes
        Scope: local
        Value: 0
    
Variable (string) strCommand
    Attributes
        Scope         : local
        Text          : 
        Max. Text Size: 960
    
Variable (string) strTmp
    Attributes
        Scope         : local
        Text          : 
        Max. Text Size: 20
    
Variable (string) tId
    Attributes
        Scope         : local
        Text          : 
        Max. Text Size: 20
    
Variable (string) tInstruction
    Attributes
        Scope         : local
        Text          : 
        Max. Text Size: 20
    
Variable (string) tSend
    Attributes
        Scope         : local
        Text          : 
        Max. Text Size: 200
    
Variable (string) tTmp
    Attributes
        Scope         : local
        Text          : 
        Max. Text Size: 80
    
Variable (string) va1
    Attributes
        Scope         : local
        Text          : 
        Max. Text Size: 15
    
Variable (string) va2
    Attributes
        Scope         : local
        Text          : 
        Max. Text Size: 15
    
Variable (string) va3
    Attributes
        Scope         : local
        Text          : 
        Max. Text Size: 15
    
Variable (string) vaModeCur
    Attributes
        Scope         : local
        Text          : 
        Max. Text Size: 40
    
Variable (string) vaModeList
    Attributes
        Scope         : local
        Text          : 
        Max. Text Size: 900
    
Variable (int32) vaModePos
    Attributes
        Scope: local
        Value: 0
    
Variable (string) vaType
    Attributes
        Scope         : local
        Text          : 
        Max. Text Size: 20
    
Number n1
    Attributes
        Scope              : local
        Dragging           : 0
        Send Component ID  : disabled
        Associated Keyboard: none
        Value              : 0
    
    Events
        Touch Press Event
            if(n2.pco==63488)
            {
                n2.pco=defaultFontColor
            }
            if(editable.val==1)
            {
                if(n1.pco==63488)
                {
                    n1.pco=defaultFontColor
                }else
                {
                    n1.pco=63488
                }
            }
            if(n1.pco==63488||n2.pco==63488)
            {
                if(fToggleEdit.txt=="hidden")
                {
                    click fToggleEdit,1
                }
            }else
            {
                if(fToggleEdit.txt=="shown")
                {
                    click fToggleEdit,1
                }
            }
        
Number n2
    Attributes
        Scope              : local
        Dragging           : 0
        Send Component ID  : disabled
        Associated Keyboard: none
        Value              : 0
    
    Events
        Touch Press Event
            if(n1.pco==63488)
            {
                n1.pco=defaultFontColor
            }
            if(editable.val==1)
            {
                if(n2.pco==63488)
                {
                    n2.pco=defaultFontColor
                }else
                {
                    n2.pco=63488
                }
            }
            if(n1.pco==63488||n2.pco==63488)
            {
                if(fToggleEdit.txt=="hidden")
                {
                    click fToggleEdit,1
                }
            }else
            {
                if(fToggleEdit.txt=="shown")
                {
                    click fToggleEdit,1
                }
            }
        
Text t0
    Attributes
        Scope              : local
        Dragging           : 0
        Send Component ID  : disabled
        Associated Keyboard: none
        Text               :  +/- 1      +/- 5      +/- 10    +/- 15
        Max. Text Size     : 60
    
Text tDP
    Attributes
        Scope              : local
        Dragging           : 0
        Send Component ID  : disabled
        Associated Keyboard: none
        Text               : :
        Max. Text Size     : 15
    
Text tEntity
    Attributes
        Scope              : local
        Dragging           : 0
        Send Component ID  : disabled
        Associated Keyboard: none
        Text               : 
        Max. Text Size     : 25
    
Text tIcon1
    Attributes
        Scope              : local
        Dragging           : 0
        Send Component ID  : disabled
        Associated Keyboard: none
        Text               : 
        Max. Text Size     : 10
    
Text tTime
    Attributes
        Scope              : local
        Dragging           : 0
        Send Component ID  : disabled
        Associated Keyboard: none
        Text               : 21:32
        Max. Text Size     : 15
    
Picture p0
    Attributes
        Scope            : local
        Dragging         : 0
        Send Component ID: disabled
    
Button b0
    Attributes
        Scope            : local
        Dragging         : 0
        Send Component ID: disabled
        State            : unpressed
        Text             : î
        Max. Text Size   : 10
    
    Events
        Touch Press Event
            tSend.txt="event,buttonPress2,popupTimer,bExit"
            //send calc crc
            btlen tSend.txt,sys0
            crcrest 1,0xffff // reset CRC
            crcputh 55 bb
            crcputs sys0,2
            crcputs tSend.txt,0
            //send cmd
            printh 55 bb
            prints sys0,2
            prints tSend.txt,0
            prints crcval,2
        
Button b1
    Attributes
        Scope            : local
        Dragging         : 0
        Send Component ID: disabled
        State            : unpressed
        Text             : START
        Max. Text Size   : 45
    
    Events
        Touch Press Event
            tSend.txt="event,buttonPress2,"
            tSend.txt+=entn.txt+","
            tSend.txt+="timer-"+va1.txt
            //send calc crc
            btlen tSend.txt,sys0
            crcrest 1,0xffff // reset CRC
            crcputh 55 bb
            crcputs sys0,2
            crcputs tSend.txt,0
            //send cmd
            printh 55 bb
            prints sys0,2
            prints tSend.txt,0
            prints crcval,2
        
Button b2
    Attributes
        Scope            : local
        Dragging         : 0
        Send Component ID: disabled
        State            : unpressed
        Text             : CANCEL
        Max. Text Size   : 45
    
    Events
        Touch Press Event
            tSend.txt="event,buttonPress2,"
            tSend.txt+=entn.txt+","
            tSend.txt+="timer-"+va2.txt
            //send calc crc
            btlen tSend.txt,sys0
            crcrest 1,0xffff // reset CRC
            crcputh 55 bb
            crcputs sys0,2
            crcputs tSend.txt,0
            //send cmd
            printh 55 bb
            prints sys0,2
            prints tSend.txt,0
            prints crcval,2
        
Button b3
    Attributes
        Scope            : local
        Dragging         : 0
        Send Component ID: disabled
        State            : unpressed
        Text             : PAUSE
        Max. Text Size   : 45
    
    Events
        Touch Press Event
            tSend.txt="event,buttonPress2,"
            tSend.txt+=entn.txt+","
            tSend.txt+="timer-"+va3.txt
            //send calc crc
            btlen tSend.txt,sys0
            crcrest 1,0xffff // reset CRC
            crcputh 55 bb
            crcputs sys0,2
            crcputs tSend.txt,0
            //send cmd
            printh 55 bb
            prints sys0,2
            prints tSend.txt,0
            prints crcval,2
        
Button bZ1M
    Attributes
        Scope            : local
        Dragging         : 0
        Send Component ID: disabled
        State            : unpressed
        Text             : î¿
        Max. Text Size   : 5
    
    Events
        Touch Press Event
            if(n1.pco==63488)
            {
                n1.val=n1.val-1
                if(n1.val<0)
                {
                    n1.val=0
                }
            }
            if(n2.pco==63488)
            {
                n2.val=n2.val-1
                if(n2.val<0)
                {
                    n2.val=0
                }
            }
        
Button bZ1P
    Attributes
        Scope            : local
        Dragging         : 0
        Send Component ID: disabled
        State            : unpressed
        Text             : î
        Max. Text Size   : 5
    
    Events
        Touch Press Event
            if(n1.pco==63488)
            {
                n1.val=n1.val+1
                if(n1.val>59)
                {
                    n1.val=59
                }
            }
            if(n2.pco==63488)
            {
                n2.val=n2.val+1
                if(n2.val>59)
                {
                    n2.val=59
                }
            }
        
Button bZ2M
    Attributes
        Scope            : local
        Dragging         : 0
        Send Component ID: disabled
        State            : unpressed
        Text             : î¿
        Max. Text Size   : 5
    
    Events
        Touch Press Event
            if(n1.pco==63488)
            {
                n1.val=n1.val-5
                if(n1.val<0)
                {
                    n1.val=0
                }
            }
            if(n2.pco==63488)
            {
                n2.val=n2.val-5
                if(n2.val<0)
                {
                    n2.val=0
                }
            }
        
Button bZ2P
    Attributes
        Scope            : local
        Dragging         : 0
        Send Component ID: disabled
        State            : unpressed
        Text             : î
        Max. Text Size   : 5
    
    Events
        Touch Press Event
            if(n1.pco==63488)
            {
                n1.val=n1.val+5
                if(n1.val>59)
                {
                    n1.val=59
                }
            }
            if(n2.pco==63488)
            {
                n2.val=n2.val+5
                if(n2.val>59)
                {
                    n2.val=59
                }
            }
        
Button bZ3M
    Attributes
        Scope            : local
        Dragging         : 0
        Send Component ID: disabled
        State            : unpressed
        Text             : î¿
        Max. Text Size   : 5
    
    Events
        Touch Press Event
            if(n1.pco==63488)
            {
                n1.val=n1.val-10
                if(n1.val<0)
                {
                    n1.val=0
                }
            }
            if(n2.pco==63488)
            {
                n2.val=n2.val-10
                if(n2.val<0)
                {
                    n2.val=0
                }
            }
        
Button bZ3P
    Attributes
        Scope            : local
        Dragging         : 0
        Send Component ID: disabled
        State            : unpressed
        Text             : î
        Max. Text Size   : 5
    
    Events
        Touch Press Event
            if(n1.pco==63488)
            {
                n1.val=n1.val+10
                if(n1.val>59)
                {
                    n1.val=59
                }
            }
            if(n2.pco==63488)
            {
                n2.val=n2.val+10
                if(n2.val>59)
                {
                    n2.val=59
                }
            }
        
Button bZ4M
    Attributes
        Scope            : local
        Dragging         : 0
        Send Component ID: disabled
        State            : unpressed
        Text             : î¿
        Max. Text Size   : 5
    
    Events
        Touch Press Event
            if(n1.pco==63488)
            {
                n1.val=n1.val-15
                if(n1.val<0)
                {
                    n1.val=0
                }
            }
            if(n2.pco==63488)
            {
                n2.val=n2.val-15
                if(n2.val<0)
                {
                    n2.val=0
                }
            }
        
Button bZ4P
    Attributes
        Scope            : local
        Dragging         : 0
        Send Component ID: disabled
        State            : unpressed
        Text             : î
        Max. Text Size   : 5
    
    Events
        Touch Press Event
            if(n1.pco==63488)
            {
                n1.val=n1.val+15
                if(n1.val>59)
                {
                    n1.val=59
                }
            }
            if(n2.pco==63488)
            {
                n2.val=n2.val+15
                if(n2.val>59)
                {
                    n2.val=59
                }
            }
        
Button fToggleEdit
    Attributes
        Scope            : local
        Dragging         : 0
        Send Component ID: disabled
        State            : unpressed
        Text             : hidden
        Max. Text Size   : 10
    
    Events
        Touch Press Event
            if(editable.val==1&&fToggleEdit.txt=="hidden")
            {
                vis bZ1P,1
                vis bZ1M,1
                vis bZ2P,1
                vis bZ2M,1
                vis bZ3P,1
                vis bZ3M,1
                vis bZ4P,1
                vis bZ4M,1
                vis t0,1
                vis b1,0
                vis b2,0
                vis b3,0
                fToggleEdit.txt="shown"
            }else
            {
                vis bZ1P,0
                vis bZ1M,0
                vis bZ2P,0
                vis bZ2M,0
                vis bZ3P,0
                vis bZ3M,0
                vis bZ4P,0
                vis bZ4M,0
                vis t0,0
                if(va1.txt!="")
                {
                    vis b1,1
                }
                if(va2.txt!="")
                {
                    vis b2,1
                }
                if(va3.txt!="")
                {
                    vis b3,1
                }
                fToggleEdit.txt="hidden"
                tSend.txt="event,buttonPress2,"
                tSend.txt+=entn.txt+","
                covx n1.val,strTmp.txt,0,0
                tSend.txt+="timer-start,00:"+strTmp.txt+":"
                covx n2.val,strTmp.txt,0,0
                tSend.txt+=strTmp.txt
                //send calc crc
                btlen tSend.txt,sys0
                crcrest 1,0xffff // reset CRC
                crcputh 55 bb
                crcputs sys0,2
                crcputs tSend.txt,0
                //send cmd
                printh 55 bb
                prints sys0,2
                prints tSend.txt,0
                prints crcval,2
            }
        
Timer tmSerial
    Attributes
        Scope      : local
        Period (ms): 50
        Enabled    : yes
    
    Events
        Timer Event
            // data available
            if(usize>1)
            {
                bufferPos=0
                while(bufferPos<usize)
                {
                    // check for 0x55 0xBB - Command Init Secuence
                    if(u[bufferPos]==187&&u[bufferPos-1]==85)
                    {
                        //remove garbage at the start of the buffer if there's any to free buffer for command
                        if(u[bufferPos]!=1)
                        {
                            udelete bufferPos-1
                        }
                        //instruction is now aligned with buffer, because we deleted garbage before instrcution
                        //get length after init sequence (check if there are more than to bytes in buffer)
                        if(3<usize)
                        {
                            // check if serial buffer has reached the announced length
                            ucopy payloadLength,2,2,0
                            // we are only checking payload length so we have to skip first 3 bytes (init+payload length) (-1 because of < instead of <=)
                            payloadLength+=3
                            // payload length does also not contain crc, so we are adding another 2 bytes for crc
                            payloadLength+=2
                            if(payloadLength<usize)
                            {
                                // calculate crc
                                crcrest 1,0xFFFF
                                // u[2] contains payload legth at 3rd pos in buffer, we are calculating crc from 3rd pos with number of bytes from payload length
                                //crcputu 3,u[2]
                                // u[2] cotnains payload length, we are calculating a crc over the whole message, so we have to add 3 to the length from u[2]
                                crcputu 0,payloadLength-1
                                // get recived crc to be able to compare it
                                ucopy recvCrc,payloadLength-1,2,0
                                // compare crc with recived value
                                if(crcval==recvCrc)
                                {
                                    // crc is okay
                                    // here is the location where acual code should be
                                    // write command to variable strCommand
                                    ucopy strCommand.txt,4,payloadLength-5,0
                                    // write instruction to tInstuction (debug output, but used as variable here, ui elements will be disabled by default)
                                    spstr strCommand.txt,tInstruction.txt,"~",0
                                    spstr strCommand.txt,tTmp.txt,"~",1
                                    if(tInstruction.txt=="entityUpdateDetail"&&entn.txt==tTmp.txt)
                                    {
                                        // change icon
                                        //spstr strCommand.txt,tIcon1.txt,"~",2
                                        vis tIcon1,1
                                        // change icon color
                                        spstr strCommand.txt,tTmp.txt,"~",3
                                        covx tTmp.txt,sys0,0,0
                                        tIcon1.pco=sys0
                                        //entity name
                                        spstr strCommand.txt,entn.txt,"~",4
                                        //time remaining minutes
                                        spstr strCommand.txt,strTmp.txt,"~",5
                                        covx strTmp.txt,n1.val,0,0
                                        //time remaining seconds
                                        spstr strCommand.txt,strTmp.txt,"~",6
                                        covx strTmp.txt,n2.val,0,0
                                        //editable flag
                                        spstr strCommand.txt,strTmp.txt,"~",7
                                        covx strTmp.txt,editable.val,0,0
                                        //action b1
                                        spstr strCommand.txt,va1.txt,"~",8
                                        if(va1.txt=="")
                                        {
                                            vis b1,0
                                        }else
                                        {
                                            vis b1,1
                                        }
                                        //action b2
                                        spstr strCommand.txt,va2.txt,"~",9
                                        if(va2.txt=="")
                                        {
                                            vis b2,0
                                        }else
                                        {
                                            vis b2,1
                                        }
                                        //action b3
                                        spstr strCommand.txt,va3.txt,"~",10
                                        if(va3.txt=="")
                                        {
                                            vis b3,0
                                        }else
                                        {
                                            vis b3,1
                                        }
                                        //label b1
                                        spstr strCommand.txt,b1.txt,"~",11
                                        //label b2
                                        spstr strCommand.txt,b2.txt,"~",12
                                        //label b3
                                        spstr strCommand.txt,b3.txt,"~",13
                                        sleepValue=0
                                    }
                                    if(tInstruction.txt=="time")
                                    {
                                        // get set time to global variable
                                        spstr strCommand.txt,pageIcons.vaTime.txt,"~",1
                                        tTime.txt=pageIcons.vaTime.txt
                                    }
                                    if(tInstruction.txt=="date")
                                    {
                                        // get set date to global variable
                                        spstr strCommand.txt,pageIcons.vaDate.txt,"~",1
                                    }
                                    if(tInstruction.txt=="dimmode")
                                    {
                                        // get value
                                        spstr strCommand.txt,tTmp.txt,"~",1
                                        covx tTmp.txt,dimValue,0,0
                                        // get value normal
                                        spstr strCommand.txt,tTmp.txt,"~",2
                                        covx tTmp.txt,dimValueNormal,0,0
                                        dim=dimValueNormal
                                        // get background color
                                        spstr strCommand.txt,tTmp.txt,"~",3
                                        if(tTmp.txt!="")
                                        {
                                            covx tTmp.txt,defaultBcoColor,0,0
                                        }
                                        // get font color
                                        spstr strCommand.txt,tTmp.txt,"~",4
                                        if(tTmp.txt!="")
                                        {
                                            covx tTmp.txt,defaultFontColor,0,0
                                        }
                                    }
                                    if(tInstruction.txt=="timeout")
                                    {
                                        //set timeout to global var
                                        spstr strCommand.txt,tTmp.txt,"~",1
                                        covx tTmp.txt,sleepTimeout,0,0
                                    }
                                    if(tInstruction.txt=="pageType")
                                    {
                                        //command format pageType,specialPageName
                                        //write name of speical page to tId
                                        spstr strCommand.txt,tId.txt,"~",1
                                        //save second arg if there's one
                                        spstr strCommand.txt,tTmp.txt,"~",2
                                        //save third arg if there's one
                                        spstr strCommand.txt,pageIcons.tTmp2.txt,"~",3
                                        spstr strCommand.txt,pageIcons.tTmp3.txt,"~",4
                                        //we are going to exit this page with this command, so we have to clear the buffer, so we are not getting into a stupid loop ...
                                        udelete payloadLength-1
                                        bufferPos=0
                                        if(tId.txt=="pageStartup")
                                        {
                                            page pageStartup
                                        }
                                        if(tId.txt=="screensaver")
                                        {
                                            page screensaver
                                        }
                                        if(tId.txt=="cardEntities")
                                        {
                                            page cardEntities
                                        }
                                        if(tId.txt=="cardGrid")
                                        {
                                            page cardGrid
                                        }
                                        if(tId.txt=="cardGrid2")
                                        {
                                            page cardGrid2
                                        }
                                        if(tId.txt=="popupLight")
                                        {
                                            pageIcons.tTmp1.txt=tTmp.txt
                                            page popupLight
                                        }
                                        if(tId.txt=="popupShutter")
                                        {
                                            pageIcons.tTmp1.txt=tTmp.txt
                                            page popupShutter
                                        }
                                        if(tId.txt=="popupNotify")
                                        {
                                            page popupNotify
                                        }
                                        if(tId.txt=="cardThermo")
                                        {
                                            page cardThermo
                                        }
                                        if(tId.txt=="cardMedia")
                                        {
                                            page cardMedia
                                        }
                                        if(tId.txt=="cardAlarm")
                                        {
                                            page cardAlarm
                                        }
                                        if(tId.txt=="cardQR")
                                        {
                                            page cardQR
                                        }
                                        if(tId.txt=="cardPower")
                                        {
                                            page cardPower
                                        }
                                        if(tId.txt=="cardChart")
                                        {
                                            page cardChart
                                        }
                                    }
                                    // end of user code
                                    udelete payloadLength-1
                                    bufferPos=0
                                }
                            }
                        }
                    }
                    // next character
                    bufferPos++
                }
            }
        
Timer tmSleep
    Attributes
        Scope      : local
        Period (ms): 1000
        Enabled    : yes
    
    Events
        Timer Event
            if(sleepTimeout!=0)
            {
                sleepValue+=1
                if(sleepTimeout<=sleepValue)
                {
                    sleepValue=0
                    click b0,1
                    click b0,0
                }
            }
        
TouchCap tc0
    Attributes
        Scope: local
        Value: 0
    
    Events
        Touch Press Event
            sleepValue=0
        
