Skip to content

Commit 544ac5c

Browse files
committed
Merge branch 'dev'
2 parents 5c708e4 + 39cd7a1 commit 544ac5c

File tree

842 files changed

+4536
-49617
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

842 files changed

+4536
-49617
lines changed

.github/workflows/compile-examples.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
on:
2-
- push
3-
- pull_request
2+
# - push
3+
# - pull_request
4+
- workflow_dispatch
45

56
jobs:
67
compile-examples:

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
build/*
2+
docs/*

.gitmodules

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
[submodule "docs/Style/doxygen-awesome-css"]
2+
path = docs/Style/doxygen-awesome-css
3+
url = https://github.com/jothepro/doxygen-awesome-css.git
4+
[submodule "extras/doxygen-awesome-css"]
5+
path = extras/doxygen-awesome-css
6+
url = https://github.com/jothepro/doxygen-awesome-css.git

.vscode/settings.json

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"files.associations": {
3+
"*.example": "cpp",
4+
"type_traits": "cpp",
5+
"xtr1common": "cpp",
6+
"compare": "cpp",
7+
"utility": "cpp",
8+
"xutility": "cpp",
9+
"cmath": "cpp",
10+
"initializer_list": "cpp",
11+
"xstring": "cpp",
12+
"xlocale": "cpp",
13+
"ios": "cpp",
14+
"xmemory": "cpp",
15+
"system_error": "cpp",
16+
"typeinfo": "cpp"
17+
},
18+
"C_Cpp.errorSquiggles": "disabled"
19+
}

Doxyfile

Lines changed: 27 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -48,27 +48,27 @@ PROJECT_NAME = Commander-API
4848
# could be handy for archiving the generated documentation or if some version
4949
# control system is used.
5050

51-
PROJECT_NUMBER = V2.1.0
51+
PROJECT_NUMBER = V3.0.0
5252

5353
# Using the PROJECT_BRIEF tag one can provide an optional one line description
5454
# for a project that appears at the top of each page and should give viewer a
5555
# quick idea about the purpose of the project. Keep the description short.
5656

57-
PROJECT_BRIEF = "Simple Command Parser"
57+
PROJECT_BRIEF = "Lightweight Command Parser"
5858

5959
# With the PROJECT_LOGO tag one can specify a logo or an icon that is included
6060
# in the documentation. The maximum height of the logo should not exceed 55
6161
# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
6262
# the logo to the output directory.
6363

64-
PROJECT_LOGO = docs/images/logo.svg
64+
PROJECT_LOGO = C:/Users/dani0/Documents/Arduino/libraries/Commander-API/extras/Assets/logo.svg
6565

6666
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
6767
# into which the generated documentation will be written. If a relative path is
6868
# entered, it will be relative to the location where doxygen was started. If
6969
# left blank the current directory will be used.
7070

71-
OUTPUT_DIRECTORY = docs
71+
OUTPUT_DIRECTORY = ../CommanderDocs/
7272

7373
# If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096
7474
# sub-directories (in 2 levels) under the output directory of each output format
@@ -342,7 +342,7 @@ OPTIMIZE_OUTPUT_SLICE = NO
342342
#
343343
# Note see also the list of default file extension mappings.
344344

345-
EXTENSION_MAPPING =
345+
EXTENSION_MAPPING = ino=cpp
346346

347347
# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
348348
# according to the Markdown format, which allows for more readable
@@ -795,7 +795,7 @@ FILE_VERSION_FILTER =
795795
# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
796796
# tag is left empty.
797797

798-
LAYOUT_FILE =
798+
LAYOUT_FILE = extras/Assets/DoxygenLayout.xml
799799

800800
# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
801801
# the reference definitions. This must be a list of .bib files. The .bib
@@ -909,7 +909,7 @@ WARN_LOGFILE =
909909
# Note: If this tag is empty the current directory is searched.
910910

911911
INPUT = src \
912-
docs/markdown_pages
912+
extras/Assets/DocuPages
913913

914914
# This tag can be used to specify the character encoding of the source files
915915
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
@@ -1057,13 +1057,13 @@ EXAMPLE_PATTERNS = *
10571057
# irrespective of the value of the RECURSIVE tag.
10581058
# The default value is: NO.
10591059

1060-
EXAMPLE_RECURSIVE = NO
1060+
EXAMPLE_RECURSIVE = YES
10611061

10621062
# The IMAGE_PATH tag can be used to specify one or more files or directories
10631063
# that contain images that are to be included in the documentation (see the
10641064
# \image command).
10651065

1066-
IMAGE_PATH = docs/images
1066+
IMAGE_PATH = extras/Assets/DocuImages
10671067

10681068
# The INPUT_FILTER tag can be used to specify a program that doxygen should
10691069
# invoke to filter for each input file. Doxygen will invoke the filter program
@@ -1322,7 +1322,7 @@ HTML_FILE_EXTENSION = .html
13221322
# of the possible markers and block names see the documentation.
13231323
# This tag requires that the tag GENERATE_HTML is set to YES.
13241324

1325-
HTML_HEADER = docs/Style/doxygen-custom/header.html
1325+
HTML_HEADER = extras/Assets/header.html
13261326

13271327
# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
13281328
# generated HTML page. If the tag is left blank doxygen will generate a standard
@@ -1332,7 +1332,7 @@ HTML_HEADER = docs/Style/doxygen-custom/header.html
13321332
# that doxygen normally uses.
13331333
# This tag requires that the tag GENERATE_HTML is set to YES.
13341334

1335-
HTML_FOOTER = docs/Style/doxygen-custom/footer.html
1335+
HTML_FOOTER =
13361336

13371337
# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
13381338
# sheet that is used by each HTML page. It can be used to fine-tune the look of
@@ -1357,11 +1357,10 @@ HTML_STYLESHEET =
13571357
# list). For an example see the documentation.
13581358
# This tag requires that the tag GENERATE_HTML is set to YES.
13591359

1360-
HTML_EXTRA_STYLESHEET = docs/Style/doxygen-awesome.css \
1361-
docs/Style/doxygen-awesome-sidebar-only.css \
1362-
docs/Style/doxygen-awesome-sidebar-only-darkmode-toggle.css \
1363-
docs/Style/doxygen-custom/custom.css \
1364-
docs/Style/doxygen-custom/custom-alternative.css
1360+
HTML_EXTRA_STYLESHEET = extras/doxygen-awesome-css/doxygen-awesome.css \
1361+
extras/doxygen-awesome-css/doxygen-awesome-sidebar-only.css \
1362+
extras/doxygen-awesome-css/doxygen-awesome-sidebar-only-darkmode-toggle.css \
1363+
extras/Assets/custom_header.css
13651364

13661365
# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
13671366
# other source files which should be copied to the HTML output directory. Note
@@ -1371,12 +1370,10 @@ HTML_EXTRA_STYLESHEET = docs/Style/doxygen-awesome.css \
13711370
# files will be copied as-is; there are no commands or markers available.
13721371
# This tag requires that the tag GENERATE_HTML is set to YES.
13731372

1374-
HTML_EXTRA_FILES = docs/Style/doxygen-custom/toggle-alternative-theme.js \
1375-
docs/Style/doxygen-awesome-darkmode-toggle.js \
1376-
docs/Style/doxygen-awesome-fragment-copy-button.js \
1377-
docs/Style/doxygen-awesome-paragraph-link.js \
1378-
docs/images/arduino_logo.png \
1379-
docs/images/platformio_logo.png
1373+
HTML_EXTRA_FILES = extras/Assets/DocuImages/support_me_on_kofi_red.png \
1374+
extras/Assets/supported_boards.html \
1375+
extras/doxygen-awesome-css/doxygen-awesome-darkmode-toggle.js \
1376+
extras/doxygen-awesome-css/doxygen-awesome-fragment-copy-button.js
13801377

13811378
# The HTML_COLORSTYLE tag can be used to specify if the generated HTML output
13821379
# should be rendered with a dark or light theme. Default setting AUTO_LIGHT
@@ -1404,15 +1401,15 @@ HTML_COLORSTYLE = LIGHT
14041401
# Minimum value: 0, maximum value: 359, default value: 220.
14051402
# This tag requires that the tag GENERATE_HTML is set to YES.
14061403

1407-
HTML_COLORSTYLE_HUE = 209
1404+
HTML_COLORSTYLE_HUE = 220
14081405

14091406
# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
14101407
# in the HTML output. For a value of 0 the output will use gray-scales only. A
14111408
# value of 255 will produce the most vivid colors.
14121409
# Minimum value: 0, maximum value: 255, default value: 100.
14131410
# This tag requires that the tag GENERATE_HTML is set to YES.
14141411

1415-
HTML_COLORSTYLE_SAT = 255
1412+
HTML_COLORSTYLE_SAT = 100
14161413

14171414
# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
14181415
# luminance component of the colors in the HTML output. Values below 100
@@ -1423,7 +1420,7 @@ HTML_COLORSTYLE_SAT = 255
14231420
# Minimum value: 40, maximum value: 240, default value: 80.
14241421
# This tag requires that the tag GENERATE_HTML is set to YES.
14251422

1426-
HTML_COLORSTYLE_GAMMA = 113
1423+
HTML_COLORSTYLE_GAMMA = 80
14271424

14281425
# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
14291426
# page will contain the date and time when the page was generated. Setting this
@@ -2479,7 +2476,7 @@ HAVE_DOT = YES
24792476
# Minimum value: 0, maximum value: 32, default value: 0.
24802477
# This tag requires that the tag HAVE_DOT is set to YES.
24812478

2482-
DOT_NUM_THREADS = 0
2479+
DOT_NUM_THREADS = 1
24832480

24842481
# DOT_COMMON_ATTR is common attributes for nodes, edges and labels of
24852482
# subgraphs. When you want a differently looking font in the dot files that
@@ -2551,7 +2548,7 @@ GROUP_GRAPHS = YES
25512548
# The default value is: NO.
25522549
# This tag requires that the tag HAVE_DOT is set to YES.
25532550

2554-
UML_LOOK = NO
2551+
UML_LOOK = YES
25552552

25562553
# If the UML_LOOK tag is enabled, the fields and methods are shown inside the
25572554
# class node. If there are many fields or methods and many nodes the graph may
@@ -2564,7 +2561,7 @@ UML_LOOK = NO
25642561
# Minimum value: 0, maximum value: 100, default value: 10.
25652562
# This tag requires that the tag UML_LOOK is set to YES.
25662563

2567-
UML_LIMIT_NUM_FIELDS = 10
2564+
UML_LIMIT_NUM_FIELDS = 50
25682565

25692566
# If the DOT_UML_DETAILS tag is set to NO, doxygen will show attributes and
25702567
# methods without types and arguments in the UML graphs. If the DOT_UML_DETAILS
@@ -2692,7 +2689,7 @@ INTERACTIVE_SVG = YES
26922689
# found. If left blank, it is assumed the dot tool can be found in the path.
26932690
# This tag requires that the tag HAVE_DOT is set to YES.
26942691

2695-
DOT_PATH =
2692+
DOT_PATH = "C:\Program Files\Graphviz\bin"
26962693

26972694
# The DOTFILE_DIRS tag can be used to specify one or more directories that
26982695
# contain dot files that are included in the documentation (see the \dotfile
@@ -2741,7 +2738,7 @@ PLANTUML_INCLUDE_PATH =
27412738
# Minimum value: 0, maximum value: 10000, default value: 50.
27422739
# This tag requires that the tag HAVE_DOT is set to YES.
27432740

2744-
DOT_GRAPH_MAX_NODES = 50
2741+
DOT_GRAPH_MAX_NODES = 100
27452742

27462743
# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs
27472744
# generated by dot. A depth value of 3 means that only nodes reachable from the

README.md

Lines changed: 63 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,79 @@
1-
## Commander-API library
2-
**Version V2.1.1**
1+
[![Commander-API](extras/Assets/DocuImages/banner.png)](https://www.commanderapi.org/html/index.html)
32

4-
Commander-API is a simple-to-use parser library, and you can easily use it to process character based commands and link them to a specified function. It is designed mainly to work with low memory capacity devices, for example, __small ARM or AVR processors__.
3+
# 🚀 About
54

6-
__Key changes in V2.1.1:__
7-
* AVR PROGMEM support.
8-
* Piping
9-
* Ready to use built-in commands
10-
* Fixes compatibility with Risc-V based ESP32 platforms
5+
Commander-API is an easy-to-use command parser library designed for microcontroller environments. Thanks to its low resource requirements, it runs on almost any microcontroller. It’s **Arduino-compatible out of the box**, making it accessible for hobbyists and beginner programmers alike.
116

12-
__Breaking changes in V2.1.1:__
13-
* The response channel is now uses the Stream class.
14-
This way it is more flexible and you doesn't have to
15-
create a class for every peripheral.
7+
# 🔄 What’s New?
168

17-
## Contributing
18-
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
9+
### </> Argument Handling
10+
We’re really proud of this feature! Now you can easily and efficiently add arguments to your commands. The argument parser extracts the parameters you need from the raw argument string and even **automatically parses them into strings, floats, and integers** for convenience.
1911

20-
Please make sure to update tests as appropriate.
12+
### 🌍 Environment Variables
13+
Access and modify variables from the command parser in the C++ domain directly! This makes it much easier to tweak system parameters at runtime. Hopefully, tuning your **PID controller** just got a whole lot easier. 😉
2114

22-
## Video Tutorial
15+
### 🔧 Major Refactoring
16+
We know "refactoring" isn’t the most exciting word—especially when it affects backward compatibility—but we believe in improving the project. We put a **huge amount of effort** into optimizing the internal structure (including a new **template-based database**—more on that later) to make Commander-API **faster, cleaner, and more scalable**.
2317

24-
[![Tutorial VIdeo](https://img.youtube.com/vi/O2su8kXg1X8/0.jpg)](https://www.youtube.com/watch?v=O2su8kXg1X8)
18+
### 📂 Database Overhaul
19+
This was one of our biggest tasks! The command storage system, previously tied to Commander class, has been modularized for **broader use cases** (like environment variables). We also removed **recursion** entirely—even during initialization—so **embedded developers can breathe a sigh of relief**.
2520

26-
## Documentation
21+
### ⌨️ Auto-Complete (Experimental)
22+
We’re working on it! Early results are promising, but for now, **we don’t recommend using it yet**. Stay tuned!
2723

28-
The full documentation can be found [here](https://dani007200964.github.io/Commander-API/html/index.html).
24+
### 📦 Abstraction Layers
25+
As the project grew, we realized it was time to **increase abstraction** for better integration into complex systems. For example, that’s why we introduced the **CommandCaller interface**, making it easier to integrate Commander-API into larger projects.
2926

30-
## Donation
31-
If this project help you reduce time to develop, you can give me a cup of coffee :coffee: :coffee: :coffee:
27+
### 📡 Pipe Module (Almost Ready!)
28+
We’re finalizing a **refactored version** of the Pipe module, which should be **more stable, easier to configure, and more flexible** than before. We just need a bit more time to document it—stay tuned for updates!
3229

33-
[<img src="docs/images/ko_fi_button.png" height="48">](https://ko-fi.com/danielhajnal)
30+
### 📖 Better Documentation
31+
We finally invested the time to create **a user-friendly, well-organized, and example-rich documentation**. It’s available as part of the **Shellminator documentation**, so check it out!
3432

33+
### ❌ Removal of Built-in Commands
34+
We had to say goodbye to built-in system commands. 😢 The reason? It was nearly impossible to create a **one-size-fits-all** solution for every microcontroller. The implementation became messy, and it wasn’t fun to look at. **The good news:** We have a new approach in mind, and we’re actively working on a solution!
3535

36-
## License & copyright
37-
© Daniel Hajnal
36+
# 📚 Documentation
37+
38+
Commander-API has its own [technical documentation](https://www.commanderapi.org/html/index.html), but [most of the examples are found in the Shellminator documentation](https://www.shellminator.org/html/index.html). The Commander-specific docs are for those who want to **dive deep** into how it works under the hood. If you’re impatient, you might even find some **spoilers** about upcoming features!
39+
40+
# 🤝 Feedback and Contributions
41+
42+
We've poured **a lot of time and effort** into making this project **stable and easy to use**, but no software is perfect. Bugs happen. Features can improve. And that’s where you come in!
43+
44+
If you have **feature suggestions, bug reports, or ideas for enhancements**, we’d love to hear from you. Your feedback makes Commander-API better for everyone!
45+
46+
**Ways to contribute:**
47+
- 🐛 [Submit an issue](https://github.com/dani007200964/Commander-API/issues/new?template=bug_report.md)
48+
- 💬 [Join discussions](https://github.com/dani007200964/Commander-API/discussions)
49+
- 🛠 [Share your use cases](https://github.com/dani007200964/Commander-API/discussions/categories/show-and-tell)
50+
51+
Every contribution, big or small, helps us grow!
52+
53+
# ❤️ Support
3854

39-
55+
If this project has been helpful to you and you’d like to **buy us a coffee**, we’d really appreciate it! ☕ Every little bit helps keep this small team motivated.
56+
[![Support](extras/Assets/DocuImages/support.png)](https://ko-fi.com/danielhajnal)
4057

41-
Licensed under the MIT License
58+
# 🌐 Useful Links
59+
60+
- [Discussions](https://github.com/dani007200964/Commander-API/discussions) – Join the conversation and share your ideas!
61+
- [Technical Documentation](https://www.commanderapi.org/html/index.html) – Deep dive into Commander-API.
62+
- [Shellminator](https://www.shellminator.org/html/index.html) – Companion project with additional resources.
63+
- [Discord](https://discord.gg/GhMGqhBS) – Part of the Shellminator Discord server. Come chat with us!
64+
65+
# 🗨️ Contact
66+
67+
Have a question? Need help? Just want to say hi?
68+
- 🗨️ [Join the discussions](https://github.com/dani007200964/Commander-API/discussions)
69+
- 🎧 [Find us on Discord](https://discord.gg/GhMGqhBS)
70+
71+
We’d love to hear from you! 🚀
72+
73+
# 📃 License
74+
75+
Commander-API is licensed under the **MIT License**.
76+
77+
© Daniel Hajnal
4278

43-
![](/docs/images/footer_image.png)
79+

docs/Style/LICENSE

Lines changed: 0 additions & 21 deletions
This file was deleted.

0 commit comments

Comments
 (0)