/* * system.h * * Created on: Oct 23, 2023 * Author: Brian.Bailey */ #ifndef SYSTEM_SYSTEM_H_ #define SYSTEM_SYSTEM_H_ #include #include "ports.h" #include "adc.h" #define SW_VERSION "1.10A" #define SYS_INFO_LENGTH 24 //max string length for setup parameters (model, mfg, etc.) #define POWER_LIMIT_LITHIUM 10.0f #define POWER_LIMIT_ALKALINE 5.0f #define POWER_LIMIT_EXT_DC 10.0f typedef enum { GUI_MODE_NORMAL = 0, GUI_MODE_MENU } GuiMode_t; typedef struct ClampData_s { float slope; uint8_t pot; float voltage; float current; float impedance; float power; float maxPower; float targetPower; uint32_t timeout; bool regulate; uint8_t prevPowerLevel; } ClampData_t; typedef enum { USB_CONNECTED = 0, SAFE_MODE, OVERVOLTAGE, ESTOP, BYPASS, NUM_STATUS_FLAGS } StatusFlags_t; //System data typedef struct { uint8_t manufacturer[SYS_INFO_LENGTH]; //manufacturer uint8_t modelName[SYS_INFO_LENGTH]; //model name uint8_t serialNumber[SYS_INFO_LENGTH]; //serial number uint8_t mfgDate[SYS_INFO_LENGTH]; //manufacture date uint8_t modelNumber[SYS_INFO_LENGTH]; //model number uint32_t bootloaderVersion; //bootloader version uint32_t language; //system language uint32_t systemTime; // system time in milliseconds since boot bool safeMode; // output is disabled bool usbConnected; GuiMode_t guiMode; ClampData_t clamp; uint8_t currentMode; ACCESSORY_t ports[NUM_PORTS]; ACCESSORY_t *activeAccessory; ACCESSORY_t *nextAccessory; float32_t maxPowerLimit; ADC_t adc; bool status[NUM_STATUS_FLAGS]; int hSysCheckTimer; int hOneSecondTimer; char tmpString[64]; } SYSTEM_DATA_t; void SYS_LoadFactoryDefaults(void); uint32_t SYS_GetLanguage(void); SYSTEM_DATA_t* system_getSys(void); void system_monitor(void); #endif /* SYSTEM_SYSTEM_H_ */