<?xml-stylesheet type="text/xsl" href="https://community.element14.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>C++ library for ST Teseo GPS - pt. 5: ready for a first (0.1) firmware release</title><link>/technologies/embedded/b/blog/posts/c-library-for-st-teseo-gps---pt-5-ready-for-a-first-firmware-release</link><description>The Teseo-LIV3 GPS module (as used in shabaz &amp;#39; GPS / Galileo / BeiDou / GLONASS receiver ) talks UART and I2C. I&amp;#39;m writing an OO driver for it, for embedded systems. The firmware is now ready for a release.
 GitHub Release 0.1,...</description><dc:language>en-US</dc:language><generator>Telligent Community 12</generator><item><title>RE: C++ library for ST Teseo GPS - pt. 5: ready for a first (0.1) firmware release</title><link>https://community.element14.com/technologies/embedded/b/blog/posts/c-library-for-st-teseo-gps---pt-5-ready-for-a-first-firmware-release</link><pubDate>Thu, 08 Aug 2024 15:01:56 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:1811e809-d5c5-4adf-ac62-d15539ad92e2</guid><dc:creator>Jan Cumps</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&amp;nbsp;[mention:497ac2d0cd8d48c8a8de63258a1cb4cb:f7d226abd59f475c9d224a79e3f0ec07]&amp;nbsp;&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=28187&amp;AppID=7&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: C++ library for ST Teseo GPS - pt. 5: ready for a first (0.1) firmware release</title><link>https://community.element14.com/technologies/embedded/b/blog/posts/c-library-for-st-teseo-gps---pt-5-ready-for-a-first-firmware-release</link><pubDate>Wed, 07 Aug 2024 21:16:42 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:1811e809-d5c5-4adf-ac62-d15539ad92e2</guid><dc:creator>Jan Cumps</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;since this release, I made the following changes to sturdy the code:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;validate data string as well as status string&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To cover scenarios where I receive&amp;nbsp;an incorrect, but well-formed reply (it happens mostly after a previous reply failed), I now also validate that each&amp;nbsp;reply string has the correct signature. It&amp;#39;s done by checking if the&amp;nbsp;characters 3 - 5 of the reply (these are constant for every type of reply) are the expected ones.&lt;/p&gt;
