<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://phobos.martem.ee/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Janek</id>
	<title>Phobos Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://phobos.martem.ee/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Janek"/>
	<link rel="alternate" type="text/html" href="https://phobos.martem.ee/wiki/Special:Contributions/Janek"/>
	<updated>2026-04-04T09:12:15Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://phobos.martem.ee/w/index.php?title=Log-conf.xml_TRACE&amp;diff=2172</id>
		<title>Log-conf.xml TRACE</title>
		<link rel="alternate" type="text/html" href="https://phobos.martem.ee/w/index.php?title=Log-conf.xml_TRACE&amp;diff=2172"/>
		<updated>2017-12-05T14:39:35Z</updated>

		<summary type="html">&lt;p&gt;Janek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Expand and copy the following XML to GWS-&amp;gt;Conf-&amp;gt;log-conf.xml. This will output the maximum information to telem-app console.log files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:800px&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/etc/telem/log-conf.xml content for TRACE&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;log4j:configuration xmlns:log4j=&amp;quot;http://jakarta.apache.org/log4j/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;appender name=&amp;quot;Console&amp;quot; class=&amp;quot;org.apache.log4j.ConsoleAppender&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;param name=&amp;quot;Target&amp;quot; value=&amp;quot;System.out&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;layout class=&amp;quot;org.apache.log4j.PatternLayout&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;param name=&amp;quot;ConversionPattern&amp;quot; value=&amp;quot;%d %-5p %c - %m%n&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/layout&amp;gt;&lt;br /&gt;
    &amp;lt;/appender&amp;gt;&lt;br /&gt;
    &amp;lt;appender name=&amp;quot;ConsoleFile&amp;quot; class=&amp;quot;org.apache.log4j.rolling.MartemRollingFileAppender&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;param name=&amp;quot;append&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;param name=&amp;quot;file&amp;quot; value=&amp;quot;/var/local/telem/log/console.log&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;param name=&amp;quot;Threshold&amp;quot; value=&amp;quot;TRACE&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;param name=&amp;quot;ImmediateFlush&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;param name=&amp;quot;BufferSize&amp;quot; value=&amp;quot;8192&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;param name=&amp;quot;BufferedIO&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;rollingPolicy class=&amp;quot;org.apache.log4j.rolling.FixedWindowRollingPolicy&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;param name=&amp;quot;FileNamePattern&amp;quot; value=&amp;quot;/var/local/telem/log/console.%i.log&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;param name=&amp;quot;MaxIndex&amp;quot; value=&amp;quot;10&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/rollingPolicy&amp;gt;&lt;br /&gt;
        &amp;lt;triggeringPolicy class=&amp;quot;org.apache.log4j.SizeBasedTriggeringPolicy&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;param name=&amp;quot;MaxFileSize&amp;quot; value=&amp;quot;10MB&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/triggeringPolicy&amp;gt;&lt;br /&gt;
        &amp;lt;layout class=&amp;quot;org.apache.log4j.PatternLayout&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;param name=&amp;quot;ConversionPattern&amp;quot; value=&amp;quot;%d{yyyy-MM-dd HH:mm:ss.SSS} [%p] %c - %m%n&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/layout&amp;gt;&lt;br /&gt;
    &amp;lt;/appender&amp;gt;&lt;br /&gt;
    &amp;lt;appender name=&amp;quot;LatestErrorsFile&amp;quot; class=&amp;quot;org.apache.log4j.rolling.MartemRollingFileAppender&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;param name=&amp;quot;append&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;param name=&amp;quot;file&amp;quot; value=&amp;quot;/var/local/telem/log/error.log&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;param name=&amp;quot;Threshold&amp;quot; value=&amp;quot;ERROR&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;param name=&amp;quot;ImmediateFlush&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;param name=&amp;quot;BufferSize&amp;quot; value=&amp;quot;8192&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;param name=&amp;quot;BufferedIO&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;rollingPolicy class=&amp;quot;org.apache.log4j.rolling.FixedWindowRollingPolicy&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;param name=&amp;quot;FileNamePattern&amp;quot; value=&amp;quot;/var/local/telem/log/error.%i.log&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;param name=&amp;quot;MaxIndex&amp;quot; value=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/rollingPolicy&amp;gt;&lt;br /&gt;
        &amp;lt;triggeringPolicy class=&amp;quot;org.apache.log4j.SizeBasedTriggeringPolicy&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;param name=&amp;quot;MaxFileSize&amp;quot; value=&amp;quot;10KB&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/triggeringPolicy&amp;gt;&lt;br /&gt;
        &amp;lt;layout class=&amp;quot;org.apache.log4j.PatternLayout&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;param name=&amp;quot;ConversionPattern&amp;quot; value=&amp;quot;%d{yyyy-MM-dd HH:mm:ss.SSS} %c - %m%n&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/layout&amp;gt;&lt;br /&gt;
    &amp;lt;/appender&amp;gt;&lt;br /&gt;
    &amp;lt;appender name=&amp;quot;EventsCSV&amp;quot; class=&amp;quot;org.apache.log4j.rolling.MartemRollingFileAppender&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;param name=&amp;quot;append&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;param name=&amp;quot;Threshold&amp;quot; value=&amp;quot;DEBUG&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;param name=&amp;quot;file&amp;quot; value=&amp;quot;/var/local/telem/log/events.csv&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;param name=&amp;quot;ImmediateFlush&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;param name=&amp;quot;BufferSize&amp;quot; value=&amp;quot;8192&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;param name=&amp;quot;BufferedIO&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;rollingPolicy class=&amp;quot;org.apache.log4j.rolling.FixedWindowRollingPolicy&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;param name=&amp;quot;FileNamePattern&amp;quot; value=&amp;quot;/var/local/telem/log/events.%i.csv&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;param name=&amp;quot;MaxIndex&amp;quot; value=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/rollingPolicy&amp;gt;&lt;br /&gt;
        &amp;lt;triggeringPolicy class=&amp;quot;org.apache.log4j.SizeBasedTriggeringPolicy&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;param name=&amp;quot;MaxFileSize&amp;quot; value=&amp;quot;5MB&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/triggeringPolicy&amp;gt;&lt;br /&gt;
        &amp;lt;layout class=&amp;quot;org.apache.log4j.PatternLayout&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;param name=&amp;quot;ConversionPattern&amp;quot; value=&amp;quot;%d{yyyy-MM-dd HH:mm:ss.SSS};%m%n&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/layout&amp;gt;&lt;br /&gt;
    &amp;lt;/appender&amp;gt;&lt;br /&gt;
    &amp;lt;appender name=&amp;quot;syslog&amp;quot; class=&amp;quot;org.apache.log4j.net.SyslogAppender&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;param name=&amp;quot;append&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;param name=&amp;quot;Threshold&amp;quot; value=&amp;quot;INFO&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;layout class=&amp;quot;org.apache.log4j.PatternLayout&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;param name=&amp;quot;ConversionPattern&amp;quot; value=&amp;quot;%d{MMM dd HH:mm:ss} telem-gw: [%p] %c - %m%n&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/layout&amp;gt;&lt;br /&gt;
        &amp;lt;param name=&amp;quot;SyslogHost&amp;quot; value=&amp;quot;127.0.0.1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/appender&amp;gt;&lt;br /&gt;
    &amp;lt;appender name=&amp;quot;GpsLog&amp;quot; class=&amp;quot;org.apache.log4j.rolling.MartemRollingFileAppender&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;param name=&amp;quot;append&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;param name=&amp;quot;file&amp;quot; value=&amp;quot;/var/local/telem/log/gps.log&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;param name=&amp;quot;ImmediateFlush&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;param name=&amp;quot;BufferSize&amp;quot; value=&amp;quot;8192&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;param name=&amp;quot;BufferedIO&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;rollingPolicy class=&amp;quot;org.apache.log4j.rolling.FixedWindowRollingPolicy&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;param name=&amp;quot;FileNamePattern&amp;quot; value=&amp;quot;/var/local/telem/log/gps.%i.log&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;param name=&amp;quot;MaxIndex&amp;quot; value=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/rollingPolicy&amp;gt;&lt;br /&gt;
        &amp;lt;triggeringPolicy class=&amp;quot;org.apache.log4j.SizeBasedTriggeringPolicy&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;param name=&amp;quot;MaxFileSize&amp;quot; value=&amp;quot;300KB&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/triggeringPolicy&amp;gt;&lt;br /&gt;
        &amp;lt;layout class=&amp;quot;org.apache.log4j.PatternLayout&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;param name=&amp;quot;ConversionPattern&amp;quot; value=&amp;quot;%d{yyyy-MM-dd HH:mm:ss.SSS} [%p] %c - %m%n&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/layout&amp;gt;&lt;br /&gt;
    &amp;lt;/appender&amp;gt;&lt;br /&gt;
    &amp;lt;logger name=&amp;quot;Gateway.Filter&amp;quot; additivity=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;priority value=&amp;quot;TRACE&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;appender-ref ref=&amp;quot;ConsoleFile&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/logger&amp;gt;&lt;br /&gt;
    &amp;lt;logger name=&amp;quot;Gateway.Formula&amp;quot; additivity=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;priority value=&amp;quot;TRACE&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;appender-ref ref=&amp;quot;ConsoleFile&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/logger&amp;gt;&lt;br /&gt;
    &amp;lt;logger name=&amp;quot;Gateway.HAL-gpio-fs&amp;quot; additivity=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;priority value=&amp;quot;OFF&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;appender-ref ref=&amp;quot;ConsoleFile&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/logger&amp;gt;&lt;br /&gt;
    &amp;lt;logger name=&amp;quot;Gateway.GWMIO&amp;quot; additivity=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;priority value=&amp;quot;TRACE&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;appender-ref ref=&amp;quot;ConsoleFile&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/logger&amp;gt;&lt;br /&gt;
    &amp;lt;logger name=&amp;quot;Gateway.Gps&amp;quot; additivity=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;priority value=&amp;quot;INFO&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;appender-ref ref=&amp;quot;GpsLog&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/logger&amp;gt;&lt;br /&gt;
    &amp;lt;logger name=&amp;quot;events_csv&amp;quot; additivity=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;priority value=&amp;quot;INFO&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;appender-ref ref=&amp;quot;EventsCSV&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/logger&amp;gt;&lt;br /&gt;
    &amp;lt;logger name=&amp;quot;Gateway.cmd&amp;quot; additivity=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;priority value=&amp;quot;INFO&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;appender-ref ref=&amp;quot;Console&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/logger&amp;gt;&lt;br /&gt;
    &amp;lt;root&amp;gt;&lt;br /&gt;
        &amp;lt;priority value=&amp;quot;TRACE&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;appender-ref ref=&amp;quot;LatestErrorsFile&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;appender-ref ref=&amp;quot;ConsoleFile&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;!--&amp;lt;appender-ref ref=&amp;quot;syslog&amp;quot;/&amp;gt;--&amp;gt;&lt;br /&gt;
    &amp;lt;/root&amp;gt;&lt;br /&gt;
