#pragma once

#include <Arduino.h>
#include "my_board.h"
#include <FastLED.h>
#include "ATALights.h"

typedef struct {
  bool enabled;
}BTN_SETTINGS;

typedef struct{
  bool enabled;
  int  freq;
  float min;
  float max;
  float def;
  float deltaRate;
}PWM_OUT_SETTINGS;

typedef struct{
  bool enabled;
  bool vision;
  uint8_t pwmOutIndex;
  uint8_t btnIndex;
  float min;
  float max;
  float step;
  uint8_t skipCount;
}RAMP_LIGHT_SETTINGS;

typedef struct {
  bool enabled;
  int height;
  int width;
}OLED_SETTINGS;

typedef struct {
  bool enabled;
  uint8_t addr;
  float setpoint1;
  float fanPower1;
  float setpoint2;
  float fanPower2;
  float hyst;
  uint8_t pwmIndex;
  int intervalMs;
}TSENSOR_SETTINGS;

typedef struct {
  bool enabled;
  String name;
  uint8_t core;
}BLE_SETTINGS;

typedef struct {
  bool txEnabled;
  bool rxEnabled;
}RF_REMOTE_SETTINGS;

typedef struct {
  bool enabled;
  String ssid;
  String pass;
}WIFI_CLIENT_SETTINGS;

typedef struct {
  bool enabled;
  String ssid;
  String pass;
  uint8_t ip[4];
  uint8_t gateway[4];
  uint8_t subnet[4];
}WIFI_AP_SETTINGS;

typedef struct {
  bool enabled;
}ADC_SETTINGS;

enum BOOTH_MODE { BOOTH_MODE_NONE=0, BOOTH_MODE_ROAMER=1, BOOTH_MODE_STIK=2 };
typedef struct {
  BOOTH_MODE mode;
  BOARD_PINS boardPins;
  BTN_SETTINGS btnSettings[3];
  PWM_OUT_SETTINGS pwmOutSettings[4];
  RAMP_LIGHT_SETTINGS rampLightSettings[2];
  OLED_SETTINGS oledSettings;
  TSENSOR_SETTINGS tSensorSettings;
  LEDSTRIP_SETTINGS* ledStripSettings[2];
  BLE_SETTINGS bleSettings;
  RF_REMOTE_SETTINGS rfRemoteSettings;
}SYS_SETTINGS;


