RTOS Wrappers (hf-utils-rtos-wrap)
C++ abstractions over FreeRTOS primitives for thread-safe embedded development.
Synchronization
Class
Description
RtosMutex
Recursive mutex wrapper (xSemaphoreCreateRecursiveMutex) — allows same-thread re-entrant locking
MutexLockGuard
RtosUniqueLock<RtosMutex> typedef — RAII lock guard for RtosMutex
OsSemaphore
Counting semaphore
SemaphoreLockGuard
RAII guard for semaphores
Communication
Class
Description
OsQueue<T>
Type-safe FreeRTOS queue wrapper
OsEventFlags
Event group with set/wait/clear operations
Tasks & Timers
Class
Description
BaseThread
Abstract FreeRTOS task with Setup/Loop/Cleanup lifecycle
PeriodicTimer
FreeRTOS software timer wrapper
Delay Functions
Function
Description
os_delay_msec(ms)
Blocking delay (milliseconds)
os_delay_usec(us)
Busy-wait delay (microseconds)
Usage Patterns
Mutex-Protected Resource
1
2
3
4
5
6
RtosMutex mtx ;
void read_sensor () {
MutexLockGuard guard ( mtx );
// Protected access here
}
Periodic Task
1
2
3
4
5
6
7
8
9
10
class SensorTask : public BaseThread {
public:
SensorTask () : BaseThread ( "Sensor" , 4096 , 5 ) {}
protected:
void Setup () override { sensor_ . Initialize (); }
void Loop () override { sensor_ . Read (); vTaskDelay ( pdMS_TO_TICKS ( 100 )); }
void Cleanup () override { sensor_ . Deinitialize (); }
void OnStop () override {}
void ResetVariables () override {}
};
Test Coverage
See examples/esp32/main/utils_tests/rtos_wrap_comprehensive_test.cpp — tests all
synchronization primitives, queues, event flags, periodic timers, threads, and delays.