#ifndef _GLOBALS_H_
#define _GLOBALS_H_

#include <Arduino.h>
#include "eeprom.h"
#include "common.h"
typedef struct Globals_s
{
  tSystem_Status systemStatus = sysStat_Startup; /**< Current system status */
  tSystem_Status resumeStatus = sysStat_Startup; /**< Status to resume after rain mode */
  char systemStatustxt[16] = "";                 /**< Text representation of system status */
  EERequest_t requestEEAction = EE_IDLE;         /**< EEPROM-related request */
  char DeviceName[33];                           /**< Device name */
  char DeviceNameId[sizeof(DeviceName) + 8];     /**< Device name plus 8 chars chipID */
  char FlashVersion[10];                         /**< Flash version */
  uint16_t eePersistanceAdress;                  /**< EEPROM persistence address */
  bool hasDTC;
  int loadvoltage_mV = 0;
  int battery_level = 0;
  bool timer_disabled = false;
} Globals_t;

extern Globals_t globals; /**< Global variable struct */

typedef struct Constants_s
{
  uint8_t FW_Version_major;             /**< Firmware version major number */
  uint8_t FW_Version_minor;             /**< Firmware version minor number */
  uint8_t Required_Flash_Version_major; /**< Required flash version major number */
  uint8_t Required_Flash_Version_minor; /**< Required flash version minor number */
  char GitHash[11];                     /**< Git hash string */
} Constants_t;

const Constants_t constants PROGMEM = {
    FW_MAJOR, FW_MINOR,   // Firmware_Version
    FL_MAJOR, FL_MINOR,   // Required Flash Version
    GIT_REV // Git-Hash-String
};

/**
 * @brief Initializes global variables.
 */
void initGlobals();

#endif // _GLOBALS_H_