@@ -22,15 +22,17 @@ mod app {
22
22
use usb_device:: prelude:: * ;
23
23
use usb_device:: bus:: UsbBusAllocator ;
24
24
25
- use usbd_serial:: SerialPort ;
26
-
27
25
use bbqueue:: {
28
26
BBBuffer ,
29
27
Consumer ,
30
28
Producer ,
31
29
} ;
32
30
33
31
use crabdac_firmware:: sof_timer:: SofTimer ;
32
+ use crabdac_firmware:: uac:: {
33
+ simple_stereo_output:: SimpleStereoOutput ,
34
+ ClockCounter ,
35
+ } ;
34
36
35
37
const CHANNELS : usize = 2 ;
36
38
const USB_SAMPLE_SIZE : usize = 4 ;
@@ -50,7 +52,7 @@ mod app {
50
52
sof_timer : SofTimer < TIM2 , PA0 < Alternate < 1 > > > ,
51
53
52
54
usb_dev : UsbDevice < ' static , UsbBusType > ,
53
- serial : SerialPort < ' static , UsbBusType >
55
+ usb_audio : SimpleStereoOutput < ' static , UsbBusType > ,
54
56
}
55
57
56
58
#[ monotonic( binds = TIM5 , default = true ) ]
@@ -96,7 +98,12 @@ mod app {
96
98
97
99
* cx. local . usb_bus = Some ( UsbBus :: new ( usb, cx. local . usb_ep_memory ) ) ;
98
100
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
+ ) ;
100
107
101
108
let usb_dev = UsbDeviceBuilder :: new ( cx. local . usb_bus . as_ref ( ) . unwrap ( ) , UsbVidPid ( 0x1209 , 0x0001 ) )
102
109
. manufacturer ( "Crabs Pty Ltd." )
@@ -115,7 +122,7 @@ mod app {
115
122
consumer,
116
123
sof_timer,
117
124
usb_dev,
118
- serial ,
125
+ usb_audio ,
119
126
} ,
120
127
init:: Monotonics ( mono) ,
121
128
)
@@ -132,18 +139,18 @@ mod app {
132
139
133
140
#[ inline( never) ]
134
141
#[ 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 ] ) ]
136
143
fn usb_handler ( cx : usb_handler:: Context ) {
137
144
let producer: & mut bbqueue:: Producer < ' static , BUFFER_SIZE > = cx. local . producer ;
138
145
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 ;
140
147
141
148
// TODO replace this with real USB data
142
149
let bytes_received: usize = MAX_FRAME_SIZE ;
143
150
let data: [ u8 ; MAX_FRAME_SIZE ] = [ 0 ; MAX_FRAME_SIZE ] ;
144
151
let volume_amp: i32 = 1 ;
145
152
146
- while usb_dev. poll ( & mut [ serial ] ) {
153
+ while usb_dev. poll ( & mut [ usb_audio ] ) {
147
154
}
148
155
149
156
//match producer.grant_exact(bytes_received) {
0 commit comments