&amp;lt;/log4j:configuration&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Janek</name></author>
	</entry>
	<entry>
		<id>https://phobos.martem.ee/w/index.php?title=GwLin_Changelog&amp;diff=2161</id>
		<title>GwLin Changelog</title>
		<link rel="alternate" type="text/html" href="https://phobos.martem.ee/w/index.php?title=GwLin_Changelog&amp;diff=2161"/>
		<updated>2017-10-30T13:39:28Z</updated>

		<summary type="html">&lt;p&gt;Janek: /* Latest Firmware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= TELEM-GW6e, TELEM-GWM53 and TELEM-GWM25 =&lt;br /&gt;
&lt;br /&gt;
== Latest Firmware ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 5px; margin: 0.50em 0; background-color: #FFDDDD; border: thin solid #DDBBBB; overflow: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039;&lt;br /&gt;
* Downgrading firmware has never been supported.&lt;br /&gt;
* It is possible to downgrade, but there are no guarantees.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== kernel 4: ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 5px; margin: 0.50em 0; background-color: #FFDDDD; border: thin solid #DDBBBB; overflow: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;2017.10.17-linux_4-11-872c6fa&amp;lt;/code&amp;gt; is first firmware with kernel 4.9.y, do not downgrade to earlier versions.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Telem-GWM-VMX25: 2017.09.26-linux_4-05-50ff00d&lt;br /&gt;
&lt;br /&gt;
Telem-GWM-VMX53: 2017.09.26-linux_4-05-50ff00d&lt;br /&gt;
&lt;br /&gt;
Telem-GW6e-VMX53: 2017.09.26-linux_4-05-50ff00d&lt;br /&gt;
&lt;br /&gt;
Telem-GW6e-TX6UL: 2017.09.26-linux_4-05-50ff00d&lt;br /&gt;
&lt;br /&gt;
Telem-GWM-TX6DL: 2017.09.26-linux_4-05-50ff00d&lt;br /&gt;
&lt;br /&gt;
Telem-GW6e-TX6DL: 2017.09.26-linux_4-05-50ff00d&lt;br /&gt;
&lt;br /&gt;
Telem-GWM-TX6QP: N/A&lt;br /&gt;
&lt;br /&gt;
Telem-GW6e-TX6QP: N/A&lt;br /&gt;
&lt;br /&gt;
=== kernel 2: ===&lt;br /&gt;
&lt;br /&gt;
Telem-GWM25: 2017.09.26-next-03-c81082e&lt;br /&gt;
&lt;br /&gt;
Telem-GWM53: 2017.09.26-next-03-c81082e&lt;br /&gt;
&lt;br /&gt;
Telem-GW6e: 2017.09.26-next-03-c81082e&lt;br /&gt;
&lt;br /&gt;
== Milestones ==&lt;br /&gt;
* DNP3&lt;br /&gt;
&lt;br /&gt;
== telem-app Changelog since 2013 ==&lt;br /&gt;
* 2017.09.26-next-03-c81082e / 2017.09.26-linux_4-05-50ff00d (GWS 2079)&lt;br /&gt;
: &#039;&#039;&#039;HOTFIX&#039;&#039;&#039; IEC DO_FN | Fix: SCADA did not receive command status responses if DO_FN object configured for IED [https://phobos.martem.ee/redmine/issues/2877 #2871]&lt;br /&gt;
* 2017.09.20-next-01-b162ac5 / 2017.09.20-linux_4-02-2436894 (GWS 2079)&lt;br /&gt;
: Modbus | Polling sequence fix (AI was polled less) [https://phobos.martem.ee/redmine/issues/2871 #2871]&lt;br /&gt;
: Modbus | Communication on port stalls if any device has no valid objects [https://phobos.martem.ee/redmine/issues/2873 #2873]&lt;br /&gt;
* 2017.09.13-next-01-800b844 / 2017.09.13-linux_4-feature-integral-expression-01-930dddd (GWS 2079)&lt;br /&gt;
: Modbus | fix AO scaling [https://phobos.martem.ee/redmine/issues/2807 #2807]&lt;br /&gt;
* 2017.09.11-linux_4-01-7ee57df (GWS 2079)&lt;br /&gt;
: Telem Master | support 18 (was 17) CMD address&lt;br /&gt;
: Formula | AI Formula -&amp;gt; AO CMD fix&lt;br /&gt;
* 2017.08.08 (GWS 2079)&lt;br /&gt;
: WebServer | Correctly set persistant pages&lt;br /&gt;
: WebServer | Fix user credentials&lt;br /&gt;
: GWM IO-Board IFR feature [https://phobos.martem.ee/redmine/issues/2841 #2841]&lt;br /&gt;
: Modbus | Fix polling delay [https://phobos.martem.ee/redmine/issues/2839 #2839]&lt;br /&gt;
: WebServer | fix sprintf buffer size&lt;br /&gt;
: Channel | Channel optimisations&lt;br /&gt;
: Core | Fix thread pool manager (TaskIoBase)&lt;br /&gt;
: WebServer | replace deprecated functions&lt;br /&gt;
: IEC | add DST bit functionality [https://phobos.martem.ee/redmine/issues/2833 #2833]&lt;br /&gt;
* 2017.06.09-next-01-353984f (GWS 2079)&lt;br /&gt;
: Reset 2 Clear Buffers fix [https://phobos.martem.ee/redmine/issues/2814 #2814]&lt;br /&gt;
* 2017.04.17-next-08-af772c0&lt;br /&gt;
: Logging | Buffered logging&lt;br /&gt;
* 2017.04.05-next-07-65a2e5a&lt;br /&gt;
: SPA-Bus | Timesync: send 3x short ts and 3x long ts&lt;br /&gt;
* 2017.04.03-next-01-557bc40&lt;br /&gt;
: Core | Fix spontaneous events after GI on initial successful lower lever device initialisation ([https://phobos.martem.ee/redmine/issues/2793 #2793])&lt;br /&gt;
: Core | Refix sending reset cmds from TDC&lt;br /&gt;
* 2017.03.21-next-03-b5cc1d0&lt;br /&gt;
: Optimisation (Webserver) | Avoid websocket connection duplicates&lt;br /&gt;
: Optimisation (app close) | make WebSocketAppender thread safe&lt;br /&gt;
: Optimisation (app close) | fix numerous potential places that cause segfault on app close&lt;br /&gt;
: Build | build with latest GNU compilers (v 6).&lt;br /&gt;
: IEC60870 | IEC103 events without timetag fix&lt;br /&gt;
: Formula | fix Formula output controller trying to execute DO CMD until it succeeds.&lt;br /&gt;
: Formula | fix Formula when using another formula object as argument, that is further down the list in GWS ([https://phobos.martem.ee/redmine/issues/2794 #2794])&lt;br /&gt;
* 2017.01.31-next-01-3eefdf3&lt;br /&gt;
: Optimisation | all telem-app optimisations merge&lt;br /&gt;
: IEC60870 | fix control state conatiner in IEC 101 for GWM with IO board&lt;br /&gt;
: Protocol | control state logger improved logs&lt;br /&gt;
* 2016.12.02-next-01-a502dae &#039;&#039;&#039;Don&#039;t use on VMX25&#039;&#039;&#039; &#039;&#039;&#039;Don&#039;t use on GWM with DO&#039;&#039;&#039;&lt;br /&gt;
: SPA-Bus | ABB SPAC330C feature&lt;br /&gt;
: IEC61850 | 101 support multiple DO with same v-addresses (multiple rows with same v-addresses)&lt;br /&gt;
* 2016.11.23-next-01-0260688 &#039;&#039;&#039;Don&#039;t use on VMX25&#039;&#039;&#039; &#039;&#039;&#039;Don&#039;t use on GWM with DO&#039;&#039;&#039;&lt;br /&gt;
: IEC61850 | 103 support multiple DO with same v-addresses (multiple rows with same v-addresses)&lt;br /&gt;
* 2016.11.15-next-02-b43c191 &#039;&#039;&#039;Don&#039;t use on VMX25&#039;&#039;&#039; &#039;&#039;&#039;Don&#039;t use on GWM with DO&#039;&#039;&#039;&lt;br /&gt;
: Localization | Change non-ASCII characters to * in Port and Device commments ([https://phobos.martem.ee/redmine/issues/2751 #2751])&lt;br /&gt;
* 2016.11.15-next-01-5dc3aa7 &#039;&#039;&#039;Don&#039;t use on VMX25&#039;&#039;&#039; &#039;&#039;&#039;Don&#039;t use on GWM with DO&#039;&#039;&#039;&lt;br /&gt;
: IEC61850 | 104 event loss after disconnect fix ([https://phobos.martem.ee/redmine/issues/2725 #2725])&lt;br /&gt;
* 2016.11.04-next-02-3a9808a &#039;&#039;&#039;Don&#039;t use on VMX25&#039;&#039;&#039; &#039;&#039;&#039;Don&#039;t use on GWM with DO&#039;&#039;&#039;&lt;br /&gt;
: Database | Set object flags to Invalid instead of NotTopical on startup&lt;br /&gt;
: SPA-Bus | objects not going not topical on Timeout fix&lt;br /&gt;
: SPA-Bus | potential segfault fix&lt;br /&gt;
* 2016.10.08-next-01-c91481f&lt;br /&gt;
: IEC-101,104 | GI Switch per object (requires GWS 6.1.0.2068+)&lt;br /&gt;
: IEC-101,104 | DO can have 2 downstream addresses (like 1/2)&lt;br /&gt;
* 2016.10.05-next-06-bb13408&lt;br /&gt;
: Protocol | Remove event sorting by time when sending to upstream &#039;&#039;&#039;Retract 2016.09.19-next-01-c0127ec additions&#039;&#039;&#039;&lt;br /&gt;
: Protocol | upstream events faster&lt;br /&gt;
: IEC-103 | Micom workarounds&lt;br /&gt;
* 2016.10.03-next-02-1cb7e5f&lt;br /&gt;
: Protocol | time sync interval from XML implementation&lt;br /&gt;
: SPA-Bus | fix event time is it is assumed that event came before last minut change&lt;br /&gt;
: SPA-Bus | request L, then poll once and change device&lt;br /&gt;
: SPA-Bus | delay next device for 50ms after timesync&lt;br /&gt;
* 2016.09.26-next-01-91e178f&lt;br /&gt;
: SPA-Bus | Scaling fix ([https://phobos.martem.ee/redmine/issues/2689 #2689])&lt;br /&gt;
: Logging | raw port log in ASCII&lt;br /&gt;
* 2016.09.23-next-01-00fde37 ([https://phobos.martem.ee/redmine/issues/2721 #2721])&lt;br /&gt;
: SPA-Bus | event can have effect on multiple objects&lt;br /&gt;
* 2016.09.19-next-01-c0127ec ([https://phobos.martem.ee/redmine/issues/2693 #2693])&lt;br /&gt;
: Protocol | Events are sent upstream in order of the lowest timetag &#039;&#039;&#039;Retracted in 2016.10.05-next-06-bb13408&#039;&#039;&#039;&lt;br /&gt;
* 2016.09.08-next-01-526b387 &lt;br /&gt;
: IEC | fix IEC 101 UB variable length frame bigger than 255 issue&lt;br /&gt;
: Formula | fix double masking in fomrula ???&lt;br /&gt;
* 2016 year device fw and GWS 6.1.0.2064&lt;br /&gt;
: NoMainLog for formula&lt;br /&gt;
* 2016.08.25-next-03-b45984d&lt;br /&gt;
: Modbus | ai_bit DI type&lt;br /&gt;
: Modbus | DO: define ON and OFF address in the same cell&lt;br /&gt;
: improved logging&lt;br /&gt;
: SPA-Bus | poll all&lt;br /&gt;
* 2016.08.23-next-01-d702b81&lt;br /&gt;
: Logging | fine tuned device initialization logging. Old device oriented (GW6, RTA)&lt;br /&gt;
: fix DO Inversion bug ([https://phobos.martem.ee/redmine/issues/2702 #2702])&lt;br /&gt;
* 2016.05.11-next-02-e02304a&lt;br /&gt;
:SPA-Bus | minor fixes for rare nack and timeout cases&lt;br /&gt;
:SPA-Bus | commented out object sorting&lt;br /&gt;
* 2016.05.04-next-01-64e4492&lt;br /&gt;
:SPA-Bus | protocol subtype for ABB ref542&lt;br /&gt;
:SPA-Bus | poll L messages after 5 object poll requests&lt;br /&gt;
:SPA-Bus | mode 1 implementation: poll multiple objects in one request ([https://phobos.martem.ee/redmine/issues/2635 #2635])&lt;br /&gt;
:SPA-Bus | DO: define ON and OFF address in the same cell &lt;br /&gt;
:SPA-Bus | channel number definable for every event number ([https://phobos.martem.ee/redmine/issues/2637 #2637])&lt;br /&gt;
:SPA-Bus | event numbers for Intermediate and Error states&lt;br /&gt;
:SPA-Bus | fallback fixes ([https://phobos.martem.ee/redmine/issues/2658 #2658])&lt;br /&gt;
:SPA-Bus | switch between devices on same port after L message&lt;br /&gt;
:SPA-Bus | define incoming DI object type (Dobule/Single) ([https://phobos.martem.ee/redmine/issues/2654 #2654])&lt;br /&gt;
:SD card licence implementation ([https://phobos.martem.ee/redmine/issues/2592 #2592])&lt;br /&gt;
:remove non ASCII characters from object comment ([https://phobos.martem.ee/redmine/issues/2577 #2577])&lt;br /&gt;
*[22.03.2016]&lt;br /&gt;
:1-wire segfault on bing temp. change fix ([https://phobos.martem.ee/redmine/issues/2640 #2640])&lt;br /&gt;
*[11.03.2016]&lt;br /&gt;
:IEC-104 object type priorities fix. Big amounts of AI data prevented DI events propagation. ([https://phobos.martem.ee/redmine/issues/2625 #2625])&lt;br /&gt;
*[23.02.2016]&lt;br /&gt;
:webserver v2 IE11 not working fix&lt;br /&gt;
*[10.02.2016]&lt;br /&gt;
:NEW_DATABASE formulas numerous fixes&lt;br /&gt;
:ADDED LIB TO PROJECT: fastformat&lt;br /&gt;
:logging optimizations using fastformat. VMX25 up to 10x faster&lt;br /&gt;
*[16.12.2015]&lt;br /&gt;
:license additions to support no modem GWM ([https://phobos.martem.ee/redmine/issues/2565 #2565])&lt;br /&gt;
*[17.11.2015]&lt;br /&gt;
:longer interval for some tasks&lt;br /&gt;
:SyncDatabaseToFile 2s-&amp;gt;5s&lt;br /&gt;
:ProcessRetranslation 10ms-&amp;gt;500ms&lt;br /&gt;
:explicitly sync db backup to non-volatile memory only on reset/low-power.&lt;br /&gt;
*[06.11.2015]&lt;br /&gt;
:IEC-101/104 QOC (Qualifier of command) implementation ([https://phobos.martem.ee/redmine/issues/2495 #2495])&lt;br /&gt;
*[05.11.2015]&lt;br /&gt;
:AI scaling rewrite &#039;&#039;&#039;(COMPATIBILITY BREAK)&#039;&#039;&#039;&lt;br /&gt;
:virtual I/O object pair crash app if invalid address fix ([https://phobos.martem.ee/redmine/issues/2572 #2572])&lt;br /&gt;
*[30.10.2015]&lt;br /&gt;
:web-server v2 shows device eth info ([https://phobos.martem.ee/redmine/issues/2532 #2532])&lt;br /&gt;
*[16.10.2015]&lt;br /&gt;
:fix SPA-Bus polling delay ([https://phobos.martem.ee/redmine/issues/2546 #2546])&lt;br /&gt;
*[14.10.2015]&lt;br /&gt;
:IEC DO_FN | IEC101/104 type 105 C_RP_NA_1 (reset process) implementation ([https://phobos.martem.ee/redmine/issues/2498 #2498])&lt;br /&gt;
:IEC DO_FN | IEC101/104 GI command via DO implementation ([https://phobos.martem.ee/redmine/issues/2499 #2499])&lt;br /&gt;
*[13.10.2015]&lt;br /&gt;
:zero value deadband implementation ([https://phobos.martem.ee/redmine/issues/2536 #2536])&lt;br /&gt;
*[24.09.2015]&lt;br /&gt;
:DO/AO stops IEC-101 messages fix for devices using old database ([https://phobos.martem.ee/redmine/issues/2527 #2527])&lt;br /&gt;
:allow bigger conf size for NEW_DATABASE devices&lt;br /&gt;
:SETUP_WITH_XML_BIN_SIZE 500KB-&amp;gt;1.5MB&lt;br /&gt;
:EXTRACTED_XML_SETUP_SIZE 6MB-&amp;gt;20MB&lt;br /&gt;
*[07.09.2015]&lt;br /&gt;
:GWM IO-board + 101-104 conversion not working fix ([https://phobos.martem.ee/redmine/issues/2520 #2520])&lt;br /&gt;
*[25.08.2015]&lt;br /&gt;
:IEC-61850 mem-leak/consumption fixes&lt;br /&gt;
:remove BIT_INVALID_TIME from BIT_VALUE_CHANGED_MASK&lt;br /&gt;
*[22.08.2015]&lt;br /&gt;
:devie booting time nnX times faster ([https://phobos.martem.ee/redmine/issues/2472 #2472])&lt;br /&gt;
&lt;br /&gt;
== kernel 4 Changelog since 2017 ==&lt;br /&gt;
*2017.08.22&lt;br /&gt;
: fix GW DNS service&lt;br /&gt;
*2017.02.10&lt;br /&gt;
: fix sftp access&lt;br /&gt;
: fix configuring SSH from GWS&lt;br /&gt;
&lt;br /&gt;
== kernel 2 Changelog since 2013 ==&lt;br /&gt;
* 2017.07.12&lt;br /&gt;
: log4cxx | patch for socket appender&lt;br /&gt;
: pack_logs | pack modem history log&lt;br /&gt;
: init | fix spamming logs (S48, S61m S99)&lt;br /&gt;
: fw_update | fix errors on fw update (S12usb)&lt;br /&gt;
: init | fix spamming logs on stop (S37)&lt;br /&gt;
: modem | fix handling huawei modems&lt;br /&gt;
: WebServer | Restore syslog options&lt;br /&gt;
* 2017.04.17-next-08-af772c0&lt;br /&gt;
: update | Additional checks in post-update scripts for GWM rev.1 FTDI IO Board&lt;br /&gt;
* 2017.04.05-next-07-65a2e5a&lt;br /&gt;
: pack_logs now packs all existing console logs and eeprom log if exists&lt;br /&gt;
* 2017.04.03-next-03-49423a0&lt;br /&gt;
: fix enabling peripheral power on startup with usbs suspended (fixes old GWM53 FTDI IO Board)&lt;br /&gt;
* 2017.01.31-next-01-3eefdf3&lt;br /&gt;
: remove cifs support from vmx25 kernel. No more space left on device.&lt;br /&gt;
* 2016.11.04-next-01-51a8c40 &#039;&#039;&#039;Don&#039;t use on VMX25&#039;&#039;&#039; &#039;&#039;&#039;Don&#039;t use on GWM with DO&#039;&#039;&#039;&lt;br /&gt;
: IEC-101,104 | DO invert fix sending ACK with inverted address&lt;br /&gt;
: init | S99phy fix toggling LAN power and wait longer&lt;br /&gt;
: init | fix starting modem then date is in the start of epoch (1970)&lt;br /&gt;
: init | Script fixes for fresh device with linux default time&lt;br /&gt;
* 2016.10.19-next-09-3e89e79 &#039;&#039;&#039;Don&#039;t use on VMX25&#039;&#039;&#039; &#039;&#039;&#039;Don&#039;t use on GWM with DO&#039;&#039;&#039;&lt;br /&gt;
: CIFS support in kernel for network mounts &#039;&#039;&#039;!! This change bricks VMX25. Removed from VMX25 after 30.01.2017&#039;&#039;&#039;&lt;br /&gt;
* 2016.10.08-next-01-c91481f&lt;br /&gt;
: init | optimizations for FTDI eeprom software&lt;br /&gt;
: init | getwdbootmsg fixes&lt;br /&gt;
: init | major refactoring. Performance &amp;amp; readability fixes&lt;br /&gt;
* 2016.10.03-next-02-1cb7e5f&lt;br /&gt;
: Syslog | Add possibility to change loglevel and remote server port&lt;br /&gt;
: ntp | do not restart ntp if only gps is configured (2711)&lt;br /&gt;
: ntp | avoid frequent ntp restarts by other scripts&lt;br /&gt;
: modem | avoid frequent modem restart by multiple scripts (only 1 restart allowed per one minute).&lt;br /&gt;
: modem | rewrite telit modem reseting as described in telit manual&lt;br /&gt;
: init | fix socat sometimes creating /dev/tty* as ordinary file instead of letting modem driver to do it.&lt;br /&gt;
: init | performance fixes&lt;br /&gt;
* 2016.07.28-next-06-3d426af&lt;br /&gt;
:Device CPU frequency lowered from 1.2GHz to 1.0GHz | Improved ssh key generation and license cheking&lt;br /&gt;
*[11.02.2016]&lt;br /&gt;
:physical interface checker script implementation&lt;br /&gt;
*[10.02.2016]&lt;br /&gt;
:ADDED LIB TO PROJECT: fastformat&lt;br /&gt;
*[26.01.2016]&lt;br /&gt;
:GWS &#039;Get logs&#039; acquires n+1 more rotating logs&lt;br /&gt;
*[23.07.2015]&lt;br /&gt;
:ADDED LIB TO PROJECT: boost_chrono to source.pro (websocketpp 0.6.0 depends)&lt;br /&gt;
*[08.06.2015]&lt;br /&gt;
:application segmentation fault fix (2429)&lt;br /&gt;
*[27.04.2015]&lt;br /&gt;
:DI fallback bug fix (2312)&lt;br /&gt;
*[23.04.2015]&lt;br /&gt;
:DI object double inversion bug fix (2345)&lt;br /&gt;
*[21.04.2015]&lt;br /&gt;
:no flags not working fix (2194)&lt;br /&gt;
*[24.03.2015]&lt;br /&gt;
:Periodical GI implementation for all protocols (every 5th minute of hour)&lt;br /&gt;
*[16.03.2015]&lt;br /&gt;
:Telem Master protocol implementation&lt;br /&gt;
*[29.01.2015]&lt;br /&gt;
:IEC-10x ASDU transfer implementation&lt;br /&gt;
*[30.10.2014]&lt;br /&gt;
:IEC-101B serial communication improvements&lt;br /&gt;
*[23.10.2014]&lt;br /&gt;
:No main/CSV log for individual objects&lt;br /&gt;
*2014.01.13-next-01-2a5df30&lt;br /&gt;
:added uINT16 (unsigned 16bit integer) in modbus protocol. (also update gws)&lt;br /&gt;
*2014.01.09-next-01-2fae2d9&lt;br /&gt;
:fix IEC104 bug in GW6&lt;br /&gt;
*2014.01.07-next-01-8180155&lt;br /&gt;
:fix fallback (GW6e and GWM), &amp;quot;NONE&amp;quot; protocol, device &amp;quot;in use&amp;quot;=no, FP-to-normalised conversion, deadband issues, IEC104 bug in GW6e. (also update gws)&lt;br /&gt;
*2013.11.18-next-04&lt;br /&gt;
:fix IEC-104 bug (mark data as NT if connection to IEC-104 slave is lost and parameter &amp;quot;failed query count for disabling contr.&amp;quot; &amp;gt; 1)&lt;br /&gt;
*2013.11.12-next01&lt;br /&gt;
:fix AO feedback bug in GW6 and RTA-A&lt;br /&gt;
*2013.11.04-next    &lt;br /&gt;
:time invalid flag for GW6 and RTA-A (also requires DSP/RTC software update!)&lt;br /&gt;
*2013.10.24-next    &lt;br /&gt;
:IEC101-to-IEC104 short time to long time conversion&lt;br /&gt;
*2013.09.16-next07  &lt;br /&gt;
:configurable COT=2 Bytes for IEC101b&lt;br /&gt;
*2013.09.09-next01  &lt;br /&gt;
:configurable COT=2 Bytes for IEC101ub&lt;br /&gt;
*2013.07.12-next02  &lt;br /&gt;
:write modem status to /var/log/modem.st&lt;br /&gt;
&lt;br /&gt;
= Old Devices RTA-A and GW6 =&lt;br /&gt;
&lt;br /&gt;
== Latest Firmware ==&lt;br /&gt;
&lt;br /&gt;
Last fw version GW6: 2015.12.11-develop-01-104a492&lt;br /&gt;
&lt;br /&gt;
Last fw version RTA-A M502: 2015.12.11-develop-01-104a492&lt;br /&gt;
&lt;br /&gt;
Last fw version RTA-A M501: 2015.12.11-develop-01-104a492&lt;br /&gt;
&lt;br /&gt;
==GW6-1206 ==&lt;br /&gt;
* Timezones for ports and system.&lt;br /&gt;
===Userland ===&lt;br /&gt;
* dnsmasq&lt;br /&gt;
* iperf&lt;br /&gt;
===Kernel ===&lt;br /&gt;
* iptables: Support for -m limit. For instance:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 /usr/sbin/iptables -t filter -A INPUT -p tcp --dport 2404 --sport 1024:65535 -m state --state NEW -m limit --limit 25/minute --limit-burst 100 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* tc: Basic support.  For instance:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/sbin/tc qdisc del dev eth0 root    2&amp;gt; /dev/null &amp;gt; /dev/null&lt;br /&gt;
/sbin/tc qdisc del dev eth0 ingress 2&amp;gt; /dev/null &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
/sbin/tc qdisc add dev eth0 handle ffff: ingress&lt;br /&gt;
/sbin/tc filter add dev eth0 parent ffff: protocol ip prio 1 u32 match ip src 0.0.0.0/0 police rate 512kbit burst 1m drop flowid :1&lt;br /&gt;
&lt;br /&gt;
/sbin/tc qdisc add dev eth0 root handle 1: cbq avpkt 1000 bandwidth 20mbit &lt;br /&gt;
/sbin/tc class add dev eth0 parent 1: classid 1:1 cbq rate 512kbit allot 1500 prio 1 bounded isolated &lt;br /&gt;
/sbin/tc class add dev eth0 parent 1: classid 1:2 cbq rate 512kbit allot 1500 prio 2 bounded isolated&lt;br /&gt;
/sbin/tc class add dev eth0 parent 1: classid 1:3 cbq rate 512kbit allot 1500 prio 3 bounded isolated&lt;br /&gt;
/sbin/tc filter add dev eth0 parent 1: protocol ip prio 16 u32 match ip protocol 1 0xff flowid 1:1&lt;br /&gt;
/sbin/tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip sport 80 0xffff flowid 1:2&lt;br /&gt;
/sbin/tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip sport 22 0xffff flowid 1:3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GW6-1204 ==&lt;br /&gt;
* IEC104: Respond to message sent to broadcast ASDU (0xFFFF)&lt;br /&gt;
* IEC-62056: mask incoming data with 0x7F (ASCII protocol)&lt;br /&gt;
* Serial ports: Suppress echo&lt;br /&gt;
* WebPage: Long awaited by all interenet browsers the favicon.ico&lt;br /&gt;
&lt;br /&gt;
==GW6-1202 ==&lt;br /&gt;
* IEC104: Fix possible event loss on ethernet cable removal.&lt;br /&gt;
* Formula: Do not generate control event, on first successful calculation.&lt;br /&gt;
==GW6-1200 ==&lt;br /&gt;
*Firmware version readable through internal &#039;&#039;&#039;WebServer&#039;&#039;&#039;&lt;br /&gt;
*Fix possible event loss when lots of changes arrive for one input.&lt;br /&gt;
*GPRS-modem protocol: if connection to internet is lost, all &#039;&#039;&#039;TCP client connections&#039;&#039;&#039; are closed&lt;br /&gt;
*IEC104: force &#039;&#039;&#039;long-time format&#039;&#039;&#039;&lt;br /&gt;
==GW6-1198==&lt;br /&gt;
*IEC101/103 Unbalanced Master: add feature &#039;&#039;polling delay&#039;&#039;&lt;br /&gt;
*When sending a &#039;&#039;&#039;control operation&#039;&#039;&#039; over IEC103 channel with many devices. Speed up receiving of control response.&lt;br /&gt;
==GW6-1196==&lt;br /&gt;
*Connection loss with RTC-board does not result in watchdog reset.&lt;br /&gt;
**Symptoms: device will reset after 20 seconds of running.&lt;br /&gt;
*Device will write &#039;&#039;&#039;system boot count&#039;&#039;&#039; and &#039;&#039;&#039;application start count&#039;&#039;&#039; to &#039;&#039;console.log&#039;&#039;. Latest values can be found in &#039;&#039;&#039;/var/local/telem/stats&#039;&#039;&#039;&lt;br /&gt;
==RTA-A-1192==&lt;br /&gt;
* RTA-A: possible to define &#039;&#039;&#039;DO object&#039;&#039;&#039; to &#039;&#039;&#039;clear annunciator LED&#039;&#039;&#039; &#039;s&lt;br /&gt;
* Modbus Master: Fix receiving of negative 16bit normalized values.&lt;br /&gt;
==GW6-1190==&lt;br /&gt;
* Added new update pack type &#039;&#039;&#039;app-only&#039;&#039;&#039;.&lt;br /&gt;
** Note: This update pack type should only be used on device with SW version 1190 or later.&lt;br /&gt;
** This update will not overwrite system files - less chance for bricking if something goes wrong (accidental power loss or reset).&lt;br /&gt;
* Generate &#039;&#039;&#039;/etc/network/interfaces&#039;&#039;&#039; file once after receiving &#039;&#039;new setup&#039;&#039;.&lt;br /&gt;
* New protocol type &#039;&#039;&#039;IEC ^ Setup&#039;&#039;&#039;&lt;br /&gt;
** Only reading and writing of device setup is allowed on this Port.&lt;br /&gt;
** Allows faster booting of device with a lot of unused Up-channel ports.&lt;/div&gt;</summary>
		<author><name>Janek</name></author>
	</entry>
	<entry>
		<id>https://phobos.martem.ee/w/index.php?title=GwLin_Changelog&amp;diff=2160</id>
		<title>GwLin Changelog</title>
		<link rel="alternate" type="text/html" href="https://phobos.martem.ee/w/index.php?title=GwLin_Changelog&amp;diff=2160"/>
		<updated>2017-10-30T13:31:33Z</updated>

		<summary type="html">&lt;p&gt;Janek: /* Latest Firmware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= TELEM-GW6e, TELEM-GWM53 and TELEM-GWM25 =&lt;br /&gt;
&lt;br /&gt;
== Latest Firmware ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 5px; margin: 0.50em 0; background-color: #FFDDDD; border: thin solid #DDBBBB; overflow: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039;&lt;br /&gt;
* Downgrading firmware has never been supported.&lt;br /&gt;
* It is possible to downgrade, but there are no guarantees.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== kernel 4: ===&lt;br /&gt;
&lt;br /&gt;
Telem-GWM-VMX25: 2017.09.26-linux_4-05-50ff00d&lt;br /&gt;
&lt;br /&gt;
Telem-GWM-VMX53: 2017.09.26-linux_4-05-50ff00d&lt;br /&gt;
&lt;br /&gt;
Telem-GW6e-VMX53: 2017.09.26-linux_4-05-50ff00d&lt;br /&gt;
&lt;br /&gt;
Telem-GW6e-TX6UL: 2017.09.26-linux_4-05-50ff00d&lt;br /&gt;
&lt;br /&gt;
Telem-GWM-TX6DL: 2017.09.26-linux_4-05-50ff00d&lt;br /&gt;
&lt;br /&gt;
Telem-GW6e-TX6DL: 2017.09.26-linux_4-05-50ff00d&lt;br /&gt;
&lt;br /&gt;
Telem-GWM-TX6QP: N/A&lt;br /&gt;
&lt;br /&gt;
Telem-GW6e-TX6QP: N/A&lt;br /&gt;
&lt;br /&gt;
=== kernel 2: ===&lt;br /&gt;
&lt;br /&gt;
Telem-GWM25: 2017.09.26-next-03-c81082e&lt;br /&gt;
&lt;br /&gt;
Telem-GWM53: 2017.09.26-next-03-c81082e&lt;br /&gt;
&lt;br /&gt;
Telem-GW6e: 2017.09.26-next-03-c81082e&lt;br /&gt;
&lt;br /&gt;
== Milestones ==&lt;br /&gt;
* DNP3&lt;br /&gt;
&lt;br /&gt;
== telem-app Changelog since 2013 ==&lt;br /&gt;
* 2017.09.26-next-03-c81082e / 2017.09.26-linux_4-05-50ff00d (GWS 2079)&lt;br /&gt;
: &#039;&#039;&#039;HOTFIX&#039;&#039;&#039; IEC DO_FN | Fix: SCADA did not receive command status responses if DO_FN object configured for IED [https://phobos.martem.ee/redmine/issues/2877 #2871]&lt;br /&gt;
* 2017.09.20-next-01-b162ac5 / 2017.09.20-linux_4-02-2436894 (GWS 2079)&lt;br /&gt;
: Modbus | Polling sequence fix (AI was polled less) [https://phobos.martem.ee/redmine/issues/2871 #2871]&lt;br /&gt;
: Modbus | Communication on port stalls if any device has no valid objects [https://phobos.martem.ee/redmine/issues/2873 #2873]&lt;br /&gt;
* 2017.09.13-next-01-800b844 / 2017.09.13-linux_4-feature-integral-expression-01-930dddd (GWS 2079)&lt;br /&gt;
: Modbus | fix AO scaling [https://phobos.martem.ee/redmine/issues/2807 #2807]&lt;br /&gt;
* 2017.09.11-linux_4-01-7ee57df (GWS 2079)&lt;br /&gt;
: Telem Master | support 18 (was 17) CMD address&lt;br /&gt;
: Formula | AI Formula -&amp;gt; AO CMD fix&lt;br /&gt;
* 2017.08.08 (GWS 2079)&lt;br /&gt;
: WebServer | Correctly set persistant pages&lt;br /&gt;
: WebServer | Fix user credentials&lt;br /&gt;
: GWM IO-Board IFR feature [https://phobos.martem.ee/redmine/issues/2841 #2841]&lt;br /&gt;
: Modbus | Fix polling delay [https://phobos.martem.ee/redmine/issues/2839 #2839]&lt;br /&gt;
: WebServer | fix sprintf buffer size&lt;br /&gt;
: Channel | Channel optimisations&lt;br /&gt;
: Core | Fix thread pool manager (TaskIoBase)&lt;br /&gt;
: WebServer | replace deprecated functions&lt;br /&gt;
: IEC | add DST bit functionality [https://phobos.martem.ee/redmine/issues/2833 #2833]&lt;br /&gt;
* 2017.06.09-next-01-353984f (GWS 2079)&lt;br /&gt;
: Reset 2 Clear Buffers fix [https://phobos.martem.ee/redmine/issues/2814 #2814]&lt;br /&gt;
* 2017.04.17-next-08-af772c0&lt;br /&gt;
: Logging | Buffered logging&lt;br /&gt;
* 2017.04.05-next-07-65a2e5a&lt;br /&gt;
: SPA-Bus | Timesync: send 3x short ts and 3x long ts&lt;br /&gt;
* 2017.04.03-next-01-557bc40&lt;br /&gt;
: Core | Fix spontaneous events after GI on initial successful lower lever device initialisation ([https://phobos.martem.ee/redmine/issues/2793 #2793])&lt;br /&gt;
: Core | Refix sending reset cmds from TDC&lt;br /&gt;
* 2017.03.21-next-03-b5cc1d0&lt;br /&gt;
: Optimisation (Webserver) | Avoid websocket connection duplicates&lt;br /&gt;
: Optimisation (app close) | make WebSocketAppender thread safe&lt;br /&gt;
: Optimisation (app close) | fix numerous potential places that cause segfault on app close&lt;br /&gt;
: Build | build with latest GNU compilers (v 6).&lt;br /&gt;
: IEC60870 | IEC103 events without timetag fix&lt;br /&gt;
: Formula | fix Formula output controller trying to execute DO CMD until it succeeds.&lt;br /&gt;
: Formula | fix Formula when using another formula object as argument, that is further down the list in GWS ([https://phobos.martem.ee/redmine/issues/2794 #2794])&lt;br /&gt;
* 2017.01.31-next-01-3eefdf3&lt;br /&gt;
: Optimisation | all telem-app optimisations merge&lt;br /&gt;
: IEC60870 | fix control state conatiner in IEC 101 for GWM with IO board&lt;br /&gt;
: Protocol | control state logger improved logs&lt;br /&gt;
* 2016.12.02-next-01-a502dae &#039;&#039;&#039;Don&#039;t use on VMX25&#039;&#039;&#039; &#039;&#039;&#039;Don&#039;t use on GWM with DO&#039;&#039;&#039;&lt;br /&gt;
: SPA-Bus | ABB SPAC330C feature&lt;br /&gt;
: IEC61850 | 101 support multiple DO with same v-addresses (multiple rows with same v-addresses)&lt;br /&gt;
* 2016.11.23-next-01-0260688 &#039;&#039;&#039;Don&#039;t use on VMX25&#039;&#039;&#039; &#039;&#039;&#039;Don&#039;t use on GWM with DO&#039;&#039;&#039;&lt;br /&gt;
: IEC61850 | 103 support multiple DO with same v-addresses (multiple rows with same v-addresses)&lt;br /&gt;
* 2016.11.15-next-02-b43c191 &#039;&#039;&#039;Don&#039;t use on VMX25&#039;&#039;&#039; &#039;&#039;&#039;Don&#039;t use on GWM with DO&#039;&#039;&#039;&lt;br /&gt;
: Localization | Change non-ASCII characters to * in Port and Device commments ([https://phobos.martem.ee/redmine/issues/2751 #2751])&lt;br /&gt;
* 2016.11.15-next-01-5dc3aa7 &#039;&#039;&#039;Don&#039;t use on VMX25&#039;&#039;&#039; &#039;&#039;&#039;Don&#039;t use on GWM with DO&#039;&#039;&#039;&lt;br /&gt;
: IEC61850 | 104 event loss after disconnect fix ([https://phobos.martem.ee/redmine/issues/2725 #2725])&lt;br /&gt;
* 2016.11.04-next-02-3a9808a &#039;&#039;&#039;Don&#039;t use on VMX25&#039;&#039;&#039; &#039;&#039;&#039;Don&#039;t use on GWM with DO&#039;&#039;&#039;&lt;br /&gt;
: Database | Set object flags to Invalid instead of NotTopical on startup&lt;br /&gt;
: SPA-Bus | objects not going not topical on Timeout fix&lt;br /&gt;
: SPA-Bus | potential segfault fix&lt;br /&gt;
* 2016.10.08-next-01-c91481f&lt;br /&gt;
: IEC-101,104 | GI Switch per object (requires GWS 6.1.0.2068+)&lt;br /&gt;
: IEC-101,104 | DO can have 2 downstream addresses (like 1/2)&lt;br /&gt;
* 2016.10.05-next-06-bb13408&lt;br /&gt;
: Protocol | Remove event sorting by time when sending to upstream &#039;&#039;&#039;Retract 2016.09.19-next-01-c0127ec additions&#039;&#039;&#039;&lt;br /&gt;
: Protocol | upstream events faster&lt;br /&gt;
: IEC-103 | Micom workarounds&lt;br /&gt;
* 2016.10.03-next-02-1cb7e5f&lt;br /&gt;
: Protocol | time sync interval from XML implementation&lt;br /&gt;
: SPA-Bus | fix event time is it is assumed that event came before last minut change&lt;br /&gt;
: SPA-Bus | request L, then poll once and change device&lt;br /&gt;
: SPA-Bus | delay next device for 50ms after timesync&lt;br /&gt;
* 2016.09.26-next-01-91e178f&lt;br /&gt;
: SPA-Bus | Scaling fix ([https://phobos.martem.ee/redmine/issues/2689 #2689])&lt;br /&gt;
: Logging | raw port log in ASCII&lt;br /&gt;
* 2016.09.23-next-01-00fde37 ([https://phobos.martem.ee/redmine/issues/2721 #2721])&lt;br /&gt;
: SPA-Bus | event can have effect on multiple objects&lt;br /&gt;
* 2016.09.19-next-01-c0127ec ([https://phobos.martem.ee/redmine/issues/2693 #2693])&lt;br /&gt;
: Protocol | Events are sent upstream in order of the lowest timetag &#039;&#039;&#039;Retracted in 2016.10.05-next-06-bb13408&#039;&#039;&#039;&lt;br /&gt;
* 2016.09.08-next-01-526b387 &lt;br /&gt;
: IEC | fix IEC 101 UB variable length frame bigger than 255 issue&lt;br /&gt;
: Formula | fix double masking in fomrula ???&lt;br /&gt;
* 2016 year device fw and GWS 6.1.0.2064&lt;br /&gt;
: NoMainLog for formula&lt;br /&gt;
* 2016.08.25-next-03-b45984d&lt;br /&gt;
: Modbus | ai_bit DI type&lt;br /&gt;
: Modbus | DO: define ON and OFF address in the same cell&lt;br /&gt;
: improved logging&lt;br /&gt;
: SPA-Bus | poll all&lt;br /&gt;
* 2016.08.23-next-01-d702b81&lt;br /&gt;
: Logging | fine tuned device initialization logging. Old device oriented (GW6, RTA)&lt;br /&gt;
: fix DO Inversion bug ([https://phobos.martem.ee/redmine/issues/2702 #2702])&lt;br /&gt;
* 2016.05.11-next-02-e02304a&lt;br /&gt;
:SPA-Bus | minor fixes for rare nack and timeout cases&lt;br /&gt;
:SPA-Bus | commented out object sorting&lt;br /&gt;
* 2016.05.04-next-01-64e4492&lt;br /&gt;
:SPA-Bus | protocol subtype for ABB ref542&lt;br /&gt;
:SPA-Bus | poll L messages after 5 object poll requests&lt;br /&gt;
:SPA-Bus | mode 1 implementation: poll multiple objects in one request ([https://phobos.martem.ee/redmine/issues/2635 #2635])&lt;br /&gt;
:SPA-Bus | DO: define ON and OFF address in the same cell &lt;br /&gt;
:SPA-Bus | channel number definable for every event number ([https://phobos.martem.ee/redmine/issues/2637 #2637])&lt;br /&gt;
:SPA-Bus | event numbers for Intermediate and Error states&lt;br /&gt;
:SPA-Bus | fallback fixes ([https://phobos.martem.ee/redmine/issues/2658 #2658])&lt;br /&gt;
:SPA-Bus | switch between devices on same port after L message&lt;br /&gt;
:SPA-Bus | define incoming DI object type (Dobule/Single) ([https://phobos.martem.ee/redmine/issues/2654 #2654])&lt;br /&gt;
:SD card licence implementation ([https://phobos.martem.ee/redmine/issues/2592 #2592])&lt;br /&gt;
:remove non ASCII characters from object comment ([https://phobos.martem.ee/redmine/issues/2577 #2577])&lt;br /&gt;
*[22.03.2016]&lt;br /&gt;
:1-wire segfault on bing temp. change fix ([https://phobos.martem.ee/redmine/issues/2640 #2640])&lt;br /&gt;
*[11.03.2016]&lt;br /&gt;
:IEC-104 object type priorities fix. Big amounts of AI data prevented DI events propagation. ([https://phobos.martem.ee/redmine/issues/2625 #2625])&lt;br /&gt;
*[23.02.2016]&lt;br /&gt;
:webserver v2 IE11 not working fix&lt;br /&gt;
*[10.02.2016]&lt;br /&gt;
:NEW_DATABASE formulas numerous fixes&lt;br /&gt;
:ADDED LIB TO PROJECT: fastformat&lt;br /&gt;
:logging optimizations using fastformat. VMX25 up to 10x faster&lt;br /&gt;
*[16.12.2015]&lt;br /&gt;
:license additions to support no modem GWM ([https://phobos.martem.ee/redmine/issues/2565 #2565])&lt;br /&gt;
*[17.11.2015]&lt;br /&gt;
:longer interval for some tasks&lt;br /&gt;
:SyncDatabaseToFile 2s-&amp;gt;5s&lt;br /&gt;
:ProcessRetranslation 10ms-&amp;gt;500ms&lt;br /&gt;
:explicitly sync db backup to non-volatile memory only on reset/low-power.&lt;br /&gt;
*[06.11.2015]&lt;br /&gt;
:IEC-101/104 QOC (Qualifier of command) implementation ([https://phobos.martem.ee/redmine/issues/2495 #2495])&lt;br /&gt;
*[05.11.2015]&lt;br /&gt;
:AI scaling rewrite &#039;&#039;&#039;(COMPATIBILITY BREAK)&#039;&#039;&#039;&lt;br /&gt;
:virtual I/O object pair crash app if invalid address fix ([https://phobos.martem.ee/redmine/issues/2572 #2572])&lt;br /&gt;
*[30.10.2015]&lt;br /&gt;
:web-server v2 shows device eth info ([https://phobos.martem.ee/redmine/issues/2532 #2532])&lt;br /&gt;
*[16.10.2015]&lt;br /&gt;
:fix SPA-Bus polling delay ([https://phobos.martem.ee/redmine/issues/2546 #2546])&lt;br /&gt;
*[14.10.2015]&lt;br /&gt;
:IEC DO_FN | IEC101/104 type 105 C_RP_NA_1 (reset process) implementation ([https://phobos.martem.ee/redmine/issues/2498 #2498])&lt;br /&gt;
:IEC DO_FN | IEC101/104 GI command via DO implementation ([https://phobos.martem.ee/redmine/issues/2499 #2499])&lt;br /&gt;
*[13.10.2015]&lt;br /&gt;
:zero value deadband implementation ([https://phobos.martem.ee/redmine/issues/2536 #2536])&lt;br /&gt;
*[24.09.2015]&lt;br /&gt;
:DO/AO stops IEC-101 messages fix for devices using old database ([https://phobos.martem.ee/redmine/issues/2527 #2527])&lt;br /&gt;
:allow bigger conf size for NEW_DATABASE devices&lt;br /&gt;
:SETUP_WITH_XML_BIN_SIZE 500KB-&amp;gt;1.5MB&lt;br /&gt;
:EXTRACTED_XML_SETUP_SIZE 6MB-&amp;gt;20MB&lt;br /&gt;
*[07.09.2015]&lt;br /&gt;
:GWM IO-board + 101-104 conversion not working fix ([https://phobos.martem.ee/redmine/issues/2520 #2520])&lt;br /&gt;
*[25.08.2015]&lt;br /&gt;
:IEC-61850 mem-leak/consumption fixes&lt;br /&gt;
:remove BIT_INVALID_TIME from BIT_VALUE_CHANGED_MASK&lt;br /&gt;
*[22.08.2015]&lt;br /&gt;
:devie booting time nnX times faster ([https://phobos.martem.ee/redmine/issues/2472 #2472])&lt;br /&gt;
&lt;br /&gt;
== kernel 4 Changelog since 2017 ==&lt;br /&gt;
*2017.08.22&lt;br /&gt;
: fix GW DNS service&lt;br /&gt;
*2017.02.10&lt;br /&gt;
: fix sftp access&lt;br /&gt;
: fix configuring SSH from GWS&lt;br /&gt;
&lt;br /&gt;
== kernel 2 Changelog since 2013 ==&lt;br /&gt;
* 2017.07.12&lt;br /&gt;
: log4cxx | patch for socket appender&lt;br /&gt;
: pack_logs | pack modem history log&lt;br /&gt;
: init | fix spamming logs (S48, S61m S99)&lt;br /&gt;
: fw_update | fix errors on fw update (S12usb)&lt;br /&gt;
: init | fix spamming logs on stop (S37)&lt;br /&gt;
: modem | fix handling huawei modems&lt;br /&gt;
: WebServer | Restore syslog options&lt;br /&gt;
* 2017.04.17-next-08-af772c0&lt;br /&gt;
: update | Additional checks in post-update scripts for GWM rev.1 FTDI IO Board&lt;br /&gt;
* 2017.04.05-next-07-65a2e5a&lt;br /&gt;
: pack_logs now packs all existing console logs and eeprom log if exists&lt;br /&gt;
* 2017.04.03-next-03-49423a0&lt;br /&gt;
: fix enabling peripheral power on startup with usbs suspended (fixes old GWM53 FTDI IO Board)&lt;br /&gt;
* 2017.01.31-next-01-3eefdf3&lt;br /&gt;
: remove cifs support from vmx25 kernel. No more space left on device.&lt;br /&gt;
* 2016.11.04-next-01-51a8c40 &#039;&#039;&#039;Don&#039;t use on VMX25&#039;&#039;&#039; &#039;&#039;&#039;Don&#039;t use on GWM with DO&#039;&#039;&#039;&lt;br /&gt;
: IEC-101,104 | DO invert fix sending ACK with inverted address&lt;br /&gt;
: init | S99phy fix toggling LAN power and wait longer&lt;br /&gt;
: init | fix starting modem then date is in the start of epoch (1970)&lt;br /&gt;
: init | Script fixes for fresh device with linux default time&lt;br /&gt;
* 2016.10.19-next-09-3e89e79 &#039;&#039;&#039;Don&#039;t use on VMX25&#039;&#039;&#039; &#039;&#039;&#039;Don&#039;t use on GWM with DO&#039;&#039;&#039;&lt;br /&gt;
: CIFS support in kernel for network mounts &#039;&#039;&#039;!! This change bricks VMX25. Removed from VMX25 after 30.01.2017&#039;&#039;&#039;&lt;br /&gt;
* 2016.10.08-next-01-c91481f&lt;br /&gt;
: init | optimizations for FTDI eeprom software&lt;br /&gt;
: init | getwdbootmsg fixes&lt;br /&gt;
: init | major refactoring. Performance &amp;amp; readability fixes&lt;br /&gt;
* 2016.10.03-next-02-1cb7e5f&lt;br /&gt;
: Syslog | Add possibility to change loglevel and remote server port&lt;br /&gt;
: ntp | do not restart ntp if only gps is configured (2711)&lt;br /&gt;
: ntp | avoid frequent ntp restarts by other scripts&lt;br /&gt;
: modem | avoid frequent modem restart by multiple scripts (only 1 restart allowed per one minute).&lt;br /&gt;
: modem | rewrite telit modem reseting as described in telit manual&lt;br /&gt;
: init | fix socat sometimes creating /dev/tty* as ordinary file instead of letting modem driver to do it.&lt;br /&gt;
: init | performance fixes&lt;br /&gt;
* 2016.07.28-next-06-3d426af&lt;br /&gt;
:Device CPU frequency lowered from 1.2GHz to 1.0GHz | Improved ssh key generation and license cheking&lt;br /&gt;
*[11.02.2016]&lt;br /&gt;
:physical interface checker script implementation&lt;br /&gt;
*[10.02.2016]&lt;br /&gt;
:ADDED LIB TO PROJECT: fastformat&lt;br /&gt;
*[26.01.2016]&lt;br /&gt;
:GWS &#039;Get logs&#039; acquires n+1 more rotating logs&lt;br /&gt;
*[23.07.2015]&lt;br /&gt;
:ADDED LIB TO PROJECT: boost_chrono to source.pro (websocketpp 0.6.0 depends)&lt;br /&gt;
*[08.06.2015]&lt;br /&gt;
:application segmentation fault fix (2429)&lt;br /&gt;
*[27.04.2015]&lt;br /&gt;
:DI fallback bug fix (2312)&lt;br /&gt;
*[23.04.2015]&lt;br /&gt;
:DI object double inversion bug fix (2345)&lt;br /&gt;
*[21.04.2015]&lt;br /&gt;
:no flags not working fix (2194)&lt;br /&gt;
*[24.03.2015]&lt;br /&gt;
:Periodical GI implementation for all protocols (every 5th minute of hour)&lt;br /&gt;
*[16.03.2015]&lt;br /&gt;
:Telem Master protocol implementation&lt;br /&gt;
*[29.01.2015]&lt;br /&gt;
:IEC-10x ASDU transfer implementation&lt;br /&gt;
*[30.10.2014]&lt;br /&gt;
:IEC-101B serial communication improvements&lt;br /&gt;
*[23.10.2014]&lt;br /&gt;
:No main/CSV log for individual objects&lt;br /&gt;
*2014.01.13-next-01-2a5df30&lt;br /&gt;
:added uINT16 (unsigned 16bit integer) in modbus protocol. (also update gws)&lt;br /&gt;
*2014.01.09-next-01-2fae2d9&lt;br /&gt;
:fix IEC104 bug in GW6&lt;br /&gt;
*2014.01.07-next-01-8180155&lt;br /&gt;
:fix fallback (GW6e and GWM), &amp;quot;NONE&amp;quot; protocol, device &amp;quot;in use&amp;quot;=no, FP-to-normalised conversion, deadband issues, IEC104 bug in GW6e. (also update gws)&lt;br /&gt;
*2013.11.18-next-04&lt;br /&gt;
:fix IEC-104 bug (mark data as NT if connection to IEC-104 slave is lost and parameter &amp;quot;failed query count for disabling contr.&amp;quot; &amp;gt; 1)&lt;br /&gt;
*2013.11.12-next01&lt;br /&gt;
:fix AO feedback bug in GW6 and RTA-A&lt;br /&gt;
*2013.11.04-next    &lt;br /&gt;
:time invalid flag for GW6 and RTA-A (also requires DSP/RTC software update!)&lt;br /&gt;
*2013.10.24-next    &lt;br /&gt;
:IEC101-to-IEC104 short time to long time conversion&lt;br /&gt;
*2013.09.16-next07  &lt;br /&gt;
:configurable COT=2 Bytes for IEC101b&lt;br /&gt;
*2013.09.09-next01  &lt;br /&gt;
:configurable COT=2 Bytes for IEC101ub&lt;br /&gt;
*2013.07.12-next02  &lt;br /&gt;
:write modem status to /var/log/modem.st&lt;br /&gt;
&lt;br /&gt;
= Old Devices RTA-A and GW6 =&lt;br /&gt;
&lt;br /&gt;
== Latest Firmware ==&lt;br /&gt;
&lt;br /&gt;
Last fw version GW6: 2015.12.11-develop-01-104a492&lt;br /&gt;
&lt;br /&gt;
Last fw version RTA-A M502: 2015.12.11-develop-01-104a492&lt;br /&gt;
&lt;br /&gt;
Last fw version RTA-A M501: 2015.12.11-develop-01-104a492&lt;br /&gt;
&lt;br /&gt;
==GW6-1206 ==&lt;br /&gt;
* Timezones for ports and system.&lt;br /&gt;
===Userland ===&lt;br /&gt;
* dnsmasq&lt;br /&gt;
* iperf&lt;br /&gt;
===Kernel ===&lt;br /&gt;
* iptables: Support for -m limit. For instance:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 /usr/sbin/iptables -t filter -A INPUT -p tcp --dport 2404 --sport 1024:65535 -m state --state NEW -m limit --limit 25/minute --limit-burst 100 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* tc: Basic support.  For instance:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/sbin/tc qdisc del dev eth0 root    2&amp;gt; /dev/null &amp;gt; /dev/null&lt;br /&gt;
/sbin/tc qdisc del dev eth0 ingress 2&amp;gt; /dev/null &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
/sbin/tc qdisc add dev eth0 handle ffff: ingress&lt;br /&gt;
/sbin/tc filter add dev eth0 parent ffff: protocol ip prio 1 u32 match ip src 0.0.0.0/0 police rate 512kbit burst 1m drop flowid :1&lt;br /&gt;
&lt;br /&gt;
/sbin/tc qdisc add dev eth0 root handle 1: cbq avpkt 1000 bandwidth 20mbit &lt;br /&gt;
/sbin/tc class add dev eth0 parent 1: classid 1:1 cbq rate 512kbit allot 1500 prio 1 bounded isolated &lt;br /&gt;
/sbin/tc class add dev eth0 parent 1: classid 1:2 cbq rate 512kbit allot 1500 prio 2 bounded isolated&lt;br /&gt;
/sbin/tc class add dev eth0 parent 1: classid 1:3 cbq rate 512kbit allot 1500 prio 3 bounded isolated&lt;br /&gt;
/sbin/tc filter add dev eth0 parent 1: protocol ip prio 16 u32 match ip protocol 1 0xff flowid 1:1&lt;br /&gt;
/sbin/tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip sport 80 0xffff flowid 1:2&lt;br /&gt;
/sbin/tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip sport 22 0xffff flowid 1:3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GW6-1204 ==&lt;br /&gt;
* IEC104: Respond to message sent to broadcast ASDU (0xFFFF)&lt;br /&gt;
* IEC-62056: mask incoming data with 0x7F (ASCII protocol)&lt;br /&gt;
* Serial ports: Suppress echo&lt;br /&gt;
* WebPage: Long awaited by all interenet browsers the favicon.ico&lt;br /&gt;
&lt;br /&gt;
==GW6-1202 ==&lt;br /&gt;
* IEC104: Fix possible event loss on ethernet cable removal.&lt;br /&gt;
* Formula: Do not generate control event, on first successful calculation.&lt;br /&gt;
==GW6-1200 ==&lt;br /&gt;
*Firmware version readable through internal &#039;&#039;&#039;WebServer&#039;&#039;&#039;&lt;br /&gt;
*Fix possible event loss when lots of changes arrive for one input.&lt;br /&gt;
*GPRS-modem protocol: if connection to internet is lost, all &#039;&#039;&#039;TCP client connections&#039;&#039;&#039; are closed&lt;br /&gt;
*IEC104: force &#039;&#039;&#039;long-time format&#039;&#039;&#039;&lt;br /&gt;
==GW6-1198==&lt;br /&gt;
*IEC101/103 Unbalanced Master: add feature &#039;&#039;polling delay&#039;&#039;&lt;br /&gt;
*When sending a &#039;&#039;&#039;control operation&#039;&#039;&#039; over IEC103 channel with many devices. Speed up receiving of control response.&lt;br /&gt;
==GW6-1196==&lt;br /&gt;
*Connection loss with RTC-board does not result in watchdog reset.&lt;br /&gt;
**Symptoms: device will reset after 20 seconds of running.&lt;br /&gt;
*Device will write &#039;&#039;&#039;system boot count&#039;&#039;&#039; and &#039;&#039;&#039;application start count&#039;&#039;&#039; to &#039;&#039;console.log&#039;&#039;. Latest values can be found in &#039;&#039;&#039;/var/local/telem/stats&#039;&#039;&#039;&lt;br /&gt;
==RTA-A-1192==&lt;br /&gt;
* RTA-A: possible to define &#039;&#039;&#039;DO object&#039;&#039;&#039; to &#039;&#039;&#039;clear annunciator LED&#039;&#039;&#039; &#039;s&lt;br /&gt;
* Modbus Master: Fix receiving of negative 16bit normalized values.&lt;br /&gt;
==GW6-1190==&lt;br /&gt;
* Added new update pack type &#039;&#039;&#039;app-only&#039;&#039;&#039;.&lt;br /&gt;
** Note: This update pack type should only be used on device with SW version 1190 or later.&lt;br /&gt;
** This update will not overwrite system files - less chance for bricking if something goes wrong (accidental power loss or reset).&lt;br /&gt;
* Generate &#039;&#039;&#039;/etc/network/interfaces&#039;&#039;&#039; file once after receiving &#039;&#039;new setup&#039;&#039;.&lt;br /&gt;
* New protocol type &#039;&#039;&#039;IEC ^ Setup&#039;&#039;&#039;&lt;br /&gt;
** Only reading and writing of device setup is allowed on this Port.&lt;br /&gt;
** Allows faster booting of device with a lot of unused Up-channel ports.&lt;/div&gt;</summary>
		<author><name>Janek</name></author>
	</entry>
	<entry>
		<id>https://phobos.martem.ee/w/index.php?title=GwLin_Changelog&amp;diff=2159</id>
		<title>GwLin Changelog</title>
		<link rel="alternate" type="text/html" href="https://phobos.martem.ee/w/index.php?title=GwLin_Changelog&amp;diff=2159"/>
		<updated>2017-10-16T09:54:18Z</updated>

		<summary type="html">&lt;p&gt;Janek: /* kernel 4 Changelog since 2017 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= TELEM-GW6e, TELEM-GWM53 and TELEM-GWM25 =&lt;br /&gt;
&lt;br /&gt;
== Latest Firmware ==&lt;br /&gt;
&lt;br /&gt;
=== kernel 4: ===&lt;br /&gt;
&lt;br /&gt;
Telem-GWM-VMX25: 2017.09.26-linux_4-05-50ff00d&lt;br /&gt;
&lt;br /&gt;
Telem-GWM-VMX53: 2017.09.26-linux_4-05-50ff00d&lt;br /&gt;
&lt;br /&gt;
Telem-GW6e-VMX53: 2017.09.26-linux_4-05-50ff00d&lt;br /&gt;
&lt;br /&gt;
Telem-GW6e-TX6UL: 2017.09.26-linux_4-05-50ff00d&lt;br /&gt;
&lt;br /&gt;
Telem-GWM-TX6DL: 2017.09.26-linux_4-05-50ff00d&lt;br /&gt;
&lt;br /&gt;
Telem-GW6e-TX6DL: 2017.09.26-linux_4-05-50ff00d&lt;br /&gt;
&lt;br /&gt;
Telem-GWM-TX6QP: N/A&lt;br /&gt;
&lt;br /&gt;
Telem-GW6e-TX6QP: N/A&lt;br /&gt;
&lt;br /&gt;
=== kernel 2: ===&lt;br /&gt;
&lt;br /&gt;
Telem-GWM25: 2017.09.26-next-03-c81082e&lt;br /&gt;
&lt;br /&gt;
Telem-GWM53: 2017.09.26-next-03-c81082e&lt;br /&gt;
&lt;br /&gt;
Telem-GW6e: 2017.09.26-next-03-c81082e&lt;br /&gt;
&lt;br /&gt;
== Milestones ==&lt;br /&gt;
* DNP3&lt;br /&gt;
&lt;br /&gt;
== telem-app Changelog since 2013 ==&lt;br /&gt;
* 2017.09.26-next-03-c81082e / 2017.09.26-linux_4-05-50ff00d (GWS 2079)&lt;br /&gt;
: &#039;&#039;&#039;HOTFIX&#039;&#039;&#039; IEC DO_FN | Fix: SCADA did not receive command status responses if DO_FN object configured for IED [https://phobos.martem.ee/redmine/issues/2877 #2871]&lt;br /&gt;
* 2017.09.20-next-01-b162ac5 / 2017.09.20-linux_4-02-2436894 (GWS 2079)&lt;br /&gt;
: Modbus | Polling sequence fix (AI was polled less) [https://phobos.martem.ee/redmine/issues/2871 #2871]&lt;br /&gt;
: Modbus | Communication on port stalls if any device has no valid objects [https://phobos.martem.ee/redmine/issues/2873 #2873]&lt;br /&gt;
* 2017.09.13-next-01-800b844 / 2017.09.13-linux_4-feature-integral-expression-01-930dddd (GWS 2079)&lt;br /&gt;
: Modbus | fix AO scaling [https://phobos.martem.ee/redmine/issues/2807 #2807]&lt;br /&gt;
* 2017.09.11-linux_4-01-7ee57df (GWS 2079)&lt;br /&gt;
: Telem Master | support 18 (was 17) CMD address&lt;br /&gt;
: Formula | AI Formula -&amp;gt; AO CMD fix&lt;br /&gt;
* 2017.08.08 (GWS 2079)&lt;br /&gt;
: WebServer | Correctly set persistant pages&lt;br /&gt;
: WebServer | Fix user credentials&lt;br /&gt;
: GWM IO-Board IFR feature [https://phobos.martem.ee/redmine/issues/2841 #2841]&lt;br /&gt;
: Modbus | Fix polling delay [https://phobos.martem.ee/redmine/issues/2839 #2839]&lt;br /&gt;
: WebServer | fix sprintf buffer size&lt;br /&gt;
: Channel | Channel optimisations&lt;br /&gt;
: Core | Fix thread pool manager (TaskIoBase)&lt;br /&gt;
: WebServer | replace deprecated functions&lt;br /&gt;
: IEC | add DST bit functionality [https://phobos.martem.ee/redmine/issues/2833 #2833]&lt;br /&gt;
* 2017.06.09-next-01-353984f (GWS 2079)&lt;br /&gt;
: Reset 2 Clear Buffers fix [https://phobos.martem.ee/redmine/issues/2814 #2814]&lt;br /&gt;
* 2017.04.17-next-08-af772c0&lt;br /&gt;
: Logging | Buffered logging&lt;br /&gt;
* 2017.04.05-next-07-65a2e5a&lt;br /&gt;
: SPA-Bus | Timesync: send 3x short ts and 3x long ts&lt;br /&gt;
* 2017.04.03-next-01-557bc40&lt;br /&gt;
: Core | Fix spontaneous events after GI on initial successful lower lever device initialisation ([https://phobos.martem.ee/redmine/issues/2793 #2793])&lt;br /&gt;
: Core | Refix sending reset cmds from TDC&lt;br /&gt;
* 2017.03.21-next-03-b5cc1d0&lt;br /&gt;
: Optimisation (Webserver) | Avoid websocket connection duplicates&lt;br /&gt;
: Optimisation (app close) | make WebSocketAppender thread safe&lt;br /&gt;
: Optimisation (app close) | fix numerous potential places that cause segfault on app close&lt;br /&gt;
: Build | build with latest GNU compilers (v 6).&lt;br /&gt;
: IEC60870 | IEC103 events without timetag fix&lt;br /&gt;
: Formula | fix Formula output controller trying to execute DO CMD until it succeeds.&lt;br /&gt;
: Formula | fix Formula when using another formula object as argument, that is further down the list in GWS ([https://phobos.martem.ee/redmine/issues/2794 #2794])&lt;br /&gt;
* 2017.01.31-next-01-3eefdf3&lt;br /&gt;
: Optimisation | all telem-app optimisations merge&lt;br /&gt;
: IEC60870 | fix control state conatiner in IEC 101 for GWM with IO board&lt;br /&gt;
: Protocol | control state logger improved logs&lt;br /&gt;
* 2016.12.02-next-01-a502dae &#039;&#039;&#039;Don&#039;t use on VMX25&#039;&#039;&#039; &#039;&#039;&#039;Don&#039;t use on GWM with DO&#039;&#039;&#039;&lt;br /&gt;
: SPA-Bus | ABB SPAC330C feature&lt;br /&gt;
: IEC61850 | 101 support multiple DO with same v-addresses (multiple rows with same v-addresses)&lt;br /&gt;
* 2016.11.23-next-01-0260688 &#039;&#039;&#039;Don&#039;t use on VMX25&#039;&#039;&#039; &#039;&#039;&#039;Don&#039;t use on GWM with DO&#039;&#039;&#039;&lt;br /&gt;
: IEC61850 | 103 support multiple DO with same v-addresses (multiple rows with same v-addresses)&lt;br /&gt;
* 2016.11.15-next-02-b43c191 &#039;&#039;&#039;Don&#039;t use on VMX25&#039;&#039;&#039; &#039;&#039;&#039;Don&#039;t use on GWM with DO&#039;&#039;&#039;&lt;br /&gt;
: Localization | Change non-ASCII characters to * in Port and Device commments ([https://phobos.martem.ee/redmine/issues/2751 #2751])&lt;br /&gt;
* 2016.11.15-next-01-5dc3aa7 &#039;&#039;&#039;Don&#039;t use on VMX25&#039;&#039;&#039; &#039;&#039;&#039;Don&#039;t use on GWM with DO&#039;&#039;&#039;&lt;br /&gt;
: IEC61850 | 104 event loss after disconnect fix ([https://phobos.martem.ee/redmine/issues/2725 #2725])&lt;br /&gt;
* 2016.11.04-next-02-3a9808a &#039;&#039;&#039;Don&#039;t use on VMX25&#039;&#039;&#039; &#039;&#039;&#039;Don&#039;t use on GWM with DO&#039;&#039;&#039;&lt;br /&gt;
: Database | Set object flags to Invalid instead of NotTopical on startup&lt;br /&gt;
: SPA-Bus | objects not going not topical on Timeout fix&lt;br /&gt;
: SPA-Bus | potential segfault fix&lt;br /&gt;
* 2016.10.08-next-01-c91481f&lt;br /&gt;
: IEC-101,104 | GI Switch per object (requires GWS 6.1.0.2068+)&lt;br /&gt;
: IEC-101,104 | DO can have 2 downstream addresses (like 1/2)&lt;br /&gt;
* 2016.10.05-next-06-bb13408&lt;br /&gt;
: Protocol | Remove event sorting by time when sending to upstream &#039;&#039;&#039;Retract 2016.09.19-next-01-c0127ec additions&#039;&#039;&#039;&lt;br /&gt;
: Protocol | upstream events faster&lt;br /&gt;
: IEC-103 | Micom workarounds&lt;br /&gt;
* 2016.10.03-next-02-1cb7e5f&lt;br /&gt;
: Protocol | time sync interval from XML implementation&lt;br /&gt;
: SPA-Bus | fix event time is it is assumed that event came before last minut change&lt;br /&gt;
: SPA-Bus | request L, then poll once and change device&lt;br /&gt;
: SPA-Bus | delay next device for 50ms after timesync&lt;br /&gt;
* 2016.09.26-next-01-91e178f&lt;br /&gt;
: SPA-Bus | Scaling fix ([https://phobos.martem.ee/redmine/issues/2689 #2689])&lt;br /&gt;
: Logging | raw port log in ASCII&lt;br /&gt;
* 2016.09.23-next-01-00fde37 ([https://phobos.martem.ee/redmine/issues/2721 #2721])&lt;br /&gt;
: SPA-Bus | event can have effect on multiple objects&lt;br /&gt;
* 2016.09.19-next-01-c0127ec ([https://phobos.martem.ee/redmine/issues/2693 #2693])&lt;br /&gt;
: Protocol | Events are sent upstream in order of the lowest timetag &#039;&#039;&#039;Retracted in 2016.10.05-next-06-bb13408&#039;&#039;&#039;&lt;br /&gt;
* 2016.09.08-next-01-526b387 &lt;br /&gt;
: IEC | fix IEC 101 UB variable length frame bigger than 255 issue&lt;br /&gt;
: Formula | fix double masking in fomrula ???&lt;br /&gt;
* 2016 year device fw and GWS 6.1.0.2064&lt;br /&gt;
: NoMainLog for formula&lt;br /&gt;
* 2016.08.25-next-03-b45984d&lt;br /&gt;
: Modbus | ai_bit DI type&lt;br /&gt;
: Modbus | DO: define ON and OFF address in the same cell&lt;br /&gt;
: improved logging&lt;br /&gt;
: SPA-Bus | poll all&lt;br /&gt;
* 2016.08.23-next-01-d702b81&lt;br /&gt;
: Logging | fine tuned device initialization logging. Old device oriented (GW6, RTA)&lt;br /&gt;
: fix DO Inversion bug ([https://phobos.martem.ee/redmine/issues/2702 #2702])&lt;br /&gt;
* 2016.05.11-next-02-e02304a&lt;br /&gt;
:SPA-Bus | minor fixes for rare nack and timeout cases&lt;br /&gt;
:SPA-Bus | commented out object sorting&lt;br /&gt;
* 2016.05.04-next-01-64e4492&lt;br /&gt;
:SPA-Bus | protocol subtype for ABB ref542&lt;br /&gt;
:SPA-Bus | poll L messages after 5 object poll requests&lt;br /&gt;
:SPA-Bus | mode 1 implementation: poll multiple objects in one request ([https://phobos.martem.ee/redmine/issues/2635 #2635])&lt;br /&gt;
:SPA-Bus | DO: define ON and OFF address in the same cell &lt;br /&gt;
:SPA-Bus | channel number definable for every event number ([https://phobos.martem.ee/redmine/issues/2637 #2637])&lt;br /&gt;
:SPA-Bus | event numbers for Intermediate and Error states&lt;br /&gt;
:SPA-Bus | fallback fixes ([https://phobos.martem.ee/redmine/issues/2658 #2658])&lt;br /&gt;
:SPA-Bus | switch between devices on same port after L message&lt;br /&gt;
:SPA-Bus | define incoming DI object type (Dobule/Single) ([https://phobos.martem.ee/redmine/issues/2654 #2654])&lt;br /&gt;
:SD card licence implementation ([https://phobos.martem.ee/redmine/issues/2592 #2592])&lt;br /&gt;
:remove non ASCII characters from object comment ([https://phobos.martem.ee/redmine/issues/2577 #2577])&lt;br /&gt;
*[22.03.2016]&lt;br /&gt;
:1-wire segfault on bing temp. change fix ([https://phobos.martem.ee/redmine/issues/2640 #2640])&lt;br /&gt;
*[11.03.2016]&lt;br /&gt;
:IEC-104 object type priorities fix. Big amounts of AI data prevented DI events propagation. ([https://phobos.martem.ee/redmine/issues/2625 #2625])&lt;br /&gt;
*[23.02.2016]&lt;br /&gt;
:webserver v2 IE11 not working fix&lt;br /&gt;
*[10.02.2016]&lt;br /&gt;
:NEW_DATABASE formulas numerous fixes&lt;br /&gt;
:ADDED LIB TO PROJECT: fastformat&lt;br /&gt;
:logging optimizations using fastformat. VMX25 up to 10x faster&lt;br /&gt;
*[16.12.2015]&lt;br /&gt;
:license additions to support no modem GWM ([https://phobos.martem.ee/redmine/issues/2565 #2565])&lt;br /&gt;
*[17.11.2015]&lt;br /&gt;
:longer interval for some tasks&lt;br /&gt;
:SyncDatabaseToFile 2s-&amp;gt;5s&lt;br /&gt;
:ProcessRetranslation 10ms-&amp;gt;500ms&lt;br /&gt;
:explicitly sync db backup to non-volatile memory only on reset/low-power.&lt;br /&gt;
*[06.11.2015]&lt;br /&gt;
:IEC-101/104 QOC (Qualifier of command) implementation ([https://phobos.martem.ee/redmine/issues/2495 #2495])&lt;br /&gt;
*[05.11.2015]&lt;br /&gt;
:AI scaling rewrite &#039;&#039;&#039;(COMPATIBILITY BREAK)&#039;&#039;&#039;&lt;br /&gt;
:virtual I/O object pair crash app if invalid address fix ([https://phobos.martem.ee/redmine/issues/2572 #2572])&lt;br /&gt;
*[30.10.2015]&lt;br /&gt;
:web-server v2 shows device eth info ([https://phobos.martem.ee/redmine/issues/2532 #2532])&lt;br /&gt;
*[16.10.2015]&lt;br /&gt;
:fix SPA-Bus polling delay ([https://phobos.martem.ee/redmine/issues/2546 #2546])&lt;br /&gt;
*[14.10.2015]&lt;br /&gt;
:IEC DO_FN | IEC101/104 type 105 C_RP_NA_1 (reset process) implementation ([https://phobos.martem.ee/redmine/issues/2498 #2498])&lt;br /&gt;
:IEC DO_FN | IEC101/104 GI command via DO implementation ([https://phobos.martem.ee/redmine/issues/2499 #2499])&lt;br /&gt;
*[13.10.2015]&lt;br /&gt;
:zero value deadband implementation ([https://phobos.martem.ee/redmine/issues/2536 #2536])&lt;br /&gt;
*[24.09.2015]&lt;br /&gt;
:DO/AO stops IEC-101 messages fix for devices using old database ([https://phobos.martem.ee/redmine/issues/2527 #2527])&lt;br /&gt;
:allow bigger conf size for NEW_DATABASE devices&lt;br /&gt;
:SETUP_WITH_XML_BIN_SIZE 500KB-&amp;gt;1.5MB&lt;br /&gt;
:EXTRACTED_XML_SETUP_SIZE 6MB-&amp;gt;20MB&lt;br /&gt;
*[07.09.2015]&lt;br /&gt;
:GWM IO-board + 101-104 conversion not working fix ([https://phobos.martem.ee/redmine/issues/2520 #2520])&lt;br /&gt;
*[25.08.2015]&lt;br /&gt;
:IEC-61850 mem-leak/consumption fixes&lt;br /&gt;
:remove BIT_INVALID_TIME from BIT_VALUE_CHANGED_MASK&lt;br /&gt;
*[22.08.2015]&lt;br /&gt;
:devie booting time nnX times faster ([https://phobos.martem.ee/redmine/issues/2472 #2472])&lt;br /&gt;
&lt;br /&gt;
== kernel 4 Changelog since 2017 ==&lt;br /&gt;
*2017.08.22&lt;br /&gt;
: fix GW DNS service&lt;br /&gt;
*2017.02.10&lt;br /&gt;
: fix sftp access&lt;br /&gt;
: fix configuring SSH from GWS&lt;br /&gt;
&lt;br /&gt;
== kernel 2 Changelog since 2013 ==&lt;br /&gt;
* 2017.07.12&lt;br /&gt;
: log4cxx | patch for socket appender&lt;br /&gt;
: pack_logs | pack modem history log&lt;br /&gt;
: init | fix spamming logs (S48, S61m S99)&lt;br /&gt;
: fw_update | fix errors on fw update (S12usb)&lt;br /&gt;
: init | fix spamming logs on stop (S37)&lt;br /&gt;
: modem | fix handling huawei modems&lt;br /&gt;
: WebServer | Restore syslog options&lt;br /&gt;
* 2017.04.17-next-08-af772c0&lt;br /&gt;
: update | Additional checks in post-update scripts for GWM rev.1 FTDI IO Board&lt;br /&gt;
* 2017.04.05-next-07-65a2e5a&lt;br /&gt;
: pack_logs now packs all existing console logs and eeprom log if exists&lt;br /&gt;
* 2017.04.03-next-03-49423a0&lt;br /&gt;
: fix enabling peripheral power on startup with usbs suspended (fixes old GWM53 FTDI IO Board)&lt;br /&gt;
* 2017.01.31-next-01-3eefdf3&lt;br /&gt;
: remove cifs support from vmx25 kernel. No more space left on device.&lt;br /&gt;
* 2016.11.04-next-01-51a8c40 &#039;&#039;&#039;Don&#039;t use on VMX25&#039;&#039;&#039; &#039;&#039;&#039;Don&#039;t use on GWM with DO&#039;&#039;&#039;&lt;br /&gt;
: IEC-101,104 | DO invert fix sending ACK with inverted address&lt;br /&gt;
: init | S99phy fix toggling LAN power and wait longer&lt;br /&gt;
: init | fix starting modem then date is in the start of epoch (1970)&lt;br /&gt;
: init | Script fixes for fresh device with linux default time&lt;br /&gt;
* 2016.10.19-next-09-3e89e79 &#039;&#039;&#039;Don&#039;t use on VMX25&#039;&#039;&#039; &#039;&#039;&#039;Don&#039;t use on GWM with DO&#039;&#039;&#039;&lt;br /&gt;
: CIFS support in kernel for network mounts &#039;&#039;&#039;!! This change bricks VMX25. Removed from VMX25 after 30.01.2017&#039;&#039;&#039;&lt;br /&gt;
* 2016.10.08-next-01-c91481f&lt;br /&gt;
: init | optimizations for FTDI eeprom software&lt;br /&gt;
: init | getwdbootmsg fixes&lt;br /&gt;
: init | major refactoring. Performance &amp;amp; readability fixes&lt;br /&gt;
* 2016.10.03-next-02-1cb7e5f&lt;br /&gt;
: Syslog | Add possibility to change loglevel and remote server port&lt;br /&gt;
: ntp | do not restart ntp if only gps is configured (2711)&lt;br /&gt;
: ntp | avoid frequent ntp restarts by other scripts&lt;br /&gt;
: modem | avoid frequent modem restart by multiple scripts (only 1 restart allowed per one minute).&lt;br /&gt;
: modem | rewrite telit modem reseting as described in telit manual&lt;br /&gt;
: init | fix socat sometimes creating /dev/tty* as ordinary file instead of letting modem driver to do it.&lt;br /&gt;
: init | performance fixes&lt;br /&gt;
* 2016.07.28-next-06-3d426af&lt;br /&gt;
:Device CPU frequency lowered from 1.2GHz to 1.0GHz | Improved ssh key generation and license cheking&lt;br /&gt;
*[11.02.2016]&lt;br /&gt;
:physical interface checker script implementation&lt;br /&gt;
*[10.02.2016]&lt;br /&gt;
:ADDED LIB TO PROJECT: fastformat&lt;br /&gt;
*[26.01.2016]&lt;br /&gt;
:GWS &#039;Get logs&#039; acquires n+1 more rotating logs&lt;br /&gt;
*[23.07.2015]&lt;br /&gt;
:ADDED LIB TO PROJECT: boost_chrono to source.pro (websocketpp 0.6.0 depends)&lt;br /&gt;
*[08.06.2015]&lt;br /&gt;
:application segmentation fault fix (2429)&lt;br /&gt;
*[27.04.2015]&lt;br /&gt;
:DI fallback bug fix (2312)&lt;br /&gt;
*[23.04.2015]&lt;br /&gt;
:DI object double inversion bug fix (2345)&lt;br /&gt;
*[21.04.2015]&lt;br /&gt;
:no flags not working fix (2194)&lt;br /&gt;
*[24.03.2015]&lt;br /&gt;
:Periodical GI implementation for all protocols (every 5th minute of hour)&lt;br /&gt;
*[16.03.2015]&lt;br /&gt;
:Telem Master protocol implementation&lt;br /&gt;
*[29.01.2015]&lt;br /&gt;
:IEC-10x ASDU transfer implementation&lt;br /&gt;
*[30.10.2014]&lt;br /&gt;
:IEC-101B serial communication improvements&lt;br /&gt;
*[23.10.2014]&lt;br /&gt;
:No main/CSV log for individual objects&lt;br /&gt;
*2014.01.13-next-01-2a5df30&lt;br /&gt;
:added uINT16 (unsigned 16bit integer) in modbus protocol. (also update gws)&lt;br /&gt;
*2014.01.09-next-01-2fae2d9&lt;br /&gt;
:fix IEC104 bug in GW6&lt;br /&gt;
*2014.01.07-next-01-8180155&lt;br /&gt;
:fix fallback (GW6e and GWM), &amp;quot;NONE&amp;quot; protocol, device &amp;quot;in use&amp;quot;=no, FP-to-normalised conversion, deadband issues, IEC104 bug in GW6e. (also update gws)&lt;br /&gt;
*2013.11.18-next-04&lt;br /&gt;
:fix IEC-104 bug (mark data as NT if connection to IEC-104 slave is lost and parameter &amp;quot;failed query count for disabling contr.&amp;quot; &amp;gt; 1)&lt;br /&gt;
*2013.11.12-next01&lt;br /&gt;
:fix AO feedback bug in GW6 and RTA-A&lt;br /&gt;
*2013.11.04-next    &lt;br /&gt;
:time invalid flag for GW6 and RTA-A (also requires DSP/RTC software update!)&lt;br /&gt;
*2013.10.24-next    &lt;br /&gt;
:IEC101-to-IEC104 short time to long time conversion&lt;br /&gt;
*2013.09.16-next07  &lt;br /&gt;
:configurable COT=2 Bytes for IEC101b&lt;br /&gt;
*2013.09.09-next01  &lt;br /&gt;
:configurable COT=2 Bytes for IEC101ub&lt;br /&gt;
*2013.07.12-next02  &lt;br /&gt;
:write modem status to /var/log/modem.st&lt;br /&gt;
&lt;br /&gt;
= Old Devices RTA-A and GW6 =&lt;br /&gt;
&lt;br /&gt;
== Latest Firmware ==&lt;br /&gt;
&lt;br /&gt;
Last fw version GW6: 2015.12.11-develop-01-104a492&lt;br /&gt;
&lt;br /&gt;
Last fw version RTA-A M502: 2015.12.11-develop-01-104a492&lt;br /&gt;
&lt;br /&gt;
Last fw version RTA-A M501: 2015.12.11-develop-01-104a492&lt;br /&gt;
&lt;br /&gt;
==GW6-1206 ==&lt;br /&gt;
* Timezones for ports and system.&lt;br /&gt;
===Userland ===&lt;br /&gt;
* dnsmasq&lt;br /&gt;
* iperf&lt;br /&gt;
===Kernel ===&lt;br /&gt;
* iptables: Support for -m limit. For instance:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 /usr/sbin/iptables -t filter -A INPUT -p tcp --dport 2404 --sport 1024:65535 -m state --state NEW -m limit --limit 25/minute --limit-burst 100 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* tc: Basic support.  For instance:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/sbin/tc qdisc del dev eth0 root    2&amp;gt; /dev/null &amp;gt; /dev/null&lt;br /&gt;
/sbin/tc qdisc del dev eth0 ingress 2&amp;gt; /dev/null &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
/sbin/tc qdisc add dev eth0 handle ffff: ingress&lt;br /&gt;
/sbin/tc filter add dev eth0 parent ffff: protocol ip prio 1 u32 match ip src 0.0.0.0/0 police rate 512kbit burst 1m drop flowid :1&lt;br /&gt;
&lt;br /&gt;
/sbin/tc qdisc add dev eth0 root handle 1: cbq avpkt 1000 bandwidth 20mbit &lt;br /&gt;
/sbin/tc class add dev eth0 parent 1: classid 1:1 cbq rate 512kbit allot 1500 prio 1 bounded isolated &lt;br /&gt;
/sbin/tc class add dev eth0 parent 1: classid 1:2 cbq rate 512kbit allot 1500 prio 2 bounded isolated&lt;br /&gt;
/sbin/tc class add dev eth0 parent 1: classid 1:3 cbq rate 512kbit allot 1500 prio 3 bounded isolated&lt;br /&gt;
/sbin/tc filter add dev eth0 parent 1: protocol ip prio 16 u32 match ip protocol 1 0xff flowid 1:1&lt;br /&gt;
/sbin/tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip sport 80 0xffff flowid 1:2&lt;br /&gt;
/sbin/tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip sport 22 0xffff flowid 1:3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GW6-1204 ==&lt;br /&gt;
* IEC104: Respond to message sent to broadcast ASDU (0xFFFF)&lt;br /&gt;
* IEC-62056: mask incoming data with 0x7F (ASCII protocol)&lt;br /&gt;
* Serial ports: Suppress echo&lt;br /&gt;
* WebPage: Long awaited by all interenet browsers the favicon.ico&lt;br /&gt;
&lt;br /&gt;
==GW6-1202 ==&lt;br /&gt;
* IEC104: Fix possible event loss on ethernet cable removal.&lt;br /&gt;
* Formula: Do not generate control event, on first successful calculation.&lt;br /&gt;
==GW6-1200 ==&lt;br /&gt;
*Firmware version readable through internal &#039;&#039;&#039;WebServer&#039;&#039;&#039;&lt;br /&gt;
*Fix possible event loss when lots of changes arrive for one input.&lt;br /&gt;
*GPRS-modem protocol: if connection to internet is lost, all &#039;&#039;&#039;TCP client connections&#039;&#039;&#039; are closed&lt;br /&gt;
*IEC104: force &#039;&#039;&#039;long-time format&#039;&#039;&#039;&lt;br /&gt;
==GW6-1198==&lt;br /&gt;
*IEC101/103 Unbalanced Master: add feature &#039;&#039;polling delay&#039;&#039;&lt;br /&gt;
*When sending a &#039;&#039;&#039;control operation&#039;&#039;&#039; over IEC103 channel with many devices. Speed up receiving of control response.&lt;br /&gt;
==GW6-1196==&lt;br /&gt;
*Connection loss with RTC-board does not result in watchdog reset.&lt;br /&gt;
**Symptoms: device will reset after 20 seconds of running.&lt;br /&gt;
*Device will write &#039;&#039;&#039;system boot count&#039;&#039;&#039; and &#039;&#039;&#039;application start count&#039;&#039;&#039; to &#039;&#039;console.log&#039;&#039;. Latest values can be found in &#039;&#039;&#039;/var/local/telem/stats&#039;&#039;&#039;&lt;br /&gt;
==RTA-A-1192==&lt;br /&gt;
* RTA-A: possible to define &#039;&#039;&#039;DO object&#039;&#039;&#039; to &#039;&#039;&#039;clear annunciator LED&#039;&#039;&#039; &#039;s&lt;br /&gt;
* Modbus Master: Fix receiving of negative 16bit normalized values.&lt;br /&gt;
==GW6-1190==&lt;br /&gt;
* Added new update pack type &#039;&#039;&#039;app-only&#039;&#039;&#039;.&lt;br /&gt;
** Note: This update pack type should only be used on device with SW version 1190 or later.&lt;br /&gt;
** This update will not overwrite system files - less chance for bricking if something goes wrong (accidental power loss or reset).&lt;br /&gt;
* Generate &#039;&#039;&#039;/etc/network/interfaces&#039;&#039;&#039; file once after receiving &#039;&#039;new setup&#039;&#039;.&lt;br /&gt;
* New protocol type &#039;&#039;&#039;IEC ^ Setup&#039;&#039;&#039;&lt;br /&gt;
** Only reading and writing of device setup is allowed on this Port.&lt;br /&gt;
** Allows faster booting of device with a lot of unused Up-channel ports.&lt;/div&gt;</summary>
		<author><name>Janek</name></author>
	</entry>
	<entry>
		<id>https://phobos.martem.ee/w/index.php?title=GWS_cli&amp;diff=1566</id>
		<title>GWS cli</title>
		<link rel="alternate" type="text/html" href="https://phobos.martem.ee/w/index.php?title=GWS_cli&amp;diff=1566"/>
		<updated>2014-08-11T11:45:40Z</updated>

		<summary type="html">&lt;p&gt;Janek: /* For testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== For testing ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;--read-ssh&#039;&#039;&#039;&lt;br /&gt;
:read from device, default value for &#039;&#039;&#039;--setup-form&#039;&#039;&#039; is required, it will be changed to correct value if device type can be detected&lt;br /&gt;
&#039;&#039;&#039;--write-ssh&#039;&#039;&#039;&lt;br /&gt;
:write to device, executed last (&#039;&#039;&#039;--read-ssh&#039;&#039;&#039; and &#039;&#039;&#039;--setup-file&#039;&#039;&#039; are done first)&lt;br /&gt;
&#039;&#039;&#039;--exit-on-error&#039;&#039;&#039;&lt;br /&gt;
:exit GWS if any error occurs&lt;br /&gt;
&#039;&#039;&#039;--ssh-user&#039;&#039;&#039; [username]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;--ssh-pw&#039;&#039;&#039; [password]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;--ssh-ip&#039;&#039;&#039; [ip]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;--setup-form&#039;&#039;&#039; [code]&lt;br /&gt;
:force to open with product code, required with older configurations&lt;br /&gt;
&#039;&#039;&#039;--setup-file&#039;&#039;&#039; [filename]&lt;br /&gt;
:opens configuration with corresponding product code found in file (not with older files)&lt;br /&gt;
&#039;&#039;&#039;--setup-filew&#039;&#039;&#039; [filename]&lt;br /&gt;
:write file after &#039;&#039;&#039;--read-ssh&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;--regenerate&#039;&#039;&#039;&lt;br /&gt;
: regenerates linux configuration files before save&lt;br /&gt;
&#039;&#039;&#039;--root-path&#039;&#039;&#039; [linux path]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;--dev&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
example: read GW6 configuration&lt;br /&gt;
:gws.exe --ssh-user user --ssh-pw &amp;quot;password&amp;quot; --ssh-ip 10.0.0.5 --setup-form GW6 --read-ssh&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;--dxml&#039;&#039;&#039;&lt;br /&gt;
:Delphi default xml parser&lt;br /&gt;
&#039;&#039;&#039;--oxml&#039;&#039;&#039;&lt;br /&gt;
:xml parser/writer that is at least 2x faster and uses less memory.&lt;br /&gt;
&#039;&#039;&#039;--unlimited&#039;&#039;&#039;&lt;br /&gt;
:allows big configurations&lt;br /&gt;
&#039;&#039;&#039;--no-groups&#039;&#039;&#039;&lt;br /&gt;
:disable object grouping (big configurations have performance issues with grouping)&lt;/div&gt;</summary>
		<author><name>Janek</name></author>
	</entry>
	<entry>
		<id>https://phobos.martem.ee/w/index.php?title=GWS_cli&amp;diff=1565</id>
		<title>GWS cli</title>
		<link rel="alternate" type="text/html" href="https://phobos.martem.ee/w/index.php?title=GWS_cli&amp;diff=1565"/>
		<updated>2014-08-07T11:32:06Z</updated>

		<summary type="html">&lt;p&gt;Janek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== For testing ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;--read-ssh&#039;&#039;&#039;&lt;br /&gt;
:read from device, default value for &#039;&#039;&#039;--setup-form&#039;&#039;&#039; is required, it will be changed to correct value if device type can be detected&lt;br /&gt;
&#039;&#039;&#039;--write-ssh&#039;&#039;&#039;&lt;br /&gt;
:write to device, executed last (&#039;&#039;&#039;--read-ssh&#039;&#039;&#039; and &#039;&#039;&#039;--setup-file&#039;&#039;&#039; are done first)&lt;br /&gt;
&#039;&#039;&#039;--exit-on-error&#039;&#039;&#039;&lt;br /&gt;
:exit GWS if any error occurs&lt;br /&gt;
&#039;&#039;&#039;--ssh-user&#039;&#039;&#039; [username]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;--ssh-pw&#039;&#039;&#039; [password]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;--ssh-ip&#039;&#039;&#039; [ip]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;--setup-form&#039;&#039;&#039; [code]&lt;br /&gt;
:force to open with product code, required with older configurations&lt;br /&gt;
&#039;&#039;&#039;--setup-file&#039;&#039;&#039; [filename]&lt;br /&gt;
:opens configuration with corresponding product code found in file (not with older files)&lt;br /&gt;
&#039;&#039;&#039;--setup-filew&#039;&#039;&#039; [filename]&lt;br /&gt;
:write file after &#039;&#039;&#039;--read-ssh&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;--root-path&#039;&#039;&#039; [linux path]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;--dev&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
example: read GW6 configuration&lt;br /&gt;
:gws.exe --ssh-user user --ssh-pw &amp;quot;password&amp;quot; --ssh-ip 10.0.0.5 --setup-form GW6 --read-ssh&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;--dxml&#039;&#039;&#039;&lt;br /&gt;
:Delphi default xml parser&lt;br /&gt;
&#039;&#039;&#039;--oxml&#039;&#039;&#039;&lt;br /&gt;
:xml parser/writer that is at least 2x faster and uses less memory.&lt;br /&gt;
&#039;&#039;&#039;--unlimited&#039;&#039;&#039;&lt;br /&gt;
:allows big configurations&lt;br /&gt;
&#039;&#039;&#039;--no-groups&#039;&#039;&#039;&lt;br /&gt;
:disable object grouping (big configurations have performance issues with grouping)&lt;/div&gt;</summary>
		<author><name>Janek</name></author>
	</entry>
	<entry>
		<id>https://phobos.martem.ee/w/index.php?title=GWS_cli&amp;diff=1564</id>
		<title>GWS cli</title>
		<link rel="alternate" type="text/html" href="https://phobos.martem.ee/w/index.php?title=GWS_cli&amp;diff=1564"/>
		<updated>2014-08-04T11:39:37Z</updated>

		<summary type="html">&lt;p&gt;Janek: /* For testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== For testing ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;--read-ssh&#039;&#039;&#039;&lt;br /&gt;
:read from device, default value for &#039;&#039;&#039;--setup-form&#039;&#039;&#039; is required, it will be changed to correct value if device type can be detected&lt;br /&gt;
&#039;&#039;&#039;--write-ssh&#039;&#039;&#039;&lt;br /&gt;
:write to device, executed last (&#039;&#039;&#039;--read-ssh&#039;&#039;&#039; and &#039;&#039;&#039;--setup-file&#039;&#039;&#039; are done first)&lt;br /&gt;
&#039;&#039;&#039;--exit-on-error&#039;&#039;&#039;&lt;br /&gt;
:exit GWS if any error occurs&lt;br /&gt;
&#039;&#039;&#039;--ssh-user&#039;&#039;&#039; [username]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;--ssh-pw&#039;&#039;&#039; [password]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;--ssh-ip&#039;&#039;&#039; [ip]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;--setup-form&#039;&#039;&#039; [code]&lt;br /&gt;
:force to open with product code, required with older configurations&lt;br /&gt;
&#039;&#039;&#039;--setup-file&#039;&#039;&#039; [filename]&lt;br /&gt;
:opens configuration with corresponding product code found in file (not with older files)&lt;br /&gt;
&#039;&#039;&#039;--root-path&#039;&#039;&#039; [linux path]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;--dev&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
example: read GW6 configuration&lt;br /&gt;
:gws.exe --ssh-user user --ssh-pw &amp;quot;password&amp;quot; --ssh-ip 10.0.0.5 --setup-form GW6 --read-ssh&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;--dxml&#039;&#039;&#039;&lt;br /&gt;
:Delphi default xml parser&lt;br /&gt;
&#039;&#039;&#039;--oxml&#039;&#039;&#039;&lt;br /&gt;
:xml parser/writer that is at least 2x faster and uses less memory.&lt;br /&gt;
&#039;&#039;&#039;--unlimited&#039;&#039;&#039;&lt;br /&gt;
:allows big configurations&lt;br /&gt;
&#039;&#039;&#039;--no-groups&#039;&#039;&#039;&lt;br /&gt;
:disable object grouping (big configurations have performance issues with grouping)&lt;/div&gt;</summary>
		<author><name>Janek</name></author>
	</entry>
	<entry>
		<id>https://phobos.martem.ee/w/index.php?title=GWS_cli&amp;diff=1563</id>
		<title>GWS cli</title>
		<link rel="alternate" type="text/html" href="https://phobos.martem.ee/w/index.php?title=GWS_cli&amp;diff=1563"/>
		<updated>2014-08-04T11:39:19Z</updated>

		<summary type="html">&lt;p&gt;Janek: Uus lehekülg: &amp;#039;== For testing ==  &amp;#039;&amp;#039;&amp;#039;--read-ssh&amp;#039;&amp;#039;&amp;#039; :read from device, default value for &amp;#039;&amp;#039;&amp;#039;--setup-form&amp;#039;&amp;#039;&amp;#039; is required, it will be changed to correct value if device type can be detected &amp;#039;&amp;#039;&amp;#039;--w...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== For testing ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;--read-ssh&#039;&#039;&#039;&lt;br /&gt;
:read from device, default value for &#039;&#039;&#039;--setup-form&#039;&#039;&#039; is required, it will be changed to correct value if device type can be detected&lt;br /&gt;
&#039;&#039;&#039;--write-ssh&#039;&#039;&#039;&lt;br /&gt;
:write to device, executed last (&#039;&#039;&#039;--read-ssh&#039;&#039;&#039; and &#039;&#039;&#039;--setup-file&#039;&#039;&#039; are done first)&lt;br /&gt;
&#039;&#039;&#039;--exit-on-error&#039;&#039;&#039;&lt;br /&gt;
:exit GWS if any error occurs&lt;br /&gt;
&#039;&#039;&#039;--ssh-user&#039;&#039;&#039; [username]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;--ssh-pw&#039;&#039;&#039; [password]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;--ssh-ip&#039;&#039;&#039; [ip]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;--setup-form&#039;&#039;&#039; [code]&lt;br /&gt;
:force to open with product code, required with older configurations&lt;br /&gt;
&#039;&#039;&#039;--setup-file&#039;&#039;&#039; [filename]&lt;br /&gt;
:opens configuration with corresponding product code found in file (not with older files)&lt;br /&gt;
&#039;&#039;&#039;--root-path&#039;&#039;&#039; [linux path]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;--dev&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
example: read GW6 configuration&lt;br /&gt;
gws.exe --ssh-user user --ssh-pw &amp;quot;password&amp;quot; --ssh-ip 10.0.0.5 --setup-form GW6 --read-ssh&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;--dxml&#039;&#039;&#039;&lt;br /&gt;
:Delphi default xml parser&lt;br /&gt;
&#039;&#039;&#039;--oxml&#039;&#039;&#039;&lt;br /&gt;
:xml parser/writer that is at least 2x faster and uses less memory.&lt;br /&gt;
&#039;&#039;&#039;--unlimited&#039;&#039;&#039;&lt;br /&gt;
:allows big configurations&lt;br /&gt;
&#039;&#039;&#039;--no-groups&#039;&#039;&#039;&lt;br /&gt;
:disable object grouping (big configurations have performance issues with grouping)&lt;/div&gt;</summary>
		<author><name>Janek</name></author>
	</entry>
	<entry>
		<id>https://phobos.martem.ee/w/index.php?title=GW6Lin_software_upgrade&amp;diff=1360</id>
		<title>GW6Lin software upgrade</title>
		<link rel="alternate" type="text/html" href="https://phobos.martem.ee/w/index.php?title=GW6Lin_software_upgrade&amp;diff=1360"/>
		<updated>2013-03-12T08:53:25Z</updated>

		<summary type="html">&lt;p&gt;Janek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Software can be downloaded [http://phobos.martem.ee/shr/gw6/ here]&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FFFFFF; background:#FF0000&amp;quot;&amp;gt; &amp;lt;big&amp;gt;&#039;&#039;&#039;Before updating to new firmware read the setup from your device, and make a backup.&#039;&#039;&#039;&amp;lt;/big&amp;gt; &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Firmware files explained:&lt;br /&gt;
* kernel_X-Y_144_154.7z - updates the kernel.&lt;br /&gt;
* kernel_X-Y_356.7z - updates the kernel for 256MB GW6, you dont have that device we know where it is, ignore.&lt;br /&gt;
* Telem-GW6_X-Y_Base.7z - single board GW6.&lt;br /&gt;
* Telem-GW6_X-Y_Base+Com8.7z - two board version that has no GPS board.&lt;br /&gt;
* Telem-GW6_X-Y_Full.7z - support for all the boards.&lt;br /&gt;
* Telem-GW6_X-Y_app_only.7z - updates bare minimum, that is Martem software and no additional utilities.&lt;br /&gt;
&lt;br /&gt;
X is the version number, for instance 1202. Y is the version string, for instance &amp;quot;stable&amp;quot;. So kernel_1202-stable_144_154.7z is the &amp;quot;stable&amp;quot; release 1202 of GW6 kernel. Telem-GW6_1203-develop-dirty_app-only.7z is the developement version 1203. &amp;quot;stable&amp;quot; means official release of the software and &amp;quot;develop&amp;quot; or other are testing versions.&lt;br /&gt;
&lt;br /&gt;
Known caveats:&lt;br /&gt;
* If you update with Full, Base or with Base+Com8 the password file will be over written. If you changed the default passwords of the device then use app_only version of the software. app_only updates protocol code, that is IEC-104 or Spa-BUS and etc, that is code written by Martem. iptables or openvpn or any other additional utility will not be over written by the app_only release.&lt;br /&gt;
* If you use Base, Base+Com8 or Full update software update the kernel as well. Some utilities for instance openvpn or pppd(point to point daemon used with external modems attached to GW6) might not work otherwise.&lt;br /&gt;
* Configuring with GWS:&lt;br /&gt;
:* Device with new firmware(from X), choose setup ver.4 from SSH connection configuration window and write only over SSH connection. Save or backup your configurations in tar.xz format, otherwise Linux specific and other software configuration files (openvpn, firewall, ..) will not be saved.&lt;br /&gt;
:* Device with old firmware(until X), choose setup ver.3 from SSH connection configuration window. You can write configuration over serial and SSH connection. Save or backup your configurations in bin format.&lt;br /&gt;
&lt;br /&gt;
==Loading firmware through Secure Digital (SD) Memory Card slot==&lt;br /&gt;
===Update logs===&lt;br /&gt;
A unique folder is created on SD for every device you update.&lt;br /&gt;
&lt;br /&gt;
When updating software some logs are created to check the success of update operation.&lt;br /&gt;
Additionally some general information is collected to &#039;&#039;&#039;INFO&#039;&#039;&#039; file.&lt;br /&gt;
&lt;br /&gt;
===Updating firmware===&lt;br /&gt;
#&#039;&#039;&#039;Make backup of your devices configuration!&#039;&#039;&#039;&lt;br /&gt;
#Connect [http://en.wikipedia.org/wiki/Secure_Digital Secure Digital] (SD) Memory Card to your computer&lt;br /&gt;
#Extract the compressed firmware update file (provided by Martem AS) to your SD Memory Card&lt;br /&gt;
#Disconnect the card from your computer&lt;br /&gt;
#Insert the card to Telem-GW6 SD Memory Card slot&lt;br /&gt;
#* SD Memory Card slot is located at the back of the device&lt;br /&gt;
#Perform reset operation to Telem-GW6 device&lt;br /&gt;
#Wait until the device resumes to it’s normal operation state&lt;br /&gt;
#*Update procedure can take up to a minute.&lt;br /&gt;
#Firmware update is complete. Remove the SD Memory Card and check if firmfare update was successful&lt;br /&gt;
&lt;br /&gt;
===Checking results of the firmware update operation===&lt;br /&gt;
#Connect the SD Memory Card to your computer&lt;br /&gt;
#Open the folder you extracted earlier&lt;br /&gt;
#When update procedure is started, a file &#039;&#039;&#039;res.txt&#039;&#039;&#039; is created.&lt;br /&gt;
#*Look at the end of &#039;&#039;&#039;res.txt&#039;&#039;&#039; to see the location for your device update logs.&lt;br /&gt;
&lt;br /&gt;
==Loading firmware via SFTP==&lt;br /&gt;
&lt;br /&gt;
===Updating firmware===&lt;br /&gt;
#&#039;&#039;&#039;Make backup of your devices configuration!&#039;&#039;&#039;&lt;br /&gt;
#[[Connect to GW6 over SSH]]&lt;br /&gt;
#*Login as ftpuser (password is provided by Martem AS)&lt;br /&gt;
#Extract the compressed(&#039;&#039;&#039;.7z&#039;&#039;&#039;) firmware update file (provided by Martem AS) to your computer.&lt;br /&gt;
#Copy &#039;&#039;&#039;gwupd&#039;&#039;&#039; folder from your computer to &#039;&#039;&#039;/home/&#039;&#039;user&#039;&#039;&#039;&#039;&#039; (&#039;&#039;/home/ftpuser&#039;&#039;) directory in GW.&lt;br /&gt;
#* Since version 1190 all &#039;&#039;&#039;/home/&#039;&#039;user&#039;&#039;&#039;&#039;&#039; directories are scanned for update.&lt;br /&gt;
#Wait about 1 minute (this is unnecessary if reset is sent through the configuration program)&lt;br /&gt;
#Perform reset operation to Telem-GW6 device&lt;br /&gt;
#Wait until the device resumes to it’s normal operation state&lt;br /&gt;
#Firmware update is complete.&lt;br /&gt;
&lt;br /&gt;
===Checking results of the firmware update operation===&lt;br /&gt;
#Open the &#039;&#039;user&#039;&#039; (ftpuser) directory &lt;br /&gt;
#If update fails &#039;&#039;&#039;err.txt&#039;&#039;&#039; file is created with some description of error.&lt;br /&gt;
#*Otherwise &#039;&#039;&#039;res.txt&#039;&#039;&#039; contains information about the last update.&lt;br /&gt;
&lt;br /&gt;
==Loading firmware via GWS==&lt;br /&gt;
#&#039;&#039;&#039;Make backup of your devices configuration!&#039;&#039;&#039;&lt;br /&gt;
#* Save it to a new file&lt;br /&gt;
#Open &#039;&#039;&#039;Firmware Update&#039;&#039;&#039; dialog&lt;br /&gt;
#Press &#039;&#039;&#039;Pick&#039;&#039;&#039; and select the firmware file.&lt;br /&gt;
#Press &#039;&#039;&#039;Update&#039;&#039;&#039; &lt;br /&gt;
#* Wait until firmware is updated. Green LED will start blinking again.&lt;br /&gt;
#Press &#039;&#039;&#039;Get Result&#039;&#039;&#039; &lt;br /&gt;
#* Update result file is loaded from device&lt;br /&gt;
#Done&lt;/div&gt;</summary>
		<author><name>Janek</name></author>
	</entry>
	<entry>
		<id>https://phobos.martem.ee/w/index.php?title=GW6Lin_software_upgrade&amp;diff=1359</id>
		<title>GW6Lin software upgrade</title>
		<link rel="alternate" type="text/html" href="https://phobos.martem.ee/w/index.php?title=GW6Lin_software_upgrade&amp;diff=1359"/>
		<updated>2013-03-12T08:35:25Z</updated>

		<summary type="html">&lt;p&gt;Janek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Software can be downloaded [http://phobos.martem.ee/shr/gw6/ here]&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FFFFFF; background:#FF0000&amp;quot;&amp;gt; &amp;lt;big&amp;gt;&#039;&#039;&#039;Before updating to new firmware read the setup from your device, and make a backup.&#039;&#039;&#039;&amp;lt;/big&amp;gt; &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Firmware files explained:&lt;br /&gt;
* kernel_X-Y_144_154.7z - updates the kernel.&lt;br /&gt;
* kernel_X-Y_356.7z - updates the kernel for 256MB GW6, you dont have that device we know where it is, ignore.&lt;br /&gt;
* Telem-GW6_X-Y_Base.7z - single board GW6.&lt;br /&gt;
* Telem-GW6_X-Y_Base+Com8.7z - two board version that has no GPS board.&lt;br /&gt;
* Telem-GW6_X-Y_Full.7z - support for all the boards.&lt;br /&gt;
* Telem-GW6_X-Y_app_only.7z - updates bare minimum, that is Martem software and no additional utilities.&lt;br /&gt;
&lt;br /&gt;
X is the version number, for instance 1202. Y is the version string, for instance &amp;quot;stable&amp;quot;. So kernel_1202-stable_144_154.7z is the &amp;quot;stable&amp;quot; release 1202 of GW6 kernel. Telem-GW6_1203-develop-dirty_app-only.7z is the developement version 1203. &amp;quot;stable&amp;quot; means official release of the software and &amp;quot;develop&amp;quot; or other are testing versions.&lt;br /&gt;
&lt;br /&gt;
Known caveats:&lt;br /&gt;
* If you update with Full, Base or with Base+Com8 the password file will be over written. If you changed the default passwords of the device then use app_only version of the software. app_only updates protocol code, that is IEC-104 or Spa-BUS and etc, that is code written by Martem. iptables or openvpn or any other additional utility will not be over written by the app_only release.&lt;br /&gt;
* If you use Base, Base+Com8 or Full update software update the kernel as well. Some utilities for instance openvpn or pppd(point to point daemon used with external modems attached to GW6) might not work otherwise.&lt;br /&gt;
* Configuring with GWS save or backup your configurations in tar.xz format, otherwise Linux specific and other software configuration files (openvpn, firewall, ..) will not be saved.&lt;br /&gt;
&lt;br /&gt;
==Loading firmware through Secure Digital (SD) Memory Card slot==&lt;br /&gt;
===Update logs===&lt;br /&gt;
A unique folder is created on SD for every device you update.&lt;br /&gt;
&lt;br /&gt;
When updating software some logs are created to check the success of update operation.&lt;br /&gt;
Additionally some general information is collected to &#039;&#039;&#039;INFO&#039;&#039;&#039; file.&lt;br /&gt;
&lt;br /&gt;
===Updating firmware===&lt;br /&gt;
#&#039;&#039;&#039;Make backup of your devices configuration!&#039;&#039;&#039;&lt;br /&gt;
#Connect [http://en.wikipedia.org/wiki/Secure_Digital Secure Digital] (SD) Memory Card to your computer&lt;br /&gt;
#Extract the compressed firmware update file (provided by Martem AS) to your SD Memory Card&lt;br /&gt;
#Disconnect the card from your computer&lt;br /&gt;
#Insert the card to Telem-GW6 SD Memory Card slot&lt;br /&gt;
#* SD Memory Card slot is located at the back of the device&lt;br /&gt;
#Perform reset operation to Telem-GW6 device&lt;br /&gt;
#Wait until the device resumes to it’s normal operation state&lt;br /&gt;
#*Update procedure can take up to a minute.&lt;br /&gt;
#Firmware update is complete. Remove the SD Memory Card and check if firmfare update was successful&lt;br /&gt;
&lt;br /&gt;
===Checking results of the firmware update operation===&lt;br /&gt;
#Connect the SD Memory Card to your computer&lt;br /&gt;
#Open the folder you extracted earlier&lt;br /&gt;
#When update procedure is started, a file &#039;&#039;&#039;res.txt&#039;&#039;&#039; is created.&lt;br /&gt;
#*Look at the end of &#039;&#039;&#039;res.txt&#039;&#039;&#039; to see the location for your device update logs.&lt;br /&gt;
&lt;br /&gt;
==Loading firmware via SFTP==&lt;br /&gt;
&lt;br /&gt;
===Updating firmware===&lt;br /&gt;
#&#039;&#039;&#039;Make backup of your devices configuration!&#039;&#039;&#039;&lt;br /&gt;
#[[Connect to GW6 over SSH]]&lt;br /&gt;
#*Login as ftpuser (password is provided by Martem AS)&lt;br /&gt;
#Extract the compressed(&#039;&#039;&#039;.7z&#039;&#039;&#039;) firmware update file (provided by Martem AS) to your computer.&lt;br /&gt;
#Copy &#039;&#039;&#039;gwupd&#039;&#039;&#039; folder from your computer to &#039;&#039;&#039;/home/&#039;&#039;user&#039;&#039;&#039;&#039;&#039; (&#039;&#039;/home/ftpuser&#039;&#039;) directory in GW.&lt;br /&gt;
#* Since version 1190 all &#039;&#039;&#039;/home/&#039;&#039;user&#039;&#039;&#039;&#039;&#039; directories are scanned for update.&lt;br /&gt;
#Wait about 1 minute (this is unnecessary if reset is sent through the configuration program)&lt;br /&gt;
#Perform reset operation to Telem-GW6 device&lt;br /&gt;
#Wait until the device resumes to it’s normal operation state&lt;br /&gt;
#Firmware update is complete.&lt;br /&gt;
&lt;br /&gt;
===Checking results of the firmware update operation===&lt;br /&gt;
#Open the &#039;&#039;user&#039;&#039; (ftpuser) directory &lt;br /&gt;
#If update fails &#039;&#039;&#039;err.txt&#039;&#039;&#039; file is created with some description of error.&lt;br /&gt;
#*Otherwise &#039;&#039;&#039;res.txt&#039;&#039;&#039; contains information about the last update.&lt;br /&gt;
&lt;br /&gt;
==Loading firmware via GWS==&lt;br /&gt;
#&#039;&#039;&#039;Make backup of your devices configuration!&#039;&#039;&#039;&lt;br /&gt;
#* Save it to a new file&lt;br /&gt;
#Open &#039;&#039;&#039;Firmware Update&#039;&#039;&#039; dialog&lt;br /&gt;
#Press &#039;&#039;&#039;Pick&#039;&#039;&#039; and select the firmware file.&lt;br /&gt;
#Press &#039;&#039;&#039;Update&#039;&#039;&#039; &lt;br /&gt;
#* Wait until firmware is updated. Green LED will start blinking again.&lt;br /&gt;
#Press &#039;&#039;&#039;Get Result&#039;&#039;&#039; &lt;br /&gt;
#* Update result file is loaded from device&lt;br /&gt;
#Done&lt;/div&gt;</summary>
		<author><name>Janek</name></author>
	</entry>
	<entry>
		<id>https://phobos.martem.ee/w/index.php?title=Gw_XML_setup&amp;diff=789</id>
		<title>Gw XML setup</title>
		<link rel="alternate" type="text/html" href="https://phobos.martem.ee/w/index.php?title=Gw_XML_setup&amp;diff=789"/>
		<updated>2012-01-17T09:14:26Z</updated>

		<summary type="html">&lt;p&gt;Janek: /* Address of object */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Element: Setup ==&lt;br /&gt;
