diff --git a/rog-platform/examples/ally-gamepad-calibration.rs b/rog-platform/examples/ally-gamepad-calibration.rs index 6846e161..9dce2c30 100644 --- a/rog-platform/examples/ally-gamepad-calibration.rs +++ b/rog-platform/examples/ally-gamepad-calibration.rs @@ -26,41 +26,63 @@ pub fn main() -> Result<(), Box> { let node = usb_node.unwrap(); - // - C = command - // - L = length - // - D1, D2 ?? - // LEFT STICK - // C L D1 D2 7 8 9 10 11 12 13 14 15 16 17 18 19 - // 5a,d1,0d,0e,01,01,08,af,03,f9,0d,65,08,38,03,23,0d,4d,e5, - // RIGHT STICK - // 5a,d1,0d,0e,01,02,08,6f,03,ca,0d,15,08,0b,02,f8,0d,1e,9e, - // LEFT TRIGGER - // 5a,d1,0d,06,01,03,0a,2f,0d,e8,2e, - // RIGHT TRIGGER - // 5a,d1,0d,06,01,04,09,f7,0e,56,64, let mut packet: [u8; 64] = [ - 0x5a, 0xd1, 0x0d, 0x06, 0x01, 0x03, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x5a, 0xd1, 0x0d, 0x0e, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ]; - packet[7] = 0x2f; // - packet[8] = 0x0d; // - packet[9] = 0xec; // - packet[10] = 0x33; // packet[11] = 0x00; // - // packet[12] = 0x65; // - // packet[13] = 0x08; // - // packet[14] = 0x38; // - // packet[15] = 0x03; // - // packet[16] = 0x23; // - // packet[17] = 0x0d; // - // packet[18] = 0x4d; // - // packet[19] = 0xe5; // + let x_stable = 2107; + let x_min = 815; + let x_max = 3399; + + let y_stable = 2223; + let y_min = 1020; + let y_max = 3427; + + let bb = |n: u32| ((n & 0xff00) >> 8) as u8; + let lb = |n: u32| (n & 0xff) as u8; + + let checksum = |bytes: &[u8]| { + let total = bytes.iter().fold(0, |a, n| a as u32 + (*n) as u32); + total as u8 + }; + + packet[6] = bb(y_stable); + packet[7] = lb(y_stable); + packet[8] = bb(y_min); + packet[9] = lb(y_min); + packet[10] = bb(y_max); + packet[11] = lb(y_max); + packet[12] = bb(x_stable); + packet[13] = lb(x_stable); + packet[14] = bb(x_min); + packet[15] = lb(x_min); + packet[16] = bb(x_max); + packet[17] = lb(x_max); + packet[18] = checksum(&packet[6..=17]); + + for n in &packet[6..=17] { + print!("{:0x},", n); + } + println!(); + println!("Checksum: {:0x}", packet[18]); node.write_bytes(&packet)?; + let reset = false; + if reset { + let packet: [u8; 64] = [ + 0x5a, 0xd1, 0x0d, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + ]; + node.write_bytes(&packet)?; + } // Apply let packet: [u8; 64] = [ 0x5a, 0xd1, 0x0d, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, diff --git a/rog-platform/examples/ally-set-qam-secondary.rs b/rog-platform/examples/ally-set-qam-secondary.rs index 2b0720a5..c3365ea8 100644 --- a/rog-platform/examples/ally-set-qam-secondary.rs +++ b/rog-platform/examples/ally-set-qam-secondary.rs @@ -1,6 +1,4 @@ use std::error::Error; -use std::thread::sleep; -use std::time::Duration; use rog_aura::usb::AuraDevice; use rog_platform::hid_raw::HidRaw;