Compare commits
32 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| dbc1218b1e | |||
| cd422c7335 | |||
| 887c8d259f | |||
| b42993b55e | |||
| c7fd02a206 | |||
| 28a5a66722 | |||
| acc2f78690 | |||
| b5b1d38eeb | |||
| 3927aa5245 | |||
| 1461bbf376 | |||
| b474a8886d | |||
| f42d100fc8 | |||
| 4fe0995a91 | |||
| 47bedcc2a3 | |||
| c95336cd0c | |||
| ce6ecac911 | |||
| b0f2203451 | |||
| 5355d826f9 | |||
| 6314ea8ee6 | |||
| e6ae002eb0 | |||
| 3f1d915dbb | |||
| 4d73673ab0 | |||
| 0492e4744d | |||
| 1af7693c6b | |||
| 9a2030010d | |||
| db2a75afd8 | |||
| 37f06cd085 | |||
| 4a320140ae | |||
| df65abc171 | |||
| b07bb00578 | |||
| 17b6b21a77 | |||
| dfaa6702ad |
+53
-22
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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)
|
||||
@@ -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,
|
||||
};
|
||||
@@ -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)
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
extern "C" {
|
||||
void _ZN7android16MediaBufferGroupC1Ev() { }
|
||||
void _ZNK7android11MediaSource11ReadOptions14getNonBlockingEv() { }
|
||||
void _ZNK7android11MediaSource11ReadOptions9getSeekToEPxPNS1_8SeekModeE() { }
|
||||
void _ZN7android16MediaBufferGroup14acquire_bufferEPPNS_11MediaBufferE() { }
|
||||
void _ZN7android16MediaBufferGroup14acquire_bufferEPPNS_11MediaBufferEb() { }
|
||||
}
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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.
|
||||
@@ -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
@@ -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
Binary file not shown.
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 ¶ms) { 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
|
||||
|
||||
Executable
+13
@@ -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
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -0,0 +1 @@
|
||||
attribute mtk_property_type;
|
||||
@@ -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 };
|
||||
@@ -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 };
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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;
|
||||
@@ -0,0 +1 @@
|
||||
get_prop(domain, mtk_property_type)
|
||||
@@ -0,0 +1 @@
|
||||
allow drmserver sysfs_devinfo:file { open read write };
|
||||
@@ -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 };
|
||||
@@ -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 };
|
||||
@@ -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);
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
@@ -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;
|
||||
@@ -0,0 +1,2 @@
|
||||
# External storage
|
||||
allow fsck_untrusted self:capability sys_admin;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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
|
||||
@@ -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)
|
||||
@@ -0,0 +1 @@
|
||||
allow healthd device:dir r_dir_perms;
|
||||
@@ -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 };
|
||||
@@ -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 };
|
||||
@@ -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;
|
||||
@@ -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);
|
||||
@@ -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;
|
||||
@@ -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 };
|
||||
@@ -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;
|
||||
@@ -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 };
|
||||
@@ -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;
|
||||
@@ -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 };
|
||||
@@ -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)
|
||||
@@ -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);
|
||||
@@ -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 };
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -0,0 +1,4 @@
|
||||
# Wifi
|
||||
allow netd wmtWifi_device:chr_file w_file_perms;
|
||||
|
||||
allow netd self:capability sys_module;
|
||||
@@ -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 };
|
||||
@@ -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;
|
||||
@@ -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 };
|
||||
@@ -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 };
|
||||
@@ -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;
|
||||
@@ -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
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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)
|
||||
@@ -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;
|
||||
@@ -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
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
allow servicemanager init:dir { search };
|
||||
allow servicemanager init:file { read open };
|
||||
allow servicemanager init:process { getattr };
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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 };
|
||||
@@ -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 };
|
||||
@@ -0,0 +1,4 @@
|
||||
type terservice_exec, exec_type, file_type;
|
||||
type terservice, domain, domain_deprecated;
|
||||
|
||||
init_daemon_domain(terservice)
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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 };
|
||||
@@ -0,0 +1 @@
|
||||
allow ueventd sysfs_gps_file:file w_file_perms;
|
||||
@@ -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 };
|
||||
@@ -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 };
|
||||
@@ -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;
|
||||
@@ -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 };
|
||||
@@ -0,0 +1 @@
|
||||
allow zygote sysfs_devinfo:file r_file_perms;
|
||||
@@ -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)
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user