@@ -43,6 +43,20 @@ namespace serialReceiverLayer
4343#elif defined(HAVE_HWSERIAL3)
4444 _uart = &Serial3;
4545#endif
46+ #elif defined(ARDUINO_ARCH_ESP32)
47+ _uart = &Serial1;
48+
49+ #if defined(D0)
50+ _rxPin = D0;
51+ #else
52+ _rxPin = 0 ;
53+ #endif
54+
55+ #if defined(D1)
56+ _txPin = D1;
57+ #else
58+ _txPin = 1 ;
59+ #endif
4660#else
4761 _uart = &Serial1;
4862#endif
@@ -62,6 +76,43 @@ namespace serialReceiverLayer
6276 {
6377 _uart = hwUartPort;
6478
79+ #if defined(ARDUINO_ARCH_ESP32)
80+ #if defined(D0)
81+ _rxPin = D0;
82+ #else
83+ _rxPin = 0 ;
84+ #endif
85+
86+ #if defined(D1)
87+ _txPin = D1;
88+ #else
89+ _txPin = 1 ;
90+ #endif
91+ #endif
92+
93+ #if CRSF_RC_ENABLED > 0
94+ _rcChannels = new rcChannels_t;
95+ _rcChannels->valid = false ;
96+ _rcChannels->failsafe = false ;
97+ memset (_rcChannels->value , 0 , sizeof (_rcChannels->value ));
98+ #if CRSF_FLIGHTMODES_ENABLED > 0
99+ _flightModes = new flightMode_t[FLIGHT_MODE_COUNT];
100+ #endif
101+ #endif
102+ }
103+
104+ SerialReceiver::SerialReceiver (HardwareSerial *hwUartPort, int8_t rxPin, int8_t txPin)
105+ {
106+ _uart = hwUartPort;
107+
108+ #if defined(ARDUINO_ARCH_ESP32)
109+ _rxPin = rxPin;
110+ _txPin = txPin;
111+ #else
112+ (void )rxPin;
113+ (void )txPin;
114+ #endif
115+
65116#if CRSF_RC_ENABLED > 0
66117 _rcChannels = new rcChannels_t;
67118 _rcChannels->valid = false ;
@@ -77,6 +128,9 @@ namespace serialReceiverLayer
77128 {
78129 _uart = nullptr ;
79130
131+ _rxPin = -1 ;
132+ _txPin = -1 ;
133+
80134#if CRSF_RC_ENABLED > 0
81135 delete _rcChannels;
82136 _rcChannels = nullptr ;
@@ -155,7 +209,11 @@ namespace serialReceiverLayer
155209 crsf = new CRSF ();
156210 crsf->begin ();
157211 crsf->setFrameTime (BAUD_RATE, 10 );
212+ #if defined(ARDUINO_ARCH_ESP32)
213+ _uart->begin (BAUD_RATE, SERIAL_8N1, _rxPin, _txPin);
214+ #else
158215 _uart->begin (BAUD_RATE);
216+ #endif
159217
160218#if CRSF_TELEMETRY_ENABLED > 0
161219 telemetry = new Telemetry ();
0 commit comments