46 lines
1.1 KiB
C++
46 lines
1.1 KiB
C++
//
|
|
// Created by erki on 11/02/24.
|
|
//
|
|
|
|
#pragma once
|
|
|
|
#include <freertos/FreeRTOS.h>
|
|
|
|
namespace clock_core
|
|
{
|
|
|
|
struct EventGroup
|
|
{
|
|
static constexpr EventBits_t WIFI_FAILED = BIT0;
|
|
static constexpr EventBits_t WIFI_CONNECTED = BIT1;
|
|
static constexpr EventBits_t SNTP_SYNCED = BIT2;
|
|
static constexpr EventBits_t CLOCK_UPDATE = BIT3;
|
|
static constexpr EventBits_t ALL_EVENTS = WIFI_FAILED | WIFI_CONNECTED | SNTP_SYNCED | CLOCK_UPDATE;
|
|
|
|
EventGroupHandle_t rtos_event_group = nullptr;
|
|
|
|
EventGroup()
|
|
: rtos_event_group(xEventGroupCreate())
|
|
{ }
|
|
EventGroup(const EventGroup&) = delete;
|
|
EventGroup(EventGroup&&) = delete;
|
|
EventGroup& operator=(const EventGroup&) = delete;
|
|
EventGroup& operator=(EventGroup&&) = delete;
|
|
|
|
void setEvent(const EventBits_t& bits)
|
|
{
|
|
xEventGroupSetBits(rtos_event_group, bits);
|
|
}
|
|
|
|
EventBits_t waitForEvent()
|
|
{
|
|
return xEventGroupWaitBits(rtos_event_group,
|
|
ALL_EVENTS,
|
|
pdTRUE,
|
|
pdFALSE,
|
|
portMAX_DELAY);
|
|
}
|
|
};
|
|
|
|
}
|