diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-12-07 00:17:32 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-12-07 00:17:32 +0000 |
commit | 75bc41b815086256d5b8578ab074f4da0fa2d847 (patch) | |
tree | 694a50151081ef3b9dd289cfd41241ae47b92261 | |
parent | 6b404602132d5dc758c676fec1593ad807318127 (diff) | |
parent | 9ced8f50cd4ea79e5ef126af4e88a5f2f1dc547e (diff) | |
download | pixel-75bc41b815086256d5b8578ab074f4da0fa2d847.tar.gz |
Snap for 11186783 from 9ced8f50cd4ea79e5ef126af4e88a5f2f1dc547e to 24Q1-release
Change-Id: I67863568ee1701cafc039642f47d61aa1a4571d1
21 files changed, 446 insertions, 416 deletions
diff --git a/thermal/Android.bp b/thermal/Android.bp index 51f98d66..a7ad5d87 100644 --- a/thermal/Android.bp +++ b/thermal/Android.bp @@ -121,3 +121,38 @@ sh_binary { "pixel-thermal-symlinks.rc", ], } + + +cc_binary { + name: "virtualtemp_estimator_test", + srcs: [ + "virtualtemp_estimator/virtualtemp_estimator.cpp", + "virtualtemp_estimator/virtualtemp_estimator_test.cpp" + ], + shared_libs: [ + "libc", + "liblog", + "libcutils", + "libbinder", + "libhidlbase", + "libutils", + "libjsoncpp",], + vendor: true, + cflags: [ + "-Wall", + "-Werror", + "-Wextra", + "-Wunused", + ], + tidy: true, + tidy_checks: [ + "android-*", + "cert-*", + "clang-analyzer-security*", + ], + tidy_checks_as_errors: [ + "android-*", + "clang-analyzer-security*", + "cert-*", + ], +} diff --git a/thermal/virtualtemp_estimator/virtualtemp_estimator_test.cpp b/thermal/virtualtemp_estimator/virtualtemp_estimator_test.cpp new file mode 100644 index 00000000..73dacde0 --- /dev/null +++ b/thermal/virtualtemp_estimator/virtualtemp_estimator_test.cpp @@ -0,0 +1,411 @@ +// Copyright (C) 2023 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. + +/** + *@file virtualtemp_estimator_test.cc + * Test application to verify virtualtemp estimator + * + */ +// Test application to run and verify virtualtemp estimator interface unit tests + +#include "virtualtemp_estimator.h" + +#include <android-base/file.h> +#include <android-base/logging.h> +#include <android-base/parsedouble.h> +#include <android-base/properties.h> +#include <android-base/strings.h> +#include <cutils/properties.h> +#include <cutils/trace.h> +#include <json/reader.h> +#include <json/value.h> +#include <json/writer.h> +#include <log/log.h> +#include <malloc.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/time.h> + +#include <climits> +#include <fstream> +#include <iostream> + +static char default_model[] = "/vendor/etc/vt_estimation_model.tflite"; +static char default_thermal_config[] = "/vendor/etc/thermal_info_config.json"; +constexpr int kmillion = 1000000; +constexpr int klog_interval_usec = 10 * kmillion; + +static inline unsigned long get_elapsed_time_usec(struct timeval start, struct timeval end) { + unsigned long elapsed_time = (end.tv_sec - start.tv_sec) * kmillion; + elapsed_time += (end.tv_usec - start.tv_usec); + + return elapsed_time; +} + +static std::vector<std::string> get_input_combination(const char *thermal_config_path) { + std::vector<std::string> result; + std::string json_doc; + if (!android::base::ReadFileToString(thermal_config_path, &json_doc)) { + std::cout << "Failed to read JSON config from " << thermal_config_path; + return result; + } + + Json::Value root; + Json::CharReaderBuilder reader_builder; + std::unique_ptr<Json::CharReader> reader(reader_builder.newCharReader()); + std::string errorMessage; + + if (!reader->parse(&*json_doc.begin(), &*json_doc.end(), &root, &errorMessage)) { + std::cout << "Failed to parse JSON config: " << errorMessage; + return result; + } + + Json::Value sensors = root["Sensors"]; + std::cout << "Sensors size: " << sensors.size() << std::endl; + + for (Json::Value::ArrayIndex i = 0; i < sensors.size(); ++i) { + const std::string &name = sensors[i]["Name"].asString(); + if (name == "VIRTUAL-SKIN-MODEL") { + Json::Value values = sensors[i]["Combination"]; + if (values.size() == 0) { + return result; + } + + std::cout << "Combination : ["; + for (Json::Value::ArrayIndex j = 0; j < values.size(); ++j) { + result.push_back(values[j].asString()); + std::cout << result.back() << ", "; + } + std::cout << "]" << std::endl; + } + } + + return result; +} + +static int run_random_input_inference(char *model_path, const char *thermal_config_path, + int min_inference_count, int inference_delay_sec) { + float output; + unsigned long prev_log_time = 0; + thermal::vtestimator::VtEstimatorStatus ret; + std::vector<std::string> input_combination = get_input_combination(thermal_config_path); + int input_size = input_combination.size(); + thermal::vtestimator::VirtualTempEstimator vt_estimator_(input_size); + + std::cout << "Initialize estimator\n"; + ret = vt_estimator_.Initialize(model_path); + if (ret != thermal::vtestimator::kVtEstimatorOk) { + std::cout << "Failed to Initialize estimator (ret: " << ret << ")\n"; + return -1; + } + + struct timeval start_loop_time; + int inference_count = 0; + unsigned long max_inference_time = 0, min_inference_time = ULONG_MAX; + unsigned long sum_inference_time = 0; + float avg_inference_time = 0; + std::vector<unsigned long> inference_times; + + gettimeofday(&start_loop_time, nullptr); + do { + struct timeval begin, end; + std::vector<float> thermistors; + + // preparing random inputs with starting temperature between 20C to 40C + int r = 20 + std::rand() % 20; + for (int i = 0; i < input_size; ++i) { + thermistors.push_back(r + i); + } + + gettimeofday(&begin, nullptr); + ret = vt_estimator_.Estimate(thermistors, &output); + gettimeofday(&end, nullptr); + if (ret != thermal::vtestimator::kVtEstimatorOk) { + std::cout << "Failed to run estimator (ret: " << ret << ")\n"; + return -1; + } + + unsigned long inference_time_usec = get_elapsed_time_usec(begin, end); + + inference_count++; + max_inference_time = std::max(max_inference_time, inference_time_usec); + min_inference_time = std::min(min_inference_time, inference_time_usec); + sum_inference_time += inference_time_usec; + avg_inference_time = sum_inference_time / inference_count; + inference_times.push_back(inference_time_usec); + + unsigned long elapsed_time = get_elapsed_time_usec(start_loop_time, end); + if (elapsed_time - prev_log_time >= klog_interval_usec) { + std::cout << "elapsed_time_sec: " << elapsed_time / kmillion + << " inference_count: " << inference_count + << " min_inference_time: " << min_inference_time + << " max_inference_time: " << max_inference_time + << " avg_inference_time: " << avg_inference_time << std::endl; + prev_log_time = elapsed_time; + } + + if (inference_delay_sec) + sleep(inference_delay_sec); + } while (inference_count < min_inference_count); + + std::cout << "\n\ntotal inference count: " << inference_count << std::endl; + std::cout << "total inference time: " << sum_inference_time << std::endl; + std::cout << "avg_inference_time: " << avg_inference_time << std::endl; + std::cout << "min_inference_time: " << min_inference_time << std::endl; + std::cout << "max_inference_time: " << max_inference_time << std::endl; + + std::sort(inference_times.begin(), inference_times.end()); + std::cout << "\n\n"; + std::cout << "p50: " << inference_times[inference_count * 0.5] << std::endl; + std::cout << "p90: " << inference_times[inference_count * 0.9] << std::endl; + + return 0; +} + +static int run_single_inference(char *model_path, char *input) { + if (!input) { + std::cout << "input is nullptr" << std::endl; + return -1; + } + + std::vector<float> thermistors; + char *ip = input; + char *saveptr; + + std::cout << "Parsing thermistors from input string: "; + ip = strtok_r(ip, " ", &saveptr); + while (ip) { + float thermistor_value; + + if (sscanf(ip, "%f", &thermistor_value) != 1) { + std::cout << "inputs parsing failed"; + } + + std::cout << thermistor_value << " "; + thermistors.push_back(thermistor_value); + + ip = strtok_r(NULL, " ", &saveptr); + } + std::cout << std::endl; + std::cout << "thermistors.size(): " << thermistors.size() << std::endl; + + float output; + thermal::vtestimator::VtEstimatorStatus ret; + thermal::vtestimator::VirtualTempEstimator vt_estimator_(thermistors.size()); + + std::cout << "Initialize estimator\n"; + ret = vt_estimator_.Initialize(model_path); + if (ret != thermal::vtestimator::kVtEstimatorOk) { + std::cout << "Failed to Initialize estimator (ret: " << ret << ")\n"; + return -1; + } + + std::cout << "run estimator\n"; + ret = vt_estimator_.Estimate(thermistors, &output); + if (ret != thermal::vtestimator::kVtEstimatorOk) { + std::cout << "Failed to run estimator (ret: " << ret << ")\n"; + return -1; + } + + std::cout << "output: " << output << std::endl; + return 0; +} + +static int run_batch_process(const char *model_path, const char *thermal_config_path, + const char *input_file, const char *output_file) { + if (!input_file || !output_file) { + std::cout << "input and output files required for batch process\n"; + return -1; + } + + std::cout << "get_input_combination(): "; + std::vector<std::string> input_combination = get_input_combination(thermal_config_path); + if (input_combination.size() == 0) { + LOG(ERROR) << "Invalid input_combination"; + return -1; + } + + thermal::vtestimator::VtEstimatorStatus ret; + thermal::vtestimator::VirtualTempEstimator vt_estimator_(input_combination.size()); + + std::cout << "Initialize estimator\n"; + ret = vt_estimator_.Initialize(model_path); + if (ret != thermal::vtestimator::kVtEstimatorOk) { + std::cout << "Failed to Initialize estimator (ret: " << ret << ")\n"; + return -1; + } + + std::string json_doc; + if (!android::base::ReadFileToString(input_file, &json_doc)) { + LOG(ERROR) << "Failed to read JSON config from " << input_file; + return -1; + } + Json::Value root; + Json::CharReaderBuilder reader_builder; + std::unique_ptr<Json::CharReader> reader(reader_builder.newCharReader()); + std::string errorMessage; + + if (!reader->parse(&*json_doc.begin(), &*json_doc.end(), &root, &errorMessage)) { + LOG(ERROR) << "Failed to parse JSON config: " << errorMessage; + return -1; + } + + std::cout << "Number of testcases " << root.size() << std::endl; + + for (auto const &testcase_name : root.getMemberNames()) { + if (testcase_name == "Metadata") { + continue; + } + + Json::Value testcase = root[testcase_name]; + Json::Value model_vt_outputs; + int loop_count = testcase[input_combination[0]].size(); + + std::cout << "tc: " << testcase_name << " count: " << loop_count << std::endl; + for (int i = 0; i < loop_count; ++i) { + std::vector<float> model_inputs; + float model_output; + int num_inputs = input_combination.size(); + + for (int j = 0; j < num_inputs; ++j) { + std::string input_name = input_combination[j]; + std::string value_str = testcase[input_name][std::to_string(i)].asString(); + + std::cout << "tc[" << testcase_name << "] entry[" << i << "] input[" << input_name + << "] value_str[" << value_str << "]\n"; + + float value; + if (android::base::ParseFloat(value_str, &value) == false) { + std::cout << "Failed to parse value_str : " << value_str << " to float\n"; + } + + model_inputs.push_back(value); + } + + ret = vt_estimator_.Estimate(model_inputs, &model_output); + if (ret != thermal::vtestimator::kVtEstimatorOk) { + std::cout << "Failed to run estimator (ret: " << ret << ")\n"; + return -1; + } + + model_vt_outputs[std::to_string(i)] = std::to_string(model_output); + } + + testcase["model_vt"] = model_vt_outputs; + root[testcase_name] = testcase; + std::cout << "completed testcase_name: " << testcase_name << std::endl; + } + + Json::StreamWriterBuilder writer_builder; + writer_builder["indentation"] = ""; + std::unique_ptr<Json::StreamWriter> writer(writer_builder.newStreamWriter()); + std::ofstream output_stream(output_file, std::ofstream::out); + writer->write(root, &output_stream); + + return 0; +} + +void print_usage() { + std::string message = "usage: \n"; + message += "-m : input mode ("; + message += "0: single inference "; + message += "1: json input file "; + message += "2: generate random inputs) \n"; + message += "-p : path to model file \n"; + message += "-t : path to thermal config file \n"; + message += "-i : input samples (mode 0), path to input file (mode 1) \n"; + message += "-o : output file (mode 1) \n"; + message += "-d : delay between inferences in seconds (mode 2) \n"; + message += "-c : inference count (mode 2)"; + + std::cout << message << std::endl; +} + +int main(int argc, char *argv[]) { + int c, mode = -1; + char *input = nullptr, *output = nullptr; + char *model_path = nullptr, *thermal_config_path = nullptr; + int min_inference_count = -1; + int inference_delay_sec = 0; + + while ((c = getopt(argc, argv, "hm:p:i:c:o:d:t:")) != -1) switch (c) { + case 'm': + mode = atoi(optarg); + std::cout << "mode: " << mode << std::endl; + break; + case 'p': + model_path = optarg; + std::cout << "model_path: " << model_path << std::endl; + break; + case 't': + thermal_config_path = optarg; + std::cout << "thermal_config_path: " << thermal_config_path << std::endl; + break; + case 'i': + input = optarg; + std::cout << "input: " << input << std::endl; + break; + case 'o': + output = optarg; + std::cout << "output: " << output << std::endl; + break; + case 'c': + min_inference_count = atoi(optarg); + std::cout << "min_inference_count: " << min_inference_count << std::endl; + break; + case 'd': + inference_delay_sec = atoi(optarg); + std::cout << "inference_delay_sec : " << inference_delay_sec << std::endl; + break; + case 'h': + print_usage(); + return 0; + default: + std::cout << "unsupported option " << c << std::endl; + abort(); + } + + if (!model_path) { + model_path = default_model; + std::cout << "Using default model_path: " << model_path << std::endl; + } + + if (!thermal_config_path) { + thermal_config_path = default_thermal_config; + std::cout << "Using default thermal config: " << thermal_config_path << std::endl; + } + + int ret = -1; + switch (mode) { + case 0: + ret = run_single_inference(model_path, input); + break; + case 1: + ret = run_batch_process(model_path, thermal_config_path, input, output); + break; + case 2: + ret = run_random_input_inference(model_path, thermal_config_path, min_inference_count, + inference_delay_sec); + break; + default: + std::cout << "unsupported mode" << std::endl; + print_usage(); + break; + } + + std::cout << "Exiting" << std::endl; + fflush(stdout); + return ret; +} diff --git a/vibrator/cs40l26/apex/Android.bp b/vibrator/cs40l26/apex/Android.bp deleted file mode 100644 index dea90ed6..00000000 --- a/vibrator/cs40l26/apex/Android.bp +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright (C) 2022 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. - -package { - default_applicable_licenses: ["Android-Apache-2.0"], -} - -apex_key { - name: "com.google.pixel.vibrator.hal.key", - public_key: "com.google.pixel.vibrator.hal.avbpubkey", - private_key: "com.google.pixel.vibrator.hal.pem", -} - -android_app_certificate { - name: "com.google.pixel.vibrator.hal.certificate", - certificate: "com.google.pixel.vibrator.hal", -} - -genrule { - name: "gen-android.hardware.vibrator-service.cs40l26.rc", - srcs: [":android.hardware.vibrator-service.cs40l26.rc"], - out: ["android.hardware.vibrator-service.cs40l26.rc"], - cmd: "sed -E 's/\\/vendor\\/bin/\\/apex\\/com.google.pixel.vibrator.hal\\/bin/' $(in) > $(out)", -} - -prebuilt_etc { - name: "apex-android.hardware.vibrator-service.cs40l26.rc", - src: ":gen-android.hardware.vibrator-service.cs40l26.rc", - installable: false, -} - -apex { - name: "com.google.pixel.vibrator.hal", - manifest: "apex_manifest.json", - file_contexts: "file_contexts", // Default, please edit, see go/android-apex-howto - key: "com.google.pixel.vibrator.hal.key", - certificate: ":com.google.pixel.vibrator.hal.certificate", - vintf_fragments: [ - ":android.hardware.vibrator-service.cs40l26.xml", - ], - use_vndk_as_stable: true, - // Install the apex in /vendor/apex - soc_specific: true, - updatable: false, - binaries: [ - "android.hardware.vibrator-service.cs40l26", - ], - prebuilts: [ - "apex-android.hardware.vibrator-service.cs40l26.rc", - ], - overrides: ["android.hardware.vibrator-service.cs40l26"], -} diff --git a/vibrator/cs40l26/apex/apex_manifest.json b/vibrator/cs40l26/apex/apex_manifest.json deleted file mode 100644 index cbdc876c..00000000 --- a/vibrator/cs40l26/apex/apex_manifest.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "com.google.pixel.vibrator.hal", - "version": 1 -} diff --git a/vibrator/cs40l26/apex/com.google.pixel.vibrator.hal.avbpubkey b/vibrator/cs40l26/apex/com.google.pixel.vibrator.hal.avbpubkey Binary files differdeleted file mode 100644 index 46b6769f..00000000 --- a/vibrator/cs40l26/apex/com.google.pixel.vibrator.hal.avbpubkey +++ /dev/null diff --git a/vibrator/cs40l26/apex/com.google.pixel.vibrator.hal.pem b/vibrator/cs40l26/apex/com.google.pixel.vibrator.hal.pem deleted file mode 100644 index 595322ac..00000000 --- a/vibrator/cs40l26/apex/com.google.pixel.vibrator.hal.pem +++ /dev/null @@ -1,52 +0,0 @@ ------BEGIN PRIVATE KEY----- -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 -vgJDLYQ0TdEWpv6trpA3s3hgFOx16g== ------END PRIVATE KEY----- diff --git a/vibrator/cs40l26/apex/com.google.pixel.vibrator.hal.pk8 b/vibrator/cs40l26/apex/com.google.pixel.vibrator.hal.pk8 Binary files differdeleted file mode 100644 index 8a5c5de2..00000000 --- a/vibrator/cs40l26/apex/com.google.pixel.vibrator.hal.pk8 +++ /dev/null diff --git a/vibrator/cs40l26/apex/com.google.pixel.vibrator.hal.x509.pem b/vibrator/cs40l26/apex/com.google.pixel.vibrator.hal.x509.pem deleted file mode 100644 index f1c4b481..00000000 --- a/vibrator/cs40l26/apex/com.google.pixel.vibrator.hal.x509.pem +++ /dev/null @@ -1,34 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIF3zCCA8cCFG61gvRZ1Gc1PG7iECvnY7zKSCaEMA0GCSqGSIb3DQEBCwUAMIGq -MQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNTW91 -bnRhaW4gVmlldzEQMA4GA1UECgwHQW5kcm9pZDEQMA4GA1UECwwHQW5kcm9pZDEi -MCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTEmMCQGA1UEAwwdY29t -Lmdvb2dsZS5waXhlbC52aWJyYXRvci5oYWwwIBcNMjIwODA1MTc1NTU4WhgPNDc2 -MDA3MDExNzU1NThaMIGqMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5p -YTEWMBQGA1UEBwwNTW91bnRhaW4gVmlldzEQMA4GA1UECgwHQW5kcm9pZDEQMA4G -A1UECwwHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNv -bTEmMCQGA1UEAwwdY29tLmdvb2dsZS5waXhlbC52aWJyYXRvci5oYWwwggIiMA0G -CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCVoc9F0h6gf3M/Sm5K9rt8W1ZmB/Lu -fMlkMAZXqMWRbCYVPDg0hQkICLNEOEM76oFvMBCSS2HsZwdXgAguwy3IBhpuMC+t -mNkA9+6gAXXE3nBwQ/PjphS9vPPIQ+cvbEBiwaAFpAWCx9nb5VLBrkNBIFDuzE+t -He6sj8kD8vVWKqSEwHHwFdzvXLkSQvYKhrWFltcuUmkpxnHtfVJAH/iO7Vb/jR+s -H1YVqJcS35OjnjYzjDfQTr7aqV09K/3X9Srai5o0BiWRpcpytmK5MEIqEPJvewRz -e76Uw7kMO68f5OS6NV1iXqCI4l/k5v+Q0jlxecqJdWANWSegR5cli3eUS/zEDmZb -2OlrNACsr4hpGu5M2EuVwxg89SbKlUU2ughE6+c/56c45WRalyailaWltN5SF9zK -RaW1iGS3GDBXeVFqavydJLs9NDdEd0x9wAEdvN8rhrChkhjq18L9ls4d6JIC629V -n/GT63AHfulpklt5ueGOT1vQZdg6Z8LipcwAzIpTUZJEyVGbGp/o3jf80yYdfftU -AT51+i89xiJwKDBnCS0FDT54NFpp9yCKTZtLIGa+GweW4kVya2AG6iFdf0/GXPGz -khOPxhIyC8IfvK+Ozryn2X1ied44gHy6dKA8QXa5nRRxVPnOjJTzQp+vRty+dvzz -imdJENRezYdKXQIDAQABMA0GCSqGSIb3DQEBCwUAA4ICAQA/0IUBeq+xyG7Q8Alb -4x6cNgLhyxqyn1JQ856YsrGZrdRXLz3pVv21hKOW5g4ol7kXMnGcpnympgk8bgux -4YFUNxGtM+2SR2ev3bmh+I0UTEom85k6FIYI22cje7cPJUq2E1V/IUWOSPGZ5A8O -HaW0CKOO9aspyYFXZyWqf9pdzygaqSB1BH2yxr8Hqwdhi7YDRE81RYZHC7KMsq7E -f2KkI/Lw+Q4vKGCcXNXiJrkUNkRWiuS8mbUtrNf4ub2i07zkB+pJ6Z5NhqnPV8v8 -nNVqdPmRnDcW1eRedV2Zx8/kUF8xqDjAYAv6i+D4Qmz2wjh63/EkUXqoyn/yrDBL -DGzQWfZvLsXKYPFcEIvGTIkZnKSaLbI5ReO+hZ4i4BgCs/dYvVX27mfTGkwsj11j -w4SmQuMxqMA26HQDhL7TPkBmfzvD53YC57wbioLhAUgQM5pwi3utx8oj+zcoqNxl -x6PiaWCWR0pVjGyI4UTMn2wyf8NlqEa7fJI74S035ZK6eqfP2wfZlzV5zpIOnmR1 -GK7oIjbG2NNVINiOSEhPD9CMYxX6UXh+C3vD37QMdRbcLahvjlFVkPCVi1lPf/Js -Rjj9ZCh2BT/ks2KMIHzR7oFQZzMOiz8MP9HrsS1QLyKMxco2jyI2jL8y/j3VOsZz -3ZkM2dl0vADvHBwHZH3/v/InMA== ------END CERTIFICATE----- diff --git a/vibrator/cs40l26/apex/file_contexts b/vibrator/cs40l26/apex/file_contexts deleted file mode 100644 index 5795d2b5..00000000 --- a/vibrator/cs40l26/apex/file_contexts +++ /dev/null @@ -1,3 +0,0 @@ -(/.*)? u:object_r:vendor_file:s0 -/bin/hw/android\.hardware\.vibrator-service\.cs40l26 u:object_r:hal_vibrator_default_exec:s0 - diff --git a/vibrator/cs40l26/device.mk b/vibrator/cs40l26/device.mk index 24d68d2c..b83f3bb7 100644 --- a/vibrator/cs40l26/device.mk +++ b/vibrator/cs40l26/device.mk @@ -1,8 +1,4 @@ -ifeq ($(LOCAL_PREFER_VENDOR_APEX),true) -PRODUCT_PACKAGES += com.google.pixel.vibrator.hal -else PRODUCT_PACKAGES += android.hardware.vibrator-service.cs40l26 -endif BOARD_SEPOLICY_DIRS += \ hardware/google/pixel-sepolicy/vibrator/common \ diff --git a/vibrator/drv2624/apex/Android.bp b/vibrator/drv2624/apex/Android.bp deleted file mode 100644 index 016a7935..00000000 --- a/vibrator/drv2624/apex/Android.bp +++ /dev/null @@ -1,59 +0,0 @@ -package { - default_applicable_licenses: ["Android-Apache-2.0"], -} - -apex { - name: "com.android.vibrator.drv2624", - manifest: "apex_manifest.json", - key: "com.android.vibrator.drv2624.key", - certificate: ":com.android.vibrator.drv2624.certificate", - file_contexts: "file_contexts", - use_vndk_as_stable: true, - updatable: false, - - // install the apex in /vendor/apex - proprietary: true, - - // BEGIN of apex payloads - // /bin - binaries: [ - "android.hardware.vibrator-service.drv2624", - ], - // /etc - prebuilts: [ - "com.android.vibrator.drv2624.rc", - ], - // END of apex payloads - - // BEGIN of companion files to be installed if this module is installed - // init script, which is installed in /vendor/etc. - // Note that init scripts in an apex can contain only "service" sections. - // The following init script contains "on" section to enable the service. - init_rc: [ - "com.android.vibrator.drv2624.enable.rc", - ], - - // vintf manifest fragments, which is installed in /vendor/etc/vintf. - // TODO(b/130058564): should we put vintf framgments within the apex? - vintf_fragments: [ - "com.android.vibrator.drv2624.xml", - ], - // END of companion filse -} - -apex_key { - name: "com.android.vibrator.drv2624.key", - public_key: "com.android.vibrator.drv2624.pubkey", - private_key: "com.android.vibrator.drv2624.pem", -} - -android_app_certificate { - name: "com.android.vibrator.drv2624.certificate", - certificate: "com.android.vibrator.drv2624", -} - -prebuilt_etc { - name: "com.android.vibrator.drv2624.rc", - src: "com.android.vibrator.drv2624.rc", - installable: false, -} diff --git a/vibrator/drv2624/apex/apex_manifest.json b/vibrator/drv2624/apex/apex_manifest.json deleted file mode 100644 index ac8af3a4..00000000 --- a/vibrator/drv2624/apex/apex_manifest.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "com.android.vibrator.drv2624", - "version": 1 -} diff --git a/vibrator/drv2624/apex/com.android.vibrator.drv2624.enable.rc b/vibrator/drv2624/apex/com.android.vibrator.drv2624.enable.rc deleted file mode 100644 index d9b79f08..00000000 --- a/vibrator/drv2624/apex/com.android.vibrator.drv2624.enable.rc +++ /dev/null @@ -1,29 +0,0 @@ -on boot - wait /sys/class/leds/vibrator/device - - mkdir /mnt/vendor/persist/haptics 0770 system system - chmod 770 /mnt/vendor/persist/haptics - chmod 440 /mnt/vendor/persist/haptics/drv2624.cal - chown system system /mnt/vendor/persist/haptics - chown system system /mnt/vendor/persist/haptics/drv2624.cal - - write /sys/class/leds/vibrator/trigger transient - chown system system /sys/class/leds/vibrator/activate - chown system system /sys/class/leds/vibrator/brightness - chown system system /sys/class/leds/vibrator/duration - chown system system /sys/class/leds/vibrator/state - - chown system system /sys/class/leds/vibrator/device/autocal - chown system system /sys/class/leds/vibrator/device/autocal_result - chown system system /sys/class/leds/vibrator/device/ctrl_loop - chown system system /sys/class/leds/vibrator/device/lp_trigger_effect - chown system system /sys/class/leds/vibrator/device/lp_trigger_scale - chown system system /sys/class/leds/vibrator/device/lra_wave_shape - chown system system /sys/class/leds/vibrator/device/mode - chown system system /sys/class/leds/vibrator/device/od_clamp - chown system system /sys/class/leds/vibrator/device/ol_lra_period - chown system system /sys/class/leds/vibrator/device/rtp_input - chown system system /sys/class/leds/vibrator/device/scale - chown system system /sys/class/leds/vibrator/device/set_sequencer - - enable vendor.vibrator.drv2624 diff --git a/vibrator/drv2624/apex/com.android.vibrator.drv2624.pem b/vibrator/drv2624/apex/com.android.vibrator.drv2624.pem deleted file mode 100644 index 012ed8fc..00000000 --- a/vibrator/drv2624/apex/com.android.vibrator.drv2624.pem +++ /dev/null @@ -1,51 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -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 ------END RSA PRIVATE KEY----- diff --git a/vibrator/drv2624/apex/com.android.vibrator.drv2624.pk8 b/vibrator/drv2624/apex/com.android.vibrator.drv2624.pk8 Binary files differdeleted file mode 100644 index 1e941879..00000000 --- a/vibrator/drv2624/apex/com.android.vibrator.drv2624.pk8 +++ /dev/null diff --git a/vibrator/drv2624/apex/com.android.vibrator.drv2624.pubkey b/vibrator/drv2624/apex/com.android.vibrator.drv2624.pubkey Binary files differdeleted file mode 100644 index 479a8686..00000000 --- a/vibrator/drv2624/apex/com.android.vibrator.drv2624.pubkey +++ /dev/null diff --git a/vibrator/drv2624/apex/com.android.vibrator.drv2624.rc b/vibrator/drv2624/apex/com.android.vibrator.drv2624.rc deleted file mode 100644 index df4e3e95..00000000 --- a/vibrator/drv2624/apex/com.android.vibrator.drv2624.rc +++ /dev/null @@ -1,18 +0,0 @@ -service vendor.vibrator.drv2624 /apex/com.android.vibrator.drv2624/bin/hw/android.hardware.vibrator-service.drv2624 - class hal - user system - group system - - setenv PROPERTY_PREFIX ro.vendor.vibrator.hal. - setenv CALIBRATION_FILEPATH /persist/haptics/drv2624.cal - - setenv HWAPI_PATH_PREFIX /sys/class/leds/vibrator/ - setenv HWAPI_DEBUG_PATHS " - device/autocal - device/lp_trigger_effect - device/lp_trigger_scale - device/ol_lra_period - state - " - - disabled diff --git a/vibrator/drv2624/apex/com.android.vibrator.drv2624.x509.pem b/vibrator/drv2624/apex/com.android.vibrator.drv2624.x509.pem deleted file mode 100644 index e1d9cac2..00000000 --- a/vibrator/drv2624/apex/com.android.vibrator.drv2624.x509.pem +++ /dev/null @@ -1,34 +0,0 @@ ------BEGIN CERTIFICATE----- -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 -8rWXShiHxat5sB1c3ON8X4ZukajREniUSOXhzic= ------END CERTIFICATE----- diff --git a/vibrator/drv2624/apex/com.android.vibrator.drv2624.xml b/vibrator/drv2624/apex/com.android.vibrator.drv2624.xml deleted file mode 100644 index 4db8f8c5..00000000 --- a/vibrator/drv2624/apex/com.android.vibrator.drv2624.xml +++ /dev/null @@ -1,7 +0,0 @@ -<manifest version="1.0" type="device"> - <hal format="aidl"> - <name>android.hardware.vibrator</name> - <version>2</version> - <fqname>IVibrator/default</fqname> - </hal> -</manifest> diff --git a/vibrator/drv2624/apex/file_contexts b/vibrator/drv2624/apex/file_contexts deleted file mode 100644 index 5be98ec7..00000000 --- a/vibrator/drv2624/apex/file_contexts +++ /dev/null @@ -1,2 +0,0 @@ -(/.*)? u:object_r:vendor_file:s0 -/bin/hw/android\.hardware\.vibrator-service\.drv2624 u:object_r:hal_vibrator_default_exec:s0
\ No newline at end of file diff --git a/vibrator/drv2624/apex/key.pem b/vibrator/drv2624/apex/key.pem deleted file mode 100644 index b582099c..00000000 --- a/vibrator/drv2624/apex/key.pem +++ /dev/null @@ -1,52 +0,0 @@ ------BEGIN PRIVATE KEY----- -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 -zCK8JO9WGOwvH9n0F+pgYXEo4OtjMA== ------END PRIVATE KEY----- |