<?xml version = "1.0" encoding = "UTF-8" ?>
<!-- Ake Hedman, Grodans Paradis AB -->
<vscp>
<module>
    <name>W55RP20 Fridge Control</name>
    <model>A</model>
    <version>1</version>
    <changed>2024-10-18</changed>
    <description lang="en">
        A simple VSCP controler for a fridge based on the WIZnet W55RP20
    </description>
    <infourl>https://github.com/grodansparadis/vscp-demo-pico-fridge-ctrl</infourl>
    <buffersize>512</buffersize>
    <manufacturer>
        <name>Grodans Paradis AB</name>
        <address>
            <street>Brattbergavägen 17</street>
            <city>Los</city>
            <postcode>82050</postcode>
            <country>Sweden</country>
        </address>
        <telephone>
            <number>+46 8 40011835 </number>
            <description lang="en" >Main Reception</description>
        </telephone>
        <email>
            <address>support@grodansparadis.com</address>
            <description>Support email</description>
        </email>
        <email>
            <address>sales@grodansparadis.com</address>
            <description>Sales inquires email</description>
        </email>
        <email>
            <address>info@grodansparadis.com</address>
            <description>General email</description>
        </email>    
        <web>
            <address>http://www.grodansparadis.com</address>
            <description>Main web site</description>
        </web>                  
    </manufacturer>  
    
    <!-- Picture of device -->
    <picture path="https://raw.githubusercontent.com/grodansparadis/vscp-demo-pico-fridge-ctrl/refs/heads/main/images/IMG_20241028_211113.jpg" 
        format="jpg" >
        <description lang="en" >
        Picture of the first prototype.
        </description>
    </picture>
    
    <!-- Firmware for the device -->
    <files>
    <firmware target="w55rp20" 
    	        path="https://raw.githubusercontent.com/grodansparadis/vscp-demo-pico-fridge-ctrl/refs/heads/main/firmware/firmware/w55rp20_fridge_ctrl_001.uf2" 
        	format="uf2"
        	date="2024-10-28"
        	version_major="0"
        	version_minor="0"
        	version_subminor="1">
        	<description lang="en" >
        	Firmware for the fridge controller
        	</description> 
    	</firmware>    	
    </files>
    
    <!-- Full documentation for the device -->
    <manual path="https://github.com/grodansparadis/vscp-demo-pico-fridge-ctrl"     
        lang="en"
        format="html">
        <description lang="en" >
        Manual for the fridge controller.
        </description>
    </manual>
    
    <!-- Copy uf2 file to usb disk of uP -->
    <boot>
        <algorithm>0</algorithm>
        <blocksize>0</blocksize>
        <blockcount>0</blockcount>
    </boot>
    
    
    <registers>        

        <reg page="0" offset="0" default="0" fgcolor="0x000000" bgcolor="0xfff3d4" >
            <name lang="en">Zone</name>
            <description lang="en">Zone this module belongs to</description>
            <access>rw</access>
        </reg>

        <reg page="0" offset="1" default="0" bgcolor="0xfff3d4" >
            <name lang="en">Sub zone</name>
            <description lang="en">Sub zone this module belongs to</description>
            <access>rw</access>
        </reg>
        
        <reg page="0" offset="2"  bgcolor="0xebd69d" >
            <name lang="en">Status</name>
            <description lang="en">
              Status\n
              bit 0 - Compressor on=1/off=0.</description>
            <access>r</access>
            <bit pos="0" default="true" >
                <name lang="en">Compressor state</name>
                <description lang="en">Compressor is on if bit is set to one, and of if set to zero.</description> 
            </bit>
        </reg>
        
        <reg page="0" offset="3" default="0x83" bgcolor="0xebd69d">
            <name lang="en">Config</name>
            <description lang="en">
              Config\n
              bit 0 - Send alarm on high.\n
              bit 1 - Send alarm on low.\n
              bit 7 - enable if set to one
            </description>
            <bit pos="0" default="true" >
                <name lang="en">High Alarm</name>
                <description lang="en">Enable high alarm if set to true.</description> 
            </bit>
            <bit pos="1" default="true" >
                <name lang="en">Low Alarm</name>
                <description lang="en">Enable low alarm if set to true.</description> 
            </bit>
            <bit pos="7" default="true" >
                <name lang="en">Enable</name>
                <description lang="en">Enable fridge control module if set to true.</description> 
            </bit>
            <access>rw</access>
        </reg>
        
        <reg page="0" offset="4" default="60" bgcolor="0xebd69d">
            <name lang="en">Temperature event period</name>
            <description lang="en">Period for temperature event in seconds. Set to zero to disable.</description>
            <access>rw</access>
        </reg>
        
        <reg page="0" offset="5"  bgcolor="0xebd69d">
            <name lang="en">Fridge temperature MSB</name>
            <description lang="en">Current fridge temperature * 100 MSB as signed integer</description>
            <access>r</access>
        </reg>

        <reg page="0" offset="6"  bgcolor="0xebd69d">
            <name lang="en">Fridge temperature LSB</name>
            <description lang="en">Current fridge temperature * 100 LSB as signed integer</description>
            <access>r</access>
        </reg>
        
        <reg page="0" offset="7" default="0x0d" bgcolor="0xebd69d">
            <name lang="en">NTC B coefficient MSB</name>
            <description lang="en">NTC B coefficient MSB</description>
            <access>rw</access>
        </reg>

        <reg page="0" offset="8" default="0x7a" bgcolor="0xebd69d">
            <name lang="en">NTC B coefficient LSB</name>
            <description lang="en">NTC B coefficient LSB</description>
            <access>rw</access>
        </reg>

        <reg page="0" offset="9" default="0x00" bgcolor="0xebd69d">
            <name lang="en">Low alarm temperature MSB</name>
            <description lang="en">Low alarm fridge temperature * 100 MSB as signed integer</description>
            <access>rw</access>
        </reg>

        <reg page="0" offset="10" default="0x0a" bgcolor="0xebd69d">
            <name lang="en">High alarm temperature LSB</name>
            <description lang="en">Low alarm fridge temperature * 100 LSB as signed integer</description>
            <access>rw</access>
        </reg>
        
        <reg page="0" offset="11" default="0x00" bgcolor="0xebd69d">
            <name lang="en">High alarm temperature MSB</name>
            <description lang="en">High alarm fridge temperature * 100 MSB as signed integer</description>
            <access>rw</access>
        </reg>

        <reg page="0" offset="12" default="0x0a" bgcolor="0xebd69d">
            <name lang="en">High alarm temperature LSB</name>
            <description lang="en">High alarm fridge temperature * 100 LSB as signed integer</description>
            <access>rw</access>
        </reg>
        
        <reg page="0" offset="13" default="0x0a" bgcolor="0xebd69d">
            <name lang="en">Hysteresis</name>
            <description lang="en">Hysteresis as an unsigned byte</description>
            <access>rw</access>
        </reg>

        <reg page="0" offset="13" default="0xec" bgcolor="0xebd69d">
            <name lang="en">Settemp</name>
            <description lang="en">Settemp as signed byte. Default = -20 C</description>
            <access>rw</access>
        </reg>
                                
    </registers>
    
    
    <remotevars>

        <remotevar type="int16_t"  
                            offset = "5" 
                            bgcolor="0xE0E0FF" >
          <name lang="en">Temperature</name>
          <description lang="en">Current fridge temperature\n</description>
          <access>r</access>
        </remotevar>
        
        <remotevar type="uint16_t"  
                            offset = "7" 
                            bgcolor="0xE0E0FF" >
          <name lang="en">NTC B Coeeficient</name>
          <description lang="en">NTC B Coefficient\n</description>
          <access>rw</access>
        </remotevar>

        <remotevar type="int16_t"  
                            offset = "9" 
                            bgcolor="0xE0E0FF" >
          <name lang="en">Low alarm</name>
          <description lang="en">Low alarm temperature in degrees celsius.\n</description>
          <access>rw</access>
        </remotevar>

        <remotevar type="int16_t"  
                            offset = "10" 
                            bgcolor="0xE0E0FF" >
          <name lang="en">High alarm</name>
          <description lang="en">High alarm temperature in degrees celsius.\n</description>
          <access>rw</access>
        </remotevar>
     
   </remotevars>
    
    
    

    <alarm>
    
    <bit pos="1">
        <name lang="en">High alarm</name>
        <description lang="en">
        High temperature alarm occurred.
        </description>
    </bit>
    
    <bit pos="0">
        <name lang="en">Low alarm</name>
        <description lang="en">
        Low temperature alarm occurred.
        </description>
    </bit>                          
    </alarm>
     
    
    <events>
    
        <event class="1040" type="6" >
            <name lang="en">Temperature</name>                     
            <description lang="en">
            Current temperature of fridge. Coding: Integer. Unit: Degrees Celsius.  
            </description>  
            <priority>4</priority>
            <data offset="0" >                      
            <name lang="en">Datacoding</name>
            <description lang="en">
            Will contain 0b01101000. 16-bit signed integer, unit: Degrees Celsius, Sensor index: 0
            </description>          
            </data>
            <data offset="1" >                      
            <name lang="en">MSB of temperaure</name>
            <description lang="en">
            Byte 0 (MSB) of signed 16-bit temperature value.
            </description>          
            </data>
            <data offset="2" >
            <name lang="en">Counter value</name>
            <description lang="en">
            Byte 1 of signed 16-bit temperature value.
            </description>          
            </data>            
        </event>
        
        <event class="1" type="2" >
            <name lang="en">Alarm occured</name>                    
            <description lang="en">
            If an alarm is armed this event is sent when it occurs and the corresponding 
            alarm bit is set in the alarm register.
            </description>  
            <priority>4</priority>
            <data offset="0" >                      
            <name lang="en">Alarm satus</name>
            <description lang="en">
            Alarm satus byte.
            </description>          
            </data>
            <data offset="1" >                      
            <name lang="en">Zone</name>
            <description lang="en">
            Is set to the zone for the module.
            </description>          
            </data>
            <data offset="2" >
            <name lang="en">Sub zone</name>
            <description lang="en">
            Sub zone for channel or sub zone for module if channel sub zone is zero.
            </description>          
            </data>
        </event>    
        
    </events>
        
</module>   
</vscp> 
