@@ -32,10 +32,16 @@ extern void serialEvent1() __attribute__((weak));
3232extern void serialEvent2 () __attribute__((weak));
3333
3434bool SerialUART::setRX (pin_size_t pin) {
35- constexpr uint32_t valid[2 ] = { __bitset ({1 , 13 , 17 , 29 }) /* UART0 */ ,
35+ #ifdef RP2350B
36+ constexpr uint64_t valid[2 ] = { __bitset ({1 , 13 , 17 , 29 , 33 , 45 }) /* UART0 */ ,
37+ __bitset ({5 , 9 , 21 , 25 , 37 , 41 }) /* UART1 */
38+ };
39+ #else
40+ constexpr uint64_t valid[2 ] = { __bitset ({1 , 13 , 17 , 29 }) /* UART0 */ ,
3641 __bitset ({5 , 9 , 21 , 25 }) /* UART1 */
3742 };
38- if ((!_running) && ((1 << pin) & valid[uart_get_index (_uart)])) {
43+ #endif
44+ if ((!_running) && ((1LL << pin) & valid[uart_get_index (_uart)])) {
3945 _rx = pin;
4046 return true ;
4147 }
@@ -53,10 +59,16 @@ bool SerialUART::setRX(pin_size_t pin) {
5359}
5460
5561bool SerialUART::setTX (pin_size_t pin) {
56- constexpr uint32_t valid[2 ] = { __bitset ({0 , 12 , 16 , 28 }) /* UART0 */ ,
62+ #ifdef RP2350B
63+ constexpr uint64_t valid[2 ] = { __bitset ({0 , 12 , 16 , 28 , 32 , 44 }) /* UART0 */ ,
64+ __bitset ({4 , 8 , 20 , 24 , 36 , 40 }) /* UART1 */
65+ };
66+ #else
67+ constexpr uint64_t valid[2 ] = { __bitset ({0 , 12 , 16 , 28 }) /* UART0 */ ,
5768 __bitset ({4 , 8 , 20 , 24 }) /* UART1 */
5869 };
59- if ((!_running) && ((1 << pin) & valid[uart_get_index (_uart)])) {
70+ #endif
71+ if ((!_running) && ((1LL << pin) & valid[uart_get_index (_uart)])) {
6072 _tx = pin;
6173 return true ;
6274 }
@@ -74,10 +86,16 @@ bool SerialUART::setTX(pin_size_t pin) {
7486}
7587
7688bool SerialUART::setRTS (pin_size_t pin) {
77- constexpr uint32_t valid[2 ] = { __bitset ({3 , 15 , 19 }) /* UART0 */ ,
89+ #ifdef RP2350B
90+ constexpr uint64_t valid[2 ] = { __bitset ({3 , 15 , 19 , 31 , 35 , 47 }) /* UART0 */ ,
91+ __bitset ({7 , 11 , 23 , 27 , 39 , 43 }) /* UART1 */
92+ };
93+ #else
94+ constexpr uint64_t valid[2 ] = { __bitset ({3 , 15 , 19 }) /* UART0 */ ,
7895 __bitset ({7 , 11 , 23 , 27 }) /* UART1 */
7996 };
80- if ((!_running) && ((pin == UART_PIN_NOT_DEFINED) || ((1 << pin) & valid[uart_get_index (_uart)]))) {
97+ #endif
98+ if ((!_running) && ((pin == UART_PIN_NOT_DEFINED) || ((1LL << pin) & valid[uart_get_index (_uart)]))) {
8199 _rts = pin;
82100 return true ;
83101 }
@@ -95,10 +113,16 @@ bool SerialUART::setRTS(pin_size_t pin) {
95113}
96114
97115bool SerialUART::setCTS (pin_size_t pin) {
98- constexpr uint32_t valid[2 ] = { __bitset ({2 , 14 , 18 }) /* UART0 */ ,
116+ #ifdef RP2350B
117+ constexpr uint64_t valid[2 ] = { __bitset ({2 , 14 , 18 , 30 , 34 , 46 }) /* UART0 */ ,
118+ __bitset ({6 , 10 , 22 , 26 , 38 , 42 }) /* UART1 */
119+ };
120+ #else
121+ constexpr uint64_t valid[2 ] = { __bitset ({2 , 14 , 18 }) /* UART0 */ ,
99122 __bitset ({6 , 10 , 22 , 26 }) /* UART1 */
100123 };
101- if ((!_running) && ((pin == UART_PIN_NOT_DEFINED) || ((1 << pin) & valid[uart_get_index (_uart)]))) {
124+ #endif
125+ if ((!_running) && ((pin == UART_PIN_NOT_DEFINED) || ((1LL << pin) & valid[uart_get_index (_uart)]))) {
102126 _cts = pin;
103127 return true ;
104128 }
0 commit comments