mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-25 01:05:27 +03:00
added smartport telemetry
Conflicts: src/main/telemetry/telemetry.h
This commit is contained in:
parent
d9c2963182
commit
0000d3e65e
10 changed files with 606 additions and 29 deletions
|
@ -39,6 +39,7 @@
|
|||
#include "telemetry/frsky.h"
|
||||
#include "telemetry/hott.h"
|
||||
#include "telemetry/msp.h"
|
||||
#include "telemetry/smartport.h"
|
||||
|
||||
|
||||
static bool isTelemetryConfigurationValid = false; // flag used to avoid repeated configuration checks
|
||||
|
@ -67,13 +68,27 @@ bool isTelemetryProviderMSP(void)
|
|||
return telemetryConfig->telemetry_provider == TELEMETRY_PROVIDER_MSP;
|
||||
}
|
||||
|
||||
bool isTelemetryProviderSmartPort(void)
|
||||
{
|
||||
return telemetryConfig->telemetry_provider == TELEMETRY_PROVIDER_SMARTPORT;
|
||||
}
|
||||
|
||||
bool isTelemetryPortShared(void)
|
||||
{
|
||||
return telemetryPortIsShared;
|
||||
}
|
||||
|
||||
bool canUseTelemetryWithCurrentConfiguration(void)
|
||||
{
|
||||
if (!feature(FEATURE_TELEMETRY)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!canOpenSerialPort(FUNCTION_TELEMETRY)) {
|
||||
if (telemetryConfig->telemetry_provider != TELEMETRY_PROVIDER_SMARTPORT && !canOpenSerialPort(FUNCTION_TELEMETRY)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (telemetryConfig->telemetry_provider == TELEMETRY_PROVIDER_SMARTPORT && !canOpenSerialPort(FUNCTION_SMARTPORT_TELEMETRY)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -82,7 +97,7 @@ bool canUseTelemetryWithCurrentConfiguration(void)
|
|||
|
||||
void initTelemetry()
|
||||
{
|
||||
telemetryPortIsShared = isSerialPortFunctionShared(FUNCTION_TELEMETRY, FUNCTION_MSP);
|
||||
telemetryPortIsShared = isSerialPortFunctionShared(FUNCTION_TELEMETRY, FUNCTION_MSP) | isSerialPortFunctionShared(FUNCTION_SMARTPORT_TELEMETRY, FUNCTION_MSP);
|
||||
isTelemetryConfigurationValid = canUseTelemetryWithCurrentConfiguration();
|
||||
|
||||
if (isTelemetryProviderFrSky()) {
|
||||
|
@ -97,6 +112,10 @@ void initTelemetry()
|
|||
initMSPTelemetry(telemetryConfig);
|
||||
}
|
||||
|
||||
if (isTelemetryProviderSmartPort()) {
|
||||
initSmartPortTelemetry(telemetryConfig);
|
||||
}
|
||||
|
||||
checkTelemetryState();
|
||||
}
|
||||
|
||||
|
@ -105,10 +124,17 @@ bool determineNewTelemetryEnabledState(void)
|
|||
bool enabled = true;
|
||||
|
||||
if (telemetryPortIsShared) {
|
||||
if (telemetryConfig->telemetry_switch)
|
||||
enabled = IS_RC_MODE_ACTIVE(BOXTELEMETRY);
|
||||
else
|
||||
enabled = ARMING_FLAG(ARMED);
|
||||
if (telemetryConfig->telemetry_provider == TELEMETRY_PROVIDER_SMARTPORT) {
|
||||
if (isSmartPortTimedOut()) {
|
||||
enabled = false;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (telemetryConfig->telemetry_switch)
|
||||
enabled = IS_RC_MODE_ACTIVE(BOXTELEMETRY);
|
||||
else
|
||||
enabled = ARMING_FLAG(ARMED);
|
||||
}
|
||||
}
|
||||
|
||||
return enabled;
|
||||
|
@ -132,6 +158,11 @@ uint32_t getTelemetryProviderBaudRate(void)
|
|||
if (isTelemetryProviderMSP()) {
|
||||
return getMSPTelemetryProviderBaudRate();
|
||||
}
|
||||
|
||||
if (isTelemetryProviderSmartPort()) {
|
||||
return getSmartPortTelemetryProviderBaudRate();
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -148,6 +179,10 @@ static void configureTelemetryPort(void)
|
|||
if (isTelemetryProviderMSP()) {
|
||||
configureMSPTelemetryPort();
|
||||
}
|
||||
|
||||
if (isTelemetryProviderSmartPort()) {
|
||||
configureSmartPortTelemetryPort();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -164,6 +199,10 @@ void freeTelemetryPort(void)
|
|||
if (isTelemetryProviderMSP()) {
|
||||
freeMSPTelemetryPort();
|
||||
}
|
||||
|
||||
if (isTelemetryProviderSmartPort()) {
|
||||
freeSmartPortTelemetryPort();
|
||||
}
|
||||
}
|
||||
|
||||
void checkTelemetryState(void)
|
||||
|
@ -206,5 +245,23 @@ void handleTelemetry(void)
|
|||
if (isTelemetryProviderMSP()) {
|
||||
handleMSPTelemetry();
|
||||
}
|
||||
|
||||
if (isTelemetryProviderSmartPort()) {
|
||||
handleSmartPortTelemetry();
|
||||
}
|
||||
}
|
||||
|
||||
bool telemetryAllowsOtherSerial(int serialPortFunction)
|
||||
{
|
||||
if (!feature(FEATURE_TELEMETRY)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (isTelemetryProviderSmartPort() && isSerialPortFunctionShared(FUNCTION_SMARTPORT_TELEMETRY, (serialPortFunction_e)serialPortFunction)) {
|
||||
return canSmartPortAllowOtherSerial();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue