32 Commits

Author SHA1 Message Date
ggow dbc1218b1e toolchain: set path to linux cross compiler properly 2023-06-26 17:32:09 +01:00
ggow cd422c7335 wifi: fix-up nvram bug 2022-01-29 19:48:35 +00:00
ggow 887c8d259f camera: fix detection of austin camera module - thanks Graysters@xda
ref:
- https://forum.xda-developers.com/t/rom-unlocked-ford-austin-lineage-14-1-17-jan-2021.3962457/post-86030923
- https://forum.xda-developers.com/t/rom-unlocked-ford-austin-lineage-14-1-17-jan-2021.3962457/post-86041791
2022-01-29 12:31:04 +00:00
Joel Bacchus b42993b55e rootdir: remove superfluous sdcard services 2021-01-17 20:57:40 +00:00
Joel Bacchus c7fd02a206 rootdir: fix external sdcard access
This is an error in the format of the fstab entry

Thanks Ziona!
2021-01-17 20:45:17 +00:00
Joel Bacchus 28a5a66722 codecs: update omx binaries and move media configs into media folder
Thanks to Ziona!

ref: https://github.com/PecanCM/cm_vendor_lge/commit/576cfc84934552846459aebc43291dcfb9c46de6
2021-01-17 20:41:12 +00:00
Joel Bacchus acc2f78690 media: fix-up codec support
special thanks and credit go to Ziona @xda
2021-01-17 18:17:32 +00:00
Joel Bacchus b5b1d38eeb rootdir: add permissions for call state detection 2021-01-17 17:15:56 +00:00
Joel Bacchus 3927aa5245 rootdir: support legacy storage paths 2021-01-17 17:11:04 +00:00
Joel Bacchus 1461bbf376 zram: setup as 0.5 GB 2021-01-17 16:47:50 +00:00
Joel Bacchus b474a8886d mt8127-common: update for cm-14.1 2021-01-17 01:38:08 +00:00
Joel Bacchus f42d100fc8 init: update scripts for cm-14.1 2021-01-17 01:37:18 +00:00
Joel Bacchus 4fe0995a91 shims: add missing symbols 2021-01-17 01:35:05 +00:00
Joel Bacchus 47bedcc2a3 proprietary-files.txt: update for cm-14.1 2021-01-17 01:28:50 +00:00
Stricted c95336cd0c hal: add mediatek wifi_hal 2021-01-17 01:27:11 +00:00
Stricted ce6ecac911 wpa_supplicant: add newer version from ttab 2021-01-17 01:21:43 +00:00
Joel Bacchus b0f2203451 wpa_supplicant: remove old version 2021-01-17 01:19:29 +00:00
Stricted 5355d826f9 add gps support back 2021-01-17 01:17:29 +00:00
Stricted 6314ea8ee6 sepolicy: address mediacodec denials
Change-Id: If26afc6e0990bd7970f8a7feeec99e17ad4af7e2
(cherry picked from commit 2fce8fe3d3c704e56f05802b862f47493ad7f540)
2021-01-17 01:14:05 +00:00
Stricted e6ae002eb0 sepolicy: address some mediaserver denials
Change-Id: Idcc3e2d1a9201c6c48b167249cfba7c25f666b36
(cherry picked from commit b74644f4ed14b770d42a8db8b2ed0969d65256e2)
2021-01-17 01:13:59 +00:00
Stricted 3f1d915dbb sepolicy: address some nvram_daemon denials
Change-Id: I0ad15a06d19b4b69b205d9b28706e4fb59dce79b
(cherry picked from commit 9562b311e7e481fe226fb536f97a14a72734d02b)
2021-01-17 01:13:47 +00:00
Stricted 4d73673ab0 sepolicy: address cameraserver denials
Change-Id: I45d58beea2570c8d5341bc3eef956150ed340247
(cherry picked from commit 62034ce5ea0c08cbeb25ff9aefba0912d2f6f27e)
2021-01-17 01:13:39 +00:00
Stricted 0492e4744d sepolicy: label some camera files
Change-Id: Ifcd19bab3b78c702b58335fbc69ee567733fdb71
(cherry picked from commit 8759212b431261a79b35d7f277295703209109a2)
2021-01-17 01:13:20 +00:00
Stricted 1af7693c6b address some selinux denials
Change-Id: Iff77bcbfc6a496dfb587c3bcce781c3c00e2c292
(cherry picked from commit 5244c9e37f94e000a4ea61efa80ad3318aa39c84)
2021-01-17 01:13:12 +00:00
Stricted 9a2030010d [WIP]start this selinux mess
* taken from https://github.com/lineage-geminipda/android_device_planet_geminipda

