Add new packets
This commit is contained in:
@@ -222,4 +222,107 @@ impl Device for CloudIIWireless {
|
||||
.get_input_report(&mut input_report_buffer)
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
fn execute_headset_specific_functionality(&mut self) -> Result<(), DeviceError> {
|
||||
println!("Writing special sequence");
|
||||
let mut packet = [0u8; 62];
|
||||
packet[0] = 6;
|
||||
packet[2] = 2;
|
||||
packet[4] = 154;
|
||||
packet[7] = 104;
|
||||
packet[8] = 74;
|
||||
packet[9] = 142;
|
||||
packet[10] = 10;
|
||||
packet[14] = 187;
|
||||
packet[15] = 1;
|
||||
self.prepare_write();
|
||||
println!("Writing {:?}", packet);
|
||||
self.state.hid_device.write(&packet)?;
|
||||
std::thread::sleep(Duration::from_millis(200));
|
||||
if let Some(events) = self.wait_for_updates(Duration::from_secs(1)) {
|
||||
println!("{:?}", events);
|
||||
for event in events {
|
||||
self.get_device_state_mut().update_self_with_event(&event);
|
||||
}
|
||||
}
|
||||
let mut packet = [0u8; 62];
|
||||
packet[0] = 6;
|
||||
packet[2] = 0;
|
||||
packet[4] = u8::MAX;
|
||||
packet[7] = 104;
|
||||
packet[8] = 74;
|
||||
packet[9] = 142;
|
||||
self.prepare_write();
|
||||
println!("Writing {:?}", packet);
|
||||
self.state.hid_device.write(&packet)?;
|
||||
std::thread::sleep(Duration::from_millis(200));
|
||||
if let Some(events) = self.wait_for_updates(Duration::from_secs(1)) {
|
||||
println!("{:?}", events);
|
||||
for event in events {
|
||||
self.get_device_state_mut().update_self_with_event(&event);
|
||||
}
|
||||
}
|
||||
let mut packet = [0u8; 62];
|
||||
packet[0] = 6;
|
||||
packet[2] = 2;
|
||||
packet[4] = 154;
|
||||
packet[7] = 104;
|
||||
packet[8] = 74;
|
||||
packet[9] = 142;
|
||||
packet[10] = 10;
|
||||
packet[14] = 187;
|
||||
packet[15] = 17;
|
||||
self.prepare_write();
|
||||
println!("Writing {:?}", packet);
|
||||
self.state.hid_device.write(&packet)?;
|
||||
std::thread::sleep(Duration::from_millis(200));
|
||||
if let Some(events) = self.wait_for_updates(Duration::from_secs(1)) {
|
||||
println!("{:?}", events);
|
||||
for event in events {
|
||||
self.get_device_state_mut().update_self_with_event(&event);
|
||||
}
|
||||
}
|
||||
let mut packet = [0u8; 62];
|
||||
packet[0] = 6;
|
||||
packet[2] = 2;
|
||||
packet[4] = 154;
|
||||
packet[7] = 104;
|
||||
packet[8] = 74;
|
||||
packet[9] = 142;
|
||||
packet[10] = 10;
|
||||
packet[14] = 187;
|
||||
packet[15] = 29;
|
||||
self.prepare_write();
|
||||
println!("Writing {:?}", packet);
|
||||
self.state.hid_device.write(&packet)?;
|
||||
std::thread::sleep(Duration::from_millis(200));
|
||||
if let Some(events) = self.wait_for_updates(Duration::from_secs(1)) {
|
||||
println!("{:?}", events);
|
||||
for event in events {
|
||||
self.get_device_state_mut().update_self_with_event(&event);
|
||||
}
|
||||
}
|
||||
let mut packet = [0u8; 62];
|
||||
packet[0] = 6;
|
||||
packet[2] = 2;
|
||||
packet[4] = 154;
|
||||
packet[7] = 104;
|
||||
packet[8] = 74;
|
||||
packet[9] = 142;
|
||||
packet[10] = 10;
|
||||
packet[14] = 187;
|
||||
packet[15] = 9;
|
||||
self.prepare_write();
|
||||
println!("Writing {:?}", packet);
|
||||
self.state.hid_device.write(&packet)?;
|
||||
std::thread::sleep(Duration::from_millis(200));
|
||||
if let Some(events) = self.wait_for_updates(Duration::from_secs(1)) {
|
||||
println!("{:?}", events);
|
||||
for event in events {
|
||||
self.get_device_state_mut().update_self_with_event(&event);
|
||||
}
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -330,6 +330,9 @@ pub trait Device {
|
||||
fn get_device_state(&self) -> &DeviceState;
|
||||
fn get_device_state_mut(&mut self) -> &mut DeviceState;
|
||||
fn prepare_write(&mut self) {}
|
||||
fn execute_headset_specific_functionality(&mut self) -> Result<(), DeviceError> {
|
||||
Ok(())
|
||||
}
|
||||
fn wait_for_updates(&mut self, duration: Duration) -> Option<Vec<DeviceEvent>> {
|
||||
let mut buf = [0u8; RESPONSE_BUFFER_SIZE];
|
||||
let res = self
|
||||
@@ -362,6 +365,8 @@ pub trait Device {
|
||||
self.get_voice_prompt_packet(),
|
||||
];
|
||||
|
||||
self.execute_headset_specific_functionality()?;
|
||||
|
||||
let mut responded = false;
|
||||
for packet in packets.into_iter().flatten() {
|
||||
self.prepare_write();
|
||||
|
||||
Reference in New Issue
Block a user