Files
TX/source/driver.h
2025-08-26 16:10:47 -05:00

96 lines
1.9 KiB
C

#ifndef _DRIVER_H
#define _DRIVER_H
#include <stdint.h>
#include <stdbool.h>
#include "fgen.h"
#include "ports.h"
#define MAIN_PSU_ENBL 0b00000100 // Active Low U13 D2
#define V_18V 0
#define V_21V 88
#define V_24V 118
#define V_27V 148
#define V_30V 171
#define V_36V 218
#define V_42V 250
#define V_55V 255
#define MAX_AB_PSU V_24V //TODO
#define MAX_AB_VOLTAGE 32.0f
#define MAX_D_PSU V_36V
#define MAX_D_FREQ 44500
#define MAX_CLAMP_PSU 255
#define POWER_CHANGE_TIME 500 //m sec
typedef enum
{
DRIVER_STATE_INIT = 0,
DRIVER_STATE_WAIT_PSU,
DRIVER_STATE_SWITCH_AMP,
DRIVER_STATE_SWITCH_FREQUENCY,
DRIVER_STATE_RUNNING,
} DriverState_t;
typedef struct
{
DriverState_t state;
bool initState;
uint32_t stateTimer;
uint8_t psuValue;
uint8_t psuValueMax;
FREQUENCY_t *frequency;
PowerLevel_t powerLevel;
uint32_t lastPowerChangeTime;
Amplifier_t amplifier;
SignalPath_t signalPath;
TransformerTap_t tap;
uint8_t amplitude;
fgen_t *fgen;
ACCESSORY_t *prevAccy;
} TxDriver_t;
bool driver_isLowFreq(void);
float driver_maxLoadCurrent(void);
TxDriver_t * driver_getDriver(void);
void driver_setPSUVoltage(uint8_t value);
void driver_setAmplitude(uint8_t value);
void driver_isolateOutput(bool isolate);
void driver_enablePower(bool enable);
void driver_init(void);
void driver_monitor(void);
void driver_service(void);
void driver_setDuty(uint32_t duty);
void driver_broadcastOn(bool on);
void driver_setFrequency(FREQUENCY_t *freq);
void driver_setPower(PowerLevel_t powerLevel);
FREQUENCY_t *driver_getFrequency(void);
void driver_setSafe(bool safe);
PowerLevel_t driver_getPowerLevel();
void driver_setSignalPath(SignalPath_t path);
uint8_t driver_getAmplitude(void);
TransformerTap_t driver_getTap(void);
Amplifier_t driver_getAmplifier(void);
bool driver_outputReady(void);
void driver_bypass(bool bypass);
void driver_powerUp(void);
void driver_powerDown(void);
#endif