first of all. I'm the main author of Simba which makes me very subjective on this matter.
Simba is a fairly active project on GitHub, with a handful of contributors. I've used it in a few projects, and it has been working very well, I must say. That said, other users may very well have a different opinion (which I don't know about, the little feedback I've received has been positive).
There are some discussions on GitHub and PlatformIO about Simba, but very few shares their projects and gives feedback.Here are a few of my "bigger" project using Simba:- https://github.com/eerimoq/pumbaa- https://github.com/eerimoq/romeo- https://github.com/eerimoq/simba/tree/master/examples/synthesizer
As for drivers, there are two alternatives of how to implement them:1. Build the driver on top of an existing driver, for example the UART driver. Existing driver API:s can easily be extended to add missing functionality. Sometimes even non-backwards compatible changes are accepted.2. Perform hardware register accesses directly from the driver. This is not recommended since it makes the code less portable to other boards.As you pointed out there are numerous drivers written for Arduino. These have to be rewritten in Simba, I'm afraid. It's theoretically possible to provide the Arudino API in Simba, but there are no plans on doing so.Feel free to submit a pull request if you implement any drivers. They are very welcome! =)And last, it should be possible to mix C++ and C in Simba. I've done it once or twice.
/var/folders/ls/l_9lw6yn0232t9gzgmkzdzkm0000gn/T/arduino_build_562770/preproc/ctags_target_for_gcc_minus_e.cpp:43:115: error: storage class specifiers invalid in parameter declarations static int cmd_hello_world_cb(int argc, ^/var/folders/ls/l_9lw6yn0232t9gzgmkzdzkm0000gn/T/arduino_build_562770/preproc/ctags_target_for_gcc_minus_e.cpp:43:115: error: storage class specified for parameter 'cmd_hello_world_cb'/var/folders/ls/l_9lw6yn0232t9gzgmkzdzkm0000gn/T/arduino_build_562770/preproc/ctags_target_for_gcc_minus_e.cpp:43:116: error: expected ')' before ';' token static int cmd_hello_world_cb(int argc, ^/var/folders/ls/l_9lw6yn0232t9gzgmkzdzkm0000gn/T/arduino_build_562770/preproc/ctags_target_for_gcc_minus_e.cpp:44:31: error: expected unqualified-id before 'void' const char *argv, ^/Users/hichhiker/Library/Arduino15/packages/Simba/hardware/avr/14.0.0/libraries/Simba/examples/shell/shell.ino:34:28: warning: 'cmd_hello_world' defined but not used [-Wunused-variable] static struct fs_command_t cmd_hello_world; ^/Users/hichhiker/Library/Arduino15/packages/Simba/hardware/avr/14.0.0/libraries/Simba/examples/shell/shell.ino:36:23: warning: 'shell' defined but not used [-Wunused-variable] static struct shell_t shell; ^/Users/hichhiker/Library/Arduino15/packages/Simba/hardware/avr/14.0.0/libraries/Simba/examples/shell/shell.ino:41:12: warning: 'int cmd_hello_world_cb(int, const char**, int (*)(int, const char**, void*, void*, void*, void*))' declared 'static' but never defined [-Wunused-function] static int cmd_hello_world_cb(int argc, ^exit status 1Error compiling for board Arduino Mega.
Okay, so install version 15.0.1 of Simba and the compiler error should be gone.
The Simbaa forum is preferred for general questions, and GitHub for features and fixes related to the Simba repo.
I started designing an XBee driver. The interface and example usage is part of this commit.As I don't have any experience with XBee modules I might have misunderstood how it works, so let me know if the driver should be redesigned to be useful.