<div dir="ltr">Jon, none of what you are talking about is in the GitHub README file where it says it's buffering code. The external docs, after looking at them, hardly mention buffering at all, so there's a definite misunderstanding if one only reads the README. They need to put a bit more info in the README.<div><br><div>With 'amazon.ion' there is no encoding or decoding as it would be in 'nanopb', you just pull data out of the user-defined structure, maybe this is what you mean when you say it's "self describing". JSON is just keywords and values and/or a list of items, that's it.</div><div>JSON is an acronym for JavaScript Object Notation because this is where the format was first created, however, it almost directly matches how the internals of Python works also, so it can be parsed with Python extremely easily.</div><div><br></div><div>~Carl</div></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Nov 22, 2021 at 1:56 PM Jon Wolfe <<a href="mailto:jonjwolfe@anibit.com">jonjwolfe@anibit.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
  
    
  
  <div>
    <p>Carl, that is not correct. I have worked with nanopb specifically
      with two micros passing data encoded with nanopb over UART and
      I2C. Also, I'm 99.9% certain that the on-the-wire format used by
      nanopb is compatible with the mainstream protocol buffers format
      used on desktop/servers. I've used the full protocol buffers
      libraries for both communication over sockets and for serializing
      data structures to disk on PC. <br>
    </p>
    <p>nanopb does not deal directly with the transport of the data (eg
      UART, I2C, or sockets), it just can convert a data structure back
      and forth from a block of bytes. What you do with that block of
      bytes is up to you. It's my understanding that that is pretty much
      what the Amazon library does as well. <br>
    </p>
    <p>The main difference from my brief reading about Ion as that it's
      "self describing" where the data contains a description of itself.
      Protobuf doesn't do that, but you share ".proto" files between
      both sides and the protoc compiler generates wrapper code in the
      language you're using. It has capability to handle backward
      compatibility, so you can modify the data structures, but both
      sides do need to have some basic idea about the structure, it's
      not inherent to the data stream. Proto bufs let you have a
      strongly typed contract on both ends of a communication channel,
      and it sounds like Amazon Ion lets you have that contract more
      loosely defined. <br>
    </p>
    <p>The main Protocol Buffers project has a companion project called
      GRPC that builds on top of Protocol Buffers and is geared toward
      "client server" communications. That library does handle the
      transport of data as well as the packaging of it. It generates
      server and client code for you to handle the transport. Think of
      that like REST, but with a binary format and strongly typed
      contract. <br>
    </p>
    <p><br>
    </p>
    <div>On 11/22/2021 1:37 PM, Carl Nobile via
      TriEmbed wrote:<br>
    </div>
    <blockquote type="cite">
      
      <div dir="ltr">So the two packages mentioned in this thread do not
        do the same thing and cannot replace each other.
        <div>The 'amason.ion' package is a data format structure
          implemented using JSON, whereas 'nanopb' is a buffering system
          specifically for microcontrollers. In other words, 'nanopb'
          CANNOT be sent over a wire protocol where amazon.ion can be.</div>
        <div>Interestingly they can be used together where amazon.ion
          can be buffered by 'nanopb' which may help with larger
          'amazon.ion' data packets.</div>
        <div>~Carl</div>
        <div><br>
        </div>
      </div>
      <br>
      <div class="gmail_quote">
        <div dir="ltr" class="gmail_attr">On Mon, Nov 22, 2021 at 11:30
          AM Peter Soper via TriEmbed <<a href="mailto:triembed@triembed.org" target="_blank">triembed@triembed.org</a>>
          wrote:<br>
        </div>
        <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
          <div> <span style="font-family:monospace">Nanopb looks way
              cool. Thanks!</span> <br>
          </div>
          _______________________________________________<br>
          Triangle, NC Embedded Computing mailing list<br>
          <br>
          To post message: <a href="mailto:TriEmbed@triembed.org" target="_blank">TriEmbed@triembed.org</a><br>
          List info: <a href="http://mail.triembed.org/mailman/listinfo/triembed_triembed.org" rel="noreferrer" target="_blank">http://mail.triembed.org/mailman/listinfo/triembed_triembed.org</a><br>
          TriEmbed web site: <a href="http://TriEmbed.org" rel="noreferrer" target="_blank">http://TriEmbed.org</a><br>
          To unsubscribe, click link and send a blank message: mailto:<a href="mailto:unsubscribe-TriEmbed@bitser.net" target="_blank">unsubscribe-TriEmbed@bitser.net</a>?subject=unsubscribe<br>
          <br>
        </blockquote>
      </div>
      <br clear="all">
      <div><br>
      </div>
      -- <br>
      <div dir="ltr">
        <div dir="ltr">--------------------------------------------------------------<br>
          Carl J. Nobile (Software Engineer/API Design)<br>
          <a href="mailto:carl.nobile@gmail.com" target="_blank">carl.nobile@gmail.com</a><br>
          --------------------------------------------------------------</div>
      </div>
      <br>
      <fieldset></fieldset>
      <pre>_______________________________________________
Triangle, NC Embedded Computing mailing list

To post message: <a href="mailto:TriEmbed@triembed.org" target="_blank">TriEmbed@triembed.org</a>
List info: <a href="http://mail.triembed.org/mailman/listinfo/triembed_triembed.org" target="_blank">http://mail.triembed.org/mailman/listinfo/triembed_triembed.org</a>
TriEmbed web site: <a href="http://TriEmbed.org" target="_blank">http://TriEmbed.org</a>
To unsubscribe, click link and send a blank message: <a href="mailto:unsubscribe-TriEmbed@bitser.net?subject=unsubscribe" target="_blank">mailto:unsubscribe-TriEmbed@bitser.net?subject=unsubscribe</a>

</pre>
    </blockquote>
  </div>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr">--------------------------------------------------------------<br>Carl J. Nobile (Software Engineer/API Design)<br><a href="mailto:carl.nobile@gmail.com" target="_blank">carl.nobile@gmail.com</a><br>--------------------------------------------------------------</div></div>