Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 73589bdb authored by Zach Johnson's avatar Zach Johnson Committed by Automerger Merge Worker
Browse files

Merge "rusty-gd: switch added services based on module under test" am: 3a7b9c01 am: defa9fd5

Original change: https://android-review.googlesource.com/c/platform/system/bt/+/1497017

Change-Id: I5515c12dd3314a9fe376087dfac72e0f58290b7e
parents 08590c5c defa9fd5
Loading
Loading
Loading
Loading
+25 −8
Original line number Original line Diff line number Diff line
@@ -13,6 +13,7 @@ use bt_facade_rootservice_proto::rootservice;
use rootservice::*;
use rootservice::*;
use rootservice_grpc::{create_root_facade, RootFacade};
use rootservice_grpc::{create_root_facade, RootFacade};


use bt_hal::facade::HciHalFacadeService;
use bt_hal::rootcanal_hal::{RootcanalConfig, RootcanalHal};
use bt_hal::rootcanal_hal::{RootcanalConfig, RootcanalHal};
use bt_hci::facade::HciLayerFacadeService;
use bt_hci::facade::HciLayerFacadeService;
use bt_hci::Hci;
use bt_hci::Hci;
@@ -138,23 +139,39 @@ impl FacadeServiceManager {
    // layers. Will be cleaned up soon.
    // layers. Will be cleaned up soon.
    async fn start_internal(
    async fn start_internal(
        rt: &Arc<Runtime>,
        rt: &Arc<Runtime>,
        _req: StartStackRequest,
        req: StartStackRequest,
        grpc_port: u16,
        grpc_port: u16,
        rootcanal_port: Option<u16>,
        rootcanal_port: Option<u16>,
    ) -> Server {
    ) -> Server {
        let env = Arc::new(Environment::new(2));
        let hal_exports = RootcanalHal::start(
        let hal_exports = RootcanalHal::start(
            RootcanalConfig::new(rootcanal_port.unwrap(), "127.0.0.1"),
            RootcanalConfig::new(rootcanal_port.unwrap(), "127.0.0.1"),
            Arc::clone(&rt),
            Arc::clone(&rt),
        )
        )
        .await
        .await
        .unwrap();
        .unwrap();
        let mut services = Vec::new();
        match req.get_module_under_test() {
            BluetoothModule::HAL => {
                services.push(HciHalFacadeService::create(Arc::clone(&rt)));
            }
            BluetoothModule::HCI => {
                let hci_exports = Hci::start(hal_exports, Arc::clone(&rt));
                let hci_exports = Hci::start(hal_exports, Arc::clone(&rt));
        let mut server = ServerBuilder::new(env)
                services.push(HciLayerFacadeService::create(hci_exports, Arc::clone(&rt)));
            .register_service(HciLayerFacadeService::create(hci_exports, Arc::clone(&rt)))
            }
            .bind("0.0.0.0", grpc_port)
            _ => unimplemented!()
            .build()
        }
            .unwrap();

        FacadeServiceManager::start_server(services, grpc_port)
    }

    fn start_server(services: Vec<grpcio::Service>, grpc_port: u16) -> Server {
        let env = Arc::new(Environment::new(2));
        let mut builder = ServerBuilder::new(env).bind("0.0.0.0", grpc_port);
        for service in services {
            builder = builder.register_service(service);
        }

        let mut server = builder.build().unwrap();
        server.start();
        server.start();
        server
        server
    }
    }