<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.9.3">Jekyll</generator><link href="https://jlaning.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://jlaning.com/" rel="alternate" type="text/html" /><updated>2023-05-14T13:44:00+00:00</updated><id>https://jlaning.com/feed.xml</id><title type="html">Jesse C Laning</title><subtitle>I program and things</subtitle><entry><title type="html">cr2</title><link href="https://jlaning.com/cr2/" rel="alternate" type="text/html" title="cr2" /><published>2020-09-04T00:00:00+00:00</published><updated>2020-09-04T00:00:00+00:00</updated><id>https://jlaning.com/cr2</id><content type="html" xml:base="https://jlaning.com/cr2/">&lt;p&gt;&lt;a href=&quot;https://github.com/jamolnng/cr2&quot;&gt;# cr2&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;C RISCV RTOS&lt;/p&gt;

&lt;p&gt;Currently being developed for the FE310 on the SiFive HiFive1 Rev. B board.&lt;/p&gt;

&lt;p&gt;This is mostly meant for educational purposes&lt;/p&gt;

&lt;p&gt;Honestly the best thing to come out of this is the runtime environment set up. It works for c and c++&lt;/p&gt;</content><author><name>jesselaning</name></author><category term="project" /><category term="project" /><summary type="html"># cr2</summary></entry><entry><title type="html">argparse.h</title><link href="https://jlaning.com/argparse/" rel="alternate" type="text/html" title="argparse.h" /><published>2019-05-26T00:00:00+00:00</published><updated>2019-05-26T00:00:00+00:00</updated><id>https://jlaning.com/argparse</id><content type="html" xml:base="https://jlaning.com/argparse/">&lt;p&gt;A simple header only command line argument parser&lt;/p&gt;

&lt;p&gt;You can follow the project’s Github page &lt;a href=&quot;https://github.com/jamolnng/argparse&quot;&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th style=&quot;text-align: center&quot;&gt;Master&lt;/th&gt;
      &lt;th style=&quot;text-align: center&quot;&gt;Develop&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;&lt;a href=&quot;https://travis-ci.com/jamolnng/argparse&quot;&gt;&lt;img src=&quot;https://travis-ci.com/jamolnng/argparse.svg?branch=master&quot; alt=&quot;Build Status&quot; /&gt;&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;&lt;a href=&quot;https://travis-ci.com/jamolnng/argparse&quot;&gt;&lt;img src=&quot;https://travis-ci.com/jamolnng/argparse.svg?branch=develop&quot; alt=&quot;Build Status&quot; /&gt;&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2 id=&quot;table-of-contents&quot;&gt;Table of Contents&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;#Building-With-Git-and-CMake&quot;&gt;Building With Git and CMake&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#build-make&quot;&gt;Make&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#build-vscode&quot;&gt;VSCode and CMake Tools&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#build-vsc&quot;&gt;Visual Studio&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#Usage&quot;&gt;Usage&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#Running-Tests&quot;&gt;Running Tests&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#test-make&quot;&gt;Make&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#test-vscode&quot;&gt;VSCode and CMake Tools&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#test-vsc&quot;&gt;Visual Studio&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#Contributing&quot;&gt;Contributing&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#License&quot;&gt;License&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;building-with-git-and-cmake&quot;&gt;Building With Git and CMake&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://git-scm.com&quot;&gt;Git&lt;/a&gt; and &lt;a href=&quot;https://cmake.org/&quot;&gt;CMake&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;make&quot;&gt;&lt;a name=&quot;build-make&quot;&gt;&lt;/a&gt;Make&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://www.gnu.org/software/make/&quot;&gt;Make&lt;/a&gt;&lt;/p&gt;
