power up/down working for broadcast
This commit is contained in:
@@ -8,6 +8,11 @@
|
||||
static SYSTEM_DATA_t *_sys = NULL;
|
||||
static TxDriver_t _driver;
|
||||
|
||||
static bool powerChangeAllowed(void)
|
||||
{
|
||||
return ((_sys->systemTime - _driver.lastPowerChangeTime) > POWER_CHANGE_TIME);
|
||||
}
|
||||
|
||||
TxDriver_t * driver_getDriver(void)
|
||||
{
|
||||
return &_driver;
|
||||
@@ -80,6 +85,16 @@ void driver_init(void)
|
||||
driver_setPSUVoltage(_driver.psuValueMax);
|
||||
driver_enablePower(true);
|
||||
|
||||
|
||||
|
||||
fgen_init();
|
||||
|
||||
// HACK: pick the first frequency for now
|
||||
_driver.powerLevel = POWER_LEVEL_0;
|
||||
_driver.frequency = fgen_getByIndex(0);
|
||||
|
||||
_driver.lastPowerChangeTime = _sys->systemTime;
|
||||
|
||||
}
|
||||
|
||||
void driver_broadcastOn(bool on)
|
||||
@@ -121,7 +136,6 @@ void driver_setDuty(uint32_t duty)
|
||||
|
||||
void driver_setFrequency(FREQUENCY_t *freq)
|
||||
{
|
||||
|
||||
|
||||
if (_sys->activeAccessory != NULL)
|
||||
{
|
||||
@@ -129,17 +143,17 @@ void driver_setFrequency(FREQUENCY_t *freq)
|
||||
|
||||
if (freq != NULL)
|
||||
{
|
||||
// TODO: accessory may select a different frequency
|
||||
// accessory may select a different frequency
|
||||
_driver.frequency = freq;
|
||||
|
||||
driver_setPower(_driver.powerLevel);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
void driver_setPower(PowerLevel_t powerLevel)
|
||||
{
|
||||
if (_sys->activeAccessory != NULL)
|
||||
@@ -155,6 +169,37 @@ void driver_setPower(PowerLevel_t powerLevel)
|
||||
}
|
||||
}
|
||||
|
||||
_driver.lastPowerChangeTime = _sys->systemTime;
|
||||
|
||||
}
|
||||
|
||||
void driver_powerUp(void)
|
||||
{
|
||||
// limit power change rate
|
||||
if (!powerChangeAllowed()) return;
|
||||
|
||||
PowerLevel_t level = _driver.powerLevel;
|
||||
|
||||
if (level < POWER_LEVEL_4)
|
||||
{
|
||||
level++;
|
||||
}
|
||||
|
||||
driver_setPower(level);
|
||||
}
|
||||
|
||||
void driver_powerDown(void)
|
||||
{
|
||||
if (!powerChangeAllowed()) return;
|
||||
|
||||
PowerLevel_t level = _driver.powerLevel;
|
||||
|
||||
if (level > POWER_LEVEL_0)
|
||||
{
|
||||
level--;
|
||||
}
|
||||
|
||||
driver_setPower(level);
|
||||
}
|
||||
|
||||
void driver_setSafe(bool safe)
|
||||
@@ -174,11 +219,16 @@ void driver_setSafe(bool safe)
|
||||
}
|
||||
}
|
||||
|
||||
FREQUENCY_t *driver_getFrequency(void)
|
||||
FREQUENCY_t* driver_getFrequency(void)
|
||||
{
|
||||
return _driver.frequency;
|
||||
}
|
||||
|
||||
PowerLevel_t driver_getPowerLevel(void)
|
||||
{
|
||||
return _driver.powerLevel;
|
||||
}
|
||||
|
||||
// safety monitor run from interrupt
|
||||
void driver_monitor(void)
|
||||
{
|
||||
@@ -191,6 +241,7 @@ void driver_service(void)
|
||||
{
|
||||
case DRIVER_STATE_INIT:
|
||||
{
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user