<?xml version="1.0" encoding="UTF-8"?>
<Config Version="1.3"
        xmlns="http://www.insbud.net/ibmanager/logicCfg"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.insbud.net/ibmanager/logicCfg logicCfg.xsd">

  <!--
    ======================
    Description
    ======================

    Logika sterująca dostępem. Np. dostęp do poziomów nastaw z GUI (trybu użytkownik, instalator, serwis itd).

    Logika po podaniu kodu i w przypadku zgodności z zachowanym kodem dostępowym (przechowywany jest jawnie) zezwala na 
    dostęp przez ograniczony czas. Po upływie czasu dostęp zostaje zablokowany.

    ======================
    Parameters
    ======================

    input.code                              - wprowadzany kod

    output.access                           - czy jest udzielony dostęp (0 - brak dostępu; 1 - jest dostęp)

    setting.access.code                     - kod dostępu (jawny)

    setting.access.time                     - czas na jaki zostaje udzielony dostęp po podaniu prawidłowego kodu. W sekundach

    counter.access.downcounter              - licznik powiązany z udzielonym dostępem

    Logic uses lua language to implement own behaviour

    ======================
    mandatory variables
    ======================

    Logic expects following mandatory variables:

    reload.trigger                          - causes reloading lua script

    memcnt                                  - current amount of memory used by lua in bytes

    Logic expects following kv settings:

    LuaScriptPath                           - path to the lua script - must be absolute

    ======================
    ChangeLog
    ======================

    2021-02-02 ver 0.1.1
    # kod może być stringiem

    2017-10-11 ver 0.0.0
    # First release

   -->

  <!-- Type and Version must be the same as Logic::TYPE and Logic::VERSION in Logic.cpp -->
  <Logic Type="Lua" SubType="Access" Version="1.0.10.1421" SubVersion="0.1.1.0">

    <Declaration>

      <GlobalDeclSection>

      </GlobalDeclSection>

      <InstanceDeclSection>

        <!-- mandatory variables -->

        <Var Name="reload.trigger" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true"
          Direction="Input" Min="0" Max="1"
          Default="0" IsStorable="false"/>

        <Var Name="memcnt" Type="T_LONGLONG"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="false"
          Direction="Output" Min="0"
          Default="0" IsStorable="false"/>

        <!-- sublogic specific variables -->

        <Var Name="input.code" Type="T_STRING"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="true"
          Direction="Input" Default="" IsStorable="false"/>

        <Var Name="output.access" Type="T_INT" 
          CanLocalRead="true" CanLocalWrite="true" 
          CanExternRead="true" CanExternWrite="false" 
          Direction="Output" Min="0" Max="1" Default="0" 
          IsStorable="false"/>

        <Var Name="setting.access.code" Type="T_STRING" 
          CanLocalRead="true" CanLocalWrite="true" 
          CanExternRead="true" CanExternWrite="true" 
          Direction="Input" 
          Min="0" Default="1111" IsStorable="true"/>

        <Var Name="setting.access.time" Type="T_INT" 
          CanLocalRead="true" CanLocalWrite="true" 
          CanExternRead="true" CanExternWrite="true" 
          Direction="Input" 
          Min="0" Default="600" IsStorable="true"/>

        <Var Name="counter.access.downcounter" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="false"
          Direction="Output" Min="0" 
          Default="0" IsStorable="false"/>

        <Settings>
          <KVSettings>
            <!-- pointing source list -->
            <KVSetting Key="LuaScriptPath" Value="logic/scripts/Access.lua"/>
          </KVSettings>
        </Settings>

      </InstanceDeclSection>

    </Declaration>

    <Initialization>

      <GlobalInitSection>
      </GlobalInitSection>

      <Instances>

        <Instance Name="service">
          <InstanceInitSection>
          </InstanceInitSection>
        </Instance>

      </Instances>

    </Initialization>

  </Logic>

</Config>