The XML setup starts with the tag Setup. The entire setup is contained in this element.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;&amp;lt;big&amp;gt;All &#039;&#039;&#039;id&#039;&#039;&#039; attributes must be unique!&amp;lt;/big&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This element contains:&lt;br /&gt;
*Element: &#039;&#039;&#039;[[Gw_XML_setup#Element:_Device | Device]]&#039;&#039;&#039;&lt;br /&gt;
**At least one element of this type. &lt;br /&gt;
*Attribute: &#039;&#039;&#039;device&#039;&#039;&#039;&lt;br /&gt;
**If more than one &#039;&#039;&#039;Device&#039;&#039;&#039; element available. This attribute specifies the &#039;&#039;&#039;id&#039;&#039;&#039; of the &#039;&#039;&#039;Device&#039;&#039;&#039; to use as current setup.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Setup device=&amp;quot;Telem-Gw6-1&amp;quot;&amp;gt;&lt;br /&gt;
 	&amp;lt;Device id=&amp;quot;Telem-Gw6-1&amp;quot; /&amp;gt;&lt;br /&gt;
 	&amp;lt;Device id=&amp;quot;Gw1&amp;quot; /&amp;gt;&lt;br /&gt;
 	&amp;lt;Device id=&amp;quot;Gw2&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;/Setup&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Element: Device ==&lt;br /&gt;