&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;git clone https://github.com/jamolnng/argparse.git
&lt;span class=&quot;nb&quot;&gt;cd &lt;/span&gt;argparse
&lt;span class=&quot;nb&quot;&gt;mkdir &lt;/span&gt;build &lt;span class=&quot;o&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;cd &lt;/span&gt;build
cmake ..
make
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;vscode-and-cmake-tools&quot;&gt;&lt;a name=&quot;build-vscode&quot;&gt;&lt;/a&gt;VSCode and CMake Tools&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://code.visualstudio.com/&quot;&gt;VSCode&lt;/a&gt; and &lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools&quot;&gt;CMake Tools extension&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;TODO&lt;/p&gt;
&lt;h3 id=&quot;visual-studio&quot;&gt;&lt;a name=&quot;build-vsc&quot;&gt;&lt;/a&gt;Visual Studio&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://visualstudio.microsoft.com/vs/community/&quot;&gt;Visual Studio Community&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;TODO&lt;/p&gt;
&lt;h2 id=&quot;usage&quot;&gt;Usage&lt;/h2&gt;
&lt;div class=&quot;language-cpp highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;cp&quot;&gt;#include &quot;argparse.h&quot;
&lt;/span&gt;
&lt;span class=&quot;cp&quot;&gt;#include &amp;lt;iostream&amp;gt;
&lt;/span&gt;
&lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;argc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;char&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;argv&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[])&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;ArgumentParser&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;parser&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Argument parser example&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;parser&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;add_argument&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;-v&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;             &lt;span class=&quot;c1&quot;&gt;// short argument&lt;/span&gt;
                      &lt;span class=&quot;s&quot;&gt;&quot;--verbose&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;      &lt;span class=&quot;c1&quot;&gt;// long argument&lt;/span&gt;
                      &lt;span class=&quot;s&quot;&gt;&quot;Verbose level&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;  &lt;span class=&quot;c1&quot;&gt;// description&lt;/span&gt;
                      &lt;span class=&quot;nb&quot;&gt;false&lt;/span&gt;             &lt;span class=&quot;c1&quot;&gt;// is required&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;parser&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;parse&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;argc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;argv&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;

  &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;parser&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;exists&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;verbose&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;switch&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;parser&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;verbose&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;k&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;std&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;cout&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;an even more verbose string&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;std&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;endl&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;k&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;std&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;cout&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;a verbose string&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;std&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;endl&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;nl&quot;&gt;default:&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;std&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;cout&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;some verbosity&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;std&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;endl&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Example output:&lt;/p&gt;
&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; program &lt;span class=&quot;nt&quot;&gt;-v&lt;/span&gt; 2
an even more verbose string
a verbose string
some verbosity
&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; program &lt;span class=&quot;nt&quot;&gt;--verbose&lt;/span&gt;
some verbosity
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;running-tests&quot;&gt;Running Tests&lt;/h2&gt;
&lt;h3 id=&quot;make-1&quot;&gt;&lt;a name=&quot;test-make&quot;&gt;&lt;/a&gt;Make&lt;/h3&gt;
&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;make &lt;span class=&quot;nb&quot;&gt;test&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;###&lt;/p&gt;
&lt;h3 id=&quot;vscode-and-cmake-tools-1&quot;&gt;&lt;a name=&quot;test-vscode&quot;&gt;&lt;/a&gt;VSCode and CMake Tools&lt;/h3&gt;
&lt;p&gt;TODO&lt;/p&gt;
&lt;h3 id=&quot;visual-studio-1&quot;&gt;&lt;a name=&quot;test-vsc&quot;&gt;&lt;/a&gt;Visual Studio&lt;/h3&gt;
&lt;p&gt;TODO&lt;/p&gt;

&lt;h2 id=&quot;contributing&quot;&gt;Contributing&lt;/h2&gt;
&lt;p&gt;Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.&lt;/p&gt;

&lt;p&gt;Please make sure to update tests as appropriate.&lt;/p&gt;

&lt;h2 id=&quot;license&quot;&gt;License&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/jamolnng/argparse/blob/master/LICENSE&quot;&gt;GNU General Public License v3.0&lt;/a&gt;&lt;/p&gt;</content><author><name>jesselaning</name></author><category term="project" /><category term="project" /><summary type="html">A simple header only command line argument parser</summary></entry><entry><title type="html">Open Source Smart Watch</title><link href="https://jlaning.com/Open-Source-Smart-Watch/" rel="alternate" type="text/html" title="Open Source Smart Watch" /><published>2017-12-09T00:00:00+00:00</published><updated>2017-12-09T00:00:00+00:00</updated><id>https://jlaning.com/Open-Source-Smart-Watch</id><content type="html" xml:base="https://jlaning.com/Open-Source-Smart-Watch/">&lt;p&gt;The original inspiration for this project came from Jared Sanson here &lt;a href=&quot;http://jared.geek.nz/2014/jul/oshw-oled-watch&quot;&gt;http://jared.geek.nz/2014/jul/oshw-oled-watch&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is my attempt at creating a “smart” watch, however it will only be as smart as I make it so we’ll see how well I do.&lt;/p&gt;

