mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-24 00:35:39 +03:00
Multiple telemtry providers can now be active at the same time on any
serial port. MSP telemetry can now be at any baud rate. A pattern is emerging in each telemetry provider, code is duplicated to get things working, refactoring can come later.
This commit is contained in:
parent
3e64ce883c
commit
7dcc7b2fb5
15 changed files with 212 additions and 90 deletions
|
@ -41,9 +41,6 @@
|
|||
#include "telemetry/msp.h"
|
||||
#include "telemetry/smartport.h"
|
||||
|
||||
|
||||
static bool telemetryEnabled = false;
|
||||
|
||||
static telemetryConfig_t *telemetryConfig;
|
||||
|
||||
void useTelemetryConfig(telemetryConfig_t *telemetryConfigToUse)
|
||||
|
@ -51,77 +48,40 @@ void useTelemetryConfig(telemetryConfig_t *telemetryConfigToUse)
|
|||
telemetryConfig = telemetryConfigToUse;
|
||||
}
|
||||
|
||||
void telemetryInit()
|
||||
void telemetryInit(void)
|
||||
{
|
||||
initFrSkyTelemetry(telemetryConfig);
|
||||
|
||||
initHoTTTelemetry(telemetryConfig);
|
||||
|
||||
initMSPTelemetry(telemetryConfig);
|
||||
|
||||
initSmartPortTelemetry(telemetryConfig);
|
||||
|
||||
checkTelemetryState();
|
||||
}
|
||||
|
||||
bool determineNewTelemetryEnabledState(void)
|
||||
bool determineNewTelemetryEnabledState(portSharing_e portSharing)
|
||||
{
|
||||
bool enabled = true;
|
||||
bool enabled = portSharing == PORTSHARING_NOT_SHARED;
|
||||
|
||||
if (telemetryConfig->telemetry_switch)
|
||||
enabled = IS_RC_MODE_ACTIVE(BOXTELEMETRY);
|
||||
else
|
||||
enabled = ARMING_FLAG(ARMED);
|
||||
if (portSharing == PORTSHARING_SHARED) {
|
||||
if (telemetryConfig->telemetry_switch)
|
||||
enabled = IS_RC_MODE_ACTIVE(BOXTELEMETRY);
|
||||
else
|
||||
enabled = ARMING_FLAG(ARMED);
|
||||
}
|
||||
|
||||
return enabled;
|
||||
}
|
||||
|
||||
bool shouldChangeTelemetryStateNow(bool newState)
|
||||
{
|
||||
return newState != telemetryEnabled;
|
||||
}
|
||||
|
||||
static void configureTelemetryPort(void)
|
||||
{
|
||||
configureFrSkyTelemetryPort();
|
||||
configureHoTTTelemetryPort();
|
||||
configureMSPTelemetryPort();
|
||||
configureSmartPortTelemetryPort();
|
||||
}
|
||||
|
||||
void freeTelemetryPort(void)
|
||||
{
|
||||
freeFrSkyTelemetryPort();
|
||||
freeHoTTTelemetryPort();
|
||||
freeMSPTelemetryPort();
|
||||
freeSmartPortTelemetryPort();
|
||||
}
|
||||
|
||||
void checkTelemetryState(void)
|
||||
{
|
||||
bool newEnabledState = determineNewTelemetryEnabledState();
|
||||
|
||||
if (!shouldChangeTelemetryStateNow(newEnabledState)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (newEnabledState)
|
||||
configureTelemetryPort();
|
||||
else
|
||||
freeTelemetryPort();
|
||||
|
||||
telemetryEnabled = newEnabledState;
|
||||
checkFrSkyTelemetryState();
|
||||
checkHoTTTelemetryState();
|
||||
checkMSPTelemetryState();
|
||||
checkSmartPortTelemetryState();
|
||||
}
|
||||
|
||||
void handleTelemetry(void)
|
||||
{
|
||||
if (!determineNewTelemetryEnabledState())
|
||||
return;
|
||||
|
||||
if (!telemetryEnabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
handleFrSkyTelemetry();
|
||||
handleHoTTTelemetry();
|
||||
handleMSPTelemetry();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue