<?xml-stylesheet type="text/xsl" href="https://community.element14.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>STM32H7B3I - TouchGFX Application Framework: MVP and the ModelListener</title><link>/technologies/embedded/b/blog/posts/stm32h7b3i---touchgfx-application-framework-mvp-and-the-modellistener</link><description>I&amp;#39;m selected for the STM32H7B3I-DK - DISCOVERY KIT road test.I&amp;#39;m working on a touch screen GUI for my electronic load.I&amp;#39;m going to review the ModelListener today. A software component that takes care that your business logic (electronic lab ins...</description><dc:language>en-US</dc:language><generator>Telligent Community 12</generator><item><title>RE: STM32H7B3I - TouchGFX Application Framework: MVP and the ModelListener</title><link>https://community.element14.com/technologies/embedded/b/blog/posts/stm32h7b3i---touchgfx-application-framework-mvp-and-the-modellistener</link><pubDate>Fri, 28 Aug 2020 22:33:21 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:4fbd6497-2483-4d36-b908-18449f4d9643</guid><dc:creator>Jan Cumps</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;For my own reference later (I need these conversions): From Ascii / Unicode / UTF8 tricks:&lt;/p&gt;&lt;p&gt;[embed:dc8ab71f-3b98-42d9-b0f6-e21e02a0f8e2:3ef06e6b-9b7d-4651-b12d-db8be7f5e991:type=c_cpp&amp;amp;text=++touchgfx%3A%3AUnicode%3A%3Asnprintf%28currentConnectedWifi.password%2C+64%2C+%22%25s%22%2C+password%29%3B%0A++touchgfx%3A%3AUnicode%3A%3Asnprintf%28currentConnectedWifi.wifi.ssid%2C+32%2C+%22%25s%22%2C+wifiAccessPoints%5Bid%5D.ssid%29%3B%0A++touchgfx%3A%3AUnicode%3A%3Asnprintf%28currentConnectedWifi.wifi.encryption%2C+30%2C+%22%25s%22%2C+wifiAccessPoints%5Bid%5D.encryption%29%3B%0A++currentConnectedWifi.wifi.signalStrength+%3D+wifiAccessPoints%5Bid%5D.signalStrength%3B%0A++%0A++touchgfx%3A%3AUnicode%3A%3AtoUTF8%28password%2C+password_ascii%2C+64%29%3B%0A++touchgfx%3A%3AUnicode%3A%3AtoUTF8%28wifiAccessPoints%5Bid%5D.ssid%2C+ssid_ascii%2C+32%29%3B%0A++touchgfx%3A%3AUnicode%3A%3AtoUTF8%28wifiAccessPoints%5Bid%5D.encryption%2C+encryption_ascii%2C+30%29%3B]&lt;/p&gt;&lt;div&gt;&lt;/div&gt;&lt;img src="https://community.element14.com/aggbug?PostID=21843&amp;AppID=7&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: STM32H7B3I - TouchGFX Application Framework: MVP and the ModelListener</title><link>https://community.element14.com/technologies/embedded/b/blog/posts/stm32h7b3i---touchgfx-application-framework-mvp-and-the-modellistener</link><pubDate>Sun, 23 Aug 2020 17:17:05 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:4fbd6497-2483-4d36-b908-18449f4d9643</guid><dc:creator>Jan Cumps</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;demo of the interface in its current state:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span id="0b960a2d_9e18_4d6e_8468_1f7c91b82f9e"&gt;&lt;span&gt;[View:https://www.youtube.com/watch?v=PjsQ1yuo5TA:1110:699]&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=21843&amp;AppID=7&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: STM32H7B3I - TouchGFX Application Framework: MVP and the ModelListener</title><link>https://community.element14.com/technologies/embedded/b/blog/posts/stm32h7b3i---touchgfx-application-framework-mvp-and-the-modellistener</link><pubDate>Sat, 22 Aug 2020 19:09:16 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:4fbd6497-2483-4d36-b908-18449f4d9643</guid><dc:creator>Jan Cumps</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;There is a reason to design this mechanism between the single Model class and all screens.&lt;/p&gt;&lt;p&gt;It&amp;#39;s a 1-to-n relation, and you don&amp;#39;t want to put all those &amp;quot;if screen 1 then&amp;quot;, &amp;quot;if screen 2 then&amp;quot; forks in the model.&lt;/p&gt;&lt;p&gt;It has one duty: be the mediator between the LCD and the backend. It should not have to deal with screen layout, flow, actions.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;The other way doesn&amp;#39;t need the same abstraction, because there&amp;#39;s only one Model. And the screens are allowed to know the model.&lt;/p&gt;&lt;p&gt;That&amp;#39;s why the ModelListener deals with any message coming from the Model, going to he screens.&lt;/p&gt;&lt;p&gt;But when the screens want to ask the Model something, there&amp;#39;s no compelling reason for abstraction. The single Model has the duty to deal with Backend requests. And the screens should be able to just invoke those functions.&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=21843&amp;AppID=7&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item></channel></rss>