Change-Id: I80708a4650646ecd870b60217cafc0212aa2022e
(cherry picked from commit ce9dd0181db0cdeabb9edaf3781d74fb6645bb98)
2021-01-17 01:13:03 +00:00
Stricted db2a75afd8 add mediacodec seccomp policy
Change-Id: Ic631d67c2ef400eba486ea41a7b99dd43f36e563
(cherry picked from commit 79f1e6d62f91213ca55f20e31d8f4d7edcf4a84c)
2021-01-17 01:12:12 +00:00
Joel Bacchus 37f06cd085 patch: update DEVICE_DIR for mt8127-common 2021-01-17 01:09:16 +00:00
Stricted 4a320140ae add patch for microphone fix
Change-Id: I32c9098c16b05982c29c637dfdd760f13d304152
(cherry picked from commit df956c9636bd35cbebac7d362c461172ad792828)
2021-01-17 01:07:16 +00:00
Stricted df65abc171 mark patch.sh as executable
Change-Id: Ifecabb41fe26315b63ae21a2d4659fa16d33fdbb
(cherry picked from commit b79a50664073bd97f8e150c24f68078ef7402357)
2021-01-17 01:07:02 +00:00
Stricted b07bb00578 add another camera patch
Change-Id: I4ea2d0b490ffa6b5a9940dcbe0ee75b0bc4f5aa9
(cherry picked from commit b58455c344b7658619d764ca0c15f110363fe0d4)
2021-01-17 01:06:54 +00:00
Stricted 17b6b21a77 add mediatek color format patch
Change-Id: Ia47347ff3b265c2625290760cdcd28ece50d246c
(cherry picked from commit 374bd92aa9f7216967aec8233b2cf7e490debd6b)
2021-01-17 01:06:46 +00:00
fire855 dfaa6702ad hal: add backlight support 2021-01-17 01:04:23 +00:00
111 changed files with 14738 additions and 1151 deletions
+53 -22
View File
@@ -12,26 +12,26 @@ TARGET_SPECIFIC_HEADER_PATH := $(DEVICE_COMMON)/include
TARGET_BOARD_PLATFORM := mt8127
TARGET_BOARD_PLATFORM_GPU := mali-450mp4
# Bootloader
TARGET_NO_BOOTLOADER := true
# Architecture
# Arch
TARGET_ARCH := arm
TARGET_CPU_VARIANT := cortex-a7
TARGET_ARCH_VARIANT := armv7-a-neon
TARGET_ARCH_VARIANT_CPU := cortex-a15
TARGET_CPU_VARIANT := cortex-a7
TARGET_CPU_ABI := armeabi-v7a
TARGET_CPU_ABI2 := armeabi
TARGET_CPU_SMP := true
ARCH_ARM_HAVE_TLS_REGISTER := true
ARCH_ARM_HAVE_NEON := true
# Kernel Config
BOARD_CUSTOM_BOOTIMG_MK := $(DEVICE_COMMON)/mkbootimg.mk
BOARD_MKBOOTIMG_ARGS := --ramdisk_offset 0x04000000 --tags_offset 0x00000100
BOARD_KERNEL_IMAGE_NAME := zImage
BOARD_KERNEL_CMDLINE += androidboot.hardware=mt8127
BOARD_KERNEL_BASE := 0x80000000
BOARD_KERNEL_PAGESIZE := 2048
TARGET_KERNEL_SOURCE := $(KERNEL_COMMON)
BOARD_MKBOOTIMG_ARGS := --cmdline "$(BOARD_KERNEL_CMDLINE)" --base 0x80000000 --pagesize 2048 --kernel_offset 0x00008000 --ramdisk_offset 0x04000000 --second_offset 0x00f00000 --tags_offset 0x00000100
TARGET_KERNEL_CROSS_COMPILE_PREFIX := arm-eabi-
KERNEL_TOOLCHAIN := $(shell pwd)/prebuilts/gcc/linux-x86/arm/$(TARGET_KERNEL_CROSS_COMPILE_PREFIX)4.8/bin
BOARD_HAS_MTK_HARDWARE := true
MTK_HARDWARE := true
@@ -39,21 +39,25 @@ MTK_HARDWARE := true
# Flags
TARGET_GLOBAL_CFLAGS += -mfpu=neon -mfloat-abi=softfp
TARGET_GLOBAL_CPPFLAGS += -DMTK_HARDWARE -mfpu=neon -mfloat-abi=softfp
COMMON_GLOBAL_CFLAGS += -DMTK_HARDWARE -DREFRESH_RATE=60
COMMON_GLOBAL_CFLAGS += -DAMAZON_LOG -DADD_LEGACY_ACQUIRE_BUFFER_SYMBOL
COMMON_GLOBAL_CFLAGS += -DNO_SECURE_DISCARD
TARGET_GLOBAL_CFLAGS += -DREFRESH_RATE=60
TARGET_GLOBAL_CFLAGS += -DMTK_HARDWARE
TARGET_GLOBAL_CFLAGS += -DADD_LEGACY_ACQUIRE_BUFFER_SYMBOL
TARGET_GLOBAL_CFLAGS += -DNO_SECURE_DISCARD
# WIFI
BOARD_WLAN_DEVICE := MediaTek
WPA_SUPPLICANT_VERSION := VER_0_8_X
BOARD_WPA_SUPPLICANT_DRIVER := NL80211
BOARD_HOSTAPD_DRIVER := NL80211
BOARD_WLAN_DEVICE := mt66xx
BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_$(BOARD_WLAN_DEVICE)
BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_mt66xx
BOARD_WPA_SUPPLICANT_DRIVER := NL80211
BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_$(BOARD_WLAN_DEVICE)
WIFI_DRIVER_FW_PATH_PARAM:="/dev/wmtWifi"
WIFI_DRIVER_FW_PATH_STA:=STA
WIFI_DRIVER_FW_PATH_AP:=AP
WIFI_DRIVER_FW_PATH_STA:=P2P
BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_mt66xx
WIFI_DRIVER_FW_PATH_PARAM := /dev/wmtWifi
WIFI_DRIVER_FW_PATH_AP := AP
WIFI_DRIVER_FW_PATH_STA := STA
WIFI_DRIVER_FW_PATH_P2P := P2P
WIFI_DRIVER_STATE_CTRL_PARAM := /dev/wmtWifi
WIFI_DRIVER_STATE_ON := 1
WIFI_DRIVER_STATE_OFF := 0
# BT
BOARD_HAVE_BLUETOOTH := true
@@ -63,6 +67,7 @@ BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR := $(DEVICE_COMMON)/bluetooth
# Graphics
BOARD_EGL_CFG := $(DEVICE_COMMON)/configs/egl.cfg
BOARD_EGL_NEEDS_HANDLE_VALUE := true
USE_OPENGL_RENDERER := true
TARGET_USES_C2D_COMPOSITION := true
TARGET_USES_OVERLAY := true
@@ -71,9 +76,13 @@ TARGET_DISPLAY_USE_RETIRE_FENCE := true
MAX_EGL_CACHE_KEY_SIZE := 12*1024
MAX_EGL_CACHE_SIZE := 1024*1024
TARGET_HAS_LEGACY_CAMERA_HAL1 := true
TARGET_USES_MEDIA_EXTENSIONS := true
# Surfaceflinger optimization for VD surfaces
TARGET_FORCE_HWC_FOR_VIRTUAL_DISPLAYS := true
#NUM_FRAMEBUFFER_SURFACE_BUFFERS := 3
NUM_FRAMEBUFFER_SURFACE_BUFFERS := 3
# Filesystem
BOARD_BOOTIMAGE_PARTITION_SIZE := 16777216
@@ -83,11 +92,27 @@ BOARD_USERDATAIMAGE_PARTITION_SIZE := 6227082752
BOARD_FLASH_BLOCK_SIZE := 131072
TARGET_USERIMAGES_USE_EXT4 := true
BLOCK_BASED_OTA := false
BLOCK_BASED_OTA := true
# Vold
TARGET_USE_CUSTOM_LUN_FILE_PATH := /sys/devices/platform/mt_usb/musb-hdrc.0.auto/gadget/lun%d/file
# Shims
LINKER_FORCED_SHIM_LIBS := \
/system/lib/libbinder.so|libshim_libbinder.so \
/system/lib/liblog.so|libshim_liblog.so \
/system/lib/libcutils.so|libshim_liblog.so \
/system/vendor/lib/libwvm.so|libshim_libwvm.so \
/system/lib/libasp.so|libshim_libbinder.so \
/system/lib/libcam_utils.so|libshim_libcamera.so \
/system/lib/libMtkOmxVdec.so|libshim_libcamera.so \
/system/lib/libMtkOmxVenc.so|libshim_libcamera.so \
/system/lib/libcam.utils.sensorlistener.so|libshim_libcamera.so \
/system/lib/libcam_platform.so|libshim_libcamera.so \
/system/lib/libaal.so|libshim_skia.so \
/system/lib/libaal.so|libshim_gui.so \
/system/lib/libaal.so|libshim_libbinder.so
# TWRP
ifneq (,$(strip $(wildcard bootable/recovery-twrp/twrp.cpp)))
RECOVERY_VARIANT := twrp
@@ -107,3 +132,9 @@ RECOVERY_TOUCHSCREEN_SWAP_XY := true
RECOVERY_TOUCHSCREEN_FLIP_X := true
BOARD_HAS_FLIPPED_SCREEN := true
# SELinux
BOARD_SECCOMP_POLICY += $(DEVICE_COMMON)/seccomp
BOARD_SEPOLICY_DIRS += $(DEVICE_COMMON)/sepolicy
# Disable API check
WITHOUT_CHECK_API := true
+6
View File
@@ -0,0 +1,6 @@
#!/system/bin/sh
mkdir -p /data/nvram/APCFG/APRDEB
cp /system/etc/nvram/WIFI /data/nvram/APCFG/APRDEB/WIFI
cp /system/etc/nvram/WIFI_CUSTOM /data/nvram/APCFG/APRDEB/WIFI_CUSTOM
chmod 0660 /data/nvram/APCFG/APRDEB/WIFI
chmod 0660 /data/nvram/APCFG/APRDEB/WIFI_CUSTOM
-22
View File
@@ -1,22 +0,0 @@
OMX.MTK.VIDEO.DECODER.H263 video_decoder.h263 libMtkOmxVdec.so
OMX.MTK.VIDEO.DECODER.MPEG4 video_decoder.mpeg4 libMtkOmxVdec.so
OMX.MTK.VIDEO.DECODER.AVC video_decoder.avc libMtkOmxVdec.so
OMX.MTK.VIDEO.DECODER.HEVC video_decoder.hevc libMtkOmxVdec.so
OMX.MTK.VIDEO.DECODER.HEVC.secure video_decoder.hevc libMtkOmxVdec.so
OMX.MTK.VIDEO.DECODER.VPX video_decoder.vpx libMtkOmxVdec.so
OMX.MTK.VIDEO.DECODER.AVC.secure video_decoder.avc libMtkOmxVdec.so
OMX.MTK.VIDEO.ENCODER.AVC video_encoder.avc libMtkOmxVenc.so
OMX.MTK.VIDEO.ENCODER.H263 video_encoder.h263 libMtkOmxVenc.so
AIV.play AIV.play.101 libMtkOmxAIVPlayer.so
AIV.play.avcddp play.avcddp libMtkOmxAIVPlayer.so
AIV.play.generic AIV.play.role.generic libMtkOmxAIVPlayer.so
OMX.MTK.AUDIO.DECODER.MP3 audio_decoder.mp3 libMtkOmxMp3Dec.so
OMX.MTK.AUDIO.DECODER.AAC audio_decoder.aac libMtkOmxAacDec.so
OMX.MTK.AUDIO.DECODER.G711 audio_decoder.g711 libMtkOmxG711Dec.so
OMX.MTK.AUDIO.DECODER.RAW audio_decoder.raw libMtkOmxRawDec.so
OMX.MTK.AUDIO.DECODER.AMR.NB audio_decoder.amrnb libMtkOmxAMRNBDec.so
OMX.MTK.AUDIO.DECODER.AMR.WB audio_decoder.amrwb libMtkOmxAMRWBDec.so
OMX.MTK.AUDIO.ENCODER.AMR audio_encoder.amrnb libMtkOmxAmrEnc.so
OMX.MTK.AUDIO.ENCODER.AWB audio_encoder.amrwb libMtkOmxAwbEnc.so
OMX.MTK.AUDIO.ENCODER.AAC audio_encoder.aac libMtkOmxAacEnc.so
OMX.MTK.AUDIO.DECODER.VORBIS audio_decoder.vorbis libMtkOmxVorbisDec.so
+32
View File
@@ -0,0 +1,32 @@
# Copyright (C) 2008 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.
LOCAL_PATH:= $(call my-dir)
# HAL module implemenation, not prelinked and stored in
# hw/<COPYPIX_HARDWARE_MODULE_ID>.<ro.board.platform>.so
include $(CLEAR_VARS)
LOCAL_SRC_FILES := lights.c
LOCAL_MULTILIB := both
LOCAL_MODULE_TAGS := optional
LOCAL_PRELINK_MODULE := false
LOCAL_MODULE_RELATIVE_PATH := hw
LOCAL_SHARED_LIBRARIES := liblog
LOCAL_MODULE := lights.$(TARGET_BOARD_PLATFORM)
include $(BUILD_SHARED_LIBRARY)
+316
View File
@@ -0,0 +1,316 @@
/*
* Copyright (C) 2016 The M.A.D. Team
*
* 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 "lights"
#include <cutils/log.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <fcntl.h>
#include <pthread.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <hardware/lights.h>
/******************************************************************************/
static pthread_once_t g_init = PTHREAD_ONCE_INIT;
static pthread_mutex_t g_lock = PTHREAD_MUTEX_INITIALIZER;
static struct light_state_t g_attention;
static struct light_state_t g_notification;
static struct light_state_t g_battery;
char const*const RED_LED_FILE
= "/sys/class/leds/red/brightness";
char const*const GREEN_LED_FILE
= "/sys/class/leds/green/brightness";
char const*const BLUE_LED_FILE
= "/sys/class/leds/blue/brightness";
char const*const LCD_FILE
= "/sys/class/leds/lcd-backlight/brightness";
char const*const BUTTONS_FILE
= "/sys/class/leds/button-backlight/brightness";
/**
* device methods
*/
void init_globals(void)
{
// init the mutex
pthread_mutex_init(&g_lock, NULL);
}
static int
write_int(char const* path, int value)
{
int fd;
static int already_warned = 0;
fd = open(path, O_RDWR);
if (fd >= 0) {
char buffer[20];
int bytes = snprintf(buffer, sizeof(buffer), "%d\n", value);
ssize_t amt = write(fd, buffer, (size_t)bytes);
close(fd);
return amt == -1 ? -errno : 0;
} else {
if (already_warned == 0) {
ALOGE("write_int failed to open %s\n", path);
already_warned = 1;
}
return -errno;
}
}
static int
is_lit(struct light_state_t const* state)
{
return state->color & 0x00ffffff;
}
static int
rgb_to_brightness(struct light_state_t const* state)
{
int color = state->color & 0x00ffffff;
return ((77*((color>>16)&0x00ff))
+ (150*((color>>8)&0x00ff)) + (29*(color&0x00ff))) >> 8;
}
static int
set_light_backlight(struct light_device_t* dev,
struct light_state_t const* state)
{
if (!dev) {
return -1;
}
int err = 0;
int brightness = rgb_to_brightness(state);
pthread_mutex_lock(&g_lock);
err = write_int(LCD_FILE, brightness);
pthread_mutex_unlock(&g_lock);
return err;
}
static int
set_light_buttons(struct light_device_t* dev,
struct light_state_t const* state)
{
if (!dev) {
return -1;
}
int err = 0;
int on = is_lit(state);
pthread_mutex_lock(&g_lock);
err = write_int(BUTTONS_FILE, on ? 255 : 0);
pthread_mutex_unlock(&g_lock);
return err;
}
static int
set_speaker_light_locked(struct light_device_t* dev,
struct light_state_t const* state)
{
int red, green, blue, blink;
int onMS, offMS;
unsigned int colorRGB;
if (!dev) {
return -1;
}
switch (state->flashMode) {
case LIGHT_FLASH_TIMED:
onMS = state->flashOnMS;
offMS = state->flashOffMS;
break;
case LIGHT_FLASH_NONE:
default:
onMS = 0;
offMS = 0;
break;
}
colorRGB = state->color;
ALOGV("set_speaker_light_locked mode %d, colorRGB=%08X, onMS=%d, offMS=%d\n",
state->flashMode, colorRGB, onMS, offMS);
red = (colorRGB >> 16) & 0xFF;
green = (colorRGB >> 8) & 0xFF;
blue = colorRGB & 0xFF;
blink = onMS > 0 && offMS > 0;
write_int(RED_LED_FILE, 0);
write_int(GREEN_LED_FILE, 0);
write_int(BLUE_LED_FILE, 0);
if (blink) {
if (red >= 128) {
write_int(RED_LED_FILE, 128);
}
if (green >= 128) {
write_int(GREEN_LED_FILE, 128);
}
if (blue >= 128) {
write_int(BLUE_LED_FILE, 128);
}
}
else {
if (red >= 128) {
write_int(RED_LED_FILE, 255);
}
if (green >= 128) {
write_int(GREEN_LED_FILE, 255);
}
if (blue >= 128) {
write_int(BLUE_LED_FILE, 255);
}
}
return 0;
}
static void
handle_speaker_light_locked(struct light_device_t* dev)
{
if (is_lit(&g_attention)) {
set_speaker_light_locked(dev, &g_attention);
} else if (is_lit(&g_notification)) {
set_speaker_light_locked(dev, &g_notification);
} else {
set_speaker_light_locked(dev, &g_battery);
}
}
static int
set_light_battery(struct light_device_t* dev,
struct light_state_t const* state)
{
pthread_mutex_lock(&g_lock);
g_battery = *state;
handle_speaker_light_locked(dev);
pthread_mutex_unlock(&g_lock);
return 0;
}
static int
set_light_notifications(struct light_device_t* dev,
struct light_state_t const* state)
{
pthread_mutex_lock(&g_lock);
g_notification = *state;
handle_speaker_light_locked(dev);
pthread_mutex_unlock(&g_lock);
return 0;
}
static int
set_light_attention(struct light_device_t* dev,
struct light_state_t const* state)
{
pthread_mutex_lock(&g_lock);
g_attention = *state;
handle_speaker_light_locked(dev);
pthread_mutex_unlock(&g_lock);
return 0;
}
/** Close the lights device */
static int
close_lights(struct light_device_t *dev)
{
if (dev) {
free(dev);
}
return 0;
}
/******************************************************************************/
/**
* module methods
*/
/** Open a new instance of a lights device using name */
static int open_lights(const struct hw_module_t* module, char const* name,
struct hw_device_t** device)
{
int (*set_light)(struct light_device_t* dev,
struct light_state_t const* state);
if (0 == strcmp(LIGHT_ID_BACKLIGHT, name))
set_light = set_light_backlight;
else if (0 == strcmp(LIGHT_ID_BUTTONS, name))
set_light = set_light_buttons;
else if (0 == strcmp(LIGHT_ID_BATTERY, name))
set_light = set_light_battery;
else if (0 == strcmp(LIGHT_ID_NOTIFICATIONS, name))
set_light = set_light_notifications;
else if (0 == strcmp(LIGHT_ID_ATTENTION, name))
set_light = set_light_attention;
else
return -EINVAL;
pthread_once(&g_init, init_globals);
struct light_device_t *dev = malloc(sizeof(struct light_device_t));
if (!dev)
return -ENOMEM;
memset(dev, 0, sizeof(*dev));
dev->common.tag = HARDWARE_DEVICE_TAG;
dev->common.version = 0;
dev->common.module = (struct hw_module_t*)module;
dev->common.close = (int (*)(struct hw_device_t*))close_lights;
dev->set_light = set_light;
*device = (struct hw_device_t*)dev;
return 0;
}
static struct hw_module_methods_t lights_module_methods = {
.open = open_lights,
};
/*
* The lights Module
*/
struct hw_module_t HAL_MODULE_INFO_SYM = {
.tag = HARDWARE_MODULE_TAG,
.version_major = 1,
.version_minor = 0,
.id = LIGHTS_HARDWARE_MODULE_ID,
.name = "M.A.D. Lights Module",
.author = "M.A.D. Team",
.methods = &lights_module_methods,
};
+54
View File
@@ -0,0 +1,54 @@
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := shim_binder.cpp
LOCAL_SHARED_LIBRARIES := libbinder
LOCAL_MODULE := libshim_libbinder
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := shim_camera.cpp
LOCAL_SHARED_LIBRARIES := libui liblog libcutils libgui libbinder libutils
LOCAL_MODULE := libshim_libcamera
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := shim_liblog.c
LOCAL_SHARED_LIBRARIES := liblog
LOCAL_MODULE := libshim_liblog
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := shim_skia.cpp
LOCAL_SHARED_LIBRARIES := libskia
LOCAL_MODULE := libshim_skia
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := shim_gui.cpp
LOCAL_SHARED_LIBRARIES := libgui
LOCAL_MODULE := libshim_gui
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_C_INCLUDES += frameworks/av
LOCAL_SRC_FILES := shim_libwvm.cpp
LOCAL_SHARED_LIBRARIES := libstagefright_foundation liblog libmedia
LOCAL_MODULE := libshim_libwvm
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_32_BIT_ONLY := true
include $(BUILD_SHARED_LIBRARY)
+13
View File
@@ -0,0 +1,13 @@
extern "C" int _ZN7android6Parcel13writeString16EPKDsj();
extern "C" int _ZN7android6Parcel13writeString16EPKtj() {
return _ZN7android6Parcel13writeString16EPKDsj();
}
extern "C" int _ZNK7android6Parcel18readParcelFileDescriptorEv(); // TBD can't find this symbol on libbinder?????
extern "C" int _ZNK7android6Parcel24readParcelFileDescriptorERi(int& outCommChannel) {
return 0; //_ZNK7android6Parcel18readParcelFileDescriptorEv();
}
extern "C" int _ZN7android10IInterface8asBinderEv() {
return 0;
}
+51
View File
@@ -0,0 +1,51 @@
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <pthread.h>
#include <utils/Log.h>
#include <hardware/power.h>
#include <hardware/hardware.h>
#include <ui/GraphicBuffer.h>
#include <string>
using namespace android;
extern "C" void _ZN7android13GraphicBufferC1EjjijNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE(
uint32_t inWidth, uint32_t inHeight, int inFormat, uint32_t inUsage,
std::string requestorName);
extern "C" void _ZN7android13GraphicBufferC1Ejjij(
uint32_t inWidth, uint32_t inHeight, int inFormat, uint32_t inUsage) {
std::string requestorName = "<Unknown>";
_ZN7android13GraphicBufferC1EjjijNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE(
inWidth, inHeight, inFormat, inUsage, requestorName);
}
extern "C" void* _ZN7android19GraphicBufferMapper4lockEPK13native_handlejRKNS_4RectEPPv(
buffer_handle_t handle, uint32_t usage, const Rect& bounds, void** vaddr);
extern "C" void* _ZN7android19GraphicBufferMapper4lockEPK13native_handleiRKNS_4RectEPPv(
buffer_handle_t handle, int32_t usage, const Rect& bounds, void** vaddr) {
return _ZN7android19GraphicBufferMapper4lockEPK13native_handlejRKNS_4RectEPPv(
handle, static_cast<uint32_t>(usage), bounds, vaddr);
}
extern "C" void _ZN7android7String8C1EPKc(void **str8P, const char *str);
extern "C" void _ZN7android13SensorManagerC1Ev(void *sensorMgr)
{
}
extern "C" void _ZN7android13SensorManager16createEventQueueEv(void **retVal, void *sensorMgr)
{
}
extern "C" pthread_mutex_t _ZN7android9SingletonINS_13SensorManagerEE5sLockE = PTHREAD_MUTEX_INITIALIZER;
extern "C" void* _ZN7android9SingletonINS_13SensorManagerEE9sInstanceE = NULL;
+10
View File
@@ -0,0 +1,10 @@
#include <stdint.h>
extern "C"
{
/* android::SurfaceControl:setLayer*/
void _ZN7android14SurfaceControl8setLayerEj(uint32_t) {}
void _ZN7android14SurfaceControl8setLayerEi(int32_t layer) {
_ZN7android14SurfaceControl8setLayerEj(static_cast<uint32_t>(layer));
}
}
+49
View File
@@ -0,0 +1,49 @@
#include <string.h>
#include <log/log.h>
#define LOG_BUF_SIZE 1024
int lab126_log_write(int bufID, int prio, const char *tag, const char *fmt, ...)
{
va_list ap;
char buf[LOG_BUF_SIZE];
int _a = bufID;
int _b = prio;
// skip flooding logs
if (!tag)
{
tag = "";
}
if( strncmp(tag, "Sensors", 7) == 0
|| strncmp(tag, "qcom_se", 7) == 0 )
{
return 0;
}
// skip flooding logs
va_start(ap, fmt);
vsnprintf(buf, LOG_BUF_SIZE, fmt, ap);
va_end(ap);
char new_tag[128];
snprintf(new_tag, sizeof(new_tag), "AMZ-%s", tag);
return __android_log_buf_write(LOG_ID_MAIN, ANDROID_LOG_DEBUG, new_tag, buf);
}
int __vitals_log_print(int bufID, int prio, const char *tag, const char *fmt, ...)
{
va_list ap;
char buf[LOG_BUF_SIZE];
int _a = bufID;
int _b = prio;
va_start(ap, fmt);
va_end(ap);
return __android_log_write(ANDROID_LOG_DEBUG, tag, "__vitals_log_print not implemented");
}
+7
View File
@@ -0,0 +1,7 @@
extern "C" {
void _ZN7android16MediaBufferGroupC1Ev() { }
void _ZNK7android11MediaSource11ReadOptions14getNonBlockingEv() { }
void _ZNK7android11MediaSource11ReadOptions9getSeekToEPxPNS1_8SeekModeE() { }
void _ZN7android16MediaBufferGroup14acquire_bufferEPPNS_11MediaBufferE() { }
void _ZN7android16MediaBufferGroup14acquire_bufferEPPNS_11MediaBufferEb() { }
}
+9
View File
@@ -0,0 +1,9 @@
#include <SkBitmap.h>
extern "C"
{
extern bool _ZN8SkBitmap14tryAllocPixelsEPNS_9AllocatorEP12SkColorTable(SkBitmap::Allocator* allocator, SkColorTable* ctable);
bool _ZN8SkBitmap11allocPixelsEPNS_9AllocatorEP12SkColorTable(SkBitmap::Allocator* allocator, SkColorTable* ctable) {
return _ZN8SkBitmap14tryAllocPixelsEPNS_9AllocatorEP12SkColorTable(allocator, ctable);
}
}
@@ -77,7 +77,10 @@ Only the three quirks included above are recognized at this point:
-->
<MediaCodecs>
<Decoders>
<Include href="media_codecs_google_audio.xml" />
<Include href="media_codecs_google_telephony.xml" />
<Decoders>
<MediaCodec name="OMX.MTK.AUDIO.DECODER.MP3" type="audio/mpeg" >
<Quirk name="decoder-lies-about-number-of-channels" />
<Quirk name="supports-multiple-frames-per-input-buffer" />
@@ -113,24 +116,55 @@ Only the three quirks included above are recognized at this point:
<Feature name="adaptive-playback"/>
</MediaCodec>
</Decoders>
<Decoders>
<!-- ffmpeg video decoders -->
<MediaCodec name="OMX.ffmpeg.h263.decoder" type="video/3gpp">
<Limit name="size" min="16x16" max="1920x1088" />
<Limit name="alignment" value="2x2" />
<Feature name="adaptive-playback" />
</MediaCodec>
<MediaCodec name="OMX.ffmpeg.h264.decoder" type="video/avc">
<Limit name="size" min="1088h1920" max="2048x2048" />
<Limit name="alignment" value="720x1280" />
<Feature name="adaptive-playback" />
</MediaCodec>
<MediaCodec name="OMX.ffmpeg.hevc.decoder" type="video/hevc">
<Limit name="size" min="2x2" max="2048x2048" />
<Limit name="alignment" value="2x2" />
<Feature name="adaptive-playback" />
</MediaCodec>
</Decoders>
<Encoders>
<MediaCodec name="OMX.MTK.VIDEO.ENCODER.H263" type="video/3gpp" >
<Limit name="size" min="176x144" max="176x144" />
<!-- mediatek video encoders -->
<MediaCodec name="OMX.MTK.VIDEO.ENCODER.MPEG4" type="video/mp4v-es" >
<Limit name="size" min="16x16" max="1920x1088" />
<Limit name="alignment" value="16x16" />
<Limit name="block-size" value="16x16" />
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
</MediaCodec>
<MediaCodec name="OMX.MTK.VIDEO.ENCODER.H263" type="video/3gpp" >
<Limit name="size" min="16x16" max="1920x1088" />
<Limit name="alignment" value="16x16" />
<Limit name="block-size" value="16x16" />
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
</MediaCodec>
<MediaCodec name="OMX.MTK.VIDEO.ENCODER.AVC" type="video/avc" >
<Limit name="size" min="128x96" max="1920x1088" />
<Limit name="size" min="128x96" max="1920x1080" />
<Limit name="alignment" value="16x16" />
<Limit name="block-size" value="16x16" />
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
</MediaCodec>
</Encoders>
<Include href="media_codecs_google_audio.xml" />
<Include href="media_codecs_google_telephony.xml" />
<Include href="media_codecs_google_video.xml" />
<Include href="media_codecs_ffmpeg.xml" />
</MediaCodecs>
+221
View File
@@ -0,0 +1,221 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright (C) 2012 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.
-->
<!--
<!DOCTYPE MediaCodecs [
<!ELEMENT MediaCodecs (Decoders,Encoders)>
<!ELEMENT Decoders (MediaCodec*)>
<!ELEMENT Encoders (MediaCodec*)>
<!ELEMENT MediaCodec (Type*,Quirk*)>
<!ATTLIST MediaCodec name CDATA #REQUIRED>
<!ATTLIST MediaCodec type CDATA>
<!ELEMENT Type EMPTY>
<!ATTLIST Type name CDATA #REQUIRED>
<!ELEMENT Quirk EMPTY>
<!ATTLIST Quirk name CDATA #REQUIRED>
]>
There's a simple and a complex syntax to declare the availability of a
media codec:
A codec that properly follows the OpenMax spec and therefore doesn't have any
quirks and that only supports a single content type can be declared like so:
<MediaCodec name="OMX.foo.bar" type="something/interesting" />
If a codec has quirks OR supports multiple content types, the following syntax
can be used:
<MediaCodec name="OMX.foo.bar" >
<Type name="something/interesting" />
<Type name="something/else" />
...
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Quirk name="output-buffers-are-unreadable" />
</MediaCodec>
Only the three quirks included above are recognized at this point:
"requires-allocate-on-input-ports"
must be advertised if the component does not properly support specification
of input buffers using the OMX_UseBuffer(...) API but instead requires
OMX_AllocateBuffer to be used.
"requires-allocate-on-output-ports"
must be advertised if the component does not properly support specification
of output buffers using the OMX_UseBuffer(...) API but instead requires
OMX_AllocateBuffer to be used.
"output-buffers-are-unreadable"
must be advertised if the emitted output buffers of a decoder component
are not readable, i.e. use a custom format even though abusing one of
the official OMX colorspace constants.
Clients of such decoders will not be able to access the decoded data,
naturally making the component much less useful. The only use for
a component with this quirk is to render the output to the screen.
Audio decoders MUST NOT advertise this quirk.
Video decoders that advertise this quirk must be accompanied by a
corresponding color space converter for thumbnail extraction,
matching surfaceflinger support that can render the custom format to
a texture and possibly other code, so just DON'T USE THIS QUIRK.
2012/07/13 config for MTK OMX Media Codecs, created by Morris Yang (mtk03147)
-->
<Included>
<Decoders>
<MediaCodec name="OMX.MTK.VIDEO.DECODER.MPEG2" type="video/mpeg2" >
<Limit name="size" min="16x16" max="1920x1088" />
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Limit name="concurrent-instances" max="16" />
</MediaCodec>
<MediaCodec name="OMX.MTK.VIDEO.DECODER.HEVC" type="video/hevc" >
<Limit name="size" min="16x16" max="1920x1088" />
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Feature name="adaptive-playback"/>
<Limit name="concurrent-instances" max="16" />
</MediaCodec>
<MediaCodec name="OMX.MTK.VIDEO.DECODER.HEVC.secure" type="video/hevc" >
<Limit name="size" min="16x16" max="1920x1088" />
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Feature name="secure-playback" required="true" />
<Feature name="adaptive-playback"/>
<Limit name="concurrent-instances" max="16" />
</MediaCodec>
<MediaCodec name="OMX.MTK.VIDEO.DECODER.MPEG4" type="video/mp4v-es" >
<Limit name="size" min="16x16" max="1920x1088" />
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Feature name="adaptive-playback"/>
<Limit name="concurrent-instances" max="16" />
</MediaCodec>
<MediaCodec name="OMX.MTK.VIDEO.DECODER.H263" type="video/3gpp" >
<Limit name="size" min="128x96" max="1408x1152" />
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Feature name="adaptive-playback"/>
<Limit name="concurrent-instances" max="16" />
</MediaCodec>
<MediaCodec name="OMX.MTK.VIDEO.DECODER.AVC" type="video/avc" >
<Limit name="size" min="64x64" max="1920x1088" />
<Quirk name="wants-NAL-fragments" />
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Feature name="adaptive-playback"/>
<Limit name="concurrent-instances" max="16" />
</MediaCodec>
<MediaCodec name="OMX.MTK.VIDEO.DECODER.AVC.secure" type="video/avc" >
<Limit name="size" min="64x64" max="1920x1088" />
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Feature name="secure-playback" required="true" />
<Feature name="adaptive-playback"/>
<Limit name="concurrent-instances" max="16" />
</MediaCodec>
<MediaCodec name="OMX.MTK.VIDEO.DECODER.VPX" type="video/x-vnd.on2.vp8" >
<Limit name="size" min="16x16" max="1920x1088" />
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Feature name="adaptive-playback"/>
<Limit name="concurrent-instances" max="16" />
</MediaCodec>
<MediaCodec name="OMX.MTK.VIDEO.DECODER.VP9" type="video/x-vnd.on2.vp9" >
<Limit name="size" min="16x16" max="1920x1088" />
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Feature name="adaptive-playback"/>
<Limit name="concurrent-instances" max="16" />
</MediaCodec>
<MediaCodec name="OMX.MTK.VIDEO.DECODER.VC1" type="video/x-ms-wmv" >
<Limit name="size" min="16x16" max="1920x1088" />
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Limit name="concurrent-instances" max="16" />
</MediaCodec>
<MediaCodec name="OMX.MTK.VIDEO.DECODER.DIVX" type="video/divx" >
<Limit name="size" min="16x16" max="1920x1088" />
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Limit name="concurrent-instances" max="16" />
</MediaCodec>
<MediaCodec name="OMX.MTK.VIDEO.DECODER.DIVX3" type="video/divx3" >
<Limit name="size" min="16x16" max="1920x1088" />
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Limit name="concurrent-instances" max="16" />
</MediaCodec>
<MediaCodec name="OMX.MTK.VIDEO.DECODER.XVID" type="video/xvid" >
<Limit name="size" min="16x16" max="1920x1088" />
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Limit name="concurrent-instances" max="16" />
</MediaCodec>
<MediaCodec name="OMX.MTK.VIDEO.DECODER.S263" type="video/flv1" >
<Limit name="size" min="16x16" max="1920x1088" />
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Limit name="concurrent-instances" max="16" />
</MediaCodec>
</Decoders>
<Encoders>
<MediaCodec name="OMX.MTK.VIDEO.ENCODER.MPEG4" type="video/mp4v-es" >
<Limit name="size" min="176x144" max="176x144" />
<Limit name="alignment" value="16x16" />
<Limit name="block-size" value="16x16" />
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Limit name="concurrent-instances" max="16" />
</MediaCodec>
<MediaCodec name="OMX.MTK.VIDEO.ENCODER.H263" type="video/3gpp" >
<Limit name="size" min="176x144" max="176x144" />
<Limit name="alignment" value="16x16" />
<Limit name="block-size" value="16x16" />
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Limit name="concurrent-instances" max="16" />
</MediaCodec>
<MediaCodec name="OMX.MTK.VIDEO.ENCODER.AVC" type="video/avc" >
<Limit name="size" min="128x96" max="1920x1080" />
<Limit name="alignment" value="16x16" />
<Limit name="block-size" value="16x16" />
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Limit name="concurrent-instances" max="16" />
</MediaCodec>
<MediaCodec name="OMX.MTK.VIDEO.ENCODER.HEVC" type="video/hevc" >
<Limit name="size" min="160x128" max="3840x2176" />
<Limit name="alignment" value="16x16" />
<Limit name="block-size" value="16x16" />
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Limit name="concurrent-instances" max="16" />
</MediaCodec>
<MediaCodec name="OMX.MTK.VIDEO.ENCODER.VPX" type="video/x-vnd.on2.vp8" >
<Limit name="size" min="64x64" max="1280x720" />
<Limit name="alignment" value="16x16" />
<Limit name="block-size" value="16x16" />
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
<Quirk name="avoid-memcpy-input-recording-frames" />
<Limit name="concurrent-instances" max="16" />
</MediaCodec>
</Encoders>
</Included>
+81
View File
@@ -0,0 +1,81 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2015 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.
-->
<MediaCodecs>
<Encoders>
<MediaCodec name="OMX.MTK.VIDEO.ENCODER.AVC" type="video/avc" update="true">
<Limit name="measured-frame-rate-320x240" range="412-412" />
<Limit name="measured-frame-rate-720x480" range="99-99" />
<Limit name="measured-frame-rate-1280x720" range="42-42" />
</MediaCodec>
<MediaCodec name="OMX.google.h264.encoder" type="video/avc" update="true">
<Limit name="measured-frame-rate-320x240" range="274-274" />
<Limit name="measured-frame-rate-720x480" range="82-82" />
</MediaCodec>
<MediaCodec name="OMX.google.h263.encoder" type="video/3gpp" update="true">
<Limit name="measured-frame-rate-176x144" range="477-477" />
</MediaCodec>
<MediaCodec name="OMX.google.mpeg4.encoder" type="video/mp4v-es" update="true">
<Limit name="measured-frame-rate-176x144" range="541-541" />
</MediaCodec>
<MediaCodec name="OMX.google.vp8.encoder" type="video/x-vnd.on2.vp8" update="true">
<Limit name="measured-frame-rate-320x180" range="304-304" />
<Limit name="measured-frame-rate-640x360" range="139-139" />
<Limit name="measured-frame-rate-1280x720" range="41-41" />
</MediaCodec>
</Encoders>
<Decoders>
<MediaCodec name="OMX.MTK.VIDEO.DECODER.AVC" type="video/avc" update="true">
<Limit name="measured-frame-rate-320x240" range="1456-1456" />
<Limit name="measured-frame-rate-720x480" range="1155-1155" />
<Limit name="measured-frame-rate-1280x720" range="507-507" />
<Limit name="measured-frame-rate-1920x1080" range="140-140" />
</MediaCodec>
<MediaCodec name="OMX.MTK.VIDEO.DECODER.H263" type="video/3gpp" update="true">
<Limit name="measured-frame-rate-176x144" range="1093-1093" />
<Limit name="measured-frame-rate-352x288" range="900-900" />
</MediaCodec>
<MediaCodec name="OMX.MTK.VIDEO.DECODER.MPEG4" type="video/mp4v-es" update="true">
<Limit name="measured-frame-rate-480x360" range="731-731" />
</MediaCodec>
<MediaCodec name="OMX.google.h264.decoder" type="video/avc" update="true">
<Limit name="measured-frame-rate-320x240" range="654-654" />
<Limit name="measured-frame-rate-720x480" range="213-213" />
<Limit name="measured-frame-rate-1280x720" range="58-58" />
<Limit name="measured-frame-rate-1920x1080" range="24-24" />
</MediaCodec>
<MediaCodec name="OMX.google.h263.decoder" type="video/3gpp" update="true">
<Limit name="measured-frame-rate-176x144" range="1311-1311" />
<Limit name="measured-frame-rate-352x288" range="645-645" />
</MediaCodec>
<MediaCodec name="OMX.google.hevc.decoder" type="video/hevc" update="true">
<Limit name="measured-frame-rate-352x288" range="498-498" />
<Limit name="measured-frame-rate-640x360" range="304-304" />
<Limit name="measured-frame-rate-1280x720" range="118-118" />
</MediaCodec>
<MediaCodec name="OMX.google.vp8.decoder" type="video/x-vnd.on2.vp8" update="true">
<Limit name="measured-frame-rate-320x180" range="635-635" />
<Limit name="measured-frame-rate-640x360" range="208-208" />
<Limit name="measured-frame-rate-1280x720" range="64-64" />
<Limit name="measured-frame-rate-1920x1080" range="30-30" />
</MediaCodec>
<MediaCodec name="OMX.google.vp9.decoder" type="video/x-vnd.on2.vp9" update="true">
<Limit name="measured-frame-rate-320x180" range="301-301" />
<Limit name="measured-frame-rate-640x360" range="239-239" />
<Limit name="measured-frame-rate-1280x720" range="69-69" />
</MediaCodec>
</Decoders>
</MediaCodecs>
@@ -93,19 +93,19 @@
bitRate="192000"
width="176"
height="144"
frameRate="30" />
frameRate="60" />
<Audio codec="aac"
bitRate="12200"
sampleRate="8000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="high" fileFormat="mp4" duration="30">
<EncoderProfile quality="high" fileFormat="mp4" duration="60">
<Video codec="h264"
bitRate="12000000"
width="1280"
height="720"
frameRate="30" />
frameRate="60" />
<Audio codec="aac"
bitRate="128000"
sampleRate="48000"
@@ -117,7 +117,7 @@
bitRate="192000"
width="176"
height="144"
frameRate="30" />
frameRate="60" />
<Audio codec="aac"
bitRate="12200"
sampleRate="8000"
@@ -129,19 +129,19 @@
bitRate="6000000"
width="640"
height="480"
frameRate="30" />
frameRate="60" />
<Audio codec="aac"
bitRate="128000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="720p" fileFormat="mp4" duration="30">
<EncoderProfile quality="720p" fileFormat="mp4" duration="60">
<Video codec="h264"
bitRate="12000000"
width="1280"
height="720"
frameRate="30" />
frameRate="60" />
<Audio codec="aac"
bitRate="128000"
sampleRate="48000"
@@ -153,19 +153,19 @@
bitRate="192000"
width="176"
height="144"
frameRate="30" />
frameRate="60" />
<Audio codec="aac"
bitRate="12200"
sampleRate="8000"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="timelapsehigh" fileFormat="mp4" duration="30">
<EncoderProfile quality="timelapsehigh" fileFormat="mp4" duration="60">
<Video codec="h264"
bitRate="12000000"
width="1280"
height="720"
frameRate="30" />
frameRate="60" />
<Audio codec="aac"
bitRate="128000"
sampleRate="48000"
@@ -177,7 +177,7 @@
bitRate="192000"
width="176"
height="144"
frameRate="30" />
frameRate="60" />
<!-- audio setting is ignored -->
<Audio codec="aac"
bitRate="12200"
@@ -190,7 +190,7 @@
bitRate="360000"
width="352"
height="288"
frameRate="30" />
frameRate="60" />
<!-- audio setting is ignored -->
<Audio codec="aac"
bitRate="96000"
@@ -203,7 +203,7 @@
bitRate="6000000"
width="640"
height="480"
frameRate="30" />
frameRate="60" />
<!-- audio setting is ignored -->
<Audio codec="aac"
bitRate="96000"
@@ -211,12 +211,12 @@
channels="1" />
</EncoderProfile>
<EncoderProfile quality="timelapse720p" fileFormat="mp4" duration="30">
<EncoderProfile quality="timelapse720p" fileFormat="mp4" duration="60">
<Video codec="h264"
bitRate="12000000"
width="1280"
height="720"
frameRate="30" />
frameRate="60" />
<!-- audio setting is ignored -->
<Audio codec="aac"
bitRate="128000"
@@ -237,7 +237,7 @@
bitRate="192000"
width="176"
height="144"
frameRate="30" />
frameRate="60" />
<Audio codec="aac"
bitRate="12200"
sampleRate="8000"
@@ -249,7 +249,7 @@
bitRate="6000000"
width="640"
height="480"
frameRate="30" />
frameRate="60" />
<Audio codec="aac"
bitRate="128000"
sampleRate="48000"
@@ -261,7 +261,7 @@
bitRate="192000"
width="176"
height="144"
frameRate="30" />
frameRate="60" />
<Audio codec="aac"
bitRate="12200"
sampleRate="8000"
@@ -273,7 +273,7 @@
bitRate="6000000"
width="640"
height="480"
frameRate="30" />
frameRate="60" />
<Audio codec="aac"
bitRate="128000"
sampleRate="48000"
@@ -285,7 +285,7 @@
bitRate="192000"
width="176"
height="144"
frameRate="30" />
frameRate="60" />
<Audio codec="aac"
bitRate="12200"
sampleRate="8000"
@@ -297,7 +297,7 @@
bitRate="4200000"
width="640"
height="480"
frameRate="30" />
frameRate="60" />
<!-- audio setting is ignored -->
<Audio codec="aac"
bitRate="128000"
@@ -310,7 +310,7 @@
bitRate="192000"
width="176"
height="144"
frameRate="30" />
frameRate="60" />
<!-- audio setting is ignored -->
<Audio codec="aac"
bitRate="12200"
@@ -323,7 +323,7 @@
bitRate="360000"
width="352"
height="288"
frameRate="30" />
frameRate="60" />
<!-- audio setting is ignored -->
<Audio codec="aac"
bitRate="96000"
@@ -336,7 +336,7 @@
bitRate="4200000"
width="640"
height="480"
frameRate="30" />
frameRate="60" />
<!-- audio setting is ignored -->
<Audio codec="aac"
bitRate="128000"
@@ -363,19 +363,19 @@
minBitRate="64000" maxBitRate="40000000"
minFrameWidth="96" maxFrameWidth="1920"
minFrameHeight="96" maxFrameHeight="1920"
minFrameRate="15" maxFrameRate="30" />
minFrameRate="15" maxFrameRate="60" />
<VideoEncoderCap name="h263" enabled="true"
minBitRate="64000" maxBitRate="2000000"
minFrameWidth="96" maxFrameWidth="800"
minFrameHeight="96" maxFrameHeight="480"
minFrameRate="15" maxFrameRate="30" />
minFrameRate="15" maxFrameRate="60" />
<VideoEncoderCap name="m4v" enabled="true"
minBitRate="64000" maxBitRate="40000000"
minFrameWidth="96" maxFrameWidth="1920"
minFrameHeight="96" maxFrameHeight="1080"
minFrameRate="15" maxFrameRate="30" />
minFrameRate="15" maxFrameRate="60" />
<AudioEncoderCap name="aac" enabled="true"
minBitRate="758" maxBitRate="288000"
@@ -409,8 +409,8 @@
for TEST applications. For other applications, we do
not perform any checks at all.
-->
<VideoDecoderCap name="wmv" enabled="false"/>
<AudioDecoderCap name="wma" enabled="false"/>
<VideoDecoderCap name="wmv" enabled="true"/>
<AudioDecoderCap name="wma" enabled="true"/>
<!--
The VideoEditor Capability configuration:
@@ -425,7 +425,7 @@
-->
<VideoEditorCap maxInputFrameWidth="1920"
maxInputFrameHeight="1088" maxOutputFrameWidth="1280"
maxOutputFrameHeight="720" maxPrefetchYUVFrames="6"/>
maxOutputFrameHeight="720" maxPrefetchYUVFrames="10"/>
<!--
The VideoEditor Export codec profile and level values
correspond to the values in OMX_Video.h.
+42
View File
@@ -0,0 +1,42 @@
OMX.MTK.VIDEO.DECODER.HEVC video_decoder.hevc libMtkOmxVdec.so
OMX.MTK.VIDEO.DECODER.HEVC.secure video_decoder.hevc libMtkOmxVdecEx.so
OMX.MTK.VIDEO.DECODER.H263 video_decoder.h263 libMtkOmxVdec.so
OMX.MTK.VIDEO.DECODER.MPEG4 video_decoder.mpeg4 libMtkOmxVdec.so
OMX.MTK.VIDEO.DECODER.AVC video_decoder.avc libMtkOmxVdec.so
OMX.MTK.VIDEO.DECODER.H263 video_decoder.h263 libMtkOmxVdecEx.so
OMX.MTK.VIDEO.DECODER.MPEG4 video_decoder.mpeg4 libMtkOmxVdecEx.so
OMX.MTK.VIDEO.DECODER.AVC video_decoder.avc libMtkOmxVdecEx.so
OMX.MTK.VIDEO.DECODER.RV video_decoder.rv libMtkOmxVdec.so
OMX.MTK.VIDEO.DECODER.VC1 video_decoder.vc1 libMtkOmxVdec.so
OMX.MTK.VIDEO.DECODER.VPX video_decoder.vpx libMtkOmxVdec.so
OMX.MTK.VIDEO.DECODER.VP9 video_decoder.vp9 libMtkOmxVdec.so
OMX.MTK.VIDEO.DECODER.DIVX video_decoder.divx libMtkOmxVdec.so
OMX.MTK.VIDEO.DECODER.XVID video_decoder.xvid libMtkOmxVdec.so
OMX.MTK.VIDEO.DECODER.S263 video_decoder.s263 libMtkOmxVdec.so
AIV.play AIV.play.101 libMtkOmxAIVPlayer.so
AIV.play.avcddp play.avcddp libMtkOmxAIVPlayer.so
AIV.play.generic AIV.play.role.generic libMtkOmxAIVPlayer.so
OMX.MTK.AUDIO.DECODER.RA audio_decoder.ra libMtkOmxCookDec.so
OMX.MTK.AUDIO.DECODER.MP3 audio_decoder.mp3 libMtkOmxMp3Dec.so
OMX.MTK.AUDIO.DECODER.AAC audio_decoder.aac libMtkOmxAacDec.so
OMX.MTK.AUDIO.DECODER.G711 audio_decoder.g711 libMtkOmxG711Dec.so
OMX.MTK.AUDIO.DECODER.AMR.NB audio_decoder.amrnb libMtkOmxAMRNBDec.so
OMX.MTK.AUDIO.DECODER.AMR.WB audio_decoder.amrwb libMtkOmxAMRWBDec.so
OMX.MTK.AUDIO.DECODER.WMAPRO audio_decoder.wma libMtkOmxWmaDec.so
OMX.MTK.AUDIO.DECODER.WMA audio_decoder.wma libMtkOmxWmaDec.so
OMX.MTK.AUDIO.ENCODER.AMR audio_encoder.amrnb libMtkOmxAmrEnc.so
OMX.MTK.AUDIO.ENCODER.AWB audio_encoder.amrwb libMtkOmxAwbEnc.so
OMX.MTK.AUDIO.ENCODER.AAC audio_encoder.aac libMtkOmxAacEnc.so
OMX.MTK.VIDEO.ENCODER.AVC video_encoder.avc libMtkOmxVenc.so
OMX.MTK.VIDEO.ENCODER.H263 video_encoder.h263 libMtkOmxVenc.so
OMX.MTK.VIDEO.ENCODER.MPEG4 video_encoder.mpeg4 libMtkOmxVenc.so
OMX.MTK.AUDIO.ENCODER.VORBIS audio_encoder.vorbis libMtkOmxVorbisEnc.so
OMX.MTK.AUDIO.DECODER.VORBIS audio_decoder.vorbis libMtkOmxVorbisDec.so
OMX.MTK.AUDIO.DECODER.APE audio_decoder.ape libMtkOmxApeDec.so
OMX.MTK.AUDIO.DECODER.FLAC audio_decoder.flac libMtkOmxFlacDec.so
OMX.MTK.AUDIO.DECODER.ADPCM audio_decoder.adpcm libMtkOmxAdpcmDec.so
OMX.MTK.AUDIO.ENCODER.ADPCM audio_encoder.adpcm libMtkOmxAdpcmEnc.so
OMX.MTK.AUDIO.DECODER.RAW audio_decoder.raw libMtkOmxRawDec.so
OMX.MTK.AUDIO.DECODER.DDPLUS audio_decoder.ddplus libMtkOmxDdpDec.so
OMX.MTK.AUDIO.DECODER.GSM audio_decoder.gsm libMtkOmxGsmDec.so
OMX.MTK.AUDIO.DECODER.ALAC audio_decoder.alac libMtkOmxAlacDec.so
+47 -8
View File
@@ -6,7 +6,9 @@ DEVICE_PACKAGE_OVERLAYS += $(DEVICE_COMMON)/overlay
# Install init.d scripts
PRODUCT_COPY_FILES += \
$(DEVICE_COMMON)/configs/99exfat-support:system/etc/init.d/99exfat-support
$(DEVICE_COMMON)/configs/99exfat-support:system/etc/init.d/99exfat-support \
$(DEVICE_COMMON)/configs/99nvram:system/etc/init.d/99nvram
$(call inherit-product, $(SRC_TARGET_DIR)/product/languages_full.mk)
@@ -45,18 +47,50 @@ PRODUCT_COPY_FILES += \
frameworks/av/media/libstagefright/data/media_codecs_google_telephony.xml:system/etc/media_codecs_google_telephony.xml \
frameworks/av/media/libstagefright/data/media_codecs_google_video_le.xml:system/etc/media_codecs_google_video_le.xml \
frameworks/av/media/libstagefright/data/media_codecs_google_video.xml:system/etc/media_codecs_google_video.xml \
$(DEVICE_COMMON)/configs/media_codecs.xml:system/etc/media_codecs.xml \
$(DEVICE_COMMON)/configs/media_profiles.xml:system/etc/media_profiles.xml \
$(DEVICE_COMMON)/configs/mtk_omx_core.cfg:system/etc/mtk_omx_core.cfg
$(DEVICE_COMMON)/media/media_codecs_performance.xml:system/etc/media_codecs_performance.xml \
$(DEVICE_COMMON)/media/media_codecs_mediatek_video.xml:system/etc/media_codecs_mediatek_video.xml \
$(DEVICE_COMMON)/media/media_codecs.xml:system/etc/media_codecs.xml \
$(DEVICE_COMMON)/media/media_profiles.xml:system/etc/media_profiles.xml \
$(DEVICE_COMMON)/media/mtk_omx_core.cfg:system/etc/mtk_omx_core.cfg
# WiFi nvram
PRODUCT_COPY_FILES += \
$(DEVICE_COMMON)/nvram/WIFI:system/etc/nvram/WIFI \
$(DEVICE_COMMON)/nvram/WIFI_CUSTOM:system/etc/nvram/WIFI_CUSTOM
# ABI fixes for old binaries
PRODUCT_PACKAGES += \
libshim_libbinder \
libshim_liblog \
libshim_libwvm \
libshim_libcamera \
libshim_skia \
libshim_gui
# Audio
PRODUCT_PACKAGES += \
audio.a2dp.default
audio.a2dp.default \
audio.r_submix.default \
audio.usb.default \
audio_policy.stub \
libalsautils \
libaudio-resampler \
libtinyalsa \
libtinycompress \
libtinyxml
# Bluetooth
PRODUCT_PACKAGES += \
bluetooth.default
# Lights
PRODUCT_PACKAGES += \
lights.mt8127
# Graphics
PRODUCT_PACKAGES += \
libion
# Power
PRODUCT_PACKAGES += \
power.default
@@ -70,9 +104,14 @@ PRODUCT_PACKAGES += \
ebtables \
ethertypes
# root access
# Wifi
PRODUCT_PACKAGES += \
su
lib_driver_cmd_mt66xx \
libwifi-hal-mt66xx \
wifi_hal \
libwpa_client \
hostapd \
wpa_supplicant
WITH_EXFAT := true
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,799 @@
From 3ed5dd81041727ea352fc3e85a197311bd917577 Mon Sep 17 00:00:00 2001
From: adi766 <adityakumarteli7846@gmail.com>
Date: Sat, 23 Sep 2017 15:56:27 +0000
Subject: [PATCH] Implement MediaTek Camera Support
Change-Id: Iaae7c60d6711c6af53e59b966d2548c9cad8dfab
---
camera/Android.mk | 5 +
camera/MtkCameraParameters.cpp | 294 +++++++++++++++++
include/camera/MtkCameraParameters.h | 351 +++++++++++++++++++++
.../libstagefright/foundation/MediaBufferGroup.cpp | 6 +
services/camera/libcameraservice/Android.mk | 4 +
.../camera/libcameraservice/api1/CameraClient.cpp | 42 +++
6 files changed, 702 insertions(+)
create mode 100644 camera/MtkCameraParameters.cpp
create mode 100644 include/camera/MtkCameraParameters.h
diff --git a/camera/Android.mk b/camera/Android.mk
index 8a32299fa..8ba0e610f 100644
--- a/camera/Android.mk
+++ b/camera/Android.mk
@@ -52,6 +52,11 @@ LOCAL_SRC_FILES += \
CameraUtils.cpp \
VendorTagDescriptor.cpp
+ifeq ($(BOARD_HAS_MTK_HARDWARE),true)
+LOCAL_SRC_FILES+= \
+ MtkCameraParameters.cpp
+endif
+
LOCAL_SHARED_LIBRARIES := \
libcutils \
libutils \
diff --git a/camera/MtkCameraParameters.cpp b/camera/MtkCameraParameters.cpp
new file mode 100644
index 000000000..7d7042aad
--- /dev/null
+++ b/camera/MtkCameraParameters.cpp
@@ -0,0 +1,294 @@
+/*
+ *
+ * Copyright 2008, 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 "MTKCameraParams"
+#include <utils/Log.h>
+
+#include <string.h>
+#include <stdlib.h>
+#include <camera/MtkCameraParameters.h>
+
+namespace android {
+
+
+//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+// App Mode.
+//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+const char MtkCameraParameters::PROPERTY_KEY_CLIENT_APPMODE[] = "client.appmode";
+//
+const char MtkCameraParameters::APP_MODE_NAME_DEFAULT[] = "Default";
+const char MtkCameraParameters::APP_MODE_NAME_MTK_ENG[] = "MtkEng";
+const char MtkCameraParameters::APP_MODE_NAME_MTK_ATV[] = "MtkAtv";
+const char MtkCameraParameters::APP_MODE_NAME_MTK_S3D[] = "MtkS3d";
+const char MtkCameraParameters::APP_MODE_NAME_MTK_VT[] = "MtkVt";
+const char MtkCameraParameters::APP_MODE_NAME_MTK_PHOTO[] = "MtkPhoto";
+const char MtkCameraParameters::APP_MODE_NAME_MTK_VIDEO[] = "MtkVideo";
+const char MtkCameraParameters::APP_MODE_NAME_MTK_ZSD[] = "MtkZsd";
+
+//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+// Scene Mode
+//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+const char MtkCameraParameters::SCENE_MODE_NORMAL[] = "normal";
+
+//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+// Face Beauty
+//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+const char MtkCameraParameters::KEY_FB_SMOOTH_LEVEL[] = "fb-smooth-level";
+const char MtkCameraParameters::KEY_FB_SMOOTH_LEVEL_MIN[] = "fb-smooth-level-min";
+const char MtkCameraParameters::KEY_FB_SMOOTH_LEVEL_MAX[] = "fb-smooth-level-max";
+//
+const char MtkCameraParameters::KEY_FB_SKIN_COLOR[] = "fb-skin-color";
+const char MtkCameraParameters::KEY_FB_SKIN_COLOR_MIN[] = "fb-skin-color-min";
+const char MtkCameraParameters::KEY_FB_SKIN_COLOR_MAX[] = "fb-skin-color-max";
+//
+const char MtkCameraParameters::KEY_FB_SHARP[] = "fb-sharp";
+const char MtkCameraParameters::KEY_FB_SHARP_MIN[] = "fb-sharp-min";
+const char MtkCameraParameters::KEY_FB_SHARP_MAX[] = "fb-sharp-max";
+//
+const char MtkCameraParameters::KEY_FB_ENLARGE_EYE[] = "fb-enlarge-eye";
+const char MtkCameraParameters::KEY_FB_ENLARGE_EYE_MIN[] = "fb-enlarge-eye-min";
+const char MtkCameraParameters::KEY_FB_ENLARGE_EYE_MAX[] = "fb-enlarge-eye-max";
+//
+const char MtkCameraParameters::KEY_FB_SLIM_FACE[] = "fb-slim-face";
+const char MtkCameraParameters::KEY_FB_SLIM_FACE_MIN[] = "fb-slim-face-min";
+const char MtkCameraParameters::KEY_FB_SLIM_FACE_MAX[] = "fb-slim-face-max";
+//
+const char MtkCameraParameters::KEY_FB_EXTREME_BEAUTY[] = "fb-extreme-beauty";
+//
+const char MtkCameraParameters::KEY_FACE_BEAUTY[] = "face-beauty";
+
+
+//
+const char MtkCameraParameters::KEY_EXPOSURE[] = "exposure";
+const char MtkCameraParameters::KEY_EXPOSURE_METER[] = "exposure-meter";
+const char MtkCameraParameters::KEY_ISO_SPEED[] = "iso-speed";
+const char MtkCameraParameters::KEY_AE_MODE[] = "ae-mode";
+const char MtkCameraParameters::KEY_FOCUS_METER[] = "focus-meter";
+const char MtkCameraParameters::KEY_EDGE[] = "edge";
+const char MtkCameraParameters::KEY_HUE[] = "hue";
+const char MtkCameraParameters::KEY_SATURATION[] = "saturation";
+const char MtkCameraParameters::KEY_BRIGHTNESS[] = "brightness";
+const char MtkCameraParameters::KEY_CONTRAST[] = "contrast";
+const char MtkCameraParameters::KEY_AF_LAMP_MODE [] = "aflamp-mode";
+const char MtkCameraParameters::KEY_STEREO_3D_PREVIEW_SIZE[] = "stereo3d-preview-size";
+const char MtkCameraParameters::KEY_STEREO_3D_PICTURE_SIZE[] = "stereo3d-picture-size";
+const char MtkCameraParameters::KEY_STEREO_3D_TYPE [] = "stereo3d-type";
+const char MtkCameraParameters::KEY_STEREO_3D_MODE [] = "stereo3d-mode";
+const char MtkCameraParameters::KEY_STEREO_3D_IMAGE_FORMAT [] = "stereo3d-image-format";
+
+// ZSD
+const char MtkCameraParameters::KEY_ZSD_MODE[] = "zsd-mode";
+const char MtkCameraParameters::KEY_SUPPORTED_ZSD_MODE[] = "zsd-supported";
+//
+const char MtkCameraParameters::KEY_FPS_MODE[] = "fps-mode";
+//
+const char MtkCameraParameters::KEY_FOCUS_DRAW[] = "af-draw";
+//
+const char MtkCameraParameters::KEY_CAPTURE_MODE[] = "cap-mode";
+const char MtkCameraParameters::KEY_SUPPORTED_CAPTURE_MODES[] = "cap-mode-values";
+const char MtkCameraParameters::KEY_CAPTURE_PATH[] = "capfname";
+const char MtkCameraParameters::KEY_BURST_SHOT_NUM[] = "burst-num";
+//
+const char MtkCameraParameters::KEY_MATV_PREVIEW_DELAY[] = "tv-delay";
+const char MtkCameraParameters::KEY_PANORAMA_IDX[] = "pano-idx";
+const char MtkCameraParameters::KEY_PANORAMA_DIR[] = "pano-dir";
+
+// Values for KEY_EXPOSURE
+const char MtkCameraParameters::EXPOSURE_METER_SPOT[] = "spot";
+const char MtkCameraParameters::EXPOSURE_METER_CENTER[] = "center";
+const char MtkCameraParameters::EXPOSURE_METER_AVERAGE[] = "average";
+
+// Valeus for KEY_ISO_SPEED
+const char MtkCameraParameters::ISO_SPEED_AUTO[] = "auto";
+const char MtkCameraParameters::ISO_SPEED_100[] = "100";
+const char MtkCameraParameters::ISO_SPEED_200[] = "200";
+const char MtkCameraParameters::ISO_SPEED_400[] = "400";
+const char MtkCameraParameters::ISO_SPEED_800[] = "800";
+const char MtkCameraParameters::ISO_SPEED_1600[] = "1600";
+
+// Values for KEY_AE_MODE = "ae-mode"
+
+// Values for KEY_FOCUS_METER
+const char MtkCameraParameters::FOCUS_METER_SPOT[] = "spot";
+const char MtkCameraParameters::FOCUS_METER_MULTI[] = "multi";
+
+// AWB2PASS
+const char MtkCameraParameters::KEY_AWB2PASS[] = "awb-2pass";
+
+
+//
+// Camera Mode
+const char MtkCameraParameters::KEY_CAMERA_MODE[] = "mtk-cam-mode";
+// Values for KEY_CAMERA_MODE
+const int MtkCameraParameters::CAMERA_MODE_NORMAL = 0;
+const int MtkCameraParameters::CAMERA_MODE_MTK_PRV = 1;
+const int MtkCameraParameters::CAMERA_MODE_MTK_VDO = 2;
+const int MtkCameraParameters::CAMERA_MODE_MTK_VT = 3;
+
+// Values for KEY_FPS_MODE
+const int MtkCameraParameters::FPS_MODE_NORMAL = 0;
+const int MtkCameraParameters::FPS_MODE_FIX = 1;
+
+// Values for raw save mode
+
+// Values for KEY_FOCUS_DRAW
+
+// Values for capture mode
+const char MtkCameraParameters::CAPTURE_MODE_PANORAMA_SHOT[] = "panoramashot";
+const char MtkCameraParameters::CAPTURE_MODE_BURST_SHOT[] = "burstshot";
+const char MtkCameraParameters::CAPTURE_MODE_NORMAL[] = "normal";
+const char MtkCameraParameters::CAPTURE_MODE_BEST_SHOT[] = "bestshot";
+const char MtkCameraParameters::CAPTURE_MODE_EV_BRACKET_SHOT[] = "evbracketshot";
+const char MtkCameraParameters::CAPTURE_MODE_SMILE_SHOT[] = "smileshot";
+const char MtkCameraParameters::CAPTURE_MODE_MAV_SHOT[] = "mav";
+const char MtkCameraParameters::CAPTURE_MODE_AUTO_PANORAMA_SHOT[] = "autorama";
+const char MtkCameraParameters::CAPTURE_MODE_MOTION_TRACK_SHOT[] = "motiontrack";
+const char MtkCameraParameters::CAPTURE_MODE_HDR_SHOT[] = "hdr";
+const char MtkCameraParameters::CAPTURE_MODE_ASD_SHOT[] = "asd";
+const char MtkCameraParameters::CAPTURE_MODE_ZSD_SHOT[] = "zsd";
+const char MtkCameraParameters::CAPTURE_MODE_PANO_3D[] = "pano_3d";
+const char MtkCameraParameters::CAPTURE_MODE_SINGLE_3D[] = "single_3d";
+const char MtkCameraParameters::CAPTURE_MODE_FACE_BEAUTY[] = "face_beauty";
+const char MtkCameraParameters::CAPTURE_MODE_CONTINUOUS_SHOT[] = "continuousshot";
+const char MtkCameraParameters::CAPTURE_MODE_MULTI_MOTION[] = "multi_motion";
+const char MtkCameraParameters::CAPTURE_MODE_GESTURE_SHOT[] = "gestureshot";
+
+// Values for panorama direction settings
+const char MtkCameraParameters::PANORAMA_DIR_RIGHT[] = "right";
+const char MtkCameraParameters::PANORAMA_DIR_LEFT[] = "left";
+const char MtkCameraParameters::PANORAMA_DIR_TOP[] = "top";
+const char MtkCameraParameters::PANORAMA_DIR_DOWN[] = "down";
+
+//
+const int MtkCameraParameters::ENABLE = 1;
+const int MtkCameraParameters::DISABLE = 0;
+
+// Values for KEY_EDGE, KEY_HUE, KEY_SATURATION, KEY_BRIGHTNESS, KEY_CONTRAST
+const char MtkCameraParameters::HIGH[] = "high";
+const char MtkCameraParameters::MIDDLE[] = "middle";
+const char MtkCameraParameters::LOW[] = "low";
+
+// Preview Internal Format.
+const char MtkCameraParameters::KEY_PREVIEW_INT_FORMAT[] = "prv-int-fmt";
+
+// Pixel color formats for KEY_PREVIEW_FORMAT, KEY_PICTURE_FORMAT,
+// and KEY_VIDEO_FRAME_FORMAT
+const char MtkCameraParameters::PIXEL_FORMAT_YUV420I[] = "yuv420i-yyuvyy-3plane";
+const char MtkCameraParameters::PIXEL_FORMAT_YV12_GPU[] = "yv12-gpu";
+const char MtkCameraParameters::PIXEL_FORMAT_YUV422I_UYVY[] = "yuv422i-uyvy";
+const char MtkCameraParameters::PIXEL_FORMAT_YUV422I_VYUY[] = "yuv422i-vyuy";
+const char MtkCameraParameters::PIXEL_FORMAT_YUV422I_YVYU[] = "yuv422i-yvyu";
+
+const char MtkCameraParameters::PIXEL_FORMAT_BAYER8[] = "bayer8";
+const char MtkCameraParameters::PIXEL_FORMAT_BAYER10[] = "bayer10";
+
+const char MtkCameraParameters::KEY_BRIGHTNESS_VALUE[] = "brightness_value";
+
+// ISP Operation mode for meta mode use
+const char MtkCameraParameters::KEY_ISP_MODE[] = "isp-mode";
+// AF
+const char MtkCameraParameters::KEY_AF_X[] = "af-x";
+const char MtkCameraParameters::KEY_AF_Y[] = "af-y";
+// Effect
+const char MtkCameraParameters::EFFECT_SEPIA_BLUE[] = "sepiablue";
+const char MtkCameraParameters::EFFECT_SEPIA_GREEN[] = "sepiagreen";
+
+//
+// on/off => FIXME: should be replaced with TRUE[]
+const char MtkCameraParameters::ON[] = "on";
+const char MtkCameraParameters::OFF[] = "off";
+//
+const char MtkCameraParameters::WHITE_BALANCE_TUNGSTEN[] = "tungsten";
+//
+const char MtkCameraParameters::ISO_SPEED_ENG[] = "iso-speed-eng";
+const char MtkCameraParameters::KEY_RAW_SAVE_MODE[] = "rawsave-mode";
+const char MtkCameraParameters::KEY_RAW_PATH[] = "rawfname";
+
+const char MtkCameraParameters::KEY_FAST_CONTINUOUS_SHOT[] = "fast-continuous-shot";
+
+const char MtkCameraParameters::KEY_CSHOT_INDICATOR[] = "cshot-indicator";
+
+// AF EM MODE
+const char MtkCameraParameters::KEY_FOCUS_ENG_MODE[] = "afeng-mode";
+const char MtkCameraParameters::KEY_FOCUS_ENG_STEP[] = "afeng-pos";
+const char MtkCameraParameters::KEY_FOCUS_ENG_MAX_STEP[] = "afeng-max-focus-step";
+const char MtkCameraParameters::KEY_FOCUS_ENG_MIN_STEP[] = "afeng-min-focus-step";
+const char MtkCameraParameters::KEY_FOCUS_ENG_BEST_STEP[] = "afeng-best-focus-step";
+const char MtkCameraParameters::KEY_RAW_DUMP_FLAG[] = "afeng_raw_dump_flag";
+const char MtkCameraParameters::KEY_PREVIEW_DUMP_RESOLUTION[] = "preview-dump-resolution";
+// Values for KEY_PREVIEW_DUMP_RESOLUTION
+const int MtkCameraParameters::PREVIEW_DUMP_RESOLUTION_NORMAL = 0;
+const int MtkCameraParameters::PREVIEW_DUMP_RESOLUTION_CROP = 1;
+//
+const char MtkCameraParameters::KEY_MAX_NUM_DETECTED_OBJECT[] = "max-num-ot";
+//
+const char MtkCameraParameters::KEY_VIDEO_HDR[] = "video-hdr";
+
+// KEY for [Engineer Mode] Add new camera paramters for new requirements
+const char MtkCameraParameters::KEY_ENG_AE_ENABLE[] = "eng-ae-enable";
+const char MtkCameraParameters::KEY_ENG_PREVIEW_SHUTTER_SPEED[] = "eng-preview-shutter-speed";
+const char MtkCameraParameters::KEY_ENG_PREVIEW_SENSOR_GAIN[] = "eng-preview-sensor-gain";
+const char MtkCameraParameters::KEY_ENG_PREVIEW_ISP_GAIN[] = "eng-preview-isp-gain";
+const char MtkCameraParameters::KEY_ENG_PREVIEW_AE_INDEX[] = "eng-preview-ae-index";
+const char MtkCameraParameters::KEY_ENG_CAPTURE_SENSOR_GAIN[] = "eng-capture-sensor-gain";
+const char MtkCameraParameters::KEY_ENG_CAPTURE_ISP_GAIN[] = "eng-capture-isp-gain";
+const char MtkCameraParameters::KEY_ENG_CAPTURE_SHUTTER_SPEED[] = "eng-capture-shutter-speed";
+const char MtkCameraParameters::KEY_ENG_CAPTURE_ISO[] = "eng-capture-iso";
+const char MtkCameraParameters::KEY_ENG_FLASH_DUTY_VALUE[] = "eng-flash-duty-value";
+const char MtkCameraParameters::KEY_ENG_FLASH_DUTY_MIN[] = "eng-flash-duty-min";
+const char MtkCameraParameters::KEY_ENG_FLASH_DUTY_MAX[] = "eng-flash-duty-max";
+const char MtkCameraParameters::KEY_ENG_ZSD_ENABLE[] = "eng-zsd-enable";
+const char MtkCameraParameters::KEY_SENSOR_TYPE[] = "sensor-type";
+const char MtkCameraParameters::KEY_ENG_PREVIEW_FPS[] = "eng-preview-fps";
+const char MtkCameraParameters::KEY_ENG_MSG[] = "eng-msg";
+const int MtkCameraParameters::KEY_ENG_FLASH_DUTY_DEFAULT_VALUE = -1;
+const int MtkCameraParameters::KEY_ENG_FLASH_STEP_DEFAULT_VALUE = -1;
+const char MtkCameraParameters::KEY_ENG_FLASH_STEP_MIN[] = "eng-flash-step-min";
+const char MtkCameraParameters::KEY_ENG_FLASH_STEP_MAX[] = "eng-flash-step-max";
+const char MtkCameraParameters::KEY_ENG_FOCUS_FULLSCAN_FRAME_INTERVAL[] = "eng-focus-fullscan-frame-interval";
+const char MtkCameraParameters::KEY_ENG_FOCUS_FULLSCAN_FRAME_INTERVAL_MAX[] = "eng-focus-fullscan-frame-interval-max";
+const char MtkCameraParameters::KEY_ENG_FOCUS_FULLSCAN_FRAME_INTERVAL_MIN[] = "eng-focus-fullscan-frame-interval-min";
+const int MtkCameraParameters::KEY_ENG_FOCUS_FULLSCAN_FRAME_INTERVAL_MAX_DEFAULT = 65535;
+const int MtkCameraParameters::KEY_ENG_FOCUS_FULLSCAN_FRAME_INTERVAL_MIN_DEFAULT = 0;
+const char MtkCameraParameters::KEY_ENG_PREVIEW_FRAME_INTERVAL_IN_US[] = "eng-preview-frame-interval-in-us";
+const char MtkCameraParameters::KEY_ENG_PARAMETER1[] = "key-eng-parameter1";
+const char MtkCameraParameters::KEY_ENG_PARAMETER2[] = "key-eng-parameter2";
+const char MtkCameraParameters::KEY_ENG_PARAMETER3[] = "key-eng-parameter3";
+
+const char MtkCameraParameters::KEY_ENG_SAVE_SHADING_TABLE[] = "eng-save-shading-table";
+const char MtkCameraParameters::KEY_ENG_SHADING_TABLE[] = "eng-shading-table";
+const int MtkCameraParameters::KEY_ENG_SHADING_TABLE_AUTO = 0;
+const int MtkCameraParameters::KEY_ENG_SHADING_TABLE_LOW = 1;
+const int MtkCameraParameters::KEY_ENG_SHADING_TABLE_MIDDLE = 2;
+const int MtkCameraParameters::KEY_ENG_SHADING_TABLE_HIGH = 3;
+const int MtkCameraParameters::KEY_ENG_SHADING_TABLE_TSF = 4;
+
+// KEY for [Engineer Mode] Add new camera paramters for ev calibration
+const char MtkCameraParameters::KEY_ENG_EV_CALBRATION_OFFSET_VALUE[] = "eng-ev-cal-offset";
+
+#ifdef MTK_SLOW_MOTION_VIDEO_SUPPORT
+// High Speed Video Record
+const char MtkCameraParameters::KEY_HSVR_PRV_SIZE[] = "hsvr-prv-size";
+const char MtkCameraParameters::KEY_SUPPORTED_HSVR_PRV_SIZE[] = "hsvr-prv-size-values";
+const char MtkCameraParameters::KEY_HSVR_PRV_FPS[] = "hsvr-prv-fps";
+const char MtkCameraParameters::KEY_SUPPORTED_HSVR_PRV_FPS[] = "hsvr-prv-fps-values";
+#endif
+const char MtkCameraParameters::KEY_DXOEIS_ONOFF[] = "dxo-eis";
+const char MtkCameraParameters::KEY_FIX_EXPOSURE_TIME[] = "fix-exposure-time";
+
+}; // namespace android
+
diff --git a/include/camera/MtkCameraParameters.h b/include/camera/MtkCameraParameters.h
new file mode 100644
index 000000000..e9456d53d
--- /dev/null
+++ b/include/camera/MtkCameraParameters.h
@@ -0,0 +1,351 @@
+/*
+ * Copyright (C) 2008 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.
+ */
+
+#ifndef ANDROID_HARDWARE_MTK_CAMERA_PARAMETERS_H
+#define ANDROID_HARDWARE_MTK_CAMERA_PARAMETERS_H
+
+#include <camera/CameraParameters.h>
+
+namespace android {
+
+
+/**
+ * @class MtkCameraParameters
+ * @brief MTK-proprietary camera parameters.
+ * @details This class is derived from CameraParameters and defines MTK-proprietary camera parameters.
+ */
+class MtkCameraParameters : public CameraParameters
+{
+public:
+ MtkCameraParameters() : CameraParameters() {}
+ MtkCameraParameters(const String8 &params) { unflatten(params); }
+ ~MtkCameraParameters() {}
+
+ MtkCameraParameters& operator=(CameraParameters const& params)
+ {
+ unflatten(params.flatten());
+ return (*this);
+ }
+ //
+//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+// App Mode.
+//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ static const char PROPERTY_KEY_CLIENT_APPMODE[];
+ //
+ static const char APP_MODE_NAME_DEFAULT[];
+ static const char APP_MODE_NAME_MTK_ENG[];
+ static const char APP_MODE_NAME_MTK_ATV[];
+ static const char APP_MODE_NAME_MTK_S3D[];
+ static const char APP_MODE_NAME_MTK_VT[];
+ static const char APP_MODE_NAME_MTK_PHOTO[];
+ static const char APP_MODE_NAME_MTK_VIDEO[];
+ static const char APP_MODE_NAME_MTK_ZSD[];
+ //
+//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+// Scene Mode
+//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ static const char SCENE_MODE_NORMAL[];
+ //
+//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+// Face Beauty
+//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ static const char KEY_FB_SMOOTH_LEVEL[];
+ static const char KEY_FB_SMOOTH_LEVEL_MIN[];
+ static const char KEY_FB_SMOOTH_LEVEL_MAX[];
+ //
+ static const char KEY_FB_SKIN_COLOR[];
+ static const char KEY_FB_SKIN_COLOR_MIN[];
+ static const char KEY_FB_SKIN_COLOR_MAX[];
+ //
+ static const char KEY_FB_SHARP[];
+ static const char KEY_FB_SHARP_MIN[];
+ static const char KEY_FB_SHARP_MAX[];
+ //
+ static const char KEY_FB_ENLARGE_EYE[];
+ static const char KEY_FB_ENLARGE_EYE_MIN[];
+ static const char KEY_FB_ENLARGE_EYE_MAX[];
+ //
+ static const char KEY_FB_SLIM_FACE[];
+ static const char KEY_FB_SLIM_FACE_MIN[];
+ static const char KEY_FB_SLIM_FACE_MAX[];
+ //
+ static const char KEY_FB_EXTREME_BEAUTY[];
+ //
+ static const char KEY_FACE_BEAUTY[];
+ //
+//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+//
+//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ static const char KEY_EXPOSURE[];
+ static const char KEY_EXPOSURE_METER[];
+ static const char KEY_ISO_SPEED[];
+ static const char KEY_AE_MODE[];
+ static const char KEY_FOCUS_METER[];
+ static const char KEY_EDGE[];
+ static const char KEY_HUE[];
+ static const char KEY_SATURATION[];
+ static const char KEY_BRIGHTNESS[];
+ static const char KEY_CONTRAST[];
+ static const char KEY_ZSD_MODE[];
+ static const char KEY_SUPPORTED_ZSD_MODE[];
+ static const char KEY_AWB2PASS[];
+ static const char KEY_AF_LAMP_MODE [];
+
+ static const char KEY_STEREO_3D_PREVIEW_SIZE[];
+ static const char KEY_STEREO_3D_PICTURE_SIZE[];
+ static const char KEY_STEREO_3D_TYPE [];
+ static const char KEY_STEREO_3D_MODE [];
+ static const char KEY_STEREO_3D_IMAGE_FORMAT [];
+ //
+ static const char KEY_FPS_MODE[]; // normal,fix
+ //
+ static const char KEY_FOCUS_DRAW[]; // 0,1
+ //
+ static const char KEY_CAPTURE_MODE[]; // normal,bestshot,evbracketshot,burstshot,smileshot,panoramashot
+ static const char KEY_SUPPORTED_CAPTURE_MODES[];
+ static const char KEY_CAPTURE_PATH[];
+ static const char KEY_BURST_SHOT_NUM[];
+ //
+ static const char KEY_MATV_PREVIEW_DELAY[];
+ //
+ static const char KEY_PANORAMA_IDX[];
+ static const char KEY_PANORAMA_DIR[]; // right,left,top,bottom
+ //
+ static const char KEY_SENSOR_DEV[]; // main,sub,atv
+ static const char KEY_SUPPORTED_SENSOR_DEVS[];
+
+ // Values for KEY_EXPOSURE
+ static const char EXPOSURE_METER_SPOT[];
+ static const char EXPOSURE_METER_CENTER[];
+ static const char EXPOSURE_METER_AVERAGE[];
+
+ // Valeus for KEY_ISO_SPEED
+ static const char ISO_SPEED_AUTO[];
+ static const char ISO_SPEED_100[];
+ static const char ISO_SPEED_200[];
+ static const char ISO_SPEED_400[];
+ static const char ISO_SPEED_800[];
+ static const char ISO_SPEED_1600[];
+
+ // Values for KEY_FOCUS_METER
+ static const char FOCUS_METER_SPOT[];
+ static const char FOCUS_METER_MULTI[];
+
+ static const char KEY_CAMERA_MODE[];
+ // Values for KEY_CAMERA_MODE
+ static const int CAMERA_MODE_NORMAL;
+ static const int CAMERA_MODE_MTK_PRV;
+ static const int CAMERA_MODE_MTK_VDO;
+ static const int CAMERA_MODE_MTK_VT;
+
+ // Values for KEY_FPS_MODE
+ static const int FPS_MODE_NORMAL;
+ static const int FPS_MODE_FIX;
+
+ // Values for KEY_CAPTURE_MODE
+ static const char CAPTURE_MODE_PANORAMA_SHOT[];
+ static const char CAPTURE_MODE_BURST_SHOT[];
+ static const char CAPTURE_MODE_NORMAL[];
+ static const char CAPTURE_MODE_BEST_SHOT[];
+ static const char CAPTURE_MODE_EV_BRACKET_SHOT[];
+ static const char CAPTURE_MODE_SMILE_SHOT[];
+ static const char CAPTURE_MODE_AUTO_PANORAMA_SHOT[];
+ static const char CAPTURE_MODE_MOTION_TRACK_SHOT[];
+ static const char CAPTURE_MODE_MAV_SHOT[];
+ static const char CAPTURE_MODE_HDR_SHOT[];
+ static const char CAPTURE_MODE_ASD_SHOT[];
+ static const char CAPTURE_MODE_ZSD_SHOT[];
+ static const char CAPTURE_MODE_PANO_3D[];
+ static const char CAPTURE_MODE_SINGLE_3D[];
+ static const char CAPTURE_MODE_FACE_BEAUTY[];
+ static const char CAPTURE_MODE_CONTINUOUS_SHOT[];
+ static const char CAPTURE_MODE_MULTI_MOTION[];
+ static const char CAPTURE_MODE_GESTURE_SHOT[];
+
+ // Values for KEY_PANORAMA_DIR
+ static const char PANORAMA_DIR_RIGHT[];
+ static const char PANORAMA_DIR_LEFT[];
+ static const char PANORAMA_DIR_TOP[];
+ static const char PANORAMA_DIR_DOWN[];
+ //
+ static const int ENABLE;
+ static const int DISABLE;
+
+ // Values for KEY_EDGE, KEY_HUE, KEY_SATURATION, KEY_BRIGHTNESS, KEY_CONTRAST
+ static const char HIGH[];
+ static const char MIDDLE[];
+ static const char LOW[];
+
+ // Preview Internal Format.
+ static const char KEY_PREVIEW_INT_FORMAT[];
+
+ // Pixel color formats for KEY_PREVIEW_FORMAT, KEY_PICTURE_FORMAT,
+ // and KEY_VIDEO_FRAME_FORMAT
+ static const char PIXEL_FORMAT_YUV420I[]; // I420
+
+ /**
+ * @var PIXEL_FORMAT_YV12_GPU
+ *
+ * GPU YUV format:
+ *
+ * YV12 is a 4:2:0 YCrCb planar format comprised of a WxH Y plane followed
+ * by (W/2) x (H/2) Cr and Cb planes.
+ *
+ * This format assumes
+ * - an even width
+ * - an even height
+ * - a vertical stride equal to the height
+ * - a horizontal stride multiple of 32/16/16 pixels for y/cr/cb respectively
+ * i.e.
+ * y_stride = ALIGN(width, 32)
+ * c_stride = y_stride / 2
+ *
+ * y_size = y_stride * height
+ * c_size = c_stride * height / 2
+ * size = y_size + c_size * 2
+ * cr_offset = y_size
+ * cb_offset = y_size + c_size
+ *
+ * for example:
+ * width/height = 176x144
+ * y stride = 192x144
+ * cr stride = 96x72
+ * cb stride = 96x72
+ *
+ */
+ static const char PIXEL_FORMAT_YV12_GPU[];
+
+ /*
+ * YUV422 format, 1 plane (UYVY)
+ *
+ * Effective bits per pixel : 16
+ *
+ * Y sample at every pixel, U and V sampled at every second pixel horizontally on each line.
+ * A macropixel contains 2 pixels in 1 uint32_t.
+ *
+ */
+ static const char PIXEL_FORMAT_YUV422I_UYVY[];
+ //
+ static const char PIXEL_FORMAT_YUV422I_VYUY[];
+ static const char PIXEL_FORMAT_YUV422I_YVYU[];
+ static const char PIXEL_FORMAT_BAYER8[];
+ static const char PIXEL_FORMAT_BAYER10[];
+
+ /**
+ * @var KEY_BRIGHTNESS_VALUE
+ *
+ * This is a key string of brightness value, scaled by 10.
+ *
+ */
+ static const char KEY_BRIGHTNESS_VALUE[];
+
+ // ISP Operation mode for meta mode use
+ static const char KEY_ISP_MODE[];
+ // AF
+ static const char KEY_AF_X[];
+ static const char KEY_AF_Y[];
+ static const char KEY_FOCUS_ENG_MAX_STEP[];
+ static const char KEY_FOCUS_ENG_MIN_STEP[];
+ static const char KEY_FOCUS_ENG_BEST_STEP[];
+ static const char KEY_RAW_DUMP_FLAG[];
+ static const char KEY_PREVIEW_DUMP_RESOLUTION[];
+ static const int PREVIEW_DUMP_RESOLUTION_NORMAL;
+ static const int PREVIEW_DUMP_RESOLUTION_CROP;
+
+ // Values for effect
+ static const char EFFECT_SEPIA_BLUE[];
+ static const char EFFECT_SEPIA_GREEN[];
+ // Values for AWB
+ static const char WHITE_BALANCE_TUNGSTEN[];
+ // Eng
+ static const char ISO_SPEED_ENG[];
+ static const char KEY_FOCUS_ENG_MODE[]; // 0,1,2,3 (0: normal)
+ static const char KEY_FOCUS_ENG_STEP[];
+ static const char KEY_RAW_SAVE_MODE[]; // on, off
+ static const char KEY_RAW_PATH[];
+
+ // KEY for Continuous shot speed
+ static const char KEY_FAST_CONTINUOUS_SHOT[];
+
+ static const char KEY_VIDEO_HDR[];
+
+ static const char KEY_MAX_NUM_DETECTED_OBJECT[];
+
+ // KEY for c_shot indicator
+ static const char KEY_CSHOT_INDICATOR[];
+
+ // KEY for [Engineer Mode] Add new camera paramters for new requirements
+ static const char KEY_ENG_AE_ENABLE[];
+ static const char KEY_ENG_PREVIEW_SHUTTER_SPEED[];
+ static const char KEY_ENG_PREVIEW_SENSOR_GAIN[];
+ static const char KEY_ENG_PREVIEW_ISP_GAIN[];
+ static const char KEY_ENG_PREVIEW_AE_INDEX[];
+ static const char KEY_ENG_CAPTURE_SENSOR_GAIN[];
+ static const char KEY_ENG_CAPTURE_ISP_GAIN[];
+ static const char KEY_ENG_CAPTURE_SHUTTER_SPEED[];
+ static const char KEY_ENG_CAPTURE_ISO[];
+ static const char KEY_ENG_FLASH_DUTY_VALUE[];
+ static const char KEY_ENG_FLASH_DUTY_MIN[];
+ static const char KEY_ENG_FLASH_DUTY_MAX[];
+ static const char KEY_ENG_ZSD_ENABLE[];
+ static const char KEY_SENSOR_TYPE[];
+ static const char KEY_ENG_PREVIEW_FPS[];
+ static const char KEY_ENG_MSG[];
+ static const int KEY_ENG_FLASH_DUTY_DEFAULT_VALUE;
+ static const int KEY_ENG_FLASH_STEP_DEFAULT_VALUE;
+ static const char KEY_ENG_FLASH_STEP_MIN[];
+ static const char KEY_ENG_FLASH_STEP_MAX[];
+ static const char KEY_ENG_FOCUS_FULLSCAN_FRAME_INTERVAL[];
+ static const char KEY_ENG_FOCUS_FULLSCAN_FRAME_INTERVAL_MAX[];
+ static const char KEY_ENG_FOCUS_FULLSCAN_FRAME_INTERVAL_MIN[];
+ static const int KEY_ENG_FOCUS_FULLSCAN_FRAME_INTERVAL_MAX_DEFAULT;
+ static const int KEY_ENG_FOCUS_FULLSCAN_FRAME_INTERVAL_MIN_DEFAULT;
+ static const char KEY_ENG_PREVIEW_FRAME_INTERVAL_IN_US[];
+ static const char KEY_ENG_PARAMETER1[];
+ static const char KEY_ENG_PARAMETER2[];
+ static const char KEY_ENG_PARAMETER3[];
+
+ static const char KEY_ENG_SAVE_SHADING_TABLE[];
+ static const char KEY_ENG_SHADING_TABLE[];
+ static const int KEY_ENG_SHADING_TABLE_AUTO;
+ static const int KEY_ENG_SHADING_TABLE_LOW;
+ static const int KEY_ENG_SHADING_TABLE_MIDDLE;
+ static const int KEY_ENG_SHADING_TABLE_HIGH;
+ static const int KEY_ENG_SHADING_TABLE_TSF;
+
+ // KEY for [Engineer Mode] Add new camera paramters for ev calibration
+ static const char KEY_ENG_EV_CALBRATION_OFFSET_VALUE[];
+
+#ifdef MTK_SLOW_MOTION_VIDEO_SUPPORT
+ // High Speed Video Record
+ static const char KEY_HSVR_PRV_SIZE[];
+ static const char KEY_SUPPORTED_HSVR_PRV_SIZE[];
+ static const char KEY_HSVR_PRV_FPS[];
+ static const char KEY_SUPPORTED_HSVR_PRV_FPS[];
+#endif
+
+ static const char KEY_DXOEIS_ONOFF[];
+ static const char KEY_FIX_EXPOSURE_TIME[];
+ //
+public: //// on/off => FIXME: should be replaced with TRUE[]
+ static const char ON[];
+ static const char OFF[];
+};
+
+}; // namespace android
+
+#endif
+
diff --git a/media/libstagefright/foundation/MediaBufferGroup.cpp b/media/libstagefright/foundation/MediaBufferGroup.cpp
index 8e4d0641c..9fdeccbdd 100644
--- a/media/libstagefright/foundation/MediaBufferGroup.cpp
+++ b/media/libstagefright/foundation/MediaBufferGroup.cpp
@@ -138,6 +138,12 @@ bool MediaBufferGroup::has_buffers() {
return false;
}
+extern "C" status_t _ZN7android16MediaBufferGroupC1Ev(
+ MediaBufferGroup* group, MediaBuffer **out, bool nonBlocking) {
+ ALOGD("_ZN7android16MediaBufferGroupC1Ev");
+ return group->acquire_buffer(out, nonBlocking, 0);
+}
+
status_t MediaBufferGroup::acquire_buffer(
MediaBuffer **out, bool nonBlocking, size_t requestedSize) {
Mutex::Autolock autoLock(mLock);
diff --git a/services/camera/libcameraservice/Android.mk b/services/camera/libcameraservice/Android.mk
index ced1232b0..bddfb5fb2 100644
--- a/services/camera/libcameraservice/Android.mk
+++ b/services/camera/libcameraservice/Android.mk
@@ -96,6 +96,10 @@ ifeq ($(BOARD_NEEDS_MEMORYHEAPION),true)
LOCAL_CFLAGS += -DUSE_MEMORY_HEAP_ION
endif
+ifeq ($(BOARD_HAS_MTK_HARDWARE),true)
+ LOCAL_CFLAGS += -DMTK_HARDWARE
+endif
+
LOCAL_MODULE:= libcameraservice
include $(BUILD_SHARED_LIBRARY)
diff --git a/services/camera/libcameraservice/api1/CameraClient.cpp b/services/camera/libcameraservice/api1/CameraClient.cpp
index b02d8f967..60232d8e5 100644
--- a/services/camera/libcameraservice/api1/CameraClient.cpp
+++ b/services/camera/libcameraservice/api1/CameraClient.cpp
@@ -496,6 +496,7 @@ void CameraClient::releaseRecordingFrame(const sp<IMemory>& mem) {
void CameraClient::releaseRecordingFrameHandle(native_handle_t *handle) {
if (handle == nullptr) return;
+
sp<IMemory> dataPtr;
{
Mutex::Autolock l(mAvailableCallbackBuffersLock);
@@ -750,6 +751,9 @@ void CameraClient::disableMsgType(int32_t msgType) {
#define CHECK_MESSAGE_INTERVAL 10 // 10ms
bool CameraClient::lockIfMessageWanted(int32_t msgType) {
+#ifdef MTK_HARDWARE
+ return true;
+#endif
int sleepCount = 0;
while (mMsgEnabled & msgType) {
if (mLock.tryLock() == NO_ERROR) {
@@ -793,6 +797,17 @@ bool CameraClient::lockIfMessageWanted(int32_t msgType) {
void CameraClient::notifyCallback(int32_t msgType, int32_t ext1,
int32_t ext2, void* user) {
LOG2("notifyCallback(%d)", msgType);
+#ifdef MTK_HARDWARE
+ if (msgType == 0x40000000) { //MTK_CAMERA_MSG_EXT_NOTIFY
+ if (ext1 == 0x11) { //MTK_CAMERA_MSG_EXT_NOTIFY_SHUTTER
+ msgType = CAMERA_MSG_SHUTTER;
+ }
+ if (ext1 == 0x10) { //MTK_CAMERA_MSG_EXT_CAPTURE_DONE
+ return;
+ }
+ LOG2("MtknotifyCallback(0x%x, 0x%x)", ext1, ext2);
+ }
+#endif
sp<CameraClient> client = static_cast<CameraClient*>(getClientFromCookie(user).get());
if (client.get() == nullptr) return;
@@ -823,6 +838,33 @@ void CameraClient::dataCallback(int32_t msgType,
client->handleGenericNotify(CAMERA_MSG_ERROR, UNKNOWN_ERROR, 0);
return;
}
+#ifdef MTK_HARDWARE
+ if (int32_t msgType = 0x80000000) { //MTK_CAMERA_MSG_EXT_DATA
+ struct DataHeader {
+ uint32_t extMsgType;
+ } dataHeader;
+ sp<IMemoryHeap> heap = 0;
+ ssize_t offset = 0;
+ size_t size = 0;
+
+ if (dataPtr.get()) {
+
+ heap = dataPtr->getMemory(&offset, &size);
+ if ( NULL != heap.get() && NULL != heap->base() )
+ ::memcpy(&dataHeader, ((uint8_t*)heap->base()) + offset, sizeof(DataHeader));
+
+ if (dataHeader.extMsgType == 0x10) { //MTK_CAMERA_MSG_EXT_DATA_COMPRESSED_IMAGE
+ msgType = CAMERA_MSG_COMPRESSED_IMAGE;
+ sp<MemoryBase> image = new MemoryBase(heap,
+ (offset + sizeof(DataHeader) + sizeof(uint_t) * 1),
+ (size - sizeof(DataHeader) - sizeof(uint_t) * 1));
+ client->handleCompressedPicture(image);
+ return;
+ }
+ }
+ LOG2("MtkDataCallback(0x%x)", dataHeader.extMsgType);
+ }
+#endif
switch (msgType & ~CAMERA_MSG_PREVIEW_METADATA) {
case CAMERA_MSG_PREVIEW_FRAME:
--
2.15.0.windows.1
@@ -0,0 +1,50 @@
From 7a3e536a584ecfa5aa9c12aaf0a166d3fa9b5c8b Mon Sep 17 00:00:00 2001
From: adi766 <adityakumarteli7846@gmail.com>
Date: Sat, 23 Sep 2017 16:07:34 +0000
Subject: [PATCH] MediaTek: Fix Microphone
---
services/audioflinger/Android.mk | 4 ++++
services/audioflinger/Threads.cpp | 4 ++--
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/services/audioflinger/Android.mk b/services/audioflinger/Android.mk
index 886421516..1d09376ec 100644
--- a/services/audioflinger/Android.mk
+++ b/services/audioflinger/Android.mk
@@ -87,6 +87,10 @@ endif
endif
#QTI Resampler
+ifeq ($(BOARD_HAS_MTK_HARDWARE),true)
+LOCAL_CFLAGS += -DLEGACY_AUDIO_BLOB
+endif
+
LOCAL_MODULE:= libaudioflinger
LOCAL_SRC_FILES += \
diff --git a/services/audioflinger/Threads.cpp b/services/audioflinger/Threads.cpp
index e8c80c17c..a6c02dc98 100644
--- a/services/audioflinger/Threads.cpp
+++ b/services/audioflinger/Threads.cpp
@@ -6461,7 +6461,7 @@ reacquire_wakelock:
// systemTime() is optional if the hardware supports timestamps.
mTimestamp.mPosition[ExtendedTimestamp::LOCATION_SERVER] += framesRead;
mTimestamp.mTimeNs[ExtendedTimestamp::LOCATION_SERVER] = systemTime();
-
+#ifndef LEGACY_AUDIO_BLOB
// Update server timestamp with kernel stats
if (mInput->stream->get_capture_position != nullptr
&& mPipeSource.get() == nullptr /* don't obtain for FastCapture, could block */) {
@@ -6479,7 +6479,7 @@ reacquire_wakelock:
}
// Use this to track timestamp information
// ALOGD("%s", mTimestamp.toString().c_str());
-
+#endif
if (framesRead < 0 || (framesRead == 0 && mPipeSource == 0)) {
ALOGE("read failed: framesRead=%zd", framesRead);
// Force input into standby so that it tries to recover at next read attempt
--
2.15.0.windows.1
+13
View File
@@ -0,0 +1,13 @@
ROOT="${PWD}"
DEVICE_DIR="device/amazon/mt8127-common"
REPOSITORIES=(
'frameworks/av'
)
for repository in "${REPOSITORIES[@]}"; do
cd "${ROOT}/${repository}"
git am --whitespace=nowarn --keep-cr "${ROOT}/${DEVICE_DIR}/patches/${repository}"/*
cd "${ROOT}"
done
+24 -27
View File
@@ -37,7 +37,6 @@ bin/rpmb_svc
bin/thermal_manager
bin/thermald
bin/wmt_loader
bin/wpa_supplicant
etc/.tp/.ht120.mtc
etc/.tp/thermal.conf
etc/.tp/thermal.off.conf
@@ -54,31 +53,19 @@ etc/wifi/wpa_supplicant.conf
lib/egl/libEGL_mali.so
lib/egl/libGLESv1_CM_mali.so
lib/egl/libGLESv2_mali.so
lib/hw/audio_policy.default.so
lib/hw/audio_policy.stub.so
lib/hw/audio.primary.default.so
lib/hw/audio.primary.mt8127.so
lib/hw/audio.r_submix.default.so
lib/hw/audio.sco.default.so
lib/hw/audio.usb.default.so
lib/hw/camera.mt8127.so
lib/hw/gralloc.default.so
lib/hw/gralloc.mt8127.so
lib/hw/hwcomposer.mt8127.so
lib/hw/keystore.default.so
lib/hw/keystore.mt8127.so
lib/hw/lights.mt8127.so
lib/hw/local_time.default.so
lib/hw/memtrack.mt8127.so
lib/hw/perfboost.default.so
lib/hw/perfboost.mt8127.so
lib/hw/power.default.so
lib/hw/sensors.mt8127.so
lib/hw/thermal.mt8127.so
lib/hw/vibrator.default.so
lib/lib_uree_mtk_crypto.so
lib/lib_uree_mtk_video_secure_al.so
lib/lib3a.so
lib/libaal.so
lib/libaed.so
lib/libaudio-resampler.so
lib/libaudiocompensationfilter.so
@@ -110,23 +97,20 @@ lib/libcam.camshot.so
lib/libcam.client.so
lib/libcam.device1.so
lib/libcam.exif.so
lib/libcam.paramsmgr.so
lib/libcam.utils.sensorlistener.so
lib/libcam.utils.so
lib/libcamalgo.so
lib/libcamdrv.so
lib/libcamera_client_mtk.so
lib/libcameraanalyzer.so
lib/libcameracustom.so
lib/libcustom_nvram.so
lib/libcvsd_mtk.so
lib/libdpframework.so
-lib/libdpframework.so
lib/libdrmmtkutil.so
lib/libdrmplayreadydecryptor.so
lib/libfeatureio.so
lib/libfile_op.so
lib/libGdmaScalerPipe.so
lib/libGLESv3.so
lib/libgralloc_extra.so
lib/libgsswrapper.so
lib/libgui_ext.so
@@ -134,7 +118,6 @@ lib/libhwm.so
lib/libimageio_plat_drv.so
lib/libimageio.so
lib/libion_mtk.so
lib/libion.so
lib/libiwnn.so
lib/libiwnnaz.so
lib/libJpgDecPipe.so
@@ -158,6 +141,21 @@ lib/libmtk_drvb.so
lib/libmtk_mali_user.so
lib/libmtkjpeg.so
lib/libmtklimiter.so
lib/libMtkOmxAdpcmDec.so
lib/libMtkOmxAdpcmEnc.so
lib/libMtkOmxAlacDec.so
lib/libMtkOmxApeDec.so
lib/libMtkOmxCore.so
lib/libMtkOmxFlacDec.so
lib/libMtkOmxG711Dec.so
lib/libMtkOmxGsmDec.so
lib/libMtkOmxMp3Dec.so
lib/libMtkOmxRawDec.so
lib/libMtkOmxVdecEx.so
lib/libMtkOmxVdec.so
lib/libMtkOmxVenc.so
lib/libMtkOmxVorbisEnc.so
lib/libstagefright_omx.so
lib/libMtkOmxAIVPlayer.so
lib/libMtkOmxCore.so
lib/libMtkOmxMp3Dec.so
@@ -174,6 +172,7 @@ lib/libsmartsuspendmanagerservice.so
lib/libsmartvolume.so
lib/libspeech_enh_lib.so
lib/libstagefrighthw.so
lib/libstlport.so
lib/libSwJpgCodec.so
lib/libthermalservice.so
lib/libtoe.so
@@ -186,20 +185,18 @@ lib/libvcodec_utility.so
lib/libvcodecdrv.so
lib/libvp8dec_sa.ca7.so
lib/libvp9dec_sa.ca7.so
lib/libwpa_client.so
lib/modules/ufsd.ko
vendor/etc/audio_effects.conf
vendor/etc/audio_policy.conf
vendor/lib/libwvdrm_L3.so
vendor/lib/libwvm.so
vendor/lib/libWVStreamControlAPI_L3.so
vendor/lib/mediadrm/libmockdrmcryptoplugin.so
vendor/lib/mediadrm/libwvdrmengine.so
# Widevine - from crackling
vendor/lib/libwvdrm_L3.so|7e77482481197997294a834bfbc817a01b6075cd
vendor/lib/libWVStreamControlAPI_L3.so|61673304827483d44b735a3dd08f0783d10ce92d
vendor/lib/mediadrm/libwvdrmengine.so|b88c5df27094314c39ff208fdd30c9e37042c70c
xbin/chkexfat
xbin/chkufsd
xbin/memalloc
xbin/mkexfat
xbin/start-ufsd
xbin/trapz
xbin/vitals_collection_agent
+3 -3
View File
@@ -1,4 +1,4 @@
#!/bin/sh
echo 0 > /sys/block/zram0/disksize
/system/bin/tiny_mkswap /dev/block/zram0
/system/bin/tiny_swapon /dev/block/zram0
echo 536870912 > /sys/block/zram0/disksize
/system/bin/mkswap /dev/block/zram0
/system/bin/swapon /dev/block/zram0
+3 -4
View File
@@ -6,8 +6,7 @@
/dev/block/platform/mtk-msdc.0/by-name/system /system ext4 ro wait
/dev/block/platform/mtk-msdc.0/by-name/userdata /data ext4 noatime,nosuid,nodev,noauto_da_alloc wait,check,resize,encryptable=footer
/dev/block/platform/mtk-msdc.0/by-name/cache /cache ext4 noatime,nosuid,nodev,noauto_da_alloc wait,check
/devices/platform/mtk-msdc.0/mmc_host auto auto defaults voldmanaged=sdcard0:emmc@fat,noemulatedsd
/devices/platform/mtk-msdc.1/mmc_host auto auto defaults voldmanaged=sdcard1:auto,noemulatedsd
/devices/platform/mt_usb auto auto defaults voldmanaged=usbotg:auto
/dev/block/platform/mtk-msdc.0/by-name/MISC /misc emmc defaults defaults
/devices/platform/mtk-msdc.1/mmc_host* auto auto defaults voldmanaged=sdcard0:auto,encryptable=userdata,noemulatedsd
/devices/platform/mt_usb auto vfat defaults voldmanaged=usbotg:auto
/dev/block/zram0 nome swap defaults zramsize=67108864
/dev/block/platform/mtk-msdc.0/by-name/MISC /misc emmc defaults defaults
+20 -108
View File
@@ -1,45 +1,20 @@
import init.mt8127.usb.rc
on early-init
# mount debugfs for ftrace
mount debugfs none /sys/kernel/debug
symlink /data/tombstones /tombstones
mount debugfs debugfs /sys/kernel/debug
chmod 0755 /sys/kernel/debug
wait /dev/.coldboot_done 10
on init
# See storage config details at http://source.android.com/tech/storage/
# fix non-shell uid process can not access shared-sd
mkdir /mnt/shell 0700 shell shell
chown shell sdcard_r /mnt/shell
mkdir /mnt/shell/emulated 0700 shell shell
mkdir /mnt/shell/emulated/0 0700 shell shell
mkdir /storage/emulated 0555 root root
mkdir /mnt/media_rw/sdcard1 0700 media_rw media_rw
mkdir /storage/sdcard1 0700 root root
export EXTERNAL_STORAGE /storage/emulated/legacy
export EMULATED_STORAGE_SOURCE /mnt/shell/emulated
export EMULATED_STORAGE_TARGET /storage/emulated
export SECONDARY_STORAGE /storage/sdcard1
# Support legacy paths
symlink /storage/emulated/legacy /sdcard
symlink /storage/emulated/legacy /mnt/sdcard
symlink /storage/emulated/legacy /storage/sdcard0
symlink /mnt/shell/emulated/0 /storage/emulated/legacy
symlink /mnt/shell/emulated/0 /storage/emulated/0
symlink /storage/sdcard1 /mnt/sdcard2
export USBOTG_STORAGE /storage/usbotg
mount tmpfs tmpfs /mnt/media_rw/ mode=0755,uid=1000,gid=1000
mkdir /mnt/media_rw/usbotg 0700 media_rw media_rw
mkdir /storage/usbotg 0700 root root
mkdir /mnt/sqfs 0771 system system
mount tmpfs tmpfs /storage/usbotg mode=0755,uid=1000,gid=1000
# Support legacy paths
symlink /sdcard /mnt/sdcard
# Backward compatibility
symlink /system/etc /etc
symlink /sys/kernel/debug /d
@@ -101,16 +76,16 @@ on init
chmod 0644 /dev/xt_qtaguid
# HWComposer fb0
chmod 0660 /dev/graphics/fb0
chmod 0666 /dev/graphics/fb0
chown system graphics /dev/graphics/fb0
# HWComposer Vsync
chmod 0660 /dev/mtkfb_vsync
chmod 0666 /dev/mtkfb_vsync
chown system graphics /dev/mtkfb_vsync
# HWComposer fence
chmod 0660 /dev/sw_sync
chmod 0666 /dev/sw_sync
chown system graphics /dev/sw_sync
# Change ION driver permission
@@ -197,6 +172,9 @@ on fs
setprop ro.crypto.fuse_sdcard true
on post-fs
# Support legacy paths
symlink /sdcard /storage/sdcard0
# Turn on swap
swapon_all /fstab.mt8127
@@ -209,6 +187,7 @@ on post-fs-data
chown media_rw media_rw /data/media
chmod 0660 /data/misc/wifi/p2p_supplicant.conf
# dhcp server
mkdir /data/misc/dhcp 0770 dhcp wifi
chown dhcp wifi /data/misc/dhcp
@@ -385,6 +364,12 @@ on post-fs-data
chown system /sys/devices/platform/msensor/driver/cpsopmode
chown system /sys/devices/platform/msensor/driver/cpsreptxy
chown system /sys/devices/platform/msensor/driver/cpsreptz
# Accdet
chown root radio /sys/devices/platform/Accdet_Driver/driver/accdet_call_state
# kpd
chown radio radio /sys/devices/platform/mtk-kpd/driver/kpd_call_state
chown system system /system/bin/sbchk
chmod 0771 /system/bin/sbchk
@@ -519,64 +504,6 @@ service akmd09911 /system/bin/akmd09911
group system
class main
service GoogleOtaAgent /system/bin/GoogleOtaBinder
class main
user system
group system
service dhcpcd_bt-pan /system/bin/dhcpcd -BK -dd
class main
user dhcp
group net_admin net_raw
disabled
oneshot
service dhcpcd_wlan0 /system/bin/dhcpcd -ABK -dd
class main
user dhcp
group net_admin net_raw
disabled
oneshot
service dhcpcd_p2p /system/bin/dhcpcd -ABK -dd
class main
user dhcp
group net_admin net_raw
disabled
oneshot
service iprenew_wlan0 /system/bin/dhcpcd -n
class main
user dhcp
group net_admin net_raw
disabled
oneshot
service iprenew_p2p /system/bin/dhcpcd -n
class main
user dhcp
group net_admin net_raw
disabled
oneshot
service dhcp6cDNS_wlan0 /system/bin/dhcp6c -c "/etc/wide-dhcpv6/dhcp6cDNS.conf" -Df wlan0
disabled
oneshot
service dhcp6c_wlan0 /system/bin/dhcp6c -c "/etc/wide-dhcpv6/dhcp6c.conf" -Df wlan0
disabled
oneshot
on property:service.dhcp6c_wlan0.enable=0
stop dhcp6c_wlan0
on property:service.dhcp6c_wlan0.enable=1
start dhcp6c_wlan0
service dhcp6c_PD /system/bin/dhcp6c -c "/etc/wide-dhcpv6/dhcp6cPD.conf" -Df
disabled
oneshot
# thermal service
service thermal_manager /system/bin/thermal_manager
class main
@@ -804,21 +731,6 @@ service bat_logging /system/bin/battery_lifetime_data
user root
group root
service sdcard /system/bin/sdcard -u 1023 -g 1023 -l /data/media /mnt/shell/emulated
class late_start
service fuse_sdcard1 /system/bin/sdcard -u 1023 -g 1023 -w 1023 -d /mnt/media_rw/sdcard1 /storage/sdcard1
class late_start
disabled
service fuse_usbotg /system/bin/sdcard -u 1023 -g 1023 -d /mnt/media_rw/usbotg /storage/usbotg
class late_start
disabled
service fuse_sdcard1 /system/bin/sdcard -u 1023 -g 1023 -w 1023 -d /mnt/media_rw/sdcard1 /storage/sdcard1
class late_start
disabled
service wmtLoader /system/bin/wmt_loader
user root
group root
+106 -5
View File
@@ -11,14 +11,115 @@
/dev/sec_ro 0640 root system
/dev/recovery 0640 root system
/dev/seccfg 0660 root system
/dev/block/mmcblk0 0660 root root
/dev/block/platform/mtk-msdc.0/by-name/PRO_INFO 0660 root system
/dev/block/mmcblk0 0660 root system
/dev/trustzone 0660 root drmrpc
/dev/devmap 0444 root media
/dev/devmap 0440 root system
/dev/mali 0666 system graphics
/dev/gps 0660 gps system
/dev/ttyGS2 0660 bluetooth radio
/dev/dvt-adc 0660 root camera
#change partition permission
/dev/preloader 0640 root system
/dev/bootimg 0640 root system
/dev/recovery 0660 root system
/dev/sec_ro 0640 root system
/dev/kb 0660 root system
/dev/dkb 0660 root system
/dev/seccfg 0660 root system
/dev/pro_info 0660 root system
/dev/otp 0660 root system
/dev/nvram 0660 root system
/dev/misc 0660 root system
/dev/misc2 0660 root system
/dev/block/platform/mtk-msdc.0/by-name/misc2 0660 root system
/dev/block/mmcblk0 0660 root system
/dev/block/mmcblk0boot0 0660 root system
/dev/misc-sd 0660 root system
#connectivity
/dev/stpwmt 0660 system system
/dev/wmtdetect 0660 system system
/dev/stpbt 0660 bluetooth radio
/dev/stpgps 0660 gps gps
/dev/stpant 0660 system system
# WIFI
/dev/wmtWifi 0660 system system
# FMRadio
/dev/fm 0660 system media
# add the read write right of ttyUSB*
/dev/bus/usb/* 0660 root usb
/dev/ttyUSB0 0660 radio radio
/dev/ttyUSB1 0660 radio radio
/dev/ttyUSB2 0660 radio radio
/dev/ttyUSB3 0660 radio radio
/dev/ttyUSB4 0660 radio radio
# Anyone can read the logs, but if they're not in the "logs"
# group, then they'll only see log entries for their UID.
/dev/xLog 0600 root root
/dev/log/* 0666 root log
/dev/log/ksystem 0600 root log
/dev/ccci* 0660 radio radio
/dev/ttyC* 0660 radio radio
/sys/kernel/ccci modem_info 0644 radio radio
/sys/kernel/ccci md1_postfix 0644 radio radio
/sys/kernel/ccci md2_postfix 0644 radio radio
/dev/eemcs* 0660 radio radio
/dev/ccci_pcm_rx 0660 media media
/dev/ccci_pcm_tx 0660 media media
/dev/ccci_aud 0660 media media
/dev/ccci2_aud 0660 media media
/dev/eemcs_aud 0660 media media
# SGX device node
/dev/pvrsrvkm 0666 root root
/dev/pvr_sync 0666 root root
# sysfs properties
/sys/devices/platform/leds-mt65xx/leds/green delay_on 0664 system system
/sys/devices/platform/leds-mt65xx/leds/green delay_off 0664 system system
/sys/devices/platform/leds-mt65xx/leds/red delay_on 0664 system system
/sys/devices/platform/leds-mt65xx/leds/red delay_off 0664 system system
/sys/devices/platform/leds-mt65xx/leds/blue delay_on 0664 system system
/sys/devices/platform/leds-mt65xx/leds/blue delay_off 0664 system system
#GPIO
/dev/mtgpio 0600 radio root
#MTK BTIF driver
/dev/btif 0600 system system
#FOR VIA MODEM
/dev/ttySDIO* 0660 radio sdcard_rw
/dev/ttyRB* 0660 radio radio
# Mali node
/dev/mali 0666 system graphics
# Change ION driver permission
/dev/ion 0666 system graphics
#touch
/dev/touch 0660 root system
/dev/hotknot 0660 root system
#hang_detect
/dev/RT_Monitor 0600 system system
/dev/kick_powerkey 0600 system system
#MTK In-House TEE
/dev/trustzone 0660 system drmrpc
# Trusty driver
/dev/trusty-ipc-dev0 0660 system keystore
/dev/ttyACM0 0660 radio radio
# RPMB
/dev/block/mmcblk0rpmb 0660 root system
# sysfs properties
+14
View File
@@ -0,0 +1,14 @@
# device specific syscalls
# extension of services/mediacodec/minijail/seccomp_policy/mediacodec-seccomp-arm.policy
sched_getscheduler: 1
sched_setaffinity: 1
sched_getparam: 1
sendto: 1
getdents64: 1
gettid: 1
geteuid32: 1
getgid32: 1
getegid32: 1
getpid: 1
uname: 1
fsync : 1
+1
View File
@@ -0,0 +1 @@
attribute mtk_property_type;
+18
View File
@@ -0,0 +1,18 @@
# nvram
allow audioserver nvdata_file:dir rw_dir_perms;
allow audioserver nvdata_file:file create_file_perms;
allow audioserver nvdata_file:lnk_file r_file_perms;
allow audioserver ccci_device:chr_file rw_file_perms;
# fm radio
allow audioserver fm_device:chr_file rw_file_perms;
# Audio
allow audioserver sysfs:file { open read write };
allow audioserver sysfs_devinfo:file { open read write };
allow audioserver sysfs_ccci:file r_file_perms;
allow audioserver sysfs_ccci:dir search;
allow audioserver audiohal_prop:property_service set;
allow audioserver sysfs_boot_mode:file { read open };
#allow audioserver device:chr_file { read write open };
+11
View File
@@ -0,0 +1,11 @@
# Allow access to the hardware node
allow bluetooth stpbt_device:chr_file rw_file_perms;
# Allow nvram access
allow bluetooth nvdata_file:dir search;
allow bluetooth nvdata_file:file rw_file_perms;
allow bluetooth nvdata_file:lnk_file r_file_perms;
allow bluetooth block_device:dir search;
allow bluetooth sysfs_boot_mode:file { read open };
+21
View File
@@ -0,0 +1,21 @@
# nvram
allow cameraserver nvdata_file:dir rw_dir_perms;
allow cameraserver nvdata_file:file create_file_perms;
allow cameraserver ccci_device:chr_file rw_file_perms;
# camera
allow cameraserver sensorservice_service:service_manager find;
allow cameraserver system_server:unix_stream_socket { read write };
allow cameraserver camera_device:chr_file rw_file_perms;
allow cameraserver mtk_smi_device:chr_file rw_file_perms;
allow cameraserver proc:file { read ioctl open };
allow cameraserver devmap_device:chr_file r_file_perms;
allow cameraserver devmap_device:chr_file { ioctl };
allow cameraserver sysfs_devinfo:file rw_file_perms;
allow cameraserver sysfs_membw:file rw_file_perms;
allow cameraserver proc_meminfo:file { open read getattr };
allow cameraserver sysfs_boot_mode:file r_file_perms;
allow cameraserver sysfs_ddr_type:file r_file_perms;
# PQ
allow cameraserver pq_service:service_manager find;
+18
View File
@@ -0,0 +1,18 @@
type ccci_fsd_exec, exec_type, file_type;
type ccci_fsd, domain, domain_deprecated;
init_daemon_domain(ccci_fsd)
allow ccci_fsd ccci_device:chr_file rw_file_perms;
allow ccci_fsd ccci_cfg_file:dir create_dir_perms;
allow ccci_fsd ccci_cfg_file:file create_file_perms;
allow ccci_fsd nvdata_file:dir create_dir_perms;
allow ccci_fsd nvdata_file:file create_file_perms;
allow ccci_fsd nvdata_file:lnk_file r_file_perms;
allow ccci_fsd protect_f_data_file:dir create_dir_perms;
allow ccci_fsd protect_f_data_file:file create_file_perms;
allow ccci_fsd protect_s_data_file:dir create_dir_perms;
allow ccci_fsd protect_s_data_file:file create_file_perms;
allow ccci_fsd sysfs_ccci:file rw_file_perms;
allow ccci_fsd sysfs_ccci:dir search;
allow ccci_fsd sysfs_wake_lock:file rw_file_perms;
+29
View File
@@ -0,0 +1,29 @@
type ccci_mdinit_exec, exec_type, file_type;
type ccci_mdinit, domain, domain_deprecated;
init_daemon_domain(ccci_mdinit)
allow ccci_mdinit ccci_device:chr_file rw_file_perms;
allow ccci_mdinit ccci_cfg_file:dir create_dir_perms;
allow ccci_mdinit ccci_cfg_file:file create_file_perms;
allow ccci_mdinit nvdata_file:dir rw_dir_perms;
allow ccci_mdinit nvdata_file:file create_file_perms;
allow ccci_mdinit nvdata_file:lnk_file r_file_perms;
allow ccci_mdinit sysfs_ccci:dir search;
allow ccci_mdinit sysfs_ccci:file rw_file_perms;
allow ccci_mdinit sysfs_wake_lock:file rw_file_perms;
allow ccci_mdinit sysfs_devinfo:file r_file_perms;
allow ccci_mdinit nvram_device:blk_file rw_file_perms;
allow ccci_mdinit mtk_md_prop:property_service set;
allow ccci_mdinit ctl_ccci_fsd_prop:property_service set;
allow ccci_mdinit ctl_gsm0710muxd_prop:property_service set;
allow ccci_mdinit ctl_rildaemon_prop:property_service set;
allow ccci_mdinit radio_prop:property_service set;
allow ccci_mdinit ril_mux_report_case_prop:property_service set;
allow ccci_mdinit mdlog_data_file:file r_file_perms;
allow ccci_mdinit mdlog_data_file:dir r_dir_perms;
unix_socket_connect(ccci_mdinit, property, init)
+9
View File
@@ -0,0 +1,9 @@
type conn_launcher_exec, exec_type, file_type;
type conn_launcher, domain, domain_deprecated;
init_daemon_domain(conn_launcher)
allow conn_launcher stpwmt_device:chr_file rw_file_perms;
allow conn_launcher wmt_prop:property_service set;
unix_socket_connect(conn_launcher, property, init)
+49
View File
@@ -0,0 +1,49 @@
# Radio devices
type ccci_device, dev_type;
type stpbt_device, dev_type;
type stpgps_device, dev_type;
type stpwmt_device, dev_type;
type hwmsensor_device, dev_type;
type wmtWifi_device, dev_type;
type wmtdetect_device, dev_type;
type gsm0710muxd_device, dev_type;
type mdlog_device, dev_type;
type pmic_adc_device, dev_type;
# Sensors
type als_ps_device, dev_type;
type mtk-adc-cali_device, dev_type;
type gsensor_device, dev_type;
type msensor_device, dev_type;
type gyroscope_device, dev_type;
# Media
type accdet_device, dev_type;
type devmap_device, dev_type;
type fm_device, dev_type;
type Vcodec_device, dev_type;
type M4U_device_device, dev_type;
type mtk_smi_device, dev_type;
# SPM
type spm_device, dev_type;
# NFC
type mt6605_device, dev_type;
# Fingerprint
type esfp0_device, dev_type;
type madev0_device, dev_type;
# IR
type irtx_device, dev_type;
# Block devices
type proinfo_device, dev_type;
type nvram_device, dev_type;
type nvdata_device, dev_type;
type protect1_device, dev_type;
type protect2_device, dev_type;
type logo_block_device, dev_type;
type para_block_device, dev_type;
type mmc_device, dev_type;
+1
View File
@@ -0,0 +1 @@
get_prop(domain, mtk_property_type)
+1
View File
@@ -0,0 +1 @@
allow drmserver sysfs_devinfo:file { open read write };
+9
View File
@@ -0,0 +1,9 @@
type em_svr_exec, exec_type, file_type;
type em_svr, domain, domain_deprecated;
init_daemon_domain(em_svr)
allow em_svr gsensor_device:chr_file { read ioctl open };
allow em_svr gyroscope_device:chr_file { read ioctl open };
allow em_svr nvdata_file:dir { write read open add_name search };
allow em_svr nvdata_file:file { write getattr setattr read create open };
+14
View File
@@ -0,0 +1,14 @@
type etsd_exec, exec_type, file_type;
type etsd, domain, domain_deprecated;
init_daemon_domain(etsd)
binder_use(etsd)
allow etsd etsd_service:service_manager { add find };
allow etsd esfp0_device:chr_file rw_file_perms;
use_keystore(etsd)
allow etsd keystore:keystore_key { add_auth };
allow etsd self:capability { dac_override dac_read_search };
+67
View File
@@ -0,0 +1,67 @@
type factory_exec, exec_type, file_type;
type factory, domain, domain_deprecated;
init_daemon_domain(factory)
net_domain(factory)
allow factory serial_device:chr_file rw_file_perms;
# Hardware nodes
allow factory accdet_device:chr_file r_file_perms;
allow factory ashmem_device:chr_file execute;
allow factory audio_device:dir r_dir_perms;
allow factory audio_device:chr_file rw_file_perms;
allow factory camera_device:chr_file rw_file_perms;
allow factory ccci_device:chr_file rw_file_perms;
allow factory devmap_device:chr_file r_file_perms;
allow factory fm_device:chr_file rwx_file_perms;
allow factory gsm0710muxd_device:chr_file rw_file_perms;
allow factory graphics_device:dir search;
allow factory graphics_device:chr_file rw_file_perms;
allow factory input_device:dir r_dir_perms;
allow factory input_device:chr_file r_file_perms;
allow factory pmic_adc_device:chr_file rw_file_perms;
allow factory rtc_device:chr_file rw_file_perms;
allow factory stpbt_device:chr_file rw_file_perms;
allow factory wmtWifi_device:chr_file rw_file_perms;
# NVRAM
allow factory nvdata_file:dir create_dir_perms;
allow factory nvdata_file:file create_file_perms;
allow factory nvdata_device:blk_file rw_file_perms;
allow factory nvram_device:blk_file rw_file_perms;
allow factory proinfo_device:blk_file rw_file_perms;
# Storage
allow factory mnt_user_file:dir search;
allow factory mmc_device:blk_file rw_file_perms;
allow factory storage_file:dir r_dir_perms;
allow factory storage_file:lnk_file r_file_perms;
allow factory storage_file:file r_file_perms;
# Configuration
allow factory sysfs:file write;
allow factory sysfs_gps_file:dir r_dir_perms;
allow factory sysfs_gps_file:file rw_file_perms;
# Sensors
allow factory als_ps_device:chr_file r_file_perms;
allow factory gsensor_device:chr_file rw_file_perms;
allow factory msensor_device:chr_file rw_file_perms;
# GPS
allow factory agpsd_data_file:dir r_dir_perms;
allow factory agpsd_data_file:sock_file write;
allow factory stpgps_device:chr_file rw_file_perms;
allow factory gps_device:chr_file rw_file_perms;
allow factory mnld_data_file:dir rw_dir_perms;
allow factory mnld_data_file:file rw_file_perms;
allow factory mnld_exec:file rx_file_perms;
allow factory mnld_prop:property_service set;
# Other capabilities
allow factory self:capability { dac_override net_admin net_raw sys_nice sys_time };
allow factory self:process execmem;
allow factory audiohal_prop:property_service set;
unix_socket_connect(factory, property, init);
+38
View File
@@ -0,0 +1,38 @@
type protect_s_data_file, file_type, data_file_type;
type protect_f_data_file, file_type, data_file_type;
type nvdata_file, file_type, data_file_type;
type agpsd_data_file, file_type, data_file_type;
type mnld_data_file, file_type, data_file_type;
type ccci_cfg_file, file_type, data_file_type;
type logmisc_data_file, file_type, data_file_type;
type mdlog_data_file, file_type, data_file_type;
type thermal_manager_data_file, file_type, data_file_type;
type sysfs_gps_file, fs_type, sysfs_type;
type sysfs_ccci, fs_type, sysfs_type;
type sysfs_devinfo, fs_type, sysfs_type;
type sysfs_membw, fs_type, sysfs_type;
type sysfs_boot_mode, fs_type, sysfs_type;
type sysfs_ddr_type, fs_type, sysfs_type;
type msensord_daemon_sysfs, fs_type, sysfs_type;
type display_color_sysfs, fs_type, sysfs_type;
type gyro_orientation_sysfs, fs_type, sysfs_type;
type fast_charge_sysfs, fs_type, sysfs_type;
type smartwake_sysfs, fs_type, sysfs_type;
type perf_control_sysfs, fs_type, sysfs_type;
type proc_mtkcooler, fs_type;
type proc_mtktz, fs_type;
type proc_thermal, fs_type;
type proc_wmt, fs_type;
type agpsd_socket, file_type;
type mnld_socket, file_type;
type mal_mfi_socket, file_type;
type nfc_socket, file_type;
+174
View File
@@ -0,0 +1,174 @@
# Services
/(system|system\/vendor|vendor)/bin/6620_launcher u:object_r:conn_launcher_exec:s0
/(system|system\/vendor|vendor)/bin/ccci_fsd u:object_r:ccci_fsd_exec:s0
/(system|system\/vendor|vendor)/bin/ccci_mdinit u:object_r:ccci_mdinit_exec:s0
/(system|system\/vendor|vendor)/bin/md_ctrl u:object_r:md_ctrl_exec:s0
/(system|system\/vendor|vendor)/bin/fuelgauged u:object_r:fuelgauged_exec:s0
/(system|system\/vendor|vendor)/bin/gsm0710muxd u:object_r:gsm0710muxd_exec:s0
/(system|system\/vendor|vendor)/xbin/mnld u:object_r:mnld_exec:s0
/(system|system\/vendor|vendor)/bin/mnld u:object_r:mnld_exec:s0
/(system|system\/vendor|vendor)/bin/muxreport u:object_r:muxreport_exec:s0
/(system|system\/vendor|vendor)/bin/msensord u:object_r:msensord_exec:s0
/(system|system\/vendor|vendor)/bin/qmc6983d u:object_r:qmc6983d_exec:s0
/(system|system\/vendor|vendor)/bin/mxg2320d u:object_r:mxg2320d_exec:s0
/(system|system\/vendor|vendor)/bin/memsicd3416x u:object_r:memsicd3416x_exec:s0
/(system|system\/vendor|vendor)/bin/mtk_agpsd u:object_r:mtk_agpsd_exec:s0
/(system|system\/vendor|vendor)/bin/nvram_daemon u:object_r:nvram_daemon_exec:s0
/(system|system\/vendor|vendor)/bin/pq u:object_r:pq_exec:s0
/(system|system\/vendor|vendor)/bin/terservice u:object_r:terservice_exec:s0
/(system|system\/vendor|vendor)/bin/thermal u:object_r:thermal_exec:s0
/(system|system\/vendor|vendor)/bin/thermald u:object_r:thermald_exec:s0
/(system|system\/vendor|vendor)/bin/thermal_manager u:object_r:thermal_manager_exec:s0
/(system|system\/vendor|vendor)/bin/thermalloadalgod u:object_r:thermalloadalgo_exec:s0
/(system|system\/vendor|vendor)/bin/mtkrild u:object_r:ril-daemon-mtk_exec:s0
/(system|system\/vendor|vendor)/bin/mtkmal u:object_r:mtkmal_exec:s0
/(system|system\/vendor|vendor)/bin/wifi2agps u:object_r:wifi2agps_exec:s0
/(system|system\/vendor|vendor)/bin/wmt_loader u:object_r:wmt_loader_exec:s0
/(system|system\/vendor|vendor)/bin/wmt_launcher u:object_r:conn_launcher_exec:s0
/(system|system\/vendor|vendor)/bin/em_svr u:object_r:em_svr_exec:s0
/(system|system\/vendor|vendor)/bin/kpoc_charger u:object_r:kpoc_charger_exec:s0
/(system|system\/vendor|vendor)/bin/etsd u:object_r:etsd_exec:s0
/(system|system\/vendor|vendor)/bin/ged_srv u:object_r:ged_srv_exec:s0
/(system|system\/vendor|vendor)/bin/spm_loader u:object_r:spm_loader_exec:s0
# Meta mode
/(system|system\/vendor|vendor)/bin/meta_tst u:object_r:meta_tst_exec:s0
/(system|system\/vendor|vendor)/bin/factory u:object_r:factory_exec:s0
# Files from firmware/nv partitions
/protect_f(/.*)? u:object_r:protect_f_data_file:s0
/protect_s(/.*)? u:object_r:protect_s_data_file:s0
/nvdata(/.*)? u:object_r:nvdata_file:s0
/data/nvram(/.*)? u:object_r:nvdata_file:s0
# Hardware nodes
/dev/accdet u:object_r:accdet_device:s0
/dev/devmap u:object_r:devmap_device:s0
/dev/ttyC2 u:object_r:gps_device:s0
/dev/ttyGS0 u:object_r:serial_device:s0
/dev/gps(/.*)? u:object_r:gps_device:s0
/dev/mali[0-9]* u:object_r:gpu_device:s0
/dev/mali.* u:object_r:gpu_device:s0
/dev/mtk_disp.* u:object_r:graphics_device:s0
/dev/sw_sync u:object_r:graphics_device:s0
/dev/stpbt(/.*)? u:object_r:stpbt_device:s0
/dev/hwmsensor(/.*)? u:object_r:hwmsensor_device:s0
/dev/wmtWifi(/.*)? u:object_r:wmtWifi_device:s0
/dev/camera-isp u:object_r:camera_device:s0
/dev/camera-fdvt u:object_r:camera_device:s0
/dev/camera-pipemgr u:object_r:camera_device:s0
/dev/camera-sysram u:object_r:camera_device:s0
/dev/kd_camera_hw u:object_r:camera_device:s0
/dev/kd_camera_flashlight u:object_r:camera_device:s0
/dev//dev/dummy_cam_cal u:object_r:camera_device:s0
/dev/MAINAF u:object_r:camera_device:s0
/dev/mtk_jpeg(/.*) u:object_r:camera_device:s0
/dev/DW9714AF(/.*)? u:object_r:camera_device:s0
/dev/FM50AF(/.*)? u:object_r:camera_device:s0
/dev/CAM_CAL_DRV(/.*)? u:object_r:camera_device:s0
/dev/MTK_SMI u:object_r:mtk_smi_device:s0
/dev/MT_pmic_adc_cali u:object_r:pmic_adc_device:s0
/dev/als_ps(/.*)? u:object_r:als_ps_device:s0
/dev/mtk-adc-cali(/.*)? u:object_r:mtk-adc-cali_device:s0
/dev/ccci.* u:object_r:ccci_device:s0
/dev/gsensor(/.*)? u:object_r:gsensor_device:s0
/dev/msensor(/.*)? u:object_r:msensor_device:s0
/dev/gyroscope(/.*)? u:object_r:gyroscope_device:s0
/dev/stpgps(/.*)? u:object_r:stpgps_device:s0
/dev/stpwmt(/.*)? u:object_r:stpwmt_device:s0
/dev/wmtdetect u:object_r:wmtdetect_device:s0
/dev/ttyC0 u:object_r:gsm0710muxd_device:s0
/dev/ttyC1 u:object_r:mdlog_device:s0
/dev/radio(/.*)? u:object_r:radio_device:s0
/dev/fm u:object_r:fm_device:s0
/dev/Vcodec u:object_r:Vcodec_device:s0
/dev/M4U_device(/.*)? u:object_r:M4U_device_device:s0
/dev/spm u:object_r:spm_device:s0
/dev/mt6605 u:object_r:mt6605_device:s0
/dev/esfp0 u:object_r:esfp0_device:s0
/dev/madev0 u:object_r:madev0_device:s0
/dev/irtx u:object_r:irtx_device:s0
# Sockets
/dev/socket/rild[2-4] u:object_r:rild_socket:s0
/dev/socket/rild-atci u:object_r:rild_socket:s0
/dev/socket/rild-ims u:object_r:rild_socket:s0
/dev/socket/rild-mtk-modem u:object_r:rild_socket:s0
/dev/socket/rild-mtk-ut u:object_r:rild_socket:s0
/dev/socket/rild-mtk-ut-2 u:object_r:rild_socket:s0
/dev/socket/rild-oem u:object_r:rild_socket:s0
/dev/socket/mal-mfi u:object_r:mal_mfi_socket:s0
/dev/socket/agpsd u:object_r:agpsd_socket:s0
/dev/socket/agpsd[2-3] u:object_r:agpsd_socket:s0
/dev/socket/mnld u:object_r:mnld_socket:s0
# Block devices
/dev/block/platform/mtk-msdc\.0/[0-9]+\.(msdc|MSDC)0/by-name/boot u:object_r:boot_block_device:s0
/dev/block/platform/mtk-msdc\.0/[0-9]+\.(msdc|MSDC)0/by-name/proinfo u:object_r:proinfo_device:s0
/dev/block/platform/mtk-msdc\.0/by-name/proinfo u:object_r:proinfo_device:s0
/dev/block/platform/mtk-msdc\.0/[0-9]+\.(msdc|MSDC)0/by-name/nvram u:object_r:nvram_device:s0
/dev/block/platform/mtk-msdc\.0/by-name/nvram u:object_r:nvram_device:s0
/dev/block/platform/mtk-msdc\.0/[0-9]+\.(msdc|MSDC)0/by-name/nvdata u:object_r:nvdata_device:s0
/dev/block/platform/mtk-msdc\.0/[0-9]+\.(msdc|MSDC)0/by-name/logo u:object_r:logo_block_device:s0
/dev/block/platform/mtk-msdc\.0/by-name/logo u:object_r:logo_block_device:s0
/dev/block/platform/mtk-msdc\.0/[0-9]+\.(msdc|MSDC)0/by-name/protect1 u:object_r:protect1_device:s0
/dev/block/platform/mtk-msdc\.0/[0-9]+\.(msdc|MSDC)0/by-name/protect2 u:object_r:protect2_device:s0
/dev/block/platform/mtk-msdc\.0/[0-9]+\.(msdc|MSDC)0/by-name/userdata u:object_r:userdata_block_device:s0
/dev/block/platform/mtk-msdc\.0/[0-9]+\.(msdc|MSDC)0/by-name/cache u:object_r:cache_block_device:s0
/dev/block/platform/mtk-msdc\.0/[0-9]+\.(msdc|MSDC)0/by-name/recovery u:object_r:recovery_block_device:s0
/dev/block/platform/mtk-msdc\.0/[0-9]+\.(msdc|MSDC)0/by-name/frp u:object_r:frp_block_device:s0
/dev/block/platform/mtk-msdc\.0/[0-9]+\.(msdc|MSDC)0/by-name/metadata u:object_r:metadata_block_device:s0
/dev/block/platform/mtk-msdc\.0/[0-9]+\.(msdc|MSDC)0/by-name/para u:object_r:para_block_device:s0
/dev/block/mmcblk1 u:object_r:mmc_device:s0
/dev/block/zram0 u:object_r:swap_block_device:s0
# Block devices ttab
/dev/usrdata u:object_r:userdata_block_device:s0
/dev/recovery u:object_r:recovery_block_device:s0
/dev/pro_info u:object_r:proinfo_device:s0
/dev/protect_f u:object_r:protect1_device:s0
/dev/protect_s u:object_r:protect2_device:s0
/dev/cache u:object_r:cache_block_device:s0
/dev/block/mmcblk[0-9a-z]* u:object_r:mmc_device:s0
/dev/bootimg u:object_r:boot_block_device:s0
/dev/nvram u:object_r:nvram_device:s0
# Sysfs nodes
/sys/devices/virtual/gpsdrv(/.*)? u:object_r:sysfs_gps_file:s0
/sys/kernel/ccci(/.*)? u:object_r:sysfs_ccci:s0
/sys/bus/platform/drivers/dev_info/dev_info u:object_r:sysfs_devinfo:s0
/sys/bus/platform/drivers/mem_bw_ctrl/concurrency_scenario u:object_r:sysfs_membw:s0
/sys/bus/platform/drivers/ddr_type/ddr_type u:object_r:sysfs_ddr_type:s0
/sys/devices/virtual/BOOT/BOOT/boot/boot_mode u:object_r:sysfs_boot_mode:s0
/sys/devices/platform/mtk_disp_mgr.0/rgb u:object_r:livedisplay_sysfs:s0
/sys/bus/platform/drivers/msensor/daemon u:object_r:msensord_daemon_sysfs:s0
/sys/bus/platform/drivers/gyroscope/gyro_orientation u:object_r:gyro_orientation_sysfs:s0
/sys/kernel/charge_levels/quick_charge_enable u:object_r:fast_charge_sysfs:s0
/sys/kernel/charge_levels/charge_level_ac u:object_r:fast_charge_sysfs:s0
/sys/kernel/charge_levels/charge_level_usb u:object_r:fast_charge_sysfs:s0
/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq u:object_r:perf_control_sysfs:s0
/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq u:object_r:perf_control_sysfs:s0
/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor u:object_r:perf_control_sysfs:s0
/sys/block/mmcblk0/queue/scheduler u:object_r:perf_control_sysfs:s0
/sys/devices/.*/queue/scheduler u:object_r:perf_control_sysfs:s0
# Config/Runtime files
/data/agps_supl(/.*)? u:object_r:agpsd_data_file:s0
/data/app/cache.dat u:object_r:mnld_data_file:s0
/data/gps_mnl(/.*)? u:object_r:mnld_data_file:s0
/data/misc/gps(/.*)? u:object_r:mnld_data_file:s0
/data/misc/GPS_CHIP.cfg u:object_r:mnld_data_file:s0
/data/misc/gps.conf u:object_r:mnld_data_file:s0
/data/misc/mnl_nlp.dat u:object_r:mnld_data_file:s0
/data/misc/mblog(/.*)? u:object_r:logmisc_data_file:s0
/data/log_temp(/.*)? u:object_r:logmisc_data_file:s0
/data/mdlog(/.*)? u:object_r:mdlog_data_file:s0
/data/mdl(/.*)? u:object_r:mdlog_data_file:s0
/data/ccci_cfg(/.*)? u:object_r:ccci_cfg_file:s0
/data/.tp(/.*)? u:object_r:thermal_manager_data_file:s0
/data/nfc_socket(/.*)? u:object_r:nfc_socket:s0
# Sysfs nodes
/sys/devices/soc/soc:touch@/smartwake_active u:object_r:smartwake_sysfs:s0
/sys/devices/soc/soc:touch@/wakeup_gesture u:object_r:smartwake_sysfs:s0
+3
View File
@@ -0,0 +1,3 @@
allow fsck protect1_device:blk_file rw_file_perms;
allow fsck protect2_device:blk_file rw_file_perms;
allow fsck nvdata_device:blk_file rw_file_perms;
+2
View File
@@ -0,0 +1,2 @@
# External storage
allow fsck_untrusted self:capability sys_admin;
+7
View File
@@ -0,0 +1,7 @@
type fuelgauged_exec, exec_type, file_type;
type fuelgauged, domain, domain_deprecated;
init_daemon_domain(fuelgauged)
allow fuelgauged self:netlink_socket create_socket_perms;
allow fuelgauged kmsg_device:chr_file w_file_perms;
+14
View File
@@ -0,0 +1,14 @@
type ged_srv, domain, domain_deprecated;
type ged_srv_exec, exec_type, file_type;
init_daemon_domain(ged_srv)
binder_use(ged_srv)
binder_service(ged_srv)
binder_call(ged_srv, system_server)
allow ged_srv servicemanager:binder call;
allow ged_srv surfaceflinger:binder call;
allow ged_srv surfaceflinger_service:service_manager find;
allow ged_srv self:netlink_kobject_uevent_socket { bind create setopt read};
allow ged_srv sysfs_boot_mode:file r_file_perms;
+4
View File
@@ -0,0 +1,4 @@
genfscon proc /driver/thermal u:object_r:proc_thermal:s0
genfscon proc /driver/wmt u:object_r:proc_wmt:s0
genfscon proc /mtkcooler u:object_r:proc_mtkcooler:s0
genfscon proc /mtktz u:object_r:proc_mtktz:s0
+18
View File
@@ -0,0 +1,18 @@
type gsm0710muxd_exec, exec_type, file_type;
type gsm0710muxd, domain, domain_deprecated;
init_daemon_domain(gsm0710muxd)
allow gsm0710muxd gsm0710muxd_device:chr_file rw_file_perms;
allow gsm0710muxd radio_device:dir w_dir_perms;
allow gsm0710muxd radio_device:lnk_file create_file_perms;
allow gsm0710muxd devpts:chr_file setattr;
allow gsm0710muxd self:capability { setuid fowner chown };
allow gsm0710muxd sysfs_ccci:dir search;
allow gsm0710muxd sysfs_ccci:file r_file_perms;
allow gsm0710muxd ctl_rildaemon_prop:property_service set;
allow gsm0710muxd radio_prop:property_service set;
allow gsm0710muxd ril_mux_report_case_prop:property_service set;
unix_socket_connect(gsm0710muxd, property, init)
+1
View File
@@ -0,0 +1 @@
allow healthd device:dir r_dir_perms;
+18
View File
@@ -0,0 +1,18 @@
allow init ccci_device:chr_file { write ioctl };
allow init devpts:chr_file ioctl;
# Allow init to format formattable partitions…partitions
allow init nvdata_device:blk_file write;
allow init protect1_device:blk_file write;
allow init protect2_device:blk_file write;
allow init socket_device:sock_file { create setattr unlink };
allow init tmpfs:lnk_file { create };
allow init mnt_media_rw_file:dir { mounton };
allow init asec_apk_file:dir { mounton };
allow init perf_control_sysfs:file { getattr };
allow init servicemanager:binder { call transfer };
allow init sdcardd_exec:file r_file_perms;
allow init wmtWifi_device:chr_file { write };
+11
View File
@@ -0,0 +1,11 @@
allow kernel nvdata_file:dir search;
allow kernel nvdata_file:file r_file_perms;
allow kernel self:capability dac_override;
allow kernel wifi_data_file:dir search;
allow kernel wifi_data_file:file r_file_perms;
# for /cache/gtp_(clk|ref).bin
allow kernel cache_file:file { write open };
#allow mediaserver device:chr_file { read open ioctl };
#allow mediaserver default_prop:property_service { set };
+25
View File
@@ -0,0 +1,25 @@
type kpoc_charger, domain, domain_deprecated;
type kpoc_charger_exec, exec_type, file_type;
init_daemon_domain(kpoc_charger)
allow kpoc_charger block_device:dir search;
allow kpoc_charger graphics_device:dir search;
allow kpoc_charger input_device:dir { open read search };
allow kpoc_charger input_device:chr_file { open read write ioctl };
allow kpoc_charger property_socket:sock_file write;
allow kpoc_charger self:capability sys_nice;
allow kpoc_charger self:capability net_admin;
allow kpoc_charger self:capability dac_override;
allow kpoc_charger self:netlink_kobject_uevent_socket { create bind read setopt };
allow kpoc_charger sysfs:file write;
allow kpoc_charger graphics_device:chr_file { read write ioctl open };
allow kpoc_charger kmsg_device:chr_file { write open };
allow kpoc_charger logo_block_device:blk_file { read open };
allow kpoc_charger rtc_device:chr_file { open read write };
allow kpoc_charger init:unix_stream_socket connectto;
allow healthd self:capability dac_override;
allow healthd app_data_file:file write;
allow healthd device:dir {open read write};
allow kpoc_charger self:capability sys_boot;
allow kpoc_charger alarm_device:chr_file write;
+11
View File
@@ -0,0 +1,11 @@
type md_ctrl_exec, exec_type, file_type;
type md_ctrl, domain, domain_deprecated;
init_daemon_domain(md_ctrl)
allow md_ctrl ccci_device:chr_file rw_file_perms;
allow md_ctrl devpts:chr_file rw_file_perms;
allow md_ctrl muxreport_exec:file rx_file_perms;
allow md_ctrl self:capability dac_override;
set_prop(md_ctrl,vold_encryption_type_prop);
+23
View File
@@ -0,0 +1,23 @@
# nvram
allow mediacodec nvdata_file:dir rw_dir_perms;
allow mediacodec nvdata_file:file create_file_perms;
allow mediacodec ccci_device:chr_file rw_file_perms;
# video codec
allow mediacodec Vcodec_device:chr_file rw_file_perms;
allow mediacodec devmap_device:chr_file r_file_perms;
allow mediacodec devmap_device:chr_file { ioctl };
allow mediacodec mtk_smi_device:chr_file { ioctl read open };
allow mediacodec proc:file { open read ioctl };
allow mediacodec sysfs:file { open read write };
allow mediacodec sysfs_devinfo:file { open read write };
allow mediacodec proc_meminfo:file { open read getattr };
allow mediacodec property_socket:sock_file write;
allow mediacodec init:unix_stream_socket connectto;
# M4U
allow mediacodec M4U_device_device:chr_file rw_file_perms;
# PQ
allow mediacodec pq_service:service_manager find;
+15
View File
@@ -0,0 +1,15 @@
# nvram
allow mediaserver nvdata_file:dir rw_dir_perms;
allow mediaserver nvdata_file:file create_file_perms;
allow mediaserver ccci_device:chr_file rw_file_perms;
# PQ
allow mediaserver pq_service:service_manager find;
allow mediaserver sysfs_devinfo:file r_file_perms;
allow mediaserver camera_device:chr_file { read write open ioctl };
allow mediaserver sysfs_boot_mode:file { read open };
allow mediaserver sysfs_ddr_type:file { read open };
allow mediaserver Vcodec_device:chr_file { read write open ioctl };
allow mediaserver mtk_smi_device:chr_file { read write open ioctl };
+7
View File
@@ -0,0 +1,7 @@
type memsicd3416x_exec, exec_type, file_type;
type memsicd3416x, domain, domain_deprecated;
init_daemon_domain(memsicd3416x)
allow memsicd3416x msensor_device:chr_file rw_file_perms;
allow memsicd3416x gsensor_device:chr_file rw_file_perms;
+47
View File
@@ -0,0 +1,47 @@
type meta_tst_exec, exec_type, file_type;
type meta_tst, domain, domain_deprecated;
init_daemon_domain(meta_tst)
allow meta_tst ccci_device:chr_file rw_file_perms;
allow meta_tst serial_device:chr_file rw_file_perms;
allow meta_tst mdlog_device:chr_file rw_file_perms;
allow meta_tst nvdata_file:dir create_dir_perms;
allow meta_tst nvdata_file:file create_file_perms;
allow meta_tst nvdata_device:blk_file rw_file_perms;
allow meta_tst nvram_device:blk_file rw_file_perms;
allow meta_tst proinfo_device:blk_file rw_file_perms;
allow meta_tst fm_device:chr_file { read write open ioctl };
allow meta_tst sysfs_gps_file:dir search;
allow meta_tst sysfs_gps_file:file rw_file_perms;
allow meta_tst gps_device:chr_file { read write open };
allow meta_tst agpsd_data_file:dir search;
allow meta_tst agpsd_data_file:sock_file write;
allow meta_tst gps_data_file:file create_file_perms;
allow meta_tst gps_data_file:dir rw_dir_perms;
allow meta_tst mnld_exec:file { execute read open };
allow meta_tst mnld_exec:file execute_no_trans;
allow meta_tst stpgps_device:chr_file { open read write ioctl };
allow meta_tst mnld_prop:property_service set;
allow meta_tst mnld_data_file:file create_file_perms;
allow meta_tst mnld_data_file:dir rw_dir_perms;
# For GPS
allow meta_tst port:tcp_socket { name_connect name_bind };
allow meta_tst self:tcp_socket { create connect setopt bind };
allow meta_tst self:tcp_socket { bind setopt listen accept read write };
allow meta_tst node:tcp_socket node_bind;
allow meta_tst sysfs:file write;
allow meta_tst powerctl_prop:property_service set;
unix_socket_connect(meta_tst, property, init)
allow meta_tst self:capability { net_raw chown fsetid sys_nice net_admin fowner dac_override sys_admin };
+4
View File
@@ -0,0 +1,4 @@
# Allow formatting userdata or cache partitions
allow mkfs block_device:dir search;
allow mkfs userdata_block_device:blk_file rw_file_perms;
allow mkfs cache_block_device:blk_file rw_file_perms;
+53
View File
@@ -0,0 +1,53 @@
type mnld_exec, exec_type, file_type;
type mnld, domain, domain_deprecated;
init_daemon_domain(mnld)
net_domain(mnld)
allow mnld gps_device:chr_file rw_file_perms;
allow mnld stpgps_device:chr_file rw_file_perms;
allow mnld gps_data_file:dir create_dir_perms;
allow mnld gps_data_file:file create_file_perms;
allow mnld agpsd_data_file:dir create_dir_perms;
allow mnld agpsd_data_file:sock_file create_file_perms;
allow mnld mtk_agpsd:unix_dgram_socket sendto;
allow mnld mnld_data_file:dir rw_dir_perms;
allow mnld mnld_data_file:sock_file create_file_perms;
allow mnld mnld_data_file:file create_file_perms;
allow mnld nvdata_file:dir rw_dir_perms;
allow mnld nvdata_file:file create_file_perms;
allow mnld nvdata_file:lnk_file r_file_perms;
allow mnld nvram_device:blk_file rw_file_perms;
allow mnld sysfs_gps_file:dir search;
allow mnld sysfs_gps_file:file rw_file_perms;
allow mnld mnld_prop:property_service set;
allow mnld property_socket:sock_file write;
allow mnld init:unix_stream_socket connectto;
allow mnld system_server:unix_dgram_socket { sendto write };
allow mnld fuse:dir create_dir_perms;
allow mnld fuse:file create_file_perms;
allow mnld storage_file:dir search;
allow mnld storage_file:lnk_file read;
allow mnld mdlog_device:chr_file { read write };
allow mnld block_device:dir search;
file_type_auto_trans(mnld,system_data_file,mnld_data_file);
file_type_auto_trans(mnld,apk_data_file,mnld_data_file);
allow mnld nvram_device:chr_file { read write open ioctl };
allow mnld mmc_device:blk_file { read write open };
allow mnld sysfs_boot_mode:file { read open };
allow mnld system_data_file:dir { remove_name };
allow mnld system_data_file:file { open };
+12
View File
@@ -0,0 +1,12 @@
type msensord_exec, exec_type, file_type;
type msensord, domain, domain_deprecated;
init_daemon_domain(msensord)
allow msensord msensord_daemon_sysfs:file r_file_perms;
allow msensord ctl_qmc6983d_prop:property_service set;
allow msensord ctl_mxg2320d_prop:property_service set;
allow msensord ctl_memsicd3416x_prop:property_service set;
unix_socket_connect(msensord, property, init)
+21
View File
@@ -0,0 +1,21 @@
type mtk_agpsd_exec, exec_type, file_type;
type mtk_agpsd, domain, domain_deprecated;
init_daemon_domain(mtk_agpsd)
net_domain(mtk_agpsd)
allow mtk_agpsd agpsd_data_file:dir create_dir_perms;
allow mtk_agpsd agpsd_data_file:sock_file create_file_perms;
allow mtk_agpsd gps_device:chr_file rw_file_perms;
allow mtk_agpsd self:udp_socket create;
allow mtk_agpsd storage_file:dir search;
allow mtk_agpsd storage_file:lnk_file read;
allow mtk_agpsd mnt_user_file:dir create_dir_perms;
allow mtk_agpsd mnt_user_file:lnk_file create_file_perms;
allow mtk_agpsd fuse:dir create_dir_perms;
allow mtk_agpsd fuse:file create_file_perms;
unix_socket_send(mtk_agpsd, mnld, mnld);
+10
View File
@@ -0,0 +1,10 @@
type mtkmal_exec, exec_type, file_type;
type mtkmal, domain, domain_deprecated;
init_daemon_domain(mtkmal)
allow mtkmal init:unix_stream_socket connectto;
allow mtkmal property_socket:sock_file write;
allow mtkmal mal_mfi_socket:sock_file write;
allow mtkmal self:capability { setuid setgid };
+13
View File
@@ -0,0 +1,13 @@
type muxreport_exec, exec_type, file_type;
type muxreport, domain, domain_deprecated;
init_daemon_domain(muxreport)
allow muxreport ccci_device:chr_file { read write ioctl open };
allow muxreport ril_mux_report_case_prop:property_service set;
allow muxreport init:unix_stream_socket connectto;
allow muxreport property_socket:sock_file write;
allow muxreport devpts:chr_file { read write getattr ioctl };
allow muxreport self:capability dac_override;
allow muxreport sysfs_ccci:dir search;
allow muxreport sysfs_ccci:file r_file_perms;
+7
View File
@@ -0,0 +1,7 @@
type mxg2320d_exec, exec_type, file_type;
type mxg2320d, domain, domain_deprecated;
init_daemon_domain(mxg2320d)
allow mxg2320d msensor_device:chr_file rw_file_perms;
allow mxg2320d gsensor_device:chr_file rw_file_perms;
+4
View File
@@ -0,0 +1,4 @@
# Wifi
allow netd wmtWifi_device:chr_file w_file_perms;
allow netd self:capability sys_module;
+34
View File
@@ -0,0 +1,34 @@
type nvram_daemon_exec, exec_type, file_type;
type nvram_daemon, domain, domain_deprecated;
init_daemon_domain(nvram_daemon)
allow nvram_daemon self:capability { fowner dac_override dac_read_search chown fsetid };
allow nvram_daemon nvram_device:blk_file rw_file_perms;
allow nvram_daemon nvdata_device:blk_file rw_file_perms;
allow nvram_daemon nvdata_file:dir create_dir_perms;
allow nvram_daemon nvdata_file:file create_file_perms;
allow nvram_daemon nvdata_file:lnk_file r_file_perms;
allow nvram_daemon shell_exec:file { read execute open execute_no_trans getattr };
allow nvram_daemon als_ps_device:chr_file r_file_perms;
allow nvram_daemon mtk-adc-cali_device:chr_file rw_file_perms;
allow nvram_daemon gsensor_device:chr_file r_file_perms;
allow nvram_daemon msensor_device:chr_file r_file_perms;
allow nvram_daemon gyroscope_device:chr_file r_file_perms;
allow nvram_daemon toolbox_exec:file rx_file_perms;
allow nvram_daemon proinfo_device:blk_file rw_file_perms;
allow nvram_daemon nvram_prop:property_service set;
allow nvram_daemon wmt_prop:property_service set;
allow nvram_daemon block_device:dir search;
unix_socket_connect(nvram_daemon, property, init)
allow nvram_daemon sysfs_boot_mode:file { read open };
allow nvram_daemon sysfs:file { write };
allow nvram_daemon system_prop:property_service { set };
allow nvram_daemon nvram_device:chr_file { read write open };
allow nvram_daemon mmc_device:blk_file { read write open };
allow nvram_daemon proinfo_device:chr_file { read write open ioctl };
+11
View File
@@ -0,0 +1,11 @@
# Fingerprint
allow platform_app esfp0_device:chr_file rw_file_perms;
allow platform_app esfp0_device:chr_file rw_file_perms;
allow platform_app etsd_service:service_manager find;
allow platform_app etsd:binder { call transfer };
# Guiext
allow platform_app guiext-server_service:service_manager find;
# PQ
allow platform_app pq_service:service_manager find;
+15
View File
@@ -0,0 +1,15 @@
type pq_exec, exec_type, file_type;
type pq, domain, domain_deprecated;
init_daemon_domain(pq)
binder_use(pq)
binder_call(pq, binderservicedomain)
binder_service(pq)
allow pq pq_service:service_manager add;
unix_socket_connect(pq, property, init)
allow pq pq_conf_prop:property_service set;
allow pq graphics_device:chr_file { open read ioctl };
+7
View File
@@ -0,0 +1,7 @@
# Guiext
allow priv_app guiext-server_service:service_manager find;
# PQ
allow priv_app pq_service:service_manager find;
allow priv_app device:dir { read open };
+18
View File
@@ -0,0 +1,18 @@
type wmt_prop, property_type, mtk_property_type;
type mtk_md_prop, property_type, mtk_property_type;
type mnld_prop, property_type, mtk_property_type;
type ctl_qmc6983d_prop, property_type;
type ctl_mxg2320d_prop, property_type;
type ctl_memsicd3416x_prop, property_type;
type ctl_ccci_fsd_prop, property_type;
type ctl_gsm0710muxd_prop, property_type;
type ctl_gsm0710muxdmd2_prop, property_type;
type ctl_muxreport-daemon_prop, property_type;
type nvram_prop, property_type, mtk_property_type;
type pq_conf_prop, property_type, mtk_property_type;
type audiohal_prop, property_type, mtk_property_type;
type ril_mux_report_case_prop, property_type, mtk_property_type;
type ril_msim_power_prop, property_type, mtk_property_type;
type ril_sim_inserted_status, property_type, mtk_property_type;
type serial_number_prop, property_type, mtk_property_type;
type vold_encryption_type_prop, property_type;
+26
View File
@@ -0,0 +1,26 @@
service.wcn u:object_r:wmt_prop:s0
persist.mtk.wcn u:object_r:wmt_prop:s0
wlan.mtk.wifi.5g u:object_r:wmt_prop:s0
mtk.md u:object_r:mtk_md_prop:s0
gps.clock.type u:object_r:mnld_prop:s0
gps.gps.version u:object_r:mnld_prop:s0
ctl.qmc6983d u:object_r:ctl_qmc6983d_prop:s0
ctl.mxg2320d u:object_r:ctl_mxg2320d_prop:s0
ctl.memsicd3416x u:object_r:ctl_memsicd3416x_prop:s0
ctl.ccci_fsd u:object_r:ctl_ccci_fsd_prop:s0
ctl.gsm0710muxd u:object_r:ctl_gsm0710muxd_prop:s0
ctl.gsm0710muxd-s u:object_r:ctl_gsm0710muxd_prop:s0
ctl.gsm0710muxd-d u:object_r:ctl_gsm0710muxd_prop:s0
ctl.gsm0710muxdmd2 u:object_r:ctl_gsm0710muxdmd2_prop:s0
ctl.muxreport-daemon u:object_r:ctl_muxreport-daemon_prop:s0
service.nvram_init u:object_r:nvram_prop:s0
persist.sys.pq u:object_r:pq_conf_prop:s0
af. u:object_r:audiohal_prop:s0
persist.af. u:object_r:audiohal_prop:s0
ril.mux.report.case u:object_r:ril_mux_report_case_prop:s0
sys.msim.power.slot0 u:object_r:ril_msim_power_prop:s0
sys.msim.power.slot1 u:object_r:ril_msim_power_prop:s0
sys.sim_inserted_status_0 u:object_r:ril_sim_inserted_status:s0
sys.sim_inserted_status_1 u:object_r:ril_sim_inserted_status:s0
ro.serialno u:object_r:serial_number_prop:s0
vold.encryption.type u:object_r:vold_encryption_type_prop:s0
+7
View File
@@ -0,0 +1,7 @@
type qmc6983d_exec, exec_type, file_type;
type qmc6983d, domain, domain_deprecated;
init_daemon_domain(qmc6983d)
allow qmc6983d msensor_device:chr_file rw_file_perms;
allow qmc6983d gsensor_device:chr_file rw_file_perms;
+4
View File
@@ -0,0 +1,4 @@
unix_socket_connect(radio, rild, ril-daemon-mtk)
allow radio ril_mux_report_case_prop:property_service set;
allow radio ril_msim_power_prop:property_service set;
+33
View File
@@ -0,0 +1,33 @@
type ril-daemon-mtk_exec, exec_type, file_type;
type ril-daemon-mtk, domain, domain_deprecated;
init_daemon_domain(ril-daemon-mtk)
net_domain(ril-daemon-mtk)
allow ril-daemon-mtk ccci_device:chr_file rw_file_perms;
allow ril-daemon-mtk devpts:chr_file rw_file_perms;
allow ril-daemon-mtk self:capability setuid;
allow ril-daemon-mtk sysfs_wake_lock:file rw_file_perms;
allow ril-daemon-mtk sysfs_ccci:dir search;
allow ril-daemon-mtk sysfs_ccci:file r_file_perms;
allow ril-daemon-mtk block_device:dir search;
allow ril-daemon-mtk para_block_device:blk_file rw_file_perms;
allow ril-daemon-mtk self:udp_socket create_socket_perms;
allow ril-daemon-mtk self:capability { setuid net_admin net_raw };
allow ril-daemon-mtk mal_mfi_socket:sock_file { w_file_perms };
allow ril-daemon-mtk mtkmal:unix_stream_socket connectto;
allow ril-daemon-mtk radio_device:dir search;
allow ril-daemon-mtk radio_prop:property_service set;
allow ril-daemon-mtk ctl_muxreport-daemon_prop:property_service set;
allow ril-daemon-mtk ril_mux_report_case_prop:property_service set;
allow ril-daemon-mtk ril_sim_inserted_status:property_service set;
allow ril-daemon-mtk serial_number_prop:property_service set;
unix_socket_connect(ril-daemon-mtk, property, init)
# Access to wake locks
wakelock_use(ril-daemon-mtk)
+5
View File
@@ -0,0 +1,5 @@
type pq_service, service_manager_type;
type guiext-server_service, service_manager_type;
type nvram_agent_service, service_manager_type;
type etsd_service, service_manager_type;
#type edge_gesture_service, system_api_service, system_server_service, service_manager_type;
+5
View File
@@ -0,0 +1,5 @@
PQ u:object_r:pq_service:s0
GuiExtService u:object_r:guiext-server_service:s0
NvRAMAgent u:object_r:nvram_agent_service:s0
egistec.ets.service.daemon u:object_r:etsd_service:s0
+3
View File
@@ -0,0 +1,3 @@
allow servicemanager init:dir { search };
allow servicemanager init:file { read open };
allow servicemanager init:process { getattr };
+6
View File
@@ -0,0 +1,6 @@
type spm_loader_exec, exec_type, file_type;
type spm_loader, domain, domain_deprecated;
init_daemon_domain(spm_loader)
allow spm_loader spm_device:chr_file r_file_perms;
+9
View File
@@ -0,0 +1,9 @@
allow surfaceflinger pq_service:service_manager find;
allow surfaceflinger guiext-server_service:service_manager { find add };
allow surfaceflinger debug_prop:property_service set;
allow surfaceflinger mtk_smi_device:chr_file { read write open ioctl };
allow surfaceflinger gpu_device:chr_file rw_file_perms;
+10
View File
@@ -0,0 +1,10 @@
allow system_app fm_device:chr_file rw_file_perms;
allow system_app gyro_orientation_sysfs:file rw_file_perms;
allow system_app fast_charge_sysfs:file rw_file_perms;
allow system_app smartwake_sysfs:file rw_file_perms;
allow system_app perf_control_sysfs:file rw_file_perms;
allow system_app em_svr:unix_stream_socket connectto;
allow system_app radio_data_file:dir { getattr };
+34
View File
@@ -0,0 +1,34 @@
# GPS
allow system_server mnld:unix_dgram_socket sendto;
allow system_server mnld_data_file:dir w_dir_perms;
allow system_server mnld_data_file:sock_file create_file_perms;
allow system_server mnld_data_file:file create_file_perms;
# Persist
allow system_server protect_s_data_file:dir r_dir_perms;
# Sensors
allow system_server hwmsensor_device:chr_file r_file_perms;
# Wifi
allow system_server wmtWifi_device:chr_file w_file_perms;
# RGB Display Color
allow system_server display_color_sysfs:file rw_file_perms;
# Fast Charge
allow system_server fast_charge_sysfs:file rw_file_perms;
# Smart Wake
allow system_server smartwake_sysfs:file rw_file_perms;
# IR
allow system_server irtx_device:chr_file rw_file_perms;
# External storage
allow system_server storage_stub_file:dir { getattr };
# Guiext
allow system_server guiext-server_service:service_manager find;
allow system_server unlabeled:file { unlink };
+4
View File
@@ -0,0 +1,4 @@
type terservice_exec, exec_type, file_type;
type terservice, domain, domain_deprecated;
init_daemon_domain(terservice)
+10
View File
@@ -0,0 +1,10 @@
type thermal_exec, exec_type, file_type;
type thermal, domain, domain_deprecated;
init_daemon_domain(thermal)
allow thermal proc_thermal:dir search;
allow thermal proc_thermal:file rw_file_perms;
allow thermal rild_socket:sock_file w_file_perms;
allow thermal ril-daemon-mtk:unix_stream_socket connectto;
+14
View File
@@ -0,0 +1,14 @@
type thermal_manager_exec, exec_type, file_type;
type thermal_manager, domain, domain_deprecated;
init_daemon_domain(thermal_manager)
allow thermal_manager self:capability { fowner fsetid chown fsetid dac_override };
allow thermal_manager proc_thermal:dir search;
allow thermal_manager proc_thermal:file rw_file_perms;
allow thermal_manager proc_mtkcooler:dir search;
allow thermal_manager proc_mtkcooler:file rw_file_perms;
allow thermal_manager proc_mtktz:dir search;
allow thermal_manager proc_mtktz:file rw_file_perms;
allow thermal_manager thermal_manager_data_file:dir rw_dir_perms;
allow thermal_manager thermal_manager_data_file:file create_file_perms;
+7
View File
@@ -0,0 +1,7 @@
type thermald_exec, exec_type, file_type;
type thermald, domain, domain_deprecated;
init_daemon_domain(thermald)
allow thermald proc_thermal:dir search;
allow thermald proc_thermal:file rw_file_perms;
+6
View File
@@ -0,0 +1,6 @@
type thermalloadalgo_exec, exec_type, file_type;
type thermalloadalgo, domain, domain_deprecated;
init_daemon_domain(thermalloadalgo)
allow thermalloadalgo thermalloadalgo:netlink_socket { create bind write read };
+1
View File
@@ -0,0 +1 @@
allow ueventd sysfs_gps_file:file w_file_perms;
+6
View File
@@ -0,0 +1,6 @@
# PQ
allow untrusted_app pq_service:service_manager find;
# These are safe for an untrusted_app -- they are the external SD card
allow untrusted_app fuseblk:dir search;
allow untrusted_app fuseblk:file { getattr read };
+22
View File
@@ -0,0 +1,22 @@
allow vold nvdata_device:blk_file rw_file_perms;
allow vold cache_block_device:blk_file rw_file_perms;
allow vold protect1_device:blk_file rw_file_perms;
allow vold protect2_device:blk_file rw_file_perms;
allow vold nvdata_file:dir create_dir_perms;
allow vold nvdata_file:file create_file_perms;
allow vold protect_f_data_file:dir create_dir_perms;
allow vold protect_f_data_file:file create_file_perms;
allow vold protect_s_data_file:dir create_dir_perms;
allow vold protect_s_data_file:file create_file_perms;
allow vold proc_mtkcooler:dir r_dir_perms;
allow vold proc_mtktz:dir r_dir_perms;
# Allow vold to access fuse for fuse-based fs
allow vold fuse:chr_file rw_file_perms;
# External storage
allow vold storage_stub_file:dir { rw_file_perms search add_name };
allow vold mnt_media_rw_stub_file:dir r_dir_perms;
allow vold mkfs_exec:file { execute read open getattr execute_no_trans };
+9
View File
@@ -0,0 +1,9 @@
type wifi2agps_exec, exec_type, file_type;
type wifi2agps, domain, domain_deprecated;
init_daemon_domain(wifi2agps)
allow wifi2agps agpsd_data_file:sock_file write;
allow wifi2agps agpsd_data_file:dir search;
allow wifi2agps mtk_agpsd:unix_dgram_socket sendto;
allow wifi2agps self:netlink_socket create_socket_perms;
+13
View File
@@ -0,0 +1,13 @@
type wmt_loader_exec, exec_type, file_type;
type wmt_loader, domain, domain_deprecated;
init_daemon_domain(wmt_loader)
allow wmt_loader wmtdetect_device:chr_file create_file_perms;
allow wmt_loader self:capability { chown dac_override };
allow wmt_loader proc_wmt:file setattr;
allow wmt_loader wmt_prop:property_service set;
unix_socket_connect(wmt_loader, property, init)
allow wmt_loader stpwmt_device:chr_file { read write open ioctl };
+1
View File
@@ -0,0 +1 @@
allow zygote sysfs_devinfo:file r_file_perms;
+49
View File
@@ -0,0 +1,49 @@
# Copyright (C) 2011 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.
LOCAL_PATH := $(call my-dir)
# Make the HAL library
# ============================================================
include $(CLEAR_VARS)
LOCAL_REQUIRED_MODULES :=
LOCAL_CFLAGS += -Wno-unused-parameter -Wno-int-to-pointer-cast
LOCAL_CFLAGS += -Wno-maybe-uninitialized -Wno-parentheses
LOCAL_CPPFLAGS += -Wno-conversion-null
ifeq ($(MTK_TC7_FEATURE), yes)
LOCAL_CFLAGS += -DCONFIG_PNO_SUPPORT
endif
LOCAL_C_INCLUDES += \
external/libnl/include \
$(call include-path-for, libhardware_legacy)/hardware_legacy \
external/wpa_supplicant_8/src/drivers
LOCAL_SRC_FILES := \
wifi_hal.cpp \
rtt.cpp \
common.cpp \
cpp_bindings.cpp \
gscan.cpp \
wifi_offload.cpp
LOCAL_MODULE := libwifi-hal-mt66xx
LOCAL_PROPRIETARY_MODULE := true
LOCAL_MODULE_OWNER := mtk
include $(BUILD_STATIC_LIBRARY)
+24
View File
@@ -0,0 +1,24 @@
Copyright (c) <YEAR>, <OWNER>
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
following conditions are met:
* Redistributions of source code must retain the above copyright notice, this list of conditions and the following
disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the
following disclaimer in the documentation and/or other materials provided with the distribution.
* Neither the name of the <ORGANIZATION> nor the names of its contributors may be used to endorse or promote
products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+27
View File
@@ -0,0 +1,27 @@
This directory contains WIFI_HAL interface and function
WHAT IT DOES?
=============
It provide another method for WIFI HAL to access WIFI driver which is different from wpa_supplicant.
HOW IT WAS BUILT?
==================
It needs the following libs from AOSP:
and the following libs from MediaTek:
All source/dependency modules of this module are already put in
'hardware/mediatek/wlan/wifi_hal' folder.
HOW TO USE IT?
==============
Files in this directory is used for WIFI HAL interface and function
+245
View File
@@ -0,0 +1,245 @@
#include <stdint.h>
#include <fcntl.h>
#include <sys/socket.h>
#include <netlink/genl/genl.h>
#include <netlink/genl/family.h>
#include <netlink/genl/ctrl.h>
#include <linux/rtnetlink.h>
#include <netpacket/packet.h>
#include <linux/filter.h>
#include <linux/errqueue.h>
#include <linux/pkt_sched.h>
#include <netlink/object-api.h>
#include <netlink/netlink.h>
#include <netlink/socket.h>
#include <netlink/handlers.h>
#include "wifi_hal.h"
#include "common.h"
#include "cpp_bindings.h"
interface_info *getIfaceInfo(wifi_interface_handle handle)
{
return (interface_info *)handle;
}
wifi_handle getWifiHandle(wifi_interface_handle handle)
{
return getIfaceInfo(handle)->handle;
}
hal_info *getHalInfo(wifi_handle handle)
{
return (hal_info *)handle;
}
hal_info *getHalInfo(wifi_interface_handle handle)
{
return getHalInfo(getWifiHandle(handle));
}
wifi_handle getWifiHandle(hal_info *info)
{
return (wifi_handle)info;
}
wifi_interface_handle getIfaceHandle(interface_info *info)
{
return (wifi_interface_handle)info;
}
wifi_error wifi_register_handler(wifi_handle handle, int cmd, nl_recvmsg_msg_cb_t func, void *arg)
{
hal_info *info = (hal_info *)handle;
/* TODO: check for multiple handlers? */
pthread_mutex_lock(&info->cb_lock);
wifi_error result = WIFI_ERROR_OUT_OF_MEMORY;
if (info->num_event_cb < info->alloc_event_cb) {
info->event_cb[info->num_event_cb].nl_cmd = cmd;
info->event_cb[info->num_event_cb].vendor_id = 0;
info->event_cb[info->num_event_cb].vendor_subcmd = 0;
info->event_cb[info->num_event_cb].cb_func = func;
info->event_cb[info->num_event_cb].cb_arg = arg;
ALOGV("Successfully added event handler %p:%p for command %d at %d",
arg, func, cmd, info->num_event_cb);
info->num_event_cb++;
result = WIFI_SUCCESS;
}
pthread_mutex_unlock(&info->cb_lock);
return result;
}
wifi_error wifi_register_vendor_handler(wifi_handle handle,
uint32_t id, int subcmd, nl_recvmsg_msg_cb_t func, void *arg)
{
hal_info *info = (hal_info *)handle;
/* TODO: check for multiple handlers? */
pthread_mutex_lock(&info->cb_lock);
wifi_error result = WIFI_ERROR_OUT_OF_MEMORY;
if (info->num_event_cb < info->alloc_event_cb) {
info->event_cb[info->num_event_cb].nl_cmd = NL80211_CMD_VENDOR;
info->event_cb[info->num_event_cb].vendor_id = id;
info->event_cb[info->num_event_cb].vendor_subcmd = subcmd;
info->event_cb[info->num_event_cb].cb_func = func;
info->event_cb[info->num_event_cb].cb_arg = arg;
ALOGV("Added event handler %p:%p for vendor 0x%0x and subcmd 0x%0x at %d",
arg, func, id, subcmd, info->num_event_cb);
info->num_event_cb++;
result = WIFI_SUCCESS;
}
pthread_mutex_unlock(&info->cb_lock);
return result;
}
void wifi_unregister_handler(wifi_handle handle, int cmd)
{
hal_info *info = (hal_info *)handle;
if (cmd == NL80211_CMD_VENDOR) {
ALOGE("Must use wifi_unregister_vendor_handler to remove vendor handlers");
return;
}
pthread_mutex_lock(&info->cb_lock);
for (int i = 0; i < info->num_event_cb; i++) {
if (info->event_cb[i].nl_cmd == cmd) {
ALOGV("Successfully removed event handler %p:%p for cmd = 0x%0x from %d",
info->event_cb[i].cb_arg, info->event_cb[i].cb_func, cmd, i);
memmove(&info->event_cb[i], &info->event_cb[i+1],
(info->num_event_cb - i - 1) * sizeof(cb_info));
info->num_event_cb--;
break;
}
}
pthread_mutex_unlock(&info->cb_lock);
}
void wifi_unregister_vendor_handler(wifi_handle handle, uint32_t id, int subcmd)
{
hal_info *info = (hal_info *)handle;
pthread_mutex_lock(&info->cb_lock);
for (int i = 0; i < info->num_event_cb; i++) {
if (info->event_cb[i].nl_cmd == NL80211_CMD_VENDOR
&& info->event_cb[i].vendor_id == id
&& info->event_cb[i].vendor_subcmd == subcmd) {
ALOGV("Successfully removed event handler %p:%p for vendor 0x%0x, subcmd 0x%0x from %d",
info->event_cb[i].cb_arg, info->event_cb[i].cb_func, id, subcmd, i);
memmove(&info->event_cb[i], &info->event_cb[i+1],
(info->num_event_cb - i - 1) * sizeof(cb_info));
info->num_event_cb--;
break;
}
}
pthread_mutex_unlock(&info->cb_lock);
}
wifi_error wifi_register_cmd(wifi_handle handle, int id, WifiCommand *cmd)
{
hal_info *info = (hal_info *)handle;
ALOGV("registering command %d", id);
wifi_error result = WIFI_ERROR_OUT_OF_MEMORY;
if (info->num_cmd < info->alloc_cmd) {
info->cmd[info->num_cmd].id = id;
info->cmd[info->num_cmd].cmd = cmd;
ALOGV("Successfully added command %d: %p at %d", id, cmd, info->num_cmd);
info->num_cmd++;
result = WIFI_SUCCESS;
} else {
ALOGE("Failed to add command %d: %p at %d, reached max limit %d",
id, cmd, info->num_cmd, info->alloc_cmd);
}
return result;
}
WifiCommand *wifi_unregister_cmd(wifi_handle handle, int id)
{
hal_info *info = (hal_info *)handle;
ALOGV("un-registering command %d", id);
WifiCommand *cmd = NULL;
for (int i = 0; i < info->num_cmd; i++) {
if (info->cmd[i].id == id) {
cmd = info->cmd[i].cmd;
memmove(&info->cmd[i], &info->cmd[i+1], (info->num_cmd - i - 1) * sizeof(cmd_info));
info->num_cmd--;
ALOGV("Successfully removed command %d: %p from %d", id, cmd, i);
break;
}
}
if (!cmd) {
ALOGI("Failed to remove command %d: %p", id, cmd);
}
return cmd;
}
WifiCommand *wifi_get_cmd(wifi_handle handle, int id)
{
hal_info *info = (hal_info *)handle;
WifiCommand *cmd = NULL;
for (int i = 0; i < info->num_cmd; i++) {
if (info->cmd[i].id == id) {
cmd = info->cmd[i].cmd;
break;
}
}
return cmd;
}
void wifi_unregister_cmd(wifi_handle handle, WifiCommand *cmd)
{
hal_info *info = (hal_info *)handle;
for (int i = 0; i < info->num_cmd; i++) {
if (info->cmd[i].cmd == cmd) {
int id = info->cmd[i].id;
memmove(&info->cmd[i], &info->cmd[i+1], (info->num_cmd - i - 1) * sizeof(cmd_info));
info->num_cmd--;
ALOGV("Successfully removed command %d: %p from %d", id, cmd, i);
break;
}
}
}
wifi_error wifi_cancel_cmd(wifi_request_id id, wifi_interface_handle iface)
{
wifi_handle handle = getWifiHandle(iface);
WifiCommand *cmd = wifi_unregister_cmd(handle, id);
ALOGV("Cancel WifiCommand = %p", cmd);
if (cmd) {
cmd->cancel();
cmd->releaseRef();
return WIFI_SUCCESS;
}
return WIFI_ERROR_INVALID_ARGS;
}
+260
View File
@@ -0,0 +1,260 @@
#include "wifi_hal.h"
#ifndef __WIFI_HAL_COMMON_H__
#define __WIFI_HAL_COMMON_H__
#define LOG_TAG "WifiHAL"
#include <utils/Log.h>
#include "nl80211_copy.h"
#include "sync.h"
#define SOCKET_BUFFER_SIZE (32768U)
#define RECV_BUF_SIZE (4096)
#define DEFAULT_EVENT_CB_SIZE (64)
#define DEFAULT_CMD_SIZE (64)
#define DOT11_OUI_LEN 3
#define DOT11_MAX_SSID_LEN 32
#define MAX_PROBE_RESP_IE_LEN 2048
/*
Vendor OUI - This is a unique identifier that identifies organization. Lets
code Android specific functions with Google OUI; although vendors can do more
with their own OUI's as well.
*/
const uint32_t GOOGLE_OUI = 0x001A11;
/* TODO: define vendor OUI here */
#ifndef MAC2STR
#define MAC2STR(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
#define MACSTR "%02x:%02x:%02x:%02x:%02x:%02x"
#endif
/*
This enum defines ranges for various commands; commands themselves
can be defined in respective feature headers; i.e. find gscan command
definitions in gscan.cpp
*/
typedef enum {
/* Don't use 0 as a valid subcommand */
ANDROID_NL80211_SUBCMD_UNSPECIFIED,
/* Define all vendor startup commands between 0x0 and 0x0FFF */
ANDROID_NL80211_SUBCMD_WIFI_RANGE_START = 0x0001,
ANDROID_NL80211_SUBCMD_WIFI_RANGE_END = 0x0FFF,
/* Define all GScan related commands between 0x1000 and 0x10FF */
ANDROID_NL80211_SUBCMD_GSCAN_RANGE_START = 0x1000,
ANDROID_NL80211_SUBCMD_GSCAN_RANGE_END = 0x10FF,
/* Define all RTT related commands between 0x1100 and 0x11FF */
ANDROID_NL80211_SUBCMD_RTT_RANGE_START = 0x1100,
ANDROID_NL80211_SUBCMD_RTT_RANGE_END = 0x11FF,
ANDROID_NL80211_SUBCMD_LSTATS_RANGE_START = 0x1200,
ANDROID_NL80211_SUBCMD_LSTATS_RANGE_END = 0x12FF,
/* Define all Logger related commands between 0x1400 and 0x14FF */
ANDROID_NL80211_SUBCMD_DEBUG_RANGE_START = 0x1400,
ANDROID_NL80211_SUBCMD_DEBUG_RANGE_END = 0x14FF,
/* Define all wifi offload related commands between 0x1600 and 0x16FF */
ANDROID_NL80211_SUBCMD_WIFI_OFFLOAD_RANGE_START = 0x1600,
ANDROID_NL80211_SUBCMD_WIFI_OFFLOAD_RANGE_END = 0x16FF,
/* This is reserved for future usage */
} ANDROID_VENDOR_SUB_COMMAND;
typedef enum {
WIFI_SUBCMD_GET_CHANNEL_LIST = ANDROID_NL80211_SUBCMD_WIFI_RANGE_START,
WIFI_SUBCMD_GET_FEATURE_SET, /* 0x0002 */
WIFI_SUBCMD_GET_FEATURE_SET_MATRIX, /* 0x0003 */
WIFI_SUBCMD_SET_PNO_RANDOM_MAC_OUI, /* 0x0004 */
WIFI_SUBCMD_NODFS_SET, /* 0x0005 */
WIFI_SUBCMD_SET_COUNTRY_CODE, /* 0x0006 */
WIFI_SUBCMD_SET_RSSI_MONITOR, /* 0x0007 */
/* Add more sub commands here */
} WIFI_SUB_COMMAND;
typedef enum {
GSCAN_SUBCMD_GET_CAPABILITIES = ANDROID_NL80211_SUBCMD_GSCAN_RANGE_START,
GSCAN_SUBCMD_SET_CONFIG, /* 0x1001 */
GSCAN_SUBCMD_SET_SCAN_CONFIG, /* 0x1002 */
GSCAN_SUBCMD_ENABLE_GSCAN, /* 0x1003 */
GSCAN_SUBCMD_GET_SCAN_RESULTS, /* 0x1004 */
GSCAN_SUBCMD_SCAN_RESULTS, /* 0x1005 */
GSCAN_SUBCMD_SET_HOTLIST, /* 0x1006 */
GSCAN_SUBCMD_SET_SIGNIFICANT_CHANGE_CONFIG, /* 0x1007 */
GSCAN_SUBCMD_ENABLE_FULL_SCAN_RESULTS, /* 0x1008 */
GSCAN_SUBCMD_SET_EPNO_SSID = 0x100F, /* 0x100F */
GSCAN_SUBCMD_SET_SSID_WHITE_LIST, /* 0x1010 */
GSCAN_SUBCMD_SET_ROAM_PARAMS, /* 0x1011 */
GSCAN_SUBCMD_ENABLE_LAZY_ROAM, /* 0x1012 */
GSCAN_SUBCMD_SET_BSSID_PREF, /* 0x1013 */
GSCAN_SUBCMD_SET_BSSID_BLACKLIST, /* 0x1014 */
GSCAN_SUBCMD_ANQPO_CONFIG, /* 0x1015 */
/* Add more sub commands here */
} GSCAN_SUB_COMMAND;
typedef enum {
WIFI_ATTRIBUTE_BAND = 1,
WIFI_ATTRIBUTE_NUM_CHANNELS,
WIFI_ATTRIBUTE_CHANNEL_LIST,
WIFI_ATTRIBUTE_NUM_FEATURE_SET,
WIFI_ATTRIBUTE_FEATURE_SET,
WIFI_ATTRIBUTE_PNO_RANDOM_MAC_OUI,
WIFI_ATTRIBUTE_NODFS_VALUE,
WIFI_ATTRIBUTE_COUNTRY_CODE,
WIFI_ATTRIBUTE_MAX_RSSI,
WIFI_ATTRIBUTE_MIN_RSSI,
WIFI_ATTRIBUTE_RSSI_MONITOR_START,
} WIFI_ATTRIBUTE;
typedef enum {
GSCAN_EVENT_SIGNIFICANT_CHANGE_RESULTS,
GSCAN_EVENT_HOTLIST_RESULTS_FOUND,
GSCAN_EVENT_SCAN_RESULTS_AVAILABLE,
GSCAN_EVENT_FULL_SCAN_RESULTS,
RTT_EVENT_COMPLETE,
GSCAN_EVENT_COMPLETE_SCAN,
GSCAN_EVENT_HOTLIST_RESULTS_LOST,
WIFI_EVENT_RSSI_MONITOR,
GSCAN_EVENT_EPNO_EVENT,
GSCAN_EVENT_ANQPO_HOTSPOT_MATCH,
} WIFI_VENDOR_EVENT;
typedef void (*wifi_internal_event_handler) (wifi_handle handle, int events);
class WifiCommand;
typedef struct {
int nl_cmd;
uint32_t vendor_id;
int vendor_subcmd;
nl_recvmsg_msg_cb_t cb_func;
void *cb_arg;
} cb_info;
typedef struct {
wifi_request_id id;
WifiCommand *cmd;
} cmd_info;
typedef struct {
wifi_handle handle; // handle to wifi data
char name[8+1]; // interface name + trailing null
int id; // id to use when talking to driver
} interface_info;
typedef struct {
struct nl_sock *cmd_sock; // command socket object
struct nl_sock *event_sock; // event socket object
int nl80211_family_id; // family id for 80211 driver
int cleanup_socks[2]; // sockets used to implement wifi_cleanup
bool in_event_loop; // Indicates that event loop is active
bool clean_up; // Indication to exit since cleanup has started
wifi_internal_event_handler event_handler; // default event handler
wifi_cleaned_up_handler cleaned_up_handler; // socket cleaned up handler
cb_info *event_cb; // event callbacks
int num_event_cb; // number of event callbacks
int alloc_event_cb; // number of allocated callback objects
pthread_mutex_t cb_lock; // mutex for the event_cb access
cmd_info *cmd; // Outstanding commands
int num_cmd; // number of commands
int alloc_cmd; // number of commands allocated
interface_info **interfaces; // array of interfaces
int num_interfaces; // number of interfaces
// add other details
} hal_info;
#define PNO_SSID_FOUND 0x1
#define PNO_SSID_LOST 0x2
typedef struct wifi_pno_result {
unsigned char ssid[DOT11_MAX_SSID_LEN];
unsigned char ssid_len;
signed char rssi;
u16 channel;
u16 flags;
mac_addr bssid;
} wifi_pno_result_t;
typedef struct wifi_gscan_result {
u64 ts; // Time of discovery
u8 ssid[DOT11_MAX_SSID_LEN+1]; // null terminated
mac_addr bssid; // BSSID
u32 channel; // channel frequency in MHz
s32 rssi; // in db
u64 rtt; // in nanoseconds
u64 rtt_sd; // standard deviation in rtt
u16 beacon_period; // units are Kusec
u16 capability; // Capability information
u32 ie_length;
char ie_data[1];
} wifi_gscan_result_t;
typedef struct wifi_gscan_full_result {
wifi_gscan_result_t fixed;
u32 scan_ch_bucket; // scan chbucket bitmask
u32 ie_length; // byte length of Information Elements
u8 ie_data[1]; // IE data to follow
} wifi_gscan_full_result_t;
wifi_error wifi_register_handler(wifi_handle handle, int cmd, nl_recvmsg_msg_cb_t func, void *arg);
wifi_error wifi_register_vendor_handler(wifi_handle handle,
uint32_t id, int subcmd, nl_recvmsg_msg_cb_t func, void *arg);
void wifi_unregister_handler(wifi_handle handle, int cmd);
void wifi_unregister_vendor_handler(wifi_handle handle, uint32_t id, int subcmd);
wifi_error wifi_register_cmd(wifi_handle handle, int id, WifiCommand *cmd);
WifiCommand *wifi_unregister_cmd(wifi_handle handle, int id);
WifiCommand *wifi_get_cmd(wifi_handle handle, int id);
void wifi_unregister_cmd(wifi_handle handle, WifiCommand *cmd);
interface_info *getIfaceInfo(wifi_interface_handle);
wifi_handle getWifiHandle(wifi_interface_handle handle);
hal_info *getHalInfo(wifi_handle handle);
hal_info *getHalInfo(wifi_interface_handle handle);
wifi_handle getWifiHandle(hal_info *info);
wifi_interface_handle getIfaceHandle(interface_info *info);
wifi_error wifi_cancel_cmd(wifi_request_id id, wifi_interface_handle iface);
// some common macros
#define min(x, y) ((x) < (y) ? (x) : (y))
#define max(x, y) ((x) > (y) ? (x) : (y))
#define NULL_CHECK_RETURN(ptr, str, ret) \
do { \
if (!(ptr)) { \
ALOGE("%s(): null pointer - #ptr (%s)\n", __FUNCTION__, str); \
return ret; \
} \
} while (0)
#endif

Some files were not shown because too many files have changed in this diff Show More