@@ -22,15 +22,17 @@ mod app {
2222 use usb_device:: prelude:: * ;
2323 use usb_device:: bus:: UsbBusAllocator ;
2424
25- use usbd_serial:: SerialPort ;
26-
2725 use bbqueue:: {
2826 BBBuffer ,
2927 Consumer ,
3028 Producer ,
3129 } ;
3230
3331 use crabdac_firmware:: sof_timer:: SofTimer ;
32+ use crabdac_firmware:: uac:: {
33+ simple_stereo_output:: SimpleStereoOutput ,
34+ ClockCounter ,
35+ } ;
3436
3537 const CHANNELS : usize = 2 ;
3638 const USB_SAMPLE_SIZE : usize = 4 ;
@@ -50,7 +52,7 @@ mod app {
5052 sof_timer : SofTimer < TIM2 , PA0 < Alternate < 1 > > > ,
5153
5254 usb_dev : UsbDevice < ' static , UsbBusType > ,
53- serial : SerialPort < ' static , UsbBusType >
55+ usb_audio : SimpleStereoOutput < ' static , UsbBusType > ,
5456 }
5557
5658 #[ monotonic( binds = TIM5 , default = true ) ]
@@ -96,7 +98,12 @@ mod app {
9698
9799 * cx. local . usb_bus = Some ( UsbBus :: new ( usb, cx. local . usb_ep_memory ) ) ;
98100
99- let serial = SerialPort :: new ( & cx. local . usb_bus . as_ref ( ) . unwrap ( ) ) ;
101+ let usb_audio = SimpleStereoOutput :: new (
102+ cx. local . usb_bus . as_ref ( ) . unwrap ( ) ,
103+ 96000 ,
104+ 4 ,
105+ 24
106+ ) ;
100107
101108 let usb_dev = UsbDeviceBuilder :: new ( cx. local . usb_bus . as_ref ( ) . unwrap ( ) , UsbVidPid ( 0x1209 , 0x0001 ) )
102109 . manufacturer ( "Crabs Pty Ltd." )
@@ -115,7 +122,7 @@ mod app {
115122 consumer,
116123 sof_timer,
117124 usb_dev,
118- serial ,
125+ usb_audio ,
119126 } ,
120127 init:: Monotonics ( mono) ,
121128 )
@@ -132,18 +139,18 @@ mod app {
132139
133140 #[ inline( never) ]
134141 #[ link_section = ".data.usb_handler" ]
135- #[ task( binds = OTG_FS , local = [ producer, usb_dev, serial ] ) ]
142+ #[ task( binds = OTG_FS , local = [ producer, usb_dev, usb_audio ] ) ]
136143 fn usb_handler ( cx : usb_handler:: Context ) {
137144 let producer: & mut bbqueue:: Producer < ' static , BUFFER_SIZE > = cx. local . producer ;
138145 let usb_dev: & mut UsbDevice < UsbBusType > = cx. local . usb_dev ;
139- let serial : & mut SerialPort < UsbBusType > = cx. local . serial ;
146+ let usb_audio : & mut SimpleStereoOutput < UsbBusType > = cx. local . usb_audio ;
140147
141148 // TODO replace this with real USB data
142149 let bytes_received: usize = MAX_FRAME_SIZE ;
143150 let data: [ u8 ; MAX_FRAME_SIZE ] = [ 0 ; MAX_FRAME_SIZE ] ;
144151 let volume_amp: i32 = 1 ;
145152
146- while usb_dev. poll ( & mut [ serial ] ) {
153+ while usb_dev. poll ( & mut [ usb_audio ] ) {
147154 }
148155
149156 //match producer.grant_exact(bytes_received) {
0 commit comments