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.