Skip to content

Commit dee4879

Browse files
committed
Factor out compute_fifo_type, compute_fifo_depth
this replaces difficult to understand inline ?: operator use.
1 parent c32f507 commit dee4879

File tree

1 file changed

+30
-10
lines changed

1 file changed

+30
-10
lines changed

ports/raspberrypi/common-hal/rp2pio/StateMachine.c

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,33 @@ static uint add_program(PIO pio, const pio_program_t *program, int offset) {
181181
}
182182
}
183183

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+
184211
bool rp2pio_statemachine_construct(rp2pio_statemachine_obj_t *self,
185212
const uint16_t *program, size_t program_len,
186213
size_t frequency,
@@ -355,16 +382,9 @@ bool rp2pio_statemachine_construct(rp2pio_statemachine_obj_t *self,
355382

356383
sm_config_set_set_pin_count(&c, set_pin_count);
357384

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);
368388

369389
#if PICO_PIO_VERSION > 0
370390
if (fifo_type == PIO_FIFO_JOIN_TXPUT || fifo_type == PIO_FIFO_JOIN_TXGET) {

0 commit comments

Comments
 (0)