Hi,

thanks for the offeer

I can help with the task of review and  integrating the code in NuttX if
you push it to github

Best regards
Alin

On Mon, 5 Dec 2022, 05:44 Alan C. Assis, <acas...@gmail.com> wrote:

> Hi Fotis,
>
> I think all the software you listed are interesting and are useful to
> the NuttX community.
>
> As suggestion I think you could put it available on github and help
> people to help clean it up and then submit a PR to NuttX.
>
> BR,
>
> Alan
>
> On 12/4/22, Fotis Panagiotopoulos <f.j.pa...@gmail.com> wrote:
> > Hello everyone!
> >
> > Christmas arrived a bit earlier for NuttX as I would like to donate some
> of
> > my personal code to the community!
> >
> > A bit of context.
> > Over the years that I am working on embedded systems, I have developed
> lots
> > of software that I use in my projects.
> > Some of it is quite general-purpose, or useful for other applications,
> and
> > I have found my self reusing it
> > quite often. In fact, there are some things that I use in practically all
> > firmwares that I have developed over
> > the last years.
> >
> > I always wanted to open-source this software so other people can benefit
> > from it.
> > But I never managed to do so. Open-sourcing needs some effort, the
> software
> > needs maintenance, documentation
> > and support, and most importantly in most cases a "porting layer" needs
> to
> > be developed.
> > Last but not least, every project needs a bit of "marketing" and
> > "advertising" so others can learn about
> > your work and use it.
> >
> > For the last couple of years I have been using NuttX a lot, and I have
> > ported most of the aforementioned software
> > to NuttX. I believe that NuttX and its community are perfect for me to
> > publish my code, instead of creating
> > a ton of small repos, of questionable usefulness and increasing my
> workload
> > considerably.
> >
> > It is very important that I can get immediate feedback from the
> community,
> > learn what people are actually
> > interested in (instead of investing on software that no one needs), and
> > provide actual and *working*
> > samples of the code (as NuttX already supports a ton of different boards
> > and arches).
> >
> > Using POSIX as the porting layer is also awesome.
> >
> > That being said, my free time is still exceptionally limited and I cannot
> > do this myself.
> > I still need the help of the community, and most importantly I need to
> see
> > interest in a piece of
> > software before putting any work on it.
> >
> > So, what I offer:
> > * I offer various codes, fully featured, production ready and tested.
> > * All code will be offered for free (of course) and under Apache
> licensing.
> > * I will provide support to those working on these codes, to my best
> > ability.
> > * I will contribute to testing everything integrated to NuttX, as
> hardware
> > availability allows me.
> > * I will do some licensing check, to ensure code is 100% original and
> mine,
> > or state the licenses of the projects I borrowed code from.
> >
> > What I ask for:
> > I need people that are interested in each of these codes to integrate
> them
> > into NuttX apps.
> > You just have to pick what it is interesting to you, contact me to
> provide
> > you with the code,
> > and integrate it to NuttX. You will need to:
> > * Add the code into the NuttX apps repo, and ensure Kconfig and the build
> > system use the code properly (should be trivial).
> > * Adapt the file format and the coding style to the NuttX one (this may
> > need some work, but it can also be automated).
> > * Provide an example app, something that someone can run to use or demo
> the
> > new code.
> > * Test and verify the example app on actual hardware (I may be able to
> > cross-check it on my hardware too).
> >
> > The code that I offer (for the moment):
> >
> >
> > *** Lua v5.2.4 ***
> > I know that there is already a Lua app for NuttX.
> > But for anyone using it, it may be beneficial to use my work.
> >
> > First and foremost, I have ported the eLua LTR patch to Lua 5.2. This
> patch
> > dramatically reduces the memory usage of Lua.
> > In fact, I found out that it is crucial to have this patch enabled for
> any
> > actual real-life usage of Lua on any "normal" MCU.
> >
> > I have created a Kconfig for all Lua configurations, so it can integrate
> > with NuttX better.
> >
> > I have also made some other minor changes to the code that might be
> > interesting for you.
> > For example there is a simplistic sandboxing option.
> >
> >
> > *** MQTT Broker ***
> > Yes, a full-blown, spec-compliant MQTT Broker!
> > To my knowledge there is no other open-source and portable MQTT broker
> for
> > embedded systems.
> >
> > It follows the MQTT v3.1.1 specification as closely as possible. I think
> > there is only one violation, needed due to its embedded nature,
> > but in all practical cases you may consider it fully compliant.
> >
> > It has been tested with dozens of devices, and it performs greatly.
> > There are a couple of things that may need to be improved, but are
> trivial,
> > and will not affect the normal use of the software.
> >
> > I know that such a broker may not be your best option for a proper and
> > large installation of IoT devices, but it is exceptionally useful
> > for at least the following cases:
> > * You have only a few devices, isolated (no internet), that you need to
> > connect, and you want to avoid the cost (and maintenance) of a proper
> > broker (e.g. Raspberry Pi).
> > * You need to directly communicate with a device that only supports MQTT.
> > Instead of going through an external server, you run the server locally,
> > and communicate with the device directly.
> >
> >
> > *** MQTT Client ***
> > A production-tested, robust and quite flexible MQTT client.
> >
> > I know that there are plenty of such clients available out there, but
> here
> > is another one.
> >
> > Back in the day I tried to use the Eclipse Paho library. I found it to
> be a
> > horrible piece of software. Crashes, buffer overflows, spec violations,
> > missing functionality and more.
> > I don't know whether it has improved now, but back then I rolled-out my
> own
> > implementation. There were not many other alternatives available, and
> Paho
> > did not worth contributing to it.
> > It needed so much work, that starting from scratch was much easier.
> >
> > Then, when I started using NuttX, I saw support for MQTT-C. Well, I tried
> > it and I wasn't greatly satisfied (I don't remember the reasons).
> > So I decided to keep using my own (and well tested) implementation.
> >
> > So NuttX, instead of relying on an external project, now can have its own
> > client.
> >
> >
> > *** Settings Storage ***
> > This is probably my favorite.
> > A key-value pairs storage for non-volatile settings or configurations.
> > Very needed when you need to adjust the system's operation in run-time,
> > download parameters etc.
> >
> > It acts in two layers: the settings API and the actual storages used.
> >
> > The settings can store or retrieve key-value pairs.
> > Type casts are supported and are performed automatically. For example you
> > can store the string "true" and then read it as the int 1 etc.
> > There is support for caching writes (minimizing overhead and reducing
> wear
> > on the actual storage medium).
> > There are signal notifications when a setting value is changed.
> >
> > The bottom layer, the storages, is responsible for actually reading and
> > writing the settings map to the physical mediums.
> > Every storage can also format the data according to its type.
> > For the moment there are only ASCII and binary storages, but it would be
> > very easy to expand this to JSON, XML, YAML and more.
> > There is support for multiple storages used simultaneously, and
> > synchronization between them (for example I usually use both the MCU's
> > Flash and the SD card).
> >
> >
> > *** FTP Client ***
> > This is a client that I had developed before I learned about NuttX.
> > I also tried NuttX FTPc, but I experienced may failures that I never got
> > the time to troubleshoot. I just went back to the tried solution.
> > One thing that I didn't really like in NuttX ftpc, it was that it is very
> > taciturn. When something went wrong, you couldn't understand what the
> issue
> > is.
> > The error information of this library is a bit better.
> >
> > If an alternative ftpc implementation is of interest to anyone, the code
> is
> > available.
> >
> >
> > *** JSON Parser ***
> > This is a very minimal parse-only JSON implementation.
> >
> > The motivation behind developing this was memory consumption.
> > This parser can open an arbitrarily large JSON file (even MBs), using
> only
> > a few bytes of RAM!
> > (If I recall correctly only 20 bytes!)
> >
> > Although there are other options there for you, if you need the smallest
> > possible memory footprint, this is your parser.
> >
> >
> > *** XML Parser ***
> > Exactly as above with JSON.
> > A minimal parser, that can open any file using just a few bytes of RAM.
> >
> > If you need something simple or you have memory constraints, use this.
> >
> >
> > *** XTEA ***
> > Simple XTEA encryption and decryption.
> > Very useful when you need a quite fast way to encrypt (or obscure) some
> > data.
> > (Need to check licensing!)
> >
> >
> > *** Sun Calculations ***
> > A small library that can do astronomical calculations for the sun.
> > That is sunrise time, sunset, day duration and more.
> >
> >
> > *** Geolocation ***
> > I used the ipgeolocation.io API and NuttX wget to get geolocation
> > information about the device.
> > Nothing special, but it may serve as a working example, or even
> inspiration
> > for others...
> >
> >
> > If everyone is interested in any of the above please contact me.
> >
> > *PLEASE be responsible, and respectful.* (I am sure you will! :D )
> > If you request for a piece of software* you will have to help to get this
> > into NuttX, and not only use it for your own personal gain*.
> >
>

Reply via email to