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

Commit ad80d864 authored by Yifan Hong's avatar Yifan Hong Committed by Automerger Merge Worker
Browse files

Add default impl for health storage AIDL HAL am: feed84d1

Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/1548964

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I754f174b99367b60f17f5548e7df814f852e9b9e
parents 386da77b feed84d1
Loading
Loading
Loading
Loading
+53 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2021 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

cc_defaults {
    name: "libhealth_storage_impl_defaults",
    vendor: true,
    shared_libs: [
        "libbase",
        "libbinder_ndk",
        "android.hardware.health.storage-unstable-ndk_platform",
    ],
    static_libs: [
        "libfstab",
        "libhealth_storage_impl_common",
    ],
}

cc_library_static {
    name: "libhealth_storage_default_impl",
    defaults: ["libhealth_storage_impl_defaults"],
    srcs: [
        "Storage.cpp",
    ],
    visibility: [
        ":__subpackages__",
        "//hardware/interfaces/tests/extension/health/storage:__subpackages__",
    ],
}

cc_binary {
    name: "android.hardware.health.storage-service.default",
    defaults: ["libhealth_storage_impl_defaults"],
    relative_install_path: "hw",
    init_rc: ["health-storage-default.rc"],
    vintf_fragments: ["health-storage-default.xml"],
    srcs: ["main.cpp"],
    static_libs: [
        "libhealth_storage_default_impl",
    ],
}
+54 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2021 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include "Storage.h"

#include <sstream>

#include <android-base/logging.h>
#include <health-storage-impl/common.h>

using ::android::hardware::health::storage::DebugDump;
using ::android::hardware::health::storage::GarbageCollect;

using HResult = android::hardware::health::storage::V1_0::Result;
using AResult = aidl::android::hardware::health::storage::Result;
// Ensure static_cast<AResult>(any HResult) works
static_assert(static_cast<AResult>(HResult::SUCCESS) == AResult::SUCCESS);
static_assert(static_cast<AResult>(HResult::IO_ERROR) == AResult::IO_ERROR);
static_assert(static_cast<AResult>(HResult::UNKNOWN_ERROR) == AResult::UNKNOWN_ERROR);

namespace aidl::android::hardware::health::storage {

ndk::ScopedAStatus Storage::garbageCollect(
        int64_t timeout_seconds, const std::shared_ptr<IGarbageCollectCallback>& callback) {
    AResult result = static_cast<AResult>(GarbageCollect(static_cast<uint64_t>(timeout_seconds)));
    if (callback != nullptr) {
        auto status = callback->onFinish(result);
        if (!status.isOk()) {
            LOG(WARNING) << "Cannot return result " << toString(result)
                         << " to callback: " << status.getDescription();
        }
    }
    return ndk::ScopedAStatus::ok();
}

binder_status_t Storage::dump(int fd, const char**, uint32_t) {
    DebugDump(fd);
    return STATUS_OK;
}

}  // namespace aidl::android::hardware::health::storage
+30 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2021 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#pragma once

#include <aidl/android/hardware/health/storage/BnStorage.h>

namespace aidl::android::hardware::health::storage {

class Storage : public BnStorage {
    ndk::ScopedAStatus garbageCollect(
            int64_t timeout_seconds,
            const std::shared_ptr<IGarbageCollectCallback>& callback) override;
    binder_status_t dump(int fd, const char** args, uint32_t num_args) override;
};

}  // namespace aidl::android::hardware::health::storage
+7 −0
Original line number Diff line number Diff line
service vendor.health-storage-default /vendor/bin/hw/android.hardware.health.storage-service.default
    interface aidl android.hardware.health.storage.IStorage/default
    oneshot
    disabled
    class hal
    user system
    group system
+7 −0
Original line number Diff line number Diff line
<manifest version="1.0" type="device">
    <hal format="aidl">
        <name>android.hardware.health.storage</name>
        <version>1</version>
        <fqname>IStorage/default</fqname>
    </hal>
</manifest>
Loading