xref: /aosp_15_r20/hardware/interfaces/automotive/evs/aidl/rust_impl/src/main.rs (revision 4d7e907c777eeecc4c5bd7cf640a754fac206ff7)
1 //
2 // Copyright (C) 2024 The Android Open Source Project
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 //      http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 //
16 
17 mod default_evs_hal;
18 
19 use crate::default_evs_hal::DefaultEvsHal;
20 
21 use android_hardware_automotive_evs::aidl::android::hardware::automotive::evs::IEvsEnumerator::BnEvsEnumerator;
22 
23 use log::info;
24 
main()25 fn main() {
26     binder::ProcessState::start_thread_pool();
27 
28     let service = DefaultEvsHal {};
29 
30     // Register HAL implementation as rust/0 instance.
31     let service_name = "android.hardware.automotive.evs.IEvsEnumerator/rust/0";
32     let service_binder = BnEvsEnumerator::new_binder(service, binder::BinderFeatures::default());
33 
34     binder::add_service(service_name, service_binder.as_binder())
35         .expect(format!("Failed to register {}.", service_name).as_str());
36     info!("EVS Hardware Enumerator is ready");
37 
38     binder::ProcessState::join_thread_pool();
39 
40     // In normal operation, we don't expect the thread pool to exit.
41     info!("EVS Hardware Enumerator is shutting down");
42 }
43