MCPcopy Create free account
hub / github.com/OpenActionAPI/rust-elgato-streamdeck / write_image_data_reports

Method write_image_data_reports

src/lib.rs:486–515  ·  view source on GitHub ↗
(&self, image_data: &[u8], parameters: WriteImageParameters, header_fn: T)

Source from the content-addressed store, hash-verified

484 }
485
486 fn write_image_data_reports<T>(&self, image_data: &[u8], parameters: WriteImageParameters, header_fn: T) -> Result<(), StreamDeckError>
487 where
488 T: Fn(usize, usize, bool) -> Vec<u8>,
489 {
490 let image_report_length = parameters.image_report_length;
491 let image_report_payload_length = parameters.image_report_payload_length;
492
493 let mut page_number = 0;
494 let mut bytes_remaining = image_data.len();
495
496 while bytes_remaining > 0 {
497 let this_length = bytes_remaining.min(image_report_payload_length);
498 let bytes_sent = page_number * image_report_payload_length;
499
500 // Selecting header based on device
501 let mut buf: Vec<u8> = header_fn(page_number, this_length, this_length == bytes_remaining);
502
503 buf.extend(&image_data[bytes_sent..bytes_sent + this_length]);
504
505 // Adding padding
506 buf.extend(vec![0u8; image_report_length - buf.len()]);
507
508 write_data(&self.device, &buf)?;
509
510 bytes_remaining -= this_length;
511 page_number += 1;
512 }
513
514 Ok(())
515 }
516}
517
518#[derive(Clone, Copy)]

Callers 3

send_imageMethod · 0.80
write_lcdMethod · 0.80
write_lcd_fillMethod · 0.80

Calls 1

write_dataFunction · 0.85

Tested by

no test coverage detected