korginc/nts-1-customizations

Integrate Espressif ESP32 implementation of the library

eudes opened this issue · 0 comments

eudes commented

Hello!

I've been working on an implementation of the NTS-1 C interface for the Espressif ESP32. It needs still needs polishing, but it is mostly working as a feature-complete replacement for the ESP32 IDF framework.

Would there be any interest in merging the implementation into the official repository?

Some more context

I started it as a fork of this project, and it reuses most of the code, only diverging for the init and idle phases, and in the way it communicates with the MCU's SPI peripheral. In the process of separating the STM32-specific code from the rest, I managed to carve out a clear API on which to base my framework-dependent implementation. This API, I think, provides a great deal of support anyone trying to implement the library for other frameworks/MCUs, as it provides a clear division between those parts of the code that are specific to an architecture, and those that aren't and can be reused.

I'm no expert in embedded programming, or C for that matter, so I'll be more than open to any suggestions or advice that might arise in the process.

As I said, I just finished making it work and I'll be polishing kinks and testing it more thoroughly, but I thought, given that there's not much activity in this repo, that it would be good to ask early.

The code

I'm working on it at https://github.com/eudes/nts-1-customizations. This is the ESP32-specific code. I've added many comments to the original STM32, but the actual code is the same.

I also created a library.json file to make it easier to use with platformio.

There's a sample project that uses the implementation here: https://github.com/eudes/korg-nts1-esp32. This one is more liable to change over time as I'm using it for testing and documenting the process. It might also be nice, for people trying to port the library to other platforms, to have some of the details there incorporated into the official documentation. I know there's a mention in this repo of "more details about the communication protocol will be released at a later date", but in the meantime it could serve as a helping hand.