&lt;p&gt;You can follow the project’s Github page &lt;a href=&quot;https://github.com/jamolnng/Smart-Watch-V1&quot;&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The processor I chose is in the PIC32MZ EF family, specifically the &lt;a href=&quot;http://www.microchip.com/wwwproducts/en/PIC32MZ2048EFG064&quot;&gt;PIC32MZ2048EFG064&lt;/a&gt;
I had several reasons for choosing it. A big one was its large, for a microcontroller, amount of program memory and RAM. My goal is to be able to use &lt;a href=&quot;https://micropython.org/&quot;&gt;MicroPhyton&lt;/a&gt; to write apps but I’m not 100% sure I will be able to without adding a RAM chip. I also chose it because it can act as a USB device such as a mass storage device that I can just plug into my computer and transfer the python scrips over. The chip also has a parallel master port which makes it easy to control a compatable LCD. There are plenty of great things about this chip, its a beast. It’s price is pretty large though at about $11 USD but since this is a one off design I’m not too concerned.&lt;/p&gt;

&lt;h1 id=&quot;planned-features&quot;&gt;Planned Features&lt;/h1&gt;

&lt;ul&gt;
  &lt;li&gt;1.8 inch 128x160 RGB LCD&lt;/li&gt;
  &lt;li&gt;Real time clock (it’s built into the main processor)&lt;/li&gt;
  &lt;li&gt;Bluetooth communication with phone, hopefully sync notifications and be able to answer calls however there are no plans for a mic on the watch itself&lt;/li&gt;
  &lt;li&gt;USB HID/Mass storage communication for easy programming of apps&lt;/li&gt;
  &lt;li&gt;400-500mAh battery with 500mA charging circuit&lt;/li&gt;
  &lt;li&gt;Accelerometer&lt;/li&gt;
  &lt;li&gt;Magnemometer&lt;/li&gt;
  &lt;li&gt;Single/Double tap sensor for tap to wake&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;hardware&quot;&gt;Hardware&lt;/h1&gt;
&lt;p&gt;This is the current schematic, I’m finalizing the design and trying to make sure I haven’t made any mistake (but I probably have)&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/jamolnng/Smart-Watch-V1/master/Hardware/Schematics/SmartWatchSchematic.png&quot; alt=&quot;Schematic&quot; /&gt;&lt;/p&gt;</content><author><name>jesselaning</name></author><category term="project" /><category term="project" /><summary type="html">The original inspiration for this project came from Jared Sanson here http://jared.geek.nz/2014/jul/oshw-oled-watch</summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://jlaning.com/assets/images/projects/Smart-Watch/oshw-logo-800-px.png" /><media:content medium="image" url="http://jlaning.com/assets/images/projects/Smart-Watch/oshw-logo-800-px.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Blog Update 2017-05-30</title><link href="https://jlaning.com/Blog-Update-2017-05-30/" rel="alternate" type="text/html" title="Blog Update 2017-05-30" /><published>2017-05-30T00:00:00+00:00</published><updated>2017-05-30T00:00:00+00:00</updated><id>https://jlaning.com/Blog-Update-2017-05-30</id><content type="html" xml:base="https://jlaning.com/Blog-Update-2017-05-30/">&lt;p&gt;I have updated the theme to my blog and will hopefully keep it more updated than I have been (but probably not). I will try to add more posts along with using it as sort of an online portfolio.&lt;/p&gt;</content><author><name>jesselaning</name></author><category term="blog" /><category term="blog-update" /><summary type="html">I have updated the theme to my blog and will hopefully keep it more updated than I have been (but probably not). I will try to add more posts along with using it as sort of an online portfolio.</summary></entry></feed>