/* * utils.h * * Created on: Jun 9, 2022 * Author: Keith.Lloyd */ #ifndef UTILS_H_ #define UTILS_H_ #include "arm_math.h" #include "spi.h" //#define CLAMP 1 // Todo Fix later #define DDC 2 #define MAX_CLAMP_VOLTAGE 170.0f #define MAX_DC_VOLTAGE 90.0 #define CLAMP_MIN 100 //Todo Calculate correct limit values #define CLAMP_MAX 200 #define DC_MIN 220 #define DC_MAX 250 #define DDC_MIN 270 #define DDC_MAX 300 #define TGT_NOT_USED 330 //#define OUT_RELAY_OFF_MASK 0b11100111 #define XFRMR_HF_ON 0b00000010 #define HF_AMP_ON 0b01000000 #define PORT_LE 5 //#define BYPASS_ON 0b00000001 // #define HFDC_ON 0b00000010 #define LFDC_ON 0b00000000 #define LFANT_ON 0b00000100 #define HFANT_ON 0b10000100 #define PWR_CTL 16 #define PWR_ON 1 #define PWR_OFF 0 //#define MAX_VOLTS 800 // RAW ADC VALUE for Maximum Voltage on DConnect output #define MAX_OP_VOLTS 180 //220.0 //1.68 Maximum VOLTS #define MAX_BYPASS_VOLTS 95.0//0.84 #define MAX_BYPASS_VOLTS2 110.0 #define MAX_CURRENT 950.0 // RAW ADC VALUE for Maximum Current on DConnect output #define MAX_HF_CURRENT 300.0 #define VOLTAGE 7 // ADC address of voltage measurement #define CURRENT 0 // ADC address of current measurement #define ALL_RELAYS_OFF_UPPER 0 //ToDo #define ALL_RELAYS_OFF_LOWER 0 // Todo #define POT_CS 7 // Todo #define ERROR 8 // Bit position of ERROR Signal #define DAMP_EN_ON 0b00100000 #define SLCT_AMPD_ON 0b00000010 #define AMP_PSU_ON 0b11111011 #define XFRMR_LF_ON 0b00000010 // Bit position of Xfrmr Mux. #define SLCT_XFMR XFRMR_LF_ON #define SLCT_AMP 0b01000000 // Matches Correct Xfrmr to Correct amplifier. #define MUX_AB_AMP 0b00000001 #define ANT_AMP_EN 0b10000000 #define ANT_AMP_SW 0b00000010 #define BC_CLK 0 #define DC_CLK 1 #define I_GAIN 0b01000000 #define SENTINAL 180 #define MIN_POT 5 typedef enum { EMPTY, CLAMP, CONNECT_LEAD, DUAL_DC }OUT_CONNECT_t; typedef enum{ LFA_LFX, HFA_LFX, HFA_HFX } AMP_XFRMR_SLCT_t; typedef enum { CONNECTED, ISOLATED } ESTOP_SELECT_t; typedef enum { OFF, ON } RELAY_SELECT_t; typedef enum { ACCY_PORT_INDUCTION = 0, ACCY_PORT_1 = 1, ACCY_PORT_2 = 2, NUM_PORTS } AccessoryPortId_t; typedef enum { CHANNEL_A = 0, CHANNEL_B, NUM_CHANNELS } AccyChannelId_t; typedef struct { AccyChannelId_t id; bool connected; } AccessoryChannel_t; typedef enum { LOW_FREQ = 0, HIGH_FREQ, NUM_FREQ_RANGES, } FrequencyRange_t; typedef enum { POWER_LEVEL_0 = 0, POWER_LEVEL_1, POWER_LEVEL_2, POWER_LEVEL_3, POWER_LEVEL_4, POWER_LEVEL_COUNT } PowerLevel_t; typedef enum { SIGNAL_PATH_NONE = 0, SIGNAL_PATH_ANT, SIGNAL_PATH_AMP, } SignalPath_t; typedef enum { AMPLIFIER_NONE = 0, AMPLIFIER_D, AMPLIFIER_AB, } Amplifier_t; typedef enum { TAP_1 = 1, TAP_2, TAP_3, TAP_4, } TransformerTap_t; void Select_Estop(ESTOP_SELECT_t); void Send_Pot_Data(uint16_t Data, SPI_MODE_t destination); void Send_Update_Port(void); void Clear_Relays(void); uint8_t Check_Output_Status(char Connector); void Power_Down(void); void Power_ON_OFF(RELAY_SELECT_t Power); void Check_Over_Current(); void Check_Live_Voltage(); //void Check_Over_Voltage(); void Check_PSU_Short(void); void Estop_Mode(void); void Select_Transformer(void); void Select_Amp_Xfrmr_Rly(AMP_XFRMR_SLCT_t Amp2xfrmr); void Select_Bypass(RELAY_SELECT_t Bypass); // Bypass allows transmitting w/o full protection void Chk_Gain(void); void Check_Over_Power(void); void Check_Clamp_OverVoltage(void); void Adjust_Clamp_Volts(void); bool Compare_Voltage(float32_t source,float32_t limit); void Check_Over_Voltage(void); void Controlled_Pwr_Dwn(void); void Update_Amp_Pot(void); void Check_For_Clamp_On_Pwr_Up(void); void Adjust_Output_Power(float32_t New_Power_Limit); float Get_Max_Current(void); void Reduce_Kick_Back(void); float32_t Convert_Pot2_Volts(uint8_t value); void Cut_Signal_To_Min(void); bool Check_For_Clamp(); void freq_key_process(void); void Init_LD_Sync(void); void Leica_Patch(void); void Umag_Patch(void); float32_t Get_Power_Limit(void); bool Check_For_Clamp_New(); void delayms(uint32_t msec); bool isUsbConnected(void); #endif /* UTILS_H_ */