This element contains setup for a specific device. This might be Gw itself or some substation device or SCADA device.&lt;br /&gt;
&lt;br /&gt;
This element contains:&lt;br /&gt;
*Element: &#039;&#039;&#039;[[Gw_XML_setup#Element:_Channel | Channel]]&#039;&#039;&#039;&lt;br /&gt;
*Element: &#039;&#039;&#039;[[Gw_XML_setup#Element:_Protocol | Protocol]]&#039;&#039;&#039;&lt;br /&gt;
*Element: &#039;&#039;&#039;[[Gw_XML_setup#Element:_Objects | Objects]]&#039;&#039;&#039;&lt;br /&gt;
*Element: &#039;&#039;&#039;[[Gw_XML_setup#Element:_Interfaces | Interfaces]]&#039;&#039;&#039;&lt;br /&gt;
*Attribute: &#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
** Used for element identification&lt;br /&gt;
&lt;br /&gt;
Child elements of Device when used as GW device&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Device id=&amp;quot;Telem-Gw6-1&amp;quot;&amp;gt;&lt;br /&gt;
 	&amp;lt;Channel /&amp;gt;&lt;br /&gt;
 	&amp;lt;Interfaces /&amp;gt;&lt;br /&gt;
 &amp;lt;/Device&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Child elements of Device when used as the device we&#039;re connecting to.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Device id=&amp;quot;DI-24T-1&amp;quot;&amp;gt;&lt;br /&gt;
 	&amp;lt;Protocol /&amp;gt;&lt;br /&gt;
 	&amp;lt;Objects /&amp;gt;&lt;br /&gt;
 &amp;lt;/Device&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Element: Channel ==&lt;br /&gt;
