More refactoring
Lots of things removed but compiles again
This commit is contained in:
140
source/broadcast.c
Normal file
140
source/broadcast.c
Normal file
@@ -0,0 +1,140 @@
|
||||
#include "driver.h"
|
||||
#include "ports.h"
|
||||
#include "fgen.h"
|
||||
#include "utils.h"
|
||||
#include "System/system.h"
|
||||
|
||||
#define MIN_BROADCAST_FREQ 3140
|
||||
#define MAX_BROADCAST_FREQ 210000
|
||||
|
||||
static uint8_t Bcast_LF_Value[5] = {0,5,10,15,20};
|
||||
static uint8_t Bcast_HF_Value[5] = {0,12,25,37,50};
|
||||
|
||||
extern SYSTEM_DATA_t sys;
|
||||
|
||||
static FREQUENCY_t * setFrequency(ACCESSORY_t *accy, FREQUENCY_t *freq)
|
||||
{
|
||||
// use the current frequency if it is valid, otherwise, set to the lowest valid for broadcast
|
||||
bool findFreq = false;
|
||||
if (freq != NULL)
|
||||
{
|
||||
if (freq->frequency < MIN_BROADCAST_FREQ || freq->frequency > MAX_BROADCAST_FREQ)
|
||||
{
|
||||
findFreq = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
findFreq = true;
|
||||
}
|
||||
|
||||
if (findFreq)
|
||||
{
|
||||
freq = fgen_findNearest(MIN_BROADCAST_FREQ);
|
||||
|
||||
if (freq == NULL)
|
||||
{
|
||||
accy->state = PORT_STATE_ERROR;
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
accy->setPower(accy, sys.driver->powerLevel);
|
||||
|
||||
return freq;
|
||||
}
|
||||
|
||||
static int setPower(ACCESSORY_t *accy, PowerLevel_t power)
|
||||
{
|
||||
FREQUENCY_t *f = driver_getFrequency();
|
||||
|
||||
uint8_t duty = 0;
|
||||
if(f->frequency <= 8010)
|
||||
duty = Bcast_LF_Value[power];
|
||||
else
|
||||
duty = Bcast_HF_Value[power];
|
||||
|
||||
|
||||
driver_setDuty(duty);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void _stateInit(ACCESSORY_t *accy)
|
||||
{
|
||||
FREQUENCY_t *freq = driver_getFrequency();
|
||||
|
||||
if (accy->initState)
|
||||
{
|
||||
accy->setFrequency = setFrequency;
|
||||
accy->setPower = setPower;
|
||||
|
||||
driver_setFrequency(freq);
|
||||
|
||||
|
||||
|
||||
driver_broadcastOn(true);
|
||||
|
||||
ACCY_setTimeout(accy, 500);
|
||||
}
|
||||
|
||||
if (ACCY_timedOut(accy))
|
||||
{
|
||||
accy->state = PORT_STATE_RUNNING;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
int broadcast_service(ACCESSORY_t *accy)
|
||||
{
|
||||
switch (accy->state)
|
||||
{
|
||||
case PORT_STATE_INIT:
|
||||
{
|
||||
_stateInit(accy);
|
||||
break;
|
||||
}
|
||||
|
||||
case PORT_STATE_DEINIT:
|
||||
{
|
||||
if (accy->initState)
|
||||
{
|
||||
//USB_SendString("Broadcast deinitializing...");
|
||||
|
||||
// turn off the amp and antenna
|
||||
driver_broadcastOn(false);
|
||||
delayms(50);
|
||||
|
||||
// turn off PWM
|
||||
driver_setDuty(0);
|
||||
|
||||
// set PSU to minimum
|
||||
driver_setPSUVoltage(V_24V);
|
||||
|
||||
accy->stateTimer = sys.systemTime + 500;
|
||||
}
|
||||
|
||||
if (sys.systemTime >= accy->stateTimer)
|
||||
{
|
||||
accy->state = PORT_STATE_STANDBY;
|
||||
//USB_SendString("Broadcast in standby!");
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case PORT_STATE_RUNNING:
|
||||
{
|
||||
if (accy->initState)
|
||||
{
|
||||
//USB_SendString("Broadcast running!");
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user