&lt;p&gt;If not, the library returns an empty data result, and a count of 0 for multi line replies.&amp;nbsp;The return value will be false.&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=28187&amp;AppID=7&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: C++ library for ST Teseo GPS - pt. 5: ready for a first (0.1) firmware release</title><link>https://community.element14.com/technologies/embedded/b/blog/posts/c-library-for-st-teseo-gps---pt-5-ready-for-a-first-firmware-release</link><pubDate>Sat, 03 Aug 2024 19:02:31 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:1811e809-d5c5-4adf-ac62-d15539ad92e2</guid><dc:creator>Jan Cumps</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;&lt;span&gt;Since the release, I&amp;#39;ve made&amp;nbsp;these changes to the nmake file:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;more examples&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;There will be a&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;simple communication example to talk to the ST Teseo GPS, and&lt;/li&gt;
&lt;li&gt;an example that uses &lt;a href="/technologies/embedded/b/blog/posts/c-parser-library-for-nmea---pt-1-ideas-concepts-early-design" data-e14adj="t"&gt;this nmea parser&lt;/a&gt; in combination with talking to the Teseo GPS.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;build firmware binaries for both UART and I2C&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In version 1, you controlled with a compile definition, if firmware is for I2C or UART control.&lt;br /&gt;At build time, it then created the binary for that protocol&lt;/p&gt;
&lt;p&gt;In the next version, the standard build command will create the I2C and&amp;nbsp;UART binary for each example.&lt;br /&gt;You can still build a single selected binary, if you want that.&lt;br /&gt;It&amp;#39;s similar to what Pico does with its examples. Default build makes all of them, but you can ask to build one particular example.&lt;/p&gt;
&lt;p&gt;It &amp;#39;ll make it easier to provide binaries when cutting a release.&lt;br /&gt;It also serves as a proof that you can use these libraries for both protocols without code changes or conditional constructs.&lt;/p&gt;
&lt;p&gt;This is already available on GitHub develop and main branch.&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=28187&amp;AppID=7&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: C++ library for ST Teseo GPS - pt. 5: ready for a first (0.1) firmware release</title><link>https://community.element14.com/technologies/embedded/b/blog/posts/c-library-for-st-teseo-gps---pt-5-ready-for-a-first-firmware-release</link><pubDate>Thu, 01 Aug 2024 18:20:57 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:1811e809-d5c5-4adf-ac62-d15539ad92e2</guid><dc:creator>Jan Cumps</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Since the release, I&amp;#39;ve made a few changes to the structure:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;all pico specific code (init, reset, read and write) is moved out of main.cpp.&lt;/strong&gt;&lt;br /&gt;These device dependent functions now reside&amp;nbsp;in the port/pico subfolder.&lt;br /&gt;goal: make it easier to create ports for other controller families&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;the library core files have their own github repository now,&lt;/strong&gt;&lt;br /&gt;and I changed this project&amp;#39;s git setup and build infra to use that repo as a subfolder.&lt;br /&gt;goal: make it easier for users to just get / use the pure library, without getting the Pico specific examples and code&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If you do a clean checkout, you can use this command to get the project and the submodule in one go:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;git clone &lt;a href="https://github.com/jancumps/pico_gps_teseo.git" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;github.com/.../pico_gps_teseo.git&lt;/a&gt; --recursive&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;If you already have a local repository, take care that it&amp;nbsp;has latest changes (git pull), &lt;br /&gt;and then retrieve submodule:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;git submodule init&lt;br /&gt;git submodule update&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;if you want to add the lib to your own project, execute this from the project&amp;#39;s root folder:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;git submodule add https://github.com/jancumps/gps_teseo_lib.git&lt;/pre&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;GitHub repo:&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;/p&gt;
&lt;img src="https://community.element14.com/aggbug?PostID=28187&amp;AppID=7&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: C++ library for ST Teseo GPS - pt. 5: ready for a first (0.1) firmware release</title><link>https://community.element14.com/technologies/embedded/b/blog/posts/c-library-for-st-teseo-gps---pt-5-ready-for-a-first-firmware-release</link><pubDate>Wed, 24 Jul 2024 19:45:43 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:1811e809-d5c5-4adf-ac62-d15539ad92e2</guid><dc:creator>Jan Cumps</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;GSA and GGA message added. That completes the list&amp;nbsp;of data that&amp;nbsp;the device outputs by default.&lt;br /&gt;For other messages&amp;nbsp;(there are a lot), a&amp;nbsp;developer can use the libraries reader, writer and line parser methods&amp;nbsp;to query them.&lt;/p&gt;
&lt;p&gt;currently available in the develop branch.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;pre&gt;GLL valid: yes.&lt;br /&gt;$GPGLL,5051.76917,N,00422.58021,E,194121.000,V,N*4A&lt;br /&gt;GSV valid: yes. count: 5.&lt;br /&gt;$GPGSV,3,1,11,13,86,080,,15,58,293,,14,55,091,,22,55,131,*70&lt;br /&gt;$GPGSV,3,2,11,05,38,205,,30,35,070,,24,19,256,,23,15,324,*7C&lt;br /&gt;$GPGSV,3,3,11,20,14,189,,18,10,286,,07,05,069,11,,,,*47&lt;br /&gt;$GLGSV,2,1,08,74,65,048,,72,64,140,23,75,54,209,,65,52,318,24*61&lt;br /&gt;$GLGSV,2,2,08,73,20,040,37,71,14,139,,82,12,004,30,81,08,319,28*6D&lt;br /&gt;GSA valid: yes. count: 2.&lt;br /&gt;$GNGSA,A,1,,,,,,,,,,,,,99.0,99.0,99.0*1E&lt;br /&gt;$GNGSA,A,1,,,,,,,,,,,,,99.0,99.0,99.0*1E&lt;br /&gt;GGA valid: yes.&lt;br /&gt;$GPGGA,194124.000,5051.76917,N,00422.58021,E,0,00,99.0,065.76,M,0.0,M,,*61&lt;br /&gt;RMC valid: yes.&lt;br /&gt;$GPRMC,194125.000,V,5051.76917,N,00422.58021,E,,,240724,,,N*7E&lt;/pre&gt;&lt;img src="https://community.element14.com/aggbug?PostID=28187&amp;AppID=7&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: C++ library for ST Teseo GPS - pt. 5: ready for a first (0.1) firmware release</title><link>https://community.element14.com/technologies/embedded/b/blog/posts/c-library-for-st-teseo-gps---pt-5-ready-for-a-first-firmware-release</link><pubDate>Sun, 21 Jul 2024 16:47:55 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:1811e809-d5c5-4adf-ac62-d15539ad92e2</guid><dc:creator>Jan Cumps</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Why I selected std::vector as container in this lib:&amp;nbsp;&lt;a id="" href="https://embeddedartistry.com/blog/2017/08/23/choosing-the-right-stl-container-general-rules-of-thumb/" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://embeddedartistry.com/blog/2017/08/23/choosing-the-right-stl-container-general-rules-of-thumb/&lt;/a&gt;&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=28187&amp;AppID=7&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: C++ library for ST Teseo GPS - pt. 5: ready for a first (0.1) firmware release</title><link>https://community.element14.com/technologies/embedded/b/blog/posts/c-library-for-st-teseo-gps---pt-5-ready-for-a-first-firmware-release</link><pubDate>Sun, 21 Jul 2024 14:45:29 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:1811e809-d5c5-4adf-ac62-d15539ad92e2</guid><dc:creator>Jan Cumps</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;With a few tweaks, it builds in the Arduino IDE too:&lt;/p&gt;
&lt;p&gt;&lt;img alt=" " height="382" src="/resized-image/__size/996x764/__key/commentfiles/f7d226abd59f475c9d224a79e3f0ec07-1811e809-d5c5-4adf-ac62-d15539ad92e2/pastedimage1721572809866v1.png" width="498" /&gt;&lt;/p&gt;
&lt;p&gt;I had to downgrade some C++ constructs that aren&amp;#39;t available in the GCC versions that ship with the IDE:&lt;/p&gt;
&lt;p&gt;This optional one I commented out for Arduino and other older toolchains. It&amp;#39;s a guard, not executable code.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[embed:dc8ab71f-3b98-42d9-b0f6-e21e02a0f8e2:5342357f-544f-4114-8410-20349a42c937:type=c_cpp&amp;text=%23ifdef%20__GNUC__%20%2F%2F%20this%20requires%20a%20recent%20version%20of%20GCC.%0D%0A%23if%20__GNUC_PREREQ%2810%2C0%29%0D%0A%20%20requires%20std%3A%3Ais_void%3CR%3E%3A%3Avalue%20%7C%7C%20std%3A%3Ais_arithmetic_v%3CR%3E%0D%0A%23endif%0D%0A%23endif%0D%0A]&lt;/p&gt;
&lt;p&gt;The std::string class in Arduino&amp;#39;s toolchain doesn&amp;#39;t support starts_with() yet. I replaced it (for older compilers) with a find().&amp;nbsp;My code&amp;nbsp;is not exactly the same, but will fit in this scenario.&lt;/p&gt;
&lt;p&gt;[embed:dc8ab71f-3b98-42d9-b0f6-e21e02a0f8e2:f96e4f56-6798-4694-a67d-a773640e2093:type=c_cpp&amp;text=%23ifdef%20__GNUC__%20%2F%2F%20this%20requires%20a%20recent%20version%20of%20GCC.%0D%0A%23if%20__GNUC_PREREQ%2810%2C0%29%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20valid%20%3D%20s.substr%28string_index%2C%20s.length%28%29%20-%20string_index%29.starts_with%28command.second%29%3B%0D%0A%23else%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20valid%20%3D%20%28s.substr%28string_index%2C%20s.length%28%29%20-%20string_index%29.find%28command.second%29%29%20%21%3D%20std%3A%3Astring%3A%3Anpos%3B%0D%0A%23endif%0D%0A%23endif]&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I&amp;#39;m not ready to test yet - I still have to write the reader and writer. But this is a good start.&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=28187&amp;AppID=7&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: C++ library for ST Teseo GPS - pt. 5: ready for a first (0.1) firmware release</title><link>https://community.element14.com/technologies/embedded/b/blog/posts/c-library-for-st-teseo-gps---pt-5-ready-for-a-first-firmware-release</link><pubDate>Sun, 21 Jul 2024 12:40:00 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:1811e809-d5c5-4adf-ac62-d15539ad92e2</guid><dc:creator>Jan Cumps</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;the&amp;nbsp;binary firmware is for I2C. If you want to run over UART:&lt;/p&gt;
&lt;p&gt;change the CMakeLists.txt. Comment out the I2C define, and uncomment the UART define:&lt;/p&gt;
&lt;div&gt;
&lt;pre&gt;&lt;span&gt;# select the communication protocol to talk to the Teseo GPS&lt;/span&gt;&lt;br /&gt;&lt;span&gt;add_compile_definitions(GPS_OVER_UART)&lt;/span&gt;&lt;br /&gt;&lt;span&gt;#add_compile_definitions(GPS_OVER_I2C)&lt;/span&gt;&lt;/pre&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;and rebuild using your usual Pico build workflow.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;&lt;img src="https://community.element14.com/aggbug?PostID=28187&amp;AppID=7&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: C++ library for ST Teseo GPS - pt. 5: ready for a first (0.1) firmware release</title><link>https://community.element14.com/technologies/embedded/b/blog/posts/c-library-for-st-teseo-gps---pt-5-ready-for-a-first-firmware-release</link><pubDate>Sun, 21 Jul 2024 11:53:50 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:1811e809-d5c5-4adf-ac62-d15539ad92e2</guid><dc:creator>shabaz</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Fantastic work on taming it. This now opens up all sorts of time and navigational projects!! This is a great reference to work with, for anyone using the ST Teseo products.&amp;nbsp;&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=28187&amp;AppID=7&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item></channel></rss>