You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Bugs can happen in any product, and software is no exception. If you come across an issue, it's best to report it as soon as possible so we can fix it. The first step is to create a new issue on
When filling out the issue description, try to be as detailed as possible. The more relevant information you provide, the faster and more efficiently we can investigate and resolve the problem. You don’t need to share your entire project’s source code—just narrow it down to the part that’s causing the issue. If you can include a minimal code snippet that reproduces the problem, that would be incredibly helpful!
7
+
8
+
Also, don’t forget to mention your setup: which environment you're working in, what microcontroller you’re using, and which compiler you’re working with. Try to document the issue in a way that would make it easy for someone else (or even yourself, later) to reproduce it based on your description.
This section is for those fearless terminal ninjas who want to contribute to improving this system. First of all, we want to say a huge **thank you** for taking the time to make this software better and better!
6
+
7
+
To ensure that this shared adventure is a fun and productive challenge for everyone, we have a few simple guidelines:
8
+
9
+
-**Be respectful and constructive** – Everyone starts somewhere, and we value all contributions, whether big or small. Keep discussions friendly and helpful.
10
+
-**Clear and concise communication** – When reporting issues or submitting code, provide useful details that make it easy for others to understand and help.
11
+
-**Follow the coding style** – Consistency is key. Try to adhere to existing conventions in the project to keep the codebase clean and maintainable.
12
+
-**Write meaningful commit messages** – A good commit message helps others understand *why* a change was made, not just *what* changed.
13
+
-**Be open to feedback** – Code reviews aren’t about criticism; they’re about making the project stronger. Let’s help each other improve!
14
+
-**Keep it fun!** – At the end of the day, we’re all here to learn, build cool things, and collaborate. Let’s make this a positive space for everyone.
15
+
16
+
### Necessary Tools
17
+
18
+
Now that we’ve got that covered, let’s dive in! To start developing, you’ll need a few extra tools:
19
+
-[Git](https://git-scm.com/) - Any Git client works, but we recommend [GitHub Desktop](https://desktop.github.com/download/)
20
+
-[Visual Studio Code](https://code.visualstudio.com/) - We love this code editor
21
+
-[Doxygen](https://www.doxygen.nl/) - This builds the whole html documentation. You will need at least __version 1.9.5__
## Commander-API & Shellminator: A Perfect Duo for Embedded Terminals
4
+
5
+
Commander-API has been developed alongside Shellminator for many years. Together, these two software packages allow you to create an interactive terminal on low-power processors. While both projects work independently, documenting the same features twice would have been redundant. That’s why the documentation for Commander-API can be found within the Shellminator documentation.
It's always great when questions arise in connection with such a project. Based on the experiences of recent years, we've gathered a few questions that many have asked, and we've tried to provide short, concise answers for each. If you need more information beyond these, feel free to ask on the [GitHub Discussions](https://github.com/dani007200964/Commander-API/discussions) platform.
5
+
6
+
💡 *Can I use Commander-API without Shellminator to save resources?*
7
+
Absolutely! The `basic.ino` example demonstrates this. However, keep in mind that without Shellminator, you lose features like interactive editing and command history. If you really need to save resources, you can go this route—but only if a reduced user experience isn’t a concern.
8
+
9
+
💡 *Does it work on other platforms without the Arduino environment?*
10
+
Yes! We’ve been using it with STM32 for a long time without any issues. There’s even a guide in the Shellminator documentation on how to integrate it into an STM32 environment.
11
+
12
+
💡 *Why does dynamic memory run out so quickly on AVR controllers?*
13
+
This is a complex issue. AVR controllers don’t have a unified memory bus, meaning they can’t directly access data from flash memory. As a result, even `const char*` strings end up in dynamic memory. There are two ways to handle this: keep command descriptions short or use AVR-specific memory handling techniques.
14
+
15
+
💡 *Does it only work with Serial?*
16
+
Nope! You can use any channel derived from the `Stream` class. With Shellminator, you can even use TCP, WebSocket, or BLE for communication.
Before we get started with anything, we need to install this software package into our preferred development environment. We've gathered the most popular development environments and prepared a short guide for you to ensure a smooth start to this adventure.
6
+
7
+
## Terminal Emulator Software
8
+
9
+
## Arduino Installation
10
+
11
+
Let's start with the installation guide for the Arduino environment, as we believe this is the simplest one of all. First, you will need the
12
+
[Arduino IDE](https://www.arduino.cc/en/software). This software is the heart of the Arduino ecosystem. Next, you'll need an Arduino board that has enough resources to meet your goals.
13
+
14
+
To help you find the most suitable board, we've created a table for you to easily choose one.
15
+
16
+
If you're just getting acquainted with this software, we recommend choosing a slightly more modern microcontroller, such as the Raspberry Pi Pico or the ESP32. We suggest this because these platforms have much more memory than, for example, an older Arduino Nano. This extra memory allows you to try out all the functions without needing to optimize right away. We're offering this friendly advice to help you avoid any additional distractions while you're learning.
17
+
18
+
Once you've installed the Arduino IDE, the next task is to install Commander-API. You can find detailed instructions
Please make sure to always strive for using the latest version to ensure you have the most stable version on your computer.
21
+
22
+
## Arduino Installation Manually
23
+
24
+
There are, unfortunately, times when the Library Manager is not available. This can happen for various reasons, such as wanting to install the library offline, or working in a corporate environment where the paths used by the Arduino IDE for installation are blocked. But don't worry! The libraries can still be installed in these situations, please follow the instructions from [here](https://docs.arduino.cc/software/ide-v1/tutorials/installing-libraries/).
## A Lightweight Command Interpreter for Microcontrollers
4
+
5
+
Commander-API is a command interpreter designed for microcontrollers with limited resources. It runs on almost any microcontroller, whether old or new.
6
+
7
+
### So, what’s it good for?
8
+
Essentially, it gives you a functionality similar to a command-line interface on a desktop computer. You can create commands and easily link them to specific functions in your code. The main motivation behind this project was to eliminate the need to constantly recompile and upload your code during development. Instead, you can define diagnostic and testing commands that are dynamically available at runtime.
9
+
10
+
But that’s not all! Commander-API also supports arguments, allowing you to create parameterized commands. This makes your development workflow much more flexible and powerful.
11
+
12
+
In addition to handling commands and arguments, Commander-API can also manage environment variables. This lets you store and retrieve settings dynamically, making your system even more flexible and adaptable.
13
+
14
+
## Just a few lines of code and it is done!
15
+
16
+
```cpp
17
+
#include"Commander-API.hpp"
18
+
19
+
#defineCOMMAND_SIZE 30
20
+
21
+
// We have to create an object from Commander class.
0 commit comments