<?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 umożliwiająca aktualizację ibpakietu

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

    input.update.trigger                    - wprowadzenie "1" powoduje rozpoczęcie procesu aktualizacji

    input.ibpackage.password                - hasło ibpakietu

    setting.checkout.time                   - czas co jaki będzie sprawdzane, czy aktualizacja jest dostępna [s]

    setting.checkout.timeout                - timeout dla procedury sprawdzania sprawdzania czy aktualizacja jest dostępna (s)

    setting.update.timeout                  - timeout dla procedury aktualizacji (s)

    counter.ibpackage.update.err            - kody błędów związane z aktualizacją ibpakietu
                                              0 - wszystko OK, można przeprowadzić aktualizację lub instalację
                                              1 - nie wprowadzono jeszcze hasła
                                              2 - błędny nr seryjny lub hasło ibpakietu
                                              3 - nie znaleziono softu w bazie
                                              4 - ibpakiet nie jest uprawniony do instalacji wybranego softu
                                              5 - soft nie jest aktywny. Nie można go instalować.
                                              6 - wygasł abonament niezbędny dla aktualizacji
                                              7 - licencja ibpakietu została unieważniona (revoked)
                                              8 - ibpakiet nie jest zarejestrowany, aktualizacja będzie możliwa dopiero po zarejestrowaniu
                                              100 - timeout

    counter.ibpackage.serial                - nr seryjny ibpakietu

    counter.software.name                   - nazwa aktualnego softu

    counter.software.version.current        - wersja aktualnego softu

    counter.software.version.next           - wersja kolejnego softu mozliwego do aktualizacji

    counter.software.updatable              - jeżeli "1" to jest możliwa aktualizacja

    counter.software.changelog.url          - link do changeloga dotyczącego aktualizacji

    counter.checkout.downcounter            - licznik powiązany z setting.checkout.time

    counter.os                              - identyfikator systemu operacyjnego

    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
    ======================

    2022-08-24 ver 1.2.3
    + obsługa systemu android-aarch64

    2022-08-24 ver 1.2.2
    + obsługa wersji developerskich

    2022-06-16 ver 1.1.1
    # log() lua funciton

    2022-05-28 ver 1.0.0
    # First release

   -->

  <!-- Type and Version must be the same as Logic::TYPE and Logic::VERSION in Logic.cpp -->
  <Logic Type="Lua" SubType="Updater" Version="1.0.10.1421" SubVersion="1.2.3.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.update.trigger" Type="T_INT" 
          CanLocalRead="true" CanLocalWrite="true" 
          CanExternRead="true" CanExternWrite="true" 
          Direction="Input" Min="0" Max="1" Default="0" 
          IsStorable="false"/>

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

        <Var Name="setting.checkout.timeout" Type="T_INT" 
          CanLocalRead="true" CanLocalWrite="true" 
          CanExternRead="true" CanExternWrite="true" 
          Direction="Input" 
          Min="0" Default="5" IsStorable="true"/>

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

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

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

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

        <Var Name="counter.software.version.current" Type="T_STRING"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="false"
          Direction="Input" Default="" IsStorable="false"/>

        <Var Name="counter.software.version.next" Type="T_STRING"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="false"
          Direction="Output" Default="" IsStorable="false"/>

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

        <Var Name="counter.software.changelog.url" Type="T_STRING"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="false"
          Direction="Output" Default="" IsStorable="false"/>

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

        <Var Name="counter.ibpackage.update.err" Type="T_INT"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="false"
          Direction="Output" Min="0" 
          Default="1" IsStorable="false"/>

        <Var Name="counter.os" Type="T_STRING"
          CanLocalRead="true" CanLocalWrite="true"
          CanExternRead="true" CanExternWrite="false"
          Direction="Output" Default="" IsStorable="false"/>


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

      </InstanceDeclSection>

    </Declaration>

    <Initialization>

      <GlobalInitSection>
      </GlobalInitSection>

      <Instances>

        <Instance Name="ibpackage">
          <InstanceInitSection>
            <VarAssign Name="counter.software.name"             Value="" SrcVar="ibmanager.id.name"/>
            <VarAssign Name="counter.software.version.current"  Value="" SrcVar="ibmanager.id.version"/>
            <VarAssign Name="counter.ibpackage.serial"          Value="" SrcVar="ibmanager.id.serial"/>
          </InstanceInitSection>
        </Instance>

      </Instances>

    </Initialization>

  </Logic>

</Config>
