Snap for 11641371 from a6cd2c4a8d
to 24Q3-release
Change-Id: I6701e54ee0d48b34322a5f3d8dd2feeb00e7bc06
This commit is contained in:
commit
3c5df18d11
19 changed files with 236 additions and 1 deletions
5
pixelsupport/pixelsupport.mk
Normal file
5
pixelsupport/pixelsupport.mk
Normal file
|
@ -0,0 +1,5 @@
|
|||
PRODUCT_PACKAGES += PixelSupportPrebuilt
|
||||
|
||||
BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/pixelsupport/sepolicy/vendor
|
||||
PRODUCT_PUBLIC_SEPOLICY_DIRS += device/google/gs-common/pixelsupport/sepolicy/product/public
|
||||
PRODUCT_PRIVATE_SEPOLICY_DIRS += device/google/gs-common/pixelsupport/sepolicy/product/private
|
|
@ -0,0 +1,30 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIIGBzCCA++gAwIBAgIVAJriiL3+mR75mIC8e0Xqoz59LduNMA0GCSqGSIb3DQEBCwUAMIGSMQsw
|
||||
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEU
|
||||
MBIGA1UEChMLR29vZ2xlIEluYy4xEDAOBgNVBAsTB0FuZHJvaWQxLjAsBgNVBAMMJWNvbV9nb29n
|
||||
bGVfYW5kcm9pZF9hcHBzX3BpeGVsX3N1cHBvcnQwIBcNMjIxMjEyMTM1MDA3WhgPMjA1MjEyMTIx
|
||||
MzUwMDdaMIGSMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91
|
||||
bnRhaW4gVmlldzEUMBIGA1UEChMLR29vZ2xlIEluYy4xEDAOBgNVBAsTB0FuZHJvaWQxLjAsBgNV
|
||||
BAMMJWNvbV9nb29nbGVfYW5kcm9pZF9hcHBzX3BpeGVsX3N1cHBvcnQwggIiMA0GCSqGSIb3DQEB
|
||||
AQUAA4ICDwAwggIKAoICAQCSWvRumhZOIAZmWKcuVjc1l3OIIWc/nSRVnsfdzeRqK0jwVFcTqMDs
|
||||
kmZtEj/UTW+N91ExRzWvAQ027AcE7TGF3X2iKKAfpSB0fpVQato5RIzOrRbwgAzsIvBdVtExqSNk
|
||||
5vh8xJ0azHt6Jn77gW03Mq7AL55Si5q3vU1meeGBPD/YWeqd/oNhPfe0kAHdNnnTOnN6SBxSeO8r
|
||||
YukV4XYJ3BxgWD1sm2NI8kZ+OGAooBFflZYXoY6NVfLXm6jsqWnooAok7CrNxZc/wstiwd8yYX6f
|
||||
6R1Trox3a9xOy7E+6Rig0XhbWm4pbp3Zu0OLArUalbQ1cjd1qFy6q9maieBn14ad+UtLNOUjCx91
|
||||
hLWg/mdpYCvArQb3bBDJdjYfdoo7Q8F9QW3JrFrbIeBezM4TTdK9v/sM4+1OxEo6vwMKQM9Ata/H
|
||||
Mn89a4nFHgRqGIMKK8zh0Eob+OwiBakviVhAI1o7IONujcJ2hfuyHNPZb8sT0Rewxtw2fD/Jwj+l
|
||||
ADmlXWw553geFcwP1SqOC6j/XOeazSvV4ccCME2VZqIE4pmL+RUr+cgAyQHXPZnet74C7K9sNRV6
|
||||
JluS6inqP4lKp7gSFuVrQNYHawNPVinbeTLYEu+df3m3yrHAUpaSvsSUC6qQVWCs0sI8PC6A1+bV
|
||||
DXMsIYRvrSnmtN75vOECaQIDAQABo1AwTjAMBgNVHRMEBTADAQH/MB0GA1UdDgQWBBTODyZ1S/is
|
||||
Y/2ZuMl8B1M6kFiJwDAfBgNVHSMEGDAWgBTODyZ1S/isY/2ZuMl8B1M6kFiJwDANBgkqhkiG9w0B
|
||||
AQsFAAOCAgEAL26IGjeu8Q5tn/b4vfYa+7bRUwozAJA9Buyduw/4wVG6rIAkpEsghkgnoOvyjD72
|
||||
ncbCkDoBV3a1PLw2W/bMQWfZvYScOzc2yFwcR9LdQIiEYmtgnwuJHnqc2MDsh+MDeclblyBYfIQQ
|
||||
bpZ0JArKalSmDyul0QIcfHq+RKmGAzC3bx0xigclIZJxXEG4tyQylttnqNodAEqYdhMMRajI3w9t
|
||||
61QwqNv1KTGJt1sC2Q7NyzbZJo02Kwu711Dw6KnVgHaGKC2sRIixsvjm2s6f9/CcVasuLopkJnyl
|
||||
epPeD2jHwHdE4/c2K5ZVQeZ+R0pIOEBKwg1AVkn+/UTbhpjYCkEGP09e8T45Y+//eMlrbORJAbji
|
||||
H5cfD9aSO2z4slN4B4w+Fw9Kn+a7bsN2xhv7lvAgQ92aq9g/YS1YysZ7kSoCpmKl7rN+0V/RGRVP
|
||||
ab2Cb0C3+JewTnOAF30e7zVs9Vaq3oTAV4XFYNiDRUBU/rvv8EIZKcBdufFJmCGYUpmm1EQQdsTt
|
||||
mFMPEh5I4Qd0sy+HKvLjThcMGHqDX0bCeXkbFZdj0GXPOOt5LX8NZBdnsbVgENrZml318uLEj3ZU
|
||||
DlojsfsTlVcs5eIPX6Dkx0OdgVcMAXnLF+vjP/ygWuLqiPFPCrZD1b+2g2P9Yip3e221tuyca42b
|
||||
q3bvQEBwOsA=
|
||||
-----END CERTIFICATE-----
|
2
pixelsupport/sepolicy/product/private/keys.conf
Normal file
2
pixelsupport/sepolicy/product/private/keys.conf
Normal file
|
@ -0,0 +1,2 @@
|
|||
[@PIXELSUPPORT]
|
||||
ALL : device/google/gs-common/pixelsupport/sepolicy/product/private/certs/pixelsupport.x509.pem
|
27
pixelsupport/sepolicy/product/private/mac_permissions.xml
Normal file
27
pixelsupport/sepolicy/product/private/mac_permissions.xml
Normal file
|
@ -0,0 +1,27 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<policy>
|
||||
|
||||
<!--
|
||||
|
||||
* A signature is a hex encoded X.509 certificate or a tag defined in
|
||||
keys.conf and is required for each signer tag.
|
||||
* A signer tag may contain a seinfo tag and multiple package stanzas.
|
||||
* A default tag is allowed that can contain policy for all apps not signed with a
|
||||
previously listed cert. It may not contain any inner package stanzas.
|
||||
* Each signer/default/package tag is allowed to contain one seinfo tag. This tag
|
||||
represents additional info that each app can use in setting a SELinux security
|
||||
context on the eventual process.
|
||||
* When a package is installed the following logic is used to determine what seinfo
|
||||
value, if any, is assigned.
|
||||
- All signatures used to sign the app are checked first.
|
||||
- If a signer stanza has inner package stanzas, those stanza will be checked
|
||||
to try and match the package name of the app. If the package name matches
|
||||
then that seinfo tag is used. If no inner package matches then the outer
|
||||
seinfo tag is assigned.
|
||||
- The default tag is consulted last if needed.
|
||||
-->
|
||||
<!-- PixelSupport app key -->
|
||||
<signer signature="@PIXELSUPPORT" >
|
||||
<seinfo value="PixelSupport" />
|
||||
</signer>
|
||||
</policy>
|
11
pixelsupport/sepolicy/product/private/pixelsupport_app.te
Normal file
11
pixelsupport/sepolicy/product/private/pixelsupport_app.te
Normal file
|
@ -0,0 +1,11 @@
|
|||
typeattribute pixelsupport_app coredomain;
|
||||
|
||||
app_domain(pixelsupport_app)
|
||||
# Access the network.
|
||||
net_domain(pixelsupport_app)
|
||||
# Access bluetooth.
|
||||
bluetooth_domain(pixelsupport_app)
|
||||
|
||||
allow pixelsupport_app app_api_service:service_manager find;
|
||||
allow pixelsupport_app radio_service:service_manager find;
|
||||
|
2
pixelsupport/sepolicy/product/private/seapp_contexts
Normal file
2
pixelsupport/sepolicy/product/private/seapp_contexts
Normal file
|
@ -0,0 +1,2 @@
|
|||
# Pixel Support App
|
||||
user=_app seinfo=PixelSupport name=com.google.android.apps.pixel.support domain=pixelsupport_app type=app_data_file isPrivApp=true levelFrom=user
|
2
pixelsupport/sepolicy/product/public/pixelsupport_app.te
Normal file
2
pixelsupport/sepolicy/product/public/pixelsupport_app.te
Normal file
|
@ -0,0 +1,2 @@
|
|||
type pixelsupport_app, domain;
|
||||
|
2
pixelsupport/sepolicy/vendor/pixelsupport_app.te
vendored
Normal file
2
pixelsupport/sepolicy/vendor/pixelsupport_app.te
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
set_prop(pixelsupport_app, vendor_gti_prop)
|
||||
|
|
@ -17,3 +17,19 @@ sh_binary {
|
|||
vendor: true,
|
||||
sub_dir: "dump",
|
||||
}
|
||||
|
||||
cc_binary {
|
||||
name: "touch_gti_ical",
|
||||
srcs: ["touch_gti_ical.cpp"],
|
||||
cflags: [
|
||||
"-Wall",
|
||||
"-Wextra",
|
||||
"-Werror",
|
||||
],
|
||||
shared_libs: [
|
||||
"libbase",
|
||||
"libcutils",
|
||||
"liblog",
|
||||
],
|
||||
vendor: true,
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/touch/gti/sepolicy
|
||||
|
||||
PRODUCT_PACKAGES += dump_gti0.sh
|
||||
PRODUCT_PACKAGES += touch_gti_ical
|
||||
|
|
|
@ -24,3 +24,15 @@ on property:sys.boot_completed=1
|
|||
chown system system /proc/goog_touch_interface/gti.0/ss_base
|
||||
chown system system /proc/goog_touch_interface/gti.0/ss_diff
|
||||
chown system system /proc/goog_touch_interface/gti.0/ss_raw
|
||||
|
||||
on property:vendor.touch.gti0.ical=*
|
||||
setprop vendor.touch.gti0.ical.state init
|
||||
start touch_gti0_ical
|
||||
wait_for_prop vendor.touch.gti0.ical.state done
|
||||
|
||||
service touch_gti0_ical /vendor/bin/touch_gti_ical 0 ${vendor.touch.gti0.ical}
|
||||
class main
|
||||
user system
|
||||
group system shell
|
||||
disabled
|
||||
oneshot
|
||||
|
|
|
@ -24,3 +24,15 @@ on property:sys.boot_completed=1
|
|||
chown system system /proc/goog_touch_interface/gti.1/ss_base
|
||||
chown system system /proc/goog_touch_interface/gti.1/ss_diff
|
||||
chown system system /proc/goog_touch_interface/gti.1/ss_raw
|
||||
|
||||
on property:vendor.touch.gti1.ical=*
|
||||
setprop vendor.touch.gti1.ical.state init
|
||||
start touch_gti1_ical
|
||||
wait_for_prop vendor.touch.gti1.ical.state done
|
||||
|
||||
service touch_gti1_ical /vendor/bin/touch_gti_ical 1 ${vendor.touch.gti1.ical}
|
||||
class main
|
||||
user system
|
||||
group system shell
|
||||
disabled
|
||||
oneshot
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
/vendor/bin/dump/dump_gti0\.sh u:object_r:dump_gti_exec:s0
|
||||
|
||||
/vendor/bin/touch_gti_ical u:object_r:gti_ical_exec:s0
|
||||
|
|
8
touch/gti/sepolicy/gti_ical.te
Normal file
8
touch/gti/sepolicy/gti_ical.te
Normal file
|
@ -0,0 +1,8 @@
|
|||
type gti_ical, domain;
|
||||
type gti_ical_exec, vendor_file_type, exec_type, file_type;
|
||||
init_daemon_domain(gti_ical)
|
||||
|
||||
allow gti_ical sysfs_touch_gti:file rw_file_perms;
|
||||
allow gti_ical sysfs_touch_gti:dir search;
|
||||
|
||||
set_prop(gti_ical, vendor_gti_prop)
|
1
touch/gti/sepolicy/property.te
Normal file
1
touch/gti/sepolicy/property.te
Normal file
|
@ -0,0 +1 @@
|
|||
system_public_prop(vendor_gti_prop)
|
1
touch/gti/sepolicy/property_contexts
Normal file
1
touch/gti/sepolicy/property_contexts
Normal file
|
@ -0,0 +1 @@
|
|||
vendor.touch.gti0. u:object_r:vendor_gti_prop:s0
|
1
touch/gti/sepolicy/vendor_init.te
Normal file
1
touch/gti/sepolicy/vendor_init.te
Normal file
|
@ -0,0 +1 @@
|
|||
set_prop(vendor_init, vendor_gti_prop)
|
1
touch/gti/sepolicy_gti_dual/property_contexts
Normal file
1
touch/gti/sepolicy_gti_dual/property_contexts
Normal file
|
@ -0,0 +1 @@
|
|||
vendor.touch.gti1. u:object_r:vendor_gti_prop:s0
|
101
touch/gti/touch_gti_ical.cpp
Normal file
101
touch/gti/touch_gti_ical.cpp
Normal file
|
@ -0,0 +1,101 @@
|
|||
/*
|
||||
** Copyright 2024, 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.
|
||||
*/
|
||||
#define LOG_TAG "touch_gti_ical"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#ifdef __ANDROID__
|
||||
#include <cutils/properties.h>
|
||||
#include <cutils/log.h>
|
||||
#else
|
||||
#define property_set
|
||||
#define property_get
|
||||
#define ALOGI printf
|
||||
#define ALOGW printf
|
||||
#endif
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
char *line = NULL;
|
||||
size_t len = 0;
|
||||
FILE *ical_fd;
|
||||
const char *ical_state_prop[2] = {
|
||||
[0] = "vendor.touch.gti0.ical.state",
|
||||
[1] = "vendor.touch.gti1.ical.state",
|
||||
};
|
||||
const char *ical_result_prop[2] = {
|
||||
[0] = "vendor.touch.gti0.ical.result",
|
||||
[1] = "vendor.touch.gti1.ical.result",
|
||||
};
|
||||
const char *ical_sysfs[2] = {
|
||||
[0] = "/sys/devices/virtual/goog_touch_interface/gti.0/interactive_calibrate",
|
||||
[1] = "/sys/devices/virtual/goog_touch_interface/gti.1/interactive_calibrate",
|
||||
};
|
||||
const char *ical_state_prop_path = ical_state_prop[0];
|
||||
const char *ical_result_prop_path = ical_result_prop[0];
|
||||
const char *ical_sysfs_path = ical_sysfs[0];
|
||||
|
||||
if (argc < 3) {
|
||||
ALOGW("No target dev or command for interactive_calibrate sysfs.\n");
|
||||
property_set(ical_state_prop[0], "done");
|
||||
property_set(ical_state_prop[1], "done");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (strncmp(argv[1], "1", strlen(argv[1])) == 0 ||
|
||||
strncmp(argv[1], "gti1", strlen(argv[1])) == 0 ||
|
||||
strncmp(argv[1], "gti.1", strlen(argv[1])) == 0) {
|
||||
ical_state_prop_path = ical_state_prop[1];
|
||||
ical_result_prop_path = ical_result_prop[1];
|
||||
ical_sysfs_path = ical_sysfs[1];
|
||||
}
|
||||
|
||||
property_set(ical_result_prop_path, "na");
|
||||
property_set(ical_state_prop_path, "running");
|
||||
if (access(ical_sysfs_path, F_OK | R_OK | W_OK)) {
|
||||
ALOGW("Can't access %s\n", ical_sysfs_path);
|
||||
property_set(ical_state_prop_path, "done");
|
||||
return 0;
|
||||
}
|
||||
|
||||
ical_fd = fopen(ical_sysfs_path, "r+");
|
||||
if (ical_fd == NULL) {
|
||||
ALOGW("Can't fopen %s\n", ical_sysfs_path);
|
||||
property_set(ical_state_prop_path, "done");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (strncmp(argv[2], "read", strlen(argv[2])) == 0) {
|
||||
getline(&line, &len, ical_fd);
|
||||
if (line != NULL) {
|
||||
property_set(ical_state_prop_path, "read");
|
||||
property_set(ical_result_prop_path, line);
|
||||
ALOGI("read: %s => %s", ical_sysfs_path, line);
|
||||
free(line);
|
||||
}
|
||||
} else {
|
||||
property_set(ical_state_prop_path, argv[2]);
|
||||
fwrite(argv[2], 1, strlen(argv[2]), ical_fd);
|
||||
ALOGI("write: %s => %s\n", argv[2], ical_sysfs_path);
|
||||
}
|
||||
property_set(ical_state_prop_path, "done");
|
||||
|
||||
fclose(ical_fd);
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue