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

Commit 804f8bd9 authored by Zach Johnson's avatar Zach Johnson
Browse files

rusty-gd: swap rootcanal config to a more canonical ordering

also, add helper to tidy up creating a socket addr from it

Bug: 171749953
Tag: #gd-refactor
Test: gd/cert/run --rhost SimpleHalTest
Change-Id: Ib17a35a82bb78fb4ed21c03c88bd67466ef5d133
parent f8567ab8
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -119,7 +119,7 @@ impl FacadeServiceManager {
                        registry.inject(local_rt.clone()).await;
                        if let Some(rc_port) = rootcanal_port {
                            registry
                                .inject(RootcanalConfig::new(rc_port, "127.0.0.1"))
                                .inject(RootcanalConfig::new("127.0.0.1", rc_port))
                                .await;
                        }

+11 −7
Original line number Diff line number Diff line
@@ -25,10 +25,10 @@ module! {
#[provides]
async fn provide_rootcanal_hal(config: RootcanalConfig, rt: Arc<Runtime>) -> HalExports {
    let (hal_exports, hal) = Hal::new();
    let ipaddr = IpAddr::from_str(&config.server_address).unwrap();
    let socket_addr = SocketAddr::new(ipaddr, config.port);
    let stream = TcpStream::connect(&socket_addr).await.unwrap();
    let (reader, writer) = stream.into_split();
    let (reader, writer) = TcpStream::connect(&config.to_socket_addr().unwrap())
        .await
        .expect("unable to create stream to rootcanal")
        .into_split();

    rt.spawn(dispatch_incoming(hal.evt_tx, hal.acl_tx, reader));
    rt.spawn(dispatch_outgoing(hal.cmd_rx, hal.acl_rx, writer));
@@ -39,18 +39,22 @@ async fn provide_rootcanal_hal(config: RootcanalConfig, rt: Arc<Runtime>) -> Hal
/// Rootcanal configuration
#[derive(Clone, Debug, Default)]
pub struct RootcanalConfig {
    address: String,
    port: u16,
    server_address: String,
}

impl RootcanalConfig {
    /// Create a rootcanal config
    pub fn new(port: u16, server_address: &str) -> Self {
    pub fn new(address: &str, port: u16) -> Self {
        Self {
            address: String::from(address),
            port,
            server_address: String::from(server_address),
        }
    }

    fn to_socket_addr(&self) -> Result<SocketAddr> {
        Ok(SocketAddr::new(IpAddr::from_str(&self.address)?, self.port))
    }
}

/// Send HCI events received from the HAL to the HCI layer