This element contains:&lt;br /&gt;
*Element: &#039;&#039;&#039;[[Gw_XML_setup#Element:_Port | Port]]&#039;&#039;&#039;&lt;br /&gt;
**If more than one &#039;&#039;&#039;[[Gw_XML_setup#Element:_Port | Port]]&#039;&#039;&#039; is specified, they are for redundancy.&lt;br /&gt;
*Element: &#039;&#039;&#039;[[Gw_XML_setup#Element:_Device | Device]]&#039;&#039;&#039;&lt;br /&gt;
*Element: &#039;&#039;&#039;[[Gw_XML_setup#Element:_Objects | Objects]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Channel id=&amp;quot;DI-24T-1&amp;quot;&amp;gt;&lt;br /&gt;
 	&amp;lt;Port /&amp;gt;&lt;br /&gt;
 	&amp;lt;Device /&amp;gt;&lt;br /&gt;
 	&amp;lt;Objects /&amp;gt;&lt;br /&gt;
 &amp;lt;/Channel&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Element: Protocol ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Protocol comment=&amp;quot;protocol8&amp;quot; id=&amp;quot;prot_8_0&amp;quot;&amp;gt;&lt;br /&gt;
 	&amp;lt;Address /&amp;gt;&lt;br /&gt;
 	&amp;lt;CommunicationDelay unit=&amp;quot;millisecond&amp;quot;&amp;gt;0&amp;lt;/CommunicationDelay&amp;gt;&lt;br /&gt;
 	&amp;lt;PollingTimeout unit=&amp;quot;millisecond&amp;quot;&amp;gt;500&amp;lt;/PollingTimeout&amp;gt;&lt;br /&gt;
 	&amp;lt;TimeSync /&amp;gt;&lt;br /&gt;
 	&amp;lt;TimeoutRemoveCount&amp;gt;5&amp;lt;/TimeoutRemoveCount&amp;gt;&lt;br /&gt;
 	&amp;lt;TimeoutRemoveTime unit=&amp;quot;second&amp;quot;&amp;gt;20&amp;lt;/TimeoutRemoveTime&amp;gt;&lt;br /&gt;
 	&amp;lt;ReplaceTime&amp;gt;false&amp;lt;/ReplaceTime&amp;gt;&lt;br /&gt;
 	&amp;lt;GeneralInterrogationForwarding&amp;gt;false&amp;lt;/GeneralInterrogationForwarding&amp;gt;&lt;br /&gt;
 	&amp;lt;Type SubVersion=&amp;quot;0&amp;quot; isMaster=&amp;quot;false&amp;quot;&amp;gt;IEC101UnBalanced&amp;lt;/Type&amp;gt;&lt;br /&gt;
 &amp;lt;/Protocol&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Element: TimeSync ===&lt;br /&gt;
