(&self, arg: usize, size: usize, ty: u8)
| 93 | } |
| 94 | |
| 95 | fn get_event_bits(&self, arg: usize, size: usize, ty: u8) -> AxResult<usize> { |
| 96 | let bits = UserPtr::<u8>::from(arg).get_as_mut_slice(size)?; |
| 97 | if ty == 0 { |
| 98 | Ok(copy_bytes(self.ev_bits.as_bytes(), bits)) |
| 99 | } else { |
| 100 | let ty = EventType::from_repr(ty).ok_or(AxError::InvalidInput)?; |
| 101 | match self.inner.lock().device.get_event_bits(ty, bits) { |
| 102 | Ok(true) => {} |
| 103 | Ok(false) => { |
| 104 | debug!("No events for {ty:?}"); |
| 105 | } |
| 106 | Err(err) => { |
| 107 | warn!("Failed to get event bits: {err:?}"); |
| 108 | } |
| 109 | } |
| 110 | Ok(bits.len().min(ty.bits_count().div_ceil(8))) |
| 111 | } |
| 112 | } |
| 113 | } |
| 114 | |
| 115 | fn copy_bytes(src: &[u8], dst: &mut [u8]) -> usize { |
no test coverage detected