Files
TX/source/System/system.h
Brent Perteet 658cedfa3b Added software timers
Accessory state machine framework functional
2025-06-18 17:53:00 -05:00

109 lines
1.8 KiB
C

/*
* system.h
*
* Created on: Oct 23, 2023
* Author: Brian.Bailey
*/
#ifndef SYSTEM_SYSTEM_H_
#define SYSTEM_SYSTEM_H_
#include <stdbool.h>
#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_ */