mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-21 23:35:34 +03:00
Cleaned up implementation of MSP port releasing when shared.
This commit is contained in:
parent
7b831f94ee
commit
0cd8c62568
6 changed files with 15 additions and 14 deletions
|
@ -778,7 +778,7 @@ bool processRx(timeUs_t currentTimeUs)
|
||||||
if ((!telemetryConfig()->telemetry_switch && ARMING_FLAG(ARMED)) ||
|
if ((!telemetryConfig()->telemetry_switch && ARMING_FLAG(ARMED)) ||
|
||||||
(telemetryConfig()->telemetry_switch && IS_RC_MODE_ACTIVE(BOXTELEMETRY))) {
|
(telemetryConfig()->telemetry_switch && IS_RC_MODE_ACTIVE(BOXTELEMETRY))) {
|
||||||
|
|
||||||
releaseSharedTelemetryPorts();
|
mspSerialReleaseSharedTelemetryPorts();
|
||||||
} else {
|
} else {
|
||||||
// the telemetry state must be checked immediately so that shared serial ports are released.
|
// the telemetry state must be checked immediately so that shared serial ports are released.
|
||||||
telemetryCheckState();
|
telemetryCheckState();
|
||||||
|
|
|
@ -51,6 +51,9 @@ typedef enum {
|
||||||
FUNCTION_LIDAR_TF = (1 << 15), // 32768
|
FUNCTION_LIDAR_TF = (1 << 15), // 32768
|
||||||
} serialPortFunction_e;
|
} serialPortFunction_e;
|
||||||
|
|
||||||
|
#define TELEMETRY_SHAREABLE_PORT_FUNCTIONS_MASK (FUNCTION_TELEMETRY_FRSKY_HUB | FUNCTION_TELEMETRY_LTM | FUNCTION_TELEMETRY_MAVLINK)
|
||||||
|
#define TELEMETRY_PORT_FUNCTIONS_MASK (TELEMETRY_SHAREABLE_PORT_FUNCTIONS_MASK | FUNCTION_TELEMETRY_HOTT | FUNCTION_TELEMETRY_SMARTPORT)
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
BAUD_AUTO = 0,
|
BAUD_AUTO = 0,
|
||||||
BAUD_9600,
|
BAUD_9600,
|
||||||
|
|
|
@ -80,6 +80,16 @@ void mspSerialReleasePortIfAllocated(serialPort_t *serialPort)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(USE_TELEMETRY)
|
||||||
|
void mspSerialReleaseSharedTelemetryPorts(void) {
|
||||||
|
serialPort_t *sharedPort = findSharedSerialPort(TELEMETRY_PORT_FUNCTIONS_MASK, FUNCTION_MSP);
|
||||||
|
while (sharedPort) {
|
||||||
|
mspSerialReleasePortIfAllocated(sharedPort);
|
||||||
|
sharedPort = findNextSharedSerialPort(TELEMETRY_PORT_FUNCTIONS_MASK, FUNCTION_MSP);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static bool mspSerialProcessReceivedData(mspPort_t *mspPort, uint8_t c)
|
static bool mspSerialProcessReceivedData(mspPort_t *mspPort, uint8_t c)
|
||||||
{
|
{
|
||||||
switch (mspPort->c_state) {
|
switch (mspPort->c_state) {
|
||||||
|
|
|
@ -115,5 +115,6 @@ bool mspSerialWaiting(void);
|
||||||
void mspSerialProcess(mspEvaluateNonMspData_e evaluateNonMspData, mspProcessCommandFnPtr mspProcessCommandFn, mspProcessReplyFnPtr mspProcessReplyFn);
|
void mspSerialProcess(mspEvaluateNonMspData_e evaluateNonMspData, mspProcessCommandFnPtr mspProcessCommandFn, mspProcessReplyFnPtr mspProcessReplyFn);
|
||||||
void mspSerialAllocatePorts(void);
|
void mspSerialAllocatePorts(void);
|
||||||
void mspSerialReleasePortIfAllocated(struct serialPort_s *serialPort);
|
void mspSerialReleasePortIfAllocated(struct serialPort_s *serialPort);
|
||||||
|
void mspSerialReleaseSharedTelemetryPorts(void);
|
||||||
int mspSerialPush(uint8_t cmd, uint8_t *data, int datalen, mspDirection_e direction);
|
int mspSerialPush(uint8_t cmd, uint8_t *data, int datalen, mspDirection_e direction);
|
||||||
uint32_t mspSerialTxBytesFree(void);
|
uint32_t mspSerialTxBytesFree(void);
|
||||||
|
|
|
@ -221,12 +221,4 @@ void telemetryProcess(uint32_t currentTime)
|
||||||
handleIbusTelemetry();
|
handleIbusTelemetry();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void releaseSharedTelemetryPorts(void) {
|
|
||||||
serialPort_t *sharedPort = findSharedSerialPort(TELEMETRY_PORT_FUNCTIONS_MASK, FUNCTION_MSP);
|
|
||||||
while (sharedPort) {
|
|
||||||
mspSerialReleasePortIfAllocated(sharedPort);
|
|
||||||
sharedPort = findNextSharedSerialPort(TELEMETRY_PORT_FUNCTIONS_MASK, FUNCTION_MSP);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -58,9 +58,6 @@ typedef struct telemetryConfig_s {
|
||||||
|
|
||||||
PG_DECLARE(telemetryConfig_t, telemetryConfig);
|
PG_DECLARE(telemetryConfig_t, telemetryConfig);
|
||||||
|
|
||||||
#define TELEMETRY_SHAREABLE_PORT_FUNCTIONS_MASK (FUNCTION_TELEMETRY_FRSKY_HUB | FUNCTION_TELEMETRY_LTM | FUNCTION_TELEMETRY_MAVLINK)
|
|
||||||
#define TELEMETRY_PORT_FUNCTIONS_MASK (TELEMETRY_SHAREABLE_PORT_FUNCTIONS_MASK | FUNCTION_TELEMETRY_HOTT | FUNCTION_TELEMETRY_SMARTPORT)
|
|
||||||
|
|
||||||
extern serialPort_t *telemetrySharedPort;
|
extern serialPort_t *telemetrySharedPort;
|
||||||
|
|
||||||
void telemetryInit(void);
|
void telemetryInit(void);
|
||||||
|
@ -70,5 +67,3 @@ void telemetryCheckState(void);
|
||||||
void telemetryProcess(uint32_t currentTime);
|
void telemetryProcess(uint32_t currentTime);
|
||||||
|
|
||||||
bool telemetryDetermineEnabledState(portSharing_e portSharing);
|
bool telemetryDetermineEnabledState(portSharing_e portSharing);
|
||||||
|
|
||||||
void releaseSharedTelemetryPorts(void);
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue