1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-14 03:50:02 +03:00

Separate resources for SOFTSERIAL_TX & SOFTSERIAL_RX (#11786)

* Addressed review comments

* Unify USE_SOFTSERIAL

---------

Co-authored-by: Mark Haslinghuis <mark@numloq.nl>
This commit is contained in:
Andrey Mironov 2023-06-18 03:25:01 +03:00 committed by GitHub
parent d1eb214332
commit a98364fa55
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
17 changed files with 35 additions and 70 deletions

View file

@ -5027,7 +5027,7 @@ const cliResourceValue_t resourceTable[] = {
#ifdef USE_INVERTER
DEFA( OWNER_INVERTER, PG_SERIAL_PIN_CONFIG, serialPinConfig_t, ioTagInverter[0], SERIAL_PORT_MAX_INDEX ),
#endif
#if defined(USE_SOFTSERIAL1) || defined(USE_SOFTSERIAL2)
#if defined(USE_SOFTSERIAL)
DEFA( OWNER_SOFTSERIAL_TX, PG_SOFTSERIAL_PIN_CONFIG, softSerialPinConfig_t, ioTagTx[0], SOFTSERIAL_COUNT ),
DEFA( OWNER_SOFTSERIAL_RX, PG_SOFTSERIAL_PIN_CONFIG, softSerialPinConfig_t, ioTagRx[0], SOFTSERIAL_COUNT ),
#endif

View file

@ -423,7 +423,7 @@ static void validateAndFixConfig(void)
featureDisableImmediate(FEATURE_RX_SERIAL);
#endif
#if !defined(USE_SOFTSERIAL1) && !defined(USE_SOFTSERIAL2)
#if !defined(USE_SOFTSERIAL)
featureDisableImmediate(FEATURE_SOFTSERIAL);
#endif

View file

@ -90,19 +90,7 @@ typedef struct serialPort_s {
uint8_t identifier;
} serialPort_t;
// TODO(hertz@): adjust this to include all the UARTDevice_e elements + necessary SOFTSERIALS
// # define SERIAL_PORT_MAX_INDEX MAX_UARTDEV
# define SERIAL_PORT_MAX_INDEX 11
#if defined(USE_SOFTSERIAL1) || defined(USE_SOFTSERIAL2)
# ifdef USE_SOFTSERIAL2
# define SOFTSERIAL_COUNT 2
# else
# define SOFTSERIAL_COUNT 1
# endif
#else
// avoid zero-sized arrays when no software serials are enabled
# define SOFTSERIAL_COUNT 1
#endif
#define SERIAL_PORT_MAX_INDEX 11
typedef struct serialPinConfig_s {
ioTag_t ioTagTx[SERIAL_PORT_MAX_INDEX];
@ -112,12 +100,16 @@ typedef struct serialPinConfig_s {
PG_DECLARE(serialPinConfig_t, serialPinConfig);
typedef struct softDSserialPinConfig_s {
#if defined(USE_SOFTSERIAL)
#define SOFTSERIAL_COUNT 2
typedef struct softSerialPinConfig_s {
ioTag_t ioTagTx[SOFTSERIAL_COUNT];
ioTag_t ioTagRx[SOFTSERIAL_COUNT];
} softSerialPinConfig_t;
PG_DECLARE(softSerialPinConfig_t, softSerialPinConfig);
#endif
struct serialPortVTable {
void (*serialWrite)(serialPort_t *instance, uint8_t ch);

View file

@ -170,16 +170,14 @@
# endif
#endif
#ifdef USE_SOFTSERIAL1
#ifdef USE_SOFTSERIAL
# if !defined(SOFTSERIAL1_RX_PIN)
# define SOFTSERIAL1_RX_PIN NONE
# endif
# if !defined(SOFTSERIAL1_TX_PIN)
# define SOFTSERIAL1_TX_PIN NONE
# endif
#endif
#ifdef USE_SOFTSERIAL2
# if !defined(SOFTSERIAL2_RX_PIN)
# define SOFTSERIAL2_RX_PIN NONE
# endif
@ -188,7 +186,7 @@
# endif
#endif
#if defined(USE_UART) || defined(USE_SOFTSERIAL1) || defined(USE_SOFTSERIAL1)
#if defined(USE_UART) || defined(USE_SOFTSERIAL)
typedef struct serialDefaultPin_s {
serialPortIdentifier_e ident;
ioTag_t rxIO, txIO, inverterIO;
@ -242,17 +240,15 @@ void pgResetFn_serialPinConfig(serialPinConfig_t *serialPinConfig)
}
}
#if defined(USE_SOFTSERIAL1) || defined(USE_SOFTSERIAL1)
#if defined(USE_SOFTSERIAL)
typedef struct softSerialDefaultPin_s {
serialPortIdentifier_e ident;
ioTag_t rxIO, txIO;
} softSerialDefaultPin_t;
static const softSerialDefaultPin_t softSerialDefaultPin[SOFTSERIAL_COUNT] = {
#ifdef USE_SOFTSERIAL1
#ifdef USE_SOFTSERIAL
{ SERIAL_PORT_SOFTSERIAL1, IO_TAG(SOFTSERIAL1_RX_PIN), IO_TAG(SOFTSERIAL1_TX_PIN) },
#endif
#ifdef USE_SOFTSERIAL2
{ SERIAL_PORT_SOFTSERIAL2, IO_TAG(SOFTSERIAL2_RX_PIN), IO_TAG(SOFTSERIAL2_TX_PIN) },
#endif
};

View file

@ -28,7 +28,7 @@
#include "platform.h"
#if defined(USE_SOFTSERIAL1) || defined(USE_SOFTSERIAL2)
#if defined(USE_SOFTSERIAL)
#include "build/build_config.h"
#include "build/atomic.h"
@ -47,11 +47,7 @@
#define RX_TOTAL_BITS 10
#define TX_TOTAL_BITS 10
#if defined(USE_SOFTSERIAL1) && defined(USE_SOFTSERIAL2)
#define MAX_SOFTSERIAL_PORTS 2
#else
#define MAX_SOFTSERIAL_PORTS 1
#endif
typedef enum {
TIMER_MODE_SINGLE,

View file

@ -41,10 +41,11 @@ typedef enum {
UARTDEV_9 = 8,
UARTDEV_10 = 9,
LPUARTDEV_1 = 10,
MAX_UARTDEV = LPUARTDEV_1,
UARTDEV_COUNT
} UARTDevice_e;
STATIC_ASSERT(UARTDEV_COUNT == SERIAL_PORT_MAX_INDEX, serial_pinconfig_does_not_match_uartdevs);
typedef struct uartPort_s {
serialPort_t port;

View file

@ -34,7 +34,7 @@
#include "drivers/system.h"
#include "drivers/serial.h"
#include "drivers/serial_uart.h"
#if defined(USE_SOFTSERIAL1) || defined(USE_SOFTSERIAL2)
#if defined(USE_SOFTSERIAL)
#include "drivers/serial_softserial.h"
#endif
@ -99,10 +99,8 @@ const serialPortIdentifier_e serialPortIdentifiers[SERIAL_PORT_COUNT] = {
#ifdef USE_UART10
SERIAL_PORT_USART10,
#endif
#ifdef USE_SOFTSERIAL1
#ifdef USE_SOFTSERIAL
SERIAL_PORT_SOFTSERIAL1,
#endif
#ifdef USE_SOFTSERIAL2
SERIAL_PORT_SOFTSERIAL2,
#endif
#ifdef USE_LPUART1
@ -358,7 +356,7 @@ serialPort_t *openSerialPort(
portMode_e mode,
portOptions_e options)
{
#if !(defined(USE_UART) || defined(USE_SOFTSERIAL1) || defined(USE_SOFTSERIAL2))
#if !(defined(USE_UART) || defined(USE_SOFTSERIAL))
UNUSED(rxCallback);
UNUSED(rxCallbackData);
UNUSED(baudRate);
@ -424,12 +422,10 @@ serialPort_t *openSerialPort(
break;
#endif
#ifdef USE_SOFTSERIAL1
#ifdef USE_SOFTSERIAL
case SERIAL_PORT_SOFTSERIAL1:
serialPort = openSoftSerial(SOFTSERIAL1, rxCallback, rxCallbackData, baudRate, mode, options);
break;
#endif
#ifdef USE_SOFTSERIAL2
case SERIAL_PORT_SOFTSERIAL2:
serialPort = openSoftSerial(SOFTSERIAL2, rxCallback, rxCallbackData, baudRate, mode, options);
break;
@ -467,7 +463,7 @@ void closeSerialPort(serialPort_t *serialPort)
void serialInit(bool softserialEnabled, serialPortIdentifier_e serialPortToDisable)
{
#if !defined(USE_SOFTSERIAL1) && !defined(USE_SOFTSERIAL2)
#if !defined(USE_SOFTSERIAL)
UNUSED(softserialEnabled);
#endif
@ -496,17 +492,12 @@ void serialInit(bool softserialEnabled, serialPortIdentifier_e serialPortToDisab
}
}
#endif
else if ((serialPortUsageList[index].identifier == SERIAL_PORT_SOFTSERIAL1
#ifdef USE_SOFTSERIAL1
&& !(softserialEnabled && (softSerialPinConfig()->ioTagTx[SOFTSERIAL1] ||
softSerialPinConfig()->ioTagRx[SOFTSERIAL1]))
#ifdef USE_SOFTSERIAL
else if (!softserialEnabled &&
((softSerialPinConfig()->ioTagTx[SOFTSERIAL1] || serialPortUsageList[index].identifier == SERIAL_PORT_SOFTSERIAL1) ||
(softSerialPinConfig()->ioTagTx[SOFTSERIAL2] || serialPortUsageList[index].identifier == SERIAL_PORT_SOFTSERIAL2)))
#endif
) || (serialPortUsageList[index].identifier == SERIAL_PORT_SOFTSERIAL2
#ifdef USE_SOFTSERIAL2
&& !(softserialEnabled && (softSerialPinConfig()->ioTagTx[SOFTSERIAL2] ||
softSerialPinConfig()->ioTagRx[SOFTSERIAL2]))
#endif
)) {
{
serialPortUsageList[index].identifier = SERIAL_PORT_NONE;
serialPortCount--;
}

View file

@ -666,7 +666,7 @@ static bool mspCommonProcessOutCommand(int16_t cmdMSP, sbuf_t *dst, mspPostProce
#ifdef USE_VCP
targetCapabilities |= BIT(TARGET_HAS_VCP);
#endif
#if defined(USE_SOFTSERIAL1) || defined(USE_SOFTSERIAL2)
#if defined(USE_SOFTSERIAL)
targetCapabilities |= BIT(TARGET_HAS_SOFTSERIAL);
#endif
targetCapabilities |= BIT(TARGET_IS_UNIFIED);

View file

@ -92,9 +92,6 @@
#define USE_UART7
#define USE_UART8
//#define USE_SOFTSERIAL1
//#define USE_SOFTSERIAL2
#define SERIAL_PORT_COUNT 8
#define DEFAULT_RX_FEATURE FEATURE_RX_MSP

View file

@ -65,8 +65,7 @@
#define USE_VCP
#define USE_SOFTSERIAL1
#define USE_SOFTSERIAL2
#define USE_SOFTSERIAL
#define UNIFIED_SERIAL_PORT_COUNT 3

View file

@ -64,8 +64,7 @@
#define USE_VCP
#define USE_SOFTSERIAL1
#define USE_SOFTSERIAL2
#define USE_SOFTSERIAL
#define UNIFIED_SERIAL_PORT_COUNT 3

View file

@ -72,8 +72,7 @@
#define USE_VCP
#define USE_SOFTSERIAL1
#define USE_SOFTSERIAL2
#define USE_SOFTSERIAL
#define UNIFIED_SERIAL_PORT_COUNT 3

View file

@ -64,8 +64,7 @@
#define USE_VCP
#define USE_SOFTSERIAL1
#define USE_SOFTSERIAL2
#define USE_SOFTSERIAL
#define UNIFIED_SERIAL_PORT_COUNT 3

View file

@ -63,8 +63,7 @@
#define USE_VCP
#define USE_SOFTSERIAL1
#define USE_SOFTSERIAL2
#define USE_SOFTSERIAL
#define UNIFIED_SERIAL_PORT_COUNT 3

View file

@ -83,8 +83,7 @@
#define USE_VCP
#define USE_SOFTSERIAL1
#define USE_SOFTSERIAL2
#define USE_SOFTSERIAL
#define UNIFIED_SERIAL_PORT_COUNT 3

View file

@ -72,8 +72,7 @@
#define USE_VCP
#define USE_SOFTSERIAL1
#define USE_SOFTSERIAL2
#define USE_SOFTSERIAL
#define UNIFIED_SERIAL_PORT_COUNT 3

View file

@ -89,8 +89,7 @@
#define USE_VCP
#define USE_SOFTSERIAL1
#define USE_SOFTSERIAL2
#define USE_SOFTSERIAL
#define UNIFIED_SERIAL_PORT_COUNT 3