1919use  embassy_executor:: Spawner ; 
2020use  esp_backtrace as  _; 
2121use  esp_hal:: { 
22+     dma:: DmaRxStreamBuf , 
2223    dma_buffers, 
24+     dma_buffers_chunk_size, 
2325    i2s:: master:: { DataFormat ,  I2s ,  Standard } , 
2426    time:: Rate , 
2527    timer:: timg:: TimerGroup , 
@@ -44,7 +46,7 @@ async fn main(_spawner: Spawner) {
4446        } 
4547    } 
4648
47-     let  ( rx_buffer,  rx_descriptors,  _,  _)  = dma_buffers ! ( 4092  *  4 ,  0 ) ; 
49+     let  ( rx_buffer,  rx_descriptors,  _,  _)  = dma_buffers_chunk_size ! ( 4092  *  4 ,  0 ,   4092 ) ; 
4850
4951    let  i2s = I2s :: new ( 
5052        peripherals. I2S0 , 
@@ -58,23 +60,26 @@ async fn main(_spawner: Spawner) {
5860    #[ cfg( not( feature = "esp32" ) ) ]  
5961    let  i2s = i2s. with_mclk ( peripherals. GPIO0 ) ; 
6062
61-     let  mut   i2s_rx = i2s
63+     let  i2s_rx = i2s
6264        . i2s_rx 
6365        . with_bclk ( peripherals. GPIO2 ) 
6466        . with_ws ( peripherals. GPIO4 ) 
6567        . with_din ( peripherals. GPIO5 ) 
66-         . build ( rx_descriptors ) ; 
68+         . build ( ) ; 
6769
6870    let  buffer = rx_buffer; 
6971    println ! ( "Start" ) ; 
7072
7173    let  mut  data = [ 0u8 ;  5000 ] ; 
72-     let  mut  transaction = i2s_rx. read_dma_circular_async ( buffer) . unwrap ( ) ; 
74+     let  mut  transaction = i2s_rx
75+         . read ( DmaRxStreamBuf :: new ( rx_descriptors,  buffer) . unwrap ( ) ,  4092 ) 
76+         . unwrap ( ) ; 
7377    loop  { 
74-         let  avail = transaction. available ( ) . await . unwrap ( ) ; 
78+         transaction. wait_for_available ( ) . await . unwrap ( ) ; 
79+         let  avail = transaction. available_bytes ( ) ; 
7580        println ! ( "available {}" ,  avail) ; 
7681
77-         let  count = transaction. pop ( & mut  data) . await . unwrap ( ) ; 
82+         let  count = transaction. pop ( & mut  data) ; 
7883
7984        #[ cfg( not( feature = "esp32s2" ) ) ]  
8085        println ! ( 
0 commit comments