diff options
-rwxr-xr-x | build.py | 4 | ||||
-rw-r--r-- | floss/build/Dockerfile | 2 | ||||
-rw-r--r-- | system/Android.bp | 2 | ||||
-rw-r--r-- | system/gd/rust/common/Cargo.toml | 2 | ||||
-rw-r--r-- | system/gd/rust/facade/Android.bp | 4 | ||||
-rw-r--r-- | system/gd/rust/facade/Cargo.toml | 4 | ||||
-rw-r--r-- | system/gd/rust/facade/helpers/Cargo.toml | 4 | ||||
-rw-r--r-- | system/gd/rust/facade/helpers/lib.rs | 3 | ||||
-rw-r--r-- | system/gd/rust/facade/src/lib.rs | 2 | ||||
-rw-r--r-- | system/gd/rust/facade_proto/Cargo.toml | 10 | ||||
-rw-r--r-- | system/gd/rust/facade_proto/build.rs | 57 | ||||
-rw-r--r-- | system/gd/rust/facade_proto/src/lib.rs | 2 | ||||
-rw-r--r-- | system/gd/rust/shim/Cargo.toml | 9 | ||||
-rw-r--r-- | system/gd/rust/stack/Android.bp | 4 | ||||
-rw-r--r-- | system/gd/rust/stack/Cargo.toml | 4 | ||||
-rw-r--r-- | system/gd/rust/stack/src/hal/facade.rs | 16 | ||||
-rw-r--r-- | system/gd/rust/stack/src/hci/controller_facade.rs | 27 | ||||
-rw-r--r-- | system/gd/rust/stack/src/hci/facade.rs | 12 | ||||
-rw-r--r-- | system/gd/rust/topshim/facade/src/adapter_service.rs | 14 | ||||
-rw-r--r-- | system/gd/rust/topshim/facade/src/hfp_service.rs | 2 |
20 files changed, 116 insertions, 68 deletions
@@ -268,6 +268,10 @@ class HostBuild(): self.custom_env['CXX_ROOT_PATH'] = os.path.join(self.platform_dir, 'bt') self.custom_env['CROS_SYSTEM_API_ROOT'] = os.path.join(self.platform_dir, 'system_api') self.custom_env['CXX_OUTDIR'] = self._gn_default_output() + + # On ChromeOS, this is /usr/bin/grpc_rust_plugin + # In the container, this is /root/.cargo/bin/grpc_rust_plugin + self.custom_env['GRPC_RUST_PLUGIN_PATH'] = shutil.which('grpc_rust_plugin') self.env.update(self.custom_env) def print_env(self): diff --git a/floss/build/Dockerfile b/floss/build/Dockerfile index 0b4c561651..e0e4824856 100644 --- a/floss/build/Dockerfile +++ b/floss/build/Dockerfile @@ -66,7 +66,7 @@ RUN /tmp/rustup.sh -y --default-toolchain 1.68.2 ENV PATH="/root/.cargo/bin:${PATH}" # Install cargo packages required on build image. -RUN cargo install --locked cxxbridge-cmd@1.0.94 pdl-compiler@0.1.1 +RUN cargo install --locked cxxbridge-cmd@1.0.94 pdl-compiler@0.1.1 grpcio-compiler@0.13.0 # Rename llvm packages. By default, they are named 11vm-ar-13, etc. which won't # work properly with the build. diff --git a/system/Android.bp b/system/Android.bp index cd272d4651..326e2efad6 100644 --- a/system/Android.bp +++ b/system/Android.bp @@ -161,6 +161,7 @@ rust_protobuf { "com.android.btservices", ], min_sdk_version: "30", + use_protobuf3: true, } rust_protobuf { @@ -169,6 +170,7 @@ rust_protobuf { source_stem: "topshim_facade", host_supported: true, grpc_protos: ["blueberry/facade/topshim/facade.proto"], + use_protobuf3: true, } genrule { diff --git a/system/gd/rust/common/Cargo.toml b/system/gd/rust/common/Cargo.toml index eb59377947..410f11e2ce 100644 --- a/system/gd/rust/common/Cargo.toml +++ b/system/gd/rust/common/Cargo.toml @@ -22,7 +22,7 @@ edition = "2018" cxx = "1.0" env_logger = "0.8" futures = "0.3.13" -grpcio = "0.9" +grpcio = { version = "0.13.0", default-features = false, features = ["protobufv3-codec", "openssl"] } lazy_static = "1.4" log = "0.4" nix = { version = "0.27.1", features = ["time", "user"] } diff --git a/system/gd/rust/facade/Android.bp b/system/gd/rust/facade/Android.bp index 2261e594d4..f416c5c9df 100644 --- a/system/gd/rust/facade/Android.bp +++ b/system/gd/rust/facade/Android.bp @@ -20,7 +20,7 @@ rust_library { "libgddi", "libgrpcio", "liblog_rust", - "libprotobuf_deprecated", + "libprotobuf", "libtokio", ], } @@ -75,7 +75,7 @@ rust_library { "libfutures", "libgrpcio", "liblog_rust", - "libprotobuf_deprecated", + "libprotobuf", "libtokio", ], min_sdk_version: "30", diff --git a/system/gd/rust/facade/Cargo.toml b/system/gd/rust/facade/Cargo.toml index 9055002293..d806e12f0e 100644 --- a/system/gd/rust/facade/Cargo.toml +++ b/system/gd/rust/facade/Cargo.toml @@ -27,9 +27,9 @@ bt_packets = { path = "../packets" } bytes = "1.0" cxx = "1.0" futures = "0.3" -grpcio = "0.9" +grpcio = { version = "0.13.0", default-features = false, features = ["protobufv3-codec", "openssl"] } log = "0.4" -protobuf = "2.0" +protobuf = "3.2" tokio = "1.0" # Binary-only deps diff --git a/system/gd/rust/facade/helpers/Cargo.toml b/system/gd/rust/facade/helpers/Cargo.toml index 6d0de0562c..bd66f59956 100644 --- a/system/gd/rust/facade/helpers/Cargo.toml +++ b/system/gd/rust/facade/helpers/Cargo.toml @@ -26,9 +26,9 @@ bt_facade_proto = { path = "../../facade_proto" } bytes = "1.0" cxx = "1.0" futures = "0.3" -grpcio = "0.9" +grpcio = { version = "0.13.0", default-features = false, features = ["protobufv3-codec", "openssl"] } log = "0.4" -protobuf = "2.0" +protobuf = "3.2" tokio = "1.0" [lib] diff --git a/system/gd/rust/facade/helpers/lib.rs b/system/gd/rust/facade/helpers/lib.rs index f2b6838428..ea18c5218a 100644 --- a/system/gd/rust/facade/helpers/lib.rs +++ b/system/gd/rust/facade/helpers/lib.rs @@ -41,8 +41,7 @@ impl<T: 'static + Into<Vec<u8>> + Into<Bytes> + Send> RxAdapter<T> { let clone_rx = self.rx.clone(); ctx.spawn(async move { while let Some(payload) = clone_rx.lock().await.recv().await { - let mut data = Data::default(); - data.set_payload(payload.into()); + let data = Data { payload: payload.into(), ..Default::default() }; if let Err(e) = sink.send((data, WriteFlags::default())).await { log::error!("failure sending data: {:?}", e); } diff --git a/system/gd/rust/facade/src/lib.rs b/system/gd/rust/facade/src/lib.rs index 446cb94f8b..db5d15abbb 100644 --- a/system/gd/rust/facade/src/lib.rs +++ b/system/gd/rust/facade/src/lib.rs @@ -76,7 +76,7 @@ struct FacadeServer { impl FacadeServer { async fn start(stack: Stack, req: StartStackRequest, grpc_port: u16) -> Self { let mut services = Vec::new(); - match req.get_module_under_test() { + match req.module_under_test.unwrap() { BluetoothModule::HAL => { services.push(stack.get_grpc::<HciHalFacadeService>().await); } diff --git a/system/gd/rust/facade_proto/Cargo.toml b/system/gd/rust/facade_proto/Cargo.toml index bac110f393..f43206af1d 100644 --- a/system/gd/rust/facade_proto/Cargo.toml +++ b/system/gd/rust/facade_proto/Cargo.toml @@ -21,13 +21,13 @@ build = "build.rs" [dependencies] futures = "0.3" -grpcio = "0.9" -protobuf = "2.0" +grpcio = { version = "0.13.0", default-features = false, features = ["protobufv3-codec", "openssl"] } +protobuf = "3.2" [build-dependencies] -protoc-rust = "2.0" -protoc-grpcio = "2.0" -protobuf-codegen = "2.0" +anyhow = "1" +grpcio-compiler = "0.13" +protobuf-codegen = "3.2" [lib] crate-types = ["rlib"] diff --git a/system/gd/rust/facade_proto/build.rs b/system/gd/rust/facade_proto/build.rs index 87b9fe6d63..eeac4af560 100644 --- a/system/gd/rust/facade_proto/build.rs +++ b/system/gd/rust/facade_proto/build.rs @@ -17,6 +17,10 @@ use std::env; use std::fs; use std::io::Write; use std::path::{Path, PathBuf}; +use std::process; +use std::process::Command; + +extern crate grpcio_compiler; fn paths_to_strs<P: AsRef<Path>>(paths: &[P]) -> Vec<&str> { paths.iter().map(|p| p.as_ref().as_os_str().to_str().unwrap()).collect() @@ -38,6 +42,20 @@ fn gen_mod_rs<P: AsRef<Path>>(out_dir: PathBuf, inputs: &[P], grpc: bool) { } } +fn exec(c: &mut Command) { + match c.status() { + Err(e) => { + eprintln!("failed to execute {:?}: {}", c, e); + process::exit(-1); + } + Ok(s) => { + if !s.success() { + process::exit(s.code().unwrap_or(-1)); + } + } + } +} + fn main() { let out_dir = PathBuf::from(env::var("OUT_DIR").unwrap()); let proto_out_dir = out_dir.join("proto_out"); @@ -70,13 +88,14 @@ fn main() { let proto_input_files = [facade_dir.join("common.proto")]; let proto_include_dirs = [facade_dir.clone()]; - protoc_rust::Codegen::new() + protobuf_codegen::Codegen::new() + .protoc() .out_dir(proto_out_dir.as_os_str().to_str().unwrap()) .inputs(&paths_to_strs(&proto_input_files)) .includes(&paths_to_strs(&proto_include_dirs)) .customize(Default::default()) .run() - .expect("protoc"); + .expect("Common protos failed to generate"); // // Generate grpc output @@ -90,13 +109,33 @@ fn main() { let grpc_proto_include_dirs = [facade_dir.join("hci"), facade_dir.join("hal"), facade_dir, proto_root]; - protoc_grpcio::compile_grpc_protos( - &grpc_proto_input_files, - &grpc_proto_include_dirs, - &grpc_out_dir, - None, - ) - .expect("Failed to compile gRPC definitions"); + // Generate protobuf files first + protobuf_codegen::Codegen::new() + .protoc() + .out_dir(&grpc_out_dir.as_os_str().to_str().unwrap()) + .inputs(&paths_to_strs(&grpc_proto_input_files)) + .includes(&paths_to_strs(&grpc_proto_include_dirs)) + .customize(Default::default()) + .run() + .expect("Facade protos failed to generate"); + + // Invoke protoc directly to generate grpcio. + let mut c = Command::new("protoc"); + // Include dirs + for inc in &grpc_proto_include_dirs { + c.arg(format!("-I{}", &inc.as_os_str().to_str().unwrap())); + } + // Output dir + c.arg(format!("--grpc_out={}", &grpc_out_dir.as_os_str().to_str().unwrap())); + // Plugin location + let grpc_rust_plugin_path = std::env::var_os("GRPC_RUST_PLUGIN_PATH").unwrap(); + c.arg(format!("--plugin=protoc-gen-grpc={}", grpc_rust_plugin_path.into_string().unwrap())); + // Input files + for input in &grpc_proto_input_files { + c.arg(input); + } + + exec(&mut c); gen_mod_rs(proto_out_dir, &proto_input_files, false); gen_mod_rs(grpc_out_dir, &grpc_proto_input_files, true); diff --git a/system/gd/rust/facade_proto/src/lib.rs b/system/gd/rust/facade_proto/src/lib.rs index 56f7f70775..c6acbb2b16 100644 --- a/system/gd/rust/facade_proto/src/lib.rs +++ b/system/gd/rust/facade_proto/src/lib.rs @@ -21,5 +21,5 @@ include!(concat!(env!("OUT_DIR"), "/grpc_out/mod.rs")); // empty.proto is missing so add a workaround // See github.com/stepancheg/grpc-rust/issues/156 pub mod empty { - pub use protobuf::well_known_types::Empty; + pub use protobuf::well_known_types::empty::Empty; } diff --git a/system/gd/rust/shim/Cargo.toml b/system/gd/rust/shim/Cargo.toml index 01d508907b..00cee221a7 100644 --- a/system/gd/rust/shim/Cargo.toml +++ b/system/gd/rust/shim/Cargo.toml @@ -31,8 +31,8 @@ bytes = "1.0" cxx = { version = "1.0.42", features = ["c++17"] } env_logger = "0.8" futures = "0.3" -grpcio = { version = "0.9", features = ["protobuf", "protobuf-codec", "openssl"] } -grpcio-sys = { version = "0.9", features = ["openssl"] } +grpcio = { version = "0.13.0", default-features = false, features = ["protobufv3-codec", "openssl"] } +grpcio-sys = { version = "0.13.0", features = ["openssl"] } lazy_static = "1.4" log = "0.4" nix = "0.23" @@ -41,9 +41,8 @@ num-traits = "0.2" pdl-runtime = "0.2.2" paste = "1.0" proc-macro2 = "1.0.24" -protobuf = "2.0" -protoc-grpcio = "2.0" -protoc-rust = "2.0" +protobuf = "3.2" +protoc-grpcio = "3.0" quote = "1.0.8" thiserror = "1.0" syn = { version = "2.0.1", features = ['default', 'full'] } diff --git a/system/gd/rust/stack/Android.bp b/system/gd/rust/stack/Android.bp index 2d7cbcd799..1981cbb3ad 100644 --- a/system/gd/rust/stack/Android.bp +++ b/system/gd/rust/stack/Android.bp @@ -28,7 +28,7 @@ rust_library { "liblog_rust", "libnum_traits", "libpdl_runtime", - "libprotobuf_deprecated", + "libprotobuf", "libthiserror", "libtokio", "libtokio_stream", @@ -74,7 +74,7 @@ rust_test_host { "liblog_rust", "libnum_traits", "libpdl_runtime", - "libprotobuf_deprecated", + "libprotobuf", "libthiserror", "libtokio", "libtokio_stream", diff --git a/system/gd/rust/stack/Cargo.toml b/system/gd/rust/stack/Cargo.toml index 13c3c3209b..d1dda70589 100644 --- a/system/gd/rust/stack/Cargo.toml +++ b/system/gd/rust/stack/Cargo.toml @@ -30,13 +30,13 @@ gddi = { path = "../gddi" } bytes = "1.0" cxx = "1.0" futures = "0.3" -grpcio = "0.9" +grpcio = { version = "0.13.0", default-features = false, features = ["protobufv3-codec", "openssl"] } lazy_static = "1.4" log = "0.4" nix = "0.23" num-traits = "0.2" pdl-runtime = "0.2.2" -protobuf = "2.0" +protobuf = "3.2" thiserror = "1.0" tokio = "1.0" tokio-stream = "0.1" diff --git a/system/gd/rust/stack/src/hal/facade.rs b/system/gd/rust/stack/src/hal/facade.rs index 9727a40461..ae6baaf84c 100644 --- a/system/gd/rust/stack/src/hal/facade.rs +++ b/system/gd/rust/stack/src/hal/facade.rs @@ -56,34 +56,34 @@ impl GrpcFacade for HciHalFacadeService { } impl HciHalFacade for HciHalFacadeService { - fn send_command(&mut self, ctx: RpcContext<'_>, mut data: Data, sink: UnarySink<Empty>) { + fn send_command(&mut self, ctx: RpcContext<'_>, data: Data, sink: UnarySink<Empty>) { let cmd_tx = self.control.tx.clone(); ctx.spawn(async move { - cmd_tx.send(Command::parse(&data.take_payload()).unwrap()).await.unwrap(); + cmd_tx.send(Command::parse(&data.payload).unwrap()).await.unwrap(); sink.success(Empty::default()).await.unwrap(); }); } - fn send_acl(&mut self, ctx: RpcContext<'_>, mut data: Data, sink: UnarySink<Empty>) { + fn send_acl(&mut self, ctx: RpcContext<'_>, data: Data, sink: UnarySink<Empty>) { let acl_tx = self.acl.tx.clone(); ctx.spawn(async move { - acl_tx.send(Acl::parse(&data.take_payload()).unwrap()).await.unwrap(); + acl_tx.send(Acl::parse(&data.payload).unwrap()).await.unwrap(); sink.success(Empty::default()).await.unwrap(); }); } - fn send_sco(&mut self, ctx: RpcContext<'_>, mut data: Data, sink: UnarySink<Empty>) { + fn send_sco(&mut self, ctx: RpcContext<'_>, data: Data, sink: UnarySink<Empty>) { let sco_tx = self.sco.tx.clone(); ctx.spawn(async move { - sco_tx.send(Sco::parse(&data.take_payload()).unwrap()).await.unwrap(); + sco_tx.send(Sco::parse(&data.payload).unwrap()).await.unwrap(); sink.success(Empty::default()).await.unwrap(); }); } - fn send_iso(&mut self, ctx: RpcContext<'_>, mut data: Data, sink: UnarySink<Empty>) { + fn send_iso(&mut self, ctx: RpcContext<'_>, data: Data, sink: UnarySink<Empty>) { let iso_tx = self.iso.tx.clone(); ctx.spawn(async move { - iso_tx.send(Iso::parse(&data.take_payload()).unwrap()).await.unwrap(); + iso_tx.send(Iso::parse(&data.payload).unwrap()).await.unwrap(); sink.success(Empty::default()).await.unwrap(); }); } diff --git a/system/gd/rust/stack/src/hci/controller_facade.rs b/system/gd/rust/stack/src/hci/controller_facade.rs index dbcadcaaa6..cd1bd21961 100644 --- a/system/gd/rust/stack/src/hci/controller_facade.rs +++ b/system/gd/rust/stack/src/hci/controller_facade.rs @@ -50,7 +50,7 @@ impl ControllerFacade for ControllerFacadeService { ctx.spawn(async move { let mut address = BluetoothAddress::new(); let address_bytes: [u8; 6] = clone.exports.address.into(); - address.set_address(address_bytes.to_vec()); + address.address = address_bytes.to_vec(); sink.success(address).await.unwrap(); }); } @@ -58,7 +58,7 @@ impl ControllerFacade for ControllerFacadeService { fn write_local_name(&mut self, ctx: RpcContext<'_>, req: NameMsg, sink: UnarySink<Empty>) { let mut clone = self.clone(); let mut builder = WriteLocalNameBuilder { local_name: [0; 248] }; - builder.local_name[0..req.get_name().len()].copy_from_slice(req.get_name()); + builder.local_name[0..req.name.len()].copy_from_slice(&req.name); ctx.spawn(async move { clone.hci.commands.send(builder.build()).await; sink.success(Empty::default()).await.unwrap(); @@ -72,8 +72,7 @@ impl ControllerFacade for ControllerFacadeService { clone.hci.commands.send(ReadLocalNameBuilder {}).await.get_local_name(), ) .into_bytes(); - let mut msg = NameMsg::new(); - msg.set_name(local_name); + let msg = NameMsg { name: local_name, ..NameMsg::default() }; sink.success(msg).await.unwrap(); }); } @@ -85,10 +84,12 @@ impl ControllerFacade for ControllerFacadeService { sink: UnarySink<SupportedMsg>, ) { let clone = self.clone(); - let opcode = OpCode::try_from(u16::try_from(op_code_msg.get_op_code()).unwrap()).unwrap(); + let opcode = OpCode::try_from(u16::try_from(op_code_msg.op_code).unwrap()).unwrap(); ctx.spawn(async move { - let mut supported_msg = SupportedMsg::new(); - supported_msg.set_supported(clone.exports.commands.is_supported(opcode)); + let supported_msg = SupportedMsg { + supported: clone.exports.commands.is_supported(opcode), + ..SupportedMsg::default() + }; sink.success(supported_msg).await.unwrap(); }); } @@ -101,8 +102,10 @@ impl ControllerFacade for ControllerFacadeService { ) { let clone = self.clone(); ctx.spawn(async move { - let mut msg = SingleValueMsg::new(); - msg.set_value(clone.exports.le_supported_advertising_sets.into()); + let msg = SingleValueMsg { + value: clone.exports.le_supported_advertising_sets.into(), + ..SingleValueMsg::default() + }; sink.success(msg).await.unwrap(); }); } @@ -343,8 +346,10 @@ impl ControllerFacade for ControllerFacadeService { ) { let clone = self.clone(); ctx.spawn(async move { - let mut supported_msg = SupportedMsg::new(); - supported_msg.set_supported(clone.exports.le_features.extended_advertising); + let supported_msg = SupportedMsg { + supported: clone.exports.le_features.extended_advertising, + ..SupportedMsg::default() + }; sink.success(supported_msg).await.unwrap(); }); } diff --git a/system/gd/rust/stack/src/hci/facade.rs b/system/gd/rust/stack/src/hci/facade.rs index b2b2d6f72b..95128ec757 100644 --- a/system/gd/rust/stack/src/hci/facade.rs +++ b/system/gd/rust/stack/src/hci/facade.rs @@ -94,8 +94,8 @@ impl GrpcFacade for HciFacadeService { } impl HciFacade for HciFacadeService { - fn send_command(&mut self, ctx: RpcContext<'_>, mut data: Data, sink: UnarySink<Empty>) { - let packet = Command::parse(&data.take_payload()).unwrap(); + fn send_command(&mut self, ctx: RpcContext<'_>, data: Data, sink: UnarySink<Empty>) { + let packet = Command::parse(&data.payload).unwrap(); let mut commands = self.commands.clone(); let evt_tx = self.evt_tx.clone(); ctx.spawn(async move { @@ -108,7 +108,7 @@ impl HciFacade for HciFacadeService { fn request_event(&mut self, ctx: RpcContext<'_>, req: EventRequest, sink: UnarySink<Empty>) { let mut clone = self.clone(); ctx.spawn(async move { - clone.register_event(req.get_code()).await; + clone.register_event(req.code).await; sink.success(Empty::default()).await.unwrap(); }); } @@ -121,15 +121,15 @@ impl HciFacade for HciFacadeService { ) { let mut clone = self.clone(); ctx.spawn(async move { - clone.register_le_event(req.get_code()).await; + clone.register_le_event(req.code).await; sink.success(Empty::default()).await.unwrap(); }); } - fn send_acl(&mut self, ctx: RpcContext<'_>, mut packet: Data, sink: UnarySink<Empty>) { + fn send_acl(&mut self, ctx: RpcContext<'_>, packet: Data, sink: UnarySink<Empty>) { let acl_tx = self.acl_tx.clone(); ctx.spawn(async move { - acl_tx.send(Acl::parse(&packet.take_payload()).unwrap()).await.unwrap(); + acl_tx.send(Acl::parse(&packet.payload).unwrap()).await.unwrap(); sink.success(Empty::default()).await.unwrap(); }); } diff --git a/system/gd/rust/topshim/facade/src/adapter_service.rs b/system/gd/rust/topshim/facade/src/adapter_service.rs index 94a29a2946..d9aed8dcda 100644 --- a/system/gd/rust/topshim/facade/src/adapter_service.rs +++ b/system/gd/rust/topshim/facade/src/adapter_service.rs @@ -118,7 +118,7 @@ impl AdapterService for AdapterServiceImpl { match event { BaseCallbacks::AdapterState(_state) => { let mut rsp = FetchEventsResponse::new(); - rsp.event_type = EventType::ADAPTER_STATE; + rsp.event_type = EventType::ADAPTER_STATE.into(); rsp.params.insert( String::from("state"), event_data_from_string(String::from("ON")), @@ -128,7 +128,7 @@ impl AdapterService for AdapterServiceImpl { BaseCallbacks::SspRequest(_, _, _, _, _) => {} BaseCallbacks::LeRandCallback(random) => { let mut rsp = FetchEventsResponse::new(); - rsp.event_type = EventType::LE_RAND; + rsp.event_type = EventType::LE_RAND.into(); rsp.params.insert( String::from("data"), event_data_from_string(random.to_string()), @@ -137,7 +137,7 @@ impl AdapterService for AdapterServiceImpl { } BaseCallbacks::GenerateLocalOobData(transport, data) => { let mut rsp = FetchEventsResponse::new(); - rsp.event_type = EventType::GENERATE_LOCAL_OOB_DATA; + rsp.event_type = EventType::GENERATE_LOCAL_OOB_DATA.into(); rsp.params.insert( String::from("is_valid"), event_data_from_string(String::from(if data.is_valid { @@ -166,7 +166,7 @@ impl AdapterService for AdapterServiceImpl { } BaseCallbacks::AdapterProperties(status, _, properties) => { let mut rsp = FetchEventsResponse::new(); - rsp.event_type = EventType::ADAPTER_PROPERTY; + rsp.event_type = EventType::ADAPTER_PROPERTY.into(); rsp.params.insert( String::from("status"), event_data_from_string(format!("{:?}", status)), @@ -182,7 +182,7 @@ impl AdapterService for AdapterServiceImpl { } BaseCallbacks::DiscoveryState(state) => { let mut rsp = FetchEventsResponse::new(); - rsp.event_type = EventType::DISCOVERY_STATE; + rsp.event_type = EventType::DISCOVERY_STATE.into(); rsp.params.insert( String::from("discovery_state"), event_data_from_string(format!("{:?}", state)), @@ -191,7 +191,7 @@ impl AdapterService for AdapterServiceImpl { } BaseCallbacks::DeviceFound(_, properties) => { let mut rsp = FetchEventsResponse::new(); - rsp.event_type = EventType::DEVICE_FOUND; + rsp.event_type = EventType::DEVICE_FOUND.into(); for property in properties.clone() { let (key, event_data) = bluetooth_property_to_event_data(property); if key == "skip" { @@ -203,7 +203,7 @@ impl AdapterService for AdapterServiceImpl { } BaseCallbacks::BondState(_, address, state, _) => { let mut rsp = FetchEventsResponse::new(); - rsp.event_type = EventType::BOND_STATE; + rsp.event_type = EventType::BOND_STATE.into(); rsp.params.insert( String::from("bond_state"), event_data_from_string(format!("{:?}", state)), diff --git a/system/gd/rust/topshim/facade/src/hfp_service.rs b/system/gd/rust/topshim/facade/src/hfp_service.rs index 7e6e122f5c..4f08a44c50 100644 --- a/system/gd/rust/topshim/facade/src/hfp_service.rs +++ b/system/gd/rust/topshim/facade/src/hfp_service.rs @@ -202,7 +202,7 @@ impl HfpService for HfpServiceImpl { while let Some(event) = rx.recv().await { if let HfpCallbacks::ConnectionState(state, address) = event { let mut rsp = FetchEventsResponse::new(); - rsp.event_type = EventType::HFP_CONNECTION_STATE; + rsp.event_type = EventType::HFP_CONNECTION_STATE.into(); rsp.data = format!("{:?}, {}", state, address.to_string()); sink.send((rsp, WriteFlags::default())).await.unwrap(); } |