Timesync interval and correction setup&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;TimeSync isEnabled=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
 	&amp;lt;Interval unit=&amp;quot;second&amp;quot;&amp;gt;30&amp;lt;/Interval&amp;gt;&lt;br /&gt;
 	&amp;lt;Correction /&amp;gt;&lt;br /&gt;
 &amp;lt;/TimeSync&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==== Element: Correction ====&lt;br /&gt;
Possible timesync correction types:&lt;br /&gt;
*Absolute&lt;br /&gt;
**Timesync message shall always be modified by this amount.&lt;br /&gt;
*ConnectionSpeed&lt;br /&gt;
**Baudrate based(only when using serial port)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Correction&amp;gt;&lt;br /&gt;
 	&amp;lt;Absolute enabled=&amp;quot;true&amp;quot; unit=&amp;quot;millisecond&amp;quot;&amp;gt;0&amp;lt;/Absolute&amp;gt;&lt;br /&gt;
 	&amp;lt;ConnectionSpeed enabled=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/Correction&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Element: Address ==&lt;br /&gt;
This element can refer to &#039;&#039;&#039;protocol&#039;&#039;&#039; address or some specific &#039;&#039;&#039;object&#039;&#039;&#039; address.&lt;br /&gt;
=== Address for protocol ===&lt;br /&gt;
This elements contents depend on the protocol selected&lt;br /&gt;
==== Iec-10x ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Address&amp;gt;&lt;br /&gt;
 	&amp;lt;LinkAddress&amp;gt;1&amp;lt;/LinkAddress&amp;gt;&lt;br /&gt;
 	&amp;lt;LinkAddressLength&amp;gt;1&amp;lt;/LinkAddressLength&amp;gt;&lt;br /&gt;
 	&amp;lt;AsduAddress&amp;gt;1&amp;lt;/AsduAddress&amp;gt;&lt;br /&gt;
 	&amp;lt;AsduAddressLength&amp;gt;2&amp;lt;/AsduAddressLength&amp;gt;&lt;br /&gt;
 	&amp;lt;ObjectAddressLength&amp;gt;2&amp;lt;/ObjectAddressLength&amp;gt;&lt;br /&gt;
 &amp;lt;/Address&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==== MODBUS ====&lt;br /&gt;
