<?xml version="1.0" encoding="UTF-8" ?>
<?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/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Embedded Forum - Recent Threads</title><link>https://community.element14.com/technologies/embedded/f/embedded-forum</link><description>Generally discussing embedded hardware</description><dc:language>en-US</dc:language><generator>Telligent Community 12</generator><lastBuildDate>Wed, 11 Feb 2026 01:49:09 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://community.element14.com/technologies/embedded/f/embedded-forum" /><item><title>Find Wireless ARM MCU</title><link>https://community.element14.com/thread/56658?ContentTypeID=0</link><pubDate>Wed, 11 Feb 2026 01:49:09 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:c9e84ab5-5c6b-4379-b60d-4fa810239694</guid><dc:creator>cylee_acc</dc:creator><slash:comments>8</slash:comments><comments>https://community.element14.com/thread/56658?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/technologies/embedded/f/embedded-forum/56658/find-wireless-arm-mcu/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p dir="auto"&gt;Hello everyone,&lt;/p&gt;
&lt;p dir="auto"&gt;I&amp;rsquo;m looking for recommendations for a&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;wireless ARM-based MCU&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;for a research prototype.&lt;/p&gt;
&lt;p dir="auto"&gt;&lt;strong&gt;Target specifications:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir="auto"&gt;
&lt;li&gt;
&lt;p&gt;32-bit ARM MCU with operating frequency &amp;gt; 78 MHz&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;On-chip&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&amp;ge; 512 KB Flash&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&amp;ge; 64 KB RAM&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Integrated low-power wireless radio (&lt;strong&gt;Sub-GHz preferred&lt;/strong&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Integrated power amplifier &amp;para; supporting up to&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;20 dBm TX output&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Small package options preferred (&lt;strong&gt;QFN or WLCSP&lt;/strong&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p dir="auto"&gt;In addition, I&amp;rsquo;d like to know whether any suitable devices are available as&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;bare die&lt;/strong&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;known good die (KGD)&lt;/strong&gt;.&lt;/p&gt;
&lt;p dir="auto"&gt;If possible, please also share links to&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;datasheets, reference designs,&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;current availability&lt;/strong&gt;.&lt;/p&gt;
&lt;p dir="auto"&gt;Thanks in advance for your help.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>How do you decide which CVEs actually matter in embedded products?</title><link>https://community.element14.com/thread/56542?ContentTypeID=0</link><pubDate>Wed, 31 Dec 2025 12:53:36 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:1ee1e3f0-ccc6-410b-88a4-f0fe2bf54093</guid><dc:creator>micheal.embedded</dc:creator><slash:comments>4</slash:comments><comments>https://community.element14.com/thread/56542?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/technologies/embedded/f/embedded-forum/56542/how-do-you-decide-which-cves-actually-matter-in-embedded-products/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p data-start="410" data-end="567"&gt;In embedded products, patching &lt;em data-start="441" data-end="448"&gt;every&lt;/em&gt; CVE often isn&amp;rsquo;t realistic due to certification, long test cycles, limited update windows, or system stability risks.&lt;/p&gt;
&lt;p data-start="574" data-end="761"&gt;I&amp;rsquo;m curious how others handle this in practice. When a CVE affects a component in your system, what factors determine whether it gets patched immediately, deferred, or accepted as risk?&lt;/p&gt;
&lt;p data-start="768" data-end="887"&gt;Do you prioritize based on exploitability, attack surface, physical access assumptions, update cost, or something else?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>hands on Raspberry Pi Pico 2 project book  free review copies for embedded devs</title><link>https://community.element14.com/thread/56538?ContentTypeID=0</link><pubDate>Mon, 29 Dec 2025 12:22:55 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:828d4d71-21fd-4898-8252-bc4317f5b063</guid><dc:creator>micheal.embedded</dc:creator><slash:comments>2</slash:comments><comments>https://community.element14.com/thread/56538?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/technologies/embedded/f/embedded-forum/56538/hands-on-raspberry-pi-pico-2-project-book-free-review-copies-for-embedded-devs/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I wrote a handson Raspberry Pi Pico 2 project book &amp;nbsp;free review copies for embedded devs&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Hi everyone, I&amp;rsquo;m &lt;strong&gt;&lt;b&gt;&lt;span&gt;Michael Bell&lt;/span&gt;&lt;/b&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;I write embedded systems books for beginners and professionals.&lt;/p&gt;
&lt;p&gt;I just released &lt;strong&gt;&lt;b&gt;&lt;span&gt;&amp;ldquo;Embedded Systems with Raspberry Pi Pico 2 and RP2350: Projects and Deep Dives&amp;rdquo;&lt;/span&gt;&lt;/b&gt;&lt;/strong&gt;.&lt;br /&gt;This is a &lt;strong&gt;&lt;b&gt;&lt;span&gt;project-based book&lt;/span&gt;&lt;/b&gt;&lt;/strong&gt;&amp;nbsp;that takes you from &lt;strong&gt;&lt;b&gt;&lt;span&gt;blinking LEDs to building real embedded systems&lt;/span&gt;&lt;/b&gt;&lt;/strong&gt;&amp;nbsp;using the RP2350, GPIO, timers, interrupts, and communication interfaces.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m looking for &lt;strong&gt;&lt;b&gt;&lt;span&gt;honest feedback&lt;/span&gt;&lt;/b&gt;&lt;/strong&gt;&amp;nbsp;from developers and hobbyists.&lt;br /&gt;If you&amp;rsquo;re interested, I can send you a &lt;strong&gt;&lt;b&gt;&lt;span&gt;free Kindle copy&lt;/span&gt;&lt;/b&gt;&lt;/strong&gt;&amp;nbsp;in exchange for an &lt;strong&gt;&lt;b&gt;&lt;span&gt;honest review&lt;/span&gt;&lt;/b&gt;&lt;/strong&gt;&amp;nbsp;on Amazon. No pressure &amp;nbsp;&amp;nbsp;I just want to make sure the book is practical and useful.&lt;/p&gt;
&lt;p&gt;You can also check out the &lt;strong&gt;&lt;b&gt;&lt;span&gt;example code and projects on GitHub&lt;/span&gt;&lt;/b&gt;&lt;/strong&gt;&amp;nbsp;here:&lt;br /&gt;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/1f4cc.svg" title="Pushpin"&gt;&amp;#x1f4cc;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;a href="https://github.com/michael-embedded/pico-embedded-book" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;&lt;u&gt;https://github.com/michael-embedded/pico-embedded-book&lt;/u&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;And here&amp;rsquo;s the Amazon page to see the book details:&lt;br /&gt;&lt;span class="emoticon" data-url="https://community.element14.com/cfs-file/__key/system/emoji/1f4cc.svg" title="Pushpin"&gt;&amp;#x1f4cc;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;a href="https://www.amazon.com/dp/B0G62PXWTP" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;&lt;u&gt;https://www.amazon.com/dp/B0G62PXWTP&lt;/u&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Many of the projects include &lt;strong&gt;&lt;b&gt;&lt;span&gt;detailed walk-throughs and debugging notes&lt;/span&gt;&lt;/b&gt;&lt;/strong&gt;&amp;nbsp;so you can learn &lt;em&gt;&lt;i&gt;&lt;span&gt;how&lt;/span&gt;&lt;/i&gt;&lt;/em&gt;&amp;nbsp;and &lt;em&gt;&lt;i&gt;&lt;span&gt;why&lt;/span&gt;&lt;/i&gt;&lt;/em&gt;&amp;nbsp;things work.&lt;/p&gt;
&lt;p&gt;Thanks for helping me make embedded learning better!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>GCC Arm toolchain version 15 released</title><link>https://community.element14.com/thread/56529?ContentTypeID=0</link><pubDate>Tue, 23 Dec 2025 08:58:45 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:a7eb5511-40d6-431f-ad4e-8ebb8afda698</guid><dc:creator>Jan Cumps</dc:creator><slash:comments>2</slash:comments><comments>https://community.element14.com/thread/56529?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/technologies/embedded/f/embedded-forum/56529/gcc-arm-toolchain-version-15-released/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;span&gt;Approximately every six months,&amp;nbsp;a new pre-built GCC toolchain for ARM is released. On December 17, release 15.2 Rel1 was published:&amp;nbsp;&lt;/span&gt;&lt;a id="" href="https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads&lt;/a&gt;&lt;span&gt;.&amp;nbsp; The first 15.x version.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Next to some additional interesting C++standard features, there are goodies for performant ARM binaries: &lt;a href="https://developer.arm.com/community/arm-community-blogs/b/tools-software-ides-blog/posts/gcc-15-continuously-improving" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;ARM Development Community blog: GCC 15: Continuously Improving&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Is fancy code completion really worth it ?</title><link>https://community.element14.com/thread/56507?ContentTypeID=0</link><pubDate>Wed, 10 Dec 2025 10:35:26 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:72a6bab7-e565-46b7-9028-d3fb53d2c7cd</guid><dc:creator>michaelkellett</dc:creator><slash:comments>18</slash:comments><comments>https://community.element14.com/thread/56507?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/technologies/embedded/f/embedded-forum/56507/is-fancy-code-completion-really-worth-it/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Of credible AI horror stories I think this is about as bad as it gets !&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;a id="" href="https://www.tomshardware.com/tech-industry/cyber-security/researchers-uncover-critical-ai-ide-flaws-exposing-developers-to-data-theft-and-rce" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://www.tomshardware.com/tech-industry/cyber-security/researchers-uncover-critical-ai-ide-flaws-exposing-developers-to-data-theft-and-rce&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I&amp;#39;m sticking with the &amp;quot;legacy&amp;quot; Keil IDE for C coding on ARM - it may be a little slower but at least I&amp;#39;m fairly sure that nothing gets into my code that I didn&amp;#39;t put there !&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;MK&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>MAX32666 PCM Audio subsystem keeps repeating samples</title><link>https://community.element14.com/thread/56455?ContentTypeID=0</link><pubDate>Wed, 19 Nov 2025 13:54:54 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:c41e4b58-d8e5-4982-8c63-15e30d7f73cc</guid><dc:creator>obones</dc:creator><slash:comments>10</slash:comments><comments>https://community.element14.com/thread/56455?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/technologies/embedded/f/embedded-forum/56455/max32666-pcm-audio-subsystem-keeps-repeating-samples/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;In an attempt at exploring the MAX32666 feature set, I&amp;#39;m trying to get its Audio subsystem to output a stream of bit patterns via I&amp;sup2;S. Reading the documentation, and because the entire system is a 32bit architecture, I thought that I could use two 32 bits channels on a 64 bits frame so that no space is wasted in RAM.&lt;/p&gt;
&lt;p&gt;Sadly, this does not to work as the lowest 8 bits are always cut out, which I reported at Analog&amp;#39;s &lt;a href="https://ez.analog.com/microcontrollers/ultra-low-power-microcontrollers/f/q-a/600942/why-does-max32666-i2s-pcm-always-truncate-samples-to-24-bits" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;forums&lt;/a&gt;. A simple workaround is to &lt;a href="https://github.com/obones/max32666toy/blob/6ebe354896f4e31998261da7294b05d76c6168ec/main.cpp#L146" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;use&lt;/a&gt; two 24 bits channels on a 48 bits frame so that all bits are packed without dead time in between samples.&lt;/p&gt;
&lt;p&gt;With that out of the way I created my target samples and sent them along but could only get 900mV on the DOUT pin! As it turns out, one has to activate all four Audio pins even if you don&amp;#39;t use them, but that&amp;#39;s not indicated in the datasheet.&lt;/p&gt;
&lt;p&gt;Sadly, even after that, I could not get the proper signal that I expected so I decided to create a set of samples that would allow me to clearly see what&amp;#39;s happening on the output:&lt;/p&gt;
&lt;table style="margin-left:auto;margin-right:auto;" border="1" cellpadding="1" cellspacing="1"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;sample indexes&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align:center;"&gt;&lt;strong&gt;left&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align:center;"&gt;&lt;strong&gt;right&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0 - 1&lt;/td&gt;
&lt;td&gt;&lt;span style="font-family:courier new, courier;"&gt;10000000&amp;#39;00000000&amp;#39;00000110&amp;#39;00000000&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style="font-family:courier new, courier;"&gt;10000000&amp;#39;00000000&amp;#39;00001010&amp;#39;00000000&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2 - 3&lt;/td&gt;
&lt;td&gt;&lt;span style="font-family:courier new, courier;"&gt;10000000&amp;#39;00000000&amp;#39;00010010&amp;#39;00000000&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style="font-family:courier new, courier;"&gt;10000000&amp;#39;00000000&amp;#39;00100010&amp;#39;00000000&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4 - 5&lt;/td&gt;
&lt;td&gt;&lt;span style="font-family:courier new, courier;"&gt;10000000&amp;#39;00000000&amp;#39;01000010&amp;#39;00000000&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style="font-family:courier new, courier;"&gt;10000000&amp;#39;00000000&amp;#39;10000010&amp;#39;00000000&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6 - 7&lt;/td&gt;
&lt;td&gt;&lt;span style="font-family:courier new, courier;"&gt;11111111&amp;#39;11111111&amp;#39;11111010&amp;#39;00000000&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style="font-family:courier new, courier;"&gt;11111111&amp;#39;11111111&amp;#39;11110110&amp;#39;00000000&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8 - 9&lt;/td&gt;
&lt;td&gt;&lt;span style="font-family:courier new, courier;"&gt;11111111&amp;#39;11111111&amp;#39;11101110&amp;#39;00000000&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style="font-family:courier new, courier;"&gt;11111111&amp;#39;11111111&amp;#39;11011110&amp;#39;00000000&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10 - 11&lt;/td&gt;
&lt;td&gt;&lt;span style="font-family:courier new, courier;"&gt;11111111&amp;#39;11111111&amp;#39;10111110&amp;#39;00000000&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style="font-family:courier new, courier;"&gt;11111111&amp;#39;11111111&amp;#39;01111110&amp;#39;00000000&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12 - 13&lt;/td&gt;
&lt;td&gt;&lt;span style="font-family:courier new, courier;"&gt;11111111&amp;#39;11111110&amp;#39;11111110&amp;#39;00000000&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style="font-family:courier new, courier;"&gt;11111111&amp;#39;11111101&amp;#39;11111110&amp;#39;00000000&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14 - 15&lt;/td&gt;
&lt;td&gt;&lt;span style="font-family:courier new, courier;"&gt;11111111&amp;#39;11111011&amp;#39;11111110&amp;#39;00000000&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style="font-family:courier new, courier;"&gt;11111111&amp;#39;11110111&amp;#39;11111110&amp;#39;00000000&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;16 - 17&lt;/td&gt;
&lt;td&gt;&lt;span style="font-family:courier new, courier;"&gt;11111111&amp;#39;11101111&amp;#39;11111110&amp;#39;00000000&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style="font-family:courier new, courier;"&gt;11111111&amp;#39;11011111&amp;#39;11111110&amp;#39;00000000&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;18 - 19&lt;/td&gt;
&lt;td&gt;&lt;span style="font-family:courier new, courier;"&gt;11111111&amp;#39;10111111&amp;#39;11111110&amp;#39;00000000&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style="font-family:courier new, courier;"&gt;11111111&amp;#39;01111111&amp;#39;11111110&amp;#39;00000000&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;20 - 21&lt;/td&gt;
&lt;td&gt;&lt;span style="font-family:courier new, courier;"&gt;11111110&amp;#39;11111111&amp;#39;11111110&amp;#39;00000000&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style="font-family:courier new, courier;"&gt;11111101&amp;#39;11111111&amp;#39;11111110&amp;#39;00000000&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;22 - 23&lt;/td&gt;
&lt;td&gt;&lt;span style="font-family:courier new, courier;"&gt;11111011&amp;#39;11111111&amp;#39;11111110&amp;#39;00000000&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style="font-family:courier new, courier;"&gt;11110111&amp;#39;11111111&amp;#39;11111110&amp;#39;00000000&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;24 - 25&lt;/td&gt;
&lt;td&gt;&lt;span style="font-family:courier new, courier;"&gt;11000000&amp;#39;00000000&amp;#39;00000010&amp;#39;00000000&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style="font-family:courier new, courier;"&gt;10000000&amp;#39;00000000&amp;#39;00000010&amp;#39;00000000&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The basic idea is to have a marker bit be at a different place in all samples to easily identify them, while having the lowest 8 bits at zero as they will get ignored.&lt;/p&gt;
&lt;p&gt;The &lt;a href="https://github.com/obones/FastLED/blob/MAX32666/src/platforms/arm/max32/clockless_arm_max32.cpp#L201" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;code&lt;/a&gt; that sends all those basically does this:&lt;/p&gt;
&lt;p&gt;Activate Audio subsystem&lt;br /&gt;Turn off both TX channels&lt;br /&gt;Fill transmission FIFOs (this consumes 2*4 samples)&lt;br /&gt;Turn on both TX channels&lt;br /&gt;While there are samples remaining, wait for space in FIFOs, place one sample for left, one for right in their respective FIFO&lt;br /&gt;Now that all samples are in the FIFOs, wait for them to get empty&lt;br /&gt;Turn off both TX channels&lt;/p&gt;
&lt;p&gt;Using the &amp;quot;capture to file&amp;quot; feature of my DSO (thanks again E14, it&amp;#39;s really a nice one), and a bit of editing in Paint.Net, I&amp;#39;m getting the following trace on the output pin:&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" style="max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/7/pastedimage1763559658524v2.png" /&gt;&lt;/p&gt;
&lt;p&gt;So, the 8 queued samples are sent just fine, then an additional 4 as well, but after that, the subsystem keeps repeating samples 4 and 5 until I turn off the TX channels, for no reasons that are obvious to me.&lt;/p&gt;
&lt;p&gt;I understand that the subsystem will repeat the last sample it has received if I&amp;#39;m not providing new samples fast enough, but I&amp;#39;m sure they are all placed in the FIFO as the while loops exit. And why repeat #4 and #5 when clearly 6 others have been given (and sent) afterwards?&lt;/p&gt;
&lt;p&gt;In the Audio subsystem example provided in the MSDK, they are using the interrupt vector which I&amp;#39;ll try using over the week-end to see if it helps.&lt;/p&gt;
&lt;p&gt;In the meantime, does this situation sound familiar to any of you? Would you have any recommendation?&lt;/p&gt;
&lt;p&gt;Thanks in advance&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Uploading OTBR Firmware in nRF52840</title><link>https://community.element14.com/thread/56340?ContentTypeID=0</link><pubDate>Thu, 30 Oct 2025 04:03:42 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:c3a2b625-5dd9-40e8-a4d1-9d6ea4420b20</guid><dc:creator>meera_hussien</dc:creator><slash:comments>2</slash:comments><comments>https://community.element14.com/thread/56340?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/technologies/embedded/f/embedded-forum/56340/uploading-otbr-firmware-in-nrf52840/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Good day,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I am trying to upload the OT firmare on my nRF52840 usb dongle, but unsuccessful. I am not sure why. FYI, i am using the nRF Connect Programmer to program the dongle. Below is the error that i am getting.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" style="height:554px;max-height:554px;max-width:277px;" height="554" src="https://community.element14.com/resized-image/__size/554x1108/__key/communityserver-discussions-components-files/7/pastedimage1761796930851v3.jpeg" width="276"  /&gt;&amp;nbsp;&amp;nbsp;&lt;img loading="lazy" alt="image" style="height:544px;max-height:544px;max-width:523px;" height="544" src="https://community.element14.com/resized-image/__size/1046x1088/__key/communityserver-discussions-components-files/7/pastedimage1761796993433v4.png" width="522"  /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="height:448px;max-height:448px;max-width:827px;" height="423" src="https://community.element14.com/resized-image/__size/1654x896/__key/communityserver-discussions-components-files/7/pastedimage1761796682418v1.png" width="826"  /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;And after i try to write the firmware, this is the error that i am getting&lt;br /&gt;&lt;br /&gt;&lt;img loading="lazy" alt="image" style="height:140px;max-height:140px;max-width:869px;" height="126" src="https://community.element14.com/resized-image/__size/1738x280/__key/communityserver-discussions-components-files/7/pastedimage1761796739041v2.png" width="868"  /&gt;&lt;/p&gt;
&lt;p&gt;Below is the log file&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;2025-10-30T03:23:28.461Z INFO Initialising the bundled nrfutil device&lt;br /&gt;2025-10-30T03:23:28.479Z DEBUG Application data folder: C:\Users\meera.hussien\AppData\Roaming\nrfconnect\pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:23:28.520Z DEBUG Sending event &amp;quot;programmer: running nrfutil device&amp;quot;&lt;br /&gt;2025-10-30T03:23:28.520Z DEBUG App pc-nrfconnect-programmer v4.6.2 (official)&lt;br /&gt;2025-10-30T03:23:28.520Z DEBUG App path: C:\Users\meera.hussien\.nrfconnect-apps\node_modules\pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:23:28.520Z DEBUG nRFConnect 5.2.0, required by the app is (&amp;gt;=5.2.0)&lt;br /&gt;2025-10-30T03:23:28.520Z DEBUG nRFConnect path: C:\Users\meera.hussien\AppData\Local\Programs\nrfconnect\resources\app.asar&lt;br /&gt;2025-10-30T03:23:28.520Z DEBUG HomeDir: C:\Users\meera.hussien&lt;br /&gt;2025-10-30T03:23:28.520Z DEBUG TmpDir: C:\Users\MEERA~1.HUS\AppData\Local\Temp&lt;br /&gt;2025-10-30T03:23:29.295Z DEBUG Sending event &amp;quot;programmer: running nrfutil device&amp;quot;&lt;br /&gt;2025-10-30T03:23:29.296Z DEBUG Sending event &amp;quot;programmer: running nrfutil device&amp;quot;&lt;br /&gt;2025-10-30T03:23:29.300Z DEBUG Sending event &amp;quot;programmer: running nrfutil device&amp;quot;&lt;br /&gt;2025-10-30T03:23:29.340Z INFO Using the bundled core version for nrfutil device: 8.0.0&lt;br /&gt;2025-10-30T03:23:29.370Z INFO Using nrfutil-device version: 2.12.3&lt;br /&gt;2025-10-30T03:23:29.370Z INFO Using nrf-device-lib version: 0.17.81&lt;br /&gt;2025-10-30T03:23:29.370Z INFO Using nrf-probe version: 0.40.1&lt;br /&gt;2025-10-30T03:23:29.370Z INFO Using JLink version: JLink_V8.18&lt;br /&gt;2025-10-30T03:23:29.464Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:23:29.464Z INFO Getting serial port options from the persistent store for 74:4D:BD:7B:B3:00.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:23:29.465Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:23:29.465Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:23:29.466Z INFO Device connected with the serial number 74:4D:BD:7B:B3:00&lt;br /&gt;2025-10-30T03:23:29.466Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:23:31.057Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:23:51.997Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:23:51.997Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:23:51.998Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:23:52.061Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:23:52.062Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:24:01.863Z INFO Selecting device with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:24:01.873Z DEBUG Sending event &amp;quot;programmer: running nrfutil device&amp;quot;&lt;br /&gt;2025-10-30T03:24:02.483Z INFO Selected device with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:24:02.483Z INFO Using nrfutil-device to communicate with target via USB SDFU protocol&lt;br /&gt;2025-10-30T03:24:02.487Z DEBUG Sending event &amp;quot;programmer: device selected&amp;quot;&lt;br /&gt;2025-10-30T03:24:02.487Z DEBUG Sending event &amp;quot;programmer: running nrfutil device&amp;quot;&lt;br /&gt;2025-10-30T03:24:32.555Z INFO Parsing HEX file: C:\Users\meera.hussien\Downloads\ot-rcp-USB.hex&lt;br /&gt;2025-10-30T03:24:32.563Z INFO File was last modified at 10/30/2025, 11:22:39 AM&lt;br /&gt;2025-10-30T03:24:32.586Z INFO Update files regions according to Application core&lt;br /&gt;2025-10-30T03:24:32.586Z INFO Parse memory regions for file&lt;br /&gt;2025-10-30T03:24:50.491Z INFO Does not need to be reloaded: C:\Users\meera.hussien\Downloads\ot-rcp-USB.hex&lt;br /&gt;2025-10-30T03:24:50.495Z INFO Hash is generated by SHA256&lt;br /&gt;2025-10-30T03:24:50.499Z INFO Performing DFU. This may take a few seconds&lt;br /&gt;2025-10-30T03:24:50.513Z DEBUG Sending event &amp;quot;programmer: running nrfutil device&amp;quot;&lt;br /&gt;2025-10-30T03:24:54.792Z INFO All dfu images have been written to the target device&lt;br /&gt;2025-10-30T03:24:55.416Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:24:55.417Z INFO Wait For Device was successful&lt;br /&gt;2025-10-30T03:24:55.417Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:24:55.422Z DEBUG Sending event &amp;quot;programmer: running nrfutil device&amp;quot;&lt;br /&gt;2025-10-30T03:24:55.494Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:24:55.495Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:24:55.587Z ERROR Error: Failed with exit code 1.&lt;br /&gt;One or more set mcu state tasks failed:&lt;br /&gt; * E94BBFFE0C8C: The operation you tried to run is not available for the selected device.&lt;br /&gt; &lt;br /&gt; The operation is either not supported for this type of device or the device has issues and it cannot be recognized (NotFound)&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Message: Failed to set mcu state on E94BBFFE0C8C, The operation you tried to run is not available for the selected device.&lt;/p&gt;
&lt;p&gt;The operation is either not supported for this type of device or the device has issues and it cannot be recognized.&lt;br /&gt;2025-10-30T03:24:55.587Z ERROR Error when fetching device versions: Error: Failed with exit code 1.&lt;br /&gt;One or more set mcu state tasks failed:&lt;br /&gt; * E94BBFFE0C8C: The operation you tried to run is not available for the selected device.&lt;br /&gt; &lt;br /&gt; The operation is either not supported for this type of device or the device has issues and it cannot be recognized (NotFound)&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Message: Failed to set mcu state on E94BBFFE0C8C, The operation you tried to run is not available for the selected device.&lt;/p&gt;
&lt;p&gt;The operation is either not supported for this type of device or the device has issues and it cannot be recognized.&lt;br /&gt;2025-10-30T03:25:38.644Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:25:38.648Z INFO Update files regions according to Application core&lt;br /&gt;2025-10-30T03:25:38.649Z INFO Parse memory regions for file&lt;br /&gt;2025-10-30T03:25:39.323Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:25:39.323Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:25:39.324Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:25:39.389Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:25:39.390Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:25:42.453Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:25:43.155Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:25:43.156Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:25:43.161Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:25:43.216Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:25:43.216Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:25:43.412Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:25:46.340Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:25:46.341Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:25:46.346Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:25:46.402Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:25:46.402Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:25:46.804Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:25:52.110Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:25:52.111Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:25:52.115Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:25:52.176Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:25:52.177Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:26:03.447Z INFO Selecting device with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:26:03.456Z DEBUG Sending event &amp;quot;programmer: running nrfutil device&amp;quot;&lt;br /&gt;2025-10-30T03:26:04.073Z INFO Selected device with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:26:04.073Z INFO Using nrfutil-device to communicate with target via USB SDFU protocol&lt;br /&gt;2025-10-30T03:26:04.075Z DEBUG Sending event &amp;quot;programmer: device selected&amp;quot;&lt;br /&gt;2025-10-30T03:26:04.075Z DEBUG Sending event &amp;quot;programmer: running nrfutil device&amp;quot;&lt;br /&gt;2025-10-30T03:26:04.077Z INFO Update files regions according to Application core&lt;br /&gt;2025-10-30T03:26:04.077Z INFO Parse memory regions for file&lt;br /&gt;2025-10-30T03:26:25.549Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:26:26.261Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:26:26.262Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:26:26.267Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:26:26.327Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:26:26.327Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:34:05.112Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:35:25.912Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:35:25.912Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:35:25.917Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:35:26.034Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:35:26.035Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:35:32.441Z INFO Selecting device with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:35:32.447Z DEBUG Sending event &amp;quot;programmer: running nrfutil device&amp;quot;&lt;br /&gt;2025-10-30T03:35:33.021Z INFO Selected device with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:35:33.021Z INFO Using nrfutil-device to communicate with target via USB SDFU protocol&lt;br /&gt;2025-10-30T03:35:33.024Z DEBUG Sending event &amp;quot;programmer: device selected&amp;quot;&lt;br /&gt;2025-10-30T03:35:33.024Z DEBUG Sending event &amp;quot;programmer: running nrfutil device&amp;quot;&lt;br /&gt;2025-10-30T03:35:56.979Z ERROR Could not open HEX file: Error: ENOENT: no such file or directory, stat &amp;#39;C:\Users\meera.hussien\Downloads\ot-rcp-July-2025\ot-rcp.hex&amp;#39;&lt;br /&gt;2025-10-30T03:36:03.700Z INFO Update files regions according to Application core&lt;br /&gt;2025-10-30T03:36:03.700Z INFO Parse memory regions for file&lt;br /&gt;2025-10-30T03:36:03.702Z ERROR Could not open ZIP file: Error: ENOENT: no such file or directory, stat &amp;#39;C:\Users\meera.hussien\Downloads\ot-rcp-July-2025.zip&amp;#39;&lt;br /&gt;2025-10-30T03:36:12.874Z INFO Parsing HEX file: C:\Users\meera.hussien\Downloads\ot-rcp-USB.hex&lt;br /&gt;2025-10-30T03:36:12.874Z INFO File was last modified at 10/30/2025, 11:22:39 AM&lt;br /&gt;2025-10-30T03:36:12.886Z INFO Update files regions according to Application core&lt;br /&gt;2025-10-30T03:36:12.886Z INFO Parse memory regions for file&lt;br /&gt;2025-10-30T03:36:15.877Z INFO Does not need to be reloaded: C:\Users\meera.hussien\Downloads\ot-rcp-USB.hex&lt;br /&gt;2025-10-30T03:36:15.878Z INFO Hash is generated by SHA256&lt;br /&gt;2025-10-30T03:36:15.880Z INFO Performing DFU. This may take a few seconds&lt;br /&gt;2025-10-30T03:36:15.889Z DEBUG Sending event &amp;quot;programmer: running nrfutil device&amp;quot;&lt;br /&gt;2025-10-30T03:36:20.503Z INFO All dfu images have been written to the target device&lt;br /&gt;2025-10-30T03:36:21.142Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:36:21.143Z INFO Wait For Device was successful&lt;br /&gt;2025-10-30T03:36:21.143Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:36:21.147Z DEBUG Sending event &amp;quot;programmer: running nrfutil device&amp;quot;&lt;br /&gt;2025-10-30T03:36:21.211Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:36:21.212Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:36:21.287Z ERROR Error: Failed with exit code 1.&lt;br /&gt;One or more set mcu state tasks failed:&lt;br /&gt; * E94BBFFE0C8C: The operation you tried to run is not available for the selected device.&lt;br /&gt; &lt;br /&gt; The operation is either not supported for this type of device or the device has issues and it cannot be recognized (NotFound)&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Message: Failed to set mcu state on E94BBFFE0C8C, The operation you tried to run is not available for the selected device.&lt;/p&gt;
&lt;p&gt;The operation is either not supported for this type of device or the device has issues and it cannot be recognized.&lt;br /&gt;2025-10-30T03:36:21.287Z ERROR Error when fetching device versions: Error: Failed with exit code 1.&lt;br /&gt;One or more set mcu state tasks failed:&lt;br /&gt; * E94BBFFE0C8C: The operation you tried to run is not available for the selected device.&lt;br /&gt; &lt;br /&gt; The operation is either not supported for this type of device or the device has issues and it cannot be recognized (NotFound)&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Message: Failed to set mcu state on E94BBFFE0C8C, The operation you tried to run is not available for the selected device.&lt;/p&gt;
&lt;p&gt;The operation is either not supported for this type of device or the device has issues and it cannot be recognized.&lt;br /&gt;2025-10-30T03:38:07.200Z INFO Deselected device&lt;br /&gt;2025-10-30T03:38:07.201Z INFO Selecting device with the serial number 74:4D:BD:7B:B3:00&lt;br /&gt;2025-10-30T03:38:07.201Z DEBUG Sending event &amp;quot;programmer: device deselected &amp;quot;&lt;br /&gt;2025-10-30T03:38:07.203Z INFO Update files regions according to Application core&lt;br /&gt;2025-10-30T03:38:07.203Z INFO Parse memory regions for file&lt;br /&gt;2025-10-30T03:38:07.203Z INFO Selected device with the serial number 74:4D:BD:7B:B3:00&lt;br /&gt;2025-10-30T03:38:07.203Z WARN No operations possible for device.&lt;br /&gt;2025-10-30T03:38:07.203Z WARN If the device is a MCUboot device make sure it is in the bootloader mode&lt;br /&gt;2025-10-30T03:38:07.204Z DEBUG Sending event &amp;quot;programmer: device selected&amp;quot;&lt;br /&gt;2025-10-30T03:38:17.512Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:38:25.384Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:38:25.385Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:38:25.388Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:38:25.437Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:38:25.438Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:38:27.824Z INFO Deselected device&lt;br /&gt;2025-10-30T03:38:27.825Z INFO Selecting device with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:38:27.828Z DEBUG Sending event &amp;quot;programmer: device deselected &amp;quot;&lt;br /&gt;2025-10-30T03:38:27.830Z INFO Selected device with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:38:27.830Z WARN No operations possible for device.&lt;br /&gt;2025-10-30T03:38:27.830Z WARN If the device is a MCUboot device make sure it is in the bootloader mode&lt;br /&gt;2025-10-30T03:38:27.831Z DEBUG Sending event &amp;quot;programmer: device selected&amp;quot;&lt;br /&gt;2025-10-30T03:38:51.389Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:38:52.113Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:38:52.113Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:38:52.113Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:38:52.170Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:38:52.170Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:39:14.099Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:39:24.787Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:39:24.787Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:39:24.791Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:39:24.845Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:39:24.845Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:39:27.896Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:39:28.584Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:39:28.584Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:39:28.585Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:39:28.634Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:39:28.635Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:39:30.831Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:39:32.132Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:39:32.132Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:39:32.136Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:39:32.189Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:39:32.189Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:39:32.636Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:39:33.805Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:39:33.805Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:39:33.806Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:39:33.861Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:39:33.861Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:39:34.349Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:39:39.168Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:39:39.168Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:39:39.173Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:39:39.222Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:39:39.222Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:39:40.291Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:39:40.935Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:39:40.935Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:39:40.935Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:39:40.994Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:39:40.995Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:39:41.206Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:39:49.458Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:39:49.459Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:39:49.463Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:39:49.516Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:39:49.517Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:39:49.524Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:39:51.954Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:39:51.954Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:39:51.955Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:39:52.004Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:39:52.004Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:39:52.202Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:39:55.264Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:39:55.264Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:39:55.264Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:39:55.317Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:39:55.318Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:39:59.003Z INFO Selecting device with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:39:59.011Z DEBUG Sending event &amp;quot;programmer: running nrfutil device&amp;quot;&lt;br /&gt;2025-10-30T03:39:59.583Z INFO Selected device with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:39:59.584Z INFO Using nrfutil-device to communicate with target via USB SDFU protocol&lt;br /&gt;2025-10-30T03:39:59.586Z DEBUG Sending event &amp;quot;programmer: device selected&amp;quot;&lt;br /&gt;2025-10-30T03:39:59.586Z DEBUG Sending event &amp;quot;programmer: running nrfutil device&amp;quot;&lt;br /&gt;2025-10-30T03:39:59.588Z INFO Update files regions according to Application core&lt;br /&gt;2025-10-30T03:39:59.588Z INFO Parse memory regions for file&lt;br /&gt;2025-10-30T03:40:12.687Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:40:12.691Z INFO Update files regions according to Application core&lt;br /&gt;2025-10-30T03:40:12.691Z INFO Parse memory regions for file&lt;br /&gt;2025-10-30T03:40:13.409Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:40:13.409Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:40:13.410Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:40:13.465Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:40:13.465Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:40:27.466Z INFO Selecting device with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:40:27.475Z DEBUG Sending event &amp;quot;programmer: running nrfutil device&amp;quot;&lt;br /&gt;2025-10-30T03:40:28.037Z INFO Selected device with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:40:28.038Z INFO Using nrfutil-device to communicate with target via USB SDFU protocol&lt;br /&gt;2025-10-30T03:40:28.040Z DEBUG Sending event &amp;quot;programmer: device selected&amp;quot;&lt;br /&gt;2025-10-30T03:40:28.040Z DEBUG Sending event &amp;quot;programmer: running nrfutil device&amp;quot;&lt;br /&gt;2025-10-30T03:40:28.041Z INFO Update files regions according to Application core&lt;br /&gt;2025-10-30T03:40:28.041Z INFO Parse memory regions for file&lt;br /&gt;2025-10-30T03:40:31.105Z INFO Deselected device&lt;br /&gt;2025-10-30T03:40:31.105Z INFO Selecting device with the serial number 74:4D:BD:7B:B3:00&lt;br /&gt;2025-10-30T03:40:31.106Z DEBUG Sending event &amp;quot;programmer: device deselected &amp;quot;&lt;br /&gt;2025-10-30T03:40:31.107Z INFO Update files regions according to Application core&lt;br /&gt;2025-10-30T03:40:31.107Z INFO Parse memory regions for file&lt;br /&gt;2025-10-30T03:40:31.107Z INFO Selected device with the serial number 74:4D:BD:7B:B3:00&lt;br /&gt;2025-10-30T03:40:31.107Z WARN No operations possible for device.&lt;br /&gt;2025-10-30T03:40:31.107Z WARN If the device is a MCUboot device make sure it is in the bootloader mode&lt;br /&gt;2025-10-30T03:40:31.108Z DEBUG Sending event &amp;quot;programmer: device selected&amp;quot;&lt;br /&gt;2025-10-30T03:40:33.911Z INFO Deselected device&lt;br /&gt;2025-10-30T03:40:33.911Z INFO Selecting device with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:40:33.914Z DEBUG Sending event &amp;quot;programmer: device deselected &amp;quot;&lt;br /&gt;2025-10-30T03:40:33.918Z DEBUG Sending event &amp;quot;programmer: running nrfutil device&amp;quot;&lt;br /&gt;2025-10-30T03:40:34.485Z INFO Selected device with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:40:34.485Z INFO Using nrfutil-device to communicate with target via USB SDFU protocol&lt;br /&gt;2025-10-30T03:40:34.488Z DEBUG Sending event &amp;quot;programmer: device selected&amp;quot;&lt;br /&gt;2025-10-30T03:40:34.488Z DEBUG Sending event &amp;quot;programmer: running nrfutil device&amp;quot;&lt;br /&gt;2025-10-30T03:40:34.489Z INFO Update files regions according to Application core&lt;br /&gt;2025-10-30T03:40:34.489Z INFO Parse memory regions for file&lt;br /&gt;2025-10-30T03:45:23.556Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:45:23.561Z INFO Update files regions according to Application core&lt;br /&gt;2025-10-30T03:45:23.561Z INFO Parse memory regions for file&lt;br /&gt;2025-10-30T03:45:24.279Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:45:24.280Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:45:24.285Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:45:24.350Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:45:24.351Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:45:52.567Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:46:35.549Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:46:35.549Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:46:35.553Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:46:35.603Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:46:35.604Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:57:07.768Z INFO Selecting device with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:57:07.771Z INFO Selected device with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:57:07.772Z WARN No operations possible for device.&lt;br /&gt;2025-10-30T03:57:07.772Z WARN If the device is a MCUboot device make sure it is in the bootloader mode&lt;br /&gt;2025-10-30T03:57:07.774Z DEBUG Sending event &amp;quot;programmer: device selected&amp;quot;&lt;br /&gt;2025-10-30T03:57:27.320Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:57:28.019Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:57:28.020Z INFO Device connected with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:57:28.020Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:57:28.082Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:57:28.082Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:57:41.518Z INFO Selecting device with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:57:41.526Z DEBUG Sending event &amp;quot;programmer: running nrfutil device&amp;quot;&lt;br /&gt;2025-10-30T03:57:42.110Z INFO Selected device with the serial number E94BBFFE0C8C&lt;br /&gt;2025-10-30T03:57:42.110Z INFO Using nrfutil-device to communicate with target via USB SDFU protocol&lt;br /&gt;2025-10-30T03:57:42.113Z DEBUG Sending event &amp;quot;programmer: device selected&amp;quot;&lt;br /&gt;2025-10-30T03:57:42.113Z DEBUG Sending event &amp;quot;programmer: running nrfutil device&amp;quot;&lt;br /&gt;2025-10-30T03:57:42.114Z INFO Update files regions according to Application core&lt;br /&gt;2025-10-30T03:57:42.114Z INFO Parse memory regions for file&lt;br /&gt;2025-10-30T03:58:21.447Z INFO Does not need to be reloaded: C:\Users\meera.hussien\Downloads\ot-rcp-USB.hex&lt;br /&gt;2025-10-30T03:58:21.448Z INFO Hash is generated by SHA256&lt;br /&gt;2025-10-30T03:58:21.450Z INFO Performing DFU. This may take a few seconds&lt;br /&gt;2025-10-30T03:58:21.461Z DEBUG Sending event &amp;quot;programmer: running nrfutil device&amp;quot;&lt;br /&gt;2025-10-30T03:58:26.126Z INFO All dfu images have been written to the target device&lt;br /&gt;2025-10-30T03:58:26.761Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:58:26.761Z INFO Wait For Device was successful&lt;br /&gt;2025-10-30T03:58:26.762Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:58:26.766Z DEBUG Sending event &amp;quot;programmer: running nrfutil device&amp;quot;&lt;br /&gt;2025-10-30T03:58:26.827Z INFO Getting serial port options from the persistent store for E94BBFFE0C8C.pc-nrfconnect-programmer&lt;br /&gt;2025-10-30T03:58:26.828Z DEBUG Sending event &amp;quot;programmer: device connected&amp;quot;&lt;br /&gt;2025-10-30T03:58:26.909Z ERROR Error: Failed with exit code 1.&lt;br /&gt;One or more set mcu state tasks failed:&lt;br /&gt; * E94BBFFE0C8C: The operation you tried to run is not available for the selected device.&lt;br /&gt; &lt;br /&gt; The operation is either not supported for this type of device or the device has issues and it cannot be recognized (NotFound)&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Message: Failed to set mcu state on E94BBFFE0C8C, The operation you tried to run is not available for the selected device.&lt;/p&gt;
&lt;p&gt;The operation is either not supported for this type of device or the device has issues and it cannot be recognized.&lt;br /&gt;2025-10-30T03:58:26.909Z ERROR Error when fetching device versions: Error: Failed with exit code 1.&lt;br /&gt;One or more set mcu state tasks failed:&lt;br /&gt; * E94BBFFE0C8C: The operation you tried to run is not available for the selected device.&lt;br /&gt; &lt;br /&gt; The operation is either not supported for this type of device or the device has issues and it cannot be recognized (NotFound)&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Message: Failed to set mcu state on E94BBFFE0C8C, The operation you tried to run is not available for the selected device.&lt;/p&gt;
&lt;p&gt;The operation is either not supported for this type of device or the device has issues and it cannot be recognized.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Appreciate the help on this matter.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Embedded C book or course</title><link>https://community.element14.com/thread/56266?ContentTypeID=0</link><pubDate>Sat, 11 Oct 2025 18:50:16 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:91236e30-9719-476b-81bb-b5487da2cf00</guid><dc:creator>Jairo</dc:creator><slash:comments>12</slash:comments><comments>https://community.element14.com/thread/56266?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/technologies/embedded/f/embedded-forum/56266/embedded-c-book-or-course/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi, could you recommend me an embedded C book or course?, a time ago I read a book about C but was not oriented to embedded (I work with microcontrollers)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Interfacing on board microphone sensor in STM32H757I-EVAL</title><link>https://community.element14.com/thread/55812?ContentTypeID=0</link><pubDate>Fri, 16 May 2025 05:24:58 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:36f9b746-8894-4626-baac-14067b202a5a</guid><dc:creator>priyadarshni_2303</dc:creator><slash:comments>7</slash:comments><comments>https://community.element14.com/thread/55812?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/technologies/embedded/f/embedded-forum/55812/interfacing-on-board-microphone-sensor-in-stm32h757i-eval/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi, I am new to STM32 and I am trying to interface on board microphone sensor (MP34DT05TR-A) in STM32H757I-EVAL. The goal is to record audio from the microphones, store it in microSD card and play it back on PC. I am not able to navigate through this; could anyone share some steps that needs to be followed to configure this and to record audio?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Try out GoogleTest: invoke unit test when creating a GitHub pull request</title><link>https://community.element14.com/thread/55576?ContentTypeID=0</link><pubDate>Sun, 23 Feb 2025 18:54:28 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:3efb390b-d8e0-4ed5-bb31-e7e6fbb37c16</guid><dc:creator>Jan Cumps</dc:creator><slash:comments>8</slash:comments><comments>https://community.element14.com/thread/55576?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/technologies/embedded/f/embedded-forum/55576/try-out-googletest-invoke-unit-test-when-creating-a-github-pull-request/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;This week I&amp;#39;m going to learn&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://google.github.io/googletest/" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;GoogleTest&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/a&gt;for c++.&amp;nbsp;Goals for&amp;nbsp;day 5:&lt;span&gt;&amp;nbsp;use the tests in a GitHub project that depends on the GPS libraries that I created the unit tests for.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;In the previous 4 posts, I created unit tests for two GPS libraries: A NMEA GPS payload parser, and a driver lib for the Teseo GPS IC. In this post, I will run those unit tests in a Raspberry Pico project that relies on these libs:&amp;nbsp;&lt;a id="" href="https://github.com/jancumps/pico_gps_teseo" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/jancumps/pico_gps_teseo&lt;/a&gt;&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Goal: each time you create a pull request for that project&amp;#39;s development or main branch, an action will run. That action will check out the google unit tests, and the sources of the Pico GPS project. It will then run the test cases over that project&amp;#39;s version of the libraries. Only if that succeeds, you can approve the pull request and merge the code.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img alt="image" style="max-height:169px;max-width:468px;"  height="169" src="https://community.element14.com/resized-image/__size/936x338/__key/communityserver-discussions-components-files/7/pastedimage1740335751936v1.png" width="468" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h1 id="mcetoc_1ikq1pbu40"&gt;&lt;span&gt;The GitHub Action&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Here is the GitHub action script. It &amp;#39;ll &lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span&gt;first commission a fresh Ubuntu Linux session&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;then install dependencies (such as the required gcc toolchain and CMake versions),&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;then check out both unit test sources (main branch) and the code of the&amp;nbsp;project (version that&amp;#39;s contained in the pull request).&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Next step is to build the test suite, based on those two sources&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;and finally execute all unit tests.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span&gt;&lt;pre class="ui-code" data-mode="text"&gt;name: run unit tests of the teseo and nmea libs
on:
  workflow_dispatch:
  #push:
  #  branches:
  #    - &amp;#39;develop&amp;#39;
  #    - &amp;#39;main&amp;#39;
  pull_request:
    types: [opened, reopened]
    branches:
      - &amp;#39;develop&amp;#39;
      - &amp;#39;main&amp;#39;

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - name: Clean workspace
        run: |
          echo &amp;quot;Cleaning up previous run&amp;quot;
          rm -rf &amp;quot;${{ github.workspace }}&amp;quot;
          mkdir -p &amp;quot;${{ github.workspace }}&amp;quot;

      - name: Checkout test_gps_teseo
        uses: actions/checkout@v4
        with:
          path: test_gps_teseo
          submodules: true
          repository: jancumps/test_gps_teseo

      - name: Checkout pico_gps_teseo
        uses: actions/checkout@v4
        with:
          path: test_gps_teseo/pico_gps_teseo
          submodules: true

      - name: Install dependencies
        run: |
          sudo apt-get install ninja-build

          sudo apt-get install cmake
          sudo add-apt-repository universe
          sudo apt update
          sudo apt install gcc-14
          gcc --version
          whereis gcc
          whereis gcc-14
          ls -la /usr/bin | grep g++

      - name: Build Project
        working-directory: ${{github.workspace}}/test_gps_teseo
        shell: bash
        run: |
          echo ${{ github.ref }}
          mkdir build
          cd build
          cmake .. -G &amp;quot;Ninja&amp;quot; -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_C_COMPILER:FILEPATH=/usr/bin/x86_64-linux-gnu-gcc-14 -DCMAKE_CXX_COMPILER:FILEPATH=/usr/bin/x86_64-linux-gnu-g++-14 -DCMAKE_BUILD_TYPE=Release -DPATH_TO_LIBS=pico_gps_teseo
          cmake --build .
          cd ..

      - name: Test Project
        working-directory: ${{github.workspace}}/test_gps_teseo
        shell: bash
        run: |
          cd build
          chmod +x ./test_class_module
          ./test_class_module
          cd ..
&lt;/pre&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;If the unit tests fail, the action run will fail too.&lt;/span&gt;&lt;/p&gt;
&lt;h1 id="mcetoc_1ikq1q4bp1"&gt;&lt;span&gt;Test execution&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;If you have rights to view action logs of the GitHub repository, you can see the log of all activities. Here&amp;#39;s part of the test job:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/7/pastedimage1740336217484v2.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Raw log:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;pre class="ui-code" data-mode="text"&gt;2025-02-23T18:22:28.9220715Z Current runner version: &amp;#39;2.322.0&amp;#39;
2025-02-23T18:22:28.9246979Z ##[group]Operating System
2025-02-23T18:22:28.9247780Z Ubuntu
2025-02-23T18:22:28.9248306Z 24.04.1
2025-02-23T18:22:28.9248912Z LTS
2025-02-23T18:22:28.9249403Z ##[endgroup]
2025-02-23T18:22:28.9249985Z ##[group]Runner Image
2025-02-23T18:22:28.9250618Z Image: ubuntu-24.04
2025-02-23T18:22:28.9251143Z Version: 20250209.1.0
2025-02-23T18:22:28.9252326Z Included Software: https://github.com/actions/runner-images/blob/ubuntu24/20250209.1/images/ubuntu/Ubuntu2404-Readme.md
2025-02-23T18:22:28.9253835Z Image Release: https://github.com/actions/runner-images/releases/tag/ubuntu24%2F20250209.1
2025-02-23T18:22:28.9254716Z ##[endgroup]
2025-02-23T18:22:28.9255245Z ##[group]Runner Image Provisioner
2025-02-23T18:22:28.9255903Z 2.0.422.1
2025-02-23T18:22:28.9256401Z ##[endgroup]
2025-02-23T18:22:28.9258644Z ##[group]GITHUB_TOKEN Permissions
2025-02-23T18:22:28.9260543Z Actions: write
2025-02-23T18:22:28.9261373Z Attestations: write
2025-02-23T18:22:28.9262157Z Checks: write
2025-02-23T18:22:28.9262721Z Contents: write
2025-02-23T18:22:28.9263283Z Deployments: write
2025-02-23T18:22:28.9263822Z Discussions: write
2025-02-23T18:22:28.9264386Z Issues: write
2025-02-23T18:22:28.9264901Z Metadata: read
2025-02-23T18:22:28.9265369Z Packages: write
2025-02-23T18:22:28.9265918Z Pages: write
2025-02-23T18:22:28.9266434Z PullRequests: write
2025-02-23T18:22:28.9266957Z RepositoryProjects: write
2025-02-23T18:22:28.9267605Z SecurityEvents: write
2025-02-23T18:22:28.9268111Z Statuses: write
2025-02-23T18:22:28.9268593Z ##[endgroup]
2025-02-23T18:22:28.9271490Z Secret source: Actions
2025-02-23T18:22:28.9272352Z Prepare workflow directory
2025-02-23T18:22:28.9659425Z Prepare all required actions
2025-02-23T18:22:28.9698134Z Getting action download info
2025-02-23T18:22:29.1848196Z ##[group]Download immutable action package &amp;#39;actions/checkout@v4&amp;#39;
2025-02-23T18:22:29.1849095Z Version: 4.2.2
2025-02-23T18:22:29.1849965Z Digest: sha256:ccb2698953eaebd21c7bf6268a94f9c26518a7e38e27e0b83c1fe1ad049819b1
2025-02-23T18:22:29.1850987Z Source commit SHA: 11bd71901bbe5b1630ceea73d27597364c9af683
2025-02-23T18:22:29.1851594Z ##[endgroup]
2025-02-23T18:22:29.3669954Z Complete job name: test
2025-02-23T18:22:29.4374523Z ##[group]Run echo &amp;quot;Cleaning up previous run&amp;quot;
2025-02-23T18:22:29.4375224Z &#x1B;[36;1mecho &amp;quot;Cleaning up previous run&amp;quot;&#x1B;[0m
2025-02-23T18:22:29.4375896Z &#x1B;[36;1mrm -rf &amp;quot;/home/runner/work/pico_gps_teseo/pico_gps_teseo&amp;quot;&#x1B;[0m
2025-02-23T18:22:29.4376744Z &#x1B;[36;1mmkdir -p &amp;quot;/home/runner/work/pico_gps_teseo/pico_gps_teseo&amp;quot;&#x1B;[0m
2025-02-23T18:22:29.4614541Z shell: /usr/bin/bash -e {0}
2025-02-23T18:22:29.4615422Z ##[endgroup]
2025-02-23T18:22:29.4767777Z Cleaning up previous run
2025-02-23T18:22:29.4942159Z ##[group]Run actions/checkout@v4
2025-02-23T18:22:29.4942704Z with:
2025-02-23T18:22:29.4943080Z   path: test_gps_teseo
2025-02-23T18:22:29.4943518Z   submodules: true
2025-02-23T18:22:29.4943945Z   repository: jancumps/test_gps_teseo
2025-02-23T18:22:29.4944589Z   token: ***
2025-02-23T18:22:29.4944994Z   ssh-strict: true
2025-02-23T18:22:29.4945387Z   ssh-user: git
2025-02-23T18:22:29.4945802Z   persist-credentials: true
2025-02-23T18:22:29.4946262Z   clean: true
2025-02-23T18:22:29.4946667Z   sparse-checkout-cone-mode: true
2025-02-23T18:22:29.4947143Z   fetch-depth: 1
2025-02-23T18:22:29.4947533Z   fetch-tags: false
2025-02-23T18:22:29.4947934Z   show-progress: true
2025-02-23T18:22:29.4948344Z   lfs: false
2025-02-23T18:22:29.4948728Z   set-safe-directory: true
2025-02-23T18:22:29.4949183Z ##[endgroup]
2025-02-23T18:22:29.7510886Z Syncing repository: jancumps/test_gps_teseo
2025-02-23T18:22:29.7513339Z ##[group]Getting Git version info
2025-02-23T18:22:29.7514512Z Working directory is &amp;#39;/home/runner/work/pico_gps_teseo/pico_gps_teseo/test_gps_teseo&amp;#39;
2025-02-23T18:22:29.7515630Z [command]/usr/bin/git version
2025-02-23T18:22:29.7639891Z git version 2.48.1
2025-02-23T18:22:29.7669942Z ##[endgroup]
2025-02-23T18:22:29.7685174Z Temporarily overriding HOME=&amp;#39;/home/runner/work/_temp/2c039b20-1972-4a61-a906-5bf59d32aef9&amp;#39; before making global git config changes
2025-02-23T18:22:29.7687901Z Adding repository directory to the temporary git global config as a safe directory
2025-02-23T18:22:29.7692174Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/pico_gps_teseo/pico_gps_teseo/test_gps_teseo
2025-02-23T18:22:29.7728838Z ##[group]Initializing the repository
2025-02-23T18:22:29.7734731Z [command]/usr/bin/git init /home/runner/work/pico_gps_teseo/pico_gps_teseo/test_gps_teseo
2025-02-23T18:22:29.8000021Z hint: Using &amp;#39;master&amp;#39; as the name for the initial branch. This default branch name
2025-02-23T18:22:29.8001064Z hint: is subject to change. To configure the initial branch name to use in all
2025-02-23T18:22:29.8002128Z hint: of your new repositories, which will suppress this warning, call:
2025-02-23T18:22:29.8002801Z hint:
2025-02-23T18:22:29.8003285Z hint: 	git config --global init.defaultBranch &amp;lt;name&amp;gt;
2025-02-23T18:22:29.8003853Z hint:
2025-02-23T18:22:29.8004391Z hint: Names commonly chosen instead of &amp;#39;master&amp;#39; are &amp;#39;main&amp;#39;, &amp;#39;trunk&amp;#39; and
2025-02-23T18:22:29.8005294Z hint: &amp;#39;development&amp;#39;. The just-created branch can be renamed via this command:
2025-02-23T18:22:29.8005988Z hint:
2025-02-23T18:22:29.8006371Z hint: 	git branch -m &amp;lt;name&amp;gt;
2025-02-23T18:22:29.8014753Z Initialized empty Git repository in /home/runner/work/pico_gps_teseo/pico_gps_teseo/test_gps_teseo/.git/
2025-02-23T18:22:29.8025959Z [command]/usr/bin/git remote add origin https://github.com/jancumps/test_gps_teseo
2025-02-23T18:22:29.8063742Z ##[endgroup]
2025-02-23T18:22:29.8064854Z ##[group]Disabling automatic garbage collection
2025-02-23T18:22:29.8068667Z [command]/usr/bin/git config --local gc.auto 0
2025-02-23T18:22:29.8097938Z ##[endgroup]
2025-02-23T18:22:29.8098604Z ##[group]Setting up auth
2025-02-23T18:22:29.8104813Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand
2025-02-23T18:22:29.8135752Z [command]/usr/bin/git submodule foreach --recursive sh -c &amp;quot;git config --local --name-only --get-regexp &amp;#39;core\.sshCommand&amp;#39; &amp;amp;&amp;amp; git config --local --unset-all &amp;#39;core.sshCommand&amp;#39; || :&amp;quot;
2025-02-23T18:22:29.8516457Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader
2025-02-23T18:22:29.8551404Z [command]/usr/bin/git submodule foreach --recursive sh -c &amp;quot;git config --local --name-only --get-regexp &amp;#39;http\.https\:\/\/github\.com\/\.extraheader&amp;#39; &amp;amp;&amp;amp; git config --local --unset-all &amp;#39;http.https://github.com/.extraheader&amp;#39; || :&amp;quot;
2025-02-23T18:22:29.8779491Z [command]/usr/bin/git config --local http.https://github.com/.extraheader AUTHORIZATION: basic ***
2025-02-23T18:22:29.8824049Z ##[endgroup]
2025-02-23T18:22:29.8825063Z ##[group]Determining the default branch
2025-02-23T18:22:29.8827397Z Retrieving the default branch name
2025-02-23T18:22:30.1562859Z Default branch &amp;#39;main&amp;#39;
2025-02-23T18:22:30.1564334Z ##[endgroup]
2025-02-23T18:22:30.1565595Z ##[group]Fetching the repository
2025-02-23T18:22:30.1571758Z [command]/usr/bin/git -c protocol.version=2 fetch --no-tags --prune --no-recurse-submodules --depth=1 origin +refs/heads/main:refs/remotes/origin/main
2025-02-23T18:22:30.7022872Z From https://github.com/jancumps/test_gps_teseo
2025-02-23T18:22:30.7023959Z  * [new branch]      main       -&amp;gt; origin/main
2025-02-23T18:22:30.7052348Z ##[endgroup]
2025-02-23T18:22:30.7053165Z ##[group]Determining the checkout info
2025-02-23T18:22:30.7054327Z ##[endgroup]
2025-02-23T18:22:30.7060320Z [command]/usr/bin/git sparse-checkout disable
2025-02-23T18:22:30.7104948Z [command]/usr/bin/git config --local --unset-all extensions.worktreeConfig
2025-02-23T18:22:30.7133004Z ##[group]Checking out the ref
2025-02-23T18:22:30.7137427Z [command]/usr/bin/git checkout --progress --force -B main refs/remotes/origin/main
2025-02-23T18:22:30.7193086Z Switched to a new branch &amp;#39;main&amp;#39;
2025-02-23T18:22:30.7196915Z branch &amp;#39;main&amp;#39; set up to track &amp;#39;origin/main&amp;#39;.
2025-02-23T18:22:30.7203241Z ##[endgroup]
2025-02-23T18:22:30.7204515Z ##[group]Setting up auth for fetching submodules
2025-02-23T18:22:30.7207596Z [command]/usr/bin/git config --global http.https://github.com/.extraheader AUTHORIZATION: basic ***
2025-02-23T18:22:30.7245493Z [command]/usr/bin/git config --global --unset-all url.https://github.com/.insteadOf
2025-02-23T18:22:30.7278084Z [command]/usr/bin/git config --global --add url.https://github.com/.insteadOf git@github.com:
2025-02-23T18:22:30.7311728Z [command]/usr/bin/git config --global --add url.https://github.com/.insteadOf org-5400863@github.com:
2025-02-23T18:22:30.7343205Z ##[endgroup]
2025-02-23T18:22:30.7344576Z ##[group]Fetching submodules
2025-02-23T18:22:30.7345959Z [command]/usr/bin/git submodule sync
2025-02-23T18:22:30.7598995Z [command]/usr/bin/git -c protocol.version=2 submodule update --init --force --depth=1
2025-02-23T18:22:30.7815950Z Submodule &amp;#39;source/gps_nmea_lib&amp;#39; (https://github.com/jancumps/gps_nmea_lib) registered for path &amp;#39;source/gps_nmea_lib&amp;#39;
2025-02-23T18:22:30.7823353Z Submodule &amp;#39;source/gps_teseo_lib&amp;#39; (https://github.com/jancumps/gps_teseo_lib) registered for path &amp;#39;source/gps_teseo_lib&amp;#39;
2025-02-23T18:22:30.7850896Z Cloning into &amp;#39;/home/runner/work/pico_gps_teseo/pico_gps_teseo/test_gps_teseo/source/gps_nmea_lib&amp;#39;...
2025-02-23T18:22:31.2764050Z Cloning into &amp;#39;/home/runner/work/pico_gps_teseo/pico_gps_teseo/test_gps_teseo/source/gps_teseo_lib&amp;#39;...
2025-02-23T18:22:31.7650549Z Submodule path &amp;#39;source/gps_nmea_lib&amp;#39;: checked out &amp;#39;033cfe411ca3df33e3b1d271d9b4c9bd72ec37b2&amp;#39;
2025-02-23T18:22:31.7722785Z Submodule path &amp;#39;source/gps_teseo_lib&amp;#39;: checked out &amp;#39;d24ba56ba182dce68071dbc8b710988e245ed4f6&amp;#39;
2025-02-23T18:22:31.7738247Z [command]/usr/bin/git submodule foreach git config --local gc.auto 0
2025-02-23T18:22:31.7974291Z Entering &amp;#39;source/gps_nmea_lib&amp;#39;
2025-02-23T18:22:31.7998233Z Entering &amp;#39;source/gps_teseo_lib&amp;#39;
2025-02-23T18:22:31.8029231Z ##[endgroup]
2025-02-23T18:22:31.8029723Z ##[group]Persisting credentials for submodules
2025-02-23T18:22:31.8035959Z [command]/usr/bin/git submodule foreach --recursive sh -c &amp;quot;git config --local --name-only --get-regexp &amp;#39;url\.https\:\/\/github\.com\/\.insteadOf&amp;#39; &amp;amp;&amp;amp; git config --local --unset-all &amp;#39;url.https://github.com/.insteadOf&amp;#39; || :&amp;quot;
2025-02-23T18:22:31.8254953Z Entering &amp;#39;source/gps_nmea_lib&amp;#39;
2025-02-23T18:22:31.8298215Z Entering &amp;#39;source/gps_teseo_lib&amp;#39;
2025-02-23T18:22:31.8353319Z [command]/usr/bin/git submodule foreach sh -c &amp;quot;git config --local &amp;#39;http.https://github.com/.extraheader&amp;#39; &amp;#39;AUTHORIZATION: basic ***&amp;#39; &amp;amp;&amp;amp; git config --local --show-origin --name-only --get-regexp remote.origin.url&amp;quot;
2025-02-23T18:22:31.8569573Z Entering &amp;#39;source/gps_nmea_lib&amp;#39;
2025-02-23T18:22:31.8607977Z file:/home/runner/work/pico_gps_teseo/pico_gps_teseo/test_gps_teseo/.git/modules/source/gps_nmea_lib/config	remote.origin.url
2025-02-23T18:22:31.8613192Z Entering &amp;#39;source/gps_teseo_lib&amp;#39;
2025-02-23T18:22:31.8650861Z file:/home/runner/work/pico_gps_teseo/pico_gps_teseo/test_gps_teseo/.git/modules/source/gps_teseo_lib/config	remote.origin.url
2025-02-23T18:22:31.8679478Z [command]/usr/bin/git submodule foreach git config --local --add &amp;#39;url.https://github.com/.insteadOf&amp;#39; &amp;#39;git@github.com:&amp;#39;
2025-02-23T18:22:31.8893639Z Entering &amp;#39;source/gps_nmea_lib&amp;#39;
2025-02-23T18:22:31.8916795Z Entering &amp;#39;source/gps_teseo_lib&amp;#39;
2025-02-23T18:22:31.8950912Z [command]/usr/bin/git submodule foreach git config --local --add &amp;#39;url.https://github.com/.insteadOf&amp;#39; &amp;#39;org-5400863@github.com:&amp;#39;
2025-02-23T18:22:31.9165371Z Entering &amp;#39;source/gps_nmea_lib&amp;#39;
2025-02-23T18:22:31.9188921Z Entering &amp;#39;source/gps_teseo_lib&amp;#39;
2025-02-23T18:22:31.9227432Z ##[endgroup]
2025-02-23T18:22:31.9264045Z [command]/usr/bin/git log -1 --format=%H
2025-02-23T18:22:31.9287970Z e2e5c531f27850724e2d4b255a779cc993aa3f4a
2025-02-23T18:22:31.9466611Z ##[group]Run actions/checkout@v4
2025-02-23T18:22:31.9466945Z with:
2025-02-23T18:22:31.9467193Z   path: test_gps_teseo/pico_gps_teseo
2025-02-23T18:22:31.9467492Z   submodules: true
2025-02-23T18:22:31.9467762Z   repository: jancumps/pico_gps_teseo
2025-02-23T18:22:31.9468186Z   token: ***
2025-02-23T18:22:31.9468416Z   ssh-strict: true
2025-02-23T18:22:31.9468650Z   ssh-user: git
2025-02-23T18:22:31.9469079Z   persist-credentials: true
2025-02-23T18:22:31.9469340Z   clean: true
2025-02-23T18:22:31.9469585Z   sparse-checkout-cone-mode: true
2025-02-23T18:22:31.9469868Z   fetch-depth: 1
2025-02-23T18:22:31.9470095Z   fetch-tags: false
2025-02-23T18:22:31.9470340Z   show-progress: true
2025-02-23T18:22:31.9470578Z   lfs: false
2025-02-23T18:22:31.9470808Z   set-safe-directory: true
2025-02-23T18:22:31.9471077Z ##[endgroup]
2025-02-23T18:22:32.0391270Z Syncing repository: jancumps/pico_gps_teseo
2025-02-23T18:22:32.0398648Z ##[group]Getting Git version info
2025-02-23T18:22:32.0399833Z Working directory is &amp;#39;/home/runner/work/pico_gps_teseo/pico_gps_teseo/test_gps_teseo/pico_gps_teseo&amp;#39;
2025-02-23T18:22:32.0442492Z [command]/usr/bin/git version
2025-02-23T18:22:32.0485611Z git version 2.48.1
2025-02-23T18:22:32.0511036Z ##[endgroup]
2025-02-23T18:22:32.0524597Z Temporarily overriding HOME=&amp;#39;/home/runner/work/_temp/bf6c3c0c-ac12-4900-af47-daebc146816f&amp;#39; before making global git config changes
2025-02-23T18:22:32.0526213Z Adding repository directory to the temporary git global config as a safe directory
2025-02-23T18:22:32.0531091Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/pico_gps_teseo/pico_gps_teseo/test_gps_teseo/pico_gps_teseo
2025-02-23T18:22:32.0561464Z ##[group]Initializing the repository
2025-02-23T18:22:32.0567233Z [command]/usr/bin/git init /home/runner/work/pico_gps_teseo/pico_gps_teseo/test_gps_teseo/pico_gps_teseo
2025-02-23T18:22:32.0603841Z hint: Using &amp;#39;master&amp;#39; as the name for the initial branch. This default branch name
2025-02-23T18:22:32.0604902Z hint: is subject to change. To configure the initial branch name to use in all
2025-02-23T18:22:32.0605816Z hint: of your new repositories, which will suppress this warning, call:
2025-02-23T18:22:32.0606495Z hint:
2025-02-23T18:22:32.0606841Z hint: 	git config --global init.defaultBranch &amp;lt;name&amp;gt;
2025-02-23T18:22:32.0607179Z hint:
2025-02-23T18:22:32.0607545Z hint: Names commonly chosen instead of &amp;#39;master&amp;#39; are &amp;#39;main&amp;#39;, &amp;#39;trunk&amp;#39; and
2025-02-23T18:22:32.0608100Z hint: &amp;#39;development&amp;#39;. The just-created branch can be renamed via this command:
2025-02-23T18:22:32.0608491Z hint:
2025-02-23T18:22:32.0608741Z hint: 	git branch -m &amp;lt;name&amp;gt;
2025-02-23T18:22:32.0609361Z Initialized empty Git repository in /home/runner/work/pico_gps_teseo/pico_gps_teseo/test_gps_teseo/pico_gps_teseo/.git/
2025-02-23T18:22:32.0616082Z [command]/usr/bin/git remote add origin https://github.com/jancumps/pico_gps_teseo
2025-02-23T18:22:32.0647694Z ##[endgroup]
2025-02-23T18:22:32.0648199Z ##[group]Disabling automatic garbage collection
2025-02-23T18:22:32.0652375Z [command]/usr/bin/git config --local gc.auto 0
2025-02-23T18:22:32.0683355Z ##[endgroup]
2025-02-23T18:22:32.0684311Z ##[group]Setting up auth
2025-02-23T18:22:32.0689848Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand
2025-02-23T18:22:32.0721480Z [command]/usr/bin/git submodule foreach --recursive sh -c &amp;quot;git config --local --name-only --get-regexp &amp;#39;core\.sshCommand&amp;#39; &amp;amp;&amp;amp; git config --local --unset-all &amp;#39;core.sshCommand&amp;#39; || :&amp;quot;
2025-02-23T18:22:32.0969340Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader
2025-02-23T18:22:32.1001725Z [command]/usr/bin/git submodule foreach --recursive sh -c &amp;quot;git config --local --name-only --get-regexp &amp;#39;http\.https\:\/\/github\.com\/\.extraheader&amp;#39; &amp;amp;&amp;amp; git config --local --unset-all &amp;#39;http.https://github.com/.extraheader&amp;#39; || :&amp;quot;
2025-02-23T18:22:32.1257456Z [command]/usr/bin/git config --local http.https://github.com/.extraheader AUTHORIZATION: basic ***
2025-02-23T18:22:32.1295232Z ##[endgroup]
2025-02-23T18:22:32.1295928Z ##[group]Fetching the repository
2025-02-23T18:22:32.1305020Z [command]/usr/bin/git -c protocol.version=2 fetch --no-tags --prune --no-recurse-submodules --depth=1 origin +2479ca309986927c8ff327f8d2bb2586a76162b1:refs/remotes/pull/167/merge
2025-02-23T18:22:32.6250635Z From https://github.com/jancumps/pico_gps_teseo
2025-02-23T18:22:32.6251337Z  * [new ref]         2479ca309986927c8ff327f8d2bb2586a76162b1 -&amp;gt; pull/167/merge
2025-02-23T18:22:32.6273512Z ##[endgroup]
2025-02-23T18:22:32.6274078Z ##[group]Determining the checkout info
2025-02-23T18:22:32.6275681Z ##[endgroup]
2025-02-23T18:22:32.6280415Z [command]/usr/bin/git sparse-checkout disable
2025-02-23T18:22:32.6318246Z [command]/usr/bin/git config --local --unset-all extensions.worktreeConfig
2025-02-23T18:22:32.6344676Z ##[group]Checking out the ref
2025-02-23T18:22:32.6349477Z [command]/usr/bin/git checkout --progress --force refs/remotes/pull/167/merge
2025-02-23T18:22:32.6400551Z Note: switching to &amp;#39;refs/remotes/pull/167/merge&amp;#39;.
2025-02-23T18:22:32.6401076Z 
2025-02-23T18:22:32.6401608Z You are in &amp;#39;detached HEAD&amp;#39; state. You can look around, make experimental
2025-02-23T18:22:32.6402612Z changes and commit them, and you can discard any commits you make in this
2025-02-23T18:22:32.6403378Z state without impacting any branches by switching back to a branch.
2025-02-23T18:22:32.6403832Z 
2025-02-23T18:22:32.6404112Z If you want to create a new branch to retain commits you create, you may
2025-02-23T18:22:32.6404838Z do so (now or later) by using -c with the switch command. Example:
2025-02-23T18:22:32.6405235Z 
2025-02-23T18:22:32.6405400Z   git switch -c &amp;lt;new-branch-name&amp;gt;
2025-02-23T18:22:32.6405676Z 
2025-02-23T18:22:32.6405834Z Or undo this operation with:
2025-02-23T18:22:32.6406087Z 
2025-02-23T18:22:32.6406212Z   git switch -
2025-02-23T18:22:32.6406436Z 
2025-02-23T18:22:32.6406764Z Turn off this advice by setting config variable advice.detachedHead to false
2025-02-23T18:22:32.6407115Z 
2025-02-23T18:22:32.6407437Z HEAD is now at 2479ca3 Merge 8c923c286f2e88c401ba408faac1114fb58d4e29 into d334638cc9682e4fb8cb75f8f1cecea47a845f33
2025-02-23T18:22:32.6410560Z ##[endgroup]
2025-02-23T18:22:32.6410952Z ##[group]Setting up auth for fetching submodules
2025-02-23T18:22:32.6415048Z [command]/usr/bin/git config --global http.https://github.com/.extraheader AUTHORIZATION: basic ***
2025-02-23T18:22:32.6447994Z [command]/usr/bin/git config --global --unset-all url.https://github.com/.insteadOf
2025-02-23T18:22:32.6475479Z [command]/usr/bin/git config --global --add url.https://github.com/.insteadOf git@github.com:
2025-02-23T18:22:32.6504859Z [command]/usr/bin/git config --global --add url.https://github.com/.insteadOf org-5400863@github.com:
2025-02-23T18:22:32.6529109Z ##[endgroup]
2025-02-23T18:22:32.6529620Z ##[group]Fetching submodules
2025-02-23T18:22:32.6533354Z [command]/usr/bin/git submodule sync
2025-02-23T18:22:32.6763506Z [command]/usr/bin/git -c protocol.version=2 submodule update --init --force --depth=1
2025-02-23T18:22:32.6983579Z Submodule &amp;#39;gps_nmea_lib&amp;#39; (https://github.com/jancumps/gps_nmea_lib.git) registered for path &amp;#39;gps_nmea_lib&amp;#39;
2025-02-23T18:22:32.6987688Z Submodule &amp;#39;gps_teseo_lib&amp;#39; (https://github.com/jancumps/gps_teseo_lib.git) registered for path &amp;#39;gps_teseo_lib&amp;#39;
2025-02-23T18:22:32.7014696Z Cloning into &amp;#39;/home/runner/work/pico_gps_teseo/pico_gps_teseo/test_gps_teseo/pico_gps_teseo/gps_nmea_lib&amp;#39;...
2025-02-23T18:22:33.1717359Z Cloning into &amp;#39;/home/runner/work/pico_gps_teseo/pico_gps_teseo/test_gps_teseo/pico_gps_teseo/gps_teseo_lib&amp;#39;...
2025-02-23T18:22:33.6253001Z Submodule path &amp;#39;gps_nmea_lib&amp;#39;: checked out &amp;#39;033cfe411ca3df33e3b1d271d9b4c9bd72ec37b2&amp;#39;
2025-02-23T18:22:33.6318828Z Submodule path &amp;#39;gps_teseo_lib&amp;#39;: checked out &amp;#39;d24ba56ba182dce68071dbc8b710988e245ed4f6&amp;#39;
2025-02-23T18:22:33.6332430Z [command]/usr/bin/git submodule foreach git config --local gc.auto 0
2025-02-23T18:22:33.6549424Z Entering &amp;#39;gps_nmea_lib&amp;#39;
2025-02-23T18:22:33.6573647Z Entering &amp;#39;gps_teseo_lib&amp;#39;
2025-02-23T18:22:33.6605086Z ##[endgroup]
2025-02-23T18:22:33.6605861Z ##[group]Persisting credentials for submodules
2025-02-23T18:22:33.6611492Z [command]/usr/bin/git submodule foreach --recursive sh -c &amp;quot;git config --local --name-only --get-regexp &amp;#39;url\.https\:\/\/github\.com\/\.insteadOf&amp;#39; &amp;amp;&amp;amp; git config --local --unset-all &amp;#39;url.https://github.com/.insteadOf&amp;#39; || :&amp;quot;
2025-02-23T18:22:33.6824244Z Entering &amp;#39;gps_nmea_lib&amp;#39;
2025-02-23T18:22:33.6867217Z Entering &amp;#39;gps_teseo_lib&amp;#39;
2025-02-23T18:22:33.6922063Z [command]/usr/bin/git submodule foreach sh -c &amp;quot;git config --local &amp;#39;http.https://github.com/.extraheader&amp;#39; &amp;#39;AUTHORIZATION: basic ***&amp;#39; &amp;amp;&amp;amp; git config --local --show-origin --name-only --get-regexp remote.origin.url&amp;quot;
2025-02-23T18:22:33.7134302Z Entering &amp;#39;gps_nmea_lib&amp;#39;
2025-02-23T18:22:33.7172786Z file:/home/runner/work/pico_gps_teseo/pico_gps_teseo/test_gps_teseo/pico_gps_teseo/.git/modules/gps_nmea_lib/config	remote.origin.url
2025-02-23T18:22:33.7177405Z Entering &amp;#39;gps_teseo_lib&amp;#39;
2025-02-23T18:22:33.7215952Z file:/home/runner/work/pico_gps_teseo/pico_gps_teseo/test_gps_teseo/pico_gps_teseo/.git/modules/gps_teseo_lib/config	remote.origin.url
2025-02-23T18:22:33.7247608Z [command]/usr/bin/git submodule foreach git config --local --add &amp;#39;url.https://github.com/.insteadOf&amp;#39; &amp;#39;git@github.com:&amp;#39;
2025-02-23T18:22:33.7462050Z Entering &amp;#39;gps_nmea_lib&amp;#39;
2025-02-23T18:22:33.7485355Z Entering &amp;#39;gps_teseo_lib&amp;#39;
2025-02-23T18:22:33.7522039Z [command]/usr/bin/git submodule foreach git config --local --add &amp;#39;url.https://github.com/.insteadOf&amp;#39; &amp;#39;org-5400863@github.com:&amp;#39;
2025-02-23T18:22:33.7737245Z Entering &amp;#39;gps_nmea_lib&amp;#39;
2025-02-23T18:22:33.7760362Z Entering &amp;#39;gps_teseo_lib&amp;#39;
2025-02-23T18:22:33.7790234Z ##[endgroup]
2025-02-23T18:22:33.7824890Z [command]/usr/bin/git log -1 --format=%H
2025-02-23T18:22:33.7846996Z 2479ca309986927c8ff327f8d2bb2586a76162b1
2025-02-23T18:22:33.7956729Z ##[group]Run sudo apt-get install ninja-build
2025-02-23T18:22:33.7957115Z &#x1B;[36;1msudo apt-get install ninja-build&#x1B;[0m
2025-02-23T18:22:33.7957372Z &#x1B;[36;1m&#x1B;[0m
2025-02-23T18:22:33.7957557Z &#x1B;[36;1msudo apt-get install cmake&#x1B;[0m
2025-02-23T18:22:33.7957813Z &#x1B;[36;1msudo add-apt-repository universe&#x1B;[0m
2025-02-23T18:22:33.7958069Z &#x1B;[36;1msudo apt update&#x1B;[0m
2025-02-23T18:22:33.7958289Z &#x1B;[36;1msudo apt install gcc-14&#x1B;[0m
2025-02-23T18:22:33.7958524Z &#x1B;[36;1mgcc --version&#x1B;[0m
2025-02-23T18:22:33.7958724Z &#x1B;[36;1mwhereis gcc&#x1B;[0m
2025-02-23T18:22:33.7958912Z &#x1B;[36;1mwhereis gcc-14&#x1B;[0m
2025-02-23T18:22:33.7959129Z &#x1B;[36;1mls -la /usr/bin | grep g++&#x1B;[0m
2025-02-23T18:22:33.8016811Z shell: /usr/bin/bash -e {0}
2025-02-23T18:22:33.8017047Z ##[endgroup]
2025-02-23T18:22:33.9552053Z Reading package lists...
2025-02-23T18:22:34.1104810Z Building dependency tree...
2025-02-23T18:22:34.1117341Z Reading state information...
2025-02-23T18:22:34.2817201Z The following NEW packages will be installed:
2025-02-23T18:22:34.2818705Z   ninja-build
2025-02-23T18:22:34.2997531Z 0 upgraded, 1 newly installed, 0 to remove and 22 not upgraded.
2025-02-23T18:22:34.2997959Z Need to get 129 kB of archives.
2025-02-23T18:22:34.2998503Z After this operation, 364 kB of additional disk space will be used.
2025-02-23T18:22:34.2999329Z Get:1 file:/etc/apt/apt-mirrors.txt Mirrorlist [142 B]
2025-02-23T18:22:34.4018511Z Get:2 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 ninja-build amd64 1.11.1-2 [129 kB]
2025-02-23T18:22:34.6570877Z Fetched 129 kB in 0s (1105 kB/s)
2025-02-23T18:22:34.6813995Z Selecting previously unselected package ninja-build.
2025-02-23T18:22:34.7165691Z (Reading database ... 
2025-02-23T18:22:34.7166375Z (Reading database ... 5%
2025-02-23T18:22:34.7166907Z (Reading database ... 10%
2025-02-23T18:22:34.7167266Z (Reading database ... 15%
2025-02-23T18:22:34.7167606Z (Reading database ... 20%
2025-02-23T18:22:34.7167902Z (Reading database ... 25%
2025-02-23T18:22:34.7168144Z (Reading database ... 30%
2025-02-23T18:22:34.7168357Z (Reading database ... 35%
2025-02-23T18:22:34.7168560Z (Reading database ... 40%
2025-02-23T18:22:34.7168760Z (Reading database ... 45%
2025-02-23T18:22:34.7168954Z (Reading database ... 50%
2025-02-23T18:22:34.7424706Z (Reading database ... 55%
2025-02-23T18:22:34.7863982Z (Reading database ... 60%
2025-02-23T18:22:34.8264681Z (Reading database ... 65%
2025-02-23T18:22:34.8612886Z (Reading database ... 70%
2025-02-23T18:22:34.8971252Z (Reading database ... 75%
2025-02-23T18:22:34.9497935Z (Reading database ... 80%
2025-02-23T18:22:35.0288078Z (Reading database ... 85%
2025-02-23T18:22:35.1053919Z (Reading database ... 90%
2025-02-23T18:22:35.1730709Z (Reading database ... 95%
2025-02-23T18:22:35.1731117Z (Reading database ... 100%
2025-02-23T18:22:35.1731679Z (Reading database ... 220710 files and directories currently installed.)
2025-02-23T18:22:35.1775067Z Preparing to unpack .../ninja-build_1.11.1-2_amd64.deb ...
2025-02-23T18:22:35.1812608Z Unpacking ninja-build (1.11.1-2) ...
2025-02-23T18:22:35.2517289Z Setting up ninja-build (1.11.1-2) ...
2025-02-23T18:22:35.2558334Z Processing triggers for man-db (2.12.0-4build2) ...
2025-02-23T18:23:15.6471157Z 
2025-02-23T18:23:15.6471768Z Running kernel seems to be up-to-date.
2025-02-23T18:23:15.6472329Z 
2025-02-23T18:23:15.6472480Z No services need to be restarted.
2025-02-23T18:23:15.6472880Z 
2025-02-23T18:23:15.6475809Z No containers need to be restarted.
2025-02-23T18:23:15.6476118Z 
2025-02-23T18:23:15.6476299Z No user sessions are running outdated binaries.
2025-02-23T18:23:15.6476630Z 
2025-02-23T18:23:15.6476922Z No VM guests are running outdated hypervisor (qemu) binaries on this host.
2025-02-23T18:23:16.4127341Z Reading package lists...
2025-02-23T18:23:16.5427070Z Building dependency tree...
2025-02-23T18:23:16.5434508Z Reading state information...
2025-02-23T18:23:16.6757373Z The following additional packages will be installed:
2025-02-23T18:23:16.6762781Z   cmake-data libjsoncpp25 librhash0
2025-02-23T18:23:16.6768328Z Suggested packages:
2025-02-23T18:23:16.6768627Z   cmake-doc cmake-format elpa-cmake-mode
2025-02-23T18:23:16.6909090Z The following NEW packages will be installed:
2025-02-23T18:23:16.6915099Z   cmake cmake-data libjsoncpp25 librhash0
2025-02-23T18:23:16.7078533Z 0 upgraded, 4 newly installed, 0 to remove and 22 not upgraded.
2025-02-23T18:23:16.7079000Z Need to get 13.6 MB of archives.
2025-02-23T18:23:16.7079340Z After this operation, 49.1 MB of additional disk space will be used.
2025-02-23T18:23:16.7079734Z Get:1 file:/etc/apt/apt-mirrors.txt Mirrorlist [142 B]
2025-02-23T18:23:16.8081539Z Get:2 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libjsoncpp25 amd64 1.9.5-6build1 [82.8 kB]
2025-02-23T18:23:17.0656761Z Get:3 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 librhash0 amd64 1.4.3-3build1 [129 kB]
2025-02-23T18:23:17.2413601Z Get:4 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 cmake-data all 3.28.3-1build7 [2155 kB]
2025-02-23T18:23:17.5046146Z Get:5 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 cmake amd64 3.28.3-1build7 [11.2 MB]
2025-02-23T18:23:18.3387206Z Fetched 13.6 MB in 1s (9716 kB/s)
2025-02-23T18:23:18.3584919Z Selecting previously unselected package libjsoncpp25:amd64.
2025-02-23T18:23:18.3640039Z (Reading database ... 
2025-02-23T18:23:18.3640599Z (Reading database ... 5%
2025-02-23T18:23:18.3641154Z (Reading database ... 10%
2025-02-23T18:23:18.3641469Z (Reading database ... 15%
2025-02-23T18:23:18.3641697Z (Reading database ... 20%
2025-02-23T18:23:18.3642132Z (Reading database ... 25%
2025-02-23T18:23:18.3642345Z (Reading database ... 30%
2025-02-23T18:23:18.3642555Z (Reading database ... 35%
2025-02-23T18:23:18.3642791Z (Reading database ... 40%
2025-02-23T18:23:18.3642998Z (Reading database ... 45%
2025-02-23T18:23:18.3643199Z (Reading database ... 50%
2025-02-23T18:23:18.3725667Z (Reading database ... 55%
2025-02-23T18:23:18.3745750Z (Reading database ... 60%
2025-02-23T18:23:18.3777824Z (Reading database ... 65%
2025-02-23T18:23:18.3808433Z (Reading database ... 70%
2025-02-23T18:23:18.3825589Z (Reading database ... 75%
2025-02-23T18:23:18.3858243Z (Reading database ... 80%
2025-02-23T18:23:18.4022666Z (Reading database ... 85%
2025-02-23T18:23:18.4254953Z (Reading database ... 90%
2025-02-23T18:23:18.4330580Z (Reading database ... 95%
2025-02-23T18:23:18.4330950Z (Reading database ... 100%
2025-02-23T18:23:18.4331454Z (Reading database ... 220721 files and directories currently installed.)
2025-02-23T18:23:18.4372775Z Preparing to unpack .../libjsoncpp25_1.9.5-6build1_amd64.deb ...
2025-02-23T18:23:18.4400065Z Unpacking libjsoncpp25:amd64 (1.9.5-6build1) ...
2025-02-23T18:23:18.4685690Z Selecting previously unselected package librhash0:amd64.
2025-02-23T18:23:18.4819154Z Preparing to unpack .../librhash0_1.4.3-3build1_amd64.deb ...
2025-02-23T18:23:18.4833954Z Unpacking librhash0:amd64 (1.4.3-3build1) ...
2025-02-23T18:23:18.5150318Z Selecting previously unselected package cmake-data.
2025-02-23T18:23:18.5284001Z Preparing to unpack .../cmake-data_3.28.3-1build7_all.deb ...
2025-02-23T18:23:18.5426703Z Unpacking cmake-data (3.28.3-1build7) ...
2025-02-23T18:23:19.1094015Z Selecting previously unselected package cmake.
2025-02-23T18:23:19.1239816Z Preparing to unpack .../cmake_3.28.3-1build7_amd64.deb ...
2025-02-23T18:23:19.1250846Z Unpacking cmake (3.28.3-1build7) ...
2025-02-23T18:23:19.3275865Z Setting up libjsoncpp25:amd64 (1.9.5-6build1) ...
2025-02-23T18:23:19.3307552Z Setting up librhash0:amd64 (1.4.3-3build1) ...
2025-02-23T18:23:19.3337906Z Setting up cmake-data (3.28.3-1build7) ...
2025-02-23T18:23:19.3411777Z Setting up cmake (3.28.3-1build7) ...
2025-02-23T18:23:19.3447984Z Processing triggers for man-db (2.12.0-4build2) ...
2025-02-23T18:23:23.7155372Z Processing triggers for libc-bin (2.39-0ubuntu8.4) ...
2025-02-23T18:23:24.5530616Z 
2025-02-23T18:23:24.5531109Z Running kernel seems to be up-to-date.
2025-02-23T18:23:24.5531471Z 
2025-02-23T18:23:24.5531575Z No services need to be restarted.
2025-02-23T18:23:24.5531766Z 
2025-02-23T18:23:24.5532402Z No containers need to be restarted.
2025-02-23T18:23:24.5532621Z 
2025-02-23T18:23:24.5532753Z No user sessions are running outdated binaries.
2025-02-23T18:23:24.5532971Z 
2025-02-23T18:23:24.5533174Z No VM guests are running outdated hypervisor (qemu) binaries on this host.
2025-02-23T18:23:25.8018416Z Get:1 file:/etc/apt/apt-mirrors.txt Mirrorlist [142 B]
2025-02-23T18:23:25.8354025Z Hit:2 http://azure.archive.ubuntu.com/ubuntu noble InRelease
2025-02-23T18:23:25.8355948Z Hit:6 https://packages.microsoft.com/repos/azure-cli noble InRelease
2025-02-23T18:23:25.8384857Z Get:3 http://azure.archive.ubuntu.com/ubuntu noble-updates InRelease [126 kB]
2025-02-23T18:23:25.8397537Z Get:7 https://packages.microsoft.com/ubuntu/24.04/prod noble InRelease [3600 B]
2025-02-23T18:23:25.8433909Z Get:4 http://azure.archive.ubuntu.com/ubuntu noble-backports InRelease [126 kB]
2025-02-23T18:23:25.8474476Z Get:5 http://azure.archive.ubuntu.com/ubuntu noble-security InRelease [126 kB]
2025-02-23T18:23:25.9929819Z Get:8 https://packages.microsoft.com/ubuntu/24.04/prod noble/main amd64 Packages [21.5 kB]
2025-02-23T18:23:26.0041341Z Get:9 https://packages.microsoft.com/ubuntu/24.04/prod noble/main armhf Packages [6867 B]
2025-02-23T18:23:26.0069070Z Get:10 https://packages.microsoft.com/ubuntu/24.04/prod noble/main arm64 Packages [13.3 kB]
2025-02-23T18:23:26.0414026Z Get:11 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 Packages [866 kB]
2025-02-23T18:23:26.0473275Z Get:12 http://azure.archive.ubuntu.com/ubuntu noble-updates/main Translation-en [196 kB]
2025-02-23T18:23:26.0499596Z Get:13 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 Components [150 kB]
2025-02-23T18:23:26.0523250Z Get:14 http://azure.archive.ubuntu.com/ubuntu noble-updates/universe amd64 Packages [1015 kB]
2025-02-23T18:23:26.0595418Z Get:15 http://azure.archive.ubuntu.com/ubuntu noble-updates/universe Translation-en [254 kB]
2025-02-23T18:23:26.0628597Z Get:16 http://azure.archive.ubuntu.com/ubuntu noble-updates/universe amd64 Components [363 kB]
2025-02-23T18:23:26.0662329Z Get:17 http://azure.archive.ubuntu.com/ubuntu noble-updates/restricted amd64 Components [212 B]
2025-02-23T18:23:26.0679575Z Get:18 http://azure.archive.ubuntu.com/ubuntu noble-updates/multiverse amd64 Components [940 B]
2025-02-23T18:23:26.0968211Z Get:19 http://azure.archive.ubuntu.com/ubuntu noble-backports/main amd64 Components [208 B]
2025-02-23T18:23:26.0984240Z Get:20 http://azure.archive.ubuntu.com/ubuntu noble-backports/universe amd64 Packages [14.2 kB]
2025-02-23T18:23:26.1491095Z Get:21 http://azure.archive.ubuntu.com/ubuntu noble-backports/universe Translation-en [12.1 kB]
2025-02-23T18:23:26.1492418Z Get:22 http://azure.archive.ubuntu.com/ubuntu noble-backports/universe amd64 Components [20.0 kB]
2025-02-23T18:23:26.1493127Z Get:23 http://azure.archive.ubuntu.com/ubuntu noble-backports/restricted amd64 Components [216 B]
2025-02-23T18:23:26.1493839Z Get:24 http://azure.archive.ubuntu.com/ubuntu noble-backports/multiverse amd64 Components [212 B]
2025-02-23T18:23:26.1516971Z Get:25 http://azure.archive.ubuntu.com/ubuntu noble-security/main amd64 Packages [618 kB]
2025-02-23T18:23:26.1564695Z Get:26 http://azure.archive.ubuntu.com/ubuntu noble-security/main Translation-en [118 kB]
2025-02-23T18:23:26.1582450Z Get:27 http://azure.archive.ubuntu.com/ubuntu noble-security/main amd64 Components [9008 B]
2025-02-23T18:23:26.1597252Z Get:28 http://azure.archive.ubuntu.com/ubuntu noble-security/universe amd64 Packages [804 kB]
2025-02-23T18:23:26.1648650Z Get:29 http://azure.archive.ubuntu.com/ubuntu noble-security/universe Translation-en [172 kB]
2025-02-23T18:23:26.1690964Z Get:30 http://azure.archive.ubuntu.com/ubuntu noble-security/universe amd64 Components [51.9 kB]
2025-02-23T18:23:26.1705310Z Get:31 http://azure.archive.ubuntu.com/ubuntu noble-security/restricted amd64 Components [212 B]
2025-02-23T18:23:26.1746433Z Get:32 http://azure.archive.ubuntu.com/ubuntu noble-security/multiverse amd64 Components [212 B]
2025-02-23T18:23:30.6080611Z Fetched 5089 kB in 1s (6711 kB/s)
2025-02-23T18:23:31.2133476Z Reading package lists...
2025-02-23T18:23:31.2224008Z Adding component(s) &amp;#39;universe&amp;#39; to all repositories.
2025-02-23T18:23:31.2600021Z 
2025-02-23T18:23:31.2600462Z WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
2025-02-23T18:23:31.2600797Z 
2025-02-23T18:23:31.3267129Z Get:1 file:/etc/apt/apt-mirrors.txt Mirrorlist [142 B]
2025-02-23T18:23:31.3623280Z Hit:2 http://azure.archive.ubuntu.com/ubuntu noble InRelease
2025-02-23T18:23:31.3624515Z Hit:6 https://packages.microsoft.com/repos/azure-cli noble InRelease
2025-02-23T18:23:31.3634185Z Hit:7 https://packages.microsoft.com/ubuntu/24.04/prod noble InRelease
2025-02-23T18:23:31.3635809Z Hit:3 http://azure.archive.ubuntu.com/ubuntu noble-updates InRelease
2025-02-23T18:23:31.3654437Z Hit:4 http://azure.archive.ubuntu.com/ubuntu noble-backports InRelease
2025-02-23T18:23:31.3695022Z Hit:5 http://azure.archive.ubuntu.com/ubuntu noble-security InRelease
2025-02-23T18:23:32.4006995Z Reading package lists...
2025-02-23T18:23:32.5321790Z Building dependency tree...
2025-02-23T18:23:32.5328331Z Reading state information...
2025-02-23T18:23:32.5457736Z 42 packages can be upgraded. Run &amp;#39;apt list --upgradable&amp;#39; to see them.
2025-02-23T18:23:32.5570316Z 
2025-02-23T18:23:32.5570750Z WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
2025-02-23T18:23:32.5571252Z 
2025-02-23T18:23:32.5696999Z Reading package lists...
2025-02-23T18:23:32.6983132Z Building dependency tree...
2025-02-23T18:23:32.6991189Z Reading state information...
2025-02-23T18:23:32.8432676Z gcc-14 is already the newest version (14.2.0-4ubuntu2~24.04).
2025-02-23T18:23:32.8433082Z gcc-14 set to manually installed.
2025-02-23T18:23:32.8766076Z 0 upgraded, 0 newly installed, 0 to remove and 42 not upgraded.
2025-02-23T18:23:32.9100914Z gcc (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0
2025-02-23T18:23:32.9101314Z Copyright (C) 2023 Free Software Foundation, Inc.
2025-02-23T18:23:32.9102336Z This is free software; see the source for copying conditions.  There is NO
2025-02-23T18:23:32.9103150Z warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
2025-02-23T18:23:32.9103643Z 
2025-02-23T18:23:32.9708503Z gcc: /usr/bin/gcc /usr/lib/gcc /usr/libexec/gcc /usr/share/gcc /usr/share/man/man1/gcc.1.gz
2025-02-23T18:23:32.9855807Z gcc-14: /usr/bin/gcc-14 /usr/share/man/man1/gcc-14.1.gz
2025-02-23T18:23:33.0088154Z lrwxrwxrwx  1 root root           25 May 27  2024 clang++ -&amp;gt; /etc/alternatives/clang++
2025-02-23T18:23:33.0088992Z lrwxrwxrwx  1 root root           26 Apr 14  2024 clang++-16 -&amp;gt; ../lib/llvm-16/bin/clang++
2025-02-23T18:23:33.0090039Z lrwxrwxrwx  1 root root           26 Apr 14  2024 clang++-17 -&amp;gt; ../lib/llvm-17/bin/clang++
2025-02-23T18:23:33.0090495Z lrwxrwxrwx  1 root root           26 May 27  2024 clang++-18 -&amp;gt; ../lib/llvm-18/bin/clang++
2025-02-23T18:23:33.0090916Z lrwxrwxrwx  1 root root            6 Jan 31  2024 g++ -&amp;gt; g++-13
2025-02-23T18:23:33.0091340Z lrwxrwxrwx  1 root root           23 Apr  3  2024 g++-12 -&amp;gt; x86_64-linux-gnu-g++-12
2025-02-23T18:23:33.0091762Z lrwxrwxrwx  1 root root           23 Sep  4 14:44 g++-13 -&amp;gt; x86_64-linux-gnu-g++-13
2025-02-23T18:23:33.0092647Z lrwxrwxrwx  1 root root           23 Sep  9 13:21 g++-14 -&amp;gt; x86_64-linux-gnu-g++-14
2025-02-23T18:23:33.0093409Z lrwxrwxrwx  1 root root           23 Jan 31  2024 x86_64-linux-gnu-g++ -&amp;gt; x86_64-linux-gnu-g++-13
2025-02-23T18:23:33.0093984Z -rwxr-xr-x  1 root root      1396008 Apr  3  2024 x86_64-linux-gnu-g++-12
2025-02-23T18:23:33.0094665Z -rwxr-xr-x  1 root root      1027128 Sep  4 14:44 x86_64-linux-gnu-g++-13
2025-02-23T18:23:33.0095041Z -rwxr-xr-x  1 root root      1186944 Sep  9 13:21 x86_64-linux-gnu-g++-14
2025-02-23T18:23:33.0123581Z ##[group]Run echo refs/pull/167/merge
2025-02-23T18:23:33.0123906Z &#x1B;[36;1mecho refs/pull/167/merge&#x1B;[0m
2025-02-23T18:23:33.0124145Z &#x1B;[36;1mmkdir build&#x1B;[0m
2025-02-23T18:23:33.0124339Z &#x1B;[36;1mcd build&#x1B;[0m
2025-02-23T18:23:33.0125178Z &#x1B;[36;1mcmake .. -G &amp;quot;Ninja&amp;quot; -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_C_COMPILER:FILEPATH=/usr/bin/x86_64-linux-gnu-gcc-14 -DCMAKE_CXX_COMPILER:FILEPATH=/usr/bin/x86_64-linux-gnu-g++-14 -DCMAKE_BUILD_TYPE=Release -DPATH_TO_LIBS=pico_gps_teseo&#x1B;[0m
2025-02-23T18:23:33.0126054Z &#x1B;[36;1mcmake --build .&#x1B;[0m
2025-02-23T18:23:33.0126258Z &#x1B;[36;1mcd ..&#x1B;[0m
2025-02-23T18:23:33.0184999Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
2025-02-23T18:23:33.0185326Z ##[endgroup]
2025-02-23T18:23:33.0257254Z refs/pull/167/merge
2025-02-23T18:23:35.0330293Z -- The C compiler identification is GNU 14.2.0
2025-02-23T18:23:36.4251756Z -- The CXX compiler identification is GNU 14.2.0
2025-02-23T18:23:36.4457384Z -- The ASM compiler identification is GNU
2025-02-23T18:23:36.4475628Z -- Found assembler: /usr/bin/x86_64-linux-gnu-gcc-14
2025-02-23T18:23:36.5315421Z -- Detecting C compiler ABI info
2025-02-23T18:23:36.7989221Z -- Detecting C compiler ABI info - done
2025-02-23T18:23:36.8154433Z -- Check for working C compiler: /usr/bin/x86_64-linux-gnu-gcc-14 - skipped
2025-02-23T18:23:36.8206670Z -- Detecting C compile features
2025-02-23T18:23:36.8251360Z -- Detecting C compile features - done
2025-02-23T18:23:36.8521008Z -- Detecting CXX compiler ABI info
2025-02-23T18:23:37.0441747Z -- Detecting CXX compiler ABI info - done
2025-02-23T18:23:37.0611498Z -- Check for working CXX compiler: /usr/bin/x86_64-linux-gnu-g++-14 - skipped
2025-02-23T18:23:37.0615801Z -- Detecting CXX compile features
2025-02-23T18:23:37.0623833Z -- Detecting CXX compile features - done
2025-02-23T18:23:37.1012985Z library source path=pico_gps_teseo
2025-02-23T18:23:37.9806581Z CMake Deprecation Warning at build/_deps/googletest-src/CMakeLists.txt:4 (cmake_minimum_required):
2025-02-23T18:23:37.9807333Z   Compatibility with CMake &amp;lt; 3.10 will be removed from a future version of
2025-02-23T18:23:37.9807697Z   CMake.
2025-02-23T18:23:37.9807806Z 
2025-02-23T18:23:37.9808122Z   Update the VERSION argument &amp;lt;min&amp;gt; value.  Or, use the &amp;lt;min&amp;gt;...&amp;lt;max&amp;gt; syntax
2025-02-23T18:23:37.9808611Z   to tell CMake that the project requires at least &amp;lt;min&amp;gt; but has been updated
2025-02-23T18:23:37.9809023Z   to work with policies introduced by &amp;lt;max&amp;gt; or earlier.
2025-02-23T18:23:37.9809238Z 
2025-02-23T18:23:37.9809242Z 
2025-02-23T18:23:37.9924408Z CMake Deprecation Warning at build/_deps/googletest-src/googlemock/CMakeLists.txt:39 (cmake_minimum_required):
2025-02-23T18:23:37.9925057Z   Compatibility with CMake &amp;lt; 3.10 will be removed from a future version of
2025-02-23T18:23:37.9925426Z   CMake.
2025-02-23T18:23:37.9925524Z 
2025-02-23T18:23:37.9925721Z   Update the VERSION argument &amp;lt;min&amp;gt; value.  Or, use the &amp;lt;min&amp;gt;...&amp;lt;max&amp;gt; syntax
2025-02-23T18:23:37.9926414Z   to tell CMake that the project requires at least &amp;lt;min&amp;gt; but has been updated
2025-02-23T18:23:37.9926823Z   to work with policies introduced by &amp;lt;max&amp;gt; or earlier.
2025-02-23T18:23:37.9927033Z 
2025-02-23T18:23:37.9927043Z 
2025-02-23T18:23:37.9933339Z CMake Deprecation Warning at build/_deps/googletest-src/googletest/CMakeLists.txt:49 (cmake_minimum_required):
2025-02-23T18:23:37.9934148Z   Compatibility with CMake &amp;lt; 3.10 will be removed from a future version of
2025-02-23T18:23:37.9934498Z   CMake.
2025-02-23T18:23:37.9934593Z 
2025-02-23T18:23:37.9934777Z   Update the VERSION argument &amp;lt;min&amp;gt; value.  Or, use the &amp;lt;min&amp;gt;...&amp;lt;max&amp;gt; syntax
2025-02-23T18:23:37.9935239Z   to tell CMake that the project requires at least &amp;lt;min&amp;gt; but has been updated
2025-02-23T18:23:37.9935638Z   to work with policies introduced by &amp;lt;max&amp;gt; or earlier.
2025-02-23T18:23:37.9935859Z 
2025-02-23T18:23:37.9935863Z 
2025-02-23T18:23:38.1883726Z -- Found Python: /usr/bin/python3.12 (found version &amp;quot;3.12.3&amp;quot;) found components: Interpreter
2025-02-23T18:23:38.2080922Z -- Performing Test CMAKE_HAVE_LIBC_PTHREAD
2025-02-23T18:23:38.4971037Z -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
2025-02-23T18:23:38.4980923Z -- Found Threads: TRUE
2025-02-23T18:23:38.5533574Z -- Configuring done (5.2s)
2025-02-23T18:23:38.5742112Z -- Generating done (0.0s)
2025-02-23T18:23:38.5747429Z -- Build files have been written to: /home/runner/work/pico_gps_teseo/pico_gps_teseo/test_gps_teseo/build
2025-02-23T18:23:39.0799861Z [1/24] Scanning /home/runner/work/pico_gps_teseo/pico_gps_teseo/test_gps_teseo/pico_gps_teseo/gps_teseo_lib/callbackmanager/callbackmanager.cpp for CXX dependencies
2025-02-23T18:23:39.0824063Z [2/24] Scanning /home/runner/work/pico_gps_teseo/pico_gps_teseo/test_gps_teseo/pico_gps_teseo/gps_teseo_lib/teseo/teseo_iface.cpp for CXX dependencies
2025-02-23T18:23:39.0900366Z [3/24] Scanning /home/runner/work/pico_gps_teseo/pico_gps_teseo/test_gps_teseo/pico_gps_teseo/gps_teseo_lib/teseo/teseo.cpp for CXX dependencies
2025-02-23T18:23:39.2852569Z [4/24] Scanning /home/runner/work/pico_gps_teseo/pico_gps_teseo/test_gps_teseo/pico_gps_teseo/gps_nmea_lib/nmea/nmea_iface.cpp for CXX dependencies
2025-02-23T18:23:39.2878848Z [5/24] Scanning /home/runner/work/pico_gps_teseo/pico_gps_teseo/test_gps_teseo/pico_gps_teseo/gps_nmea_lib/nmea/nmea.cpp for CXX dependencies
2025-02-23T18:23:39.5523453Z [6/24] Scanning /home/runner/work/pico_gps_teseo/pico_gps_teseo/test_gps_teseo/test/gps_teseo_lib/test_gps_teseo_lib.cpp for CXX dependencies
2025-02-23T18:23:39.5596466Z [7/24] Scanning /home/runner/work/pico_gps_teseo/pico_gps_teseo/test_gps_teseo/test/gps_nmea_lib/test_gps_nmea_lib.cpp for CXX dependencies
2025-02-23T18:23:39.5643617Z [8/24] Generating CXX dyndep file CMakeFiles/test_class_module.dir/CXX.dd
2025-02-23T18:23:40.8238654Z [9/24] Building CXX object CMakeFiles/test_class_module.dir/pico_gps_teseo/gps_teseo_lib/callbackmanager/callbackmanager.cpp.o
2025-02-23T18:23:42.0081544Z [10/24] Building CXX object CMakeFiles/test_class_module.dir/pico_gps_teseo/gps_teseo_lib/teseo/teseo_iface.cpp.o
2025-02-23T18:23:42.4294169Z [11/24] Building CXX object _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.o
2025-02-23T18:23:43.0440964Z [12/24] Building CXX object _deps/googletest-build/googlemock/CMakeFiles/gmock_main.dir/src/gmock_main.cc.o
2025-02-23T18:23:43.1797877Z [13/24] Building CXX object CMakeFiles/test_class_module.dir/pico_gps_teseo/gps_nmea_lib/nmea/nmea_iface.cpp.o
2025-02-23T18:23:43.9770387Z [14/24] Building CXX object CMakeFiles/test_class_module.dir/pico_gps_teseo/gps_teseo_lib/teseo/teseo.cpp.o
2025-02-23T18:23:45.6815111Z [15/24] Building CXX object CMakeFiles/test_class_module.dir/test/gps_teseo_lib/test_gps_teseo_lib.cpp.o
2025-02-23T18:23:46.5507169Z [16/24] Building CXX object CMakeFiles/test_class_module.dir/pico_gps_teseo/gps_nmea_lib/nmea/nmea.cpp.o
2025-02-23T18:23:47.2620634Z [17/24] Building CXX object _deps/googletest-build/googlemock/CMakeFiles/gmock.dir/src/gmock-all.cc.o
2025-02-23T18:23:48.5228972Z [18/24] Building CXX object CMakeFiles/test_class_module.dir/test/gps_nmea_lib/test_gps_nmea_lib.cpp.o
2025-02-23T18:23:52.6378075Z [19/24] Building CXX object _deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o
2025-02-23T18:23:53.2247085Z [20/24] Linking CXX static library lib/libgtest.a
2025-02-23T18:23:53.3026525Z [21/24] Linking CXX static library lib/libgtest_main.a
2025-02-23T18:23:53.3042865Z [22/24] Linking CXX static library lib/libgmock.a
2025-02-23T18:23:53.3818693Z [23/24] Linking CXX static library lib/libgmock_main.a
2025-02-23T18:23:53.4549613Z [24/24] Linking CXX executable test_class_module
2025-02-23T18:23:53.4589695Z ##[group]Run cd build
2025-02-23T18:23:53.4589957Z &#x1B;[36;1mcd build&#x1B;[0m
2025-02-23T18:23:53.4590165Z &#x1B;[36;1mchmod +x ./test_class_module&#x1B;[0m
2025-02-23T18:23:53.4590415Z &#x1B;[36;1m./test_class_module&#x1B;[0m
2025-02-23T18:23:53.4590629Z &#x1B;[36;1mcd ..&#x1B;[0m
2025-02-23T18:23:53.4646561Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
2025-02-23T18:23:53.4647084Z ##[endgroup]
2025-02-23T18:23:53.4742656Z Running main() from /home/runner/work/pico_gps_teseo/pico_gps_teseo/test_gps_teseo/build/_deps/googletest-src/googletest/src/gtest_main.cc
2025-02-23T18:23:53.4743629Z [==========] Running 27 tests from 6 test suites.
2025-02-23T18:23:53.4744067Z [----------] Global test environment set-up.
2025-02-23T18:23:53.4744325Z [----------] 6 tests from gllTest
2025-02-23T18:23:53.4744558Z [ RUN      ] gllTest.parse
2025-02-23T18:23:53.4744814Z [       OK ] gllTest.parse (0 ms)
2025-02-23T18:23:53.4745053Z [ RUN      ] gllTest.source
2025-02-23T18:23:53.4745320Z [       OK ] gllTest.source (0 ms)
2025-02-23T18:23:53.4745727Z [ RUN      ] gllTest.lat
2025-02-23T18:23:53.4746084Z [       OK ] gllTest.lat (0 ms)
2025-02-23T18:23:53.4746450Z [ RUN      ] gllTest.lon
2025-02-23T18:23:53.4746783Z [       OK ] gllTest.lon (0 ms)
2025-02-23T18:23:53.4747133Z [ RUN      ] gllTest.time
2025-02-23T18:23:53.4747474Z [       OK ] gllTest.time (0 ms)
2025-02-23T18:23:53.4747849Z [ RUN      ] gllTest.valid
2025-02-23T18:23:53.4748213Z [       OK ] gllTest.valid (0 ms)
2025-02-23T18:23:53.4748652Z [----------] 6 tests from gllTest (0 ms total)
2025-02-23T18:23:53.4748863Z 
2025-02-23T18:23:53.4749009Z [----------] 9 tests from ggaTest
2025-02-23T18:23:53.4749387Z [ RUN      ] ggaTest.parse
2025-02-23T18:23:53.4749741Z [       OK ] ggaTest.parse (0 ms)
2025-02-23T18:23:53.4750125Z [ RUN      ] ggaTest.source
2025-02-23T18:23:53.4750384Z [       OK ] ggaTest.source (0 ms)
2025-02-23T18:23:53.4750608Z [ RUN      ] ggaTest.lat
2025-02-23T18:23:53.4750810Z [       OK ] ggaTest.lat (0 ms)
2025-02-23T18:23:53.4751028Z [ RUN      ] ggaTest.lon
2025-02-23T18:23:53.4751218Z [       OK ] ggaTest.lon (0 ms)
2025-02-23T18:23:53.4751424Z [ RUN      ] ggaTest.time
2025-02-23T18:23:53.4751628Z [       OK ] ggaTest.time (0 ms)
2025-02-23T18:23:53.4752052Z [ RUN      ] ggaTest.sats
2025-02-23T18:23:53.4752333Z [       OK ] ggaTest.sats (0 ms)
2025-02-23T18:23:53.4752539Z [ RUN      ] ggaTest.qual
2025-02-23T18:23:53.4752742Z [       OK ] ggaTest.qual (0 ms)
2025-02-23T18:23:53.4752946Z [ RUN      ] ggaTest.alt
2025-02-23T18:23:53.4753141Z [       OK ] ggaTest.alt (0 ms)
2025-02-23T18:23:53.4753342Z [ RUN      ] ggaTest.geosep
2025-02-23T18:23:53.4753552Z [       OK ] ggaTest.geosep (0 ms)
2025-02-23T18:23:53.4753792Z [----------] 9 tests from ggaTest (0 ms total)
2025-02-23T18:23:53.4753974Z 
2025-02-23T18:23:53.4754052Z [----------] 1 test from teseoTest
2025-02-23T18:23:53.4754298Z [ RUN      ] teseoTest.parse_multiline_reply
2025-02-23T18:23:53.4754596Z [       OK ] teseoTest.parse_multiline_reply (0 ms)
2025-02-23T18:23:53.4754881Z [----------] 1 test from teseoTest (0 ms total)
2025-02-23T18:23:53.4755061Z 
2025-02-23T18:23:53.4755170Z [----------] 4 tests from parsetest/gllParserTest
2025-02-23T18:23:53.4755469Z [ RUN      ] parsetest/gllParserTest.gllparsetest/0
2025-02-23T18:23:53.4755783Z [       OK ] parsetest/gllParserTest.gllparsetest/0 (0 ms)
2025-02-23T18:23:53.4756094Z [ RUN      ] parsetest/gllParserTest.gllparsetest/1
2025-02-23T18:23:53.4756593Z [       OK ] parsetest/gllParserTest.gllparsetest/1 (0 ms)
2025-02-23T18:23:53.4756891Z [ RUN      ] parsetest/gllParserTest.gllparsetest/2
2025-02-23T18:23:53.4757181Z [       OK ] parsetest/gllParserTest.gllparsetest/2 (0 ms)
2025-02-23T18:23:53.4757475Z [ RUN      ] parsetest/gllParserTest.gllparsetest/3
2025-02-23T18:23:53.4757764Z [       OK ] parsetest/gllParserTest.gllparsetest/3 (0 ms)
2025-02-23T18:23:53.4758083Z [----------] 4 tests from parsetest/gllParserTest (0 ms total)
2025-02-23T18:23:53.4758290Z 
2025-02-23T18:23:53.4758587Z [----------] 3 tests from parsetest/ggaParserTest
2025-02-23T18:23:53.4758873Z [ RUN      ] parsetest/ggaParserTest.ggaparsetest/0
2025-02-23T18:23:53.4759169Z [       OK ] parsetest/ggaParserTest.ggaparsetest/0 (0 ms)
2025-02-23T18:23:53.4759462Z [ RUN      ] parsetest/ggaParserTest.ggaparsetest/1
2025-02-23T18:23:53.4759752Z [       OK ] parsetest/ggaParserTest.ggaparsetest/1 (0 ms)
2025-02-23T18:23:53.4760037Z [ RUN      ] parsetest/ggaParserTest.ggaparsetest/2
2025-02-23T18:23:53.4760339Z [       OK ] parsetest/ggaParserTest.ggaparsetest/2 (0 ms)
2025-02-23T18:23:53.4760649Z [----------] 3 tests from parsetest/ggaParserTest (0 ms total)
2025-02-23T18:23:53.4760849Z 
2025-02-23T18:23:53.4760953Z [----------] 4 tests from parsetest/gsaParserTest
2025-02-23T18:23:53.4761231Z [ RUN      ] parsetest/gsaParserTest.gsaparsetest/0
2025-02-23T18:23:53.4761529Z [       OK ] parsetest/gsaParserTest.gsaparsetest/0 (0 ms)
2025-02-23T18:23:53.4762118Z [ RUN      ] parsetest/gsaParserTest.gsaparsetest/1
2025-02-23T18:23:53.4762459Z [       OK ] parsetest/gsaParserTest.gsaparsetest/1 (0 ms)
2025-02-23T18:23:53.4762821Z [ RUN      ] parsetest/gsaParserTest.gsaparsetest/2
2025-02-23T18:23:53.4763121Z [       OK ] parsetest/gsaParserTest.gsaparsetest/2 (0 ms)
2025-02-23T18:23:53.4763420Z [ RUN      ] parsetest/gsaParserTest.gsaparsetest/3
2025-02-23T18:23:53.4763714Z [       OK ] parsetest/gsaParserTest.gsaparsetest/3 (0 ms)
2025-02-23T18:23:53.4764024Z [----------] 4 tests from parsetest/gsaParserTest (0 ms total)
2025-02-23T18:23:53.4764230Z 
2025-02-23T18:23:53.4764330Z [----------] Global test environment tear-down
2025-02-23T18:23:53.4764605Z [==========] 27 tests from 6 test suites ran. (0 ms total)
2025-02-23T18:23:53.4764866Z [  PASSED  ] 27 tests.
2025-02-23T18:23:53.4835821Z Post job cleanup.
2025-02-23T18:23:53.5759575Z [command]/usr/bin/git version
2025-02-23T18:23:53.5796227Z git version 2.48.1
2025-02-23T18:23:53.5839936Z Temporarily overriding HOME=&amp;#39;/home/runner/work/_temp/f15bebd3-b84e-4644-8057-b070c8add181&amp;#39; before making global git config changes
2025-02-23T18:23:53.5841199Z Adding repository directory to the temporary git global config as a safe directory
2025-02-23T18:23:53.5853608Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/pico_gps_teseo/pico_gps_teseo/test_gps_teseo/pico_gps_teseo
2025-02-23T18:23:53.5887571Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand
2025-02-23T18:23:53.5919777Z [command]/usr/bin/git submodule foreach --recursive sh -c &amp;quot;git config --local --name-only --get-regexp &amp;#39;core\.sshCommand&amp;#39; &amp;amp;&amp;amp; git config --local --unset-all &amp;#39;core.sshCommand&amp;#39; || :&amp;quot;
2025-02-23T18:23:53.6135155Z Entering &amp;#39;gps_nmea_lib&amp;#39;
2025-02-23T18:23:53.6178534Z Entering &amp;#39;gps_teseo_lib&amp;#39;
2025-02-23T18:23:53.6237502Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader
2025-02-23T18:23:53.6258705Z http.https://github.com/.extraheader
2025-02-23T18:23:53.6270010Z [command]/usr/bin/git config --local --unset-all http.https://github.com/.extraheader
2025-02-23T18:23:53.6299832Z [command]/usr/bin/git submodule foreach --recursive sh -c &amp;quot;git config --local --name-only --get-regexp &amp;#39;http\.https\:\/\/github\.com\/\.extraheader&amp;#39; &amp;amp;&amp;amp; git config --local --unset-all &amp;#39;http.https://github.com/.extraheader&amp;#39; || :&amp;quot;
2025-02-23T18:23:53.6512499Z Entering &amp;#39;gps_nmea_lib&amp;#39;
2025-02-23T18:23:53.6536122Z http.https://github.com/.extraheader
2025-02-23T18:23:53.6570288Z Entering &amp;#39;gps_teseo_lib&amp;#39;
2025-02-23T18:23:53.6596235Z http.https://github.com/.extraheader
2025-02-23T18:23:53.6775007Z Post job cleanup.
2025-02-23T18:23:53.7714337Z [command]/usr/bin/git version
2025-02-23T18:23:53.7755110Z git version 2.48.1
2025-02-23T18:23:53.7799648Z Temporarily overriding HOME=&amp;#39;/home/runner/work/_temp/d9ecdca1-939c-4266-b6f5-8f9d95758a4d&amp;#39; before making global git config changes
2025-02-23T18:23:53.7800909Z Adding repository directory to the temporary git global config as a safe directory
2025-02-23T18:23:53.7814077Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/pico_gps_teseo/pico_gps_teseo/test_gps_teseo
2025-02-23T18:23:53.7850885Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand
2025-02-23T18:23:53.7885095Z [command]/usr/bin/git submodule foreach --recursive sh -c &amp;quot;git config --local --name-only --get-regexp &amp;#39;core\.sshCommand&amp;#39; &amp;amp;&amp;amp; git config --local --unset-all &amp;#39;core.sshCommand&amp;#39; || :&amp;quot;
2025-02-23T18:23:53.8123989Z Entering &amp;#39;source/gps_nmea_lib&amp;#39;
2025-02-23T18:23:53.8169495Z Entering &amp;#39;source/gps_teseo_lib&amp;#39;
2025-02-23T18:23:53.8229698Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader
2025-02-23T18:23:53.8252455Z http.https://github.com/.extraheader
2025-02-23T18:23:53.8264887Z [command]/usr/bin/git config --local --unset-all http.https://github.com/.extraheader
2025-02-23T18:23:53.8297764Z [command]/usr/bin/git submodule foreach --recursive sh -c &amp;quot;git config --local --name-only --get-regexp &amp;#39;http\.https\:\/\/github\.com\/\.extraheader&amp;#39; &amp;amp;&amp;amp; git config --local --unset-all &amp;#39;http.https://github.com/.extraheader&amp;#39; || :&amp;quot;
2025-02-23T18:23:53.8527100Z Entering &amp;#39;source/gps_nmea_lib&amp;#39;
2025-02-23T18:23:53.8551638Z http.https://github.com/.extraheader
2025-02-23T18:23:53.8585591Z Entering &amp;#39;source/gps_teseo_lib&amp;#39;
2025-02-23T18:23:53.8609925Z http.https://github.com/.extraheader
2025-02-23T18:23:53.8757842Z Cleaning up orphan processes&lt;/pre&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h1 id="mcetoc_1ikq28m0a2"&gt;&lt;span&gt;The Badge&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;GitHub can create a badge for actions. They can be placed on a website, in the readme, or other places that accept markdown.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/7/pastedimage1740336541542v3.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://jancumps.github.io/pico_gps_teseo/md__r_e_a_d_m_e.html" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;Here&amp;#39;s an example&lt;/a&gt; where the badge appears on&amp;nbsp;DoxyGen generated documentation pages.&lt;/span&gt;&lt;/p&gt;
&lt;h1 id="mcetoc_1ikq2a3ch3"&gt;&lt;span&gt;Why?&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span&gt;Automatically run unit tests on pull requests to protected branches, allows that:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span&gt;developers can check-in their code as often as they want. even if it&amp;#39;s broken&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;they can run the unit tests on their code if they want to. Either from GitHub or from a VSCode plugin&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;they can only successfully complete a pull request of their changes to the protected branches if the unit tests succeed. Failed test blocks pull requests and notifies repository followers.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;the project can publish latest pull request status using badges.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;link to &lt;a href="https://community.element14.com/technologies/embedded/f/embedded-forum/tags/googletest" data-e14adj="t"&gt;all posts&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Try out GoogleTest: run tests with sets of data - TestWithParam</title><link>https://community.element14.com/thread/55574?ContentTypeID=0</link><pubDate>Fri, 21 Feb 2025 16:23:25 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:c5f50368-2363-4b1b-8b4d-672c115ca03f</guid><dc:creator>Jan Cumps</dc:creator><slash:comments>3</slash:comments><comments>https://community.element14.com/thread/55574?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/technologies/embedded/f/embedded-forum/55574/try-out-googletest-run-tests-with-sets-of-data---testwithparam/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;This week I&amp;#39;m going to learn&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://google.github.io/googletest/" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;GoogleTest&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/a&gt;for c++.&amp;nbsp;Goals for&amp;nbsp;day 4:&lt;span&gt;&amp;nbsp;test code with several data sets. In this case, I&amp;#39;m asking a GPS parser object (object under test) to parse sets of valid and invalid GPS payloads. The object should be able to report if the payload is valid or not (test condition).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://youtu.be/Z0H1MamhDbU"&gt;https://youtu.be/Z0H1MamhDbU&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;The GTest &lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;WithParamInterface&lt;/span&gt; test fixture class allows that. I can write a single test case, and&amp;nbsp;run that multiple times.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;// generic template for NMEA parser unit tests
// base class for all test fixtures, parameterized or not.
template &amp;lt;class T&amp;gt;
class nmeaTest : public testing::Test {
protected:
    nmeaTest() {}
    T o;
};

// ==================================================================================
// template for parameterised parser tests
// generic fixture that allows to test any nmea parser class&amp;#39; parser function
// with multiple data inputs
template &amp;lt;class T&amp;gt;
class nmeaParsersTest : public nmeaTest&amp;lt;T&amp;gt;, public testing::WithParamInterface&amp;lt;std::tuple&amp;lt;std::string, bool&amp;gt;&amp;gt; {
protected:
    nmeaParsersTest() {}
};&lt;/pre&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The class accepts two parameters each time it&amp;#39;s executed:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a string. In my tests, that will be GPS payload data. Both valid and invalid data.&lt;/li&gt;
&lt;li&gt;a bool: what is the expected result of this test. I&amp;#39;m expecting a true result only for valid payloads. My class under test should report false if the payload is not compliant&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;note: this test fixture also uses a template. You can ignore that for now. I&amp;#39;ll&amp;nbsp;review that in a next post.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Next, we declare the tests that we will do on the object under test:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;TEST_P(gllParserTest, gllparsetest) {
    bool expected = std::get&amp;lt;1&amp;gt;(GetParam());
    std::string s = std::get&amp;lt;0&amp;gt;(GetParam());
    ASSERT_EQ(expected, o.from_data(s, o));
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;We retrieve the expected outcome and the test payload from the parameters. Then we ask the object under test to execute a parse test with that string, and compare its return value&amp;nbsp;with the expected outcome.&lt;/p&gt;
&lt;p&gt;Here is how to call this test with multiple data sets and expectations:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;INSTANTIATE_TEST_SUITE_P(
    parsetest,
    gllParserTest,
    ::testing::Values(
        std::make_tuple(&amp;quot;$XXXXXXXX&amp;quot;, false), // invalid payload
        std::make_tuple(&amp;quot;&amp;quot;, false), // empty payload
        std::make_tuple(&amp;quot;$GPGLL,5051.83778,N,00422.55809,S,185427.150,A,N*4F&amp;quot;, true),
        std::make_tuple(&amp;quot;$GPGLL,5051.83778,N,00422.55809,S,185427.150,V,N*4F&amp;quot;, true))
);&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Test 1 and 2 should check for a false return value, because the payload isn&amp;#39;t compliant with the GPS payload definition. Test 3 and 4 have valid payload, and the object under test should return true.&lt;/p&gt;
&lt;p&gt;Outcome:&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" style="max-height:310px;max-width:499px;"  height="310" src="https://community.element14.com/resized-image/__size/998x620/__key/communityserver-discussions-components-files/7/pastedimage1740154948369v1.png" width="499" /&gt;&lt;/p&gt;
&lt;p&gt;link to &lt;a href="https://community.element14.com/technologies/embedded/f/embedded-forum/tags/googletest" data-e14adj="t"&gt;all posts&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Try out GoogleTest: test existing embedded OO library</title><link>https://community.element14.com/thread/55567?ContentTypeID=0</link><pubDate>Wed, 19 Feb 2025 21:34:51 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:6270d8e0-dce8-483b-aa83-737cd0b17136</guid><dc:creator>Jan Cumps</dc:creator><slash:comments>0</slash:comments><comments>https://community.element14.com/thread/55567?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/technologies/embedded/f/embedded-forum/55567/try-out-googletest-test-existing-embedded-oo-library/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;This week I&amp;#39;m going to learn&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://google.github.io/googletest/" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;GoogleTest&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/a&gt;for c++.&amp;nbsp;Goals for&amp;nbsp;day 3:&lt;span&gt;&amp;nbsp;test an existing embedded library: my GPS parser lib (&amp;nbsp;&lt;a href="https://community.element14.com/technologies/embedded/b/blog/posts/c-parser-library-for-nmea---pt-1-ideas-concepts-early-design"&gt;C++ parser library for NMEA GPS data - pt. 1: ideas, concepts, early design&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;I&amp;#39;m using the lessons learned from day 1 and 2, and apply them to test an object in my library. The class under test, &lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;nmea::gll&lt;/span&gt;, parses a GPS NMEA payload and writes the values to the object members.&lt;br /&gt;The test class will validate that this works as expected. Useful as a plain unit test. And it will be invaluable when I want to touch this code. Rerunning the tests will show if I broke something.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I created a VSCode project, where I added the library sources to the &lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;./source&lt;/span&gt; folder (actually using git to get that code from its github repo). The test cases are in the &lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;./test&lt;/span&gt; folder.&lt;/p&gt;
&lt;p&gt;Here is the test fixture, that &amp;#39;ll be used to test all cases:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;#include &amp;lt;gtest/gtest.h&amp;gt;
import nmea;

class gllTest : public testing::Test {
protected:
    gllTest() : parse_ok(false) {}
    void SetUp() override {
        parse_ok = nmea::gll::from_data(&amp;quot;$GPGLL,5051.83778,N,00422.55809,S,185427.150,A,N*4F&amp;quot;, o);
    }
    nmea::gll o;
    bool parse_ok;
};&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;These are all the test cases:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;TEST_F(gllTest, parse) {
    EXPECT_TRUE(parse_ok) &amp;lt;&amp;lt; &amp;quot;parse failed&amp;quot;;
}

TEST_F(gllTest, valid) {
    EXPECT_TRUE(o.valid);
}

TEST_F(gllTest, source) {
    EXPECT_TRUE(o.source == nmea::talker_id::gps);
}

TEST_F(gllTest, lat) {
    EXPECT_FLOAT_EQ(o.lat, 50.8639641);
}

TEST_F(gllTest, lon) {
    EXPECT_FLOAT_EQ(o.lon, 4.37596798);
}

TEST_F(gllTest, time) {
    EXPECT_EQ((int)(o.t.hours().count()), 18) &amp;lt;&amp;lt; &amp;quot;hours wrong&amp;quot;;
    EXPECT_EQ((int)(o.t.minutes().count()), 54) &amp;lt;&amp;lt; &amp;quot;minutes wrong&amp;quot;;
    EXPECT_EQ((int)(o.t.seconds().count()), 27) &amp;lt;&amp;lt; &amp;quot;seconds wrong&amp;quot;;
    EXPECT_EQ((int)(o.t.subseconds().count()), 150) &amp;lt;&amp;lt; &amp;quot;subseconds wrong&amp;quot;;
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;It&amp;#39;s surprising how easy it is to define these tests. The test fixture, in combination with its &lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;SetUp()&lt;/span&gt;, takes care that each test can focus on validating one aspect of the class under test.&lt;br /&gt;The library source didn&amp;#39;t need any code change to make this work.&lt;/p&gt;
&lt;p&gt;Output:&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" style="max-height:190px;max-width:498px;"  height="190" src="https://community.element14.com/resized-image/__size/996x380/__key/communityserver-discussions-components-files/7/pastedimage1740000660424v2.png" width="498" /&gt;&lt;/p&gt;
&lt;p&gt;You can find the &lt;a href="https://github.com/jancumps/test_gps_teseo" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;code on github&lt;/a&gt;.&amp;nbsp;Check the CMake file in particular. It deals with some of the intrinsics of including GoogleTest, and dealing with potential link conflicts.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;link to &lt;a href="https://community.element14.com/technologies/embedded/f/embedded-forum/tags/googletest" data-e14adj="t"&gt;all posts&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Try out GoogleTest: set up objects before testing with a fixture</title><link>https://community.element14.com/thread/55564?ContentTypeID=0</link><pubDate>Wed, 19 Feb 2025 13:11:39 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:05473838-f63a-4ca8-83a4-bcda77372a7e</guid><dc:creator>Jan Cumps</dc:creator><slash:comments>1</slash:comments><comments>https://community.element14.com/thread/55564?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/technologies/embedded/f/embedded-forum/55564/try-out-googletest-set-up-objects-before-testing-with-a-fixture/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;This week I&amp;#39;m going to learn&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://google.github.io/googletest/" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;GoogleTest&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/a&gt;for c++.&amp;nbsp;Goals for&amp;nbsp;day 2: &lt;a href="https://google.github.io/googletest/primer.html#same-data-multiple-tests" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;Test Fixtures&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To run unit tests on an object oriented design, you often&amp;nbsp;require that some objects are created and set up before testing. Multiple tests will very likely need the same setup. GTest provides the fixture mechanism for that. A fixture is [...] a class that sets up your objects, and gives access to those objects to the GTest framework. For each test case, the fixture (and your objects) will be freshly set up before the test, and destroyed when done.&lt;/p&gt;
&lt;h1 id="mcetoc_1ikfrqo1n0"&gt;Create objects before running tests&lt;/h1&gt;
&lt;p&gt;In this post I&amp;#39;ll use the same class&amp;nbsp;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;TestClass&lt;/span&gt; that I tested in the &lt;a href="https://community.element14.com/technologies/embedded/f/embedded-forum/55559/try-out-googletest-to-test-a-class-and-a-c-module" target="_blank" data-e14adj="t"&gt;previous exercise&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;namespace test_module {

class TestClass {
public:
  bool match(const std::string_view&amp;amp; sv);
};

}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Here is how&amp;nbsp;my tests looked like before using a fixture:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;TEST(string_view, match) {
    test_module::TestClass o;
    EXPECT_TRUE(o.match(&amp;quot;match&amp;quot;)); // should pass
}

TEST(string_view, missmatch) {
    test_module::TestClass o;
    EXPECT_FALSE(o.match(&amp;quot;mismatch&amp;quot;)); // should pass
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;I created the object &lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;o&lt;/span&gt; at the start of the test myself. And repeated that at the start of each test that tests the object. &lt;br /&gt;With the GTest fixture approach, I learn a class how to create that setup for me, each time I want to run a test:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;class TestClassTest : public testing::Test {
protected:
    TestClassTest() {}
   
    // ~TestClassTest() override = default;
    test_module::TestClass o;
};&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;The only thing that this class does, is create a member &lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;o&lt;/span&gt; of&amp;nbsp;the class that I want to test. Then, instead of using the GTest macro &lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;TEST&lt;/span&gt;, I use the macro &lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;TEST_F&lt;/span&gt;. First parameter is the name of the fixture class.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;TEST_F(TestClassTest, match) {
    EXPECT_TRUE(o.match(&amp;quot;match&amp;quot;)); // should pass
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;This will automatically set up the fixture before the test is executed. And give us access to the freshly created object &lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;o&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;In my example, that I kept simple on purpose, there is only one object to set up. But&amp;nbsp;say that you created a more complex class, like a specialised&amp;nbsp;array object. You can use this mechanism to create your container (and add some data to it - a subject for the section below) before the tests execute. You can then run multiple test cases that automatically have this known setup.&lt;/p&gt;
&lt;p&gt;Results of my test run:&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" style="max-height:168px;max-width:500px;"  height="168" src="https://community.element14.com/resized-image/__size/1000x336/__key/communityserver-discussions-components-files/7/pastedimage1739970680057v1.png" width="500" /&gt;&lt;/p&gt;
&lt;h1 id="mcetoc_1ikfrqo1n1"&gt;Configure those objects before test execution&lt;/h1&gt;
&lt;p&gt;In the section above, my object under test didn&amp;#39;t have a requirement to configure it. When it was created, it was ready to use. It was able to compare a string to the fixed string &amp;quot;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;match&lt;/span&gt;&amp;quot;. In this second part of the post, I&amp;#39;m modifying it into a more flexible class. It can compare a string to a configurable string. This new class will allow us to test how the GTest fixture setup functionality works.&lt;/p&gt;
&lt;p&gt;Rewritten class, now allows you to define a string to compare to:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;// ...

class TestClass {
public:
  TestClass() : match_string() {}
  bool match(const std::string_view&amp;amp; sv);
  void set_match_string(const std::string&amp;amp; s) {
    match_string = s;
  }

private:
  std::string match_string;
};

// ...&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;The difference with the class in the first part of this post:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;we have a class member &lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;match_string&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;there is a method &lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;set_match_string()&lt;/span&gt; to set it&lt;/li&gt;
&lt;li&gt;at object creation, this defaults to an empty string (&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;&amp;quot;&amp;quot;&lt;/span&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If we want to use it in a test case without fixture, our tests will look like this:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;TEST(string_view, match) {
    test_module::TestClass o;
    o.set_match_string(&amp;quot;match&amp;quot;);
    EXPECT_TRUE(o.match(&amp;quot;match&amp;quot;)); // should pass
}

TEST(string_view, missmatch) {
    test_module::TestClass o;
    o.set_match_string(&amp;quot;match&amp;quot;);
    EXPECT_FALSE(o.match(&amp;quot;mismatch&amp;quot;)); // should pass
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;If we use&amp;nbsp;the same fixture as in the first part of this post, we &amp;#39;ll get the object created, but not the string set. For that, we&amp;#39;ll adapt our fixture class, and give it a &lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;SetUp()&lt;/span&gt; method:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;class TestClassTest : public testing::Test {
protected:
    TestClassTest() {}
    void SetUp() override {
        o.set_match_string(&amp;quot;match&amp;quot;);
    }
   
    // ~TestClassTest() override = default;
    test_module::TestClass o;
};&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;GTest will now do 2 things for us:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;create the object, as before&lt;/li&gt;
&lt;li&gt;call its&amp;nbsp;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;set_match_string()&lt;/span&gt;&lt;span&gt;&amp;nbsp;and set the string to&amp;nbsp;&amp;quot;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;match&lt;/span&gt;&amp;quot;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span&gt;The fixture test case does not change:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;TEST_F(TestClassTest, match) {
    EXPECT_TRUE(o.match(&amp;quot;match&amp;quot;)); // should pass
}&lt;/pre&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;That&amp;#39;s it. In part 1 of the post we learn how to automatically create (a set of) objects before a test gets executed.&lt;br /&gt;In part 2,&amp;nbsp;we configure those objects, after they are created.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;This is the main story about test fixtures. They allow you to set up an object structure before a test case is run, and configure those objects. Then it executes your tests on them.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;link to &lt;a href="https://community.element14.com/technologies/embedded/f/embedded-forum/tags/googletest" data-e14adj="t"&gt;all posts&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Try out GoogleTest to test a class and a C++ module</title><link>https://community.element14.com/thread/55559?ContentTypeID=0</link><pubDate>Tue, 18 Feb 2025 22:58:15 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:fe8772c7-fa7a-41ed-945b-062c245cd3ef</guid><dc:creator>Jan Cumps</dc:creator><slash:comments>1</slash:comments><comments>https://community.element14.com/thread/55559?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/technologies/embedded/f/embedded-forum/55559/try-out-googletest-to-test-a-class-and-a-c-module/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;This week I&amp;#39;m going to learn&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://google.github.io/googletest/" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;GoogleTest&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/a&gt;for c++. I used JUnit frequently during my Java days. But never used a unit test framework (or unit tests) for embedded development.&lt;/p&gt;
&lt;p&gt;Goals for the first days, done in&amp;nbsp;&amp;nbsp;&lt;a href="https://community.element14.com/technologies/embedded/f/embedded-forum/55558/try-out-googletest"&gt;Try out GoogleTest&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;able to run a GoogleTest&lt;/li&gt;
&lt;li&gt;build&amp;nbsp;a CMake script that does everything&lt;/li&gt;
&lt;li&gt;integrate with VSCode&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;and, in this post&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;test&amp;nbsp;some custom code: a class in a C++ module&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Class interface&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;// test_module_interface.cpp

module;
#include &amp;lt;string_view&amp;gt;
export module test_module;

export namespace test_module {

class TestClass {
public:
  bool match(const std::string_view&amp;amp; sv);
};

} // namespace test_module&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Class implementation&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;// test_module_impl.cpp

module;
#include &amp;lt;string_view&amp;gt;
module test_module;

namespace test_module {
bool TestClass::match(const std::string_view&amp;amp; sv) {
    using std::operator&amp;quot;&amp;quot;sv;
    return (&amp;quot;match&amp;quot;sv.compare(sv) == 0);    
}

} // namespace test_module&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Test Suite&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;// test_suite.cpp

#include &amp;lt;gtest/gtest.h&amp;gt;
import test_module;

TEST(string_view, match) {
    test_module::TestClass o;
    EXPECT_TRUE(o.match(&amp;quot;match&amp;quot;)); // should pass
}

TEST(string_view, missmatch) {
    test_module::TestClass o;
    EXPECT_FALSE(o.match(&amp;quot;mismatch&amp;quot;)); // should pass
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;CMake script&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;cmake_minimum_required(VERSION 3.28)

project(test_class_module C CXX ASM)

# GoogleTest requires at least C++14
set(CMAKE_CXX_STANDARD 26)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_FLAGS &amp;quot;${CMAKE_CXX_FLAGS} -fmodules-ts&amp;quot;)

include(FetchContent)
FetchContent_Declare(
  googletest
  URL https://github.com/google/googletest/archive/03597a01ee50ed33e9dfd640b249b4be3799d395.zip
)
# For Windows: Prevent overriding the parent project&amp;#39;s compiler/linker settings
set(gtest_force_shared_crt ON CACHE BOOL &amp;quot;&amp;quot; FORCE)
FetchContent_MakeAvailable(googletest)

enable_testing()

add_executable(${CMAKE_PROJECT_NAME})
target_sources(${CMAKE_PROJECT_NAME}
        PRIVATE
        ${CMAKE_CURRENT_SOURCE_DIR}/test_suite.cpp
        ${CMAKE_CURRENT_SOURCE_DIR}/test_module_impl.cpp
)
target_sources(${CMAKE_PROJECT_NAME}
        PRIVATE
        FILE_SET cxx_modules TYPE CXX_MODULES FILES
        ${CMAKE_CURRENT_SOURCE_DIR}/test_module_iface.cpp

)

target_link_libraries( ${CMAKE_PROJECT_NAME}
        PRIVATE
        GTest::gtest_main
)

include(GoogleTest)
gtest_discover_tests(${CMAKE_PROJECT_NAME})&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Result&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" style="max-height:197px;max-width:498px;"  height="197" src="https://community.element14.com/resized-image/__size/996x394/__key/communityserver-discussions-components-files/7/pastedimage1739919456121v2.png" width="498" /&gt;&lt;/p&gt;
&lt;p&gt;link to &lt;a href="https://community.element14.com/technologies/embedded/f/embedded-forum/tags/googletest" data-e14adj="t"&gt;all posts&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Try out GoogleTest</title><link>https://community.element14.com/thread/55558?ContentTypeID=0</link><pubDate>Tue, 18 Feb 2025 19:11:56 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:dfcf4e97-7f9a-45db-b281-d3d22a41e6a5</guid><dc:creator>Jan Cumps</dc:creator><slash:comments>1</slash:comments><comments>https://community.element14.com/thread/55558?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/technologies/embedded/f/embedded-forum/55558/try-out-googletest/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;This week I&amp;#39;m going to learn &lt;a href="https://google.github.io/googletest/" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;GoogleTest &lt;/a&gt;for c++. I used JUnit frequently during my Java days. But never used a unit test framework (or unit tests) for embedded development.&lt;/p&gt;
&lt;p&gt;Goals for the first days:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;able to run a GoogleTest&lt;/li&gt;
&lt;li&gt;build&amp;nbsp;a CMake script that does everything&lt;/li&gt;
&lt;li&gt;integrate with VSCode&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The first 2 were very easy. I followed &lt;a href="https://google.github.io/googletest/quickstart-cmake.html" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;Quickstart: Building with CMake&lt;/a&gt;. It learns you to write a CMake file and a first test script.&lt;/p&gt;
&lt;p&gt;My CMake file:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;cmake_minimum_required(VERSION 3.28)

project(test_gps_teseo CXX)

# GoogleTest requires at least C++14
set(CMAKE_CXX_STANDARD 26)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_FLAGS &amp;quot;${CMAKE_CXX_FLAGS} -fmodules-ts&amp;quot;)


include(FetchContent)
FetchContent_Declare(
  googletest
  URL https://github.com/google/googletest/archive/03597a01ee50ed33e9dfd640b249b4be3799d395.zip
)
# For Windows: Prevent overriding the parent project&amp;#39;s compiler/linker settings
set(gtest_force_shared_crt ON CACHE BOOL &amp;quot;&amp;quot; FORCE)
FetchContent_MakeAvailable(googletest)

enable_testing()

add_executable(
  ${CMAKE_PROJECT_NAME}
  test.cpp
)
target_link_libraries(
  ${CMAKE_PROJECT_NAME}
  GTest::gtest_main
)

include(GoogleTest)
gtest_discover_tests(${CMAKE_PROJECT_NAME})&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;This file will prepare my project for testing. It &amp;#39;ll also download GoogleTest (if not cached).&lt;/p&gt;
&lt;p&gt;The c++ test script is identical to the one in the tutorial. Just 2 assertions to see if things work.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="csharp"&gt;#include &amp;lt;gtest/gtest.h&amp;gt;

// Demonstrate some basic assertions.
TEST(HelloTest, BasicAssertions) {
  // Expect two strings not to be equal.
  EXPECT_STRNE(&amp;quot;hello&amp;quot;, &amp;quot;world&amp;quot;);
  // Expect equality.
  EXPECT_EQ(7 * 6, 42);
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Toolchain:&amp;nbsp;Even though my embedded code is&amp;nbsp;currently&amp;nbsp;running on a&amp;nbsp;Pico, I took care that all &amp;quot;business logic&amp;quot; is platform independent. The embedded code that I want to test compiles and runs equally well on a Windows or Linux (e.g. Raspberry Pi) device. Since I run my test bed on a Windows machine, I&amp;#39;m using Windows C++ toolchain to build and execute the tests: the latest GCC W64 MINGW release.&lt;/p&gt;
&lt;p&gt;At this point, I &amp;#39;d be able to test this from a command line, but I used VSCode&amp;nbsp;with the TestMate C++ extension.&lt;/p&gt;
&lt;p&gt;The extension shows the available test cases (the one from the source file above, auto detected). And allows you to run them one time or continuous.&lt;/p&gt;
&lt;p&gt;&lt;img alt="image"  height="199" src="https://community.element14.com/resized-image/__size/642x398/__key/communityserver-discussions-components-files/7/pastedimage1739904389736v2.png" width="321" /&gt;&lt;/p&gt;
&lt;p&gt;The status is shown visually. A green checkbox is success. A red X is failure. At the same time, the output is available:&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:239px;max-width:496px;"  height="239" src="https://community.element14.com/resized-image/__size/992x478/__key/communityserver-discussions-components-files/7/pastedimage1739904342935v1.png" width="496" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;If you already have the CMake extensions installed in VSCode:&amp;nbsp;that also integrates with the test view and offers very similar functionality.&lt;/p&gt;
&lt;p&gt;link to &lt;a href="https://community.element14.com/technologies/embedded/f/embedded-forum/tags/googletest" data-e14adj="t"&gt;all posts&lt;/a&gt;.&lt;/p&gt;
&lt;h1 id="mcetoc_1ikd7ihst0"&gt;&lt;span style="color:#ff0000;"&gt;&lt;/span&gt;&lt;/h1&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>GCC Arm toolchain version 14 released</title><link>https://community.element14.com/thread/55472?ContentTypeID=0</link><pubDate>Wed, 15 Jan 2025 20:52:46 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:24556604-34c7-4558-a481-110d2bbb0682</guid><dc:creator>Jan Cumps</dc:creator><slash:comments>2</slash:comments><comments>https://community.element14.com/thread/55472?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/technologies/embedded/f/embedded-forum/55472/gcc-arm-toolchain-version-14-released/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Every six months,&amp;nbsp;a new pre-built GCC toolchain for ARM is released. On December 10, release 14.2 Rel1 was published:&amp;nbsp;&lt;a id="" href="https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads&lt;/a&gt;.&amp;nbsp; There are some goodies related to upcoming C++26, such as better support for modules. Check &lt;a href="https://developers.redhat.com/articles/2024/05/15/new-c-features-gcc-14" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;this RedHat blog&lt;/a&gt; for an overview of what&amp;#39;s in it.&lt;/p&gt;
&lt;p&gt;I&amp;#39;m trying to convert a library that I made for GPS communication to modules,&amp;nbsp;and was looking forward to this release. In version 13, I got stuck because of limited support for this. Crossing fingers ...&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Serial communication (UART) failure when using '2+6 Electric Vehicle Charger Plug Socket'</title><link>https://community.element14.com/thread/55412?ContentTypeID=0</link><pubDate>Fri, 27 Dec 2024 09:57:07 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:d3803db6-36a9-4959-9ed7-77741de8fd9b</guid><dc:creator>Maria_Shoaib</dc:creator><slash:comments>1</slash:comments><comments>https://community.element14.com/thread/55412?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/technologies/embedded/f/embedded-forum/55412/serial-communication-uart-failure-when-using-2-6-electric-vehicle-charger-plug-socket/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hello everyone,&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span&gt;I am using ESP8266 (D1 Mini) to extract battery data from its BMS via UART (software serial). The pins which I am using are D1 and D2 of the ESP8266. The problem is that the data is coming fine and serial communication is working all good but as soon as I connect a 2+6 Electric Vehicle Charger Plug Socket, UART stops working and data stops coming. A 2+6 Electric Vehicle Charger Plug Socket has been used to supply power for the rest of the devices. Any suggestions? I really appreciate any help you can provide.&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>interfacing Imx6 with emmc card MTFC8GAMALNA-AAT</title><link>https://community.element14.com/thread/55221?ContentTypeID=0</link><pubDate>Tue, 22 Oct 2024 03:50:49 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:d5759724-d6ee-4856-80c7-15b48831d1b8</guid><dc:creator>saivenkatesh019</dc:creator><slash:comments>2</slash:comments><comments>https://community.element14.com/thread/55221?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/technologies/embedded/f/embedded-forum/55221/interfacing-imx6-with-emmc-card-mtfc8gamalna-aat/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;when I&amp;#39;m interfacing Imx6 with emmc , the emmc doesn&amp;#39;t have card identification pin, so how can i connect the emmc and how to read and write data in emmc card.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>(offer now taken up). At least 26 items (Microcontroller boards mostly) - Free to anyone in UK</title><link>https://community.element14.com/thread/54880?ContentTypeID=0</link><pubDate>Wed, 31 Jul 2024 17:05:20 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:49e32b75-3ffd-442a-9c2c-7c2502359ac0</guid><dc:creator>shabaz</dc:creator><slash:comments>39</slash:comments><comments>https://community.element14.com/thread/54880?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/technologies/embedded/f/embedded-forum/54880/offer-now-taken-up-at-least-26-items-microcontroller-boards-mostly---free-to-anyone-in-uk/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;span style="font-size:150%;"&gt;EDIT 4th Aug 2024: The offer has been taken up. I might have more stuff to get rid of at some point, once I sort it out!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:150%;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:150%;"&gt;Hi, if anyone is interested, I&amp;#39;d be happy to mail these for free to anyone in the UK (I cannot ship them overseas&amp;nbsp;because of customs&amp;nbsp;overhead/charges).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:150%;"&gt;If you want them, please leave a comment below and then send me a private message with a UK shipping address (hover your mouse over my name, and then you should be able to &amp;#39;request friendship&amp;#39; or &amp;#39;send message&amp;#39; I think).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:150%;"&gt;Some of these boards are used, some are new. They would all be sent in one package. No guarantees they work, although I believe all should function (I have no documentation/cables and can&amp;#39;t offer any specific support on them unfortunately).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:150%;"&gt;I have lots of other bits so for instance if you&amp;#39;re a beginner looking for&amp;nbsp;a type of thing in particular (e.g. bits of stripboard etc), let me know, I might be able to add it into the box if I have it and if it fits inside.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:150%;"&gt;The items are (now 30 items):&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-size:150%;"&gt;MSP-FET430UIF debug tool, no cables&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:150%;"&gt;CC1310 Launchpad&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:150%;"&gt;Sipeed USB JTAG/TTL dongle&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:150%;"&gt;CH9350 Sichiray board (think it&amp;#39;s a USB keyboard interface)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:150%;"&gt;WeAct Studio board (clone of a STM board)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:150%;"&gt;STM32F4 Discovery board&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:150%;"&gt;EFM32 Giant Gecko board&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:150%;"&gt;Tiva C-Series LaunchPad&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:150%;"&gt;Anaren AIR Boosterpack&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:150%;"&gt;Pi B+ V2&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:150%;"&gt;4DPI-24-HAT TFT for Pi&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:150%;"&gt;FRDM-K64F&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:150%;"&gt;Olimex MOD-RTC&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:150%;"&gt;MSP-EXP432P4111&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:150%;"&gt;Papilio One (Spartan board)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:150%;"&gt;Arduino Yun&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:150%;"&gt;BeagleConnect Freedom&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:150%;"&gt;STM32F031 Nucleo-32 board&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:150%;"&gt;PocketBeagle&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:150%;"&gt;PICkit 3 clone&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:150%;"&gt;EFM32 Zero Gecko board&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:150%;"&gt;Silabs BRD8301A Humidity/Temp/Optical Sensor Expansion Board&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:150%;"&gt;FRDM-KL25Z board&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:150%;"&gt;Pi Zero V1.2&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:150%;"&gt;Silabs BRD4001A Wireless Starter Kit Mainboard with ERZ32WG wireless board plugged on&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:150%;"&gt;STM32F412 Nucleo-144 board&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:150%;"&gt;Arduino Uno (new, opened box)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:150%;"&gt;Open Bench Logic Sniffer&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:150%;"&gt;XMOS startKIT (new, unused)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:150%;"&gt;Atmel SAM-ICE programmer&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" style="height:504px;max-height:504px;max-width:693px;"  height="504" src="https://community.element14.com/resized-image/__size/1386x1008/__key/communityserver-discussions-components-files/7/boards.jpg" width="692" /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Unihiker SBC from DFRobot</title><link>https://community.element14.com/thread/54797?ContentTypeID=0</link><pubDate>Mon, 08 Jul 2024 12:33:56 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:de2cba1a-ad10-4173-814a-427619a0f221</guid><dc:creator>rsc</dc:creator><slash:comments>2</slash:comments><comments>https://community.element14.com/thread/54797?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/technologies/embedded/f/embedded-forum/54797/unihiker-sbc-from-dfrobot/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I received a new Unihiker board a few weeks ago, and I just started playing with it this week.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.unihiker.com/" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://www.unihiker.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" style="max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/7/pastedimage1720441197612v1.png" /&gt;&lt;/p&gt;
&lt;p&gt;It&amp;#39;s kinda interesting with a mix of features including a display with touch screen and a nice set of GPIO pins with both connectors and microbit style edge connector.&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/7/pastedimage1720441438258v2.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a id="" href="https://www.dfrobot.com/product-2691.html" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://www.dfrobot.com/product-2691.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The Unihiker comes with an OS already installed, and you can start programming right away with a browser based Python package using Jupyter Notebook.&lt;/p&gt;
&lt;p&gt;I&amp;#39;m surprised at how easy it was to start working on a project and get it running in just a few minutes.&lt;/p&gt;
&lt;p&gt;DFRobot is running a contest also right now, so if you have a project idea you should sign up.&lt;/p&gt;
&lt;p&gt;&lt;a id="" href="https://community.dfrobot.com/contest-1614.html" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://community.dfrobot.com/contest-1614.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;" src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/7/pastedimage1720443156629v1.png"  /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Is it possible to access GPIO on Android?</title><link>https://community.element14.com/thread/54704?ContentTypeID=0</link><pubDate>Tue, 11 Jun 2024 15:27:35 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:d3e021de-ed56-42d2-bdda-a1686be8dcae</guid><dc:creator>JunkMuffler</dc:creator><slash:comments>3</slash:comments><comments>https://community.element14.com/thread/54704?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/technologies/embedded/f/embedded-forum/54704/is-it-possible-to-access-gpio-on-android/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I&amp;#39;m designing my next project, and was wondering if it&amp;#39;s possible to access GPIO on an Android tablet. I know you can do this on a PC using a breakout board like the Adafruit FT232H. Is there something similar I can use with an Android tablet?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>ATI BGA microcontroller question</title><link>https://community.element14.com/thread/54633?ContentTypeID=0</link><pubDate>Tue, 21 May 2024 13:49:50 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:af479f80-b8c9-4974-8e86-5535a2cef33d</guid><dc:creator>mattm8913</dc:creator><slash:comments>1</slash:comments><comments>https://community.element14.com/thread/54633?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/technologies/embedded/f/embedded-forum/54633/ati-bga-microcontroller-question/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I&amp;#39;m working with a team on repairing some old electronics units, and one of the parts that we came across was ATI&amp;#39;s microcontroller part number&amp;nbsp;216T9NGBGA13FHG .&amp;nbsp; From paperwork on a similar part number, we were able to decode the meaning of each digit except for the last one, and we need to know this so that we can justify substituting part number &amp;quot;216T9NGBGA13FH&amp;quot; into the unit (same part number minus the G) because it&amp;#39;s less than 10% of the cost and much more widely available.&lt;/p&gt;
&lt;p&gt;Is anyone able to help us out with this question?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>LCD got dark, any idea why?</title><link>https://community.element14.com/thread/54251?ContentTypeID=0</link><pubDate>Fri, 19 Jan 2024 10:04:07 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:224e6b6c-93e8-4751-836d-24b15fd2eebd</guid><dc:creator>koudelad</dc:creator><slash:comments>10</slash:comments><comments>https://community.element14.com/thread/54251?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/technologies/embedded/f/embedded-forum/54251/lcd-got-dark-any-idea-why/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;I have a universal charger for up to 4 battery packs. Over the past year, 4 displays in the device got partially dark and are readable from different angles only, not from the standard 6:00 view.&lt;/p&gt;
&lt;p&gt;Any idea why this happened? I think it was not in direct sunshine, but guarantee (even if it did, if was in behind a strong glass and ventilated area). It was in operation for charging maybe ca 100 cycles for some battery packs and the unit is 1-2 years old. Maybe heat from the inside? (Poor thermal design? I haven&amp;#39;t opened the unit, yet).&lt;/p&gt;
&lt;p&gt;I hope the LCDs could get replaced, but I am afraid it will happen again.&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:360px;max-width:640px;" alt="battery charger" src="https://community.element14.com/resized-image/__size/1280x720/__key/communityserver-discussions-components-files/7/battery_5F00_charger.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;Thank you,&lt;/p&gt;
&lt;p&gt;David&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Measuring liquid level of a sealed container</title><link>https://community.element14.com/thread/54171?ContentTypeID=0</link><pubDate>Sat, 30 Dec 2023 22:27:50 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:65ff2bd7-c76c-49bb-8954-138da8c0fca3</guid><dc:creator>Hasanga</dc:creator><slash:comments>18</slash:comments><comments>https://community.element14.com/thread/54171?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/technologies/embedded/f/embedded-forum/54171/measuring-liquid-level-of-a-sealed-container/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I need to measure liquid level inside a sealed container there can&amp;#39;t be placed any sensors inside it. This is a shock absorber in a very powerful machine. So in operation the pressure and temperature will be high and flowing speed of liquid is also high .&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp;1. Container is steel cylinder, height 1 meter, diameter 8 inches,&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; wall thickness 3 mm. it&amp;nbsp; &amp;nbsp; &amp;nbsp; can be tilted horizontal to 60 degrees&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;in vertical. But can&amp;#39;t be&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; moved. It contains a nother hollow&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;steel cylinder.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;a. This small cylinder is same height, diameter 5 inches. And&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;have a orifice of 5 cm on its wall so liquid can move in and out&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; from this cylinder to outer cylinder freely.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I will be measuring liquid level before operation and during trouble shooting only. What methods can be used?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Seeking Advice on Compact Object Tracker Components and PCB Design</title><link>https://community.element14.com/thread/53856?ContentTypeID=0</link><pubDate>Sat, 21 Oct 2023 20:27:21 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:51283831-21c7-4e87-ae3c-7a91825757fb</guid><dc:creator>m9roval</dc:creator><slash:comments>8</slash:comments><comments>https://community.element14.com/thread/53856?ContentTypeID=0</comments><wfw:commentRss>https://community.element14.com/technologies/embedded/f/embedded-forum/53856/seeking-advice-on-compact-object-tracker-components-and-pcb-design/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi all,&lt;br /&gt;I&amp;#39;m currently working on a small tracking project and could use some guidance on selecting the right components, since i dont have much experience and i don&amp;#39;t know what to look for. The main goal is to create a compact tracker that monitors an object&amp;#39;s movement, specifically detecting when it&amp;#39;s picked up or laid down.&lt;/p&gt;
&lt;p&gt;Here are the core components I&amp;#39;m considering:&lt;/p&gt;
&lt;p&gt;Microcontroller: I need a microcontroller to handle the logic for data processing.&lt;br /&gt;Gyroscope &amp;amp; Accelerometer: Sensors to measure rotation and acceleration. &lt;br /&gt;Proximity Sensor: A proximity sensor with a range of a few centimeters is required to detect when an object is close to a surface.&lt;br /&gt;Bluetooth Low Energy (BLE) Module: This is necessary for transmitting the tracked data to another device.&lt;/p&gt;
&lt;p&gt;I&amp;#39;m would like for a final PCB size of max 5cm x 5cm; please let me know if this is a reasonable target.&lt;/p&gt;
&lt;p&gt;Currently, I&amp;#39;m using an ESP32 with the MPU-6050 as the gyroscope and APDS9960 for distance measurement, but these components are too large (and have too much functions i dont need) for my intended design.&lt;/p&gt;
&lt;p&gt;Any advice or component recommendations would be nice. Thanks!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>