examples: request_handler is mutable
This commit is contained in:
		
							parent
							
								
									41415fae0d
								
							
						
					
					
						commit
						9341ef3b47
					
				@ -54,7 +54,7 @@ async fn main(_spawner: Spawner) {
 | 
				
			|||||||
    let mut bos_descriptor = [0; 256];
 | 
					    let mut bos_descriptor = [0; 256];
 | 
				
			||||||
    let mut msos_descriptor = [0; 256];
 | 
					    let mut msos_descriptor = [0; 256];
 | 
				
			||||||
    let mut control_buf = [0; 64];
 | 
					    let mut control_buf = [0; 64];
 | 
				
			||||||
    let request_handler = MyRequestHandler {};
 | 
					    let mut request_handler = MyRequestHandler {};
 | 
				
			||||||
    let mut device_handler = MyDeviceHandler::new();
 | 
					    let mut device_handler = MyDeviceHandler::new();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let mut state = State::new();
 | 
					    let mut state = State::new();
 | 
				
			||||||
@ -73,7 +73,7 @@ async fn main(_spawner: Spawner) {
 | 
				
			|||||||
    // Create classes on the builder.
 | 
					    // Create classes on the builder.
 | 
				
			||||||
    let config = embassy_usb::class::hid::Config {
 | 
					    let config = embassy_usb::class::hid::Config {
 | 
				
			||||||
        report_descriptor: KeyboardReport::desc(),
 | 
					        report_descriptor: KeyboardReport::desc(),
 | 
				
			||||||
        request_handler: Some(&request_handler),
 | 
					        request_handler: None,
 | 
				
			||||||
        poll_ms: 60,
 | 
					        poll_ms: 60,
 | 
				
			||||||
        max_packet_size: 64,
 | 
					        max_packet_size: 64,
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
@ -137,7 +137,7 @@ async fn main(_spawner: Spawner) {
 | 
				
			|||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let out_fut = async {
 | 
					    let out_fut = async {
 | 
				
			||||||
        reader.run(false, &request_handler).await;
 | 
					        reader.run(false, &mut request_handler).await;
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Run everything concurrently.
 | 
					    // Run everything concurrently.
 | 
				
			||||||
@ -153,7 +153,7 @@ impl RequestHandler for MyRequestHandler {
 | 
				
			|||||||
        None
 | 
					        None
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    fn set_report(&self, id: ReportId, data: &[u8]) -> OutResponse {
 | 
					    fn set_report(&mut self, id: ReportId, data: &[u8]) -> OutResponse {
 | 
				
			||||||
        info!("Set report for {:?}: {=[u8]}", id, data);
 | 
					        info!("Set report for {:?}: {=[u8]}", id, data);
 | 
				
			||||||
        OutResponse::Accepted
 | 
					        OutResponse::Accepted
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
@ -47,7 +47,7 @@ async fn main(_spawner: Spawner) {
 | 
				
			|||||||
    let mut bos_descriptor = [0; 256];
 | 
					    let mut bos_descriptor = [0; 256];
 | 
				
			||||||
    let mut msos_descriptor = [0; 256];
 | 
					    let mut msos_descriptor = [0; 256];
 | 
				
			||||||
    let mut control_buf = [0; 64];
 | 
					    let mut control_buf = [0; 64];
 | 
				
			||||||
    let request_handler = MyRequestHandler {};
 | 
					    let mut request_handler = MyRequestHandler {};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let mut state = State::new();
 | 
					    let mut state = State::new();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -63,7 +63,7 @@ async fn main(_spawner: Spawner) {
 | 
				
			|||||||
    // Create classes on the builder.
 | 
					    // Create classes on the builder.
 | 
				
			||||||
    let config = embassy_usb::class::hid::Config {
 | 
					    let config = embassy_usb::class::hid::Config {
 | 
				
			||||||
        report_descriptor: MouseReport::desc(),
 | 
					        report_descriptor: MouseReport::desc(),
 | 
				
			||||||
        request_handler: Some(&request_handler),
 | 
					        request_handler: Some(&mut request_handler),
 | 
				
			||||||
        poll_ms: 60,
 | 
					        poll_ms: 60,
 | 
				
			||||||
        max_packet_size: 8,
 | 
					        max_packet_size: 8,
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
@ -110,7 +110,7 @@ impl RequestHandler for MyRequestHandler {
 | 
				
			|||||||
        None
 | 
					        None
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    fn set_report(&self, id: ReportId, data: &[u8]) -> OutResponse {
 | 
					    fn set_report(&mut self, id: ReportId, data: &[u8]) -> OutResponse {
 | 
				
			||||||
        info!("Set report for {:?}: {=[u8]}", id, data);
 | 
					        info!("Set report for {:?}: {=[u8]}", id, data);
 | 
				
			||||||
        OutResponse::Accepted
 | 
					        OutResponse::Accepted
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
@ -41,7 +41,7 @@ async fn main(_spawner: Spawner) {
 | 
				
			|||||||
    // You can also add a Microsoft OS descriptor.
 | 
					    // You can also add a Microsoft OS descriptor.
 | 
				
			||||||
    let mut msos_descriptor = [0; 256];
 | 
					    let mut msos_descriptor = [0; 256];
 | 
				
			||||||
    let mut control_buf = [0; 64];
 | 
					    let mut control_buf = [0; 64];
 | 
				
			||||||
    let request_handler = MyRequestHandler {};
 | 
					    let mut request_handler = MyRequestHandler {};
 | 
				
			||||||
    let mut device_handler = MyDeviceHandler::new();
 | 
					    let mut device_handler = MyDeviceHandler::new();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let mut state = State::new();
 | 
					    let mut state = State::new();
 | 
				
			||||||
@ -60,7 +60,7 @@ async fn main(_spawner: Spawner) {
 | 
				
			|||||||
    // Create classes on the builder.
 | 
					    // Create classes on the builder.
 | 
				
			||||||
    let config = embassy_usb::class::hid::Config {
 | 
					    let config = embassy_usb::class::hid::Config {
 | 
				
			||||||
        report_descriptor: KeyboardReport::desc(),
 | 
					        report_descriptor: KeyboardReport::desc(),
 | 
				
			||||||
        request_handler: Some(&request_handler),
 | 
					        request_handler: None,
 | 
				
			||||||
        poll_ms: 60,
 | 
					        poll_ms: 60,
 | 
				
			||||||
        max_packet_size: 64,
 | 
					        max_packet_size: 64,
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
@ -114,7 +114,7 @@ async fn main(_spawner: Spawner) {
 | 
				
			|||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let out_fut = async {
 | 
					    let out_fut = async {
 | 
				
			||||||
        reader.run(false, &request_handler).await;
 | 
					        reader.run(false, &mut request_handler).await;
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Run everything concurrently.
 | 
					    // Run everything concurrently.
 | 
				
			||||||
@ -130,7 +130,7 @@ impl RequestHandler for MyRequestHandler {
 | 
				
			|||||||
        None
 | 
					        None
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    fn set_report(&self, id: ReportId, data: &[u8]) -> OutResponse {
 | 
					    fn set_report(&mut self, id: ReportId, data: &[u8]) -> OutResponse {
 | 
				
			||||||
        info!("Set report for {:?}: {=[u8]}", id, data);
 | 
					        info!("Set report for {:?}: {=[u8]}", id, data);
 | 
				
			||||||
        OutResponse::Accepted
 | 
					        OutResponse::Accepted
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
@ -44,7 +44,7 @@ async fn main(_spawner: Spawner) {
 | 
				
			|||||||
    // You can also add a Microsoft OS descriptor.
 | 
					    // You can also add a Microsoft OS descriptor.
 | 
				
			||||||
    let mut msos_descriptor = [0; 256];
 | 
					    let mut msos_descriptor = [0; 256];
 | 
				
			||||||
    let mut control_buf = [0; 64];
 | 
					    let mut control_buf = [0; 64];
 | 
				
			||||||
    let request_handler = MyRequestHandler {};
 | 
					    let mut request_handler = MyRequestHandler {};
 | 
				
			||||||
    let mut device_handler = MyDeviceHandler::new();
 | 
					    let mut device_handler = MyDeviceHandler::new();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let mut state = State::new();
 | 
					    let mut state = State::new();
 | 
				
			||||||
@ -63,7 +63,7 @@ async fn main(_spawner: Spawner) {
 | 
				
			|||||||
    // Create classes on the builder.
 | 
					    // Create classes on the builder.
 | 
				
			||||||
    let config = embassy_usb::class::hid::Config {
 | 
					    let config = embassy_usb::class::hid::Config {
 | 
				
			||||||
        report_descriptor: MouseReport::desc(),
 | 
					        report_descriptor: MouseReport::desc(),
 | 
				
			||||||
        request_handler: Some(&request_handler),
 | 
					        request_handler: None,
 | 
				
			||||||
        poll_ms: 60,
 | 
					        poll_ms: 60,
 | 
				
			||||||
        max_packet_size: 64,
 | 
					        max_packet_size: 64,
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
@ -106,7 +106,7 @@ async fn main(_spawner: Spawner) {
 | 
				
			|||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let out_fut = async {
 | 
					    let out_fut = async {
 | 
				
			||||||
        reader.run(false, &request_handler).await;
 | 
					        reader.run(false, &mut request_handler).await;
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Run everything concurrently.
 | 
					    // Run everything concurrently.
 | 
				
			||||||
@ -122,7 +122,7 @@ impl RequestHandler for MyRequestHandler {
 | 
				
			|||||||
        None
 | 
					        None
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    fn set_report(&self, id: ReportId, data: &[u8]) -> OutResponse {
 | 
					    fn set_report(&mut self, id: ReportId, data: &[u8]) -> OutResponse {
 | 
				
			||||||
        info!("Set report for {:?}: {=[u8]}", id, data);
 | 
					        info!("Set report for {:?}: {=[u8]}", id, data);
 | 
				
			||||||
        OutResponse::Accepted
 | 
					        OutResponse::Accepted
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
@ -76,7 +76,7 @@ async fn main(_spawner: Spawner) {
 | 
				
			|||||||
    let mut msos_descriptor = [0; 256];
 | 
					    let mut msos_descriptor = [0; 256];
 | 
				
			||||||
    let mut control_buf = [0; 64];
 | 
					    let mut control_buf = [0; 64];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let request_handler = MyRequestHandler {};
 | 
					    let mut request_handler = MyRequestHandler {};
 | 
				
			||||||
    let mut device_handler = MyDeviceHandler::new();
 | 
					    let mut device_handler = MyDeviceHandler::new();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let mut state = State::new();
 | 
					    let mut state = State::new();
 | 
				
			||||||
@ -95,7 +95,7 @@ async fn main(_spawner: Spawner) {
 | 
				
			|||||||
    // Create classes on the builder.
 | 
					    // Create classes on the builder.
 | 
				
			||||||
    let config = embassy_usb::class::hid::Config {
 | 
					    let config = embassy_usb::class::hid::Config {
 | 
				
			||||||
        report_descriptor: KeyboardReport::desc(),
 | 
					        report_descriptor: KeyboardReport::desc(),
 | 
				
			||||||
        request_handler: Some(&request_handler),
 | 
					        request_handler: None,
 | 
				
			||||||
        poll_ms: 60,
 | 
					        poll_ms: 60,
 | 
				
			||||||
        max_packet_size: 8,
 | 
					        max_packet_size: 8,
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
@ -148,7 +148,7 @@ async fn main(_spawner: Spawner) {
 | 
				
			|||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let out_fut = async {
 | 
					    let out_fut = async {
 | 
				
			||||||
        reader.run(false, &request_handler).await;
 | 
					        reader.run(false, &mut request_handler).await;
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Run everything concurrently.
 | 
					    // Run everything concurrently.
 | 
				
			||||||
@ -164,7 +164,7 @@ impl RequestHandler for MyRequestHandler {
 | 
				
			|||||||
        None
 | 
					        None
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    fn set_report(&self, id: ReportId, data: &[u8]) -> OutResponse {
 | 
					    fn set_report(&mut self, id: ReportId, data: &[u8]) -> OutResponse {
 | 
				
			||||||
        info!("Set report for {:?}: {=[u8]}", id, data);
 | 
					        info!("Set report for {:?}: {=[u8]}", id, data);
 | 
				
			||||||
        OutResponse::Accepted
 | 
					        OutResponse::Accepted
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
@ -68,7 +68,7 @@ async fn main(_spawner: Spawner) {
 | 
				
			|||||||
    let mut bos_descriptor = [0; 256];
 | 
					    let mut bos_descriptor = [0; 256];
 | 
				
			||||||
    let mut control_buf = [0; 64];
 | 
					    let mut control_buf = [0; 64];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let request_handler = MyRequestHandler {};
 | 
					    let mut request_handler = MyRequestHandler {};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let mut state = State::new();
 | 
					    let mut state = State::new();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -84,7 +84,7 @@ async fn main(_spawner: Spawner) {
 | 
				
			|||||||
    // Create classes on the builder.
 | 
					    // Create classes on the builder.
 | 
				
			||||||
    let config = embassy_usb::class::hid::Config {
 | 
					    let config = embassy_usb::class::hid::Config {
 | 
				
			||||||
        report_descriptor: MouseReport::desc(),
 | 
					        report_descriptor: MouseReport::desc(),
 | 
				
			||||||
        request_handler: Some(&request_handler),
 | 
					        request_handler: Some(&mut request_handler),
 | 
				
			||||||
        poll_ms: 60,
 | 
					        poll_ms: 60,
 | 
				
			||||||
        max_packet_size: 8,
 | 
					        max_packet_size: 8,
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
@ -131,7 +131,7 @@ impl RequestHandler for MyRequestHandler {
 | 
				
			|||||||
        None
 | 
					        None
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    fn set_report(&self, id: ReportId, data: &[u8]) -> OutResponse {
 | 
					    fn set_report(&mut self, id: ReportId, data: &[u8]) -> OutResponse {
 | 
				
			||||||
        info!("Set report for {:?}: {=[u8]}", id, data);
 | 
					        info!("Set report for {:?}: {=[u8]}", id, data);
 | 
				
			||||||
        OutResponse::Accepted
 | 
					        OutResponse::Accepted
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
@ -54,7 +54,7 @@ async fn main(_spawner: Spawner) {
 | 
				
			|||||||
    let mut config_descriptor = [0; 256];
 | 
					    let mut config_descriptor = [0; 256];
 | 
				
			||||||
    let mut bos_descriptor = [0; 256];
 | 
					    let mut bos_descriptor = [0; 256];
 | 
				
			||||||
    let mut control_buf = [0; 64];
 | 
					    let mut control_buf = [0; 64];
 | 
				
			||||||
    let request_handler = MyRequestHandler {};
 | 
					    let mut request_handler = MyRequestHandler {};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let mut state = State::new();
 | 
					    let mut state = State::new();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -70,7 +70,7 @@ async fn main(_spawner: Spawner) {
 | 
				
			|||||||
    // Create classes on the builder.
 | 
					    // Create classes on the builder.
 | 
				
			||||||
    let config = embassy_usb::class::hid::Config {
 | 
					    let config = embassy_usb::class::hid::Config {
 | 
				
			||||||
        report_descriptor: MouseReport::desc(),
 | 
					        report_descriptor: MouseReport::desc(),
 | 
				
			||||||
        request_handler: Some(&request_handler),
 | 
					        request_handler: Some(&mut request_handler),
 | 
				
			||||||
        poll_ms: 60,
 | 
					        poll_ms: 60,
 | 
				
			||||||
        max_packet_size: 8,
 | 
					        max_packet_size: 8,
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
@ -117,7 +117,7 @@ impl RequestHandler for MyRequestHandler {
 | 
				
			|||||||
        None
 | 
					        None
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    fn set_report(&self, id: ReportId, data: &[u8]) -> OutResponse {
 | 
					    fn set_report(&mut self, id: ReportId, data: &[u8]) -> OutResponse {
 | 
				
			||||||
        info!("Set report for {:?}: {=[u8]}", id, data);
 | 
					        info!("Set report for {:?}: {=[u8]}", id, data);
 | 
				
			||||||
        OutResponse::Accepted
 | 
					        OutResponse::Accepted
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user