mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-01-30 03:24:03 +00:00
Merge "Uwb Hal: use fs::write instead of File::write" am: 995445a080
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2575093 Change-Id: Ib2e55308e7ec86ae1e0ff433bb2150eeab0cf117 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -6,8 +6,8 @@ use android_hardware_uwb::binder;
|
|||||||
use async_trait::async_trait;
|
use async_trait::async_trait;
|
||||||
use binder::{Result, Strong};
|
use binder::{Result, Strong};
|
||||||
|
|
||||||
use tokio::fs::File;
|
use tokio::fs::{self, File};
|
||||||
use tokio::io::{AsyncReadExt, AsyncWriteExt};
|
use tokio::io::AsyncReadExt;
|
||||||
use tokio::sync::Mutex;
|
use tokio::sync::Mutex;
|
||||||
|
|
||||||
use std::os::fd::AsRawFd;
|
use std::os::fd::AsRawFd;
|
||||||
@@ -22,7 +22,6 @@ enum State {
|
|||||||
callbacks: Strong<dyn IUwbClientCallback>,
|
callbacks: Strong<dyn IUwbClientCallback>,
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
tasks: tokio::task::JoinSet<()>,
|
tasks: tokio::task::JoinSet<()>,
|
||||||
write: File,
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -65,17 +64,11 @@ impl IUwbChipAsyncServer for UwbChip {
|
|||||||
async fn open(&self, callbacks: &Strong<dyn IUwbClientCallback>) -> Result<()> {
|
async fn open(&self, callbacks: &Strong<dyn IUwbClientCallback>) -> Result<()> {
|
||||||
log::debug!("open: {:?}", &self.path);
|
log::debug!("open: {:?}", &self.path);
|
||||||
|
|
||||||
let serial = File::open(&self.path)
|
let mut serial = File::open(&self.path)
|
||||||
.await
|
.await
|
||||||
.and_then(makeraw)
|
.and_then(makeraw)
|
||||||
.map_err(|_| binder::StatusCode::UNKNOWN_ERROR)?;
|
.map_err(|_| binder::StatusCode::UNKNOWN_ERROR)?;
|
||||||
|
|
||||||
let mut read = serial
|
|
||||||
.try_clone()
|
|
||||||
.await
|
|
||||||
.map_err(|_| binder::StatusCode::UNKNOWN_ERROR)?;
|
|
||||||
let write = serial;
|
|
||||||
|
|
||||||
let mut state = self.state.lock().await;
|
let mut state = self.state.lock().await;
|
||||||
|
|
||||||
if let State::Closed = *state {
|
if let State::Closed = *state {
|
||||||
@@ -88,14 +81,16 @@ impl IUwbChipAsyncServer for UwbChip {
|
|||||||
const UWB_HEADER_SIZE: usize = 4;
|
const UWB_HEADER_SIZE: usize = 4;
|
||||||
|
|
||||||
let mut buffer = vec![0; UWB_HEADER_SIZE];
|
let mut buffer = vec![0; UWB_HEADER_SIZE];
|
||||||
read.read_exact(&mut buffer[0..UWB_HEADER_SIZE])
|
serial
|
||||||
|
.read_exact(&mut buffer[0..UWB_HEADER_SIZE])
|
||||||
.await
|
.await
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
let length = buffer[3] as usize + UWB_HEADER_SIZE;
|
let length = buffer[3] as usize + UWB_HEADER_SIZE;
|
||||||
|
|
||||||
buffer.resize(length, 0);
|
buffer.resize(length, 0);
|
||||||
read.read_exact(&mut buffer[UWB_HEADER_SIZE..length])
|
serial
|
||||||
|
.read_exact(&mut buffer[UWB_HEADER_SIZE..length])
|
||||||
.await
|
.await
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
@@ -108,7 +103,6 @@ impl IUwbChipAsyncServer for UwbChip {
|
|||||||
*state = State::Opened {
|
*state = State::Opened {
|
||||||
callbacks: callbacks.clone(),
|
callbacks: callbacks.clone(),
|
||||||
tasks,
|
tasks,
|
||||||
write,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
@@ -155,11 +149,10 @@ impl IUwbChipAsyncServer for UwbChip {
|
|||||||
async fn sendUciMessage(&self, data: &[u8]) -> Result<i32> {
|
async fn sendUciMessage(&self, data: &[u8]) -> Result<i32> {
|
||||||
log::debug!("sendUciMessage");
|
log::debug!("sendUciMessage");
|
||||||
|
|
||||||
if let State::Opened { write, .. } = &mut *self.state.lock().await {
|
if let State::Opened { .. } = &mut *self.state.lock().await {
|
||||||
write
|
fs::write(&self.path, data)
|
||||||
.write(data)
|
|
||||||
.await
|
.await
|
||||||
.map(|written| written as i32)
|
.map(|_| data.len() as i32)
|
||||||
.map_err(|_| binder::StatusCode::UNKNOWN_ERROR.into())
|
.map_err(|_| binder::StatusCode::UNKNOWN_ERROR.into())
|
||||||
} else {
|
} else {
|
||||||
Err(binder::ExceptionCode::ILLEGAL_STATE.into())
|
Err(binder::ExceptionCode::ILLEGAL_STATE.into())
|
||||||
|
|||||||
Reference in New Issue
Block a user