Skip to content

Creating Actuators #20

@silverchris

Description

@silverchris

Hi All,
Trying to create an actuator with the below code, I get this output, but no reaction when I send actuate Vehicle.Cabin.Infotainment.Media.Volume 100 with kuksa-databroker-cli

This is the output I get when starting the program,

Successfully registered ProvideActuationRequest for Vehicle.Cabin.Infotainment.Media.Volume.
loop
Passed await
Actuation Request OpenProviderStreamResponse { action: Some(ProvideActuationResponse(ProvideActuationResponse)) }
loop
pub async fn volume_actuator(client: &mut KuksaClientV2) {
    let result = client.open_provider_stream(None).await;
    match result {
        Ok(mut stream) => {
            let request = OpenProviderStreamRequest {
                action: Some(Action::ProvideActuationRequest(ProvideActuationRequest {
                    actuator_identifiers: vec![SignalId {
                        signal: Some(Signal::Path("Vehicle.Cabin.Infotainment.Media.Volume".to_string())),
                    }],
                })),
            };
            match stream.sender.send(request).await {
                Ok(_) => {
                    println!("Successfully registered ProvideActuationRequest for Vehicle.Cabin.Infotainment.Media.Volume.");
                }
                Err(err) => {
                    println!("Error: Could not send ProvideActuationRequest {err:?}");
                }
            }
            
            tokio::spawn(async move {
                loop {
                    println!("loop");
                    let result = stream.receiver_stream.message().await;
                    println!("Passed await");
                    match result {
                        Ok(option) => {
                            let response = option.unwrap();
                            println!("Actuation Request {:?}", response);
                            if let Some(BatchActuateStreamRequest(batch_actuate_stream_request)) =
                                response.action
                            {
                                let actuate_requests = batch_actuate_stream_request.actuate_requests;
                                for actuate_request in actuate_requests {
                                    // execute actuate_requests
                                    println!("Received ActuateRequest: {actuate_request:?}");
                                }
                            }

                        }
                        Err(err) => {
                            println!("Error: Could not receive response {err:?}");
                        }
                    }
                }
            });
        }
        Err(err) => {
            println!("Could not open provider stream: {err}");
        }
    }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions