<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="cs">
	<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?action=history&amp;feed=atom&amp;title=FULL-C%3A_TopBoard_functions</id>
	<title>FULL-C: TopBoard functions - Historie editací</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?action=history&amp;feed=atom&amp;title=FULL-C%3A_TopBoard_functions"/>
	<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_TopBoard_functions&amp;action=history"/>
	<updated>2026-06-13T18:00:07Z</updated>
	<subtitle>Historie editací této stránky</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_TopBoard_functions&amp;diff=536&amp;oldid=prev</id>
		<title>Adamn v 25. 6. 2022, 07:46</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_TopBoard_functions&amp;diff=536&amp;oldid=prev"/>
		<updated>2022-06-25T07:46:18Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;cs&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Starší verze&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Verze z 25. 6. 2022, 07:46&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l83&quot; &gt;Řádek 83:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Řádek 83:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''DOPORUČENÍ''': aktualizujte si firmware v SDS, v rámci této funkce došlo k řadě zlepšení z hlediska následné programové obsluhy odezvy na obsluhu tlačítek.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''DOPORUČENÍ''': aktualizujte si firmware v SDS, v rámci této funkce došlo k řadě zlepšení z hlediska následné programové obsluhy odezvy na obsluhu tlačítek.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Využití ve vašem programu - stačí sledovat obsah pole changed[], a reagovat na jeho obsah. Pro každé tlačítko je vždy uveden počet plných kliknutí od posledního zeptání se prostřednictvím volání této funkce. Program tak může efektivně reagovat na všechna kliknutí na tlačítka, která uživatel v mezičase udělal (a žádné kliknutí se &amp;quot;neztratí&amp;quot;).&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l89&quot; &gt;Řádek 89:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Řádek 91:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Funkce je dostupná ve FULL-C od verze 0x0D (tedy od 06/2022).&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Funkce je dostupná ve FULL-C od verze 0x0D (tedy od 06/2022).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Funkce zapisuje hodnoty do dvou předaných polí. Hodnoty jsou interně akumulovány ve firmware SDS, a předány FULL-C programu vždy při zavolání této funkce. Současně dojde k vynulování interních akumulátorů pro všechny tyto hodnoty v SDS. Tím pádem, každé jednotlivé zavolání této funkce, obdrží přesný počet stisků a uvolnění všech tlačítek, od okamžiku posledního volání této funkce.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Funkce zapisuje hodnoty do dvou předaných polí. Hodnoty jsou interně akumulovány ve firmware SDS, a předány FULL-C programu vždy při zavolání této funkce. Současně dojde k vynulování interních akumulátorů pro všechny tyto hodnoty v SDS. Tím pádem, každé jednotlivé zavolání této funkce, obdrží přesný počet stisků a uvolnění všech tlačítek, od okamžiku posledního volání této funkce &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;(pro úplnost: tato počítadla pro funkci _updn nejsou nulována voláním funkce SDS_TOPB_keyboard_status, ale pouze voláním funkce _updn)&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l106&quot; &gt;Řádek 106:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Řádek 108:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  releases[5] = počet &amp;quot;uvolnění&amp;quot; tlačítka TL5 od posledního volání této funkce  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  releases[5] = počet &amp;quot;uvolnění&amp;quot; tlačítka TL5 od posledního volání této funkce  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Při zmáčknutí tlačítka prstem, dojde k započítání &amp;quot;stisku&amp;quot; a po uvolnění dojde k započítání &amp;quot;uvolnění&amp;quot;. Jedno &amp;quot;kliknutí&amp;quot; na tlačítko tedy znamená jeden stisk a &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;uvolnení&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Při zmáčknutí tlačítka prstem, dojde k započítání &amp;quot;stisku&amp;quot; a po uvolnění dojde k započítání &amp;quot;uvolnění&amp;quot;. Jedno &amp;quot;kliknutí&amp;quot; na tlačítko tedy znamená jeden stisk a &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;uvolnění&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;SDS interně filtruje zákmity, takže uvedené hodnoty jsou předány už po filtraci.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;SDS interně filtruje zákmity, takže uvedené hodnoty jsou předány už po filtraci.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l260&quot; &gt;Řádek 260:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Řádek 262:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  unsigned int changed;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  unsigned int changed&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;, i&lt;/ins&gt;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  unsigned int actual;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  unsigned int actual;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  unsigned int &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;intermediatePresses&lt;/del&gt;[6];&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  unsigned int &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;calculated&lt;/ins&gt;[6];&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;unsigned int total[6];&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  char text[32];&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  char text[32];&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  printf(&amp;quot;START LCD+KEYBOARD TEST\n&amp;quot;);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  printf(&amp;quot;START LCD+KEYBOARD TEST\n&amp;quot;);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt; &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  // clear LCD [OP:111] = FLIP ; clear -&amp;gt; ADDITIONALFLAG = 1&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  // clear LCD [OP:111] = FLIP ; clear -&amp;gt; ADDITIONALFLAG = 1&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  SDS_TOPB_LCDdraw(0,0,0,0, 0b11100000, 0b00000001); // --- identical to:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  SDS_TOPB_LCDdraw(0,0,0,0, 0b11100000, 0b00000001); // --- identical to:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  SDS_TOPB_LCDflip(1);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  SDS_TOPB_LCDflip(1);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt; &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  // main loop&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  // main loop&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  for (;;)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  for (;;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  {&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  {&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt; &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    // read last known KBD status&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    // read last known KBD status&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    SDS_TOPB_keyboard_status(&amp;amp;changed, &amp;amp;actual, &amp;amp;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;intermediatePresses&lt;/del&gt;);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    SDS_TOPB_keyboard_status(&amp;amp;changed, &amp;amp;actual, &amp;amp;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;calculated&lt;/ins&gt;);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    if (changed)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    if (changed)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l283&quot; &gt;Řádek 283:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Řádek 286:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         // print to console&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         // print to console&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         printf(&amp;quot;%d %d [%d %d %d %d %d %d]\n&amp;quot;, changed, actual,&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         printf(&amp;quot;%d %d [%d %d %d %d %d %d]\n&amp;quot;, changed, actual,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;intermediatePresses&lt;/del&gt;[0],&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;calculated&lt;/ins&gt;[0],&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;intermediatePresses&lt;/del&gt;[1],&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;calculated&lt;/ins&gt;[1],&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;intermediatePresses&lt;/del&gt;[2],&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;calculated&lt;/ins&gt;[2],&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;intermediatePresses&lt;/del&gt;[3],&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;calculated&lt;/ins&gt;[3],&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;intermediatePresses&lt;/del&gt;[4],&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;calculated&lt;/ins&gt;[4],&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;intermediatePresses&lt;/del&gt;[5]);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;calculated&lt;/ins&gt;[5]);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;        &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;       // show the live situation:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        // setup text&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        // setup text&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        snprintf(text, 22+1, &amp;quot;actual = %02X &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;  &lt;/del&gt;&amp;quot;, actual);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        snprintf(text, 22+1, &amp;quot;actual = %02X &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt; ch = %02X &lt;/ins&gt;&amp;quot;, actual&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;, changed&lt;/ins&gt;);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        // write to LCD&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        // write to LCD&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        SDS_TOPB_LCDtext(0, 0, 0, text, strlen(text));&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        SDS_TOPB_LCDtext(0, 0, 0, text, strlen(text));&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;// we are counting each full button clicks:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;       // accumulate&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;       for (i = 1; i &amp;lt; 6; i++) total[i] += calculated[i];&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;       // setup text&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;       snprintf(text, 22+1, &amp;quot;%02u  %02u  %02u  %02u  %02u&amp;quot;,  total[1], total[2], total[3], total[4], total[5]);&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;       // write to LCD&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;       SDS_TOPB_LCDtext(0, 2, 0, text, strlen(text));&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        // redraw LCD&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        // redraw LCD&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        SDS_TOPB_LCDflip(0);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        SDS_TOPB_LCDflip(0);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l301&quot; &gt;Řádek 301:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Řádek 318:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    // wait 100 msecs = try to make it longer, to simulate harsh conditions = and you will see it yet works !&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    // wait 100 msecs = try to make it longer, to simulate harsh conditions = and you will see it yet works !&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;   // try to change the value to any other to see how it works&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    wait(100);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    wait(100);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l306&quot; &gt;Řádek 306:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Řádek 324:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_TopBoard_functions&amp;diff=516&amp;oldid=prev</id>
		<title>Adamn v 2. 6. 2022, 08:25</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_TopBoard_functions&amp;diff=516&amp;oldid=prev"/>
		<updated>2022-06-02T08:25:47Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;cs&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Starší verze&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Verze z 2. 6. 2022, 08:25&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l11&quot; &gt;Řádek 11:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Řádek 11:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Pro obsluhu klávesnice a displaye, můžete použít tyto funkce:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Pro obsluhu klávesnice a displaye, můžete použít tyto funkce:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;          void SDS_TOPB_keyboard_status(unsigned int *changed, unsigned int *actual, unsigned int *&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;intermediatePresses&lt;/del&gt;[6]);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;          void SDS_TOPB_keyboard_status(unsigned int *changed, unsigned int *actual, unsigned int *&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;calculated[6]);&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt; &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;         void SDS_TOPB_keyboard_updn(unsigned int *presses[6], unsigned int *releases&lt;/ins&gt;[6]);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;          void SDS_TOPB_LCDdraw(unsigned int X0, unsigned int Y0, unsigned int X1, unsigned int Y1, unsigned int DrawTYPE, unsigned int FLAGS);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;          void SDS_TOPB_LCDdraw(unsigned int X0, unsigned int Y0, unsigned int X1, unsigned int Y1, unsigned int DrawTYPE, unsigned int FLAGS);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;          void SDS_TOPB_LCDtext(unsigned int X0, unsigned int ROW, unsigned int FLAGS, char *ptr, unsigned int len);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;          void SDS_TOPB_LCDtext(unsigned int X0, unsigned int ROW, unsigned int FLAGS, char *ptr, unsigned int len);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l47&quot; &gt;Řádek 47:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Řádek 48:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Každý stisk je zaznamenán, takže k dispozici pro FULL-C program je nejen aktuální stav každého tlačítka (stisknuto/uvolněno), ale i počet stisknutí mezi jednotlivými dotazy programu (takže když uživatel rychle mačká tlačítko, tak FULL-C program vždy ví, kolikrát to bylo).&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Každý stisk je zaznamenán, takže k dispozici pro FULL-C program je nejen aktuální stav každého tlačítka (stisknuto/uvolněno), ale i počet stisknutí mezi jednotlivými dotazy programu (takže když uživatel rychle mačká tlačítko, tak FULL-C program vždy ví, kolikrát to bylo).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;'''SDS_TOPB_keyboard_status()''' je jedinou funkcí ve FULL-C, která zajišťuje kompletní obsluhu zjišťovaní stavu klávesnici. Volat tuto funkci je potřeba jen tak často, jak moc je potřeba mít nízkou odezvu.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Pole &lt;/del&gt;''&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;intermediatePresses[6]&lt;/del&gt;''&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;, navrácené touto &lt;/del&gt;funkcí, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;bude určeno pro počítání plných kliknutí (stisknutí+uvolnění) tlačítka TL1 až TL5&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Tato funkce &lt;/del&gt;je &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;k dispozici až ve firmware od 6/2022&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;=== SDS_TOPB_keyboard_status() ===&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;SDS_TOPB_keyboard_status()&lt;/ins&gt;'&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;'' je jednou ze dvou &lt;/ins&gt;funkcí &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;ve FULL-C&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;která zajišťuje kompletní obsluhu zjišťovaní stavu klávesnici&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Volat tuto funkci &lt;/ins&gt;je &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;potřeba jen tak často, jak moc je potřeba mít nízkou odezvu&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt; intermediatePresses&lt;/del&gt;[&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;0&lt;/del&gt;] &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;= vždy nula &lt;/del&gt;(&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;nepoužito&lt;/del&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Pole ''calculated&lt;/ins&gt;[&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;6&lt;/ins&gt;]&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;'', navrácené touto funkcí, bude určeno pro počítání plných kliknutí &lt;/ins&gt;(&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;stisknutí+uvolnění&lt;/ins&gt;) tlačítka TL1 &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;až TL5. '''Tato &lt;/ins&gt;funkce &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;je k dispozici až ve firmware &lt;/ins&gt;od &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;6/2022 - dřívější firmware neposkytuje hodnoty.'''&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt; intermediatePresses[1] = počet &amp;quot;plných kliknutí&amp;quot; &lt;/del&gt;tlačítka TL1 &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;od posledního volání této funkce&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt; intermediatePresses[2] = počet &amp;quot;plných kliknutí&amp;quot; tlačítka TL2 od posledního volání této funkce&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt; intermediatePresses[3] = počet &amp;quot;plných kliknutí&amp;quot; tlačítka TL3 od posledního volání této funkce &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt; intermediatePresses[4] = počet &amp;quot;plných kliknutí&amp;quot; tlačítka TL4 od posledního volání této &lt;/del&gt;funkce  &lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt; intermediatePresses[5] = počet &amp;quot;plných kliknutí&amp;quot; tlačítka TL5 &lt;/del&gt;od &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;posledního volání této funkce &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Každé volání funkce, tato všechna počítadla &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;intermediatePresses&lt;/del&gt;[] nuluje.  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt; calculated[0] = vždy nula (nepoužito)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt; calculated[1] = počet &amp;quot;plných kliknutí&amp;quot; tlačítka TL1 od posledního volání této funkce&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt; calculated[2] = počet &amp;quot;plných kliknutí&amp;quot; tlačítka TL2 od posledního volání této funkce&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt; calculated[3] = počet &amp;quot;plných kliknutí&amp;quot; tlačítka TL3 od posledního volání této funkce &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt; calculated[4] = počet &amp;quot;plných kliknutí&amp;quot; tlačítka TL4 od posledního volání této funkce &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt; calculated[5] = počet &amp;quot;plných kliknutí&amp;quot; tlačítka TL5 od posledního volání této funkce &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Každé volání funkce, tato všechna počítadla &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;calculated&lt;/ins&gt;[] nuluje.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;quot;Plné kliknutí&amp;quot; znamená, že uživatel tlačítko TLx stisknul, a pustil. Tlačítko musí být stisknuto a uvolněno, aby se to započítalo. Dokud je pouze jen stisknuto, ještě stále není započítáno (jen to průběžně uvidíte v hodnotě ''actual''), započítáno jako &amp;quot;plný klik&amp;quot; bude až uživatel tlačítko uvolní.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;quot;Plné kliknutí&amp;quot; znamená, že uživatel tlačítko TLx stisknul, a pustil. Tlačítko musí být stisknuto a uvolněno, aby se to započítalo. Dokud je pouze jen stisknuto, ještě stále není započítáno (jen to průběžně uvidíte v hodnotě ''actual''), započítáno jako &amp;quot;plný klik&amp;quot; bude až uživatel tlačítko uvolní.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l79&quot; &gt;Řádek 79:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Řádek 83:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''DOPORUČENÍ''': aktualizujte si firmware v SDS, v rámci této funkce došlo k řadě zlepšení z hlediska následné programové obsluhy odezvy na obsluhu tlačítek.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''DOPORUČENÍ''': aktualizujte si firmware v SDS, v rámci této funkce došlo k řadě zlepšení z hlediska následné programové obsluhy odezvy na obsluhu tlačítek.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=== SDS_TOPB_keyboard_updn() ===&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Funkce je dostupná ve FULL-C od verze 0x0D (tedy od 06/2022).&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Funkce zapisuje hodnoty do dvou předaných polí. Hodnoty jsou interně akumulovány ve firmware SDS, a předány FULL-C programu vždy při zavolání této funkce. Současně dojde k vynulování interních akumulátorů pro všechny tyto hodnoty v SDS. Tím pádem, každé jednotlivé zavolání této funkce, obdrží přesný počet stisků a uvolnění všech tlačítek, od okamžiku posledního volání této funkce.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; presses[0] = vždy nula (nepoužito)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; presses[1] = počet &amp;quot;stisků&amp;quot; tlačítka TL1 od posledního volání této funkce &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; presses[2] = počet &amp;quot;stisků&amp;quot; tlačítka TL2 od posledního volání této funkce &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; presses[3] = počet &amp;quot;stisků&amp;quot; tlačítka TL3 od posledního volání této funkce &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; presses[4] = počet &amp;quot;stisků&amp;quot; tlačítka TL4 od posledního volání této funkce &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; presses[5] = počet &amp;quot;stisků&amp;quot; tlačítka TL5 od posledního volání této funkce &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; releases[0] = vždy nula (nepoužito)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; releases[1] = počet &amp;quot;uvolnění&amp;quot; tlačítka TL1 od posledního volání této funkce &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; releases[2] = počet &amp;quot;uvolnění&amp;quot; tlačítka TL2 od posledního volání této funkce &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; releases[3] = počet &amp;quot;uvolnění&amp;quot; tlačítka TL3 od posledního volání této funkce &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; releases[4] = počet &amp;quot;uvolnění&amp;quot; tlačítka TL4 od posledního volání této funkce &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; releases[5] = počet &amp;quot;uvolnění&amp;quot; tlačítka TL5 od posledního volání této funkce &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Při zmáčknutí tlačítka prstem, dojde k započítání &amp;quot;stisku&amp;quot; a po uvolnění dojde k započítání &amp;quot;uvolnění&amp;quot;. Jedno &amp;quot;kliknutí&amp;quot; na tlačítko tedy znamená jeden stisk a uvolnení.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;SDS interně filtruje zákmity, takže uvedené hodnoty jsou předány už po filtraci.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_TopBoard_functions&amp;diff=509&amp;oldid=prev</id>
		<title>Adamn v 31. 5. 2022, 07:30</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_TopBoard_functions&amp;diff=509&amp;oldid=prev"/>
		<updated>2022-05-31T07:30:00Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;cs&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Starší verze&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Verze z 31. 5. 2022, 07:30&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l49&quot; &gt;Řádek 49:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Řádek 49:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''SDS_TOPB_keyboard_status()''' je jedinou funkcí ve FULL-C, která zajišťuje kompletní obsluhu zjišťovaní stavu klávesnici. Volat tuto funkci je potřeba jen tak často, jak moc je potřeba mít nízkou odezvu.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''SDS_TOPB_keyboard_status()''' je jedinou funkcí ve FULL-C, která zajišťuje kompletní obsluhu zjišťovaní stavu klávesnici. Volat tuto funkci je potřeba jen tak často, jak moc je potřeba mít nízkou odezvu.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Prakticky všechny funkce lze řešit přes pole &lt;/del&gt;''intermediatePresses[6]'', navrácené touto funkcí. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Pro každé tlačítko, v tomto poli &lt;/del&gt;je &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;udaný počet stisků které uživatel provedl, &lt;/del&gt;od &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;posledního čtení této hodnoty prostřednictvím volání této funkce. Tzn. po každém zavolání funkce se tyto vnitřní počítadla nulují&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Pole &lt;/ins&gt;''intermediatePresses[6]'', navrácené touto funkcí&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;, bude určeno pro počítání plných kliknutí (stisknutí+uvolnění) tlačítka TL1 až TL5&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Tato funkce &lt;/ins&gt;je &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;k dispozici až ve firmware &lt;/ins&gt;od &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;6/2022&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  intermediatePresses[0] = vždy nula (nepoužito)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  intermediatePresses[0] = vždy nula (nepoužito)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  intermediatePresses[1] = počet &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;stisků/uvolnění &lt;/del&gt;tlačítka TL1 od posledního &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;čtení počtu stisků &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  intermediatePresses[1] = počet &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;quot;plných kliknutí&amp;quot; &lt;/ins&gt;tlačítka TL1 od posledního &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;volání této funkce&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  intermediatePresses[2] = počet &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;stisků/uvolnění &lt;/del&gt;tlačítka TL2 od posledního &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;čtení počtu stisků &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  intermediatePresses[2] = počet &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;quot;plných kliknutí&amp;quot; &lt;/ins&gt;tlačítka TL2 od posledního &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;volání této funkce&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  intermediatePresses[3] = počet &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;stisků/uvolnění &lt;/del&gt;tlačítka TL3 od posledního &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;čtení počtu stisků &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  intermediatePresses[3] = počet &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;quot;plných kliknutí&amp;quot; &lt;/ins&gt;tlačítka TL3 od posledního &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;volání této funkce &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  intermediatePresses[4] = počet &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;stisků/uvolnění &lt;/del&gt;tlačítka TL4 od posledního &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;čtení počtu stisků &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  intermediatePresses[4] = počet &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;quot;plných kliknutí&amp;quot; &lt;/ins&gt;tlačítka TL4 od posledního &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;volání této funkce &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  intermediatePresses[5] = počet &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;stisků/uvolnění &lt;/del&gt;tlačítka TL5 od posledního &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;čtení počtu stisků &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  intermediatePresses[5] = počet &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;quot;plných kliknutí&amp;quot; &lt;/ins&gt;tlačítka TL5 od posledního &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;volání této funkce &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;'''Pozor'''&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;vždy se musíte podívat na obsah ''actual'' (pro každou jednotlivou položku [x]), aby jste dokázali rozlišit mezi tím, zda-li každá jednotlivá položka v &lt;/del&gt;intermediatePresses[&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;x&lt;/del&gt;] &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;je počet stisků nebo počet uvolnění konkrétního tlačítka TLx&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Každé volání funkce&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;tato všechna počítadla &lt;/ins&gt;intermediatePresses[] &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;nuluje&lt;/ins&gt;.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Každé volání funkce tato všechna počítadla intermediatePresses[] nuluje&lt;/del&gt;.  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;quot;Plné kliknutí&amp;quot; znamená, že uživatel tlačítko TLx stisknul, a pustil. Tlačítko musí být stisknuto a uvolněno, aby se to započítalo&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Dokud je pouze jen stisknuto&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;ještě stále není započítáno (jen to průběžně uvidíte v hodnotě ''actual'')&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;započítáno jako &amp;quot;plný klik&amp;quot; bude až uživatel tlačítko uvolní&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Nicméně&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;chystáme změnu firmware&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;která vyřeší obtížné použití pole intermediatePresses[]&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Hodnota ''changed'' ukazuje, zda-li se od posledního zavolání funkce změnil stav některého z tlačítek. Jedná se o akumulovanou funkci, takže zachytí i více stisknutí a uvolnění tlačítka.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Hodnota ''changed'' ukazuje, zda-li se od posledního zavolání funkce změnil stav některého z tlačítek. Jedná se o akumulovanou funkci, takže zachytí i více stisknutí a uvolnění tlačítka.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l70&quot; &gt;Řádek 70:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Řádek 68:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  význam  0   0   0 TL5 TL4 TL3 TL2 TL1&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  význam  0   0   0 TL5 TL4 TL3 TL2 TL1&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Příklad: od posledního volání funkce došlo ke změně stavu tlačítka TL1 a TL3, hodnota ''changed'' tedy bude 0b00000101 což je decimálně hodnota 5.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Příklad: od posledního volání funkce došlo ke změně stavu &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;(stisknuto/uvolněno) &lt;/ins&gt;tlačítka TL1 a TL3, hodnota ''changed'' tedy bude 0b00000101 což je decimálně hodnota 5.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Hodnota ''actual'' ukazuje aktuální stav tlačítka (bit v log1 = příslušné tlačítko stisknuto).&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Hodnota ''actual'' ukazuje aktuální stav tlačítka (bit v log1 = příslušné tlačítko stisknuto).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l80&quot; &gt;Řádek 80:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Řádek 78:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Příklad: v okamžiku volání funkce má právě uživatel stisknuté tlačítko TL5, hodnota ''actual'' tedy bude 0b00010000 což je decimálně hodnota 16.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Příklad: v okamžiku volání funkce má právě uživatel stisknuté tlačítko TL5, hodnota ''actual'' tedy bude 0b00010000 což je decimálně hodnota 16.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''DOPORUČENÍ''': &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;využívejte pouze hodnotu &lt;/del&gt;v &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;quot;actual&amp;quot;&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''DOPORUČENÍ''': &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;aktualizujte si firmware &lt;/ins&gt;v &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;SDS, v rámci této funkce došlo k řadě zlepšení z hlediska následné programové obsluhy odezvy na obsluhu tlačítek&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_TopBoard_functions&amp;diff=508&amp;oldid=prev</id>
		<title>Adamn v 31. 5. 2022, 07:25</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_TopBoard_functions&amp;diff=508&amp;oldid=prev"/>
		<updated>2022-05-31T07:25:11Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;cs&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Starší verze&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Verze z 31. 5. 2022, 07:25&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l47&quot; &gt;Řádek 47:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Řádek 47:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Každý stisk je zaznamenán, takže k dispozici pro FULL-C program je nejen aktuální stav každého tlačítka (stisknuto/uvolněno), ale i počet stisknutí mezi jednotlivými dotazy programu (takže když uživatel rychle mačká tlačítko, tak FULL-C program vždy ví, kolikrát to bylo).&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Každý stisk je zaznamenán, takže k dispozici pro FULL-C program je nejen aktuální stav každého tlačítka (stisknuto/uvolněno), ale i počet stisknutí mezi jednotlivými dotazy programu (takže když uživatel rychle mačká tlačítko, tak FULL-C program vždy ví, kolikrát to bylo).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''SDS_TOPB_keyboard_status()''' je jedinou funkcí ve FULL-C, která &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;zajištujě &lt;/del&gt;kompletní obsluhu zjišťovaní stavu klávesnici. Volat tuto funkci je potřeba jen tak často, jak moc je potřeba mít nízkou odezvu.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''SDS_TOPB_keyboard_status()''' je jedinou funkcí ve FULL-C, která &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;zajišťuje &lt;/ins&gt;kompletní obsluhu zjišťovaní stavu klávesnici. Volat tuto funkci je potřeba jen tak často, jak moc je potřeba mít nízkou odezvu.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Prakticky všechny funkce lze řešit přes pole ''intermediatePresses[6]'', navrácené touto funkcí. Pro každé tlačítko, v tomto poli je udaný počet stisků které uživatel provedl, od posledního čtení této hodnoty prostřednictvím volání této funkce. Tzn. po každém zavolání funkce se tyto vnitřní počítadla nulují.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Prakticky všechny funkce lze řešit přes pole ''intermediatePresses[6]'', navrácené touto funkcí. Pro každé tlačítko, v tomto poli je udaný počet stisků které uživatel provedl, od posledního čtení této hodnoty prostřednictvím volání této funkce. Tzn. po každém zavolání funkce se tyto vnitřní počítadla nulují.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  intermediatePresses[0] = vždy nula&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  intermediatePresses[0] = vždy nula &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;(nepoužito)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  intermediatePresses[1] = počet stisků/uvolnění tlačítka TL1 od posledního čtení počtu stisků  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  intermediatePresses[1] = počet stisků/uvolnění tlačítka TL1 od posledního čtení počtu stisků  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  intermediatePresses[2] = počet stisků/uvolnění tlačítka TL2 od posledního čtení počtu stisků  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  intermediatePresses[2] = počet stisků/uvolnění tlačítka TL2 od posledního čtení počtu stisků  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l58&quot; &gt;Řádek 58:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Řádek 58:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  intermediatePresses[5] = počet stisků/uvolnění tlačítka TL5 od posledního čtení počtu stisků  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  intermediatePresses[5] = počet stisků/uvolnění tlačítka TL5 od posledního čtení počtu stisků  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''Pozor''', vždy se musíte podívat na obsah ''actual'' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;abyjste &lt;/del&gt;dokázali rozlišit mezi tím, zda-li každá jednotlivá položka v intermediatePresses[x] je počet stisků nebo počet uvolnění konkrétního tlačítka.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''Pozor''', vždy se musíte podívat na obsah ''actual'' &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;(pro každou jednotlivou položku [x]), aby jste &lt;/ins&gt;dokázali rozlišit mezi tím, zda-li každá jednotlivá položka v intermediatePresses[x] je počet stisků nebo počet uvolnění konkrétního tlačítka &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;TLx&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Každé volání funkce tato všechna počítadla intermediatePresses[] nuluje. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Což je výborné pro efektivní realizaci reakce na stisk různých tlačítek, bez nutnosti složité obsluhy v programu - stačí ve vhodné &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Každé volání funkce tato všechna počítadla intermediatePresses[] nuluje.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;momenty přečíst počet stisků a vhodně reagovat. Pozor však na správnou interpretaci obsahu tohoto pole !&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Hodnota ''changed'' ukazuje, zda-li se od posledního zavolání funkce změnil stav některého z tlačítek.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Nicméně, chystáme změnu firmware, která vyřeší obtížné použití pole intermediatePresses[].&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Hodnota ''changed'' ukazuje, zda-li se od posledního zavolání funkce změnil stav některého z tlačítek&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;. Jedná se o akumulovanou funkci, takže zachytí i více stisknutí a uvolnění tlačítka&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  bit     7   6   5   4   3   2   1   0  (MSB ... LSB)   &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  bit     7   6   5   4   3   2   1   0  (MSB ... LSB)   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l69&quot; &gt;Řádek 69:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Řádek 70:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  význam  0   0   0 TL5 TL4 TL3 TL2 TL1&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  význam  0   0   0 TL5 TL4 TL3 TL2 TL1&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Příklad: od posledního volání funkce &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;stisknul uživatel tlačítko &lt;/del&gt;TL1 a TL3, hodnota ''changed'' tedy bude 0b00000101 což je decimálně hodnota 5.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Příklad: od posledního volání funkce &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;došlo ke změně stavu tlačítka &lt;/ins&gt;TL1 a TL3, hodnota ''changed'' tedy bude 0b00000101 což je decimálně hodnota 5.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Hodnota ''actual'' ukazuje aktuální stav tlačítka (bit v log1 = příslušné tlačítko stisknuto).&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Hodnota ''actual'' ukazuje aktuální stav tlačítka (bit v log1 = příslušné tlačítko stisknuto).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l78&quot; &gt;Řádek 78:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Řádek 79:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Příklad: v okamžiku volání funkce má právě uživatel stisknuté tlačítko TL5, hodnota ''actual'' tedy bude 0b00010000 což je decimálně hodnota 16.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Příklad: v okamžiku volání funkce má právě uživatel stisknuté tlačítko TL5, hodnota ''actual'' tedy bude 0b00010000 což je decimálně hodnota 16.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;'''DOPORUČENÍ''': využívejte pouze hodnotu v &amp;quot;actual&amp;quot;.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_TopBoard_functions&amp;diff=331&amp;oldid=prev</id>
		<title>Adamn v 8. 8. 2021, 13:30</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_TopBoard_functions&amp;diff=331&amp;oldid=prev"/>
		<updated>2021-08-08T13:30:38Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;cs&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Starší verze&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Verze z 8. 8. 2021, 13:30&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l65&quot; &gt;Řádek 65:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Řádek 65:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Hodnota ''changed'' ukazuje, zda-li se od posledního zavolání funkce změnil stav některého z tlačítek.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Hodnota ''changed'' ukazuje, zda-li se od posledního zavolání funkce změnil stav některého z tlačítek.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  bit     &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;0 &lt;/del&gt;  &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;1 &lt;/del&gt;  &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;2 &lt;/del&gt;  3   &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;4 &lt;/del&gt;  &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;5 &lt;/del&gt;  &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;6   7 &lt;/del&gt;  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  bit     &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;7   6 &lt;/ins&gt;  &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;5 &lt;/ins&gt;  &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;4 &lt;/ins&gt;  3   &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;2 &lt;/ins&gt;  &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;1 &lt;/ins&gt;  &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;0  (MSB ... LSB) &lt;/ins&gt;  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  dec     &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;1 &lt;/del&gt;  &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;2 &lt;/del&gt;  4   &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;8 &lt;/del&gt;  &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;16  32  64  128&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  dec     &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;128 64 32  16 &lt;/ins&gt;  &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;8 &lt;/ins&gt;  4   &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;2   1 &lt;/ins&gt;   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  význam  &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;TL1 TL2 TL3 TL4 TL5 &lt;/del&gt;0   0   0 &lt;del class=&quot;diffchange diffchange-inline&quot;&gt; &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  význam  0   0   0 &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;TL5 TL4 TL3 TL2 TL1&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Příklad: od posledního volání funkce stisknul uživatel tlačítko TL1 a TL3, hodnota ''changed'' tedy bude 0b00000101 což je decimálně hodnota 5.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Příklad: od posledního volání funkce stisknul uživatel tlačítko TL1 a TL3, hodnota ''changed'' tedy bude 0b00000101 což je decimálně hodnota 5.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l73&quot; &gt;Řádek 73:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Řádek 73:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Hodnota ''actual'' ukazuje aktuální stav tlačítka (bit v log1 = příslušné tlačítko stisknuto).&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Hodnota ''actual'' ukazuje aktuální stav tlačítka (bit v log1 = příslušné tlačítko stisknuto).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  bit     &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;0 &lt;/del&gt;  &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;1 &lt;/del&gt;  &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;2 &lt;/del&gt;  3   &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;4 &lt;/del&gt;  &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;5 &lt;/del&gt;  &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;6   7 &lt;/del&gt;  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  bit     &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;7   6 &lt;/ins&gt;  &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;5 &lt;/ins&gt;  &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;4 &lt;/ins&gt;  3   &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;2 &lt;/ins&gt;  &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;1 &lt;/ins&gt;  &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;0  (MSB ... LSB) &lt;/ins&gt;  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  dec     &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;1 &lt;/del&gt;  &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;2 &lt;/del&gt;  4   &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;8 &lt;/del&gt;  &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;16  32  64  128&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  dec     &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;128 64 32  16 &lt;/ins&gt;  &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;8 &lt;/ins&gt;  4   &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;2   1 &lt;/ins&gt;   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  význam  &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;TL1 TL2 TL3 TL4 TL5 &lt;/del&gt;0   0   0 &lt;del class=&quot;diffchange diffchange-inline&quot;&gt; &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  význam  0   0   0 &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;TL5 TL4 TL3 TL2 TL1&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Příklad: v okamžiku volání funkce má právě uživatel stisknuté tlačítko TL5, hodnota ''actual'' tedy bude 0b00010000 což je decimálně hodnota 16.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Příklad: v okamžiku volání funkce má právě uživatel stisknuté tlačítko TL5, hodnota ''actual'' tedy bude 0b00010000 což je decimálně hodnota 16.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_TopBoard_functions&amp;diff=260&amp;oldid=prev</id>
		<title>Adamn: Založena nová stránka s textem „FULL-C  == Funkce pro práci s TopBoard ==  __NOTOC__  Zařízení SDS-BIG lze zakoupit s doplňkovou sandwich deskou (tzv. TopBoard), kt…“</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_TopBoard_functions&amp;diff=260&amp;oldid=prev"/>
		<updated>2021-06-26T10:03:14Z</updated>

		<summary type="html">&lt;p&gt;Založena nová stránka s textem „FULL-C  == Funkce pro práci s TopBoard ==  __NOTOC__  Zařízení SDS-BIG lze zakoupit s &lt;a href=&quot;/subdom/wiki/index.php?title=SDS_BIG:_DALI&quot; title=&quot;SDS BIG: DALI&quot;&gt;doplňkovou sandwich deskou (tzv. TopBoard)&lt;/a&gt;, kt…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nová stránka&lt;/b&gt;&lt;/p&gt;&lt;div&gt;FULL-C&lt;br /&gt;
&lt;br /&gt;
== Funkce pro práci s TopBoard ==&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
Zařízení SDS-BIG lze zakoupit s [[SDS_BIG:_DALI|doplňkovou sandwich deskou (tzv. TopBoard)]], která poskytuje uživatelské rozhraní (bodový display a klávesnici) a také možnost připojit sběrnici DALI. Tuto desku lze připojit i k dalším modulům SDS (např. SDS-STSW, SDS-SMALL).&lt;br /&gt;
&lt;br /&gt;
 Pozor! Je vyžadován firmware SDS od verze 5.12.2016 nebo novější!&lt;br /&gt;
&lt;br /&gt;
Pro obsluhu klávesnice a displaye, můžete použít tyto funkce:&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
         void SDS_TOPB_keyboard_status(unsigned int *changed, unsigned int *actual, unsigned int *intermediatePresses[6]);&lt;br /&gt;
 &lt;br /&gt;
         void SDS_TOPB_LCDdraw(unsigned int X0, unsigned int Y0, unsigned int X1, unsigned int Y1, unsigned int DrawTYPE, unsigned int FLAGS);&lt;br /&gt;
         void SDS_TOPB_LCDtext(unsigned int X0, unsigned int ROW, unsigned int FLAGS, char *ptr, unsigned int len);&lt;br /&gt;
         void SDS_TOPB_LCDbitmap(unsigned int X0, unsigned int ROW, unsigned int FLAGS, char *ptr, unsigned int len);&lt;br /&gt;
         void SDS_TOPB_LCDflip(unsigned int FLAGS);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pro komunikaci přes DALI sběrnici (SDS je DALI-MASTER) může program použít tyto funkce:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 unsigned int SDS_TOPB_DALI_transmitCommand(unsigned int DALIaddress, unsigned int DALIdata);&lt;br /&gt;
 unsigned int SDS_TOPB_DALI_getReceivedResponse(unsigned int *ReceivedResponse);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
SDS osazené doplňujícím sandwich modulem (sandwich desek je více různých, a všechny se chovají z hlediska key+LCD stejně) poskytuje uživateli grafický LCD a tlačítkovou klávesnici.&lt;br /&gt;
&lt;br /&gt;
LCD je plně grafické a má 132 x 32 jednobarevných pixelů, adresované jako X=0..131 a Y=0..31. Pixely jsou černé (aktivní - blokují podsvícení), a podsvícení je bíle.&lt;br /&gt;
&lt;br /&gt;
Následující FULL-C funkce umožňují kreslení jednotlivých pixelů, obrazců a nebo textu.&lt;br /&gt;
&lt;br /&gt;
SDS využívá princip obrazového bufferu, kdy veškeré kreslení se provádí nejprve do paměti, odkud se teprve vždy celá tato paměť překlopí (najednou překreslí) do LCD kde to pak uživatel přímo vidí.&lt;br /&gt;
&lt;br /&gt;
Využití paměťového bufferu (screenbuffer) je důležite, protože si tak můžete připravit novou obrazovku, zatímco uživatel stále vidí tu předchozí - lze tak realizovat navazující animace a obecně se zabrání nevzhlednému postupnému překreslování LCD (jaké by bylo při postupném kreslení jednotlivých prvků přímo na LCD).&lt;br /&gt;
&lt;br /&gt;
Klávesnice je obsluhována automaticky a FULL-C program se může pravidelně dotazovat na stav tlačítek. Běžně je osazeno 5 tlačítek, na některých modulech ale jen 2 (z rozměrových důvodů).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Obsluha klávesnice ==&lt;br /&gt;
&lt;br /&gt;
TOPB nabízí pět kláves (tlačítek), které jsou interně ošetřeny proti zákmitům (nemusíte se dále ve FULL-C programu o toto starat). Některé moduly ale nabízí jen dvě tlačítka.&lt;br /&gt;
&lt;br /&gt;
Každý stisk je zaznamenán, takže k dispozici pro FULL-C program je nejen aktuální stav každého tlačítka (stisknuto/uvolněno), ale i počet stisknutí mezi jednotlivými dotazy programu (takže když uživatel rychle mačká tlačítko, tak FULL-C program vždy ví, kolikrát to bylo).&lt;br /&gt;
&lt;br /&gt;
'''SDS_TOPB_keyboard_status()''' je jedinou funkcí ve FULL-C, která zajištujě kompletní obsluhu zjišťovaní stavu klávesnici. Volat tuto funkci je potřeba jen tak často, jak moc je potřeba mít nízkou odezvu.&lt;br /&gt;
&lt;br /&gt;
Prakticky všechny funkce lze řešit přes pole ''intermediatePresses[6]'', navrácené touto funkcí. Pro každé tlačítko, v tomto poli je udaný počet stisků které uživatel provedl, od posledního čtení této hodnoty prostřednictvím volání této funkce. Tzn. po každém zavolání funkce se tyto vnitřní počítadla nulují.&lt;br /&gt;
&lt;br /&gt;
 intermediatePresses[0] = vždy nula&lt;br /&gt;
 intermediatePresses[1] = počet stisků/uvolnění tlačítka TL1 od posledního čtení počtu stisků &lt;br /&gt;
 intermediatePresses[2] = počet stisků/uvolnění tlačítka TL2 od posledního čtení počtu stisků &lt;br /&gt;
 intermediatePresses[3] = počet stisků/uvolnění tlačítka TL3 od posledního čtení počtu stisků &lt;br /&gt;
 intermediatePresses[4] = počet stisků/uvolnění tlačítka TL4 od posledního čtení počtu stisků &lt;br /&gt;
 intermediatePresses[5] = počet stisků/uvolnění tlačítka TL5 od posledního čtení počtu stisků &lt;br /&gt;
&lt;br /&gt;
'''Pozor''', vždy se musíte podívat na obsah ''actual'' abyjste dokázali rozlišit mezi tím, zda-li každá jednotlivá položka v intermediatePresses[x] je počet stisků nebo počet uvolnění konkrétního tlačítka.&lt;br /&gt;
&lt;br /&gt;
Každé volání funkce tato všechna počítadla intermediatePresses[] nuluje. Což je výborné pro efektivní realizaci reakce na stisk různých tlačítek, bez nutnosti složité obsluhy v programu - stačí ve vhodné &lt;br /&gt;
momenty přečíst počet stisků a vhodně reagovat. Pozor však na správnou interpretaci obsahu tohoto pole !&lt;br /&gt;
&lt;br /&gt;
Hodnota ''changed'' ukazuje, zda-li se od posledního zavolání funkce změnil stav některého z tlačítek.&lt;br /&gt;
&lt;br /&gt;
 bit     0   1   2   3   4   5   6   7  &lt;br /&gt;
 dec     1   2   4   8   16  32  64  128&lt;br /&gt;
 význam  TL1 TL2 TL3 TL4 TL5 0   0   0  &lt;br /&gt;
&lt;br /&gt;
Příklad: od posledního volání funkce stisknul uživatel tlačítko TL1 a TL3, hodnota ''changed'' tedy bude 0b00000101 což je decimálně hodnota 5.&lt;br /&gt;
&lt;br /&gt;
Hodnota ''actual'' ukazuje aktuální stav tlačítka (bit v log1 = příslušné tlačítko stisknuto).&lt;br /&gt;
&lt;br /&gt;
 bit     0   1   2   3   4   5   6   7  &lt;br /&gt;
 dec     1   2   4   8   16  32  64  128&lt;br /&gt;
 význam  TL1 TL2 TL3 TL4 TL5 0   0   0  &lt;br /&gt;
&lt;br /&gt;
Příklad: v okamžiku volání funkce má právě uživatel stisknuté tlačítko TL5, hodnota ''actual'' tedy bude 0b00010000 což je decimálně hodnota 16.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Obsluha displaye ==&lt;br /&gt;
&lt;br /&gt;
TOPB nabízí grafický display, na který lze psát a kreslit.&lt;br /&gt;
&lt;br /&gt;
Všechny tyto činnosti probíhají v paměťovém bufferu na pozadí, a teprve&lt;br /&gt;
na konkrétní příkaz (LCDflip) se tento buffer celý přenese na display. Toto je důležité pro hladké zobrazení, bez blikání nebo poškozené animace - vždy novou scénu nakreslíte do paměťového bufferu, který představuje celý virtuální display, a ten se teprve na daný příkaz přenese na skutečný display a zobrazí se.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SDS_TOPB_LCDflip ==&lt;br /&gt;
&lt;br /&gt;
Základní funkce pro překreslení (FLIP) paměťového bufferu (virtuálního LCD) na skutečný (hardware) LCD. Principem je provádění veškerých nových kreseb na pozadí, a až nakonec, najednou, se tyto přenesou na skutečný display.&lt;br /&gt;
&lt;br /&gt;
 unsigned int FLAGS&lt;br /&gt;
 &lt;br /&gt;
 == 0 : just FLIP (přenese paměťový screenbuffer na fyzický LCD)&lt;br /&gt;
 == 1 : CLEAR and FLIP (smaže paměťový screenbuffer a pak jej ihned přenese na fyzický LCD, tzn. v důsledku smaže i celý LCD).&lt;br /&gt;
&lt;br /&gt;
S výhodou můžete použít FLAGS==1 pro okamžité smazání celého displaye.&lt;br /&gt;
&lt;br /&gt;
Běžná se tato funkce volá s FLAGS==0, kdy dojde jen k přenesení celého bufferu na display, což je základní použití této funkce.&lt;br /&gt;
&lt;br /&gt;
Pokud chcete jen smazat paměťový screenbuffer a přitom nesahat na LCD, musíte si pomoct funkcí SDS_TOPB_LCDdraw (nakreslit vyplněný obdélník přes celou obrazovku).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SDS_TOPB_LCDdraw ==&lt;br /&gt;
&lt;br /&gt;
Kreslení do bufferu.&lt;br /&gt;
&lt;br /&gt;
Nejprve si určíte, jaký vůbec grafický prvek chcete do bufferu nakreslit:&lt;br /&gt;
&lt;br /&gt;
 unsigned int DrawTYPE&lt;br /&gt;
 &lt;br /&gt;
 ==   0 : draw a single PIXEL, coordinates: X0,Y0 (the X1,Y1 is ignored)&lt;br /&gt;
 ==  32 : draw one-pixel-wide LINE, coordinates: from X0,Y0 to X1,Y1&lt;br /&gt;
 ==  64 : draw one-pixel-wide ELLIPSE, coordinates: from X0,Y0 to X1,Y1&lt;br /&gt;
 ==  96 : draw RECTANGLE, coordinates: from X0,Y0 to X1,Y1&lt;br /&gt;
 == 224 : only FLIP (same as STS_TOPB_LCDflip) &lt;br /&gt;
&lt;br /&gt;
Parametr ''FLAGS'' je bitová kombinace, která navíc svým významem závisí na hodnotě ''DrawTYPE''.&lt;br /&gt;
&lt;br /&gt;
 unsigned int FLAGS&lt;br /&gt;
 &lt;br /&gt;
 (MSB to LSB):  7    6    5     4      3   2     1        0&lt;br /&gt;
                RSVD RSVD RSVD [FLIP] [SCI SCI] [FILLED] [ADDITIONALFLAG]&lt;br /&gt;
 &lt;br /&gt;
 RSVD &lt;br /&gt;
  -&amp;gt; set to zero&lt;br /&gt;
 &lt;br /&gt;
 [FLIP]&lt;br /&gt;
  -&amp;gt; set to 1 if you want immediate FLIP after this function is done&lt;br /&gt;
 &lt;br /&gt;
 [SCI]&lt;br /&gt;
 &lt;br /&gt;
             | pixel/line/ellipse/rectangle | &lt;br /&gt;
 ------------+------------------------------+-&lt;br /&gt;
  SCI == 00  | SET PIXEL   (to color)       |&lt;br /&gt;
  SCI == 01  | CLEAR PIXEL (to background)  | &lt;br /&gt;
  SCI == 11  | INVERT PIXEL                 |&lt;br /&gt;
 &lt;br /&gt;
 [FILLED]&lt;br /&gt;
  -&amp;gt; applies only to rectangle and ellipse (when set to 1, fills the internals, following SCI)&lt;br /&gt;
 &lt;br /&gt;
 [ADDITIONALFLAG]&lt;br /&gt;
  -&amp;gt; used ONLY for DrawTYPE==224 where if ADDITIONALFLAG==1 then buffer is CLEARED and then FLIP&lt;br /&gt;
&lt;br /&gt;
Jak lze vidět, je potřeba vždy připravit správnou kombinaci bitů.&lt;br /&gt;
&lt;br /&gt;
 POZOR: starší firmware v TOPB desce ne vždy umí všechny možné grafické prvky - zašlete výrobek výrobci pro aktualizaci firmware.&lt;br /&gt;
&lt;br /&gt;
Funkce kreslí do paměťového screenbufferu. Tento buffer se teprve musí překlopit do fyzického LCD pro aktualizaci zobrazeného obrazu. To můžete provést ihned (FLAGS:FLIP) nebo až &amp;quot;nakonec&amp;quot; pokud kreslíte více různých prvků (pak použijte funkci LCDflip).&lt;br /&gt;
&lt;br /&gt;
Funkci SDS_TOPB_LCDdraw() lze také použít pro smazání celé obrazovky LCD:&lt;br /&gt;
&lt;br /&gt;
 SDS_TOPB_LCDdraw(0, 0, 0, 0, 224, 1);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SDS_TOPB_LCDtext ==&lt;br /&gt;
&lt;br /&gt;
Psaní textu do bufferu - tato funkce umí psát pouze na jeden vybraný řádek. Pevný font, ale můžete určit barvu popředí a pozadí. Pozice se určuje pomocí X0 a Y0, kde X0 určuje posun o daný počet pixelů na řádku, a Y0 vybírá řadek (LCD má čtyři řádky).&lt;br /&gt;
&lt;br /&gt;
 X0&lt;br /&gt;
  -&amp;gt; pixel coordinate [0..131]&lt;br /&gt;
 &lt;br /&gt;
 ROW&lt;br /&gt;
  -&amp;gt; row coordinate [0..3] &lt;br /&gt;
 &lt;br /&gt;
 char *ptr&lt;br /&gt;
  -&amp;gt; pointer to string&lt;br /&gt;
 &lt;br /&gt;
 unsigned int len&lt;br /&gt;
  -&amp;gt; length of text (excluding trailing zero)&lt;br /&gt;
  -&amp;gt; maximum = 22 characters per line&lt;br /&gt;
&lt;br /&gt;
Parametr ''FLAGS'' je bitová kombinace, která navíc svým významem závisí na hodnotě ''DrawTYPE''.&lt;br /&gt;
&lt;br /&gt;
 unsigned int FLAGS&lt;br /&gt;
 &lt;br /&gt;
 (MSB to LSB):  7    6    5     4      3   2     1     0&lt;br /&gt;
                RSVD RSVD RSVD [FLIP] [SCI SCI]  RSVD  RSVD&lt;br /&gt;
 &lt;br /&gt;
 RSVD &lt;br /&gt;
  -&amp;gt; set to zero&lt;br /&gt;
 &lt;br /&gt;
 [FLIP]&lt;br /&gt;
  -&amp;gt; set to 1 if you want immediate FLIP after this function is done&lt;br /&gt;
 &lt;br /&gt;
 [SCI]&lt;br /&gt;
 &lt;br /&gt;
             | text           | &lt;br /&gt;
 ------------+----------------+-&lt;br /&gt;
  SCI == 00  | POSITIVE       |&lt;br /&gt;
  SCI == 01  | NEGATIVE       |&lt;br /&gt;
  SCI == 11  | INVERT TEXT    |&lt;br /&gt;
&lt;br /&gt;
Jak lze vidět, je potřeba vždy připravit správnou kombinaci bitů.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SDS_TOPB_LCDbitmap ==&lt;br /&gt;
&lt;br /&gt;
Přenos malé bitmapy (blok pixelů) do bufferu - tato funkce umí přenést bitmapu na jeden určený řádek. Pro pokrytí celého displaye, který má čtyři řádky, je tedy potřeba použít tuto funkci čtyřikrát, vždy se správnými parametry.&lt;br /&gt;
&lt;br /&gt;
Pravidla jsou opět podobná jako u předchozích funkcí.&lt;br /&gt;
&lt;br /&gt;
Parametr ''FLAGS'' je bitová kombinace.&lt;br /&gt;
&lt;br /&gt;
 unsigned int FLAGS&lt;br /&gt;
 &lt;br /&gt;
 (MSB to LSB):  7    6    5     4     3    2    1     0&lt;br /&gt;
                RSVD RSVD RSVD [FLIP] RSVD RSVD RSVD [ADDITIONALFLAG]&lt;br /&gt;
 &lt;br /&gt;
 RSVD &lt;br /&gt;
  -&amp;gt; set to zero&lt;br /&gt;
 &lt;br /&gt;
 [FLIP]&lt;br /&gt;
  -&amp;gt; set to 1 if you want immediate FLIP after this function is done&lt;br /&gt;
 &lt;br /&gt;
 [ADDITIONALFLAG]&lt;br /&gt;
  -&amp;gt; the (whole) LCD buffer is filled with a DEFAULT LOGO &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vzorový program ==&lt;br /&gt;
&lt;br /&gt;
Následující program čte stav klávesnice a zobrazuje tento stav na LCD.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
 unsigned int changed;&lt;br /&gt;
 unsigned int actual;&lt;br /&gt;
 unsigned int intermediatePresses[6];&lt;br /&gt;
 &lt;br /&gt;
 char text[32];&lt;br /&gt;
&lt;br /&gt;
 printf(&amp;quot;START LCD+KEYBOARD TEST\n&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
 // clear LCD [OP:111] = FLIP ; clear -&amp;gt; ADDITIONALFLAG = 1&lt;br /&gt;
 SDS_TOPB_LCDdraw(0,0,0,0, 0b11100000, 0b00000001); // --- identical to:&lt;br /&gt;
 SDS_TOPB_LCDflip(1);&lt;br /&gt;
 &lt;br /&gt;
 // main loop&lt;br /&gt;
 for (;;)&lt;br /&gt;
 {&lt;br /&gt;
 &lt;br /&gt;
   // read last known KBD status&lt;br /&gt;
   SDS_TOPB_keyboard_status(&amp;amp;changed, &amp;amp;actual, &amp;amp;intermediatePresses);&lt;br /&gt;
&lt;br /&gt;
   if (changed)&lt;br /&gt;
   {&lt;br /&gt;
        // print to console&lt;br /&gt;
        printf(&amp;quot;%d %d [%d %d %d %d %d %d]\n&amp;quot;, changed, actual,&lt;br /&gt;
        intermediatePresses[0],&lt;br /&gt;
        intermediatePresses[1],&lt;br /&gt;
        intermediatePresses[2],&lt;br /&gt;
        intermediatePresses[3],&lt;br /&gt;
        intermediatePresses[4],&lt;br /&gt;
        intermediatePresses[5]);&lt;br /&gt;
        &lt;br /&gt;
       // setup text&lt;br /&gt;
       snprintf(text, 22+1, &amp;quot;actual = %02X   &amp;quot;, actual);&lt;br /&gt;
&lt;br /&gt;
       // write to LCD&lt;br /&gt;
       SDS_TOPB_LCDtext(0, 0, 0, text, strlen(text));&lt;br /&gt;
       &lt;br /&gt;
       // redraw LCD&lt;br /&gt;
       SDS_TOPB_LCDflip(0);&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   // wait 100 msecs = try to make it longer, to simulate harsh conditions = and you will see it yet works !&lt;br /&gt;
   wait(100);&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Upozornění ==&lt;br /&gt;
&lt;br /&gt;
Pro správnou funkci sběrnice DALI je vyžadována verze firmware v sandwich desce (TOPB3) od 5.12.2016 nebo novější.&lt;br /&gt;
&lt;br /&gt;
Pokud nemáte jistotu, jakou verzi firmware v sandwich desce máte, zašlete ji výrobci pro bezplatnou aktualizaci.&lt;br /&gt;
&lt;br /&gt;
Pokud se pokusíte používat DALI sběrnici se zařízení které má starší firmware, nebude vám to fungovat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sběrnice DALI ==&lt;br /&gt;
&lt;br /&gt;
Sběrnice DALI je určena k řízení osvětlovacích a dalších prvků, připojených na společnou sběrnici, a to buď skupinově nebo po jednotlivých adresách. Sestava se vždy skládá z DALI-MASTER (což je zde zařízení SDS) a prvků DALI-SLAVE (např. světla, chytré vypínače a tlačítka, pohybová čidla, reléové moduly, atd.).&lt;br /&gt;
&lt;br /&gt;
DALI pracuje na principu dvoudrátové sběrnice, po které se přenáší data mezi DALI-MASTER a vybranými DALI-SLAVE prvky. Buď ve směru BROADCAST, kdy DALI-MASTER posílá zprávu úplne všem DALI-SLAVE prvkům na dané fyzické sběrnici, nebo skupinově (vybraným skupinám GROUPS jednotlivých DALI-SLAVE prvků), popř. zcela adresně (reaguje jen ten DALI-SLAVE prvek, který má konkrétní adresu na kterou je zpráva poslána).&lt;br /&gt;
&lt;br /&gt;
Seznam jednotlivých zpráv, které lze posílat, je uveden v normě DALI a na příslušné stránce této WiKi. Samozřejmě výrobci každého DALI-SLAVE zařízení si určují své detaily (jaké zprávy jsou podporovány daným zařízením a jak na ně bude zařízení reagovat).&lt;br /&gt;
&lt;br /&gt;
Pro použití SDS jako DALI MASTER prvku je potřeba zakoupit SDS osazené doplňkovou [[SDS_BIG:_DALI|sandwich DALI deskou]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adresování prvků na sběrnici DALI ==&lt;br /&gt;
&lt;br /&gt;
Vše je popsáno do detailu v příslušné normě.&lt;br /&gt;
&lt;br /&gt;
Na sběrnici je jeden MASTER (zde SDS) a množství SLAVE jednotek - vždy záleží na konkrétním projektu.&lt;br /&gt;
&lt;br /&gt;
Každá SLAVE jednotka má tyto tři určené adresy:&lt;br /&gt;
* BROADCAST - globální konstatní adresa (0xFF) na které slyší naprosto všechny jednotky najednou&lt;br /&gt;
* GROUP - skupinová adresa, tuto adresu má jedna nebo více jednotek společně, nastavuje se na určenou hodnotu podle projektu&lt;br /&gt;
* DIRECT - přímá adresa, tuto adresu má vždy jen jedna jediná jednotka, nastavuje se na určenou hodnotu podle projektu&lt;br /&gt;
&lt;br /&gt;
Každé SLAVE jednotce na sběrnici DALI se tedy nastaví tyto tři hodnoty (0xFF a dvě volitelné). Jaké to jsou, si samozřejmě musíte určit vy sami - protože jen vy víte, jak a co máte zapojeno a k čemu to chcete použít. Skupinové adresy jsou výhodné, protože se dá ovládat více prvků jedním příkazem (např. hromadně zhasnout skupina světel) najednou = bez nutnosti postupného posílání adresných příkazů každé jednotce, což pak není vizuálně pěkné (světla v tomto příkladu by zhasínala postupně).&lt;br /&gt;
&lt;br /&gt;
Jak se adresy nastavují - záleží VŽDY na výrobci dané SLAVE jednotky. Někdy je prostřednictvím jumperů/DIP spínačů/atd. na výrobku, a někdy se to dělá tak, že se jednotka připojí k osobnímu počítači a přes určený program se do ní zapíší tyto adresy (skupinová a přímá adresa).&lt;br /&gt;
&lt;br /&gt;
Pokud se nějaká už instalovaná jednotka pokazí a je potřeba ji nahradit novou (výměna) pak je potřeba tuto novou jednotku správně naadresovat - nastavit jí stejné adresy jaké měla ta původní kterou chcete vyměnit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Příkazy sběrnice DALI ==&lt;br /&gt;
&lt;br /&gt;
Základní příkazy jsou předepsány normou DALI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Způsob komunikace ==&lt;br /&gt;
&lt;br /&gt;
MASTER (SDS) umí poslat příkaz do SLAVE jednotek na sběrnici, a současně umí i přijmout odpověď (pokud je očekávána odpověď od SLAVE jednotky).&lt;br /&gt;
&lt;br /&gt;
Pokud je požadována odpověď (např. na dotaz na nastavenou hodnotu nebo stav tlačítka), pak je potřeba na MASTERu použít příkazy které adresují SLAVE jednotky pouze přes přímou (DIRECT) adresu !&lt;br /&gt;
&lt;br /&gt;
Vzorový program ukazuje jak poslat dotaz (stav stmívání světla) na SLAVE jednotku a jak ho zobrazit na LCD.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SDS_TOPB_DALI_getReceivedResponse ==&lt;br /&gt;
&lt;br /&gt;
Tuto funkci je potřeba použít pro ověření výsledku.&lt;br /&gt;
&lt;br /&gt;
 unsigned int DALI_RX;&lt;br /&gt;
 unsigned int RXflags;&lt;br /&gt;
 RXflags = SDS_TOPB_DALI_getReceivedResponse(&amp;amp;DALI_RX);&lt;br /&gt;
&lt;br /&gt;
Do &amp;quot;DALI_RX&amp;quot; se uloží data (payload) přijatá na sběrnici (pokud jsou platná), a do &amp;quot;RXflags&amp;quot; se uloží stav úspěchu komunikace.&lt;br /&gt;
&lt;br /&gt;
RXflags má několik bitů v dolních 8bitech (LSB) které jsou důležité (vše ostatní v této proměnné je nepoužito):&lt;br /&gt;
&lt;br /&gt;
            MSB                                          LSB&lt;br /&gt;
              31  ...   3        2         1        0&lt;br /&gt;
 RXflags      reserved  INVDATA  REPEATED  FAILURE  GOT-RX&lt;br /&gt;
&lt;br /&gt;
* Nejdůležitější je flag &amp;quot;GOT-RX&amp;quot;. Pokud je tento bit nastaven na 1, pak jsou data v &amp;quot;DALI_RX&amp;quot; platná a mají se použít.&lt;br /&gt;
* Flag &amp;quot;FAILURE&amp;quot; označuje chybový stav sběrnice (zkrat, nadproud, chyba HW vysílače).&lt;br /&gt;
* Flag &amp;quot;REPEATED&amp;quot; informuje že došlo k automatickému opakování vysílaní (dle požadavku normy DALI, viz text dále)&lt;br /&gt;
* Flag &amp;quot;INVDATA&amp;quot; označuje příjem neplatných dat (chyba slave, dva nebo více slave vysílají odpověd najednou - viz příkaz COMPARE, apod.)&lt;br /&gt;
&lt;br /&gt;
Váš FULL-C program musí správně reagovat na všechny tyto flagy a stavy.&lt;br /&gt;
&lt;br /&gt;
Pro detekci přítomnosti SLAVE na vybrané adrese se s výhodou dá využít bit-0 (GOT-RX). Tento bit je také potřeba vždy ověřit (je-li nastavený) pro ověření správného přijetí odpovědi ze SLAVE (očekává-li se odpověď).&lt;br /&gt;
&lt;br /&gt;
Pro detekci zkratu sběrnice se přímo využívá bit-1 (&amp;quot;FAILURE&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Pro informaci, že příkaz byl automaticky opakován, je nastaven bit-2 (&amp;quot;REPEATED&amp;quot;). Tento bit v podstatě můžete ignorovat, je jen informativní.&lt;br /&gt;
&lt;br /&gt;
Pro detekci rušení na sběrnici, nebo detekci dvou (či více) SLAVEs se stejnou adresou (chyba konfigurace SLAVEs), se využije bit-3 (INVDATA).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Speciální funkce ==&lt;br /&gt;
&lt;br /&gt;
SDS poskytuje přímý přístup na sběrnici. Chcete odeslat příkaz (vždy 2 bajty, adresa+data), tak je SDS jako MASTER odešle. A následně se pokusí přijmou 1 byte odpovědi.&lt;br /&gt;
&lt;br /&gt;
Některé příkazy ale vyžadují opakování - to specifikuje norma DALI. U následujících příkazů to podle této normy dělá SDS za vás (tzn. FULL-C program zavolá funkci pro odeslání příkazu jednou, a SDS to zopakuje dvakrát, tzn. automaticky odešle 2x na sběrnici).&lt;br /&gt;
&lt;br /&gt;
Automatizované opakování v rámci SDS je zde z důvodů že norma DALI požaduje opakování s maximálním prodlením pod 100 milisekund - což typicky přes FULL-C zajistit nelze.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Automaticky opakované příkazy''' při odesílání z SDS MASTER do sběrnice DALI:&lt;br /&gt;
&lt;br /&gt;
* Pro ADDRESS==0x01 a současně DATA v hodnotě z rozsahu 0x20 (včetně) do 0x80 (včetně)&lt;br /&gt;
* Pro ADDRESS==0xA5 (Initialize CMD) a libovolné DATA&lt;br /&gt;
* Pro ADDRESS==0xA7 (Randomize CMD) ale jen když DATA==0x00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Doplňující informace ==&lt;br /&gt;
&lt;br /&gt;
Pokud je na sběrnici DALI porucha, všechny Slave jednotky typicky přecházejí do &amp;quot;neřízeného&amp;quot; režimu. To znamená, že se přestanou chovat podle toho jak byly přes DALI nastaveny, a typicky přejdou do &amp;quot;100% zapnuto&amp;quot; režimu. Toto je v pořádku a výrobci slave jednotek to tak chtějí (tím pádem se slave jednotky chovají jen jako &amp;quot;hloupý napáječ světla&amp;quot; který se dá ovládat vypínačem).&lt;br /&gt;
&lt;br /&gt;
Pozn. před spuštění DALI komunikace vyčkejte ve svém programu (ideálně) několik vteřin, zejména je-li délka vedení DALI sběrnice velká (dlouhé kabely). Chvíli trvá než se celý systém &amp;quot;nabije&amp;quot; a dokud se to nestane, nelze přenášet DALI příkazy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vzorový program ==&lt;br /&gt;
&lt;br /&gt;
Následující program kombinuje jednoduchou obsluhu LCD (display) a DALI sběrnice (SDS je DALI-MASTER). Tento program inicializuje prvek na sběrnici a nastaví jej do režimu zapnutá-zátěž (rozsvíceno) - program využívá BROADCAST adresy a je potřeba jej spustit s jediným DALI-SLAVE prvkem (ballast). Vzorový program je zde pro ověření funkčnosti. Samozřejmě jakmile máte více prvků, tak je můžete adresovat - to už vyžaduje znalost funkce sběrnice DALI a jejího aplikačního protokolu.&lt;br /&gt;
&lt;br /&gt;
Program po inicializaci prvku začne dokola provádět smyčku ztlumení a zesílení světla (DOWN a UP):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
unsigned int DALI_TXRX(unsigned char Address, unsigned char Data, unsigned char * Answer)&lt;br /&gt;
{&lt;br /&gt;
  unsigned int DALI_RX;&lt;br /&gt;
  unsigned int RXflags;&lt;br /&gt;
  unsigned int timeout;&lt;br /&gt;
&lt;br /&gt;
  // one call to SDS_TOPB_DALI_transmitCommand()&lt;br /&gt;
  // blocks typically for 60 msecs&lt;br /&gt;
  // and it includes both DALI-TX and DALI-RX procedures&lt;br /&gt;
  // so after the call is done (function returns)&lt;br /&gt;
  // we do have our response from DALI-SLAVE&lt;br /&gt;
&lt;br /&gt;
  // try to call the function until it goes through&lt;br /&gt;
  // (typically, the function return is zero because&lt;br /&gt;
  //  it is already TXing the previous command)&lt;br /&gt;
  timeout = 200; // 200 msec is very enough&lt;br /&gt;
  while (1)&lt;br /&gt;
  {&lt;br /&gt;
    if (SDS_TOPB_DALI_transmitCommand(Address, Data) == 0)&lt;br /&gt;
    {&lt;br /&gt;
      // no success yet, most-likely the TOPB is busy with the previous frame&lt;br /&gt;
&lt;br /&gt;
      // can we wait more ?&lt;br /&gt;
      if (timeout == 0)&lt;br /&gt;
      {&lt;br /&gt;
        // failed -&amp;gt; exit&lt;br /&gt;
        if (Answer) *Answer = 0xFF; // 0xFF is default DALI failure value&lt;br /&gt;
        // exit as FAILED&lt;br /&gt;
        return 0;&lt;br /&gt;
      } else&lt;br /&gt;
      {&lt;br /&gt;
        timeout--;&lt;br /&gt;
        wait(1);&lt;br /&gt;
      };&lt;br /&gt;
    } else&lt;br /&gt;
    {&lt;br /&gt;
      // success - TX OK&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // OK, we have succeeded with TX&lt;br /&gt;
&lt;br /&gt;
  // read the response&lt;br /&gt;
  RXflags = SDS_TOPB_DALI_getReceivedResponse(&amp;amp;DALI_RX);&lt;br /&gt;
&lt;br /&gt;
  // RXflags:&lt;br /&gt;
  // bit 0 of RXflags contains the GOT-RX flag&lt;br /&gt;
  // you SHOULD use value in RXflags and follow it up&lt;br /&gt;
&lt;br /&gt;
  // only the lowest 8 bits make sense&lt;br /&gt;
  /* if (Answer) */&lt;br /&gt;
  { &lt;br /&gt;
    *Answer = (unsigned char)DALI_RX;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // exit as OK&lt;br /&gt;
  return 1;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
 unsigned int i;&lt;br /&gt;
 &lt;br /&gt;
 unsigned int success;&lt;br /&gt;
 unsigned char DALI_Answer;&lt;br /&gt;
 &lt;br /&gt;
 char chx[32];&lt;br /&gt;
&lt;br /&gt;
 // console&lt;br /&gt;
 printf(&amp;quot;DALI EXAMPLE\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // TOPB LCD: clear and flip&lt;br /&gt;
 SDS_TOPB_LCDflip(1);&lt;br /&gt;
 // TOPB LCD: print to buffer&lt;br /&gt;
 SDS_TOPB_LCDtext(0,0,0,&amp;quot;DALI EXAMPLE&amp;quot;, 12);&lt;br /&gt;
 // TOPB LCD: flip&lt;br /&gt;
 SDS_TOPB_LCDflip(0);&lt;br /&gt;
&lt;br /&gt;
 // --- start sending DALI command ---&lt;br /&gt;
&lt;br /&gt;
 //&lt;br /&gt;
 printf(&amp;quot;SENDING 'RESET' TO 'BROADCAST'\n&amp;quot;);&lt;br /&gt;
 success = DALI_TXRX(0b11111111, 0b00100000, &amp;amp;DALI_Answer);&lt;br /&gt;
 printf(&amp;quot;success:%u (DALI-RX: %u)\n&amp;quot;, success, DALI_Answer);&lt;br /&gt;
&lt;br /&gt;
 // give the DALI-SLAVE some time to reset&lt;br /&gt;
 wait(50);&lt;br /&gt;
&lt;br /&gt;
 //&lt;br /&gt;
 printf(&amp;quot;SENDING 'QUERY-STATUS' TO 'BROADCAST'\n&amp;quot;);&lt;br /&gt;
 success = DALI_TXRX(0b11111111, 0b10010000, &amp;amp;DALI_Answer);&lt;br /&gt;
 printf(&amp;quot;success:%u (DALI-RX: %u)\n&amp;quot;, success, DALI_Answer);&lt;br /&gt;
&lt;br /&gt;
 //&lt;br /&gt;
 printf(&amp;quot;SENDING 'RECALL-MAX-LEVEL' TO 'BROADCAST'\n&amp;quot;);&lt;br /&gt;
 success = DALI_TXRX(0b11111111, 0b00000101, &amp;amp;DALI_Answer);&lt;br /&gt;
 printf(&amp;quot;success:%u (DALI-RX: %u)\n&amp;quot;, success, DALI_Answer);&lt;br /&gt;
&lt;br /&gt;
 //&lt;br /&gt;
 printf(&amp;quot;SENDING 'ON-AND-STEP-UP' TO 'BROADCAST'\n&amp;quot;);&lt;br /&gt;
 success = DALI_TXRX(0b11111111, 0b00001000, &amp;amp;DALI_Answer);&lt;br /&gt;
 printf(&amp;quot;success:%u (DALI-RX: %u)\n&amp;quot;, success, DALI_Answer);&lt;br /&gt;
&lt;br /&gt;
 // --- demo loop ---&lt;br /&gt;
&lt;br /&gt;
 for (;;)&lt;br /&gt;
 {&lt;br /&gt;
      // some delay for show&lt;br /&gt;
      wait(50);&lt;br /&gt;
&lt;br /&gt;
      // loop -&amp;gt; decrease light intensity&lt;br /&gt;
      for (i = 0; i &amp;lt; 30; i++)&lt;br /&gt;
      {&lt;br /&gt;
          // some delay for show&lt;br /&gt;
	  wait(5);&lt;br /&gt;
&lt;br /&gt;
          // DALI COMMAND to BROADCAST-ADDR: &amp;quot;DOWN&amp;quot;&lt;br /&gt;
          success = DALI_TXRX(0b11111111, 0b00000010, &amp;amp;DALI_Answer);&lt;br /&gt;
&lt;br /&gt;
          // DALI COMMAND to BROADCAST-ADDR: &amp;quot;QUERY-ACTUAL-LEVEL&amp;quot;&lt;br /&gt;
          success = DALI_TXRX(0b11111111, 0b10100000, &amp;amp;DALI_Answer);&lt;br /&gt;
          // info print to console&lt;br /&gt;
          printf(&amp;quot;set level: %u\n&amp;quot;, DALI_Answer);&lt;br /&gt;
          // info print to LCD&lt;br /&gt;
          sprintf(chx, &amp;quot;%u   &amp;quot;, DALI_Answer);&lt;br /&gt;
          SDS_TOPB_LCDtext(0,2,0,chx, 15);&lt;br /&gt;
	  SDS_TOPB_LCDflip(0);&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      // some delay for show&lt;br /&gt;
      wait(50);&lt;br /&gt;
&lt;br /&gt;
      // loop -&amp;gt; increase light intensity&lt;br /&gt;
      for (i = 0; i &amp;lt; 30; i++)&lt;br /&gt;
      {&lt;br /&gt;
          // some delay for show&lt;br /&gt;
	  wait(5);&lt;br /&gt;
&lt;br /&gt;
          // DALI COMMAND to BROADCAST-ADDR: &amp;quot;UP&amp;quot;&lt;br /&gt;
          success = DALI_TXRX(0b11111111, 0b00000001, &amp;amp;DALI_Answer);&lt;br /&gt;
&lt;br /&gt;
          // DALI COMMAND to BROADCAST-ADDR: &amp;quot;QUERY-ACTUAL-LEVEL&amp;quot;&lt;br /&gt;
          success = DALI_TXRX(0b11111111, 0b10100000, &amp;amp;DALI_Answer);&lt;br /&gt;
          // info print to console&lt;br /&gt;
          printf(&amp;quot;set level: %u\n&amp;quot;, DALI_Answer);&lt;br /&gt;
          // info print to LCD&lt;br /&gt;
          sprintf(chx, &amp;quot;%u   &amp;quot;, DALI_Answer);&lt;br /&gt;
          SDS_TOPB_LCDtext(0,2,0,chx, 15);&lt;br /&gt;
          SDS_TOPB_LCDflip(0);&lt;br /&gt;
&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
</feed>