@@ -181,6 +181,33 @@ static uint add_program(PIO pio, const pio_program_t *program, int offset) {
181
181
}
182
182
}
183
183
184
+ static pio_fifo_join compute_fifo_type (int fifo_type_in , bool rx_fifo , bool tx_fifo ) {
185
+ if (fifo_type_in != PIO_FIFO_JOIN_AUTO ) {
186
+ return fifo_type_in ;
187
+ }
188
+ if (!rx_fifo ) {
189
+ return PIO_FIFO_JOIN_TX ;
190
+ }
191
+ if (!tx_fifo ) {
192
+ return PIO_FIFO_JOIN_RX ;
193
+ }
194
+ return PIO_FIFO_JOIN_NONE ;
195
+ }
196
+
197
+ static int compute_fifo_depth (pio_fifo_join join ) {
198
+ if (join == PIO_FIFO_JOIN_TX || join == PIO_FIFO_JOIN_RX ) {
199
+ return 8 ;
200
+ }
201
+
202
+ #if PICO_PIO_VERSION > 0
203
+ if (join == PIO_FIFO_JOIN_PUTGET ) {
204
+ return 0 ;
205
+ }
206
+ #endif
207
+
208
+ return 4 ;
209
+ }
210
+
184
211
bool rp2pio_statemachine_construct (rp2pio_statemachine_obj_t * self ,
185
212
const uint16_t * program , size_t program_len ,
186
213
size_t frequency ,
@@ -355,16 +382,9 @@ bool rp2pio_statemachine_construct(rp2pio_statemachine_obj_t *self,
355
382
356
383
sm_config_set_set_pin_count (& c , set_pin_count );
357
384
358
- enum pio_fifo_join join =
359
- fifo_type != PIO_FIFO_JOIN_AUTO ? fifo_type
360
- : !rx_fifo ? PIO_FIFO_JOIN_TX
361
- : !tx_fifo ? PIO_FIFO_JOIN_RX
362
- : PIO_FIFO_JOIN_NONE ;
363
- self -> fifo_depth = (join == PIO_FIFO_JOIN_TX || join == PIO_FIFO_JOIN_RX ) ? 8
364
- #if PICO_PIO_VERSION > 0
365
- : (join == PIO_FIFO_JOIN_PUTGET ) ? 0
366
- #endif
367
- : 4 ;
385
+ enum pio_fifo_join join = compute_fifo_type (fifo_type , rx_fifo , tx_fifo );
386
+
387
+ self -> fifo_depth = compute_fifo_depth (join );
368
388
369
389
#if PICO_PIO_VERSION > 0
370
390
if (fifo_type == PIO_FIFO_JOIN_TXPUT || fifo_type == PIO_FIFO_JOIN_TXGET ) {
0 commit comments