Value: &#039;&#039;integer&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Address&amp;gt;2&amp;lt;/Address&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==== IEC62056-21 ====&lt;br /&gt;
Value: &#039;&#039;string&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Can be empty if only one device on channel.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Address id=&amp;quot;0.0.0&amp;quot;&amp;gt;addr123&amp;lt;/Address&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If this Address element contains attribute &#039;&#039;&#039;id&#039;&#039;&#039;, It shall be used for device verification.&lt;br /&gt;
&lt;br /&gt;
=== Address of object ===&lt;br /&gt;
&lt;br /&gt;
==== Iec-101/104 ====&lt;br /&gt;
Value: &#039;&#039;integer&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Address index=&amp;quot;0&amp;quot;&amp;gt;10&amp;lt;/Address&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
attribute index is unnecessary if value==&#039;&#039;&#039;0&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Iec-103 ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Address fnCode=&amp;quot;3&amp;quot; infoNr=&amp;quot;6&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== SPA-Bus ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Address index=&amp;quot;3&amp;quot; onEvent=&amp;quot;6&amp;quot; offEvent=&amp;quot;6&amp;quot; channelNumber=&amp;quot;6&amp;quot; dataType=&amp;quot;I&amp;quot;&amp;gt;&lt;br /&gt;
  1234&lt;br /&gt;
 &amp;lt;/Address&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IEC61580/IEC62056-21 ====&lt;br /&gt;
Value: &#039;&#039;string&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Address&amp;gt;5.3.5&amp;lt;/Address&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Other ====&lt;br /&gt;
Other protocols might have additional fields.&lt;br /&gt;
&lt;br /&gt;
== Element: Port ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Port&amp;gt;&lt;br /&gt;
        &amp;lt;Buffer id=&amp;quot;inBuffer&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;Buffer id=&amp;quot;outBuffer&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;IoBuffer in=&amp;quot;inBuffer&amp;quot; out=&amp;quot;outBuffer&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/Port&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Port data forwarding ===&lt;br /&gt;
It is possible to send data from one port to another.&lt;br /&gt;
&lt;br /&gt;
To do that, port1&#039;s input buffer is the same as port2&#039;s outputbuffer and vice versa.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Port id=&amp;quot;port1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Buffer id=&amp;quot;portBufferIn&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;Buffer id=&amp;quot;portBufferOut&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;IoBuffer in=&amp;quot;portBufferIn&amp;quot; out=&amp;quot;portBufferOut&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/Port&amp;gt;&lt;br /&gt;
 &amp;lt;Port id=&amp;quot;port2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;IoBuffer in=&amp;quot;portBufferOut&amp;quot; out=&amp;quot;portBufferIn&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/Port&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The same method allows creation of a local loopback.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Port id=&amp;quot;portLoopback&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Buffer id=&amp;quot;portBuffer&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;IoBuffer in=&amp;quot;portBuffer&amp;quot; out=&amp;quot;portBuffer&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/Port&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Serial port ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Port class=&amp;quot;SerialPortSetup&amp;quot;&amp;gt;&lt;br /&gt;
 	&amp;lt;BaudRate&amp;gt;9600&amp;lt;/BaudRate&amp;gt;&lt;br /&gt;
 	&amp;lt;DataBits&amp;gt;8&amp;lt;/DataBits&amp;gt;&lt;br /&gt;
 	&amp;lt;StopBits&amp;gt;1&amp;lt;/StopBits&amp;gt;&lt;br /&gt;
 	&amp;lt;Parity&amp;gt;none&amp;lt;/Parity&amp;gt;&lt;br /&gt;
 	&amp;lt;FlowControl&amp;gt;none&amp;lt;/FlowControl&amp;gt;&lt;br /&gt;
 &amp;lt;/Port&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== TCP/IP server ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Port class=&amp;quot;TcpIpServerSetup&amp;quot;&amp;gt;&lt;br /&gt;
 	&amp;lt;PortNumber&amp;gt;80&amp;lt;/PortNumber&amp;gt;&lt;br /&gt;
 	&amp;lt;ClientIpMask&amp;gt;0.0.0.0&amp;lt;/ClientIpMask&amp;gt;&lt;br /&gt;
 	&amp;lt;Interface&amp;gt;eth0&amp;lt;/Interface&amp;gt;&lt;br /&gt;
 &amp;lt;/Port&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Element: ClientIpMask ====&lt;br /&gt;
&lt;br /&gt;
Defines who is allowed to connect with us.&lt;br /&gt;
More than one possible.&lt;br /&gt;
&lt;br /&gt;
=== TCP/IP client ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Port class=&amp;quot;TcpIpClientSetup&amp;quot; name=&amp;quot;16&amp;quot;&amp;gt;&lt;br /&gt;
 	&amp;lt;PortNumber&amp;gt;502&amp;lt;/PortNumber&amp;gt;&lt;br /&gt;
 	&amp;lt;IpAddress&amp;gt;10.0.0.89&amp;lt;/IpAddress&amp;gt;&lt;br /&gt;
 	&amp;lt;Interface&amp;gt;eth0&amp;lt;/Interface&amp;gt;&lt;br /&gt;
 &amp;lt;/Port&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Virtual port ===&lt;br /&gt;
They are ports 3-5 on GW6.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Port class=&amp;quot;VirtualPortSetup&amp;quot;&amp;gt;&lt;br /&gt;
 	&amp;lt;Port class=&amp;quot;SerialPortSetup&amp;quot;&amp;gt;&lt;br /&gt;
 	      &amp;lt;BaudRate&amp;gt;9600&amp;lt;/BaudRate&amp;gt;&lt;br /&gt;
 	      &amp;lt;DataBits&amp;gt;8&amp;lt;/DataBits&amp;gt;&lt;br /&gt;
 	      &amp;lt;StopBits&amp;gt;1&amp;lt;/StopBits&amp;gt;&lt;br /&gt;
 	      &amp;lt;Parity&amp;gt;none&amp;lt;/Parity&amp;gt;&lt;br /&gt;
 	      &amp;lt;FlowControl&amp;gt;none&amp;lt;/FlowControl&amp;gt;&lt;br /&gt;
 	&amp;lt;/Port&amp;gt;&lt;br /&gt;
 &amp;lt;/Port&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Element: Objects ==&lt;br /&gt;
=== Element: Object ===&lt;br /&gt;
Depending on protocol the object belongs to (master/slave), has different child elements.&lt;br /&gt;
&lt;br /&gt;
Possible child elements:&lt;br /&gt;
*&#039;&#039;&#039;[[Gw_XML_setup#Address_of_object |Address]]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[Gw_XML_setup#Element:_Buffer | Buffer]]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[Gw_XML_setup#Element:_Filter | Filter]]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[Gw_XML_setup#Element:_MxValue | MxValue]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Attribute: type ====&lt;br /&gt;
Defines object type. &lt;br /&gt;
&lt;br /&gt;
Possible values:&lt;br /&gt;
*DI&lt;br /&gt;
*AI&lt;br /&gt;
*CN&lt;br /&gt;
*DO&lt;br /&gt;
*AO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element: MxValue ====&lt;br /&gt;
Defines the object for current/latest value.&lt;br /&gt;
&lt;br /&gt;
Child elements define default value, flags and time tag.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;MxValue id=&amp;quot;DI_6_value&amp;quot;&amp;gt;&lt;br /&gt;
 	&amp;lt;Value&amp;gt;0&amp;lt;/Value&amp;gt;&lt;br /&gt;
 	&amp;lt;BitMask&amp;gt;&lt;br /&gt;
 		&amp;lt;Bit&amp;gt;Invalid&amp;lt;/Bit&amp;gt;&lt;br /&gt;
 		&amp;lt;Bit&amp;gt;NotTopical&amp;lt;/Bit&amp;gt;&lt;br /&gt;
 	&amp;lt;/BitMask&amp;gt;&lt;br /&gt;
 &amp;lt;/MxValue&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Element: Filter ====&lt;br /&gt;
Defines what is going to happen to the incoming measured value.&lt;br /&gt;
&lt;br /&gt;
Filters can be daisy chained. To achieve different outcomes.&lt;br /&gt;
&lt;br /&gt;
When an event is received, it is sent to it&#039;s filter. After the filter does what it&#039;s supposed to do, it will pass the event to the &#039;&#039;&#039;Next&#039;&#039;&#039; Filter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Filter class=&amp;quot;Change&amp;quot;&amp;gt;&lt;br /&gt;
 	&amp;lt;Filter class=&amp;quot;Proxy&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;/Filter&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== AddToBuffer =====&lt;br /&gt;
AddToBuffer may have more than one &#039;&#039;&#039;Target&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Target&#039;&#039;&#039; is a Buffer object.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Filter class=&amp;quot;AddToBuffer&amp;quot;&amp;gt;&lt;br /&gt;
 	&amp;lt;Target ref=&amp;quot;DI_0_7_buf&amp;quot;/&amp;gt;&lt;br /&gt;
 	&amp;lt;Target ref=&amp;quot;DI_1_7_buf&amp;quot;/&amp;gt;&lt;br /&gt;
 	&amp;lt;Target ref=&amp;quot;DI_2_7_buf&amp;quot;/&amp;gt;&lt;br /&gt;
 	&amp;lt;Target ref=&amp;quot;DI_3_7_buf&amp;quot;/&amp;gt;&lt;br /&gt;
 	&amp;lt;Target ref=&amp;quot;DI_4_7_buf&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/Filter&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
