@@ -1075,36 +1075,27 @@ bool common_hal_rp2pio_statemachine_background_write(rp2pio_statemachine_obj_t *
10751075 if (!self -> loop_write_buf_info .info .len ) {
10761076 // If once_write_buf and loop_write_buf have zero length, write loop2_write_buf forever
10771077 self -> once_write_buf_info = self -> loop2_write_buf_info ;
1078- self -> once_write_buf_obj = self -> loop2_write_buf_obj ;
10791078 self -> loop_write_buf_info = self -> loop2_write_buf_info ;
1080- self -> loop_write_buf_obj = self -> loop2_write_buf_obj ;
10811079 } else {
10821080 if (!(self -> loop2_write_buf_info .info .len )) {
10831081 // If once_write_buf and loop2_write_buf have zero length, write loop_write_buf forever
10841082 self -> once_write_buf_info = self -> loop_write_buf_info ;
1085- self -> once_write_buf_obj = self -> loop_write_buf_obj ;
10861083 self -> loop2_write_buf_info = self -> loop_write_buf_info ;
1087- self -> loop2_write_buf_obj = self -> loop_write_buf_obj ;
10881084 } else {
10891085 // If only once_write_buf has zero length, write loop_write_buf, loop2_write_buf, and repeat last two forever
10901086 self -> once_write_buf_info = self -> loop_write_buf_info ;
1091- self -> once_write_buf_obj = self -> loop_write_buf_obj ;
10921087 self -> loop_write_buf_info = self -> loop2_write_buf_info ;
1093- self -> loop_write_buf_obj = self -> loop2_write_buf_obj ;
10941088 self -> loop2_write_buf_info = self -> once_write_buf_info ;
1095- self -> loop2_write_buf_obj = self -> once_write_buf_obj ;
10961089 }
10971090 }
10981091 } else {
10991092 if (!(self -> loop_write_buf_info .info .len )) {
11001093 // If once_write_buf has nonzero length and loop_write_buf has zero length, write once_write_buf, loop2_write_buf and repeat last buf forever
11011094 self -> loop_write_buf_info = self -> loop2_write_buf_info ;
1102- self -> loop_write_buf_obj = self -> loop2_write_buf_obj ;
11031095 } else {
11041096 if (!self -> loop2_write_buf_info .info .len ) {
11051097 // If once_write_buf has nonzero length and loop2_write_buf have zero length, write once_write_buf, loop_write_buf and repeat last buf forever
11061098 self -> loop2_write_buf_info = self -> loop_write_buf_info ;
1107- self -> loop2_write_buf_obj = self -> loop_write_buf_obj ;
11081099 }
11091100 }
11101101 }
@@ -1128,11 +1119,8 @@ bool common_hal_rp2pio_statemachine_background_write(rp2pio_statemachine_obj_t *
11281119
11291120 common_hal_mcu_disable_interrupts ();
11301121 self -> next_write_buf_1 = self -> once_write_buf_info ;
1131- self -> next_write_buf_1_obj = self -> once_write_buf_obj ;
11321122 self -> next_write_buf_2 = self -> loop_write_buf_info ;
1133- self -> next_write_buf_2_obj = self -> loop_write_buf_obj ;
11341123 self -> next_write_buf_3 = self -> loop2_write_buf_info ;
1135- self -> next_write_buf_3_obj = self -> loop2_write_buf_obj ;
11361124 self -> pending_buffers_write = pending_buffers_write ;
11371125
11381126 if (self -> dma_completed_write && self -> next_write_buf_1 .info .len ) {
@@ -1159,13 +1147,9 @@ bool common_hal_rp2pio_statemachine_background_write(rp2pio_statemachine_obj_t *
11591147 dma_channel_config c_write ;
11601148
11611149 self -> current_write_buf = self -> once_write_buf_info ;
1162- self -> current_write_buf_obj = self -> once_write_buf_obj ;
11631150 self -> next_write_buf_1 = self -> loop_write_buf_info ;
1164- self -> next_write_buf_1_obj = self -> loop_write_buf_obj ;
11651151 self -> next_write_buf_2 = self -> loop2_write_buf_info ;
1166- self -> next_write_buf_2_obj = self -> loop2_write_buf_obj ;
11671152 self -> next_write_buf_3 = self -> loop_write_buf_info ;
1168- self -> next_write_buf_3_obj = self -> loop_write_buf_obj ;
11691153
11701154 self -> pending_buffers_write = pending_buffers_write ;
11711155 self -> dma_completed_write = false;
@@ -1201,13 +1185,9 @@ bool common_hal_rp2pio_statemachine_background_write(rp2pio_statemachine_obj_t *
12011185
12021186void rp2pio_statemachine_dma_complete_write (rp2pio_statemachine_obj_t * self , int channel_write ) {
12031187 self -> current_write_buf = self -> next_write_buf_1 ;
1204- self -> current_write_buf_obj = self -> next_write_buf_1_obj ;
12051188 self -> next_write_buf_1 = self -> next_write_buf_2 ;
1206- self -> next_write_buf_1_obj = self -> next_write_buf_2_obj ;
12071189 self -> next_write_buf_2 = self -> next_write_buf_3 ;
1208- self -> next_write_buf_2_obj = self -> next_write_buf_3_obj ;
12091190 self -> next_write_buf_3 = self -> next_write_buf_1 ;
1210- self -> next_write_buf_3_obj = self -> next_write_buf_1_obj ;
12111191
12121192 if (self -> current_write_buf .info .buf ) {
12131193 if (self -> pending_buffers_write > 0 ) {
@@ -1260,36 +1240,28 @@ bool common_hal_rp2pio_statemachine_background_read(rp2pio_statemachine_obj_t *s
12601240 if (!(self -> loop_read_buf_info .info .len )) {
12611241 // If once_read_buf and loop_read_buf have zero length, read loop2_read_buf forever
12621242 self -> once_read_buf_info = self -> loop2_read_buf_info ;
1263- self -> once_read_buf_obj = self -> loop2_read_buf_obj ;
12641243 self -> loop_read_buf_info = self -> loop2_read_buf_info ;
1265- self -> loop_read_buf_obj = self -> loop2_read_buf_obj ;
12661244 } else {
12671245 if (!(self -> loop2_read_buf_info .info .len )) {
12681246 // If once_read_buf and loop2_read_buf have zero length, read loop_read_buf forever
12691247 self -> once_read_buf_info = self -> loop_read_buf_info ;
1270- self -> once_read_buf_obj = self -> loop_read_buf_obj ;
12711248 self -> loop2_read_buf_info = self -> loop_read_buf_info ;
1272- self -> loop2_read_buf_obj = self -> loop_read_buf_obj ;
12731249 } else {
12741250 // If only once_read_buf has zero length, read loop_read_buf, loop2_read_buf, and repeat last two forever
12751251 self -> once_read_buf_info = self -> loop_read_buf_info ;
1276- self -> once_read_buf_obj = self -> loop_read_buf_obj ;
12771252 self -> loop_read_buf_info = self -> loop2_read_buf_info ;
1278- self -> loop_read_buf_obj = self -> loop2_read_buf_obj ;
12791253 self -> loop2_read_buf_info = self -> once_read_buf_info ;
1280- self -> loop2_read_buf_obj = self -> once_read_buf_obj ;
12811254 }
12821255 }
12831256 } else {
12841257 if (!(self -> loop_read_buf_info .info .len )) {
12851258 // If once_read_buf has nonzero length and loop_read_buf has zero length, read once_read_buf, loop2_read_buf and repeat last buf forever
12861259 self -> loop_read_buf_info = self -> loop2_read_buf_info ;
1287- self -> loop_read_buf_obj = self -> loop2_read_buf_obj ;
12881260 } else {
12891261 if (!(self -> loop2_read_buf_info .info .len )) {
12901262 // If once_read_buf has nonzero length and loop2_read_buf have zero length, read once_read_buf, loop_read_buf and repeat last buf forever
12911263 self -> loop2_read_buf_info = self -> loop_read_buf_info ;
1292- self -> loop2_read_buf_obj = self -> loop_read_buf_obj ;
1264+
12931265 }
12941266 }
12951267 }
@@ -1311,11 +1283,8 @@ bool common_hal_rp2pio_statemachine_background_read(rp2pio_statemachine_obj_t *s
13111283
13121284 common_hal_mcu_disable_interrupts ();
13131285 self -> next_read_buf_1 = self -> once_read_buf_info ;
1314- self -> next_read_buf_1_obj = self -> once_read_buf_obj ;
13151286 self -> next_read_buf_2 = self -> loop_read_buf_info ;
1316- self -> next_read_buf_2_obj = self -> loop_read_buf_obj ;
13171287 self -> next_read_buf_3 = self -> loop2_read_buf_info ;
1318- self -> next_read_buf_3_obj = self -> loop2_read_buf_obj ;
13191288 self -> pending_buffers_read = pending_buffers_read ;
13201289
13211290 if (self -> dma_completed_read && self -> next_read_buf_1 .info .len ) {
@@ -1343,13 +1312,9 @@ bool common_hal_rp2pio_statemachine_background_read(rp2pio_statemachine_obj_t *s
13431312 dma_channel_config c_read ;
13441313
13451314 self -> current_read_buf = self -> once_read_buf_info ;
1346- self -> current_read_buf_obj = self -> once_read_buf_obj ;
13471315 self -> next_read_buf_1 = self -> loop_read_buf_info ;
1348- self -> next_read_buf_1_obj = self -> loop_read_buf_obj ;
13491316 self -> next_read_buf_2 = self -> loop2_read_buf_info ;
1350- self -> next_read_buf_2_obj = self -> loop2_read_buf_obj ;
13511317 self -> next_read_buf_3 = self -> loop_read_buf_info ;
1352- self -> next_read_buf_3_obj = self -> loop_read_buf_obj ;
13531318
13541319 self -> pending_buffers_read = pending_buffers_read ;
13551320 self -> dma_completed_read = false;
@@ -1384,13 +1349,9 @@ bool common_hal_rp2pio_statemachine_background_read(rp2pio_statemachine_obj_t *s
13841349void rp2pio_statemachine_dma_complete_read (rp2pio_statemachine_obj_t * self , int channel_read ) {
13851350
13861351 self -> current_read_buf = self -> next_read_buf_1 ;
1387- self -> current_read_buf_obj = self -> next_read_buf_1_obj ;
13881352 self -> next_read_buf_1 = self -> next_read_buf_2 ;
1389- self -> next_read_buf_1_obj = self -> next_read_buf_2_obj ;
13901353 self -> next_read_buf_2 = self -> next_read_buf_3 ;
1391- self -> next_read_buf_2_obj = self -> next_read_buf_3_obj ;
13921354 self -> next_read_buf_3 = self -> next_read_buf_1 ;
1393- self -> next_read_buf_3_obj = self -> next_read_buf_1_obj ;
13941355
13951356 if (self -> current_read_buf .info .buf ) {
13961357 if (self -> pending_buffers_read > 0 ) {
@@ -1452,19 +1413,29 @@ mp_obj_t common_hal_rp2pio_statemachine_get_rxfifo(rp2pio_statemachine_obj_t *se
14521413mp_obj_t common_hal_rp2pio_statemachine_get_last_read (rp2pio_statemachine_obj_t * self ) {
14531414 if (self -> switched_read_buffers ) {
14541415 self -> switched_read_buffers = false;
1455- return self -> next_read_buf_1_obj ;
1416+ return self -> next_read_buf_1 . obj ;
14561417 }
14571418 return mp_const_empty_bytes ;
14581419}
14591420
14601421mp_obj_t common_hal_rp2pio_statemachine_get_last_write (rp2pio_statemachine_obj_t * self ) {
14611422 if (self -> switched_write_buffers ) {
14621423 self -> switched_write_buffers = false;
1463- return self -> next_write_buf_1_obj ;
1424+ return self -> next_write_buf_1 . obj ;
14641425 }
14651426 return mp_const_empty_bytes ;
14661427}
14671428
1429+ bool common_hal_rp2pio_statemachine_process (rp2pio_statemachine_obj_t * self , uint8_t stride_in_bytes ,
1430+ sm_buf_info * target_buf_info , sm_buf_info * parameters_buf_info , sm_buf_info * input_buf_info ) {
1431+ for (void * i = target_buf_info -> info .buf ; i < target_buf_info -> info .buf + (target_buf_info -> info .len * stride_in_bytes ); i += stride_in_bytes )
1432+ {};
1433+
1434+ return 1 ;
1435+ }
1436+
1437+
1438+
14681439// Use a compile-time constant for MP_REGISTER_POINTER so the preprocessor will
14691440// not split the expansion across multiple lines.
14701441MP_REGISTER_ROOT_POINTER (mp_obj_t background_pio [enum_NUM_DMA_CHANNELS ]);
0 commit comments