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

Commit 943b0e62 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Move Emulated User HAL to Emulated Vehicle Connector Class"

parents 99adeec0 87278462
Loading
Loading
Loading
Loading
+0 −1
Original line number Original line Diff line number Diff line
@@ -137,7 +137,6 @@ cc_library_static {
    local_include_dirs: ["common/include/vhal_v2_0"],
    local_include_dirs: ["common/include/vhal_v2_0"],
    export_include_dirs: ["impl"],
    export_include_dirs: ["impl"],
    srcs: [
    srcs: [
        "impl/vhal_v2_0/EmulatedUserHal.cpp",
        "impl/vhal_v2_0/GeneratorHub.cpp",
        "impl/vhal_v2_0/GeneratorHub.cpp",
        "impl/vhal_v2_0/JsonFakeValueGenerator.cpp",
        "impl/vhal_v2_0/JsonFakeValueGenerator.cpp",
        "impl/vhal_v2_0/LinearFakeValueGenerator.cpp",
        "impl/vhal_v2_0/LinearFakeValueGenerator.cpp",
+1 −1
Original line number Original line Diff line number Diff line
@@ -31,7 +31,7 @@ using namespace android::hardware::automotive::vehicle::V2_0;


int main(int /* argc */, char* /* argv */ []) {
int main(int /* argc */, char* /* argv */ []) {
    auto store = std::make_unique<VehiclePropertyStore>();
    auto store = std::make_unique<VehiclePropertyStore>();
    auto connector = impl::makeEmulatedPassthroughConnector();
    auto connector = std::make_unique<impl::EmulatedVehicleConnector>();
    auto userHal = connector->getEmulatedUserHal();
    auto userHal = connector->getEmulatedUserHal();
    auto hal = std::make_unique<impl::EmulatedVehicleHal>(store.get(), connector.get(), userHal);
    auto hal = std::make_unique<impl::EmulatedVehicleHal>(store.get(), connector.get(), userHal);
    auto emulator = std::make_unique<impl::VehicleEmulator>(hal.get());
    auto emulator = std::make_unique<impl::VehicleEmulator>(hal.get());
+26 −10
Original line number Original line Diff line number Diff line
@@ -35,12 +35,32 @@ namespace V2_0 {


namespace impl {
namespace impl {


class EmulatedPassthroughConnector : public PassthroughConnector {
EmulatedUserHal* EmulatedVehicleConnector::getEmulatedUserHal() {
  public:
    return &mEmulatedUserHal;
    bool onDump(const hidl_handle& fd, const hidl_vec<hidl_string>& options) override;
}
};

StatusCode EmulatedVehicleConnector::onSetProperty(const VehiclePropValue& value,
                                                   bool updateStatus) {
    if (mEmulatedUserHal.isSupported(value.prop)) {
        LOG(INFO) << "onSetProperty(): property " << value.prop << " will be handled by UserHal";


bool EmulatedPassthroughConnector::onDump(const hidl_handle& handle,
        const auto& ret = mEmulatedUserHal.onSetProperty(value);
        if (!ret.ok()) {
            LOG(ERROR) << "onSetProperty(): HAL returned error: " << ret.error().message();
            return StatusCode(ret.error().code());
        }
        auto updatedValue = ret.value().get();
        if (updatedValue != nullptr) {
            LOG(INFO) << "onSetProperty(): updating property returned by HAL: "
                      << toString(*updatedValue);
            onPropertyValueFromCar(*updatedValue, updateStatus);
        }
        return StatusCode::OK;
    }
    return this->VehicleHalServer::onSetProperty(value, updateStatus);
}

bool EmulatedVehicleConnector::onDump(const hidl_handle& handle,
                                      const hidl_vec<hidl_string>& options) {
                                      const hidl_vec<hidl_string>& options) {
    int fd = handle->data[0];
    int fd = handle->data[0];


@@ -68,10 +88,6 @@ bool EmulatedPassthroughConnector::onDump(const hidl_handle& handle,
    return true;
    return true;
}
}


PassthroughConnectorPtr makeEmulatedPassthroughConnector() {
    return std::make_unique<EmulatedPassthroughConnector>();
}

}  // namespace impl
}  // namespace impl


}  // namespace V2_0
}  // namespace V2_0
+14 −3
Original line number Original line Diff line number Diff line
@@ -19,6 +19,7 @@


#include <vhal_v2_0/VehicleConnector.h>
#include <vhal_v2_0/VehicleConnector.h>


#include "EmulatedUserHal.h"
#include "VehicleHalClient.h"
#include "VehicleHalClient.h"
#include "VehicleHalServer.h"
#include "VehicleHalServer.h"


@@ -30,10 +31,20 @@ namespace V2_0 {


namespace impl {
namespace impl {


using PassthroughConnector = IPassThroughConnector<VehicleHalClient, VehicleHalServer>;
class EmulatedVehicleConnector : public IPassThroughConnector<VehicleHalClient, VehicleHalServer> {
using PassthroughConnectorPtr = std::unique_ptr<PassthroughConnector>;
  public:
    EmulatedVehicleConnector() {}


PassthroughConnectorPtr makeEmulatedPassthroughConnector();
    EmulatedUserHal* getEmulatedUserHal();

    // Methods from VehicleHalServer
    StatusCode onSetProperty(const VehiclePropValue& value, bool updateStatus) override;

    bool onDump(const hidl_handle& fd, const hidl_vec<hidl_string>& options) override;

  private:
    EmulatedUserHal mEmulatedUserHal;
};


}  // namespace impl
}  // namespace impl


+0 −20
Original line number Original line Diff line number Diff line
@@ -41,10 +41,6 @@ VehiclePropValuePool* VehicleHalServer::getValuePool() const {
    return mValuePool;
    return mValuePool;
}
}


EmulatedUserHal* VehicleHalServer::getEmulatedUserHal() {
    return &mEmulatedUserHal;
}

void VehicleHalServer::setValuePool(VehiclePropValuePool* valuePool) {
void VehicleHalServer::setValuePool(VehiclePropValuePool* valuePool) {
    if (!valuePool) {
    if (!valuePool) {
        LOG(WARNING) << __func__ << ": Setting value pool to nullptr!";
        LOG(WARNING) << __func__ << ": Setting value pool to nullptr!";
@@ -185,22 +181,6 @@ VehicleHalServer::VehiclePropValuePtr VehicleHalServer::createHwInputKeyProp(
}
}


StatusCode VehicleHalServer::onSetProperty(const VehiclePropValue& value, bool updateStatus) {
StatusCode VehicleHalServer::onSetProperty(const VehiclePropValue& value, bool updateStatus) {
    if (mEmulatedUserHal.isSupported(value.prop)) {
        LOG(INFO) << "onSetProperty(): property " << value.prop << " will be handled by UserHal";

        const auto& ret = mEmulatedUserHal.onSetProperty(value);
        if (!ret.ok()) {
            LOG(ERROR) << "onSetProperty(): HAL returned error: " << ret.error().message();
            return StatusCode(ret.error().code());
        }
        auto updatedValue = ret.value().get();
        if (updatedValue != nullptr) {
            LOG(INFO) << "onSetProperty(): updating property returned by HAL: "
                      << toString(*updatedValue);
            onPropertyValueFromCar(*updatedValue, updateStatus);
        }
        return StatusCode::OK;
    }
    LOG(DEBUG) << "onSetProperty(" << value.prop << ")";
    LOG(DEBUG) << "onSetProperty(" << value.prop << ")";


    // Some properties need to be treated non-trivially
    // Some properties need to be treated non-trivially
Loading