@@ -58,6 +58,38 @@ void ESP32UARTChannel::begin(const ChannelConfig& conf)
5858 // Install UART driver using an event queue here
5959 uart_driver_install (_uart_num, uart_buffer_size, 0 , uart_queue_size, &_uart_q,
6060 intr_alloc_flags);
61+
62+ controlPins = conf.pins ;
63+
64+ if (controlPins.rts >= 0 )
65+ fnSystem.set_pin_mode (controlPins.rts , gpio_mode_t ::GPIO_MODE_INPUT);
66+ if (controlPins.cts >= 0 )
67+ {
68+ fnSystem.set_pin_mode (controlPins.cts , gpio_mode_t ::GPIO_MODE_OUTPUT);
69+ fnSystem.digital_write (controlPins.cts , DIGI_LOW);
70+ }
71+
72+ if (controlPins.dtr >= 0 )
73+ fnSystem.set_pin_mode (controlPins.dtr , gpio_mode_t ::GPIO_MODE_INPUT);
74+ if (controlPins.dsr >= 0 )
75+ {
76+ fnSystem.set_pin_mode (controlPins.dsr , gpio_mode_t ::GPIO_MODE_OUTPUT);
77+ fnSystem.digital_write (controlPins.dsr , DIGI_LOW);
78+ }
79+
80+ if (controlPins.dcd >= 0 )
81+ {
82+ fnSystem.set_pin_mode (controlPins.dcd , gpio_mode_t ::GPIO_MODE_OUTPUT);
83+ fnSystem.digital_write (controlPins.dcd , DIGI_HIGH);
84+ }
85+
86+ if (controlPins.ri >= 0 )
87+ {
88+ fnSystem.set_pin_mode (controlPins.ri , gpio_mode_t ::GPIO_MODE_OUTPUT);
89+ fnSystem.digital_write (controlPins.ri , DIGI_HIGH);
90+ }
91+
92+ return ;
6193}
6294
6395void ESP32UARTChannel::end ()
@@ -117,36 +149,46 @@ size_t ESP32UARTChannel::dataOut(const void *buffer, size_t size)
117149 return uart_write_bytes (_uart_num, (const char *)buffer, size);
118150}
119151
152+ bool ESP32UARTChannel::getPin (int pin)
153+ {
154+ if (pin < 0 )
155+ return 0 ;
156+ return fnSystem.digital_read (pin) == DIGI_LOW;
157+ }
158+
159+ void ESP32UARTChannel::setPin (int pin, bool state)
160+ {
161+ if (pin >= 0 )
162+ fnSystem.digital_write (pin, !state);
163+ return ;
164+ }
165+
120166bool ESP32UARTChannel::getDTR ()
121167{
122- #if defined(FUJINET_OVER_USB) || !defined(PIN_RS232_DTR)
123- return 0 ;
124- #else /* FUJINET_OVER_USB */
125- return fnSystem.digital_read (PIN_RS232_DTR) == DIGI_LOW;
126- #endif /* FUJINET_OVER_USB */
168+ return getPin (controlPins.dtr );
127169}
128170
129171void ESP32UARTChannel::setDSR (bool state)
130172{
131- #if !defined(FUJINET_OVER_USB) && defined(PIN_RS232_DSR)
132- fnSystem.digital_write (PIN_RS232_DSR, !state);
133- #endif
134- return ;
173+ setPin (controlPins.dsr , state);
135174}
136175
137176bool ESP32UARTChannel::getRTS ()
138177{
139- #if defined(FUJINET_OVER_USB) || !defined(PIN_RS232_RTS)
140- return 0 ;
141- #else /* FUJINET_OVER_USB */
142- return fnSystem.digital_read (PIN_RS232_RTS) == DIGI_LOW;
143- #endif /* FUJINET_OVER_USB */
178+ return getPin (controlPins.rts );
144179}
145180
146181void ESP32UARTChannel::setCTS (bool state)
147182{
148- #if !defined(FUJINET_OVER_USB) && defined(PIN_RS232_CTS)
149- fnSystem.digital_write (PIN_RS232_CTS, !state);
150- #endif
151- return ;
183+ setPin (controlPins.cts , state);
184+ }
185+
186+ void ESP32UARTChannel::setDCD (bool state)
187+ {
188+ setPin (controlPins.dcd , state);
189+ }
190+
191+ void ESP32UARTChannel::setRI (bool state)
192+ {
193+ setPin (controlPins.ri , state);
152194}
0 commit comments