function2
amp-embedded-infra-lib
function2 | amp-embedded-infra-lib | |
---|---|---|
7 | 17 | |
530 | 152 | |
- | 2.6% | |
4.7 | 9.3 | |
2 months ago | 6 days ago | |
C++ | C++ | |
Boost Software License 1.0 | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
function2
-
Callbacks in embedded | heapless environment
Fixed size function wrappers are not only limited and also a waste of space. Use a configurable function wrapper like fu2 with a stack allocator and set small object optimizer capacity to 0.
- Scriptable Headless Player Bots and independent ECS in a Custom UE C++ Server for MMO(RPG)s.
- A custom C++ server for the Unreal Engine 5, optimized for MMO(RPG)s.
-
A simple std::function alternative that never allocates
std::function wasn't cutting it for me, but I ended up going with fu2::function. It comes with a lot of features (almost too many), but the header size and compile times are comparable to , and it fit my needs pretty well.
-
Idle: an asynchronous and hot-reloadable C++ dynamic component framework
Thank you, function2 is also used heavily in Idle as a type-erasure backend for continuable that is the primary asynchronous task abstraction.
- Should std::function's move assignment operation be noexcept?
-
Orthodox C++
You can write your own std::function, too, nor is it the only STL type that can take a capturing lambda (std::packaged_task for example).
A capturing lambda is just a class with an operator(). It's complicated to do what std::function does, but fully possible.
In fact, custom std::function replacements have better lambda support than std::function itself. Such as unique_function in https://github.com/Naios/function2 which can handle non-copyable lambdas.
amp-embedded-infra-lib
- Semantic Version GitHub Action
-
Code coverage with clang and gcovr
Have a look here: https://github.com/philips-software/amp-embedded-infra-lib/blob/modern-cmake/cmake/emil_test_helpers.cmake where we use the EMIL_ENABLE_COVERAGE flag.
-
Looking for well written, modern C++ (17/20) example projects for microcontrollers
I can recommend having a look at: - https://github.com/philips-software/amp-embedded-infra-lib (stl-like replacement and utility library including a HAL definition - https://github.com/philips-software/amp-hal-st (HAL implementation for STs based on EMiL HAL) - https://github.com/philips-software/amp-preview (a GUI library for STs based on above mentioned repo's)
- What is on your CI?
-
FreeRTOS-Cpp: C++17 header-only interface to the FreeRTOS kernel API
Not to downplay your work. But, we are in the process, almost finalised, tests and all of adding this kind of support as well. But then to allow freertos to work with c++'s native threading API. https://github.com/philips-software/amp-embedded-infra-lib/tree/feature/add-osal We have a thin wrapper, and during configuration you choose: None, native, freertos or zephyr.
-
What criteria do you use to choose super loop over RTOS
Everything that needs to do something is scheduled using a simple EventDispatcher.schedule(lambda) construction; adding the lambda to the event queue. If you want an example of such a system: https://github.com/philips-software/amp-embedded-infra-lib/blob/modern-cmake/infra/event/EventDispatcher.hpp
-
Looking for a GitHub repo which contains unit tests
You can have a look at https://github.com/philips-software/amp-embedded-infra-lib it is a library project. So not an actual embedded teacher. Although the library is aimed at embedded usage.
-
Implementing callbacks using abstract classes in C++
If you want a good example of a full library then take a look at https://github.com/philips-software/amp-embedded-infra-lib
-
USB HID Device Configuration using nanopb and gRPC
https://github.com/philips-software/amp-embedded-infra-lib had support for RPC over protobuf.
- Looking for modern CMake tutorials or good open spurce examples
What are some alternatives?
Inja - A Template Engine for Modern C++
EmbeddedProto - Embedded Proto is a C++ Protocol Buffers implementation specifically suitable for microcontrollers. It is small, reliable and easy to use.
FunctionalPlus - Functional Programming Library for C++. Write concise and readable C++ code.
etl - Embedded Template Library
LSHBOX - A c++ toolbox of locality-sensitive hashing (LSH), provides several popular LSH algorithms, also support python and matlab.
IoT-For-Beginners - 12 Weeks, 24 Lessons, IoT for All!
stx-btree - OBSOLETE, contained in https://github.com/tlx/tlx - STX B+ Tree C++ Template Classes -
HFSM2 - High-Performance Hierarchical Finite State Machine Framework
Hashmaps - Various open addressing hashmap algorithms in C++
CubeCell-Helium-vindriktning-particle-sensor - Helium LoRaWAN data reporting via a Heltec Cubecell for the Ikea VINDRIKTNING PM2.5 air quality sensor
Learn Project - go study
compile-time-init-build - C++ library for composing modular firmware at compile-time.