===== Assert =====&lt;br /&gt;
Passes event to the next filter only if specified target(&#039;&#039;&#039;[[Gw_XML_setup#Element:_MxValue |MxValue]]&#039;&#039;&#039;) &#039;&#039;&#039;==&#039;&#039;&#039; false.&lt;br /&gt;
&lt;br /&gt;
Possible use cases:&lt;br /&gt;
* Respond negatively to control commands&lt;br /&gt;
* Signal blocking&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Filter class=&amp;quot;Assert&amp;quot;&amp;gt;&lt;br /&gt;
 	&amp;lt;Ref&amp;gt;DI_7_value&amp;lt;Ref/&amp;gt;&lt;br /&gt;
 &amp;lt;/Filter&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Change =====&lt;br /&gt;
Detects change in Digital measurments value and status bits.&lt;br /&gt;
===== Deadband =====&lt;br /&gt;
Used to detect change in analog and counter values&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Filter class=&amp;quot;Deadband&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;Type&amp;gt;X&amp;lt;/Type&amp;gt;&lt;br /&gt;
         [...]&lt;br /&gt;
 &amp;lt;/Filter&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Type &lt;br /&gt;
** Default is Deadband1, if Deadband1 then Type is unnecessary&lt;br /&gt;
&lt;br /&gt;
====== Integral ======&lt;br /&gt;
New deadband type, not implemented.&lt;br /&gt;
====== Absolute ======&lt;br /&gt;
This deadband is used for counter values.&lt;br /&gt;
&lt;br /&gt;
 f = abs( new_value - current_value ) &amp;gt; Threshold&lt;br /&gt;
&lt;br /&gt;
* Threshold&lt;br /&gt;
** Integer value&lt;br /&gt;
** If value=0; then no need for filter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Filter class=&amp;quot;Deadband&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Type&amp;gt;Absolute&amp;lt;/Type&amp;gt;&lt;br /&gt;
 &amp;lt;Threshold&amp;gt;X&amp;lt;/Threshold&amp;gt;&lt;br /&gt;
&amp;lt;/Filter&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
====== Deadband1 ======&lt;br /&gt;
This is the legacy GW6 deadband mode&lt;br /&gt;
This deadband is used for analog values.&lt;br /&gt;
&lt;br /&gt;
 if( (new_value &amp;lt; Critical.min) || (new_value &amp;gt; Critical.max) )&lt;br /&gt;
 {&lt;br /&gt;
     current_threshold = Threshold2&lt;br /&gt;
 }&lt;br /&gt;
 else &lt;br /&gt;
 {&lt;br /&gt;
     current_threshold = Threshold1&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 if ( new_value.is_normalized )&lt;br /&gt;
     calculated_threshold = current_threshold / 100&lt;br /&gt;
 else&lt;br /&gt;
     calculated_threshold = (Scale.max - Scale.min) * current_threshold / 100&lt;br /&gt;
 &lt;br /&gt;
 f = abs( new_value - current_value ) &amp;gt; calculated_threshold&lt;br /&gt;
&lt;br /&gt;
* If Threshold1=0 and Threshold2=0, do not add Deadband filter.&lt;br /&gt;
* Element Scale&lt;br /&gt;
** Unneccessary when Scale.min=0 and Scale.max=0&lt;br /&gt;
* Elements Critical and Threshold2&lt;br /&gt;
** These elements are unnecessary when Critical.min=0 and Critical.max=0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Example 1&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Both &#039;&#039;&#039;Deadband1&#039;&#039;&#039; and &#039;&#039;&#039;Deadband2&#039;&#039;&#039; active&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Filter class=&amp;quot;Deadband&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Scale min=&amp;quot;1&amp;quot; max=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;Threshold1&amp;gt;X&amp;lt;/Threshold1&amp;gt;&lt;br /&gt;
  &amp;lt;Critical min=&amp;quot;2&amp;quot; max=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;Threshold2&amp;gt;X&amp;lt;/Threshold2&amp;gt;&lt;br /&gt;
 &amp;lt;/Filter&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Example 2&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Works only on &#039;&#039;&#039;normalized&#039;&#039;&#039; values&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Filter class=&amp;quot;Deadband&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Threshold1&amp;gt;X&amp;lt;/Threshold1&amp;gt;&lt;br /&gt;
 &amp;lt;/Filter&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Example 3&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Works on &#039;&#039;&#039;normalized&#039;&#039;&#039; and &#039;&#039;&#039;floating point&#039;&#039;&#039; values&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Filter class=&amp;quot;Deadband&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Scale min=&amp;quot;1&amp;quot; max=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;Threshold1&amp;gt;X&amp;lt;/Threshold1&amp;gt;&lt;br /&gt;
 &amp;lt;/Filter&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Fallback =====&lt;br /&gt;
Falls back to specified value.&lt;br /&gt;
===== Normalize =====&lt;br /&gt;
This filter is used for converting floating point value to normalized value.&lt;br /&gt;
&lt;br /&gt;
This filter works only on floating point values. Normalized values shall be passed on without change &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Filter class=&amp;quot;Normalize&amp;quot;&amp;gt;&lt;br /&gt;
 	&amp;lt;To&amp;gt;-1...1&amp;lt;/To&amp;gt;&lt;br /&gt;
 	&amp;lt;Max&amp;gt;100&amp;lt;/Max&amp;gt;&lt;br /&gt;
 	&amp;lt;Min&amp;gt;10&amp;lt;/Min&amp;gt;&lt;br /&gt;
 &amp;lt;/Filter&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Element &#039;&#039;&#039;To&#039;&#039;&#039;  has two possible value: &#039;&#039;&#039;-1...1&#039;&#039;&#039; or &#039;&#039;&#039;0...1&#039;&#039;&#039; and this selects the formula and overflow conditions being used.&lt;br /&gt;
&lt;br /&gt;
====== Range -1...1 ======&lt;br /&gt;
 normalized_value=float_value/Max&lt;br /&gt;
&lt;br /&gt;
overflow is set when &#039;&#039;&#039;normalized_value &amp;lt; -1 &amp;amp;&amp;amp; normalized_value &amp;gt; 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
No element &#039;&#039;&#039;Min&#039;&#039;&#039; for this range&lt;br /&gt;
&lt;br /&gt;
====== Range 0...1 ======&lt;br /&gt;
 normalized_value=(float_value-Min)/(Max-Min)&lt;br /&gt;
&lt;br /&gt;
overflow is set when &#039;&#039;&#039;normalized_value &amp;lt; 0 &amp;amp;&amp;amp; normalized_value &amp;gt; 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===== Inversion =====&lt;br /&gt;
Inverts the passed digital value..&lt;br /&gt;
===== If-else =====&lt;br /&gt;
Input: digital value&lt;br /&gt;
&lt;br /&gt;
This is not final!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Filter class=&amp;quot;IfElse&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;True&amp;gt;&lt;br /&gt;
    &amp;lt;Filter class=&amp;quot;AddToBuffer&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Target ref=&amp;quot;DO_device_output1_buf&amp;quot;/&amp;gt;  &lt;br /&gt;
    &amp;lt;/Filter&amp;gt;&lt;br /&gt;
&amp;lt;/True&amp;gt;&lt;br /&gt;
&amp;lt;False&amp;gt;&lt;br /&gt;
    &amp;lt;Filter class=&amp;quot;AddToBuffer&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Target ref=&amp;quot;DO_device_output2_buf&amp;quot;/&amp;gt;  &lt;br /&gt;
    &amp;lt;/Filter&amp;gt;&lt;br /&gt;
&amp;lt;/False&amp;gt;&lt;br /&gt;
&amp;lt;/Filter&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== OutputController =====&lt;br /&gt;
This filter is used with Formulas when output controlling is needed.&lt;br /&gt;
&lt;br /&gt;
* Count&lt;br /&gt;
** Default value if count not specified, &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
** Number of output commands&lt;br /&gt;
** Integer: &#039;&#039;&#039;1...X&#039;&#039;&#039; ( X = uint32_t )&lt;br /&gt;
** String: &#039;&#039;&#039;inf&#039;&#039;&#039; ( infinity, if Count is not convertable to integer, then inifinity is used)&lt;br /&gt;
* Retry&lt;br /&gt;
** time to wait before retry/next command&lt;br /&gt;
** default value if not specified, 5 seconds&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Filter class=&amp;quot;OutputController&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Count&amp;gt;1&amp;lt;/Count&amp;gt;&lt;br /&gt;
  &amp;lt;Retry unit=&amp;quot;second&amp;quot;&amp;gt;5&amp;lt;/Retry&amp;gt;&lt;br /&gt;
  &amp;lt;Filter class=&amp;quot;Assert&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Ref&amp;gt;DO_device_status&amp;lt;/Ref&amp;gt;&lt;br /&gt;
    &amp;lt;Filter class=&amp;quot;AddToBuffer&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Target ref=&amp;quot;DO_device_output1_buf&amp;quot;/&amp;gt;  &lt;br /&gt;
    &amp;lt;/Filter&amp;gt;&lt;br /&gt;
  &amp;lt;/Filter&amp;gt;&lt;br /&gt;
&amp;lt;/Filter&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Proxy =====&lt;br /&gt;
&#039;&#039;&#039;Proxy&#039;&#039;&#039; may have more than one next &#039;&#039;&#039;Filter&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Filter class=&amp;quot;Proxy&amp;quot;&amp;gt;&lt;br /&gt;
 	&amp;lt;Filter class=&amp;quot;AddToBuffer&amp;quot; /&amp;gt;&lt;br /&gt;
 	&amp;lt;Filter class=&amp;quot;AddToBuffer&amp;quot; /&amp;gt;&lt;br /&gt;
 	&amp;lt;Filter class=&amp;quot;Fallback&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;/Filter&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
===== Scale =====&lt;br /&gt;
This filter works only on normalized values. Non-normalized(floating point) values shall be passed on without change&lt;br /&gt;
 scaled_value=normalized_value*(Max-Min)+Min&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Filter class=&amp;quot;Scale&amp;quot;&amp;gt;&lt;br /&gt;
 	&amp;lt;Max&amp;gt;100&amp;lt;/Max&amp;gt;&lt;br /&gt;
 	&amp;lt;Min&amp;gt;10&amp;lt;/Min&amp;gt;&lt;br /&gt;
 &amp;lt;/Filter&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If element &#039;&#039;&#039;Min&#039;&#039;&#039;=0 then no need to define that element, value 0 is used as default for Min.&lt;br /&gt;
Element &#039;&#039;&#039;Max&#039;&#039;&#039; must always exist.&lt;br /&gt;
Element &#039;&#039;&#039;To&#039;&#039;&#039; is not used.&lt;br /&gt;
&lt;br /&gt;
===== CsvLogger =====&lt;br /&gt;
??? kas teha filtrina või mõni muu lahendus?&lt;br /&gt;
===== UpdateValue =====&lt;br /&gt;
&#039;&#039;&#039;Target&#039;&#039;&#039; is a MxValue object.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Filter class=&amp;quot;UpdateValue&amp;quot;&amp;gt;&lt;br /&gt;
 	&amp;lt;Target ref=&amp;quot;DI_7_value&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/Filter&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Square =====&lt;br /&gt;
===== SquareRoot =====&lt;br /&gt;
===== Sine =====&lt;br /&gt;
===== Cosine =====&lt;br /&gt;
===== Tangent =====&lt;br /&gt;
===== Cotangent =====&lt;br /&gt;
 f = 1 / tan(x)&lt;br /&gt;
===== Secant =====&lt;br /&gt;
 f = 1 / cos(x)&lt;br /&gt;
===== Cosecant =====&lt;br /&gt;
 f = 1 / sin(x)&lt;br /&gt;
===== log =====&lt;br /&gt;
===== log10 =====&lt;br /&gt;
===== exp =====&lt;br /&gt;
&lt;br /&gt;
==== Element: Buffer ====&lt;br /&gt;
Defines a buffer object, with depth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Buffer id=&amp;quot;DI_8_0_buf&amp;quot;&amp;gt;&lt;br /&gt;
 	&amp;lt;Depth&amp;gt;10&amp;lt;/Depth&amp;gt;&lt;br /&gt;
 &amp;lt;/Buffer&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Element: Formula ===&lt;br /&gt;
Possible child elements:&lt;br /&gt;
*&#039;&#039;&#039;[[Gw_XML_setup#Element:_Buffer | Buffer]]&#039;&#039;&#039; &lt;br /&gt;
*&#039;&#039;&#039;[[Gw_XML_setup#Element:_MxValue | MxValue]]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[Gw_XML_setup#Element:_Filter | Filter]]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;[[Gw_XML_setup#Element:_Expression | Expression]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Attribute: type - This defines the result type of formula. Possible choices DI, AI, CN&lt;br /&gt;
&lt;br /&gt;
==== Element: Expression ====&lt;br /&gt;
&lt;br /&gt;
Element name &#039;&#039;&#039;Expression&#039;&#039;&#039; may be abbreviated as &#039;&#039;&#039;Exp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Element name &#039;&#039;&#039;Operation&#039;&#039;&#039; may be abbreviated as &#039;&#039;&#039;O&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Elements &#039;&#039;&#039;a&#039;&#039;&#039; and &#039;&#039;&#039;b&#039;&#039;&#039; are current expressions inputs.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Operation !! operand count !! example !! description&lt;br /&gt;
|-&lt;br /&gt;
| and || ∞, a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; a&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; ... a&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt; || a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; &amp;amp;and; a&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; &amp;amp;and; a&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| or || ∞, a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; a&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; ... a&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt; || a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; &amp;amp;or; a&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; &amp;amp;or; a&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| add || ∞, a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; a&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; ... a&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt; || a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; + a&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; + a&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| sub || ∞, a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; a&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; ... a&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt; || a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; &amp;amp;minus; a&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; &amp;amp;minus; a&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| not || 1, a || !a&lt;br /&gt;
|-&lt;br /&gt;
| sqr || 1, a || a²&lt;br /&gt;
|-&lt;br /&gt;
| sqrt || 1, a || &amp;amp;radic;a&lt;br /&gt;
|-&lt;br /&gt;
| sin || 1, a || sin(a)&lt;br /&gt;
|-&lt;br /&gt;
| cos || 1, a || cos(a)&lt;br /&gt;
|-&lt;br /&gt;
| tan || 1, a || tan(a)&lt;br /&gt;
|-&lt;br /&gt;
| arcsin || 1, a || arcsin(a)&lt;br /&gt;
|-&lt;br /&gt;
| arccos || 1, a || arccos(a)&lt;br /&gt;
|-&lt;br /&gt;
| arctan || 1, a || arctan(a)&lt;br /&gt;
|-&lt;br /&gt;
| sec || 1, a || 1 / cos(a)&lt;br /&gt;
|-&lt;br /&gt;
| cosec || 1, a || 1 / sin(a)&lt;br /&gt;
|-&lt;br /&gt;
| cotan || 1, a || 1 / tan(a)&lt;br /&gt;
|-&lt;br /&gt;
| log || 1, a || log&amp;lt;sub&amp;gt;e&amp;lt;/sub&amp;gt;(a) || The natural logarithm is the base-e logarithm, the inverse of the natural exponential function (exp)&lt;br /&gt;
|-&lt;br /&gt;
| log10 || 1, a || log&amp;lt;sub&amp;gt;10&amp;lt;/sub&amp;gt;(a) || Returns the common (base-10) logarithm of x&lt;br /&gt;
|-&lt;br /&gt;
| exp || 1, a || exp(a) || Returns the base-e exponential function of x, which is the &#039;&#039;&#039;e&#039;&#039;&#039; number raised to the power x.&lt;br /&gt;
|-&lt;br /&gt;
| mul || 2, a b || a*b&lt;br /&gt;
|-&lt;br /&gt;
| div || 2, a b || a/b&lt;br /&gt;
|-&lt;br /&gt;
| pow || 2, a b || a^b&lt;br /&gt;
|-&lt;br /&gt;
| xor || 2, a b || a&amp;amp;oplus;b&lt;br /&gt;
|-&lt;br /&gt;
| eq || 2, a b || a = b || Check equality&lt;br /&gt;
|-&lt;br /&gt;
| lt || 2, a b || a &amp;lt; b || Less than&lt;br /&gt;
|-&lt;br /&gt;
| gt || 2, a b || a &amp;gt; b || Greater than&lt;br /&gt;
|}&lt;br /&gt;
===== example 1: or =====&lt;br /&gt;
 f = a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; &amp;amp;or; a&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Expression&amp;gt;&lt;br /&gt;
    &amp;lt;Operation&amp;gt;or&amp;lt;Operation/&amp;gt;&lt;br /&gt;
    &amp;lt;a&amp;gt;Buffer&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;a&amp;gt;MxValue&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;Filter /&amp;gt;&lt;br /&gt;
&amp;lt;/Expression&amp;gt; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== example 2: power =====&lt;br /&gt;
 f = a^b&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Expression&amp;gt;&lt;br /&gt;
    &amp;lt;Operation&amp;gt;pow&amp;lt;Operation/&amp;gt;&lt;br /&gt;
    &amp;lt;a&amp;gt;Buffer&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;b&amp;gt;Buffer&amp;lt;/b&amp;gt;&lt;br /&gt;
    &amp;lt;Filter/&amp;gt;&lt;br /&gt;
 &amp;lt;/Expression&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Formula example 1 ====&lt;br /&gt;
 f = @1 or @2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Formula type=&amp;quot;DI&amp;quot; id=&amp;quot;DI_f0&amp;quot; comment=&amp;quot;Virtual1 OK&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;MxValue id=&amp;quot;DI_f0_value&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;Buffer id=&amp;quot;DI_f0_0_0_buf&amp;quot; /&amp;gt; &amp;lt;!-- @1 --&amp;gt;&lt;br /&gt;
      &amp;lt;Buffer id=&amp;quot;DI_f0_0_1_buf&amp;quot; /&amp;gt; &amp;lt;!-- @2 --&amp;gt;&lt;br /&gt;
      &amp;lt;Expression&amp;gt;                  &amp;lt;!-- @1 or @2 --&amp;gt;&lt;br /&gt;
          &amp;lt;O&amp;gt;or&amp;lt;O/&amp;gt;&lt;br /&gt;
          &amp;lt;a&amp;gt;DI_f0_0_0_buf&amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;a&amp;gt;DI_f0_0_1_buf&amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;Filter ref=&amp;quot;DI_f0_filter&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;/Expression&amp;gt;&lt;br /&gt;
      &amp;lt;Filter id=&amp;quot;DI_f0_filter&amp;quot; class=&amp;quot;Change&amp;quot;&amp;gt;  &amp;lt;!-- result filter --&amp;gt;&lt;br /&gt;
          &amp;lt;Filter class=&amp;quot;UpdateValue&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;Target ref=&amp;quot;DI_f0_value&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;Filter class=&amp;quot;AddToBuffer&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/Filter&amp;gt;&lt;br /&gt;
      &amp;lt;/Filter&amp;gt;&lt;br /&gt;
 &amp;lt;/Formula&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DI_f0_0_0_buf&#039;&#039;&#039; and &#039;&#039;&#039;DI_f0_0_1_buf&#039;&#039;&#039; are inputs to formula.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Formula example 2 ====&lt;br /&gt;
 f = (@1 + @2) / (@3 + @4)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Formula type=&amp;quot;DI&amp;quot; id=&amp;quot;DI_f0&amp;quot; comment=&amp;quot;formula example 2, f = (@1 + @2) / (@3 + @4)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;MxValue id=&amp;quot;DI_f0_value&amp;quot;/&amp;gt;  &amp;lt;!-- This variable holds the latest value of formula --&amp;gt;&lt;br /&gt;
    &amp;lt;Buffer id=&amp;quot;DI_f0_1_buf&amp;quot; /&amp;gt;  &amp;lt;!-- @1 --&amp;gt;&lt;br /&gt;
    &amp;lt;Buffer id=&amp;quot;DI_f0_2_buf&amp;quot; /&amp;gt;  &amp;lt;!-- @2 --&amp;gt;&lt;br /&gt;
    &amp;lt;Buffer id=&amp;quot;DI_f0_3_buf&amp;quot; /&amp;gt;  &amp;lt;!-- @3 --&amp;gt;&lt;br /&gt;
    &amp;lt;Buffer id=&amp;quot;DI_f0_4_buf&amp;quot; /&amp;gt;  &amp;lt;!-- @4 --&amp;gt;&lt;br /&gt;
    &amp;lt;Buffer id=&amp;quot;DI_f0_t1_buf&amp;quot; /&amp;gt; &amp;lt;!-- temporary result of @1 + @2 --&amp;gt;&lt;br /&gt;
    &amp;lt;Buffer id=&amp;quot;DI_f0_t2_buf&amp;quot; /&amp;gt; &amp;lt;!-- temporary result of @2 + @3 --&amp;gt;&lt;br /&gt;
    &amp;lt;Expression&amp;gt;                 &amp;lt;!-- @1 + @2 --&amp;gt;&lt;br /&gt;
        &amp;lt;O&amp;gt;add&amp;lt;/O&amp;gt;&lt;br /&gt;
        &amp;lt;a&amp;gt;DI_f0_1_buf&amp;lt;/a&amp;gt;       &amp;lt;!-- @1 --&amp;gt;&lt;br /&gt;
        &amp;lt;a&amp;gt;DI_f0_2_buf&amp;lt;/a&amp;gt;       &amp;lt;!-- @2 --&amp;gt;&lt;br /&gt;
        &amp;lt;Filter class=&amp;quot;AddToBuffer&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Target ref=&amp;quot;DI_f0_t1_buf&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Filter&amp;gt;&lt;br /&gt;
    &amp;lt;/Expression&amp;gt;&lt;br /&gt;
    &amp;lt;Expression&amp;gt;                 &amp;lt;!-- @3 + @4 --&amp;gt;&lt;br /&gt;
        &amp;lt;O&amp;gt;add&amp;lt;/O&amp;gt;&lt;br /&gt;
        &amp;lt;a&amp;gt;DI_f0_3_buf&amp;lt;/a&amp;gt;       &amp;lt;!-- @3 --&amp;gt;&lt;br /&gt;
        &amp;lt;a&amp;gt;DI_f0_4_buf&amp;lt;/a&amp;gt;       &amp;lt;!-- @4 --&amp;gt;&lt;br /&gt;
        &amp;lt;Filter class=&amp;quot;AddToBuffer&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Target ref=&amp;quot;DI_f0_t2_buf&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Filter&amp;gt;&lt;br /&gt;
    &amp;lt;/Expression&amp;gt;&lt;br /&gt;
    &amp;lt;Expression&amp;gt;                 &amp;lt;!-- f = (@1 + @2) / (@3 + @4) --&amp;gt;&lt;br /&gt;
        &amp;lt;O&amp;gt;div&amp;lt;/O&amp;gt;&lt;br /&gt;
        &amp;lt;a&amp;gt;DI_f0_t1_buf&amp;lt;/a&amp;gt;      &amp;lt;!-- @1 + @2 --&amp;gt;&lt;br /&gt;
        &amp;lt;a&amp;gt;DI_f0_t2_buf&amp;lt;/a&amp;gt;      &amp;lt;!-- @3 + @4 --&amp;gt;&lt;br /&gt;
        &amp;lt;Filter ref=&amp;quot;di_f0_filter&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Expression&amp;gt;&lt;br /&gt;
    &amp;lt;Filter id=&amp;quot;di_f0_filter&amp;quot; class=&amp;quot;AddToBuffer&amp;quot;&amp;gt; &amp;lt;!-- result filter --&amp;gt;&lt;br /&gt;
        &amp;lt;Target ref=&amp;quot;DI_SCADA_buf&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/Filter&amp;gt;&lt;br /&gt;
 &amp;lt;/Formula&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Formula example 3 ====&lt;br /&gt;
Comparison with constant&lt;br /&gt;
&lt;br /&gt;
 f = @1 &amp;amp;lt; 3,5&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Formula type=&amp;quot;DI&amp;quot; id=&amp;quot;DI_f0&amp;quot; comment=&amp;quot;Formula example 3, constant, f = @1 &amp;lt; 3,5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;MxValue id=&amp;quot;DI_f0_value&amp;quot;/&amp;gt;   &amp;lt;!-- latest value of formula --&amp;gt;&lt;br /&gt;
      &amp;lt;Buffer id=&amp;quot;AI_f0_0_0_buf&amp;quot; /&amp;gt; &amp;lt;!-- @1 --&amp;gt;&lt;br /&gt;
      &amp;lt;Expression&amp;gt;                  &amp;lt;!-- @1 &amp;lt; 3,5 --&amp;gt;&lt;br /&gt;
          &amp;lt;O&amp;gt;lt&amp;lt;O/&amp;gt;&lt;br /&gt;
          &amp;lt;a&amp;gt;AI_f0_0_0_buf&amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;b&amp;gt;&amp;lt;MxValue&amp;gt;3.5&amp;lt;/MxValue&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
          &amp;lt;Filter ref=&amp;quot;DI_f0_filter&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;/Expression&amp;gt;&lt;br /&gt;
      &amp;lt;Filter id=&amp;quot;DI_f0_filter&amp;quot; class=&amp;quot;Change&amp;quot;&amp;gt;  &amp;lt;!-- result filter --&amp;gt;&lt;br /&gt;
          &amp;lt;Filter class=&amp;quot;UpdateValue&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;Target ref=&amp;quot;DI_f0_value&amp;quot;/&amp;gt;&lt;br /&gt;
              &amp;lt;Filter class=&amp;quot;AddToBuffer&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/Filter&amp;gt;&lt;br /&gt;
      &amp;lt;/Filter&amp;gt;&lt;br /&gt;
 &amp;lt;/Formula&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Element: Interfaces ==&lt;br /&gt;
Network setup&lt;br /&gt;
&lt;br /&gt;
Has at least one &#039;&#039;&#039;Interface&#039;&#039;&#039; element.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Interface name=&amp;quot;eth0&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;IpAddress&amp;gt;192.168.0.111&amp;lt;/IpAddress&amp;gt;&lt;br /&gt;
        &amp;lt;Netmask&amp;gt;255.255.255.0&amp;lt;/Netmask&amp;gt;&lt;br /&gt;
        &amp;lt;Gateway&amp;gt;192.168.0.1&amp;lt;/Gateway&amp;gt;&lt;br /&gt;
 &amp;lt;/Interface&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== VLAN ===&lt;br /&gt;
Example with required elements.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Vlan interface=&amp;quot;eth0&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;VlanId&amp;gt;10&amp;lt;/VlanId&amp;gt;&lt;br /&gt;
     &amp;lt;VlanIngressQos&amp;gt;4&amp;lt;/VlanIngressQos&amp;gt;&lt;br /&gt;
     &amp;lt;VlanEgressQos&amp;gt;4&amp;lt;/VlanEgressQos&amp;gt;&lt;br /&gt;
     &amp;lt;IpIngressQos&amp;gt;0&amp;lt;/IpIngressQos&amp;gt;&lt;br /&gt;
     &amp;lt;IpEgressQos&amp;gt;0&amp;lt;/IpEgressQos&amp;gt;&lt;br /&gt;
 &amp;lt;/Vlan&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example with additional elements from &#039;&#039;&#039;Interface&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;Vlan interface=&amp;quot;eth0&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;VlanId&amp;gt;131&amp;lt;/VlanId&amp;gt;&lt;br /&gt;
     &amp;lt;VlanIngressQos&amp;gt;4&amp;lt;/VlanIngressQos&amp;gt;&lt;br /&gt;
     &amp;lt;VlanEgressQos&amp;gt;4&amp;lt;/VlanEgressQos&amp;gt;&lt;br /&gt;
     &amp;lt;IpIngressQos&amp;gt;0&amp;lt;/IpIngressQos&amp;gt;&lt;br /&gt;
     &amp;lt;IpEgressQos&amp;gt;0&amp;lt;/IpEgressQos&amp;gt;&lt;br /&gt;
     &amp;lt;IpAddress&amp;gt;172.18.0.11&amp;lt;/IpAddress&amp;gt;&lt;br /&gt;
     &amp;lt;Netmask&amp;gt;255.255.255.0&amp;lt;/Netmask&amp;gt;&lt;br /&gt;
     &amp;lt;Gateway&amp;gt;172.18.0.254&amp;lt;/Gateway&amp;gt;&lt;br /&gt;
 &amp;lt;/Vlan&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Janek</name></author>
	</entry>
</feed>