/* 
 * This program source code file is part of the KTag project, a DIY laser tag
 * game with customizable features and wide interoperability.
 *
 * 🛡 <https://ktag.clubk.club> 🃞
 *
 * Copyright © 2025-2026 Joseph P. Kearney and the KTag developers.
 *
 * This program is free software: you can redistribute it and/or modify it under
 * the terms of the GNU Affero General Public License as published by the Free
 * Software Foundation, either version 3 of the License, or (at your option) any
 * later version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more
 * details.
 *
 * There should be a copy of the GNU Affero General Public License in the LICENSE
 * file in the root of this repository.  If not, see <http://www.gnu.org/licenses/>.
 */

#ifndef SYSTEM_EVENTS_H
#define SYSTEM_EVENTS_H

#include <SystemK.h>
#include <freertos/FreeRTOS.h>
#include <freertos/event_groups.h>

// System-wide event bits
#define SYS_NVS_READY           (1 << 0)
#define SYS_SPIFFS_READY        (1 << 1)
#define SYS_USB_FS_PRESENT      (1 << 2)
#define SYS_AUDIO_READY         (1 << 3)
#define SYS_NEOPIXELS_READY     (1 << 4)
#define SYS_BLE_READY           (1 << 5)
#define SYS_IR_READY            (1 << 6)
#define SYS_SETTINGS_READY      (1 << 7)

EventGroupHandle_t Get_System_Events(void);
void Initialize_System_Events(void);
bool Wait_For_System_Event(EventBits_t event_bit, const char* timeout_message, uint32_t timeout_ms);

#endif // SYSTEM_EVENTS_H
