Awesome
microReticulum
Port of Reticulum Network Stack to C++ specifically but not exclusively targeting 32-bit and better MCUs.
Dependencies
Build environment is configured for use in VSCode and PlatformIO.
This API is dependent on the following external libraries:
Building
Building and uploading to hardware is simple through the VSCode PlatformIO IDE
- Install VSCode and PlatformIO
- Clone this repo
- Lanch PlatformIO and load repo
- In PlatformIO, select the environment for intended board
- Build, Upload, and Monitor to observe application logging
Instructions for command line builds and building of individual example applications coming soon.
Roadmap
- Framework for simple C++ API that mimics Python reference implementation with implicit object sharing
- Utility class to efficiently handle byte buffers
- Implemenmtat basic Identity, Destination and Packet
- Successful testing of Announce mechanism
- Implement Ed2551 public-key signature and X25519 key exchange
- Implement encryption including AES, AES-CBC, HKDF, HMAC, PKCS7, and Fernet
- Successful testing of Packet encrypt/decrypt/sign/prof
- Implement dynamic Interfaces
- Implement UDP Interface for testing against Python reference Reticulum instances
- Implement basic Transport functionality
- Successful testing of end-to-end Path Finding
- Implement persistence for storage of runtime data structures (config, identities, routing tables, etc.)
- Support for Links and Resources in Transport
- Implement Packet proofs
- Successful testing of Transport of both Packets and Links
- Implement memory management appropriate for memory constricted MCUs
- Implement Link, Resource
- Implement Channel and Buffer
- Add example applications utilizing the C++ API
- Configure PlatformIO to easily build and upload test applications to board
- Add build tagets for all boards currently supported by RNode
- Implement new combination caching/storage manager for managing persistent data
Please open an Issue if you have trouble building ior using the API, and feel free to start a new Discussion for anything else.