summaryrefslogtreecommitdiff
authorTellen Yu <tellen.yu@amlogic.com>2018-01-19 08:10:54 (GMT)
committer Tellen Yu <tellen.yu@amlogic.com>2018-01-26 07:35:38 (GMT)
commitba6d844ff037b06d632ed8ad568a6f859cf9c83c (patch)
tree04428787d022a5454ae2fc770d9d713cb61ebd2e
parentd9344ce4fd26378d7798390e32656d232c144635 (diff)
downloadtvserver-o-amlogic.zip
tvserver-o-amlogic.tar.gz
tvserver-o-amlogic.tar.bz2
tvinput: add porting tvinput to HIDL architecture [4/12]
PD# 157786 need use hwbinder instead of binder for RPC since from O Change-Id: I044b59f2fa125cc1d4e3d5bc365778f7cda31e7a
Diffstat
-rw-r--r--libtv/Android.mk8
-rw-r--r--libtv/audio/audio_effect.cpp24
-rw-r--r--libtv/include/amstream.h272
-rw-r--r--libtv/include/amvecm.h85
-rw-r--r--libtv/include/cm.h200
-rw-r--r--libtv/include/common.h54
-rw-r--r--libtv/include/ldim.h41
-rw-r--r--libtv/include/ve.h356
-rw-r--r--libtv/tv/CFrontEnd.cpp6
-rw-r--r--libtv/tv/CTv.cpp30
-rw-r--r--libtv/tv/CTv.h10
-rw-r--r--libtv/tv/CTvScanner.cpp4
-rw-r--r--libtv/tvdb/CTvDatabase.cpp4
-rw-r--r--libtv/tvdb/CTvDatabase.h2
-rw-r--r--libtv/tvin/CDevicesPollStatusDetect.cpp70
-rw-r--r--libtv/tvin/CDevicesPollStatusDetect.h2
-rw-r--r--libtv/tvin/CTvin.cpp134
-rw-r--r--libtv/tvin/CTvin.h20
-rw-r--r--libtv/tvsetting/TvKeyData.cpp4
-rw-r--r--libtv/tvsetting/audio_cfg.cpp2
-rw-r--r--tvserver/Android.mk15
-rw-r--r--tvserver/DroidTvServer.cpp250
-rw-r--r--tvserver/DroidTvServer.h124
-rw-r--r--tvserver/DroidTvServiceIntf.cpp2188
-rw-r--r--tvserver/DroidTvServiceIntf.h80
-rw-r--r--tvserver/main.cpp32
-rw-r--r--tvserver/main_tvserver.cpp69
-rw-r--r--tvserver/tvserver.rc4
-rw-r--r--tvtests/tvconfig_test.cpp437
-rw-r--r--tvutils/Android.mk7
-rw-r--r--tvutils/CFile.cpp4
-rw-r--r--tvutils/CMsgQueue.cpp4
-rw-r--r--tvutils/CSqlite.cpp4
-rw-r--r--tvutils/CTvLog.cpp2
-rw-r--r--tvutils/include/PQType.h723
-rw-r--r--tvutils/serial_base.cpp4
-rw-r--r--tvutils/serial_operate.cpp6
-rw-r--r--tvutils/tvconfig/CIniFile.cpp4
-rw-r--r--tvutils/tvconfig/tvconfig.cpp6
-rw-r--r--tvutils/tvutils.cpp401
-rw-r--r--tvutils/zepoll.cpp2
41 files changed, 3082 insertions, 2612 deletions
diff --git a/libtv/Android.mk b/libtv/Android.mk
index e312866..21de2c2 100644
--- a/libtv/Android.mk
+++ b/libtv/Android.mk
@@ -151,15 +151,12 @@ ifeq ($(strip $(BOARD_TV_AUDIO_TYPE)),android)
LOCAL_CFLAGS += -DCC_TV_AUDIO_TYPE_ANDROID=1
endif
-ifneq ($(TARGET_BUILD_VARIANT), user)
- LOCAL_CFLAGS += -DTV_DEBUG_PQ_ENABLE
-endif
-
LOCAL_C_INCLUDES += \
external/tinyxml \
$(LIB_TV_BINDER)/include \
$(LIB_SQLITE_PATH)/dist \
- system/media/audio_effects/include
+ system/media/audio_effects/include \
+ $(BOARD_AML_VENDOR_PATH)frameworks/services/systemcontrol/PQ/include
ifeq ($(strip $(BOARD_TV_AUDIO_AMAUDIO_LIB_TYPE)), external)
LOCAL_C_INCLUDES += hardware/amlogic/audio/libTVaudio
@@ -198,6 +195,7 @@ LOCAL_C_INCLUDES += \
$(LOCAL_PATH)/tv \
$(LOCAL_PATH)/gpio \
$(LOCAL_PATH)/include \
+ $(BOARD_AML_VENDOR_PATH)frameworks/services/systemcontrol/PQ/include \
external/jsoncpp/include
LOCAL_LDLIBS += -L$(SYSROOT)/usr/lib -llog
diff --git a/libtv/audio/audio_effect.cpp b/libtv/audio/audio_effect.cpp
index 40825e6..47a47a9 100644
--- a/libtv/audio/audio_effect.cpp
+++ b/libtv/audio/audio_effect.cpp
@@ -42,7 +42,7 @@ int CAudioEffect::GetEQBandCount()
int CAudioEffect::SetEQSwitch(int switch_val)
{
int tmp_ret = 0;
- tmp_ret |= amAudioSetEQEnable(switch_val);
+ //tmp_ret |= amAudioSetEQEnable(switch_val);
return tmp_ret;
}
@@ -55,7 +55,7 @@ int CAudioEffect::GetEQSwitch()
int CAudioEffect::SetEQValue(int gain_val_buf[])
{
int tmp_ret = 0;
- tmp_ret |= amAudioSetEQGain(gain_val_buf, CC_BAND_ITEM_CNT);
+ //tmp_ret |= amAudioSetEQGain(gain_val_buf, CC_BAND_ITEM_CNT);
return tmp_ret;
}
@@ -67,63 +67,63 @@ int CAudioEffect::GetEQValue(int gain_val_buf[] __unused)
int CAudioEffect::SetSrsSurroundSwitch(int switch_val)
{
int tmp_ret = 0;
- tmp_ret |= amAudioSetSRSSurroundSwitch(switch_val);
+ //tmp_ret |= amAudioSetSRSSurroundSwitch(switch_val);
return tmp_ret;
}
int CAudioEffect::SetSrsSurroundGain(int gain_val)
{
int tmp_ret = 0;
- tmp_ret |= amAudioSetSRSSurroundGain(gain_val);
+ //tmp_ret |= amAudioSetSRSSurroundGain(gain_val);
return tmp_ret;
}
int CAudioEffect::SetSrsInputOutputGain(int input_gain_val, int output_gain_val)
{
int tmp_ret = 0;
- tmp_ret |= amAudioSetSRSGain(input_gain_val, output_gain_val);
+ //tmp_ret |= amAudioSetSRSGain(input_gain_val, output_gain_val);
return tmp_ret;
}
int CAudioEffect::SetSrsTruBassSwitch(int switch_val)
{
int tmp_ret = 0;
- tmp_ret |= amAudioSetSRSTrubassSwitch(switch_val);
+ //tmp_ret |= amAudioSetSRSTrubassSwitch(switch_val);
return tmp_ret;
}
int CAudioEffect::SetSrsTruBassGain(int gain_val)
{
int tmp_ret = 0;
- tmp_ret |= amAudioSetSRSTrubassGain(gain_val);
+ //tmp_ret |= amAudioSetSRSTrubassGain(gain_val);
return tmp_ret;
}
int CAudioEffect::SetSrsDialogClaritySwitch(int switch_val)
{
int tmp_ret = 0;
- tmp_ret |= amAudioSetSRSDialogClaritySwitch(switch_val);
+ //tmp_ret |= amAudioSetSRSDialogClaritySwitch(switch_val);
return tmp_ret;
}
int CAudioEffect::SetSrsDialogClarityGain(int gain_val)
{
int tmp_ret = 0;
- tmp_ret |= amAudioSetSRSDialogClarityGain(gain_val);
+ //tmp_ret |= amAudioSetSRSDialogClarityGain(gain_val);
return tmp_ret;
}
int CAudioEffect::SetSrsDefinitionGain(int gain_val)
{
int tmp_ret = 0;
- tmp_ret |= amAudioSetSRSDefinitionGain(gain_val);
+ //tmp_ret |= amAudioSetSRSDefinitionGain(gain_val);
return tmp_ret;
}
int CAudioEffect::SetSrsTrubassSpeakerSize(int set_val)
{
int tmp_ret = 0;
- tmp_ret |= amAudioSetSRSTrubassSpeakerSize(set_val);
+ //tmp_ret |= amAudioSetSRSTrubassSpeakerSize(set_val);
return tmp_ret;
}
@@ -143,5 +143,5 @@ int CAudioEffect::DbxTv_SetMode(int mode __unused, int son_value, int vol_value,
int CAudioEffect::SetAudioVirtualizer(int enable, int EffectLevel)
{
- return amAudioVirtualizer(enable, EffectLevel);
+ return 0;//amAudioVirtualizer(enable, EffectLevel);
}
diff --git a/libtv/include/amstream.h b/libtv/include/amstream.h
deleted file mode 100644
index 56c3dde..0000000
--- a/libtv/include/amstream.h
+++ b/dev/null
@@ -1,272 +0,0 @@
-/*
- * Copyright (c) 2014 Amlogic, Inc. All rights reserved.
- *
- * This source code is subject to the terms and conditions defined in the
- * file 'LICENSE' which is part of this source code package.
- *
- * Description: header file
- */
-
-#ifndef __AMSTREAM_H__
-#define __AMSTREAM_H__
-
-#include "ve.h"
-
-#define AMSTREAM_IOC_MAGIC 'S'
-
-#define AMSTREAM_IOC_VB_START _IOW(AMSTREAM_IOC_MAGIC, 0x00, int)
-#define AMSTREAM_IOC_VB_SIZE _IOW(AMSTREAM_IOC_MAGIC, 0x01, int)
-#define AMSTREAM_IOC_AB_START _IOW(AMSTREAM_IOC_MAGIC, 0x02, int)
-#define AMSTREAM_IOC_AB_SIZE _IOW(AMSTREAM_IOC_MAGIC, 0x03, int)
-#define AMSTREAM_IOC_VFORMAT _IOW(AMSTREAM_IOC_MAGIC, 0x04, int)
-#define AMSTREAM_IOC_AFORMAT _IOW(AMSTREAM_IOC_MAGIC, 0x05, int)
-#define AMSTREAM_IOC_VID _IOW(AMSTREAM_IOC_MAGIC, 0x06, int)
-#define AMSTREAM_IOC_AID _IOW(AMSTREAM_IOC_MAGIC, 0x07, int)
-#define AMSTREAM_IOC_VB_STATUS _IOR(AMSTREAM_IOC_MAGIC, 0x08, unsigned long)
-#define AMSTREAM_IOC_AB_STATUS _IOR(AMSTREAM_IOC_MAGIC, 0x09, unsigned long)
-#define AMSTREAM_IOC_SYSINFO _IOW(AMSTREAM_IOC_MAGIC, 0x0a, int)
-#define AMSTREAM_IOC_ACHANNEL _IOW(AMSTREAM_IOC_MAGIC, 0x0b, int)
-#define AMSTREAM_IOC_SAMPLERATE _IOW(AMSTREAM_IOC_MAGIC, 0x0c, int)
-#define AMSTREAM_IOC_DATAWIDTH _IOW(AMSTREAM_IOC_MAGIC, 0x0d, int)
-#define AMSTREAM_IOC_TSTAMP _IOW(AMSTREAM_IOC_MAGIC, 0x0e, unsigned long)
-#define AMSTREAM_IOC_VDECSTAT _IOR(AMSTREAM_IOC_MAGIC, 0x0f, unsigned long)
-#define AMSTREAM_IOC_ADECSTAT _IOR(AMSTREAM_IOC_MAGIC, 0x10, unsigned long)
-
-#define AMSTREAM_IOC_PORT_INIT _IO(AMSTREAM_IOC_MAGIC, 0x11)
-#define AMSTREAM_IOC_TRICKMODE _IOW(AMSTREAM_IOC_MAGIC, 0x12, unsigned long)
-
-#define AMSTREAM_IOC_AUDIO_INFO _IOW(AMSTREAM_IOC_MAGIC, 0x13, unsigned long)
-#define AMSTREAM_IOC_TRICK_STAT _IOR(AMSTREAM_IOC_MAGIC, 0x14, unsigned long)
-#define AMSTREAM_IOC_AUDIO_RESET _IO(AMSTREAM_IOC_MAGIC, 0x15)
-#define AMSTREAM_IOC_SID _IOW(AMSTREAM_IOC_MAGIC, 0x16, int)
-#define AMSTREAM_IOC_VPAUSE _IOW(AMSTREAM_IOC_MAGIC, 0x17, int)
-#define AMSTREAM_IOC_AVTHRESH _IOW(AMSTREAM_IOC_MAGIC, 0x18, int)
-#define AMSTREAM_IOC_SYNCTHRESH _IOW(AMSTREAM_IOC_MAGIC, 0x19, int)
-#define AMSTREAM_IOC_SUB_RESET _IOW(AMSTREAM_IOC_MAGIC, 0x1a, int)
-#define AMSTREAM_IOC_SUB_LENGTH _IOR(AMSTREAM_IOC_MAGIC, 0x1b, unsigned long)
-#define AMSTREAM_IOC_SET_DEC_RESET _IOW(AMSTREAM_IOC_MAGIC, 0x1c, int)
-#define AMSTREAM_IOC_TS_SKIPBYTE _IOW(AMSTREAM_IOC_MAGIC, 0x1d, int)
-#define AMSTREAM_IOC_SUB_TYPE _IOW(AMSTREAM_IOC_MAGIC, 0x1e, int)
-#define AMSTREAM_IOC_CLEAR_VIDEO _IOW(AMSTREAM_IOC_MAGIC, 0x1f, int)
-
-#define AMSTREAM_IOC_APTS _IOR(AMSTREAM_IOC_MAGIC, 0x40, unsigned long)
-#define AMSTREAM_IOC_VPTS _IOR(AMSTREAM_IOC_MAGIC, 0x41, unsigned long)
-#define AMSTREAM_IOC_PCRSCR _IOR(AMSTREAM_IOC_MAGIC, 0x42, unsigned long)
-#define AMSTREAM_IOC_SYNCENABLE _IOW(AMSTREAM_IOC_MAGIC, 0x43, unsigned long)
-#define AMSTREAM_IOC_GET_SYNC_ADISCON _IOR(AMSTREAM_IOC_MAGIC, 0x44, unsigned long)
-#define AMSTREAM_IOC_SET_SYNC_ADISCON _IOW(AMSTREAM_IOC_MAGIC, 0x45, unsigned long)
-#define AMSTREAM_IOC_GET_SYNC_VDISCON _IOR(AMSTREAM_IOC_MAGIC, 0x46, unsigned long)
-#define AMSTREAM_IOC_SET_SYNC_VDISCON _IOW(AMSTREAM_IOC_MAGIC, 0x47, unsigned long)
-#define AMSTREAM_IOC_GET_VIDEO_DISABLE _IOR(AMSTREAM_IOC_MAGIC, 0x48, unsigned long)
-#define AMSTREAM_IOC_SET_VIDEO_DISABLE _IOW(AMSTREAM_IOC_MAGIC, 0x49, unsigned long)
-#define AMSTREAM_IOC_SET_PCRSCR _IOW(AMSTREAM_IOC_MAGIC, 0x4a, unsigned long)
-#define AMSTREAM_IOC_GET_VIDEO_AXIS _IOR(AMSTREAM_IOC_MAGIC, 0x4b, unsigned long)
-#define AMSTREAM_IOC_SET_VIDEO_AXIS _IOW(AMSTREAM_IOC_MAGIC, 0x4c, unsigned long)
-#define AMSTREAM_IOC_GET_VIDEO_CROP _IOR(AMSTREAM_IOC_MAGIC, 0x4d, unsigned long)
-#define AMSTREAM_IOC_SET_VIDEO_CROP _IOW(AMSTREAM_IOC_MAGIC, 0x4e, unsigned long)
-
-// VPP.VE IOCTL command list
-#define AMSTREAM_IOC_VE_BEXT _IOW(AMSTREAM_IOC_MAGIC, 0x20, struct ve_bext_s )
-#define AMSTREAM_IOC_VE_DNLP _IOW(AMSTREAM_IOC_MAGIC, 0x21, struct ve_dnlp_s )
-#define AMSTREAM_IOC_VE_HSVS _IOW(AMSTREAM_IOC_MAGIC, 0x22, struct ve_hsvs_s )
-#define AMSTREAM_IOC_VE_CCOR _IOW(AMSTREAM_IOC_MAGIC, 0x23, struct ve_ccor_s )
-#define AMSTREAM_IOC_VE_BENH _IOW(AMSTREAM_IOC_MAGIC, 0x24, struct ve_benh_s )
-#define AMSTREAM_IOC_VE_DEMO _IOW(AMSTREAM_IOC_MAGIC, 0x25, struct ve_demo_s )
-#define AMSTREAM_IOC_VE_VDO_MEAS _IOW(AMSTREAM_IOC_MAGIC, 0x27, struct vdo_meas_s )
-#define AMSTREAM_IOC_VE_DEBUG _IOWR(AMSTREAM_IOC_MAGIC, 0x28, unsigned long long)
-#define AMSTREAM_IOC_VE_REGMAP _IOW(AMSTREAM_IOC_MAGIC, 0x29, struct ve_regmap_s)
-
-// VPP.CM IOCTL command list
-#define AMSTREAM_IOC_CM_REGION _IOW(AMSTREAM_IOC_MAGIC, 0x30, struct cm_region_s)
-#define AMSTREAM_IOC_CM_TOP _IOW(AMSTREAM_IOC_MAGIC, 0x31, struct cm_top_s )
-#define AMSTREAM_IOC_CM_DEMO _IOW(AMSTREAM_IOC_MAGIC, 0x32, struct cm_demo_s )
-#define AMSTREAM_IOC_CM_DEBUG _IOWR(AMSTREAM_IOC_MAGIC, 0x33, unsigned long long)
-#define AMSTREAM_IOC_CM_REGMAP _IOW(AMSTREAM_IOC_MAGIC, 0x34, struct cm_regmap_s)
-
-//VPP.3D IOCTL command list
-#define AMSTREAM_IOC_SET_3D_TYPE _IOW(AMSTREAM_IOC_MAGIC, 0x3c, unsigned int)
-#define AMSTREAM_IOC_GET_3D_TYPE _IOW(AMSTREAM_IOC_MAGIC, 0x3d, unsigned int)
-
-#define AMSTREAM_IOC_SUB_NUM _IOR(AMSTREAM_IOC_MAGIC, 0x50, unsigned long)
-#define AMSTREAM_IOC_SUB_INFO _IOR(AMSTREAM_IOC_MAGIC, 0x51, unsigned long)
-#define AMSTREAM_IOC_GET_BLACKOUT_POLICY _IOR(AMSTREAM_IOC_MAGIC, 0x52, unsigned long)
-#define AMSTREAM_IOC_SET_BLACKOUT_POLICY _IOW(AMSTREAM_IOC_MAGIC, 0x53, unsigned long)
-#define AMSTREAM_IOC_GET_SCREEN_MODE _IOR(AMSTREAM_IOC_MAGIC, 0x58, int)
-#define AMSTREAM_IOC_SET_SCREEN_MODE _IOW(AMSTREAM_IOC_MAGIC, 0x59, int)
-#define AMSTREAM_IOC_GET_VIDEO_DISCONTINUE_REPORT _IOR(AMSTREAM_IOC_MAGIC, 0x5a, int)
-#define AMSTREAM_IOC_SET_VIDEO_DISCONTINUE_REPORT _IOW(AMSTREAM_IOC_MAGIC, 0x5b, int)
-#define AMSTREAM_IOC_VF_STATUS _IOR(AMSTREAM_IOC_MAGIC, 0x60, unsigned long)
-#define AMSTREAM_IOC_CLEAR_VBUF _IO(AMSTREAM_IOC_MAGIC, 0x80)
-
-#define AMSTREAM_IOC_APTS_LOOKUP _IOR(AMSTREAM_IOC_MAGIC, 0x81, unsigned long)
-#define GET_FIRST_APTS_FLAG _IOR(AMSTREAM_IOC_MAGIC, 0x82, long)
-
-#define AMSTREAM_IOC_GET_SYNC_ADISCON_DIFF _IOR(AMSTREAM_IOC_MAGIC, 0x83, unsigned long)
-#define AMSTREAM_IOC_GET_SYNC_VDISCON_DIFF _IOR(AMSTREAM_IOC_MAGIC, 0x84, unsigned long)
-#define AMSTREAM_IOC_SET_SYNC_ADISCON_DIFF _IOW(AMSTREAM_IOC_MAGIC, 0x85, unsigned long)
-#define AMSTREAM_IOC_SET_SYNC_VDISCON_DIFF _IOW(AMSTREAM_IOC_MAGIC, 0x86, unsigned long)
-#define AMSTREAM_IOC_GET_FREERUN_MODE _IOR(AMSTREAM_IOC_MAGIC, 0x87, unsigned long)
-#define AMSTREAM_IOC_SET_FREERUN_MODE _IOW(AMSTREAM_IOC_MAGIC, 0x88, unsigned long)
-#define AMSTREAM_IOC_SET_DEMUX _IOW(AMSTREAM_IOC_MAGIC, 0x90, unsigned long)
-
-#define AMSTREAM_IOC_SET_VIDEO_DELAY_LIMIT_MS _IOW(AMSTREAM_IOC_MAGIC, 0xa0, unsigned long)
-#define AMSTREAM_IOC_GET_VIDEO_DELAY_LIMIT_MS _IOR(AMSTREAM_IOC_MAGIC, 0xa1, unsigned long)
-#define AMSTREAM_IOC_SET_AUDIO_DELAY_LIMIT_MS _IOW(AMSTREAM_IOC_MAGIC, 0xa2, unsigned long)
-#define AMSTREAM_IOC_GET_AUDIO_DELAY_LIMIT_MS _IOR(AMSTREAM_IOC_MAGIC, 0xa3, unsigned long)
-#define AMSTREAM_IOC_GET_AUDIO_CUR_DELAY_MS _IOR(AMSTREAM_IOC_MAGIC, 0xa4, unsigned long)
-#define AMSTREAM_IOC_GET_VIDEO_CUR_DELAY_MS _IOR(AMSTREAM_IOC_MAGIC, 0xa5, unsigned long)
-#define AMSTREAM_IOC_GET_AUDIO_AVG_BITRATE_BPS _IOR(AMSTREAM_IOC_MAGIC, 0xa6, unsigned long)
-#define AMSTREAM_IOC_GET_VIDEO_AVG_BITRATE_BPS _IOR(AMSTREAM_IOC_MAGIC, 0xa7, unsigned long)
-
-#define TRICKMODE_NONE 0x00
-#define TRICKMODE_I 0x01
-#define TRICKMODE_FFFB 0x02
-
-#define TRICK_STAT_DONE 0x01
-#define TRICK_STAT_WAIT 0x00
-
-#define AUDIO_EXTRA_DATA_SIZE (4096)
-#define MAX_SUB_NUM 32
-/*
-enum VIDEO_DEC_TYPE
-{
- VIDEO_DEC_FORMAT_UNKNOW,
- VIDEO_DEC_FORMAT_MPEG4_3,
- VIDEO_DEC_FORMAT_MPEG4_4,
- VIDEO_DEC_FORMAT_MPEG4_5,
- VIDEO_DEC_FORMAT_H264,
- VIDEO_DEC_FORMAT_MJPEG,
- VIDEO_DEC_FORMAT_MP4,
- VIDEO_DEC_FORMAT_H263,
- VIDEO_DEC_FORMAT_REAL_8,
- VIDEO_DEC_FORMAT_REAL_9,
- VIDEO_DEC_FORMAT_WMV3,
- VIDEO_DEC_FORMAT_WVC1,
- VIDEO_DEC_FORMAT_SW,
- VIDEO_DEC_FORMAT_MAX
-};
-*/
-struct buf_status {
- int size;
- int data_len;
- int free_len;
- unsigned int read_pointer;
- unsigned int write_pointer;
-};
-
-
-struct vdec_status {
- unsigned int width;
- unsigned int height;
- unsigned int fps;
- unsigned int error_count;
- unsigned int status;
-};
-
-struct adec_status {
- unsigned int channels;
- unsigned int sample_rate;
- unsigned int resolution;
- unsigned int error_count;
- unsigned int status;
-};
-
-struct am_io_param {
- union {
- int data;
- int id;//get bufstatus? //or others
- };
-
- int len; //buffer size;
-
- union {
- char buf[1];
- struct buf_status status;
- struct vdec_status vstatus;
- struct adec_status astatus;
- };
-};
-struct audio_info {
- int valid;
- int sample_rate;
- int channels;
- int bitrate;
- int codec_id;
- int block_align;
- int extradata_size;
- char extradata[AUDIO_EXTRA_DATA_SIZE];
-};
-
-struct dec_sysinfo {
- unsigned int format;
- unsigned int width;
- unsigned int height;
- unsigned int rate;
- unsigned int extra;
- unsigned int status;
- unsigned int ratio;
- void *param;
- unsigned long long ratio64;
-};
-
-struct subtitle_info {
- unsigned char id;
- unsigned char width;
- unsigned char height;
- unsigned char type;
-};
-
-struct codec_profile_t {
- char *name; // video codec short name
- char *profile; // Attributes,seperated by commas
-};
-#define SUPPORT_VDEC_NUM (8)
-
-int vcodec_profile_register(const struct codec_profile_t *vdec_profile);
-int vcodec_profile_read(char *buf);
-
-#ifdef __KERNEL__
-#ifdef ENABLE_DEMUX_DRIVER
-/*TS demux operation interface*/
-struct tsdemux_ops {
- int (*reset)(void);
- int (*set_reset_flag)(void);
- int (*request_irq)(irq_handler_t handler, void *data);
- int (*free_irq)(void);
- int (*set_vid)(int vpid);
- int (*set_aid)(int apid);
- int (*set_sid)(int spid);
- int (*set_skipbyte)(int skipbyte);
- int (*set_demux)(int dev);
-};
-
-void tsdemux_set_ops(struct tsdemux_ops *ops);
-int tsdemux_set_reset_flag(void);
-
-#endif /*ENABLE_DEMUX_DRIVER*/
-void set_vdec_func(int (*vdec_func)(struct vdec_status *));
-void set_adec_func(int (*adec_func)(struct adec_status *));
-void set_trickmode_func(int (*trickmode_func)(unsigned long trickmode));
-void wakeup_sub_poll(void);
-int wakeup_userdata_poll(int wp, int start_phyaddr, int buf_size);
-int get_sub_type(void);
-#endif
-
-typedef struct tcon_gamma_table_s {
- unsigned short data[256];
-} tcon_gamma_table_t;
-
-typedef struct tcon_rgb_ogo_s {
- unsigned int en;
- int r_pre_offset; // s11.0, range -1024~+1023, default is 0
- int g_pre_offset; // s11.0, range -1024~+1023, default is 0
- int b_pre_offset; // s11.0, range -1024~+1023, default is 0
- unsigned int r_gain; // u1.10, range 0~2047, default is 1024 (1.0x)
- unsigned int g_gain; // u1.10, range 0~2047, default is 1024 (1.0x)
- unsigned int b_gain; // u1.10, range 0~2047, default is 1024 (1.0x)
- int r_post_offset; // s11.0, range -1024~+1023, default is 0
- int g_post_offset; // s11.0, range -1024~+1023, default is 0
- int b_post_offset; // s11.0, range -1024~+1023, default is 0
-} tcon_rgb_ogo_t;
-
-#endif //__AMSTREAM_H__
diff --git a/libtv/include/amvecm.h b/libtv/include/amvecm.h
deleted file mode 100644
index 747f5fa..0000000
--- a/libtv/include/amvecm.h
+++ b/dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright (c) 2014 Amlogic, Inc. All rights reserved.
- *
- * This source code is subject to the terms and conditions defined in the
- * file 'LICENSE' which is part of this source code package.
- *
- * Description: header file
- */
-
-#ifndef __AMVECM_H
-#define __AMVECM_H
-
-#include "ve.h"
-#include "cm.h"
-#include "amstream.h"
-#include "ldim.h"
-
-
-//struct ve_dnlp_s video_ve_dnlp;
-
-#define FLAG_RSV31 (1 << 31)
-#define FLAG_RSV30 (1 << 30)
-#define FLAG_VE_DNLP (1 << 29)
-#define FLAG_VE_NEW_DNLP (1 << 28)
-#define FLAG_RSV27 (1 << 27)
-#define FLAG_RSV26 (1 << 26)
-#define FLAG_RSV25 (1 << 25)
-#define FLAG_RSV24 (1 << 24)
-#define FLAG_3D_SYNC_DIS (1 << 23)
-#define FLAG_3D_SYNC_EN (1 << 22)
-#define FLAG_VLOCK_PLL (1 << 21)
-#define FLAG_VLOCK_ENC (1 << 20)
-#define FLAG_VE_DNLP_EN (1 << 19)
-#define FLAG_VE_DNLP_DIS (1 << 18)
-#define FLAG_RSV17 (1 << 17)
-#define FLAG_RSV16 (1 << 16)
-#define FLAG_GAMMA_TABLE_EN (1 << 15)
-#define FLAG_GAMMA_TABLE_DIS (1 << 14)
-#define FLAG_GAMMA_TABLE_R (1 << 13)
-#define FLAG_GAMMA_TABLE_G (1 << 12)
-#define FLAG_GAMMA_TABLE_B (1 << 11)
-#define FLAG_RGB_OGO (1 << 10)
-#define FLAG_RSV9 (1 << 9)
-#define FLAG_RSV8 (1 << 8)
-#define FLAG_BRI_CON (1 << 7)
-#define FLAG_LVDS_FREQ_SW (1 << 6)
-#define FLAG_REG_MAP5 (1 << 5)
-#define FLAG_REG_MAP4 (1 << 4)
-#define FLAG_REG_MAP3 (1 << 3)
-#define FLAG_REG_MAP2 (1 << 2)
-#define FLAG_REG_MAP1 (1 << 1)
-#define FLAG_REG_MAP0 (1 << 0)
-
-
-#define AMVECM_IOC_MAGIC 'C'
-
-#define AMVECM_IOC_VE_DNLP _IOW(AMVECM_IOC_MAGIC, 0x21, struct ve_dnlp_s )
-#define AMVECM_IOC_G_HIST_AVG _IOW(AMVECM_IOC_MAGIC, 0x22, struct ve_hist_s )
-#define AMVECM_IOC_VE_DNLP_EN _IO(AMVECM_IOC_MAGIC, 0x23)
-#define AMVECM_IOC_VE_DNLP_DIS _IO(AMVECM_IOC_MAGIC, 0x24)
-#define AMVECM_IOC_VE_NEW_DNLP _IOW(AMVECM_IOC_MAGIC, 0x25, struct ve_dnlp_table_s )
-
-
-// VPP.CM IOCTL command list
-#define AMVECM_IOC_LOAD_REG _IOW(AMVECM_IOC_MAGIC, 0x30, struct am_regs_s)
-
-
-// VPP.GAMMA IOCTL command list
-#define AMVECM_IOC_GAMMA_TABLE_EN _IO(AMVECM_IOC_MAGIC, 0x40)
-#define AMVECM_IOC_GAMMA_TABLE_DIS _IO(AMVECM_IOC_MAGIC, 0x41)
-#define AMVECM_IOC_GAMMA_TABLE_R _IOW(AMVECM_IOC_MAGIC, 0x42, struct tcon_gamma_table_s)
-#define AMVECM_IOC_GAMMA_TABLE_G _IOW(AMVECM_IOC_MAGIC, 0x43, struct tcon_gamma_table_s)
-#define AMVECM_IOC_GAMMA_TABLE_B _IOW(AMVECM_IOC_MAGIC, 0x44, struct tcon_gamma_table_s)
-#define AMVECM_IOC_S_RGB_OGO _IOW(AMVECM_IOC_MAGIC, 0x45, struct tcon_rgb_ogo_s)
-#define AMVECM_IOC_G_RGB_OGO _IOR(AMVECM_IOC_MAGIC, 0x46, struct tcon_rgb_ogo_s)
-
-// VPP.Local dimming command list
-#define LDIM_IOC_PARA _IOW(AMVECM_IOC_MAGIC, 0x50, struct vpu_ldim_param_s)
-
-// VPP.DI IOCTL command list
-#define _DI_ 'D'
-#define AMDI_IOC_SET_PQ_PARM _IOW(_DI_, 0x51, struct am_pq_param_s)
-
-#endif /* __AMVECM_H */
-
diff --git a/libtv/include/cm.h b/libtv/include/cm.h
deleted file mode 100644
index c856623..0000000
--- a/libtv/include/cm.h
+++ b/dev/null
@@ -1,200 +0,0 @@
-/*
- * Copyright (c) 2014 Amlogic, Inc. All rights reserved.
- *
- * This source code is subject to the terms and conditions defined in the
- * file 'LICENSE' which is part of this source code package.
- *
- * Description: header file
- */
-
-#ifndef _TVOUT_CM_H
-#define _TVOUT_CM_H
-
-#define REGS_MAX_NUMBER 900
-
-// ***************************************************************************
-// *** enum definitions *********************************************
-// ***************************************************************************
-
-typedef enum cm_region_idx_e {
- CM_REGION_IDX_0 = 0,
- CM_REGION_IDX_1,
- CM_REGION_IDX_2,
- CM_REGION_IDX_3,
- CM_REGION_IDX_4,
- CM_REGION_IDX_5,
- CM_REGION_IDX_6,
- CM_REGION_IDX_7,
-} cm_region_idx_t;
-
-typedef enum cm_sat_shape_e {
- CM_SAT_SHAPE_RIGHT_BIGGEST = 0,
- CM_SAT_SHAPE_LEFT_BIGGEST,
-} cm_sat_shape_t;
-
-typedef enum cm_hue_shape_e {
- CM_HUE_SHAPE_LEFT_MORE = 0,
- CM_HUE_SHAPE_RIGHT_MORE,
-} cm_hue_shape_t;
-
-typedef enum cm_demo_pos_e {
- CM_DEMO_POS_TOP = 0,
- CM_DEMO_POS_BOTTOM,
- CM_DEMO_POS_LEFT,
- CM_DEMO_POS_RIGHT,
-} cm_demo_pos_t;
-
-typedef enum cm_sat_sel_e {
- CM_SAT_SEL_U2_V2 = 0,
- CM_SAT_SEL_UV_MAX,
-} cm_sat_sel_t;
-
-typedef enum cm_csc_e {
- CM_CSC_601 = 0,
- CM_CSC_709,
- CM_CSC_FULL_601,
- CM_CSC_FULL_709,
-} cm_csc_t;
-
-// ***************************************************************************
-// *** struct definitions *********************************************
-// ***************************************************************************
-
-typedef struct cm_region_s {
- enum cm_region_idx_e region_idx;
- // sym
- unsigned char sym_en;
- // sat - top
- unsigned char sat_en;
- unsigned char sat_central_en;
- enum cm_sat_shape_e sat_shape;
- unsigned char sat_gain;
- unsigned char sat_inc;
- // sat - lum
- unsigned char sat_lum_h_slope;
- unsigned char sat_lum_l_slope;
- unsigned char sat_lum_h;
- unsigned char sat_lum_l;
- // sat - sat
- unsigned char sat_sat_h_slope;
- unsigned char sat_sat_l_slope;
- unsigned char sat_sat_h;
- unsigned char sat_sat_l;
- // hue - top
- unsigned char hue_en;
- unsigned char hue_central_en;
- enum cm_hue_shape_e hue_shape;
- unsigned char hue_gain;
- unsigned char hue_clockwise;
- unsigned char hue_shf_ran;
- unsigned short hue_shf_sta;
- // hue - lum
- unsigned char hue_lum_h_slope;
- unsigned char hue_lum_l_slope;
- unsigned char hue_lum_h;
- unsigned char hue_lum_l;
- // hue - sat
- unsigned char hue_sat_h_slope;
- unsigned char hue_sat_l_slope;
- unsigned char hue_sat_h;
- unsigned char hue_sat_l;
-} cm_region_t;
-
-typedef struct cm_top_s {
- unsigned char chroma_en;
- enum cm_sat_sel_e sat_sel;
- unsigned char uv_adj_en;
- unsigned char rgb_to_hue_en;
- enum cm_csc_e csc_sel;
-} cm_top_t;
-
-typedef struct cm_cbar_s {
- unsigned char en;
- unsigned char wid;
- unsigned char cr;
- unsigned char cb;
- unsigned char y;
-} cm_cbar_t;
-typedef struct cm_demo_s {
- unsigned char en;
- enum cm_demo_pos_e pos;
- unsigned char hlight_adj;
- unsigned short wid;
- struct cm_cbar_s cbar;
-} cm_demo_t;
-
-typedef struct cm_regmap_s {
- unsigned long reg[50];
-} cm_regmap_t;
-
-typedef enum reg_bus_type_e {
- REG_TYPE_PHY = 0,
- REG_TYPE_CBUS,
- REG_TYPE_APB,
- REG_TYPE_AXI,
- REG_TYPE_AHB,
- REG_TYPE_MPEG,
- REG_TYPE_INDEX_VPPCHROMA,
- REG_TYPE_INDEX_GAMMA,
- VALUE_TYPE_CONTRAST_BRIGHTNESS,
- REG_TYPE_INDEX_VPP_COEF,
- REG_TYPE_MAX,
-} reg_bus_type_t;
-
-typedef enum pq_table_name_e {
- TABLE_NAME_SHARPNESS0 = 0x1,/*in vpp*/
- TABLE_NAME_SHARPNESS1 = 0x2,/*in vpp*/
- TABLE_NAME_DNLP = 0x4, /*in vpp*/
- TABLE_NAME_CM = 0x8, /*in vpp*/
- TABLE_NAME_BLK_BLUE_EXT = 0x10,/*in vpp*/
- TABLE_NAME_BRIGHTNESS = 0x20,/*in vpp*/
- TABLE_NAME_CONTRAST = 0x40, /*in vpp*/
- TABLE_NAME_SATURATION_HUE = 0x80,/*in vpp*/
- TABLE_NAME_CVD2 = 0x100, /*in tvafe*/
- TABLE_NAME_DI = 0x200, /*in di*/
- TABLE_NAME_NR = 0x400, /*in di*/
- TABLE_NAME_MCDI = 0x800, /*in di*/
- TABLE_NAME_DEBLOCK = 0x1000, /*in di*/
- TABLE_NAME_DEMOSQUITO = 0x2000,/*in di*/
- TABLE_NAME_WB = 0X4000, /*in vpp*/
- TABLE_NAME_GAMMA = 0X8000, /*in vpp*/
- TABLE_NAME_XVYCC = 0x10000, /*in vpp*/
- TABLE_NAME_HDR = 0x20000, /*in vpp*/
- TABLE_NAME_DOLBY_VISION = 0x40000,/*in vpp*/
- TABLE_NAME_RESERVED1 = 0x80000,
- TABLE_NAME_RESERVED2 = 0x100000,
- TABLE_NAME_RESERVED3 = 0x200000,
- TABLE_NAME_RESERVED4 = 0x400000,
- TABLE_NAME_RESERVED5 = 0x800000,
- TABLE_NAME_MAX,
-} pq_table_name_t;
-
-/* Register table structure */
-typedef struct am_reg_s {
- unsigned int type; //32-bits; 0: CBUS; 1: APB BUS...
- unsigned int addr; //32-bits; Register address
- unsigned int mask; //32-bits; Valid bits
- unsigned int val; //32-bits; Register Value
-} am_reg_t;
-
-#ifdef AMVIDEO_REG_TABLE_DYNAMIC
-typedef struct am_regs_s {
- unsigned int length; // Length of total am_reg
- struct am_reg_s *am_reg;
-} am_regs_t;
-#else
-typedef struct am_regs_s {
- unsigned int length; // Length of total am_reg
- struct am_reg_s am_reg[REGS_MAX_NUMBER];
-} am_regs_t;
-
-typedef struct am_pq_param_s {
- unsigned int table_name;
- unsigned int table_len;
- long long table_ptr;
- long long reserved0;
-} am_pq_param_t;
-
-#endif
-
-#endif // _TVOUT_CM_H
diff --git a/libtv/include/common.h b/libtv/include/common.h
deleted file mode 100644
index 0d6d2d2..0000000
--- a/libtv/include/common.h
+++ b/dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (c) 2014 Amlogic, Inc. All rights reserved.
- *
- * This source code is subject to the terms and conditions defined in the
- * file 'LICENSE' which is part of this source code package.
- *
- * Description: header file
- */
-
-#ifndef __COMMON_H__
-#define __COMMON_H__
-
-//CVpp.h
-typedef enum vpp_picture_mode_e {
- VPP_PICTURE_MODE_STANDARD,
- VPP_PICTURE_MODE_BRIGHT,
- VPP_PICTURE_MODE_SOFT,
- VPP_PICTURE_MODE_USER,
- VPP_PICTURE_MODE_MOVIE,
- VPP_PICTURE_MODE_COLORFUL,
- VPP_PICTURE_MODE_MONITOR,
- VPP_PICTURE_MODE_GAME,
- VPP_PICTURE_MODE_SPORTS,
- VPP_PICTURE_MODE_SONY,
- VPP_PICTURE_MODE_SAMSUNG,
- VPP_PICTURE_MODE_SHARP,
- VPP_PICTURE_MODE_MAX,
-} vpp_picture_mode_t;
-
-//CTvin.h
-typedef enum tv_source_input_e {
- SOURCE_INVALID = -1,
- SOURCE_TV = 0,
- SOURCE_AV1,
- SOURCE_AV2,
- SOURCE_YPBPR1,
- SOURCE_YPBPR2,
- SOURCE_HDMI1,
- SOURCE_HDMI2,
- SOURCE_HDMI3,
- SOURCE_HDMI4,
- SOURCE_VGA,
- SOURCE_MPEG,
- SOURCE_DTV,
- SOURCE_SVIDEO,
- SOURCE_IPTV,
- SOURCE_DUMMY,
- SOURCE_SPDIF,
- SOURCE_ADTV,
- SOURCE_MAX,
-} tv_source_input_t;
-
-
-#endif
diff --git a/libtv/include/ldim.h b/libtv/include/ldim.h
deleted file mode 100644
index d6ee6b4..0000000
--- a/libtv/include/ldim.h
+++ b/dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 2014 Amlogic, Inc. All rights reserved.
- *
- * This source code is subject to the terms and conditions defined in the
- * file 'LICENSE' which is part of this source code package.
- *
- * Description: header file
- */
-
-#ifndef __LDIM_H__
-#define __LDIM_H__
-
-struct vpu_ldim_param_s {
- /* beam model */
- int rgb_base;
- int boost_gain;
- int lpf_res;
- int fw_ld_th_sf; /* spatial filter threshold */
- /* beam curve */
- int ld_vgain;
- int ld_hgain;
- int ld_litgain;
- int ld_lut_vdg_lext;
- int ld_lut_hdg_lext;
- int ld_lut_vhk_lext;
- int ld_lut_hdg[32];
- int ld_lut_vdg[32];
- int ld_lut_vhk[32];
- /* beam shape minor adjustment */
- int ld_lut_vhk_pos[32];
- int ld_lut_vhk_neg[32];
- int ld_lut_hhk[32];
- int ld_lut_vho_pos[32];
- int ld_lut_vho_neg[32];
- /* remapping */
- int lit_idx_th;
- int comp_gain;
-};
-
-
-#endif
diff --git a/libtv/include/ve.h b/libtv/include/ve.h
deleted file mode 100644
index 99b5adf..0000000
--- a/libtv/include/ve.h
+++ b/dev/null
@@ -1,356 +0,0 @@
-/*
- * Copyright (c) 2014 Amlogic, Inc. All rights reserved.
- *
- * This source code is subject to the terms and conditions defined in the
- * file 'LICENSE' which is part of this source code package.
- *
- * Description: header file
- */
-
-#ifndef __VE_H
-#define __VE_H
-
-// ***************************************************************************
-// *** enum definitions *********************************************
-// ***************************************************************************
-
-typedef enum ve_demo_pos_e {
- VE_DEMO_POS_TOP = 0,
- VE_DEMO_POS_BOTTOM,
- VE_DEMO_POS_LEFT,
- VE_DEMO_POS_RIGHT,
-} ve_demo_pos_t;
-
-typedef enum ve_dnlp_rt_e {
- VE_DNLP_RT_0S = 0,
- VE_DNLP_RT_1S = 6,
- VE_DNLP_RT_2S,
- VE_DNLP_RT_4S,
- VE_DNLP_RT_8S,
- VE_DNLP_RT_16S,
- VE_DNLP_RT_32S,
- VE_DNLP_RT_64S,
- VE_DNLP_RT_FREEZE,
-} ve_dnlp_rt_t;
-
-// ***************************************************************************
-// *** struct definitions *********************************************
-// ***************************************************************************
-
-typedef enum ve_dnlp_rl_e {
- VE_DNLP_RL_01 = 1, // max_contrast = 1.0625x
- VE_DNLP_RL_02, // max_contrast = 1.1250x
- VE_DNLP_RL_03, // max_contrast = 1.1875x
- VE_DNLP_RL_04, // max_contrast = 1.2500x
- VE_DNLP_RL_05, // max_contrast = 1.3125x
- VE_DNLP_RL_06, // max_contrast = 1.3750x
- VE_DNLP_RL_07, // max_contrast = 1.4375x
- VE_DNLP_RL_08, // max_contrast = 1.5000x
- VE_DNLP_RL_09, // max_contrast = 1.5625x
- VE_DNLP_RL_10, // max_contrast = 1.6250x
- VE_DNLP_RL_11, // max_contrast = 1.6875x
- VE_DNLP_RL_12, // max_contrast = 1.7500x
- VE_DNLP_RL_13, // max_contrast = 1.8125x
- VE_DNLP_RL_14, // max_contrast = 1.8750x
- VE_DNLP_RL_15, // max_contrast = 1.9375x
- VE_DNLP_RL_16, // max_contrast = 2.0000x
-} ve_dnlp_rl_t;
-
-typedef enum ve_dnlp_ext_e {
- VE_DNLP_EXT_00 = 0, // weak
- VE_DNLP_EXT_01,
- VE_DNLP_EXT_02,
- VE_DNLP_EXT_03,
- VE_DNLP_EXT_04,
- VE_DNLP_EXT_05,
- VE_DNLP_EXT_06,
- VE_DNLP_EXT_07,
- VE_DNLP_EXT_08,
- VE_DNLP_EXT_09,
- VE_DNLP_EXT_10,
- VE_DNLP_EXT_11,
- VE_DNLP_EXT_12,
- VE_DNLP_EXT_13,
- VE_DNLP_EXT_14,
- VE_DNLP_EXT_15,
- VE_DNLP_EXT_16, // strong
-} ve_dnlp_ext_t;
-
-typedef struct ve_bext_s {
- unsigned char en;
- unsigned char start;
- unsigned char slope1;
- unsigned char midpt;
- unsigned char slope2;
-} ve_bext_t;
-
-typedef struct ve_dnlp_s {
- unsigned int en;
- enum ve_dnlp_rt_e rt;
- enum ve_dnlp_rl_e rl;
- enum ve_dnlp_ext_e black;
- enum ve_dnlp_ext_e white;
-} ve_dnlp_t;
-typedef struct ve_hist_s {
- unsigned long long sum;
- int width;
- int height;
- int ave;
-} ve_hist_t;
-
-typedef struct vpp_hist_param_s {
- unsigned int vpp_hist_pow;
- unsigned int vpp_luma_sum;
- unsigned int vpp_pixel_sum;
- unsigned short vpp_histgram[64];
-}vpp_hist_param_t;
-
-/*typedef struct ve_dnlp_table_s {
- unsigned int en;
- unsigned int method;
- unsigned int cliprate;
- unsigned int lowrange;
- unsigned int hghrange;
- unsigned int lowalpha;
- unsigned int midalpha;
- unsigned int hghalpha;
-} ve_dnlp_table_t;*/
-/*typedef struct ve_dnlp_table_s {
- unsigned int en;
- unsigned int method;
- unsigned int cliprate;
- unsigned int lowrange;
- unsigned int hghrange;
- unsigned int lowalpha;
- unsigned int midalpha;
- unsigned int hghalpha;
- unsigned int adj_level;
- unsigned int new_adj_level;
- unsigned int new_mvreflsh;
- unsigned int new_gmma_rate;
- unsigned int new_lowalpha;
- unsigned int new_hghalpha;
- unsigned int new_sbgnbnd;
- unsigned int new_sendbnd;
- unsigned int new_clashBgn;
- unsigned int new_clashEnd;
- unsigned int new_cliprate;
- unsigned int new_mtdbld_rate;
- unsigned int new_blkgma_rate;
-} ve_dnlp_table_t;*/
-typedef struct ve_dnlp_table_s {
- unsigned int en;
- unsigned int method;
- unsigned int cliprate;
- unsigned int lowrange;
- unsigned int hghrange;
- unsigned int lowalpha;
- unsigned int midalpha;
- unsigned int hghalpha;
- unsigned int adj_level;
- unsigned int new_adj_level;
- unsigned int new_mvreflsh;
- unsigned int new_gmma_rate;
- unsigned int new_lowalpha;
- unsigned int new_hghalpha;
- unsigned int new_sbgnbnd;
- unsigned int new_sendbnd;
- unsigned int new_clashBgn;
- unsigned int new_clashEnd;
- unsigned int new_cliprate;
- unsigned int new_mtdbld_rate;
- unsigned int new_dnlp_pst_gmarat;
- unsigned int dnlp_sel;
- unsigned int dnlp_blk_cctr;/*blk signal add brightness*/
- unsigned int dnlp_brgt_ctrl;
- unsigned int dnlp_brgt_range;
- unsigned int dnlp_brght_add;
- unsigned int dnlp_brght_max;
- unsigned int dnlp_almst_wht;
- unsigned int dnlp_hghbin;/*1*/
- unsigned int dnlp_hghnum;
- unsigned int dnlp_lowbin;
- unsigned int dnlp_lownum;
- unsigned int dnlp_bkgend;
- unsigned int dnlp_bkgert;
- unsigned int dnlp_blkext;
- unsigned int dnlp_whtext;
- unsigned int dnlp_bextmx;
- unsigned int dnlp_wextmx;
- unsigned int dnlp_smhist_ck;
- unsigned int dnlp_glb_crate;/*12*/
-
- unsigned int dnlp_pstgma_brghtrate;
- unsigned int dnlp_pstgma_brghtrat1;
- unsigned int dnlp_wext_autorat;
- unsigned int dnlp_cliprate_min;
- unsigned int dnlp_adpcrat_lbnd;
- unsigned int dnlp_adpcrat_hbnd;
- unsigned int dnlp_adpmtd_lbnd;
- unsigned int dnlp_adpmtd_hbnd;
- unsigned int dnlp_set_bext;
- unsigned int dnlp_set_wext;
- unsigned int dnlp_satur_rat;
- unsigned int dnlp_satur_max;
- unsigned int blk_prct_rng;
- unsigned int blk_prct_max;
- unsigned int dnlp_lowrange;
- unsigned int dnlp_hghrange;
- unsigned int dnlp_auto_rng;
- unsigned int dnlp_bin0_absmax;
- unsigned int dnlp_bin0_sbtmax;
- unsigned int dnlp_adpalpha_lrate;
- unsigned int dnlp_adpalpha_hrate;
-
- unsigned int dnlp_lrate00;/*0-64bin curve slope*/
- unsigned int dnlp_lrate02;
- unsigned int dnlp_lrate04;
- unsigned int dnlp_lrate06;
- unsigned int dnlp_lrate08;
- unsigned int dnlp_lrate10;
- unsigned int dnlp_lrate12;
- unsigned int dnlp_lrate14;
- unsigned int dnlp_lrate16;
- unsigned int dnlp_lrate18;
- unsigned int dnlp_lrate20;
- unsigned int dnlp_lrate22;
- unsigned int dnlp_lrate24;
- unsigned int dnlp_lrate26;
- unsigned int dnlp_lrate28;
- unsigned int dnlp_lrate30;
- unsigned int dnlp_lrate32;
- unsigned int dnlp_lrate34;
- unsigned int dnlp_lrate36;
- unsigned int dnlp_lrate38;
- unsigned int dnlp_lrate40;
- unsigned int dnlp_lrate42;
- unsigned int dnlp_lrate44;
- unsigned int dnlp_lrate46;
- unsigned int dnlp_lrate48;
- unsigned int dnlp_lrate50;
- unsigned int dnlp_lrate52;
- unsigned int dnlp_lrate54;
- unsigned int dnlp_lrate56;
- unsigned int dnlp_lrate58;
- unsigned int dnlp_lrate60;
- unsigned int dnlp_lrate62;
-} ve_dnlp_table_t;
-typedef struct ve_hsvs_s {
- unsigned char en;
- unsigned char peak_gain_h1;
- unsigned char peak_gain_h2;
- unsigned char peak_gain_h3;
- unsigned char peak_gain_h4;
- unsigned char peak_gain_h5;
- unsigned char peak_gain_v1;
- unsigned char peak_gain_v2;
- unsigned char peak_gain_v3;
- unsigned char peak_gain_v4;
- unsigned char peak_gain_v5;
- unsigned char peak_gain_v6;
- unsigned char hpeak_slope1;
- unsigned char hpeak_slope2;
- unsigned char hpeak_thr1;
- unsigned char hpeak_thr2;
- unsigned char hpeak_nlp_cor_thr;
- unsigned char hpeak_nlp_gain_pos;
- unsigned char hpeak_nlp_gain_neg;
- unsigned char vpeak_slope1;
- unsigned char vpeak_slope2;
- unsigned char vpeak_thr1;
- unsigned char vpeak_thr2;
- unsigned char vpeak_nlp_cor_thr;
- unsigned char vpeak_nlp_gain_pos;
- unsigned char vpeak_nlp_gain_neg;
- unsigned char speak_slope1;
- unsigned char speak_slope2;
- unsigned char speak_thr1;
- unsigned char speak_thr2;
- unsigned char speak_nlp_cor_thr;
- unsigned char speak_nlp_gain_pos;
- unsigned char speak_nlp_gain_neg;
- unsigned char peak_cor_gain;
- unsigned char peak_cor_thr_l;
- unsigned char peak_cor_thr_h;
- unsigned char vlti_step;
- unsigned char vlti_step2;
- unsigned char vlti_thr;
- unsigned char vlti_gain_pos;
- unsigned char vlti_gain_neg;
- unsigned char vlti_blend_factor;
- unsigned char hlti_step;
- unsigned char hlti_thr;
- unsigned char hlti_gain_pos;
- unsigned char hlti_gain_neg;
- unsigned char hlti_blend_factor;
- unsigned char vlimit_coef_h;
- unsigned char vlimit_coef_l;
- unsigned char hlimit_coef_h;
- unsigned char hlimit_coef_l;
- unsigned char cti_444_422_en;
- unsigned char cti_422_444_en;
- unsigned char cti_blend_factor;
- unsigned char vcti_buf_en;
- unsigned char vcti_buf_mode_c5l;
- unsigned char vcti_filter;
- unsigned char hcti_step;
- unsigned char hcti_step2;
- unsigned char hcti_thr;
- unsigned char hcti_gain;
- unsigned char hcti_mode_median;
-} ve_hsvs_t;
-
-typedef struct ve_ccor_s {
- unsigned char en;
- unsigned char slope;
- unsigned char thr;
-} ve_ccor_t;
-
-typedef struct ve_benh_s {
- unsigned char en;
- unsigned char cb_inc;
- unsigned char cr_inc;
- unsigned char gain_cr;
- unsigned char gain_cb4cr;
- unsigned char luma_h;
- unsigned char err_crp;
- unsigned char err_crn;
- unsigned char err_cbp;
- unsigned char err_cbn;
-} ve_benh_t;
-
-typedef struct ve_cbar_s {
- unsigned char en;
- unsigned char wid;
- unsigned char cr;
- unsigned char cb;
- unsigned char y;
-} ve_cbar_t;
-typedef struct ve_demo_s {
- unsigned char bext;
- unsigned char dnlp;
- unsigned char hsvs;
- unsigned char ccor;
- unsigned char benh;
- enum ve_demo_pos_e pos;
- unsigned long wid;
- struct ve_cbar_s cbar;
-} ve_demo_t;
-
-typedef struct vdo_meas_s {
- //...
-} vdo_meas_t;
-
-typedef struct ve_regmap_s {
- unsigned long reg[43];
-} ve_regmap_t;
-
-// ***************************************************************************
-// *** MACRO definitions **********
-// ***************************************************************************
-
-// ***************************************************************************
-// *** FUNCTION definitions **********
-// ***************************************************************************
-
-#endif // _VE_H
diff --git a/libtv/tv/CFrontEnd.cpp b/libtv/tv/CFrontEnd.cpp
index 41d52ce..0e47deb 100644
--- a/libtv/tv/CFrontEnd.cpp
+++ b/libtv/tv/CFrontEnd.cpp
@@ -427,9 +427,11 @@ int CFrontEnd::addColorAutoFlag(int std)
{
return std | V4L2_COLOR_STD_AUTO;
}
+
v4l2_std_id CFrontEnd::enumToStdAndColor(int videoStd, int audioStd)
{
v4l2_std_id tmpTunerStd = 0;
+
if (videoStd == CC_ATV_VIDEO_STD_PAL) {
tmpTunerStd |= V4L2_COLOR_STD_PAL;
if (audioStd == CC_ATV_AUDIO_STD_DK) {
@@ -441,7 +443,7 @@ v4l2_std_id CFrontEnd::enumToStdAndColor(int videoStd, int audioStd)
} else if (audioStd == CC_ATV_AUDIO_STD_M) {
tmpTunerStd |= V4L2_STD_PAL_M;
}
- } else if (videoStd == CC_ATV_VIDEO_STD_NTSC || videoStd == CC_ATV_VIDEO_STD_AUTO) {
+ } else if (videoStd == CC_ATV_VIDEO_STD_NTSC) {
tmpTunerStd |= V4L2_COLOR_STD_NTSC;
if (audioStd == CC_ATV_AUDIO_STD_DK) {
tmpTunerStd |= V4L2_STD_PAL_DK;
@@ -465,8 +467,8 @@ v4l2_std_id CFrontEnd::enumToStdAndColor(int videoStd, int audioStd)
} else if (audioStd == CC_ATV_AUDIO_STD_L) {
tmpTunerStd |= V4L2_STD_SECAM_L;
}
-
}
+
return tmpTunerStd;
}
diff --git a/libtv/tv/CTv.cpp b/libtv/tv/CTv.cpp
index b9d03a3..2b4ef77 100644
--- a/libtv/tv/CTv.cpp
+++ b/libtv/tv/CTv.cpp
@@ -1951,7 +1951,7 @@ int CTv::OpenTv ( void )
SetAudioVolDigitLUTTable(SOURCE_MPEG);
SSMSetHDCPKey();
- system ( "/system/bin/dec" );
+ system ( "/vendor/bin/dec" );
value = config_get_str ( CFG_SECTION_TV, CFG_TVIN_DISPLAY_FREQ_AUTO, "null" );
if ( strcmp ( value, "enable" ) == 0 ) {
@@ -1978,7 +1978,7 @@ int CTv::OpenTv ( void )
mFrontDev->autoLoadFE();
mAv.Open();
resetDmxAndAvSource();
- mDevicesPollStatusDetectThread.startDetect();
+ //mDevicesPollStatusDetectThread.startDetect();
//ClearAnalogFrontEnd();
InitCurrenSignalInfo();
@@ -2025,31 +2025,19 @@ int CTv::StartTvLock ()
return 0;
}
-int CTv::DoInstabootSuspend()
-{
- CTvDatabase::GetTvDb()->UnInitTvDb();
- return 0;
-}
-
-int CTv::DoInstabootResume()
+int CTv::startTvDetect()
{
- CTvDatabase::GetTvDb()->InitTvDb(TV_DB_PATH);
+ mDevicesPollStatusDetectThread.startDetect();
return 0;
}
int CTv::DoSuspend(int type)
{
- if (type == 1) {
- DoInstabootSuspend();
- }
return 0;
}
int CTv::DoResume(int type)
{
- if (type == 1) {
- DoInstabootResume();
- }
return 0;
}
@@ -2645,7 +2633,7 @@ void CTv::onHDMIAudioCheckLoop()
}
void CTv::onBootvideoRunning() {
- LOGD("%s,boot video is running", __FUNCTION__);
+ //LOGD("%s,boot video is running", __FUNCTION__);
}
void CTv::onBootvideoStopped() {
@@ -3182,12 +3170,12 @@ int CTv::Tv_HDMIEDIDFileSelect(tv_hdmi_port_id_t port, tv_hdmi_edid_version_t ve
config_set_str(CFG_SECTION_TV, CS_HDMI_EDID_USE_CFG, "customer_edid");
if ( HDMI_EDID_VER_14== version ) {
- sprintf(edid_path, "/system/etc/port_%d.bin", 14);
+ sprintf(edid_path, "/vendor/etc/port_%d.bin", 14);
} else if (HDMI_EDID_VER_20== version) {
- sprintf(edid_path, "/system/etc/port_%d.bin", 20);
+ sprintf(edid_path, "/vendor/etc/port_%d.bin", 20);
} else {
LOGE("%s HDMI EDID VERSION error!\n", __FUNCTION__);
- sprintf(edid_path, "/system/etc/port_%d.bin", 14);
+ sprintf(edid_path, "/vendor/etc/port_%d.bin", 14);
}
sprintf(edid_path_cfg, "ssm.handle.hdmi.port%d.edid.file.path", port);
if (access(edid_path, 0) < 0) {
@@ -3634,7 +3622,7 @@ int CTv::SetAudioMuteForTv(int muteOrUnmute)
ret |= SetAudioI2sMute(mAudioMuteStatusForTv);
ret |= SetAudioSPDIFMute(mAudioMuteStatusForTv);
ret |= mAudioAlsa.SetAudioARCSwitch(!mAudioMuteStatusForTv);
- AudioSystem::setStreamMute(AUDIO_STREAM_MUSIC, mAudioMuteStatusForTv);
+ //AudioSystem::setStreamMute(AUDIO_STREAM_MUSIC, mAudioMuteStatusForTv);
return ret;
}
diff --git a/libtv/tv/CTv.h b/libtv/tv/CTv.h
index 1da3f93..2944991 100644
--- a/libtv/tv/CTv.h
+++ b/libtv/tv/CTv.h
@@ -51,11 +51,11 @@ using namespace android;
static const char *TV_CONFIG_FILE_PATH = "/param/tvconfig.conf";
static const char *TV_DB_PATH = "/param/dtv.db";
-static const char *TV_CONFIG_FILE_SYSTEM_PATH = "/system/etc/tvconfig.conf";
+static const char *TV_CONFIG_FILE_SYSTEM_PATH = "/vendor/etc/tvconfig.conf";
static const char *TV_CONFIG_FILE_PARAM_PATH = "/param/tvconfig.conf";
-static const char *TV_CHANNEL_LIST_SYSTEM_PATH = "/system/etc/tv_default.xml";
+static const char *TV_CHANNEL_LIST_SYSTEM_PATH = "/vendor/etc/tv_default.xml";
static const char *TV_CHANNEL_LIST_PARAM_PATH = "/param/tv_default.xml";
-static const char *TV_RRT_DEFINE_SYSTEM_PATH = "/system/etc/tv_rrt_define.xml";
+static const char *TV_RRT_DEFINE_SYSTEM_PATH = "/vendor/etc/tv_rrt_define.xml";
#define LCD_ENABLE "/sys/class/lcd/enable"
#define BL_LOCAL_DIMING_FUNC_ENABLE "/sys/class/aml_ldim/func_en"
@@ -152,8 +152,8 @@ public:
virtual int StopTvLock ( void );
virtual int DoSuspend(int type);
virtual int DoResume(int type);
- virtual int DoInstabootSuspend();
- virtual int DoInstabootResume();
+ virtual int startTvDetect();
+
virtual TvRunStatus_t GetTvStatus();
virtual int ClearAnalogFrontEnd();
virtual tv_source_input_t GetLastSourceInput (void);
diff --git a/libtv/tv/CTvScanner.cpp b/libtv/tv/CTvScanner.cpp
index 13aa735..4de4c3c 100644
--- a/libtv/tv/CTvScanner.cpp
+++ b/libtv/tv/CTvScanner.cpp
@@ -1506,7 +1506,7 @@ int CTvScanner::createAtvParas(AM_SCAN_ATVCreatePara_t &atv_para, CFrontEnd::FEP
LOGD("channel list size = %d", size);
if (size == 0) {
- CTvDatabase::GetTvDb()->importXmlToDB("/etc/tv_default.xml");
+ CTvDatabase::GetTvDb()->importXmlToDB(CTV_DATABASE_DEFAULT_XML);
CTvRegion::getChannelListByName((char *)list_name, vcp);
size = vcp.size();
}
@@ -1590,7 +1590,7 @@ int CTvScanner::createDtvParas(AM_SCAN_DTVCreatePara_t &dtv_para, CFrontEnd::FEP
LOGD("frequncy: %d not found in channel list [%s], break", scp.getDtvFrequency1(), list_name);
return -1;
}
- CTvDatabase::GetTvDb()->importXmlToDB("/etc/tv_default.xml");
+ CTvDatabase::GetTvDb()->importXmlToDB(CTV_DATABASE_DEFAULT_XML);
CTvRegion::getChannelListByName((char *)list_name, vcp);
size = vcp.size();
}
diff --git a/libtv/tvdb/CTvDatabase.cpp b/libtv/tvdb/CTvDatabase.cpp
index adf56a2..e51449e 100644
--- a/libtv/tvdb/CTvDatabase.cpp
+++ b/libtv/tvdb/CTvDatabase.cpp
@@ -76,7 +76,7 @@ int CTvDatabase::InitTvDb(const char *path)
//setup and path set
AM_DB_Setup((char *)path, getHandle());
if (isFreqListExist() == false) {
- importXmlToDB("/etc/tv_default.xml");
+ importXmlToDB(CTV_DATABASE_DEFAULT_XML);
LOGD("scan region table is NULL, so import freq XML again\n");
}
} else {
@@ -99,7 +99,7 @@ int CTvDatabase::InitTvDb(const char *path)
ClearDbTable();
//insert 256 ATV Program
//load init date
- importXmlToDB("/etc/tv_default.xml");
+ importXmlToDB(CTV_DATABASE_DEFAULT_XML);
config_set_int("TV", "tv_db_created", 1);
}
}
diff --git a/libtv/tvdb/CTvDatabase.h b/libtv/tvdb/CTvDatabase.h
index f604000..9313e1f 100644
--- a/libtv/tvdb/CTvDatabase.h
+++ b/libtv/tvdb/CTvDatabase.h
@@ -22,6 +22,8 @@
#include "CTvLog.h"
+#define CTV_DATABASE_DEFAULT_XML "/vendor/etc/tv_default.xml"
+
using namespace android;
//¸ù¾ÝÏÖÔÚÇé¿öÐèÇó,´ËÀàÖ»Õë¶ÔµçÊÓ¹¦Äܰ󶨵ĵ¥ÎļþÊý¾Ý¿â,ÓëAM_DBÓйØÁªÐÔ
//ÎÞ½âµÄ¹ØÁª
diff --git a/libtv/tvin/CDevicesPollStatusDetect.cpp b/libtv/tvin/CDevicesPollStatusDetect.cpp
index 1cfa087..7ad7da0 100644
--- a/libtv/tvin/CDevicesPollStatusDetect.cpp
+++ b/libtv/tvin/CDevicesPollStatusDetect.cpp
@@ -8,7 +8,7 @@
*/
#define LOG_TAG "tvserver"
-#define LOG_TV_TAG "CDevicesPollStatusDetect"
+#define LOG_TV_TAG "CDevicesDetect"
#include "CTvin.h"
#include <CTvLog.h>
@@ -28,6 +28,7 @@
CDevicesPollStatusDetect::CDevicesPollStatusDetect()
{
+ mVdinDetectFd = -1;
mpObserver = NULL;
if (mEpoll.create() < 0) {
return;
@@ -44,12 +45,6 @@ CDevicesPollStatusDetect::CDevicesPollStatusDetect()
m_event.events = EPOLLIN | EPOLLET;
mEpoll.add(mHdmiDetectFile.getFd(), &m_event);
}
- //signal status
- if (CTvin::getInstance()->m_vdin_dev_fd > 0) {
- m_event.data.fd = CTvin::getInstance()->m_vdin_dev_fd;
- m_event.events = EPOLLIN | EPOLLET;
- mEpoll.add(CTvin::getInstance()->m_vdin_dev_fd, &m_event);
- }
}
CDevicesPollStatusDetect::~CDevicesPollStatusDetect()
@@ -58,10 +53,50 @@ CDevicesPollStatusDetect::~CDevicesPollStatusDetect()
int CDevicesPollStatusDetect::startDetect()
{
+ //signal status
+ int fd = CTvin::getInstance()->getVdinDeviceFd();
+ if (fd > 0) {
+ m_event.data.fd = fd;
+ m_event.events = EPOLLIN | EPOLLET;
+ mEpoll.add(fd, &m_event);
+
+ mVdinDetectFd = fd;
+
+ LOGD("startDetect get vdin device fd :%d", fd);
+ }
this->run("CDevicesPollStatusDetect");
return 0;
}
+char* CDevicesPollStatusDetect::inputToName(tv_source_input_t srcInput) {
+ char* inputName[] = {
+ /*"INVALID",*/
+ "TV",
+ "AV1",
+ "AV2",
+ "YPBPR1",
+ "YPBPR2",
+ "HDMI1",
+ "HDMI2",
+ "HDMI3",
+ "HDMI4",
+ "VGA,",
+ "MPEG",
+ "DTV",
+ "SVIDEO",
+ "IPTV",
+ "DUMMY",
+ "SPDIF",
+ "ADTV",
+ "MAX"
+ };
+
+ if (SOURCE_INVALID == srcInput)
+ return "INVALID";
+ else
+ return inputName[srcInput];
+}
+
int CDevicesPollStatusDetect::SourceInputMaptoChipHdmiPort(tv_source_input_t source_input)
{
tvin_port_t source_port = TVIN_PORT_NULL;
@@ -83,7 +118,6 @@ int CDevicesPollStatusDetect::SourceInputMaptoChipHdmiPort(tv_source_input_t sou
return HDMI_DETECT_STATUS_BIT_A;
break;
}
-
}
tv_source_input_t CDevicesPollStatusDetect::ChipHdmiPortMaptoSourceInput(int port)
@@ -152,10 +186,11 @@ int CDevicesPollStatusDetect::GetSourceConnectStatus(tv_source_input_t source_in
break;
}
default:
- LOGD("GetSourceConnectStatus not support source!!!!!!!!!!!!!!!1");
+ LOGD("GetSourceConnectStatus not support source :%s", inputToName(source_input));
break;
}
+ LOGD("GetSourceConnectStatus source :%s, status:%s", inputToName(source_input), (CC_SOURCE_PLUG_IN == PlugStatus)?"plug in":"plug out");
return PlugStatus;
}
@@ -165,7 +200,7 @@ bool CDevicesPollStatusDetect::threadLoop()
return false;
}
- LOGD("%s, entering...\n", "TV");
+ LOGD("detect thread start");
prctl(PR_SET_NAME, (unsigned long)"CDevicesPollStatusDetect thread loop");
//init status
@@ -200,6 +235,7 @@ bool CDevicesPollStatusDetect::threadLoop()
source = SOURCE_AV2;
}
+ LOGD("%s detected\n", inputToName((tv_source_input_t)source));
if (mpObserver != NULL) {
mpObserver->onSourceConnect(source, plug);
}
@@ -209,13 +245,14 @@ bool CDevicesPollStatusDetect::threadLoop()
} else if (fd == mHdmiDetectFile.getFd()) { //hdmi
int hdmi_status = 0;
mHdmiDetectFile.readFile((void *)(&hdmi_status), sizeof(int));
+ LOGD("HDMI detected\n");
int source = -1, plug = -1;
if ((hdmi_status & HDMI_DETECT_STATUS_BIT_A) != (m_hdmi_status & HDMI_DETECT_STATUS_BIT_A) ) {
if ((hdmi_status & HDMI_DETECT_STATUS_BIT_A) == HDMI_DETECT_STATUS_BIT_A) {
source = ChipHdmiPortMaptoSourceInput(HDMI_DETECT_STATUS_BIT_A);
plug = CC_SOURCE_PLUG_IN;
} else {
- source = ChipHdmiPortMaptoSourceInput(HDMI_DETECT_STATUS_BIT_A);;
+ source = ChipHdmiPortMaptoSourceInput(HDMI_DETECT_STATUS_BIT_A);
plug = CC_SOURCE_PLUG_OUT;
}
mpObserver->onSourceConnect(source, plug);
@@ -226,7 +263,7 @@ bool CDevicesPollStatusDetect::threadLoop()
source = ChipHdmiPortMaptoSourceInput(HDMI_DETECT_STATUS_BIT_B);
plug = CC_SOURCE_PLUG_IN;
} else {
- source = ChipHdmiPortMaptoSourceInput(HDMI_DETECT_STATUS_BIT_B);;
+ source = ChipHdmiPortMaptoSourceInput(HDMI_DETECT_STATUS_BIT_B);
plug = CC_SOURCE_PLUG_OUT;
}
mpObserver->onSourceConnect(source, plug);
@@ -237,7 +274,7 @@ bool CDevicesPollStatusDetect::threadLoop()
source = ChipHdmiPortMaptoSourceInput(HDMI_DETECT_STATUS_BIT_C);
plug = CC_SOURCE_PLUG_IN;
} else {
- source = ChipHdmiPortMaptoSourceInput(HDMI_DETECT_STATUS_BIT_C);;
+ source = ChipHdmiPortMaptoSourceInput(HDMI_DETECT_STATUS_BIT_C);
plug = CC_SOURCE_PLUG_OUT;
}
mpObserver->onSourceConnect(source, plug);
@@ -248,7 +285,7 @@ bool CDevicesPollStatusDetect::threadLoop()
source = ChipHdmiPortMaptoSourceInput(HDMI_DETECT_STATUS_BIT_D);
plug = CC_SOURCE_PLUG_IN;
} else {
- source = ChipHdmiPortMaptoSourceInput(HDMI_DETECT_STATUS_BIT_D);;
+ source = ChipHdmiPortMaptoSourceInput(HDMI_DETECT_STATUS_BIT_D);
plug = CC_SOURCE_PLUG_OUT;
}
mpObserver->onSourceConnect(source, plug);
@@ -258,7 +295,8 @@ bool CDevicesPollStatusDetect::threadLoop()
mpObserver->onSetPQPCMode(source, pc_mode_status);//pc_mode_status:1 PC mode on;0 PC mode off;
m_hdmi_status = hdmi_status;
- }else if ( fd == CTvin::getInstance()->m_vdin_dev_fd ) {
+ }else if ( fd == mVdinDetectFd ) {
+ LOGD("VDIN detected\n");
if (mpObserver != NULL) {
mpObserver->onVdinSignalChange();
}
@@ -271,7 +309,7 @@ bool CDevicesPollStatusDetect::threadLoop()
}
}//exit
- LOGD("%s, exiting...\n", "CDevicesPollStatusDetect");
+ LOGD("CDevicesPollStatusDetect, exiting...\n");
//return true, run again, return false,not run.
return false;
}
diff --git a/libtv/tvin/CDevicesPollStatusDetect.h b/libtv/tvin/CDevicesPollStatusDetect.h
index 3507b86..a0cd307 100644
--- a/libtv/tvin/CDevicesPollStatusDetect.h
+++ b/libtv/tvin/CDevicesPollStatusDetect.h
@@ -72,7 +72,9 @@ public:
};
private:
bool threadLoop();
+ char* inputToName(tv_source_input_t srcInput);
+ int mVdinDetectFd;
ISourceConnectObserver *mpObserver;
Epoll mEpoll;
mutable Mutex mLock;
diff --git a/libtv/tvin/CTvin.cpp b/libtv/tvin/CTvin.cpp
index 133bdbf..a1aa484 100644
--- a/libtv/tvin/CTvin.cpp
+++ b/libtv/tvin/CTvin.cpp
@@ -60,10 +60,8 @@ CTvin *CTvin::getInstance()
return mInstance;
}
-CTvin::CTvin()
+CTvin::CTvin() : mAfeDevFd(-1), mVdin0DevFd(-1)
{
- m_vdin_dev_fd = -1;
- afe_dev_fd = -1;
m_snow_status = false;
m_tvin_param.index = 0;
@@ -88,7 +86,7 @@ CTvin::CTvin()
mSourceInputToPortMap[SOURCE_DTV] = TVIN_PORT_DTV;
mSourceInputToPortMap[SOURCE_IPTV] = TVIN_PORT_BT656;
mSourceInputToPortMap[SOURCE_SPDIF] = TVIN_PORT_CVBS3;
- init_vdin();
+ //init_vdin();
}
CTvin::~CTvin()
@@ -123,61 +121,61 @@ int CTvin::VDIN_AddPath ( const char *videopath )
char str[1024 + 1] = {0};
sprintf (str, "%s", videopath);
- return tvWriteSysfs("/sys/class/vfm/map", str);
+ return tvWriteSysfs(SYS_VFM_MAP_PATH, str);
}
int CTvin::VDIN_RmDefPath ( void )
{
- return tvWriteSysfs("/sys/class/vfm/map", "rm default");
+ return tvWriteSysfs(SYS_VFM_MAP_PATH, "rm default");
}
int CTvin::VDIN_RmTvPath ( void )
{
- return tvWriteSysfs("/sys/class/vfm/map", "rm tvpath");
+ return tvWriteSysfs(SYS_VFM_MAP_PATH, "rm tvpath");
}
int CTvin::VDIN_AddVideoPath ( int selPath )
{
int ret = -1;
- int Existamlvideo2 = isFileExist(AMLVIDEO2_DEV_PATH);
-
+ std::string vdinPath;
+ std::string suffixVideoPath("ppmgr deinterlace amvideo");
+ bool amlvideo2Exist = isFileExist(AMLVIDEO2_DEV_PATH);
switch ( selPath ) {
case TV_PATH_VDIN_AMLVIDEO2_PPMGR_DEINTERLACE_AMVIDEO:
- if (Existamlvideo2) {
- ret = VDIN_AddPath ( "add tvpath vdin0 amlvideo2.0 ppmgr deinterlace amvideo" );
- }
- else {
- ret = VDIN_AddPath ( "add tvpath vdin0 ppmgr deinterlace amvideo" );
- }
+ if (amlvideo2Exist)
+ vdinPath = "add tvpath vdin0 amlvideo2.0 ";
+ else
+ vdinPath = "add tvpath vdin0 ";
break;
case TV_PATH_DECODER_AMLVIDEO2_PPMGR_DEINTERLACE_AMVIDEO:
- if (Existamlvideo2) {
- ret = VDIN_AddPath ( "add default decoder amlvideo2.0 ppmgr deinterlace amvideo" );
- }
- else {
- ret = VDIN_AddPath ( "add default decoder ppmgr deinterlace amvideo" );
- }
+ if (amlvideo2Exist)
+ vdinPath = "add default decoder amlvideo2.0 ";
+ else
+ vdinPath = "add default decoder ";
break;
default:
break;
}
+ vdinPath += suffixVideoPath;
+ ret = VDIN_AddPath (vdinPath.c_str());
return ret;
}
-int CTvin::VDIN_RmPreviewPath ( void )
-{
- return tvWriteSysfs("/sys/class/vfm/map", "rm previewpath");
+int CTvin::getVdinDeviceFd() {
+ if (mVdin0DevFd < 0) {
+ mVdin0DevFd = VDIN_OpenModule();
+ }
+ return mVdin0DevFd;
}
int CTvin::VDIN_OpenModule()
{
char file_name[64];
sprintf ( file_name, "/dev/vdin%d", CC_SEL_VDIN_DEV );
- m_vdin_dev_fd = open ( file_name, O_RDWR );
-
- if ( m_vdin_dev_fd < 0 ) {
+ int fd = open ( file_name, O_RDWR );
+ if ( fd < 0 ) {
LOGW ( "Open %s error(%s)!\n", file_name, strerror ( errno ) );
return -1;
}
@@ -185,21 +183,17 @@ int CTvin::VDIN_OpenModule()
memset ( &gTvinVDINParam, 0, sizeof ( gTvinVDINParam ) );
memset ( &gTvinVDINSignalInfo, 0, sizeof ( gTvinVDINSignalInfo ) );
- LOGD ( "Open vdin module vdin_dev_fd = [%d]", m_vdin_dev_fd );
-
- return m_vdin_dev_fd;
-}
+ LOGD ( "Open vdin%d module fd = [%d]", CC_SEL_VDIN_DEV, fd );
-int CTvin::VDIN_GetVdinFd()
-{
- return m_vdin_dev_fd;
+ //mVdin0DevFd = fd;
+ return fd;
}
int CTvin::VDIN_CloseModule()
{
- if ( m_vdin_dev_fd != -1 ) {
- close ( m_vdin_dev_fd );
- m_vdin_dev_fd = -1;
+ if ( mVdin0DevFd != -1 ) {
+ close ( mVdin0DevFd );
+ mVdin0DevFd = -1;
}
return 0;
@@ -211,12 +205,16 @@ int CTvin::VDIN_DeviceIOCtl ( int request, ... )
va_list ap;
void *arg;
- if ( m_vdin_dev_fd >= 0 ) {
+ if (mVdin0DevFd < 0) {
+ mVdin0DevFd = VDIN_OpenModule();
+ }
+
+ if ( mVdin0DevFd >= 0 ) {
va_start ( ap, request );
arg = va_arg ( ap, void * );
va_end ( ap );
- tmp_ret = ioctl ( m_vdin_dev_fd, request, arg );
+ tmp_ret = ioctl ( mVdin0DevFd, request, arg );
return tmp_ret;
}
@@ -505,23 +503,21 @@ int CTvin::VDIN_EnableRDMA ( int enable )
// AFE
int CTvin::AFE_OpenModule ( void )
{
- if ( afe_dev_fd < 0 ) {
- afe_dev_fd = open ( AFE_DEV_PATH, O_RDWR );
-
- if ( afe_dev_fd < 0 ) {
- LOGW ( "Open tvafe module, error(%s).\n", strerror ( errno ) );
- return -1;
- }
+ int fd = open ( AFE_DEV_PATH, O_RDWR );
+ if ( fd < 0 ) {
+ LOGW ( "Open tvafe module, error(%s).\n", strerror ( errno ) );
+ return -1;
}
- return afe_dev_fd;
+ LOGD ( "Open %s module fd = [%d]", AFE_DEV_PATH, fd );
+ return fd;
}
void CTvin::AFE_CloseModule ( void )
{
- if ( afe_dev_fd >= 0 ) {
- close ( afe_dev_fd );
- afe_dev_fd = -1;
+ if ( mAfeDevFd >= 0 ) {
+ close ( mAfeDevFd );
+ mAfeDevFd = -1;
}
}
@@ -531,12 +527,16 @@ int CTvin::AFE_DeviceIOCtl ( int request, ... )
va_list ap;
void *arg;
- if ( afe_dev_fd >= 0 ) {
+ if (mAfeDevFd < 0) {
+ mAfeDevFd = AFE_OpenModule();
+ }
+
+ if ( mAfeDevFd >= 0 ) {
va_start ( ap, request );
arg = va_arg ( ap, void * );
va_end ( ap );
- tmp_ret = ioctl ( afe_dev_fd, request, arg );
+ tmp_ret = ioctl ( mAfeDevFd, request, arg );
return tmp_ret;
}
@@ -544,11 +544,6 @@ int CTvin::AFE_DeviceIOCtl ( int request, ... )
return -1;
}
-int CTvin::AFE_GetDeviceFileHandle()
-{
- return afe_dev_fd;
-}
-
int CTvin::AFE_SetVGAEdid ( const unsigned char *ediddata )
{
int rt = -1;
@@ -658,7 +653,7 @@ int CTvin::AFE_VGAAutoAdjust ( struct tvafe_vga_parm_s *timingadj )
rt = AFE_DeviceIOCtl ( TVIN_IOC_G_AFE_CMD_STATUS, &CMDStatus );
if ( rt < 0 ) {
- LOGD ( "get afe CMD status, error(%s), fd(%d), return(%d).\n", strerror ( errno ), AFE_GetDeviceFileHandle(), rt );
+ LOGD ( "get afe CMD status, error(%s), return(%d).\n", strerror ( errno ), rt );
}
if ( ( CMDStatus == TVAFE_CMD_STATUS_IDLE ) || ( CMDStatus == TVAFE_CMD_STATUS_SUCCESSFUL ) ) {
@@ -754,7 +749,7 @@ int CTvin::AFE_GetVGAAutoAdjustCMDStatus ( tvafe_cmd_status_t *Status )
rt = AFE_DeviceIOCtl ( TVIN_IOC_G_AFE_CMD_STATUS, Status );
if ( rt < 0 ) {
- LOGW ( "AFE_GetVGAAutoAdjustStatus, get status, error(%s) fd(%d) return(%d)\n", strerror ( errno ), AFE_GetDeviceFileHandle(), rt );
+ LOGW ( "AFE_GetVGAAutoAdjustStatus, get status, error(%s) return(%d)\n", strerror ( errno ), rt );
return rt;
}
@@ -993,7 +988,7 @@ char *CTvin::get_cap_addr ( enum adc_cal_type_e calType )
for ( n = 0; n < 0x00ff; n++ ) {
if ( VDIN_DeviceIOCtl ( TVIN_IOC_G_SIG_INFO, &gTvinAFESignalInfo ) < 0 ) {
- LOGW ( "get_cap_addr, get signal info, error(%s),fd(%d).\n", strerror ( errno ), m_vdin_dev_fd );
+ LOGW ( "get_cap_addr, get signal info, error(%s),fd(%d).\n", strerror ( errno ), mVdin0DevFd );
return NULL;
} else {
if ( gTvinAFESignalInfo.status == TVIN_SIG_STATUS_STABLE ) {
@@ -1015,9 +1010,9 @@ char *CTvin::get_cap_addr ( enum adc_cal_type_e calType )
usleep ( 1000 );
if ( calType == CAL_YPBPR ) {
- dp = ( char * ) mmap ( NULL, COMP_CAP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, m_vdin_dev_fd, 0 );
+ dp = ( char * ) mmap ( NULL, COMP_CAP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, mVdin0DevFd, 0 );
} else {
- dp = ( char * ) mmap ( NULL, VGA_CAP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, m_vdin_dev_fd, 0 );
+ dp = ( char * ) mmap ( NULL, VGA_CAP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, mVdin0DevFd, 0 );
}
if ( dp == NULL ) {
@@ -1200,7 +1195,7 @@ int CTvin::get_frame_average ( enum adc_cal_type_e calType, struct adc_cal_s *me
}
if ( VDIN_DeviceIOCtl ( TVIN_IOC_START_DEC, &gTvinAFEParam ) < 0 ) {
- LOGW ( "get_frame_average, get vdin signal info, error(%s),fd(%d).\n", strerror ( errno ), m_vdin_dev_fd );
+ LOGW ( "get_frame_average, get vdin signal info, error(%s),fd(%d).\n", strerror ( errno ), mVdin0DevFd );
return 0;
}
@@ -1286,7 +1281,7 @@ int CTvin::AFE_GetMemData ( int typeSel, struct adc_cal_s *mem_data )
{
int rt = -1;
- if ( m_vdin_dev_fd < 0 || mem_data == NULL ) {
+ if ( mVdin0DevFd < 0 || mem_data == NULL ) {
LOGW ( "AFE_GetMemData, didn't open vdin fd, return!\n" );
return -1;
}
@@ -1295,7 +1290,7 @@ int CTvin::AFE_GetMemData ( int typeSel, struct adc_cal_s *mem_data )
memset ( &gTvinAFESignalInfo, 0, sizeof ( gTvinAFESignalInfo ) );
if ( VDIN_DeviceIOCtl ( TVIN_IOC_G_PARM, &gTvinAFEParam ) < 0 ) {
- LOGW ( "AFE_GetMemData, get vdin param, error(%s), fd(%d)!\n", strerror ( errno ), m_vdin_dev_fd );
+ LOGW ( "AFE_GetMemData, get vdin param, error(%s), fd(%d)!\n", strerror ( errno ), mVdin0DevFd );
return -1;
}
@@ -1963,14 +1958,11 @@ int CTvin::Tvin_RemovePath ( tv_path_type_t pathtype )
}
}
- } else {
- ret = -1;
}
return ret;
}
-
int CTvin::Tvin_CheckPathActive ( tv_path_type_t path_type)
{
FILE *f = NULL;
@@ -1984,9 +1976,9 @@ int CTvin::Tvin_CheckPathActive ( tv_path_type_t path_type)
int match;
int is_active = TV_PATH_STATUS_INACTIVE;
- f = fopen ( "/sys/class/vfm/map", "r" );
+ f = fopen ( SYS_VFM_MAP_PATH, "r" );
if ( !f ) {
- LOGE ( "%s, can not open /sys/class/vfm/map!\n", CFG_SECTION_TV );
+ LOGE ( "%s, can not open %s!\n", CFG_SECTION_TV, SYS_VFM_MAP_PATH );
return TV_PATH_STATUS_NO_DEV;
}
@@ -2017,7 +2009,7 @@ int CTvin::Tvin_CheckPathActive ( tv_path_type_t path_type)
int CTvin::Tv_init_afe ( void )
{
- AFE_OpenModule();
+ //AFE_OpenModule();
return 0;
}
diff --git a/libtv/tvin/CTvin.h b/libtv/tvin/CTvin.h
index 78cd06c..7b6edc7 100644
--- a/libtv/tvin/CTvin.h
+++ b/libtv/tvin/CTvin.h
@@ -16,6 +16,7 @@
#include <utils/Thread.h>
#include "../tv/CFrontEnd.h"
+#define SYS_VFM_MAP_PATH "/sys/class/vfm/map"
#define SYS_DISPLAY_MODE_PATH "/sys/class/display/mode"
#define DEPTH_LEVEL_2DTO3D 33
static const int DepthTable_2DTO3D[DEPTH_LEVEL_2DTO3D] = {
@@ -491,10 +492,10 @@ typedef struct tvafe_pin_mux_s {
// *** add more **********************************************
// ***************************************************************************
-typedef enum tvin_path_id_e {
+enum {
TV_PATH_VDIN_AMLVIDEO2_PPMGR_DEINTERLACE_AMVIDEO,
TV_PATH_DECODER_AMLVIDEO2_PPMGR_DEINTERLACE_AMVIDEO,
-} tvin_path_id_t;
+};
#define CAMERA_IOC_MAGIC 'C'
#define CAMERA_IOC_START _IOW(CAMERA_IOC_MAGIC, 0x01, struct camera_info_s)
@@ -650,8 +651,6 @@ public:
int VDIN_RmDefPath ( void );
int VDIN_RmTvPath ( void );
int VDIN_AddVideoPath ( int selPath );
- int VDIN_RmPreviewPath ( void );
- int VDIN_GetVdinFd();
int VDIN_OpenModule();
int VDIN_CloseModule();
@@ -683,10 +682,10 @@ public:
int VDIN_SetDIBypassProg ( int enable );
int VDIN_SetDIBypassDynamic ( int flag );
int VDIN_EnableRDMA ( int enable );
+
+ int getVdinDeviceFd();
int AFE_OpenModule ( void );
- void AFE_CloseModule ( void );
- int AFE_GetDeviceFileHandle();
- int AFE_SetCVBSStd ( tvin_sig_fmt_t cvbs_fmt );
+ void AFE_CloseModule ( void ); int AFE_SetCVBSStd ( tvin_sig_fmt_t cvbs_fmt );
int AFE_SetVGAEdid ( const unsigned char *ediddata );
int AFE_GetVGAEdid ( unsigned char *ediddata );
int AFE_SetADCTimingAdjust ( const struct tvafe_vga_parm_s *timingadj );
@@ -731,9 +730,6 @@ public:
static CTvin *getInstance();
- int m_vdin_dev_fd;
- bool m_snow_status;
-
public:
class CHDMIAudioCheck: public Thread {
public:
@@ -783,7 +779,9 @@ public:
private:
static CTvin *mInstance;
- int afe_dev_fd;
+ int mAfeDevFd;
+ int mVdin0DevFd;
+ bool m_snow_status;
tvin_parm_t m_tvin_param;
tvin_parm_t gTvinVDINParam;
tvin_info_t gTvinVDINSignalInfo;
diff --git a/libtv/tvsetting/TvKeyData.cpp b/libtv/tvsetting/TvKeyData.cpp
index 46d6d25..3f2e309 100644
--- a/libtv/tvsetting/TvKeyData.cpp
+++ b/libtv/tvsetting/TvKeyData.cpp
@@ -431,7 +431,7 @@ int SSMRefreshHDCPKey()
{
int ret = -1;
ret = SSMSetHDCPKey();
- system ( "/system/bin/dec" );
+ system ( "/vendor/bin/dec" );
return ret;
}
@@ -687,7 +687,7 @@ static void *SSMMacAddressStartWorkMainApp(void *data __unused)
while (GetMacAddressStartWorkThreadTurnOnFlag() == 1) {
pid = fork();
if (pid == 0) {
- if (execl("/system/bin/stop", "stop_eth_dhcpcd", "eth_dhcpcd", NULL)
+ if (execl("/vendor/bin/stop", "stop_eth_dhcpcd", "eth_dhcpcd", NULL)
< 0) {
_exit(-1);
}
diff --git a/libtv/tvsetting/audio_cfg.cpp b/libtv/tvsetting/audio_cfg.cpp
index bb97fb8..4347330 100644
--- a/libtv/tvsetting/audio_cfg.cpp
+++ b/libtv/tvsetting/audio_cfg.cpp
@@ -550,7 +550,7 @@ int GetUseAndroidVolEnable()
const char *GetAudExtDacLibPath()
{
- return config_get_str(CFG_SECTION_TV, "audio.external.dac.libpath", "/system/lib/libdac.so");
+ return config_get_str(CFG_SECTION_TV, "audio.external.dac.libpath", "/vendor/lib/libdac.so");
}
int GetKaraokAvEnable()
diff --git a/tvserver/Android.mk b/tvserver/Android.mk
index bed3f4b..3c5deab 100644
--- a/tvserver/Android.mk
+++ b/tvserver/Android.mk
@@ -34,14 +34,24 @@ include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES:= \
- main.cpp \
+ main_tvserver.cpp \
+ DroidTvServer.cpp \
+ DroidTvServiceIntf.cpp \
MemoryLeakTrackUtil.cpp \
TvService.cpp
LOCAL_SHARED_LIBRARIES += \
+ vendor.amlogic.hardware.tvserver@1.0_vendor \
+ vendor.amlogic.hardware.systemcontrol@1.0_vendor \
+ libbase \
+ libhidlbase \
+ libhidltransport \
+ libhidlmemory \
+ android.hidl.allocator@1.0 \
libutils \
libbinder \
libcutils \
+ liblog \
libtvbinder \
libtv
@@ -51,6 +61,8 @@ LOCAL_SHARED_LIBRARIES += \
libam_ver
LOCAL_C_INCLUDES := \
+ system/libhidl/transport/include/hidl \
+ system/libhidl/libhidlmemory/include \
$(LOCAL_PATH)/../libtv \
$(LOCAL_PATH)/../libtv/tvdb \
$(LOCAL_PATH)/../libtv/tv \
@@ -67,6 +79,7 @@ LOCAL_C_INCLUDES += \
hardware/amlogic/audio/libTVaudio
LOCAL_C_INCLUDES += \
+ $(BOARD_AML_VENDOR_PATH)frameworks/services/systemcontrol/PQ/include \
$(DVB_PATH)/include/am_adp \
$(DVB_PATH)/include/am_mw \
$(DVB_PATH)/include/am_ver \
diff --git a/tvserver/DroidTvServer.cpp b/tvserver/DroidTvServer.cpp
new file mode 100644
index 0000000..16512a9
--- a/dev/null
+++ b/tvserver/DroidTvServer.cpp
@@ -0,0 +1,250 @@
+/*
+ * Copyright (C) 2016 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.
+ * @author Tellen Yu
+ * @version 1.0
+ * @date 2018/1/15
+ * @par function description:
+ * - 1 droidlogic tvserver daemon, hwbiner implematation
+ */
+
+#define LOG_TAG "tvserver"
+#define LOG_TV_TAG "HIDLServer"
+
+#include <inttypes.h>
+#include <string>
+#include <binder/Parcel.h>
+#include <cutils/properties.h>
+#include <android/hidl/allocator/1.0/IAllocator.h>
+#include <android/hidl/memory/1.0/IMemory.h>
+#include <hidlmemory/mapping.h>
+
+#include "CTvLog.h"
+#include "DroidTvServer.h"
+
+namespace vendor {
+namespace amlogic {
+namespace hardware {
+namespace tvserver {
+namespace V1_0 {
+namespace implementation {
+
+using ::android::hidl::allocator::V1_0::IAllocator;
+using ::android::hidl::memory::V1_0::IMemory;
+
+DroidTvServer::DroidTvServer() : mDeathRecipient(new DeathRecipient(this)) {
+ mTvServiceIntf = new DroidTvServiceIntf();
+ mTvServiceIntf->setListener(this);
+}
+
+DroidTvServer::~DroidTvServer() {
+ delete mTvServiceIntf;
+}
+
+void DroidTvServer::onEvent(const TvHidlParcel &hidlParcel) {
+ int clientSize = mClients.size();
+
+ ALOGI("onEvent event:%d, client size:%d", hidlParcel.msgType, clientSize);
+
+#if 0
+ sp<IAllocator> ashmemAllocator = IAllocator::getService("ashmem");
+ if (ashmemAllocator == nullptr) {
+ ALOGE("can not get ashmem service");
+ return;
+ }
+
+ size_t size = p.dataSize();
+ android::hardware::hidl_memory hidlMemory;
+ auto res = ashmemAllocator->allocate(size, [&](bool success, const android::hardware::hidl_memory& memory) {
+ if (!success) {
+ ALOGE("ashmem allocate size:%d fail", size);
+ }
+ hidlMemory = memory;
+ });
+
+ if (!res.isOk()) {
+ ALOGE("ashmem allocate result fail");
+ return;
+ }
+
+ sp<IMemory> memory = android::hardware::mapMemory(hidlMemory);
+ void* data = memory->getPointer();
+ memory->update();
+ // update memory however you wish after calling update and before calling commit
+ memcpy(data, p.data(), size);
+ memory->commit();
+#endif
+ for (int i = 0; i < clientSize; i++) {
+ if (mClients[i] != nullptr) {
+ ALOGI("%s, client cookie:%d notifyCallback", __FUNCTION__, i);
+ mClients[i]->notifyCallback(hidlParcel);
+ }
+ }
+}
+
+Return<void> DroidTvServer::lock() {
+ return Void();
+}
+
+Return<void> DroidTvServer::unlock() {
+ return Void();
+}
+
+Return<void> DroidTvServer::disconnect() {
+ return Void();
+}
+
+Return<int32_t> DroidTvServer::processCmd(int32_t type, int32_t size) {
+ #if 0
+ Parcel p;
+
+ sp<IMemory> memory = android::hardware::mapMemory(parcelMem);
+ void* data = memory->getPointer();
+ //memory->update();
+ // update memory however you wish after calling update and before calling commit
+ p.write(data, size);
+ int ret = mTvServiceIntf->processCmd(p);
+ //memory->commit();
+ return ret;
+ #endif
+ return 0;
+}
+
+Return<int32_t> DroidTvServer::startTv() {
+ return mTvServiceIntf->startTv();
+}
+
+Return<int32_t> DroidTvServer::stopTv() {
+ return mTvServiceIntf->stopTv();
+}
+
+Return<int32_t> DroidTvServer::switchInputSrc(int32_t inputSrc) {
+ return mTvServiceIntf->switchInputSrc(inputSrc);
+}
+
+Return<int32_t> DroidTvServer::getInputSrcConnectStatus(int32_t inputSrc) {
+ return mTvServiceIntf->getInputSrcConnectStatus(inputSrc);
+}
+
+Return<int32_t> DroidTvServer::getCurrentInputSrc() {
+ return mTvServiceIntf->getCurrentInputSrc();
+}
+
+Return<int32_t> DroidTvServer::getHdmiAvHotplugStatus() {
+ return mTvServiceIntf->getHdmiAvHotplugStatus();
+}
+
+Return<void> DroidTvServer::getSupportInputDevices(getSupportInputDevices_cb _hidl_cb) {
+ std::string devices = mTvServiceIntf->getSupportInputDevices();
+ _hidl_cb(0/*don't use*/, devices);
+ return Void();
+}
+
+Return<void> DroidTvServer::getCurSignalInfo(getCurSignalInfo_cb _hidl_cb) {
+ SignalInfo info;
+ mTvServiceIntf->getCurSignalInfo(info.fmt, info.transFmt, info.status, info.frameRate);
+
+ _hidl_cb(info);
+ return Void();
+}
+
+Return<int32_t> DroidTvServer::setMiscCfg(const hidl_string& key, const hidl_string& val) {
+ return mTvServiceIntf->setMiscCfg(key, val);
+}
+
+Return<void> DroidTvServer::getMiscCfg(const hidl_string& key, const hidl_string& def, getMiscCfg_cb _hidl_cb) {
+ std::string cfg = mTvServiceIntf->getMiscCfg(key, def);
+
+ ALOGI("%s, key:%s def:%s, cfg:%s", __FUNCTION__, key.c_str(), def.c_str(), cfg.c_str());
+ _hidl_cb(cfg);
+ return Void();
+}
+
+Return<int32_t> DroidTvServer::getHdmiPorts() {
+ return mTvServiceIntf->getHdmiPorts();
+}
+
+Return<int32_t> DroidTvServer::isDviSIgnal() {
+ return mTvServiceIntf->getHdmiPorts();
+}
+
+Return<int32_t> DroidTvServer::isVgaTimingInHdmi() {
+ return mTvServiceIntf->getHdmiPorts();
+}
+
+
+Return<void> DroidTvServer::setCallback(const sp<ITvServerCallback>& callback, ConnectType type) {
+ if ((int)type > (int)ConnectType::TYPE_TOTAL - 1) {
+ ALOGE("%s don't support type:%d", __FUNCTION__, (int)type);
+ return Void();
+ }
+
+ if (callback != nullptr) {
+ if (mClients[(int)type] != nullptr) {
+ ALOGW("%s this type:%s had a callback, cover it", __FUNCTION__, getConnectTypeStr(type));
+ mClients[(int)type]->unlinkToDeath(mDeathRecipient);
+ }
+
+ mClients[(int)type] = callback;
+ Return<bool> linkResult = callback->linkToDeath(mDeathRecipient, (int)type);
+ bool linkSuccess = linkResult.isOk() ? static_cast<bool>(linkResult) : false;
+ if (!linkSuccess) {
+ ALOGW("Couldn't link death recipient for type: %s", getConnectTypeStr(type));
+ }
+
+ ALOGI("%s client type:%s, client size:%d", __FUNCTION__, getConnectTypeStr(type), (int)mClients.size());
+ }
+
+ if (!mListenerStarted) {
+ mTvServiceIntf->startListener();
+ mListenerStarted= true;
+ }
+
+ return Void();
+}
+
+const char* DroidTvServer::getConnectTypeStr(ConnectType type) {
+ switch (type) {
+ case ConnectType::TYPE_HAL:
+ return "HAL";
+ case ConnectType::TYPE_EXTEND:
+ return "EXTEND";
+ default:
+ return "unknown type";
+ }
+}
+
+void DroidTvServer::handleServiceDeath(uint32_t type) {
+ ALOGI("tvserver daemon client:%s died", getConnectTypeStr((ConnectType)type));
+ mClients[type].clear();
+}
+
+DroidTvServer::DeathRecipient::DeathRecipient(sp<DroidTvServer> server)
+ : droidTvServer(server) {}
+
+void DroidTvServer::DeathRecipient::serviceDied(
+ uint64_t cookie,
+ const wp<::android::hidl::base::V1_0::IBase>& /*who*/) {
+ ALOGE("droid tvserver daemon a client died cookie:%d", (int)cookie);
+
+ uint32_t type = static_cast<uint32_t>(cookie);
+ droidTvServer->handleServiceDeath(type);
+}
+
+} // namespace implementation
+} // namespace V1_0
+} // namespace tvserver
+} // namespace hardware
+} // namespace amlogic
+} // namespace vendor
diff --git a/tvserver/DroidTvServer.h b/tvserver/DroidTvServer.h
new file mode 100644
index 0000000..c3d27c9
--- a/dev/null
+++ b/tvserver/DroidTvServer.h
@@ -0,0 +1,124 @@
+/*
+ * Copyright (C) 2016 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.
+ * @author Tellen Yu
+ * @version 1.0
+ * @date 2018/1/15
+ * @par function description:
+ * - 1 droidlogic tvserver daemon, hwbiner implematation
+ */
+
+#ifndef ANDROID_DROIDLOGIC_HDMI_CEC_V1_0_H
+#define ANDROID_DROIDLOGIC_HDMI_CEC_V1_0_H
+
+#include <binder/IBinder.h>
+#include <utils/Mutex.h>
+#include <vector>
+#include <map>
+
+#include "DroidTvServiceIntf.h"
+#include <vendor/amlogic/hardware/tvserver/1.0/ITvServer.h>
+
+namespace vendor {
+namespace amlogic {
+namespace hardware {
+namespace tvserver {
+namespace V1_0 {
+namespace implementation {
+
+using ::vendor::amlogic::hardware::tvserver::V1_0::ITvServer;
+using ::vendor::amlogic::hardware::tvserver::V1_0::ITvServerCallback;
+using ::vendor::amlogic::hardware::tvserver::V1_0::ConnectType;
+using ::vendor::amlogic::hardware::tvserver::V1_0::SignalInfo;
+using ::vendor::amlogic::hardware::tvserver::V1_0::TvHidlParcel;
+using ::vendor::amlogic::hardware::tvserver::V1_0::Result;
+using ::android::hardware::hidl_vec;
+using ::android::hardware::hidl_string;
+using ::android::hardware::Return;
+using ::android::hardware::Void;
+using ::android::hidl::memory::V1_0::IMemory;
+using ::android::sp;
+
+using namespace android;
+
+class DroidTvServer : public ITvServer, public TvServiceNotify {
+public:
+ DroidTvServer();
+ virtual ~DroidTvServer();
+
+ Return<void> disconnect() override;
+
+ Return<void> lock() override;
+
+ Return<void> unlock() override;
+
+ Return<int32_t> processCmd(int32_t type, int32_t size) override;
+
+ Return<int32_t> startTv() override;
+ Return<int32_t> stopTv() override;
+ Return<int32_t> switchInputSrc(int32_t inputSrc) override;
+ Return<int32_t> getInputSrcConnectStatus(int32_t inputSrc) override;
+ Return<int32_t> getCurrentInputSrc() override;
+ Return<int32_t> getHdmiAvHotplugStatus() override;
+ Return<void> getSupportInputDevices(getSupportInputDevices_cb _hidl_cb) override;
+ Return<int32_t> getHdmiPorts() override;
+
+ Return<void> getCurSignalInfo(getCurSignalInfo_cb _hidl_cb) override;
+ Return<int32_t> setMiscCfg(const hidl_string& key, const hidl_string& val) override;
+ Return<void> getMiscCfg(const hidl_string& key, const hidl_string& def, getMiscCfg_cb _hidl_cb) override;
+
+ Return<int32_t> isDviSIgnal() override;
+ Return<int32_t> isVgaTimingInHdmi() override;
+
+
+ Return<void> setCallback(const sp<ITvServerCallback>& callback, ConnectType type) override;
+
+ virtual void onEvent(const TvHidlParcel &hidlParcel);
+
+private:
+
+ const char* getConnectTypeStr(ConnectType type);
+
+ // Handle the case where the callback registered for the given type dies
+ void handleServiceDeath(uint32_t type);
+
+ bool mDebug = false;
+ bool mListenerStarted = false;
+ DroidTvServiceIntf *mTvServiceIntf;
+ std::map<uint32_t, sp<ITvServerCallback>> mClients;
+
+ mutable Mutex mLock;
+
+ class DeathRecipient : public android::hardware::hidl_death_recipient {
+ public:
+ DeathRecipient(sp<DroidTvServer> server);
+
+ // hidl_death_recipient interface
+ virtual void serviceDied(uint64_t cookie,
+ const ::android::wp<::android::hidl::base::V1_0::IBase>& who) override;
+
+ private:
+ sp<DroidTvServer> droidTvServer;
+ };
+
+ sp<DeathRecipient> mDeathRecipient;
+};
+
+} // namespace implementation
+} // namespace V1_0
+} // namespace tvserver
+} // namespace hardware
+} // namespace amlogic
+} // namespace vendor
+#endif /* ANDROID_DROIDLOGIC_HDMI_CEC_V1_0_H */
diff --git a/tvserver/DroidTvServiceIntf.cpp b/tvserver/DroidTvServiceIntf.cpp
new file mode 100644
index 0000000..6551f7b
--- a/dev/null
+++ b/tvserver/DroidTvServiceIntf.cpp
@@ -0,0 +1,2188 @@
+/*
+ * Copyright (C) 2016 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.
+ * @author Tellen Yu
+ * @version 1.0
+ * @date 2018/1/16
+ * @par function description:
+ * - 1 droidlogic tvservice interface
+ */
+
+#define LOG_TAG "tvserver"
+#define LOG_TV_TAG "HIDLIntf"
+
+#include <utils/Log.h>
+#include <binder/IServiceManager.h>
+#include <binder/IPCThreadState.h>
+#include <utils/String16.h>
+#include <utils/Errors.h>
+#include <binder/MemoryBase.h>
+#include <binder/MemoryHeapBase.h>
+#include <ITvService.h>
+#include <hardware/hardware.h>
+#include "DroidTvServiceIntf.h"
+#include <cutils/atomic.h>
+#include <cutils/properties.h>
+#include <stdint.h>
+#include <CTvLog.h>
+#include <tvconfig.h>
+#include <tvutils.h>
+#include <tvsetting/CTvSetting.h>
+#include <tv/CTvFactory.h>
+#include <audio/CTvAudio.h>
+#include <version/version.h>
+#include "tvcmd.h"
+#include <tvdb/CTvRegion.h>
+#include "MemoryLeakTrackUtil.h"
+extern "C" {
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <pthread.h>
+#include <signal.h>
+//#include "make_ext4fs.h"
+#include "am_ver.h"
+}
+
+#include "DroidTvServiceIntf.h"
+
+using namespace android;
+
+DroidTvServiceIntf::DroidTvServiceIntf()
+{
+ //mpScannerClient = NULL;
+ mpTv = new CTv();
+ mpTv->setTvObserver(this);
+ mpTv->OpenTv();
+}
+
+DroidTvServiceIntf::~DroidTvServiceIntf()
+{
+ //mpScannerClient = NULL;
+ /*
+ for (int i = 0; i < (int)mClients.size(); i++) {
+ wp<Client> client = mClients[i];
+ if (client != 0) {
+ LOGW("some client still connect it!");
+ }
+ }*/
+
+ if (mpTv != NULL) {
+ delete mpTv;
+ mpTv = NULL;
+ }
+}
+
+void DroidTvServiceIntf::startListener() {
+ mpTv->startTvDetect();
+}
+
+void DroidTvServiceIntf::onTvEvent(const CTvEv &ev)
+{
+ int type = ev.getEvType();
+ LOGD("DroidTvServiceIntf::onTvEvent ev type = %d", type);
+ switch (type) {
+ case CTvEv::TV_EVENT_SCANNER: {
+ CTvScanner::ScannerEvent *pScannerEv = (CTvScanner::ScannerEvent *) (&ev);
+ //if (mpScannerClient != NULL) {
+ //sp<Client> ScannerClient = mpScannerClient.promote();
+ //if (ScannerClient != 0) {
+ Parcel p;
+ LOGD("scanner evt type:%d freq:%d vid:%d acnt:%d scnt:%d",
+ pScannerEv->mType, pScannerEv->mFrequency, pScannerEv->mVid, pScannerEv->mAcnt, pScannerEv->mScnt);
+ p.writeInt32(pScannerEv->mType);
+ p.writeInt32(pScannerEv->mPercent);
+ p.writeInt32(pScannerEv->mTotalChannelCount);
+ p.writeInt32(pScannerEv->mLockedStatus);
+ p.writeInt32(pScannerEv->mChannelIndex);
+ p.writeInt32(pScannerEv->mFrequency);
+ p.writeString16(String16(pScannerEv->mProgramName));
+ p.writeInt32(pScannerEv->mprogramType);
+ p.writeString16(String16(pScannerEv->mParas));
+ p.writeInt32(pScannerEv->mStrength);
+ p.writeInt32(pScannerEv->mSnr);
+ //ATV
+ p.writeInt32(pScannerEv->mVideoStd);
+ p.writeInt32(pScannerEv->mAudioStd);
+ p.writeInt32(pScannerEv->mIsAutoStd);
+ //DTV
+ p.writeInt32(pScannerEv->mMode);
+ p.writeInt32(pScannerEv->mSymbolRate);
+ p.writeInt32(pScannerEv->mModulation);
+ p.writeInt32(pScannerEv->mBandwidth);
+ p.writeInt32(pScannerEv->mReserved);
+ p.writeInt32(pScannerEv->mTsId);
+ p.writeInt32(pScannerEv->mONetId);
+ p.writeInt32(pScannerEv->mServiceId);
+ p.writeInt32(pScannerEv->mVid);
+ p.writeInt32(pScannerEv->mVfmt);
+ p.writeInt32(pScannerEv->mAcnt);
+ for (int i = 0; i < pScannerEv->mAcnt; i++)
+ p.writeInt32(pScannerEv->mAid[i]);
+ for (int i = 0; i < pScannerEv->mAcnt; i++)
+ p.writeInt32(pScannerEv->mAfmt[i]);
+ for (int i = 0; i < pScannerEv->mAcnt; i++)
+ p.writeString16(String16(pScannerEv->mAlang[i]));
+ for (int i = 0; i < pScannerEv->mAcnt; i++)
+ p.writeInt32(pScannerEv->mAtype[i]);
+ for (int i = 0; i < pScannerEv->mAcnt; i++)
+ p.writeInt32(pScannerEv->mAExt[i]);
+ p.writeInt32(pScannerEv->mPcr);
+ p.writeInt32(pScannerEv->mScnt);
+ for (int i = 0; i < pScannerEv->mScnt; i++)
+ p.writeInt32(pScannerEv->mStype[i]);
+ for (int i = 0; i < pScannerEv->mScnt; i++)
+ p.writeInt32(pScannerEv->mSid[i]);
+ for (int i = 0; i < pScannerEv->mScnt; i++)
+ p.writeInt32(pScannerEv->mSstype[i]);
+ for (int i = 0; i < pScannerEv->mScnt; i++)
+ p.writeInt32(pScannerEv->mSid1[i]);
+ for (int i = 0; i < pScannerEv->mScnt; i++)
+ p.writeInt32(pScannerEv->mSid2[i]);
+ for (int i = 0; i < pScannerEv->mScnt; i++)
+ p.writeString16(String16(pScannerEv->mSlang[i]));
+ p.writeInt32(pScannerEv->mFree_ca);
+ p.writeInt32(pScannerEv->mScrambled);
+ p.writeInt32(pScannerEv->mScanMode);
+ p.writeInt32(pScannerEv->mSdtVer);
+ p.writeInt32(pScannerEv->mSortMode);
+
+ p.writeInt32(pScannerEv->mLcnInfo.net_id);
+ p.writeInt32(pScannerEv->mLcnInfo.ts_id);
+ p.writeInt32(pScannerEv->mLcnInfo.service_id);
+ for (int i=0; i<MAX_LCN; i++) {
+ p.writeInt32(pScannerEv->mLcnInfo.visible[i]);
+ p.writeInt32(pScannerEv->mLcnInfo.lcn[i]);
+ p.writeInt32(pScannerEv->mLcnInfo.valid[i]);
+ }
+ p.writeInt32(pScannerEv->mMajorChannelNumber);
+ p.writeInt32(pScannerEv->mMinorChannelNumber);
+ p.writeInt32(pScannerEv->mSourceId);
+ p.writeInt32(pScannerEv->mAccessControlled);
+ p.writeInt32(pScannerEv->mHidden);
+ p.writeInt32(pScannerEv->mHideGuide);
+ p.writeString16(String16(pScannerEv->mVct));
+
+ //mNotifyListener->onEvent(SCAN_EVENT_CALLBACK, p);
+ //}
+ //}
+ break;
+ }
+
+ case CTvEv::TV_EVENT_EPG: {
+ CTvEpg::EpgEvent *pEpgEvent = (CTvEpg::EpgEvent *) (&ev);
+ Parcel p;
+ p.writeInt32(pEpgEvent->type);
+ p.writeInt32(pEpgEvent->time);
+ p.writeInt32(pEpgEvent->programID);
+ p.writeInt32(pEpgEvent->channelID);
+ //mNotifyListener->onEvent(EPG_EVENT_CALLBACK, p);
+ break;
+ }
+
+ case CTvEv::TV_EVENT_HDMI_IN_CAP: {
+ /*
+ TvHidlParcel hidlParcel;
+
+ CTvScreenCapture::CapEvent *pCapEvt = (CTvScreenCapture::CapEvent *)(&ev);
+
+ hidlParcel.msgType = VFRAME_BMP_EVENT_CALLBACK;
+
+ ALOGI("TV_EVENT_HDMI_IN_CAP size:%d", sizeof(CTvScreenCapture::CapEvent));
+
+ hidlParcel.bodyInt.resize(4);
+ hidlParcel.bodyInt[0] = pCapEvt->mFrameNum;
+ hidlParcel.bodyInt[1] = pCapEvt->mFrameSize;
+ hidlParcel.bodyInt[2] = pCapEvt->mFrameWide;
+ hidlParcel.bodyInt[3] = pCapEvt->mFrameHeight;
+
+ mNotifyListener->onEvent(hidlParcel);
+ */
+ break;
+ }
+
+ case CTvEv::TV_EVENT_AV_PLAYBACK: {
+ TvHidlParcel hidlParcel;
+ hidlParcel.msgType = DTV_AV_PLAYBACK_CALLBACK;
+
+ TvEvent::AVPlaybackEvent *pEv = (TvEvent::AVPlaybackEvent *)(&ev);
+
+ hidlParcel.bodyInt.resize(2);
+ hidlParcel.bodyInt[0] = pEv->mMsgType;
+ hidlParcel.bodyInt[1] = pEv->mProgramId;
+
+ mNotifyListener->onEvent(hidlParcel);
+ break;
+ }
+
+ case CTvEv::TV_EVENT_SIGLE_DETECT: {
+ TvEvent::SignalInfoEvent *pEv = (TvEvent::SignalInfoEvent *)(&ev);
+ Parcel p;
+ p.writeInt32(pEv->mTrans_fmt);
+ p.writeInt32(pEv->mFmt);
+ p.writeInt32(pEv->mStatus);
+ p.writeInt32(pEv->mReserved);
+ //mNotifyListener->onEvent(SIGLE_DETECT_CALLBACK, p);
+ break;
+ }
+
+ case CTvEv::TV_EVENT_SUBTITLE: {
+ TvEvent::SubtitleEvent *pEv = (TvEvent::SubtitleEvent *)(&ev);
+ Parcel p;
+ p.writeInt32(pEv->pic_width);
+ p.writeInt32(pEv->pic_height);
+ //mNotifyListener->onEvent(SUBTITLE_UPDATE_CALLBACK, p);
+ break;
+ }
+
+ case CTvEv::TV_EVENT_ADC_CALIBRATION: {
+ TvEvent::ADCCalibrationEvent *pEv = (TvEvent::ADCCalibrationEvent *)(&ev);
+ Parcel p;
+ p.writeInt32(pEv->mState);
+ //mNotifyListener->onEvent(ADC_CALIBRATION_CALLBACK, p);
+ break;
+ }
+
+ case CTvEv::TV_EVENT_VGA: {//VGA
+ TvEvent::VGAEvent *pEv = (TvEvent::VGAEvent *)(&ev);
+ Parcel p;
+ p.writeInt32(pEv->mState);
+ //mNotifyListener->onEvent(VGA_CALLBACK, p);
+ break;
+ }
+
+ case CTvEv::TV_EVENT_SOURCE_CONNECT: {
+ TvHidlParcel hidlParcel;
+ hidlParcel.msgType = SOURCE_CONNECT_CALLBACK;
+
+ TvEvent::SourceConnectEvent *pEv = (TvEvent::SourceConnectEvent *)(&ev);
+
+ hidlParcel.bodyInt.resize(2);
+ hidlParcel.bodyInt[0] = pEv->mSourceInput;
+ hidlParcel.bodyInt[1] = pEv->connectionState;
+
+ LOGD("source connect input: =%d state: =%d", pEv->mSourceInput, pEv->connectionState);
+ mNotifyListener->onEvent(hidlParcel);
+ break;
+ }
+
+ case CTvEv::TV_EVENT_HDMIRX_CEC: {
+ TvEvent::HDMIRxCECEvent *pEv = (TvEvent::HDMIRxCECEvent *)(&ev);
+ Parcel p;
+ p.writeInt32(pEv->mDataCount);
+ for (int j = 0; j < pEv->mDataCount; j++) {
+ p.writeInt32(pEv->mDataBuf[j]);
+ }
+ //mNotifyListener->onEvent(HDMIRX_CEC_CALLBACK, p);
+ break;
+ }
+
+ case CTvEv::TV_EVENT_UPGRADE_FBC: {
+ TvEvent::UpgradeFBCEvent *pEv = (TvEvent::UpgradeFBCEvent *)(&ev);
+ Parcel p;
+ p.writeInt32(pEv->mState);
+ p.writeInt32(pEv->param);
+ //mNotifyListener->onEvent(UPGRADE_FBC_CALLBACK, p);
+ break;
+ }
+
+ case CTvEv::TV_EVENT_SERIAL_COMMUNICATION: {
+ TvEvent::SerialCommunicationEvent *pEv = (TvEvent::SerialCommunicationEvent *)(&ev);
+ Parcel p;
+ p.writeInt32(pEv->mDevId);
+ p.writeInt32(pEv->mDataCount);
+ for (int j = 0; j < pEv->mDataCount; j++) {
+ p.writeInt32(pEv->mDataBuf[j]);
+ }
+ //mNotifyListener->onEvent(SERIAL_COMMUNICATION_CALLBACK, p);
+ break;
+ }
+
+ case CTvEv::TV_EVENT_2d4G_HEADSET: {
+ TvEvent::HeadSetOf2d4GEvent *pEv = (TvEvent::HeadSetOf2d4GEvent *)(&ev);
+ LOGD("SendDtvStats status: =%d para2: =%d", pEv->state, pEv->para);
+ Parcel p;
+ p.writeInt32(pEv->state);
+ p.writeInt32(pEv->para);
+ //mNotifyListener->onEvent(HEADSET_STATUS_CALLBACK, p);
+ break;
+ }
+
+ case CTvEv::TV_EVENT_SCANNING_FRAME_STABLE: {
+ TvEvent::ScanningFrameStableEvent *pEv = (TvEvent::ScanningFrameStableEvent *)(&ev);
+ LOGD("Scanning Frame is stable!");
+ Parcel p;
+ p.writeInt32(pEv->CurScanningFreq);
+ //mNotifyListener->onEvent(SCANNING_FRAME_STABLE_CALLBACK, p);
+ break;
+ }
+
+ case CTvEv::TV_EVENT_FRONTEND: {
+ TvEvent::FrontendEvent *pEv = (TvEvent::FrontendEvent *)(&ev);
+ Parcel p;
+ p.writeInt32(pEv->mStatus);
+ p.writeInt32(pEv->mFrequency);
+ p.writeInt32(pEv->mParam1);
+ p.writeInt32(pEv->mParam2);
+ p.writeInt32(pEv->mParam3);
+ p.writeInt32(pEv->mParam4);
+ p.writeInt32(pEv->mParam5);
+ p.writeInt32(pEv->mParam6);
+ p.writeInt32(pEv->mParam7);
+ p.writeInt32(pEv->mParam8);
+ //mNotifyListener->onEvent(FRONTEND_EVENT_CALLBACK, p);
+ break;
+ }
+
+ case CTvEv::TV_EVENT_RECORDER: {
+ TvEvent::RecorderEvent *pEv = (TvEvent::RecorderEvent *)(&ev);
+ Parcel p;
+ p.writeString16(String16(pEv->mId));
+ p.writeInt32(pEv->mStatus);
+ p.writeInt32(pEv->mError);
+ //mNotifyListener->onEvent(RECORDER_EVENT_CALLBACK, p);
+ break;
+ }
+
+ case CTvEv::TV_EVENT_RRT: {
+ CTvRrt::RrtEvent *pRrtEvent = (CTvRrt::RrtEvent *) (&ev);
+ Parcel p;
+ p.writeInt32(pRrtEvent->satus);
+ //mNotifyListener->onEvent(RRT_EVENT_CALLBACK, p);
+ break;
+ }
+
+ case CTvEv::TV_EVENT_EAS: {
+ CTvEas::EasEvent *pEasEvent = (CTvEas::EasEvent *) (&ev);
+ Parcel p;
+ p.writeInt32(pEasEvent->eas_section_count);
+ p.writeInt32(pEasEvent->table_id);
+ p.writeInt32(pEasEvent->extension);
+ p.writeInt32(pEasEvent->version);
+ p.writeInt32(pEasEvent->current_next);
+ p.writeInt32(pEasEvent->sequence_num);
+ p.writeInt32(pEasEvent->protocol_version);
+ p.writeInt32(pEasEvent->eas_event_id);
+ p.writeInt32(pEasEvent->eas_orig_code[0]);
+ p.writeInt32(pEasEvent->eas_orig_code[1]);
+ p.writeInt32(pEasEvent->eas_orig_code[2]);
+ p.writeInt32(pEasEvent->eas_event_code_len);
+ for (int j=0;j<pEasEvent->eas_event_code_len;j++) {
+ p.writeInt32(pEasEvent->eas_event_code[j]);
+ }
+ p.writeInt32(pEasEvent->alert_message_time_remaining);
+ p.writeInt32(pEasEvent->event_start_time);
+ p.writeInt32(pEasEvent->event_duration);
+ p.writeInt32(pEasEvent->alert_priority);
+ p.writeInt32(pEasEvent->details_OOB_source_ID);
+ p.writeInt32(pEasEvent->details_major_channel_number);
+ p.writeInt32(pEasEvent->details_minor_channel_number);
+ p.writeInt32(pEasEvent->audio_OOB_source_ID);
+ p.writeInt32(pEasEvent->location_count);
+ for (int j=0;j<pEasEvent->location_count;j++) {
+ p.writeInt32(pEasEvent->location[j].i_state_code);
+ p.writeInt32(pEasEvent->location[j].i_country_subdiv);
+ p.writeInt32(pEasEvent->location[j].i_country_code);
+ }
+ p.writeInt32(pEasEvent->exception_count);
+ for (int j=0;j<pEasEvent->exception_count;j++) {
+ p.writeInt32(pEasEvent->exception[j].i_in_band_refer);
+ p.writeInt32(pEasEvent->exception[j].i_exception_major_channel_number);
+ p.writeInt32(pEasEvent->exception[j].i_exception_minor_channel_number);
+ p.writeInt32(pEasEvent->exception[j].exception_OOB_source_ID);
+ }
+ p.writeInt32(pEasEvent->multi_text_count);
+ for (int j=0;j<pEasEvent->multi_text_count;j++) {
+ p.writeInt32(pEasEvent->multi_text[j].lang[0]);
+ p.writeInt32(pEasEvent->multi_text[j].lang[1]);
+ p.writeInt32(pEasEvent->multi_text[j].lang[2]);
+ p.writeInt32(pEasEvent->multi_text[j].i_type);
+ p.writeInt32(pEasEvent->multi_text[j].i_compression_type);
+ p.writeInt32(pEasEvent->multi_text[j].i_mode);
+ p.writeInt32(pEasEvent->multi_text[j].i_number_bytes);
+ for (int k=0;k<pEasEvent->multi_text[j].i_number_bytes;k++) {
+ p.writeInt32(pEasEvent->multi_text[j].compressed_str[k]);
+ }
+ }
+ p.writeInt32(pEasEvent->descriptor_text_count);
+ for (int j=0;j<pEasEvent->descriptor_text_count;j++) {
+ p.writeInt32(pEasEvent->descriptor[j].i_tag);
+ p.writeInt32(pEasEvent->descriptor[j].i_length);
+ for (int k=0;k<pEasEvent->descriptor[j].i_length;k++) {
+ p.writeInt32(pEasEvent->descriptor[j].p_data[k]);
+ }
+ }
+ //mNotifyListener->onEvent(EAS_EVENT_CALLBACK, p);
+ break;
+ }
+
+ default:
+ break;
+ }
+}
+
+int DroidTvServiceIntf::startTv() {
+ return mpTv->StartTvLock();
+}
+
+int DroidTvServiceIntf::stopTv() {
+ return mpTv->StopTvLock();
+}
+
+int DroidTvServiceIntf::switchInputSrc(int32_t inputSrc) {
+ LOGD("switchInputSrc sourceId= 0x%x", inputSrc);
+ return mpTv->SetSourceSwitchInput((tv_source_input_t)inputSrc);
+}
+
+int DroidTvServiceIntf::getInputSrcConnectStatus(int32_t inputSrc) {
+ return mpTv->GetSourceConnectStatus((tv_source_input_t)inputSrc);
+}
+
+int DroidTvServiceIntf::getCurrentInputSrc() {
+ return (int)mpTv->GetCurrentSourceInputVirtualLock();
+}
+
+int DroidTvServiceIntf::getHdmiAvHotplugStatus() {
+ return mpTv->GetHdmiAvHotplugDetectOnoff();
+}
+
+std::string DroidTvServiceIntf::getSupportInputDevices() {
+ const char *valueStr = config_get_str(CFG_SECTION_TV, CGF_DEFAULT_INPUT_IDS, "null");
+ LOGD("get support input devices = %s", valueStr);
+ return std::string(valueStr);
+}
+
+int DroidTvServiceIntf::getHdmiPorts() {
+ return config_get_int(CFG_SECTION_TV, CGF_DEFAULT_HDMI_PORTS, 0);
+}
+
+void DroidTvServiceIntf::getCurSignalInfo(int &fmt, int &transFmt, int &status, int &frameRate) {
+ tvin_info_t siginfo = mpTv->GetCurrentSignalInfo();
+ int frame_rate = mpTv->getHDMIFrameRate();
+
+ fmt = siginfo.fmt;
+ transFmt = siginfo.trans_fmt;
+ status = siginfo.status;
+ frameRate = frame_rate;
+}
+
+int DroidTvServiceIntf::setMiscCfg(const std::string& key, const std::string& val) {
+ //LOGD("setMiscCfg key = %s, val = %s", key.c_str(), val.c_str());
+ return config_set_str(CFG_SECTION_TV, key.c_str(), val.c_str());
+}
+
+std::string DroidTvServiceIntf::getMiscCfg(const std::string& key, const std::string& def) {
+ const char *value = config_get_str(CFG_SECTION_TV, key.c_str(), def.c_str());
+ //LOGD("getMiscCfg key = %s, def = %s, value = %s", key.c_str(), def.c_str(), value);
+ return std::string(value);
+}
+
+int DroidTvServiceIntf::isDviSIgnal() {
+ return mpTv->IsDVISignal();
+}
+
+int DroidTvServiceIntf::isVgaTimingInHdmi() {
+ return mpTv->isVgaFmtInHdmi();
+}
+
+int DroidTvServiceIntf::processCmd(const Parcel &p) {
+ unsigned char dataBuf[512] = {0};
+ int ret = -1;
+ int cmd = p.readInt32();
+
+ LOGD("processCmd cmd=%d", cmd);
+ switch (cmd) {
+ // Tv function
+ case OPEN_TV:
+ break;
+
+ case CLOSE_TV:
+ ret = mpTv->CloseTv();
+ break;
+
+ case START_TV:
+ //int mode = p.readInt32();
+ ret = mpTv->StartTvLock();
+ mIsStartTv = true;
+ break;
+
+ case STOP_TV:
+ ret = mpTv->StopTvLock();
+ mIsStartTv = false;
+ break;
+ case GET_TV_STATUS:
+ ret = (int)mpTv->GetTvStatus();
+ break;
+ case GET_LAST_SOURCE_INPUT:
+ ret = (int)mpTv->GetLastSourceInput();
+ break;
+ case GET_CURRENT_SOURCE_INPUT:
+ ret = (int)mpTv->GetCurrentSourceInputLock();
+ break;
+
+ case GET_CURRENT_SOURCE_INPUT_VIRTUAL:
+ ret = (int)mpTv->GetCurrentSourceInputVirtualLock();
+ break;
+
+ case GET_CURRENT_SIGNAL_INFO:
+ /*
+ tvin_info_t siginfo = mpTv->GetCurrentSignalInfo();
+ int frame_rate = mpTv->getHDMIFrameRate();
+ r->writeInt32(siginfo.trans_fmt);
+ r->writeInt32(siginfo.fmt);
+ r->writeInt32(siginfo.status);
+ r->writeInt32(frame_rate);
+ */
+ break;
+
+ case SET_SOURCE_INPUT: {
+ int sourceinput = p.readInt32();
+ LOGD(" SetSourceInput sourceId= %x", sourceinput);
+ ret = mpTv->SetSourceSwitchInput((tv_source_input_t)sourceinput);
+ break;
+ }
+ case SET_SOURCE_INPUT_EXT: {
+ int sourceinput = p.readInt32();
+ int vsourceinput = p.readInt32();
+ LOGD(" SetSourceInputExt vsourceId= %d sourceId=%d", vsourceinput, sourceinput);
+ ret = mpTv->SetSourceSwitchInput((tv_source_input_t)vsourceinput, (tv_source_input_t)sourceinput);
+ break;
+ }
+ case DO_SUSPEND: {
+ int type = p.readInt32();
+ ret = mpTv->DoSuspend(type);
+ break;
+ }
+ case DO_RESUME: {
+ int type = p.readInt32();
+ ret = mpTv->DoResume(type);
+ break;
+ }
+ case IS_DVI_SIGNAL:
+ ret = mpTv->IsDVISignal();
+ break;
+
+ case IS_VGA_TIMEING_IN_HDMI:
+ ret = mpTv->isVgaFmtInHdmi();
+ break;
+
+ case SET_PREVIEW_WINDOW_MODE:
+ ret = mpTv->setPreviewWindowMode(p.readInt32() == 1);
+ break;
+
+ case SET_PREVIEW_WINDOW: {
+ tvin_window_pos_t win_pos;
+ win_pos.x1 = p.readInt32();
+ win_pos.y1 = p.readInt32();
+ win_pos.x2 = p.readInt32();
+ win_pos.y2 = p.readInt32();
+ ret = (int)mpTv->SetPreviewWindow(win_pos);
+ break;
+ }
+
+ case GET_SOURCE_CONNECT_STATUS: {
+ int source_input = p.readInt32();
+ ret = mpTv->GetSourceConnectStatus((tv_source_input_t)source_input);
+ break;
+ }
+
+ case GET_SOURCE_INPUT_LIST:
+ /*
+ const char *value = config_get_str(CFG_SECTION_TV, CGF_DEFAULT_INPUT_IDS, "null");
+ r->writeString16(String16(value));
+ */
+ break;
+
+ //Tv function END
+
+ // HDMI
+ case SET_HDMI_EDID_VER: {
+ int hdmi_port_id = p.readInt32();
+ int edid_ver = p.readInt32();
+ ret = mpTv->SetHdmiEdidVersion((tv_hdmi_port_id_t)hdmi_port_id, (tv_hdmi_edid_version_t)edid_ver);
+ break;
+ }
+ case SET_HDCP_KEY_ENABLE: {
+ int enable = p.readInt32();
+ ret = mpTv->SetHdmiHDCPSwitcher((tv_hdmi_hdcpkey_enable_t)enable);
+ break;
+ }
+ case SET_HDMI_COLOR_RANGE_MODE: {
+ int range_mode = p.readInt32();
+ ret = mpTv->SetHdmiColorRangeMode((tv_hdmi_color_range_t)range_mode);
+ break;
+ }
+ case GET_HDMI_COLOR_RANGE_MODE:
+ ret = mpTv->GetHdmiColorRangeMode();
+ break;
+
+ // HDMI END
+
+ // AUDIO & AUDIO MUTE
+ case SET_AUDIO_MUTE_FOR_TV: {
+ int status = p.readInt32();
+ if (status != mpTv->GetAudioMuteForTv()) {
+ ret = mpTv->SetAudioMuteForTv(status);
+ }
+ break;
+ }
+ case SET_AUDIO_MUTEKEY_STATUS: {
+ int status = p.readInt32();
+ ret = mpTv->SetAudioMuteForSystem(status);
+ break;
+ }
+ case GET_AUDIO_MUTEKEY_STATUS:
+ ret = mpTv->GetAudioMuteForSystem();
+ break;
+
+ case SET_AUDIO_AVOUT_MUTE_STATUS: {
+ int status = p.readInt32();
+ ret = mpTv->SetAudioAVOutMute(status);
+ break;
+ }
+ case GET_AUDIO_AVOUT_MUTE_STATUS:
+ ret = mpTv->GetAudioAVOutMute();
+ break;
+
+ case SET_AUDIO_SPDIF_MUTE_STATUS: {
+ int status = p.readInt32();
+ ret = mpTv->SetAudioSPDIFMute(status);
+ break;
+ }
+ case GET_AUDIO_SPDIF_MUTE_STATUS:
+ ret = mpTv->GetAudioSPDIFMute();
+ break;
+
+ // AUDIO MASTER VOLUME
+ case SET_AUDIO_MASTER_VOLUME: {
+ int vol = p.readInt32();
+ ret = mpTv->SetAudioMasterVolume(vol);
+ break;
+ }
+ case GET_AUDIO_MASTER_VOLUME:
+ ret = mpTv->GetAudioMasterVolume();
+ break;
+ case SAVE_CUR_AUDIO_MASTER_VOLUME: {
+ int vol = p.readInt32();
+ ret = mpTv->SaveCurAudioMasterVolume(vol);
+ break;
+ }
+ case GET_CUR_AUDIO_MASTER_VOLUME:
+ ret = mpTv->GetCurAudioMasterVolume();
+ break;
+ //AUDIO BALANCE
+ case SET_AUDIO_BALANCE: {
+ int vol = p.readInt32();
+ ret = mpTv->SetAudioBalance(vol);
+ break;
+ }
+ case GET_AUDIO_BALANCE:
+ ret = mpTv->GetAudioBalance();
+ break;
+
+ case SAVE_CUR_AUDIO_BALANCE: {
+ int vol = p.readInt32();
+ ret = mpTv->SaveCurAudioBalance(vol);
+ break;
+ }
+ case GET_CUR_AUDIO_BALANCE:
+ ret = mpTv->GetCurAudioBalance();
+ break;
+
+ //AUDIO SUPPERBASS VOLUME
+ case SET_AUDIO_SUPPER_BASS_VOLUME: {
+ int vol = p.readInt32();
+ ret = mpTv->SetAudioSupperBassVolume(vol);
+ break;
+ }
+ case GET_AUDIO_SUPPER_BASS_VOLUME:
+ ret = mpTv->GetAudioSupperBassVolume();
+ break;
+
+ case SAVE_CUR_AUDIO_SUPPER_BASS_VOLUME: {
+ int vol = p.readInt32();
+ ret = mpTv->SaveCurAudioSupperBassVolume(vol);
+ break;
+ }
+ case GET_CUR_AUDIO_SUPPER_BASS_VOLUME:
+ ret = mpTv->GetCurAudioSupperBassVolume();
+ break;
+
+ //AUDIO SUPPERBASS SWITCH
+ case SET_AUDIO_SUPPER_BASS_SWITCH: {
+ int vol = p.readInt32();
+ ret = mpTv->SetAudioSupperBassSwitch(vol);
+ break;
+ }
+ case GET_AUDIO_SUPPER_BASS_SWITCH:
+ ret = mpTv->GetAudioSupperBassSwitch();
+ break;
+
+ case SAVE_CUR_AUDIO_SUPPER_BASS_SWITCH: {
+ int vol = p.readInt32();
+ ret = mpTv->SaveCurAudioSupperBassSwitch(vol);
+ break;
+ }
+ case GET_CUR_AUDIO_SUPPER_BASS_SWITCH:
+ ret = mpTv->GetCurAudioSupperBassSwitch();
+ break;
+
+ //AUDIO SRS SURROUND SWITCH
+ case SET_AUDIO_SRS_SURROUND: {
+ int vol = p.readInt32();
+ ret = mpTv->SetAudioSRSSurround(vol);
+ mpTv->RefreshAudioMasterVolume(SOURCE_MAX);
+ break;
+ }
+ case GET_AUDIO_SRS_SURROUND:
+ ret = mpTv->GetAudioSRSSurround();
+ break;
+
+ case SAVE_CUR_AUDIO_SRS_SURROUND: {
+ int vol = p.readInt32();
+ ret = mpTv->SaveCurAudioSrsSurround(vol);
+ break;
+ }
+ case GET_CUR_AUDIO_SRS_SURROUND:
+ ret = mpTv->GetCurAudioSRSSurround();
+ break;
+
+ //AUDIO SRS DIALOG CLARITY
+ case SET_AUDIO_SRS_DIALOG_CLARITY: {
+ int vol = p.readInt32();
+ ret = mpTv->SetAudioSrsDialogClarity(vol);
+ mpTv->RefreshAudioMasterVolume(SOURCE_MAX);
+ break;
+ }
+ case GET_AUDIO_SRS_DIALOG_CLARITY: {
+ ret = mpTv->GetAudioSrsDialogClarity();
+ break;
+ }
+ case SAVE_CUR_AUDIO_SRS_DIALOG_CLARITY: {
+ int vol = p.readInt32();
+ ret = mpTv->SaveCurAudioSrsDialogClarity(vol);
+ break;
+ }
+ case GET_CUR_AUDIO_SRS_DIALOG_CLARITY:
+ ret = mpTv->GetCurAudioSrsDialogClarity();
+ break;
+
+ //AUDIO SRS TRUBASS
+ case SET_AUDIO_SRS_TRU_BASS: {
+ int vol = p.readInt32();
+ ret = mpTv->SetAudioSrsTruBass(vol);
+ mpTv->RefreshAudioMasterVolume(SOURCE_MAX);
+ break;
+ }
+ case GET_AUDIO_SRS_TRU_BASS:
+ ret = mpTv->GetAudioSrsTruBass();
+ break;
+
+ case SAVE_CUR_AUDIO_SRS_TRU_BASS: {
+ int vol = p.readInt32();
+ ret = mpTv->SaveCurAudioSrsTruBass(vol);
+ break;
+ }
+ case GET_CUR_AUDIO_SRS_TRU_BASS:
+ ret = mpTv->GetCurAudioSrsTruBass();
+ break;
+
+ //AUDIO BASS
+ case SET_AUDIO_BASS_VOLUME: {
+ int vol = p.readInt32();
+ ret = mpTv->SetAudioBassVolume(vol);
+ break;
+ }
+ case GET_AUDIO_BASS_VOLUME:
+ ret = mpTv->GetAudioBassVolume();
+ break;
+
+ case SAVE_CUR_AUDIO_BASS_VOLUME: {
+ int vol = p.readInt32();
+ ret = mpTv->SaveCurAudioBassVolume(vol);
+ break;
+ }
+
+ case GET_CUR_AUDIO_BASS_VOLUME:
+ ret = mpTv->GetCurAudioBassVolume();
+ break;
+
+ //AUDIO TREBLE
+ case SET_AUDIO_TREBLE_VOLUME: {
+ int vol = p.readInt32();
+ ret = mpTv->SetAudioTrebleVolume(vol);
+ break;
+ }
+ case GET_AUDIO_TREBLE_VOLUME:
+ ret = mpTv->GetAudioTrebleVolume();
+ break;
+
+ case SAVE_CUR_AUDIO_TREBLE_VOLUME: {
+ int vol = p.readInt32();
+ ret = mpTv->SaveCurAudioTrebleVolume(vol);
+ break;
+ }
+ case GET_CUR_AUDIO_TREBLE_VOLUME:
+ ret = mpTv->GetCurAudioTrebleVolume();
+ break;
+
+ //AUDIO SOUND MODE
+ case SET_AUDIO_SOUND_MODE: {
+ int vol = p.readInt32();
+ ret = mpTv->SetAudioSoundMode(vol);
+ break;
+ }
+ case GET_AUDIO_SOUND_MODE:
+ ret = mpTv->GetAudioSoundMode();
+ break;
+
+ case SAVE_CUR_AUDIO_SOUND_MODE: {
+ int vol = p.readInt32();
+ ret = mpTv->SaveCurAudioSoundMode(vol);
+ break;
+ }
+ case GET_CUR_AUDIO_SOUND_MODE:
+ ret = mpTv->GetCurAudioSoundMode();
+ break;
+
+ //AUDIO WALL EFFECT
+ case SET_AUDIO_WALL_EFFECT: {
+ int vol = p.readInt32();
+ ret = mpTv->SetAudioWallEffect(vol);
+ break;
+ }
+ case GET_AUDIO_WALL_EFFECT:
+ ret = mpTv->GetAudioWallEffect();
+ break;
+
+ case SAVE_CUR_AUDIO_WALL_EFFECT: {
+ int vol = p.readInt32();
+ ret = mpTv->SaveCurAudioWallEffect(vol);
+ break;
+ }
+ case GET_CUR_AUDIO_WALL_EFFECT:
+ ret = mpTv->GetCurAudioWallEffect();
+ break;
+
+ //AUDIO EQ MODE
+ case SET_AUDIO_EQ_MODE: {
+ int vol = p.readInt32();
+ ret = mpTv->SetAudioEQMode(vol);
+ break;
+ }
+ case GET_AUDIO_EQ_MODE:
+ ret = mpTv->GetAudioEQMode();
+ break;
+
+ case SAVE_CUR_AUDIO_EQ_MODE: {
+ int vol = p.readInt32();
+ ret = mpTv->SaveCurAudioEQMode(vol);
+ break;
+ }
+ case GET_CUR_AUDIO_EQ_MODE:
+ ret = mpTv->GetCurAudioEQMode();
+ break;
+
+ //AUDIO EQ GAIN
+ case GET_AUDIO_EQ_RANGE: {
+ int buf[2];
+ ret = mpTv->GetAudioEQRange(buf);
+ //r->writeInt32(2);
+ //r->writeInt32(buf[0]);
+ //r->writeInt32(buf[1]);
+ //r->writeInt32(ret);
+ break;
+ }
+ case GET_AUDIO_EQ_BAND_COUNT:
+ ret = mpTv->GetAudioEQBandCount();
+ break;
+
+ case SET_AUDIO_EQ_GAIN: {
+ int buf[128] = {0};
+ int bufSize = p.readInt32();
+ for (int i = 0; i < bufSize; i++) {
+ buf[i] = p.readInt32();
+ }
+ ret = mpTv->SetAudioEQGain(buf);
+ break;
+ }
+ case GET_AUDIO_EQ_GAIN: {
+ int buf[128] = {0};
+ ret = mpTv->GetAudioEQGain(buf);
+ int bufSize = mpTv->GetAudioEQBandCount();
+ for (int i = 0; i < bufSize; i++) {
+ //r->writeInt32(buf[i]);
+ }
+ //r->writeInt32(ret);
+ break;
+ }
+ case SAVE_CUR_AUDIO_EQ_GAIN: {
+ int buf[128] = {0};
+ int bufSize = p.readInt32();
+ for (int i = 0; i < bufSize; i++) {
+ buf[i] = p.readInt32();
+ }
+ ret = mpTv->SaveCurAudioEQGain(buf);
+ break;
+ }
+ case GET_CUR_EQ_GAIN: {
+ int buf[128] = {0};
+ ret = mpTv->GetCurAudioEQGain(buf);
+ int bufSize = mpTv->GetAudioEQBandCount();
+ //r->writeInt32(bufSize);
+ for (int i = 0; i < bufSize; i++) {
+ //r->writeInt32(buf[i]);
+ }
+ break;
+ }
+ case SET_AUDIO_EQ_SWITCH: {
+ int tmpVal = p.readInt32();
+ ret = mpTv->SetAudioEQSwitch(tmpVal);
+ break;
+ }
+ // AUDIO SPDIF SWITCH
+ case SET_AUDIO_SPDIF_SWITCH: {
+ int tmp_val = p.readInt32();
+ ret = mpTv->SetAudioSPDIFSwitch(tmp_val);
+ break;
+ }
+ case SAVE_CUR_AUDIO_SPDIF_SWITCH: {
+ int tmp_val = p.readInt32();
+ ret = mpTv->SaveCurAudioSPDIFSwitch(tmp_val);
+ break;
+ }
+ case GET_CUR_AUDIO_SPDIF_SWITCH:
+ ret = mpTv->GetCurAudioSPDIFSwitch();
+ break;
+
+ //AUDIO SPDIF MODE
+ case SET_AUDIO_SPDIF_MODE: {
+ int vol = p.readInt32();
+ int progId = p.readInt32();
+ int audioTrackId = p.readInt32();
+ ret = mpTv->SetAudioSPDIFMode(vol);
+ mpTv->ResetAudioDecoderForPCMOutput();
+ break;
+ }
+ case SAVE_CUR_AUDIO_SPDIF_MODE: {
+ int vol = p.readInt32();
+ ret = mpTv->SaveCurAudioSPDIFMode(vol);
+ break;
+ }
+ case GET_CUR_AUDIO_SPDIF_MODE:
+ ret = mpTv->GetCurAudioSPDIFMode();
+ break;
+
+ case SET_AMAUDIO_OUTPUT_MODE: {
+ int tmp_val = p.readInt32();
+ ret = mpTv->SetAmAudioOutputMode(tmp_val);
+ break;
+ }
+ case SET_AMAUDIO_MUSIC_GAIN: {
+ int tmp_val = p.readInt32();
+ ret = mpTv->SetAmAudioMusicGain(tmp_val);
+ break;
+ }
+ case SET_AMAUDIO_LEFT_GAIN: {
+ int tmp_val = p.readInt32();
+ ret = mpTv->SetAmAudioLeftGain(tmp_val);
+ break;
+ }
+ case SET_AMAUDIO_RIGHT_GAIN: {
+ int tmp_val = p.readInt32();
+ ret = mpTv->SetAmAudioRightGain(tmp_val);
+ break;
+ }
+ case SET_AMAUDIO_PRE_GAIN: {
+ float tmp_val = p.readFloat();
+ ret = mpTv->setAmAudioPreGain(tmp_val);
+ break;
+ }
+ case SET_AMAUDIO_PRE_MUTE: {
+ int tmp_val = p.readInt32();
+ ret = mpTv->setAmAudioPreMute(tmp_val);
+ break;
+ }
+ case GET_AMAUDIO_PRE_MUTE:
+ ret = mpTv->getAmAudioPreMute();
+ break;
+
+ case SELECT_LINE_IN_CHANNEL: {
+ int channel = p.readInt32();
+ ret = mpTv->AudioLineInSelectChannel(channel);
+ LOGD("SELECT_LINE_IN_CHANNEL: channel = %d; ret = %d.\n", channel, ret);
+ break;
+ }
+ case SET_LINE_IN_CAPTURE_VOL: {
+ int l_vol = p.readInt32();
+ int r_vol = p.readInt32();
+ ret = mpTv->AudioSetLineInCaptureVolume(l_vol, r_vol);
+ break;
+ }
+ case SET_AUDIO_VOL_COMP: {
+ int tmpVal = p.readInt32();
+ ret = mpTv->SetCurProgramAudioVolumeCompensationVal(tmpVal);
+ break;
+ }
+ case GET_AUDIO_VOL_COMP:
+ ret = mpTv->GetAudioVolumeCompensationVal(-1);
+ break;
+
+ case SET_AUDIO_VIRTUAL: {
+ int enable = p.readInt32();
+ int level = p.readInt32();
+ ret = mpTv->SetAudioVirtualizer(enable, level);
+ break;
+ }
+ case GET_AUDIO_VIRTUAL_ENABLE:
+ ret = mpTv->GetAudioVirtualizerEnable();
+ break;
+
+ case GET_AUDIO_VIRTUAL_LEVEL:
+ ret = mpTv->GetAudioVirtualizerLevel();
+ break;
+ // AUDIO END
+
+ // SSM
+ case SSM_INIT_DEVICE:
+ ret = mpTv->Tv_SSMRestoreDefaultSetting();//mpTv->Tv_SSMInitDevice();
+ break;
+
+ case SSM_SAVE_POWER_ON_OFF_CHANNEL: {
+ int tmpPowerChanNum = p.readInt32();
+ ret = SSMSavePowerOnOffChannel(tmpPowerChanNum);
+ break;
+ }
+ case SSM_READ_POWER_ON_OFF_CHANNEL: {
+ ret = SSMReadPowerOnOffChannel();
+ break;
+ }
+ case SSM_SAVE_SOURCE_INPUT: {
+ int tmpSouceInput = p.readInt32();
+ ret = SSMSaveSourceInput(tmpSouceInput);
+ break;
+ }
+ case SSM_READ_SOURCE_INPUT:
+ ret = SSMReadSourceInput();
+ break;
+
+ case SSM_SAVE_LAST_SOURCE_INPUT: {
+ int tmpLastSouceInput = p.readInt32();
+ ret = SSMSaveLastSelectSourceInput(tmpLastSouceInput);
+ break;
+ }
+ case SSM_READ_LAST_SOURCE_INPUT:
+ ret = SSMReadLastSelectSourceInput();
+ break;
+
+ case SSM_SAVE_SYS_LANGUAGE: {
+ int tmpVal = p.readInt32();
+ ret = SSMSaveSystemLanguage(tmpVal);
+ break;
+ }
+ case SSM_READ_SYS_LANGUAGE: {
+ ret = SSMReadSystemLanguage();
+ break;
+ }
+ case SSM_SAVE_AGING_MODE: {
+ int tmpVal = p.readInt32();
+ ret = SSMSaveAgingMode(tmpVal);
+ break;
+ }
+ case SSM_READ_AGING_MODE:
+ ret = SSMReadAgingMode();
+ break;
+
+ case SSM_SAVE_PANEL_TYPE: {
+ int tmpVal = p.readInt32();
+ ret = SSMSavePanelType(tmpVal);
+ break;
+ }
+ case SSM_READ_PANEL_TYPE:
+ ret = SSMReadPanelType();
+ break;
+
+ case SSM_SAVE_MAC_ADDR: {
+ int size = p.readInt32();
+ for (int i = 0; i < size; i++) {
+ dataBuf[i] = p.readInt32();
+ }
+ ret = KeyData_SaveMacAddress(dataBuf);
+ break;
+ }
+ case SSM_READ_MAC_ADDR: {
+ ret = KeyData_ReadMacAddress(dataBuf);
+ int size = KeyData_GetMacAddressDataLen();
+ //r->writeInt32(size);
+ for (int i = 0; i < size; i++) {
+ //r->writeInt32(dataBuf[i]);
+ }
+ //r->writeInt32(ret);
+ break;
+ }
+ case SSM_SAVE_BAR_CODE: {
+ int size = p.readInt32();
+ for (int i = 0; i < size; i++) {
+ dataBuf[i] = p.readInt32();
+ }
+ ret = KeyData_SaveBarCode(dataBuf);
+ break;
+ }
+ case SSM_READ_BAR_CODE: {
+ ret = KeyData_ReadBarCode(dataBuf);
+ int size = KeyData_GetBarCodeDataLen();
+ //r->writeInt32(size);
+ for (int i = 0; i < size; i++) {
+ //r->writeInt32(dataBuf[i]);
+ }
+ break;
+ }
+ case SSM_SAVE_HDCPKEY: {
+ int size = p.readInt32();
+ for (int i = 0; i < size; i++) {
+ dataBuf[i] = p.readInt32();
+ }
+ ret = SSMSaveHDCPKey(dataBuf);
+ break;
+ }
+ case SSM_READ_HDCPKEY: {
+ ret = SSMReadHDCPKey(dataBuf);
+ int size = SSMGetHDCPKeyDataLen();
+ //r->writeInt32(size);
+ for (int i = 0; i < size; i++) {
+ //r->writeInt32(dataBuf[i]);
+ }
+ break;
+ }
+ case SSM_SAVE_POWER_ON_MUSIC_SWITCH: {
+ int tmpVal = p.readInt32();
+ ret = SSMSavePowerOnMusicSwitch(tmpVal);
+ break;
+ }
+ case SSM_READ_POWER_ON_MUSIC_SWITCH:
+ ret = SSMReadPowerOnMusicSwitch();
+ break;
+
+ case SSM_SAVE_POWER_ON_MUSIC_VOL: {
+ int tmpVal = p.readInt32();
+ ret = SSMSavePowerOnMusicVolume(tmpVal);
+ break;
+ }
+ case SSM_READ_POWER_ON_MUSIC_VOL:
+ ret = SSMReadPowerOnMusicVolume();
+ break;
+ case SSM_SAVE_SYS_SLEEP_TIMER: {
+ int tmpVal = p.readInt32();
+ ret = SSMSaveSystemSleepTimer(tmpVal);
+ break;
+ }
+ case SSM_READ_SYS_SLEEP_TIMER:
+ ret = SSMReadSystemSleepTimer();
+ break;
+
+ case SSM_SAVE_INPUT_SRC_PARENTAL_CTL: {
+ int tmpSourceIndex = p.readInt32();
+ int tmpCtlFlag = p.readInt32();
+ ret = SSMSaveInputSourceParentalControl(tmpSourceIndex, tmpCtlFlag);
+ break;
+ }
+ case SSM_READ_INPUT_SRC_PARENTAL_CTL: {
+ int tmpSourceIndex = p.readInt32();
+ ret = SSMReadInputSourceParentalControl(tmpSourceIndex);
+ break;
+ }
+ case SSM_SAVE_PARENTAL_CTL_SWITCH: {
+ int tmpSwitchFlag = p.readInt32();
+ ret = SSMSaveParentalControlSwitch(tmpSwitchFlag);
+ break;
+ }
+ case SSM_READ_PARENTAL_CTL_SWITCH: {
+ ret = SSMReadParentalControlSwitch();
+ break;
+ }
+ case SSM_SAVE_PARENTAL_CTL_PASS_WORD: {
+ String16 pass_wd_str = p.readString16();
+ ret = SSMSaveParentalControlPassWord((unsigned char *)pass_wd_str.string(), pass_wd_str.size() * sizeof(unsigned short));
+ break;
+ }
+ case SSM_GET_CUSTOMER_DATA_START:
+ ret = SSMGetCustomerDataStart();
+ break;
+
+ case SSM_GET_CUSTOMER_DATA_LEN:
+ ret = SSMGetCustomerDataLen();
+ break;
+
+ case SSM_SAVE_STANDBY_MODE: {
+ int tmp_val = p.readInt32();
+ ret = SSMSaveStandbyMode(tmp_val);
+ break;
+ }
+ case SSM_READ_STANDBY_MODE:
+ ret = SSMReadStandbyMode();
+ break;
+
+ case SSM_SAVE_LOGO_ON_OFF_FLAG: {
+ int tmpSwitchFlag = p.readInt32();
+ ret = SSMSaveLogoOnOffFlag(tmpSwitchFlag);
+ break;
+ }
+ case SSM_READ_LOGO_ON_OFF_FLAG:
+ ret = SSMReadLogoOnOffFlag();
+ break;
+
+ case SSM_SAVE_HDMIEQ_MODE: {
+ int tmpSwitchFlag = p.readInt32();
+ ret = SSMSaveHDMIEQMode(tmpSwitchFlag);
+ break;
+ }
+ case SSM_READ_HDMIEQ_MODE:
+ ret = SSMReadHDMIEQMode();
+ break;
+
+ case SSM_SAVE_HDMIINTERNAL_MODE: {
+ int tmp_val = p.readInt32();
+ ret = SSMSaveHDMIInternalMode(tmp_val);
+ break;
+ }
+ case SSM_READ_HDMIINTERNAL_MODE:
+ ret = SSMReadHDMIInternalMode();
+ break;
+
+ case SSM_SAVE_GLOBAL_OGOENABLE: {
+ int tmp_val = p.readInt32();
+ ret = SSMSaveGlobalOgoEnable(tmp_val);
+ break;
+ }
+ case SSM_READ_GLOBAL_OGOENABLE:
+ ret = SSMReadGlobalOgoEnable();
+ break;
+
+ case SSM_SAVE_NON_STANDARD_STATUS: {
+ int tmp_val = p.readInt32();
+ ret = SSMSaveNonStandardValue(tmp_val);
+ break;
+ }
+ case SSM_READ_NON_STANDARD_STATUS:
+ ret = SSMReadNonStandardValue();
+ break;
+
+ case SSM_SAVE_ADB_SWITCH_STATUS: {
+ int tmp_val = p.readInt32();
+ ret = SSMSaveAdbSwitchValue(tmp_val);
+ break;
+ }
+ case SSM_READ_ADB_SWITCH_STATUS:
+ ret = SSMReadAdbSwitchValue();
+ break;
+
+ case SSM_SET_HDCP_KEY:
+ ret = SSMSetHDCPKey();
+ break;
+
+ case SSM_REFRESH_HDCPKEY:
+ ret = SSMRefreshHDCPKey();
+ break;
+
+ case SSM_SAVE_CHROMA_STATUS: {
+ int tmp_val = p.readInt32();
+ ret = SSMSaveChromaStatus(tmp_val);
+ break;
+ }
+ case SSM_SAVE_CA_BUFFER_SIZE: {
+ int tmp_val = p.readInt32();
+ ret = SSMSaveCABufferSizeValue(tmp_val);
+ break;
+ }
+ case SSM_READ_CA_BUFFER_SIZE:
+ ret= SSMReadCABufferSizeValue();
+ break;
+
+ case SSM_GET_ATV_DATA_START:
+ ret = SSMGetATVDataStart();
+ break;
+
+ case SSM_GET_ATV_DATA_LEN:
+ ret = SSMGetATVDataLen();
+ break;
+
+ case SSM_GET_VPP_DATA_START:
+ ret = SSMGetVPPDataStart();
+ break;
+
+ case SSM_GET_VPP_DATA_LEN:
+ ret = SSMGetVPPDataLen();
+ break;
+
+ case SSM_SAVE_NOISE_GATE_THRESHOLD_STATUS: {
+ int tmp_val = p.readInt32();
+ ret = SSMSaveNoiseGateThresholdValue(tmp_val);
+ break;
+ }
+ case SSM_READ_NOISE_GATE_THRESHOLD_STATUS:
+ ret = SSMReadNoiseGateThresholdValue();
+ break;
+
+ case SSM_SAVE_HDMI_EDID_VER: {
+ int port_id = p.readInt32();
+ int ver = p.readInt32();
+ ret = SSMSaveHDMIEdidMode((tv_hdmi_port_id_t)port_id, (tv_hdmi_edid_version_t)ver);
+ break;
+ }
+ case SSM_READ_HDMI_EDID_VER: {
+ int port_id = p.readInt32();
+ ret = SSMReadHDMIEdidVersion((tv_hdmi_port_id_t)port_id);
+ break;
+ }
+ case SSM_SAVE_HDCP_KEY_ENABLE: {
+ int enable = p.readInt32();
+ ret = SSMSaveHDMIHdcpSwitcher(enable);
+ break;
+ }
+ case SSM_READ_HDCP_KEY_ENABLE:
+ ret = SSMReadHDMIHdcpSwitcher();
+ break;
+ // SSM END
+
+ //MISC
+ case MISC_CFG_SET: {
+ String8 key(p.readString16());
+ String8 value(p.readString16());
+
+ ret = config_set_str(CFG_SECTION_TV, key.string(), value.string());
+ break;
+ }
+ case MISC_CFG_GET: {
+ String8 key(p.readString16());
+ String8 def(p.readString16());
+
+ const char *value = config_get_str(CFG_SECTION_TV, key.string(), def.string());
+ //r->writeString16(String16(value));
+ break;
+ }
+ case MISC_SET_WDT_USER_PET: {
+ int counter = p.readInt32();
+ ret = TvMisc_SetUserCounter(counter);
+ break;
+ }
+ case MISC_SET_WDT_USER_COUNTER: {
+ int counter_time_out = p.readInt32();
+ ret = TvMisc_SetUserCounterTimeOut(counter_time_out);
+ break;
+ }
+ case MISC_SET_WDT_USER_PET_RESET_ENABLE: {
+ int enable = p.readInt32();
+ ret = TvMisc_SetUserPetResetEnable(enable);
+ break;
+ }
+ case MISC_GET_TV_API_VERSION: {
+ // write tvapi version info
+ const char *str = tvservice_get_git_branch_info();
+ //r->writeString16(String16(str));
+
+ str = tvservice_get_git_version_info();
+ //r->writeString16(String16(str));
+
+ str = tvservice_get_last_chaned_time_info();
+ //r->writeString16(String16(str));
+
+ str = tvservice_get_build_time_info();
+ //r->writeString16(String16(str));
+
+ str = tvservice_get_build_name_info();
+ //r->writeString16(String16(str));
+ break;
+ }
+ case MISC_GET_DVB_API_VERSION: {
+ // write dvb version info
+ const char *str = dvb_get_git_branch_info();
+ //r->writeString16(String16(str));
+
+ str = dvb_get_git_version_info();
+ //r->writeString16(String16(str));
+
+ str = dvb_get_last_chaned_time_info();
+ //r->writeString16(String16(str));
+
+ str = dvb_get_build_time_info();
+ //r->writeString16(String16(str));
+
+ str = dvb_get_build_name_info();
+ //r->writeString16(String16(str));
+ break;
+ }
+ //MISC END
+
+ // EXTAR
+ case ATV_GET_CURRENT_PROGRAM_ID:
+ ret = mpTv->getATVProgramID();
+ break;
+
+ case DTV_GET_CURRENT_PROGRAM_ID:
+ ret = mpTv->getDTVProgramID();
+ break;
+
+ case ATV_SAVE_PROGRAM_ID: {
+ int progID = p.readInt32();
+ mpTv->saveATVProgramID(progID);
+ break;
+ }
+ case SAVE_PROGRAM_ID: {
+ int type = p.readInt32();
+ int progID = p.readInt32();
+ if (type == CTvProgram::TYPE_DTV)
+ mpTv->saveDTVProgramID(progID);
+ else if (type == CTvProgram::TYPE_RADIO)
+ mpTv->saveRadioProgramID(progID);
+ else
+ mpTv->saveATVProgramID(progID);
+ break;
+ }
+ case GET_PROGRAM_ID: {
+ int type = p.readInt32();
+ int id;
+ if (type == CTvProgram::TYPE_DTV)
+ id = mpTv->getDTVProgramID();
+ else if (type == CTvProgram::TYPE_RADIO)
+ id = mpTv->getRadioProgramID();
+ else
+ id = mpTv->getATVProgramID();
+ ret = id;
+ break;
+ }
+
+ case ATV_GET_MIN_MAX_FREQ: {
+ int min, max;
+ int tmpRet = mpTv->getATVMinMaxFreq(&min, &max);
+ //r->writeInt32(min);
+ //r->writeInt32(max);
+ //r->writeInt32(tmpRet);
+ break;
+ }
+ case DTV_GET_SCAN_FREQUENCY_LIST: {
+ Vector<sp<CTvChannel> > out;
+ ret = CTvRegion::getChannelListByName((char *)"CHINA,Default DTMB ALL", out);
+ //r->writeInt32(out.size());
+ for (int i = 0; i < (int)out.size(); i++) {
+ //r->writeInt32(out[i]->getID());
+ //r->writeInt32(out[i]->getFrequency());
+ //r->writeInt32(out[i]->getLogicalChannelNum());
+ }
+ break;
+ }
+ case DTV_GET_SCAN_FREQUENCY_LIST_MODE: {
+ int mode = p.readInt32();
+ Vector<sp<CTvChannel> > out;
+ ret = CTvRegion::getChannelListByName((char *)CTvScanner::getDtvScanListName(mode), out);
+ //r->writeInt32(out.size());
+ for (int i = 0; i < (int)out.size(); i++) {
+ //r->writeInt32(out[i]->getID());
+ //r->writeInt32(out[i]->getFrequency());
+ //r->writeInt32(out[i]->getLogicalChannelNum());
+ }
+ break;
+ }
+ case DTV_GET_CHANNEL_INFO: {
+ int dbID = p.readInt32();
+ channel_info_t chan_info;
+ ret = mpTv->getChannelInfoBydbID(dbID, chan_info);
+ //r->writeInt32(chan_info.freq);
+ //r->writeInt32(chan_info.uInfo.dtvChanInfo.strength);
+ //r->writeInt32(chan_info.uInfo.dtvChanInfo.quality);
+ //r->writeInt32(chan_info.uInfo.dtvChanInfo.ber);
+ break;
+ }
+ case ATV_GET_CHANNEL_INFO: {
+ int dbID = p.readInt32();
+ channel_info_t chan_info;
+ ret = mpTv->getChannelInfoBydbID(dbID, chan_info);
+ //r->writeInt32(chan_info.freq);
+ //r->writeInt32(chan_info.uInfo.atvChanInfo.finefreq);
+ //r->writeInt32(chan_info.uInfo.atvChanInfo.videoStd);
+ //r->writeInt32(chan_info.uInfo.atvChanInfo.audioStd);
+ //r->writeInt32(chan_info.uInfo.atvChanInfo.isAutoStd);
+ break;
+ }
+ case ATV_SCAN_MANUAL: {
+ int startFreq = p.readInt32();
+ int endFreq = p.readInt32();
+ int videoStd = p.readInt32();
+ int audioStd = p.readInt32();
+ ret = mpTv->atvMunualScan(startFreq, endFreq, videoStd, audioStd);
+ //mTvService->mpScannerClient = this;
+ break;
+ }
+
+ case ATV_SCAN_AUTO: {
+ int videoStd = p.readInt32();
+ int audioStd = p.readInt32();
+ int searchType = p.readInt32();
+ int procMode = p.readInt32();
+ ret = mpTv->atvAutoScan(videoStd, audioStd, searchType, procMode);
+ //mTvService->mpScannerClient = this;
+ break;
+ }
+ case DTV_SCAN_MANUAL: {
+ int freq = p.readInt32();
+ ret = mpTv->dtvManualScan(freq, freq);
+ //mTvService->mpScannerClient = this;
+ break;
+ }
+ case DTV_SCAN_MANUAL_BETWEEN_FREQ: {
+ int beginFreq = p.readInt32();
+ int endFreq = p.readInt32();
+ int modulation = p.readInt32();
+ ret = mpTv->dtvManualScan(beginFreq, endFreq, modulation);
+ //mTvService->mpScannerClient = this;
+ break;
+ }
+ case DTV_SCAN_AUTO: {
+ ret = mpTv->dtvAutoScan();
+ //mTvService->mpScannerClient = this;
+ break;
+ }
+ case DTV_SCAN: {
+ int mode = p.readInt32();
+ int scanmode = p.readInt32();
+ int freq = p.readInt32();
+ int para1 = p.readInt32();
+ int para2 = p.readInt32();
+ ret = mpTv->dtvScan(mode, scanmode, freq, freq, para1, para2);
+ //mTvService->mpScannerClient = this;
+ break;
+ }
+ case STOP_PROGRAM_PLAY:
+ ret = mpTv->stopPlayingLock();
+ break;
+
+ case ATV_DTV_SCAN_PAUSE:
+ ret = mpTv->pauseScan();
+ break;
+
+ case ATV_DTV_SCAN_RESUME:
+ ret = mpTv->resumeScan();
+ break;
+
+ case ATV_DTV_GET_SCAN_STATUS:
+ ret = mpTv->getScanStatus();
+ break;
+
+ case ATV_DTV_SCAN_OPERATE_DEVICE : {
+ int type = p.readInt32();
+ mpTv->operateDeviceForScan(type);
+ break;
+ }
+ case DTV_SET_TEXT_CODING: {
+ String8 coding(p.readString16());
+ mpTv->setDvbTextCoding((char *)coding.string());
+ break;
+ }
+
+ case TV_CLEAR_ALL_PROGRAM: {
+ int arg0 = p.readInt32();
+
+ ret = mpTv->clearAllProgram(arg0);
+ //mTvService->mpScannerClient = this;
+ break;
+ }
+
+ case HDMIRX_GET_KSV_INFO: {
+ int data[2] = {0, 0};
+ ret = mpTv->GetHdmiHdcpKeyKsvInfo(data);
+ //r->writeInt32(data[0]);
+ //r->writeInt32(data[1]);
+ break;
+ }
+
+ case STOP_SCAN:
+ mpTv->stopScanLock();
+ break;
+
+ case DTV_GET_SNR:
+ ret = mpTv->getFrontendSNR();
+ break;
+
+ case DTV_GET_BER:
+ ret = mpTv->getFrontendBER();
+ break;
+
+ case DTV_GET_STRENGTH:
+ ret = mpTv->getFrontendSignalStrength();
+ break;
+
+ case DTV_GET_AUDIO_TRACK_NUM: {
+ int programId = p.readInt32();
+ ret = mpTv->getAudioTrackNum(programId);
+ break;
+ }
+ case DTV_GET_AUDIO_TRACK_INFO: {
+ int progId = p.readInt32();
+ int aIdx = p.readInt32();
+ int aFmt = -1;
+ String8 lang;
+ ret = mpTv->getAudioInfoByIndex(progId, aIdx, &aFmt, lang);
+ //r->writeInt32(aFmt);
+ //r->writeString16(String16(lang));
+ break;
+ }
+ case DTV_SWITCH_AUDIO_TRACK: {
+ int aPid = p.readInt32();
+ int aFmt = p.readInt32();
+ int aParam = p.readInt32();
+ ret = mpTv->switchAudioTrack(aPid, aFmt, aParam);
+ break;
+ }
+ case DTV_SET_AUDIO_AD: {
+ int aEnable = p.readInt32();
+ int aPid = p.readInt32();
+ int aFmt = p.readInt32();
+ ret = mpTv->setAudioAD(aEnable, aPid, aFmt);
+ break;
+ }
+ case DTV_GET_CURR_AUDIO_TRACK_INDEX: {
+ int currAduIdx = -1;
+ int progId = p.readInt32();
+ CTvProgram prog;
+ CTvProgram::selectByID(progId, prog);
+ currAduIdx = prog.getCurrAudioTrackIndex();
+ //r->writeInt32(currAduIdx);
+ break;
+ }
+ case DTV_SET_AUDIO_CHANNEL_MOD: {
+ int audioChannelIdx = p.readInt32();
+ mpTv->setAudioChannel(audioChannelIdx);
+ break;
+ }
+ case DTV_GET_AUDIO_CHANNEL_MOD: {
+ int currChannelMod = mpTv->getAudioChannel();
+ //r->writeInt32(currChannelMod);
+ break;
+ }
+ case DTV_GET_CUR_FREQ: {
+ int progId = p.readInt32();
+ CTvProgram prog;
+ CTvChannel channel;
+
+ int iRet = CTvProgram::selectByID(progId, prog);
+ if (0 != iRet) return -1;
+ prog.getChannel(channel);
+ int freq = channel.getFrequency();
+ //r->writeInt32(freq);
+ break;
+ }
+ case DTV_GET_EPG_UTC_TIME: {
+ int utcTime = mpTv->getTvTime();
+ //r->writeInt32(utcTime);
+ break;
+ }
+ case DTV_GET_EPG_INFO_POINT_IN_TIME: {
+ int progid = p.readInt32();
+ int utcTime = p.readInt32();
+ CTvProgram prog;
+ int ret = CTvProgram::selectByID(progid, prog);
+ CTvEvent ev;
+ ret = ev.getProgPresentEvent(prog.getSrc(), prog.getID(), utcTime, ev);
+ //r->writeString16(String16(ev.getName()));
+ //r->writeString16(String16(ev.getDescription()));
+ //r->writeString16(String16(ev.getExtDescription()));
+ //r->writeInt32(ev.getStartTime());
+ //r->writeInt32(ev.getEndTime());
+ //r->writeInt32(ev.getSubFlag());
+ //r->writeInt32(ev.getEventId());
+ break;
+ }
+ case DTV_GET_EPG_INFO_DURATION: {
+ Vector<sp<CTvEvent> > epgOut;
+ int progid = p.readInt32();
+ int iUtcStartTime = p.readInt32();
+ int iDurationTime = p.readInt32();
+ CTvProgram prog;
+ CTvEvent ev;
+ int iRet = CTvProgram::selectByID(progid, prog);
+ if (0 != iRet) {
+ break;
+ }
+ iRet = ev.getProgScheduleEvents(prog.getSrc(), prog.getID(), iUtcStartTime, iDurationTime, epgOut);
+ if (0 != iRet) {
+ break;
+ }
+ int iObOutSize = epgOut.size();
+ if (0 == iObOutSize) {
+ break;
+ }
+
+ //r->writeInt32(iObOutSize);
+ for (int i = 0; i < iObOutSize; i ++) {
+ //r->writeString16(String16(epgOut[i]->getName()));
+ //r->writeString16(String16(epgOut[i]->getDescription()));
+ //r->writeString16(String16(ev.getExtDescription()));
+ //r->writeInt32(epgOut[i]->getStartTime());
+ //r->writeInt32(epgOut[i]->getEndTime());
+ //r->writeInt32(epgOut[i]->getSubFlag());
+ //r->writeInt32(epgOut[i]->getEventId());
+ }
+ break;
+ }
+ case DTV_SET_PROGRAM_NAME: {
+ CTvProgram prog;
+ int progid = p.readInt32();
+ String16 tmpName = p.readString16();
+ String8 strName = String8(tmpName);
+ prog.updateProgramName(progid, strName);
+ break;
+ }
+ case DTV_SET_PROGRAM_SKIPPED: {
+ CTvProgram prog;
+ int progid = p.readInt32();
+ bool bSkipFlag = p.readInt32();
+ prog.setSkipFlag(progid, bSkipFlag);
+ break;
+ }
+ case DTV_SET_PROGRAM_FAVORITE: {
+ CTvProgram prog;
+ int progid = p.readInt32();
+ bool bFavorite = p.readInt32();
+ prog.setFavoriteFlag(progid, bFavorite);
+ break;
+ }
+ case DTV_DETELE_PROGRAM: {
+ CTvProgram prog;
+ int progid = p.readInt32();
+ prog.deleteProgram(progid);
+ break;
+ }
+ case SET_BLACKOUT_ENABLE: {
+ int enable = p.readInt32();
+ mpTv->setBlackoutEnable(enable);
+ break;
+ }
+ case START_AUTO_BACKLIGHT:
+ mpTv->setAutoBackLightStatus(1);
+ break;
+
+ case STOP_AUTO_BACKLIGHT:
+ mpTv->setAutoBackLightStatus(0);
+ break;
+
+ case IS_AUTO_BACKLIGHTING: {
+ int on = mpTv->getAutoBackLightStatus();
+ break;
+ }
+
+ case GET_AVERAGE_LUMA:
+ ret = mpTv->getAverageLuma();
+ break;
+
+ case GET_AUTO_BACKLIGHT_DATA: {
+ int buf[128] = {0};
+ int size = mpTv->getAutoBacklightData(buf);
+ //r->writeInt32(size);
+ for (int i = 0; i < size; i++) {
+ //r->writeInt32(buf[i]);
+ }
+ break;
+ }
+ case SET_AUTO_BACKLIGHT_DATA:
+ ret = mpTv->setAutobacklightData(String8(p.readString16()));
+ break;
+
+ case SSM_READ_BLACKOUT_ENABLE: {
+ int enable = mpTv->getSaveBlackoutEnable();
+ //r->writeInt32(enable);
+ break;
+ }
+ case DTV_SWAP_PROGRAM: {
+ CTvProgram prog;
+ int firstProgId = p.readInt32();
+ int secondProgId = p.readInt32();
+ CTvProgram::selectByID(firstProgId, prog);
+ int firstChanOrderNum = prog.getChanOrderNum();
+ CTvProgram::selectByID(secondProgId, prog);
+ int secondChanOrderNum = prog.getChanOrderNum();
+ prog.swapChanOrder(firstProgId, firstChanOrderNum, secondProgId, secondChanOrderNum);
+ break;
+ }
+ case DTV_SET_PROGRAM_LOCKED: {
+ CTvProgram prog;
+ int progid = p.readInt32();
+ bool bLocked = p.readInt32();
+ prog.setLockFlag(progid, bLocked);
+ break;
+ }
+ case DTV_GET_FREQ_BY_PROG_ID: {
+ int freq = 0;
+ int progid = p.readInt32();
+ CTvProgram prog;
+ ret = CTvProgram::selectByID(progid, prog);
+ if (ret != 0) return -1;
+ CTvChannel channel;
+ prog.getChannel(channel);
+ freq = channel.getFrequency();
+ break;
+ }
+ case DTV_GET_BOOKED_EVENT: {
+ CTvBooking tvBook;
+ Vector<sp<CTvBooking> > vTvBookOut;
+ tvBook.getBookedEventList(vTvBookOut);
+ int iObOutSize = vTvBookOut.size();
+ if (0 == iObOutSize) {
+ break;
+ }
+ //r->writeInt32(iObOutSize);
+ for (int i = 0; i < iObOutSize; i ++) {
+ //r->writeString16(String16(vTvBookOut[i]->getProgName()));
+ //r->writeString16(String16(vTvBookOut[i]->getEvtName()));
+ //r->writeInt32(vTvBookOut[i]->getStartTime());
+ //r->writeInt32(vTvBookOut[i]->getDurationTime());
+ //r->writeInt32(vTvBookOut[i]->getBookId());
+ //r->writeInt32(vTvBookOut[i]->getProgramId());
+ //r->writeInt32(vTvBookOut[i]->getEventId());
+ }
+ break;
+ }
+ case SET_FRONTEND_PARA: {
+ frontend_para_set_t feParms;
+ feParms.mode = (fe_type_t)p.readInt32();
+ feParms.freq = p.readInt32();
+ feParms.videoStd = (atv_video_std_t)p.readInt32();
+ feParms.audioStd = (atv_audio_std_t)p.readInt32();
+ feParms.para1 = p.readInt32();
+ feParms.para2 = p.readInt32();
+ mpTv->resetFrontEndPara(feParms);
+ break;
+ }
+ case PLAY_PROGRAM: {
+ int mode = p.readInt32();
+ int freq = p.readInt32();
+ if (mode == FE_ANALOG) {
+ int videoStd = p.readInt32();
+ int audioStd = p.readInt32();
+ int fineTune = p.readInt32();
+ int audioCompetation = p.readInt32();
+ mpTv->playAtvProgram(freq, videoStd, audioStd, fineTune, audioCompetation);
+ } else {
+ int para1 = p.readInt32();
+ int para2 = p.readInt32();
+ int vid = p.readInt32();
+ int vfmt = p.readInt32();
+ int aid = p.readInt32();
+ int afmt = p.readInt32();
+ int pcr = p.readInt32();
+ int audioCompetation = p.readInt32();
+ mpTv->playDtvProgram(mode, freq, para1, para2, vid, vfmt, aid, afmt, pcr, audioCompetation);
+ }
+ break;
+ }
+ case GET_PROGRAM_LIST: {
+ Vector<sp<CTvProgram> > out;
+ int type = p.readInt32();
+ int skip = p.readInt32();
+ CTvProgram::selectByType(type, skip, out);
+ /*
+ r->writeInt32(out.size());
+ for (int i = 0; i < (int)out.size(); i++) {
+ r->writeInt32(out[i]->getID());
+ r->writeInt32(out[i]->getChanOrderNum());
+ r->writeInt32(out[i]->getMajor());
+ r->writeInt32(out[i]->getMinor());
+ r->writeInt32(out[i]->getProgType());
+ r->writeString16(String16(out[i]->getName()));
+ r->writeInt32(out[i]->getProgSkipFlag());
+ r->writeInt32(out[i]->getFavoriteFlag());
+ r->writeInt32(out[i]->getVideo()->getFormat());
+ CTvChannel ch;
+ out[i]->getChannel(ch);
+ r->writeInt32(ch.getDVBTSID());
+ r->writeInt32(out[i]->getServiceId());
+ r->writeInt32(out[i]->getVideo()->getPID());
+ r->writeInt32(out[i]->getVideo()->getPID());
+
+ int audioTrackSize = out[i]->getAudioTrackSize();
+ r->writeInt32(audioTrackSize);
+ for (int j = 0; j < audioTrackSize; j++) {
+ r->writeString16(String16(out[i]->getAudio(j)->getLang()));
+ r->writeInt32(out[i]->getAudio(j)->getFormat());
+ r->writeInt32(out[i]->getAudio(j)->getPID());
+ }
+ Vector<CTvProgram::Subtitle *> mvSubtitles = out[i]->getSubtitles();
+ int subTitleSize = mvSubtitles.size();
+ r->writeInt32(subTitleSize);
+ if (subTitleSize > 0) {
+ for (int k = 0; k < subTitleSize; k++) {
+ r->writeInt32(mvSubtitles[k]->getPID());
+ r->writeString16(String16(mvSubtitles[k]->getLang()));
+ r->writeInt32(mvSubtitles[k]->getCompositionPageID());
+ r->writeInt32(mvSubtitles[k]->getAncillaryPageID());
+ }
+ }
+ r->writeInt32(ch.getFrequency());
+ }
+ */
+ break;
+ }
+ case DTV_GET_VIDEO_FMT_INFO: {
+ int srcWidth = 0;
+ int srcHeight = 0;
+ int srcFps = 0;
+ int srcInterlace = 0;
+ int iRet = -1;
+
+ /*
+ iRet == mpTv->getVideoFormatInfo(&srcWidth, &srcHeight, &srcFps, &srcInterlace);
+ r->writeInt32(srcWidth);
+ r->writeInt32(srcHeight);
+ r->writeInt32(srcFps);
+ r->writeInt32(srcInterlace);
+ r->writeInt32(iRet);
+ */
+ }
+ break;
+
+ case DTV_GET_AUDIO_FMT_INFO: {
+ int iRet = -1;
+ int fmt[2];
+ int sample_rate[2];
+ int resolution[2];
+ int channels[2];
+ int lpepresent[2];
+ int frames;
+ int ab_size;
+ int ab_data;
+ int ab_free;
+ iRet == mpTv->getAudioFormatInfo(fmt, sample_rate, resolution, channels,
+ lpepresent, &frames, &ab_size, &ab_data, &ab_free);
+ /*
+ r->writeInt32(fmt[0]);
+ r->writeInt32(fmt[1]);
+ r->writeInt32(sample_rate[0]);
+ r->writeInt32(sample_rate[1]);
+ r->writeInt32(resolution[0]);
+ r->writeInt32(resolution[1]);
+ r->writeInt32(channels[0]);
+ r->writeInt32(channels[1]);
+ r->writeInt32(lpepresent[0]);
+ r->writeInt32(lpepresent[1]);
+ r->writeInt32(frames);
+ r->writeInt32(ab_size);
+ r->writeInt32(ab_data);
+ r->writeInt32(ab_free);
+ r->writeInt32(iRet);
+ */
+ }
+ break;
+
+ case HDMIAV_HOTPLUGDETECT_ONOFF:
+ ret = mpTv->GetHdmiAvHotplugDetectOnoff();
+ break;
+
+ case HANDLE_GPIO: {
+ String8 strName(p.readString16());
+ int is_out = p.readInt32();
+ int edge = p.readInt32();
+ ret = mpTv->handleGPIO((char *)strName.string(), is_out, edge);
+ break;
+ }
+ case SET_LCD_ENABLE: {
+ int enable = p.readInt32();
+ ret = mpTv->setLcdEnable(enable);
+ break;
+ }
+ case GET_ALL_TV_DEVICES:
+ //const char *value = config_get_str(CFG_SECTION_TV, CGF_DEFAULT_INPUT_IDS, "null");
+ //r->writeCString(value);
+ break;
+
+ case GET_HDMI_PORTS:
+ ret = config_get_int(CFG_SECTION_TV, CGF_DEFAULT_HDMI_PORTS, 0);
+ break;
+
+ case TV_CLEAR_FRONTEND: {
+ int para = p.readInt32();
+ ret = mpTv->clearFrontEnd(para);
+ break;
+ }
+ case TV_SET_FRONTEND: {
+ int force = p.readInt32();
+ String8 feparas(p.readString16());
+ ret = mpTv->setFrontEnd(feparas, (force != 0));
+ break;
+ }
+ case PLAY_PROGRAM_2: {
+ String8 feparas(p.readString16());
+ int vid = p.readInt32();
+ int vfmt = p.readInt32();
+ int aid = p.readInt32();
+ int afmt = p.readInt32();
+ int pcr = p.readInt32();
+ int audioCompetation = p.readInt32();
+ mpTv->playDtvProgram(feparas.string(), vid, vfmt, aid, afmt, pcr, audioCompetation);
+ break;
+ }
+ case TV_SCAN_2: {
+ String8 feparas(p.readString16());
+ String8 scanparas(p.readString16());
+ ret = mpTv->Scan(feparas.string(), scanparas.string());
+ //mTvService->mpScannerClient = this;
+ break;
+ }
+ case SET_AUDIO_OUTMODE: {
+ int mode = p.readInt32();
+ ret = SetAudioOutmode(mode);
+ break;
+ }
+
+ case GET_AUDIO_OUTMODE:
+ ret = GetAudioOutmode();
+ break;
+
+ case GET_AUDIO_STREAM_OUTMODE:
+ ret = GetAudioStreamOutmode();
+ break;
+
+ case SET_AMAUDIO_VOLUME: {
+ int volume = p.readInt32();
+ ret = mpTv->setAmAudioVolume(float (volume));
+ break;
+ }
+ case GET_AMAUDIO_VOLUME:
+ ret = (int)mpTv->getAmAudioVolume();
+ break;
+
+ case SAVE_AMAUDIO_VOLUME: {
+ int volume = p.readInt32();
+ int source = p.readInt32();
+ ret = mpTv->saveAmAudioVolume(volume, source);
+ break;
+ }
+ case GET_SAVE_AMAUDIO_VOLUME: {
+ int source = p.readInt32();
+ ret = mpTv->getSaveAmAudioVolume(source);
+ break;
+ }
+ case DTV_UPDATE_RRT: {
+ int freq = p.readInt32();
+ int modulation = p.readInt32();
+ int mode = p.readInt32();
+ ret = mpTv->Tv_RrtUpdate(freq, modulation, mode);
+ break;
+ }
+ case DTV_SEARCH_RRT: {
+ int rating_region_id = p.readInt32();
+ int dimension_id = p.readInt32();
+ int value_id = p.readInt32();
+ rrt_select_info_t rrt_info;
+ ret = mpTv->Tv_RrtSearch(rating_region_id, dimension_id, value_id, &rrt_info);
+ //r->writeInt32(rrt_info.dimensions_name_count);
+ int count = rrt_info.dimensions_name_count;
+ if (count != 0) {
+ //r->writeString16(String16(rrt_info.dimensions_name));
+ }
+ //r->writeInt32(rrt_info.rating_region_name_count);
+ count = rrt_info.rating_region_name_count;
+ if (count != 0) {
+ //r->writeString16(String16(rrt_info.rating_region_name));
+ }
+ //r->writeInt32(rrt_info.rating_value_text_count);
+ count = rrt_info.rating_value_text_count;
+ if (count != 0) {
+ //r->writeString16(String16(rrt_info.rating_value_text));
+ }
+ break;
+ }
+
+ case DTV_UPDATE_EAS:
+ ret = mpTv->Tv_Easupdate();
+ break;
+ // EXTAR END
+
+ //NEWPLAY/RECORDING
+ case DTV_RECORDING_CMD:
+ ret = mpTv->doRecordingCommand(p.readInt32(), String8(p.readString16()).string(), String8(p.readString16()).string());
+ break;
+
+ case DTV_PLAY_CMD:
+ ret = mpTv->doPlayCommand(p.readInt32(), String8(p.readString16()).string(), String8(p.readString16()).string());
+ break;
+
+ default:
+ break;
+ }
+
+ return ret;
+}
+
+void DroidTvServiceIntf::setListener(const sp<TvServiceNotify>& listener) {
+ mNotifyListener = listener;
+}
+
+
+
+status_t DroidTvServiceIntf::dump(int fd, const Vector<String16>& args)
+{
+#if 0
+ String8 result;
+ if (!checkCallingPermission(String16("android.permission.DUMP"))) {
+ char buffer[256];
+ snprintf(buffer, 256, "Permission Denial: "
+ "can't dump system_control from pid=%d, uid=%d\n",
+ IPCThreadState::self()->getCallingPid(),
+ IPCThreadState::self()->getCallingUid());
+ result.append(buffer);
+ } else {
+ AutoMutex _l(mServiceLock);
+ if (args.size() > 0) {
+ for (int i = 0; i < (int)args.size(); i ++) {
+ if (args[i] == String16("-s")) {
+ String8 section(args[i+1]);
+ String8 key(args[i+2]);
+ const char *value = config_get_str(section, key, "");
+ result.appendFormat("section:[%s] key:[%s] value:[%s]\n", section.string(), key.string(), value);
+ }
+ else if (args[i] == String16("-h")) {
+ result.append(
+ "\ntv service use to control the tv logical \n\n"
+ "usage: dumpsys tvservice [-s <SECTION> <KEY>][-m][-h] \n"
+ "-s: get config string \n"
+ " SECTION:[TV|ATV|SourceInputMap|SETTING|FBCUART]\n"
+ "-m: track native heap memory\n"
+ "-h: help \n\n");
+ }
+ else if (args[i] == String16("-m")) {
+ dumpMemoryAddresses(fd);
+ }
+ }
+ }
+ else {
+ /*
+ result.appendFormat("client num = %d\n", mUsers);
+ for (int i = 0; i < (int)mClients.size(); i++) {
+ wp<Client> client = mClients[i];
+ if (client != 0) {
+ sp<Client> c = client.promote();
+ if (c != 0) {
+ result.appendFormat("client[%d] pid = %d\n", i, c->getPid());
+ }
+ }
+ }
+ */
+
+ mpTv->dump(result);
+ }
+ }
+ write(fd, result.string(), result.size());
+#endif
+ return NO_ERROR;
+}
+
diff --git a/tvserver/DroidTvServiceIntf.h b/tvserver/DroidTvServiceIntf.h
new file mode 100644
index 0000000..b8085cc
--- a/dev/null
+++ b/tvserver/DroidTvServiceIntf.h
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2016 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.
+ * @author Tellen Yu
+ * @version 1.0
+ * @date 2018/1/16
+ * @par function description:
+ * - 1 droidlogic tvservice interface
+ */
+
+#ifndef ANDROID_DROID_TV_TVSERVICE_INTF_H
+#define ANDROID_DROID_TV_TVSERVICE_INTF_H
+
+//#include <include/Tv.h>
+#include <utils/threads.h>
+#include <utils/Vector.h>
+#include <stdint.h>
+#include <tv/CTv.h>
+
+#include <vendor/amlogic/hardware/tvserver/1.0/ITvServer.h>
+
+using namespace android;
+
+using ::vendor::amlogic::hardware::tvserver::V1_0::TvHidlParcel;
+
+class TvServiceNotify : virtual public RefBase {
+public:
+ TvServiceNotify() {}
+ virtual ~TvServiceNotify(){}
+ virtual void onEvent(const TvHidlParcel &hidlParcel) = 0;
+};
+
+class DroidTvServiceIntf: public CTv::TvIObserver {
+public:
+ DroidTvServiceIntf();
+ virtual ~DroidTvServiceIntf();
+ int processCmd(const Parcel &p);
+ void setListener(const sp<TvServiceNotify>& listener);
+ virtual void onTvEvent(const CTvEv &ev);
+
+ void startListener();
+ int startTv();
+ int stopTv();
+ int switchInputSrc(int32_t inputSrc);
+ int getInputSrcConnectStatus(int32_t inputSrc);
+ int getCurrentInputSrc();
+ int getHdmiAvHotplugStatus();
+ std::string getSupportInputDevices();
+ int getHdmiPorts();
+ void getCurSignalInfo(int &fmt, int &transFmt, int &status, int &frameRate);
+ int setMiscCfg(const std::string& key, const std::string& val);
+ std::string getMiscCfg(const std::string& key, const std::string& def);
+
+ int isDviSIgnal();
+ int isVgaTimingInHdmi();
+
+ virtual status_t dump(int fd, const Vector<String16>& args);
+
+ //wp<Client> mpScannerClient;
+ //wp<Client> mpSubClient;
+ //Vector< wp<Client> > mClients;
+
+private:
+ bool mIsStartTv;
+ CTv *mpTv;
+ sp<TvServiceNotify> mNotifyListener;
+};
+
+#endif/*ANDROID_DROID_TV_TVSERVICE_INTF_H*/
diff --git a/tvserver/main.cpp b/tvserver/main.cpp
deleted file mode 100644
index 07adab7..0000000
--- a/tvserver/main.cpp
+++ b/dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (c) 2014 Amlogic, Inc. All rights reserved.
- *
- * This source code is subject to the terms and conditions defined in the
- * file 'LICENSE' which is part of this source code package.
- *
- * Description: c++ file
- */
-
-#include <sys/types.h>
-#include <unistd.h>
-#include <grp.h>
-#include <binder/IPCThreadState.h>
-#include <binder/ProcessState.h>
-#include <binder/IServiceManager.h>
-#include <utils/Log.h>
-#include "TvService.h"
-
-using namespace android;
-
-int main(int argc __unused, char **argv __unused)
-{
- sp<ProcessState> proc(ProcessState::self());
- sp<IServiceManager> sm = defaultServiceManager();
- TvService::instantiate();
-
- ProcessState::self()->startThreadPool();
- IPCThreadState::self()->joinThreadPool();
-
- return 0;
-}
-
diff --git a/tvserver/main_tvserver.cpp b/tvserver/main_tvserver.cpp
new file mode 100644
index 0000000..ab3323d
--- a/dev/null
+++ b/tvserver/main_tvserver.cpp
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2016 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.
+ * @author Tellen Yu
+ * @version 1.0
+ * @date 2018/1/15
+ * @par function description:
+ * - 1 droidlogic tvserver daemon
+ */
+
+#define LOG_TAG "tvserver"
+
+#include <binder/IPCThreadState.h>
+#include <binder/ProcessState.h>
+#include <binder/IServiceManager.h>
+#include <cutils/properties.h>
+#include <HidlTransportSupport.h>
+
+#include "TvService.h"
+#include "DroidTvServer.h"
+
+using namespace android;
+using ::android::hardware::configureRpcThreadpool;
+using ::vendor::amlogic::hardware::tvserver::V1_0::implementation::DroidTvServer;
+using ::vendor::amlogic::hardware::tvserver::V1_0::implementation::ITvServer;
+using ::vendor::amlogic::hardware::tvserver::V1_0::ITvServer;
+
+
+int main(int argc __unused, char** argv __unused)
+{
+ bool treble = property_get_bool("persist.tvserver.treble", true);
+ if (treble) {
+ android::ProcessState::initWithDriver("/dev/vndbinder");
+ }
+
+ ALOGI("tvserver daemon starting in %s mode", treble?"treble":"normal");
+ configureRpcThreadpool(4, false);
+ sp<ProcessState> proc(ProcessState::self());
+
+ if (treble) {
+ sp<ITvServer> hidltvserver = new DroidTvServer();
+ if (hidltvserver == nullptr) {
+ ALOGE("Cannot create ITvServer service");
+ } else if (hidltvserver->registerAsService() != OK) {
+ ALOGE("Cannot register ITvServer service.");
+ } else {
+ ALOGI("Treble ITvServer service created.");
+ }
+ }
+ else {
+ TvService::instantiate();
+ }
+
+ /*
+ * This thread is just going to process Binder transactions.
+ */
+ IPCThreadState::self()->joinThreadPool();
+}
diff --git a/tvserver/tvserver.rc b/tvserver/tvserver.rc
index 75f7d5c..f1b8477 100644
--- a/tvserver/tvserver.rc
+++ b/tvserver/tvserver.rc
@@ -1,5 +1,7 @@
+on post-fs
+ restorecon_recursive /param
+
service tvd /vendor/bin/tvserver
class core
user root
group system
-
diff --git a/tvtests/tvconfig_test.cpp b/tvtests/tvconfig_test.cpp
deleted file mode 100644
index 0ebacc8..0000000
--- a/tvtests/tvconfig_test.cpp
+++ b/dev/null
@@ -1,437 +0,0 @@
-/*
- * Copyright (c) 2014 Amlogic, Inc. All rights reserved.
- *
- * This source code is subject to the terms and conditions defined in the
- * file 'LICENSE' which is part of this source code package.
- *
- * Description: c++ file
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <android/log.h>
-
-#include "tvconfig_core.h"
-#include "tvconfig.h"
-
-#define LOG_TAG "tvconfig_test"
-#include "CTvLog.h"
-
-static int GetAudioAmplifierBiquadsDataBuffer00(int *biquad_count, int *biquad_item_count, int biquad_data_buf[]);
-static int GetAudioAmplifierBiquadsDataBuffer01(int *biquad_count, int *biquad_item_count, int biquad_data_buf[]);
-
-static int GetTvAudioCardID(char tv_card_id_buf[]);
-static int GetTvAudioCardName(char tv_card_name_buf[]);
-
-static int ATVGetFacRestoreChanInfo(int *chan_cnt, int *item_cnt, int chan_data_buf[]);
-
-static void PrintGPIOCfgData(int cfg_info_item_count, GPIOCFGInfo cfg_info_buf[]);
-static int GetAudioAnalogAmplifierMuteGPIOCFG(char gpio_grp_str[], int *mute_gpio_addr, int *mute_on_val, int *mute_off_val);
-static int GetAudioHeadSetMuteGPIOCFG(char gpio_grp_str[], int *mute_gpio_addr, int *mute_on_val, int *mute_off_val);
-static int GetAudioAVOutMuteGPIOCFG(char gpio_grp_str[], int *mute_gpio_addr, int *mute_on_val, int *mute_off_val);
-static int GetWriteProtectGPIOCFG(char gpio_grp_str[], int *protect_gpio_addr, int *protect_on_val, int *protect_off_val);
-
-typedef struct tagTvServerInfo {
- int power_on_off_channel;
- int last_source_select;
- int system_language;
-} TvServerInfo;
-
-int main(int argc, char **argv)
-{
- int i, j;
- char key_buf[CC_CFG_KEY_STR_MAX_LEN];
- char cfg_buf[CC_CFG_VALUE_STR_MAX_LEN];
-
- config_set_log_level (CC_LOG_LEVEL_ALL);
-
- config_init((char *) "tvconfig.conf");
-
- strcpy(key_buf, "media.amplayer.enable-acodecs");
- config_get(key_buf, cfg_buf, (char *) "");
- LOGD("file(%s)'s function(%s), key string \"%s\", value string \"%s\".\n", __FILE__, "TV", key_buf, cfg_buf);
-
- strcpy(key_buf, "media.amplayer.enable-acodecs");
- strcpy(cfg_buf, "shorthoho");
- config_set(key_buf, cfg_buf);
-
- strcpy(key_buf, "media.amplayer.enable-acodecs");
- config_get(key_buf, cfg_buf, (char *) "");
- LOGD("file(%s)'s function(%s), key string \"%s\", value string \"%s\".\n", __FILE__, "TV", key_buf, cfg_buf);
-
- strcpy(key_buf, "media.amplayer.enable-acodecs");
- config_get(key_buf, cfg_buf, (char *) "");
- LOGD("file(%s)'s function(%s), key string \"%s\", value string \"%s\".\n", __FILE__, "TV", key_buf, cfg_buf);
-
- strcpy(key_buf, "media.amplayer.enable-acodecs");
- strcpy(cfg_buf, "asf,wav,aac,mp3,m4a,ape,flac,alac,hohoho");
- config_set(key_buf, cfg_buf);
-
- strcpy(key_buf, "media.amplayer.enable-acodecs");
- config_get(key_buf, cfg_buf, (char *) "");
- LOGD("file(%s)'s function(%s), key string \"%s\", value string \"%s\".\n", __FILE__, "TV", key_buf, cfg_buf);
-
- strcpy(key_buf, "shoufu.zhao.test");
- config_get(key_buf, cfg_buf, (char *) "");
- LOGD("file(%s)'s function(%s), key string \"%s\", value string \"%s\".\n", __FILE__, "TV", key_buf, cfg_buf);
-
- strcpy(key_buf, "shoufu.zhao.test");
- strcpy(cfg_buf, "test hohoho");
- config_set(key_buf, cfg_buf);
-
- strcpy(key_buf, "shoufu.zhao.test");
- config_get(key_buf, cfg_buf, (char *) "");
- LOGD("file(%s)'s function(%s), key string \"%s\", value string \"%s\".\n", __FILE__, "TV", key_buf, cfg_buf);
-
- int biquad_count = 0, biquad_item_count = 0;
- int biquad_data_buf00[128] = { 0 };
- int biquad_data_buf01[128] = { 0 };
-
- GetAudioAmplifierBiquadsDataBuffer00(&biquad_count, &biquad_item_count, biquad_data_buf00);
- for (i = 0; i < biquad_count; i++) {
- for (j = 0; j < biquad_item_count; j++) {
- LOGD("0x%x\n", biquad_data_buf00[i * biquad_item_count + j]);
- }
-
- LOGD("\n");
- }
-
- GetAudioAmplifierBiquadsDataBuffer01(&biquad_count, &biquad_item_count, biquad_data_buf01);
- for (i = 0; i < biquad_count; i++) {
- for (j = 0; j < biquad_item_count; j++) {
- LOGD("0x%x\n", biquad_data_buf01[i * biquad_item_count + j]);
- }
-
- LOGD("\n");
- }
-
- char tv_card_id_buf[64] = { 0 };
- char tv_card_name_buf[64] = { 0 };
-
- GetTvAudioCardID(tv_card_id_buf);
-
- GetTvAudioCardName(tv_card_name_buf);
-
- printf("tvservice log cfg value = %d\n", config_log_cfg_get(CC_LOG_MODULE_TVSERVICE));
- printf("vpp log cfg value = %d\n", config_log_cfg_get(CC_LOG_MODULE_VPP));
-
- int chan_cnt = 0, item_cnt = 0;
- int chan_data_buf[256] = { 0 };
-
- ATVGetFacRestoreChanInfo(&chan_cnt, &item_cnt, chan_data_buf);
-
- for (i = 0; i < chan_cnt; i++) {
- for (j = 0; j < item_cnt; j++) {
- LOGD("%d\n", chan_data_buf[i * item_cnt + j]);
- }
-
- LOGD("\n");
- }
-
- char gpio_grp_str[32] = { 0 };
- int gpio_addr, gpio_on_val;
-
- int cfg_info_item_count = 0;
- GPIOCFGInfo cfg_info_buf[64];
-
- if (cfg_get_one_gpio_data("audio.avout.mute.gpio", gpio_grp_str, &gpio_addr, &gpio_on_val) == 0) {
- cfg_info_item_count = 1;
-
- strcpy(cfg_info_buf[0].gpio_grp_str, gpio_grp_str);
- cfg_info_buf[0].gpio_addr = gpio_addr;
- cfg_info_buf[0].gpio_val = gpio_on_val;
-
- PrintGPIOCfgData(cfg_info_item_count, &cfg_info_buf[0]);
- }
-
- if (cfg_get_gpio_data("audio.avout.mute.gpio", &cfg_info_item_count, cfg_info_buf) == 0) {
- PrintGPIOCfgData(cfg_info_item_count, cfg_info_buf);
- }
-
- cfg_info_item_count = 64;
- if (cfg_get_gpio_data("audio.initaudio.gpioctl", &cfg_info_item_count, cfg_info_buf) == 0) {
- PrintGPIOCfgData(cfg_info_item_count, cfg_info_buf);
- }
-
- char tmp_buf[32] = { 0 };
- int mute_gpio_addr, mute_on_gpio_val, mute_off_gpio_val;
-
- if (GetAudioAnalogAmplifierMuteGPIOCFG(gpio_grp_str, &mute_gpio_addr, &mute_on_gpio_val, &mute_off_gpio_val) == 0) {
- sprintf(tmp_buf, "w %s %d %d", gpio_grp_str, mute_gpio_addr, mute_on_gpio_val);
- LOGD("%s, mute on write command %s\n", "GetAudioAnalogAmplifierMuteGPIOCFG", tmp_buf);
-
- sprintf(tmp_buf, "w %s %d %d", gpio_grp_str, mute_gpio_addr, mute_off_gpio_val);
- LOGD("%s, mute off write command %s\n", "GetAudioAnalogAmplifierMuteGPIOCFG", tmp_buf);
- }
-
- if (GetAudioHeadSetMuteGPIOCFG(gpio_grp_str, &mute_gpio_addr, &mute_on_gpio_val, &mute_off_gpio_val) == 0) {
- sprintf(tmp_buf, "w %s %d %d", gpio_grp_str, mute_gpio_addr, mute_on_gpio_val);
- LOGD("%s, mute on write command %s\n", "GetAudioHeadSetMuteGPIOCFG", tmp_buf);
-
- sprintf(tmp_buf, "w %s %d %d", gpio_grp_str, mute_gpio_addr, mute_off_gpio_val);
- LOGD("%s, mute off write command %s\n", "GetAudioHeadSetMuteGPIOCFG", tmp_buf);
- }
-
- if (GetAudioAVOutMuteGPIOCFG(gpio_grp_str, &mute_gpio_addr, &mute_on_gpio_val, &mute_off_gpio_val) == 0) {
- sprintf(tmp_buf, "w %s %d %d", gpio_grp_str, mute_gpio_addr, mute_on_gpio_val);
- LOGD("%s, mute on write command %s\n", "GetAudioAVOutMuteGPIOCFG", tmp_buf);
-
- sprintf(tmp_buf, "w %s %d %d", gpio_grp_str, mute_gpio_addr, mute_off_gpio_val);
- LOGD("%s, mute off write command %s\n", "GetAudioAVOutMuteGPIOCFG", tmp_buf);
- }
-
- if (GetWriteProtectGPIOCFG(gpio_grp_str, &mute_gpio_addr, &mute_on_gpio_val, &mute_off_gpio_val) == 0) {
- sprintf(tmp_buf, "w %s %d %d", gpio_grp_str, mute_gpio_addr, mute_on_gpio_val);
- LOGD("%s, protect on write command %s\n", "GetWriteProtectGPIOCFG", tmp_buf);
-
- sprintf(tmp_buf, "w %s %d %d", gpio_grp_str, mute_gpio_addr, mute_off_gpio_val);
- LOGD("%s, protect off write command %s\n", "GetWriteProtectGPIOCFG", tmp_buf);
- }
-
- tmpInfo.power_on_off_channel = 0;
- tmpInfo.last_source_select = 0;
- tmpInfo.system_language = 1;
-
- for (i = 0; i < 12; i++) {
- tmpInfo.last_source_select = i;
- }
-
- char item_buf[128] = { 0 };
-
- for (i = 0; i < 16; i++) {
- cfg_get_one_item("misc.lastselsrc.show.cfg", i, item_buf);
- LOGD("item %d = %s\n", i, item_buf);
- }
-
- config_uninit();
-
- LOGD("file(%s)'s function(%s) exiting.\n", __FILE__, "TV");
- return 0;
-}
-
-static int RealGetAudioAmplifierBiquadsDataBuffer(const char *key_str, int *biquad_count, int *biquad_item_count, int biquad_data_buf[])
-{
- int cfg_item_count = 0, tmpTotalItemCount = 0;
- char *token = NULL;
- const char *strDelimit = ",";
- char prop_value[CC_CFG_VALUE_STR_MAX_LEN];
-
- memset(prop_value, '\0', CC_CFG_VALUE_STR_MAX_LEN);
-
- config_get(key_str, prop_value, "null");
- if (strcasecmp(prop_value, "null") == 0) {
- LOGE("%s, can't get config \"%s\"!!!\n", "TV", key_str);
- *biquad_count = 0;
- *biquad_item_count = 0;
- return -1;
- }
-
- tmpTotalItemCount = 0;
-
- token = strtok(prop_value, strDelimit);
- while (token != NULL) {
- if (cfg_item_count == 0) {
- *biquad_count = strtoul(token, NULL, 16);
- } else if (cfg_item_count == 1) {
- *biquad_item_count = strtoul(token, NULL, 16);
- } else if (cfg_item_count >= 2) {
- biquad_data_buf[tmpTotalItemCount] = strtoul(token, NULL, 16);
- tmpTotalItemCount += 1;
- }
-
- token = strtok(NULL, strDelimit);
- cfg_item_count += 1;
- }
-
- if ((*biquad_count) * (*biquad_item_count) != tmpTotalItemCount) {
- LOGE("%s, get item count error!!! should be %d, real is %d.\n", "TV", (*biquad_count) * (*biquad_item_count), tmpTotalItemCount);
- *biquad_count = 0;
- *biquad_item_count = 0;
- return -1;
- }
-
- LOGD("%s, biquad count = %d, biquad item count = %d.\n", "TV", *biquad_count, *biquad_item_count);
-
- return 0;
-}
-
-static int GetAudioAmplifierBiquadsDataBuffer00(int *biquad_count, int *biquad_item_count, int biquad_data_buf[])
-{
- return RealGetAudioAmplifierBiquadsDataBuffer("audio.amplifier.biquad00.data", biquad_count, biquad_item_count, biquad_data_buf);
-}
-
-static int GetAudioAmplifierBiquadsDataBuffer01(int *biquad_count, int *biquad_item_count, int biquad_data_buf[])
-{
- return RealGetAudioAmplifierBiquadsDataBuffer("audio.amplifier.biquad01.data", biquad_count, biquad_item_count, biquad_data_buf);
-}
-
-static int GetTvAudioCardID(char tv_card_id_buf[])
-{
- config_get("audio.tv.card.id", tv_card_id_buf, "null");
- LOGD("%s, get card id is \"%s\".\n", "TV", tv_card_id_buf);
-
- if (strcmp(tv_card_id_buf, "null") == 0) {
- strcpy(tv_card_id_buf, "hw:AMLM2");
- LOGD("%s, card id not config, we set to default \"%s\".\n", "TV", "hw:AMLM2");
- }
-
- return 0;
-}
-
-static int GetTvAudioCardName(char tv_card_name_buf[])
-{
- config_get("audio.tv.card.name", tv_card_name_buf, "null");
- LOGD("%s, get card name is \"%s\".\n", "TV", tv_card_name_buf);
-
- if (strcmp(tv_card_name_buf, "null") == 0) {
- strcpy(tv_card_name_buf, "AML-M2");
- LOGD("%s, card name not config, we set to default \"%s\".\n", "TV", "AML-M2");
- }
-
- return 0;
-}
-
-static int ATVGetFacRestoreChanInfo(int *chan_cnt, int *item_cnt, int chan_data_buf[])
-{
- int cfg_item_count = 0, tmpTotalItemCount = 0;
- char *token = NULL;
- const char *strDelimit = ",";
- const char *key_str = "atv.fac.defchaninfo";
- char prop_value[CC_CFG_VALUE_STR_MAX_LEN];
-
- memset(prop_value, '\0', CC_CFG_VALUE_STR_MAX_LEN);
-
- config_get(key_str, prop_value, "null");
- if (strcasecmp(prop_value, "null") == 0) {
- LOGE("%s, can't get config \"%s\"!!!\n", "TV", key_str);
- *chan_cnt = 0;
- *item_cnt = 0;
- return -1;
- }
-
- tmpTotalItemCount = 0;
-
- token = strtok(prop_value, strDelimit);
- while (token != NULL) {
- if (cfg_item_count == 0) {
- *chan_cnt = strtoul(token, NULL, 10);
- } else if (cfg_item_count == 1) {
- *item_cnt = strtoul(token, NULL, 10);
- } else if (cfg_item_count >= 2) {
- chan_data_buf[tmpTotalItemCount] = strtoul(token, NULL, 10);
- tmpTotalItemCount += 1;
- }
-
- token = strtok(NULL, strDelimit);
- cfg_item_count += 1;
- }
-
- if ((*chan_cnt) * (*item_cnt) != tmpTotalItemCount) {
- LOGE("%s, get item count error!!! should be %d, real is %d.\n", "TV", (*chan_cnt) * (*item_cnt), tmpTotalItemCount);
- *chan_cnt = 0;
- *item_cnt = 0;
- return -1;
- }
-
- LOGD("%s, channel count = %d, channel item count = %d.\n", "TV", *chan_cnt, *item_cnt);
-
- return 0;
-}
-
-static void PrintGPIOCfgData(int cfg_info_item_count, GPIOCFGInfo cfg_info_buf[])
-{
- int i = 0;
-
- LOGD("%s, cfg_info_item_count = %d\n", "TV", cfg_info_item_count);
-
- for (i = 0; i < cfg_info_item_count; i++) {
- LOGD("%s, %s %d %d %d\n", "TV", cfg_info_buf[i].gpio_grp_str, cfg_info_buf[i].gpio_addr, cfg_info_buf[i].gpio_val, !cfg_info_buf[i].gpio_val);
- }
-
- LOGD("\n");
-}
-
-static int GetWriteProtectGPIOCFG(char gpio_grp_str[], int *protect_gpio_addr, int *protect_on_val, int *protect_off_val)
-{
- if (cfg_get_one_gpio_data("ssm.writeprotect.gpio", gpio_grp_str, protect_gpio_addr, protect_on_val) < 0) {
- return -1;
- }
-
- *protect_off_val = !(*protect_on_val);
-
- return 0;
-}
-
-#define CC_AMPLIFIER_ANALOG_MUTE_GPIO_CFG_NAME "audio.amp.analog.mute.gpio"
-#define CC_HEADSET_MUTE_GPIO_CFG_NAME "audio.headset.mute.gpio"
-#define CC_AVOUT_MUTE_GPIO_CFG_NAME "audio.avout.mute.gpio"
-
-static int GetAudioAnalogAmplifierMuteGPIOCFG(char gpio_grp_str[], int *mute_gpio_addr, int *mute_on_val, int *mute_off_val)
-{
- if (cfg_get_one_gpio_data(CC_AMPLIFIER_ANALOG_MUTE_GPIO_CFG_NAME, gpio_grp_str, mute_gpio_addr, mute_on_val) < 0) {
- return -1;
- }
-
- *mute_off_val = !(*mute_on_val);
-
- return 0;
-}
-
-static int GetAudioHeadSetMuteGPIOCFG(char gpio_grp_str[], int *mute_gpio_addr, int *mute_on_val, int *mute_off_val)
-{
- if (cfg_get_one_gpio_data(CC_HEADSET_MUTE_GPIO_CFG_NAME, gpio_grp_str, mute_gpio_addr, mute_on_val) < 0) {
- return -1;
- }
-
- *mute_off_val = !(*mute_on_val);
-
- return 0;
-}
-
-static int GetAudioAVOutMuteGPIOCFG(char gpio_grp_str[], int *mute_gpio_addr, int *mute_on_val, int *mute_off_val)
-{
- if (cfg_get_one_gpio_data(CC_AVOUT_MUTE_GPIO_CFG_NAME, gpio_grp_str, mute_gpio_addr, mute_on_val) < 0) {
- return -1;
- }
-
- //Some projects has been volume production. They may not use the newest code, so we do compatible for old config.
- //old config 69,0,1
- //new config x,69,0
-
- if (gpio_grp_str[0] != 'x' || gpio_grp_str[0] != 'b' || gpio_grp_str[0] != 'd') {
- *mute_gpio_addr = strtol(gpio_grp_str, NULL, 10);
- gpio_grp_str[0] = 'x';
- gpio_grp_str[1] = '\0';
- *mute_off_val = *mute_on_val;
- *mute_on_val = !(*mute_off_val);
- } else {
- *mute_off_val = !(*mute_on_val);
- }
-
- return 0;
-}
-
-#define PROPERTY_VALUE_MAX (92)
-
-typedef enum tvin_source_input_e {
- SOURCE_TV,
- SOURCE_AV1,
- SOURCE_AV2,
- SOURCE_YPBPR1,
- SOURCE_YPBPR2,
- SOURCE_HDMI1,
- SOURCE_HDMI2,
- SOURCE_HDMI3,
- SOURCE_HDMI4,
- SOURCE_VGA,
- SOURCE_MPEG,
- SOURCE_DTV,
- SOURCE_MAX,
-} tv_source_input_t;
-
-static int property_set(const char *key_value, char *prop_value)
-{
- LOGD("%s, %s = %s\n", "TV", key_value, prop_value);
- return 0;
-}
diff --git a/tvutils/Android.mk b/tvutils/Android.mk
index 9d21383..4763d34 100644
--- a/tvutils/Android.mk
+++ b/tvutils/Android.mk
@@ -26,13 +26,14 @@ LOCAL_SRC_FILES := \
tvconfig/tvconfig.cpp
LOCAL_C_INCLUDES += \
- $(LOCAL_PATH)/include \
+ $(BOARD_AML_VENDOR_PATH)frameworks/services/systemcontrol/PQ/include \
+ $(BOARD_AML_VENDOR_PATH)frameworks/services \
$(LIB_SQLITE_PATH)/dist \
- $(LIB_VENDOR)/frameworks/services \
- $(LIB_VENDOR)/tv/tvserver/libtv/include \
+ $(BOARD_AML_VENDOR_PATH)tv/tvserver/libtv/include \
external/jsoncpp/include
LOCAL_SHARED_LIBRARIES += \
+ vendor.amlogic.hardware.systemcontrol@1.0_vendor \
libsystemcontrolservice \
liblog
diff --git a/tvutils/CFile.cpp b/tvutils/CFile.cpp
index 326c00b..bf48508 100644
--- a/tvutils/CFile.cpp
+++ b/tvutils/CFile.cpp
@@ -11,8 +11,8 @@
#define LOG_TV_TAG "CFile"
//#define LOG_NDEBUG 0
-#include "CFile.h"
-#include "CTvLog.h"
+#include "include/CFile.h"
+#include "include/CTvLog.h"
#include <stdlib.h>
diff --git a/tvutils/CMsgQueue.cpp b/tvutils/CMsgQueue.cpp
index ca54ad7..daa0820 100644
--- a/tvutils/CMsgQueue.cpp
+++ b/tvutils/CMsgQueue.cpp
@@ -10,8 +10,8 @@
#define LOG_TAG "tvserver"
#define LOG_TV_TAG "CMessage"
-#include "CMsgQueue.h"
-#include <CTvLog.h>
+#include "include/CMsgQueue.h"
+#include <include/CTvLog.h>
#include <utils/Timers.h>
CMessage::CMessage()
diff --git a/tvutils/CSqlite.cpp b/tvutils/CSqlite.cpp
index 62ec41b..cdd781d 100644
--- a/tvutils/CSqlite.cpp
+++ b/tvutils/CSqlite.cpp
@@ -10,8 +10,8 @@
#define LOG_TAG "tvserver"
#define LOG_TV_TAG "CSqlite"
-#include "CSqlite.h"
-#include "CTvLog.h"
+#include "include/CSqlite.h"
+#include "include/CTvLog.h"
using namespace android;
diff --git a/tvutils/CTvLog.cpp b/tvutils/CTvLog.cpp
index 3309322..5efd144 100644
--- a/tvutils/CTvLog.cpp
+++ b/tvutils/CTvLog.cpp
@@ -8,7 +8,7 @@
*/
#define LOG_TAG "tvserver"
-#include "CTvLog.h"
+#include "include/CTvLog.h"
#include <android/log.h>
int __tv_log_print(int prio, const char *tag, const char *tv_tag, const char *fmt, ...)
diff --git a/tvutils/include/PQType.h b/tvutils/include/PQType.h
deleted file mode 100644
index a990d33..0000000
--- a/tvutils/include/PQType.h
+++ b/dev/null
@@ -1,723 +0,0 @@
-/*
- * Copyright (c) 2014 Amlogic, Inc. All rights reserved.
- *
- * This source code is subject to the terms and conditions defined in the
- * file 'LICENSE' which is part of this source code package.
- *
- * Description: header file
- */
-
-#ifndef __PQTYPE_H
-#define __PQTYPE_H
-
-#include "cm.h"
-#include "ve.h"
-#include "ldim.h"
-#include "amstream.h"
-#include "amvecm.h"
-// ***************************************************************************
-// *** enum definitions *********************************************
-// ***************************************************************************
-typedef union tag_suc {
- short s;
- unsigned char c[2];
-} SUC;
-
-typedef union tag_usuc {
- unsigned short s;
- unsigned char c[2];
-} USUC;
-
-typedef enum is_3d_type_e {
- INDEX_3D_INVALID = -1,
- INDEX_2D = 0,
- INDEX_3D = 1,
-} is_3d_type_t;
-
-typedef enum vpp_deblock_mode_e {
- VPP_DEBLOCK_MODE_OFF,
- VPP_DEBLOCK_MODE_LOW,
- VPP_DEBLOCK_MODE_MIDDLE,
- VPP_DEBLOCK_MODE_HIGH,
- VPP_DEBLOCK_MODE_AUTO,
-} vpp_deblock_mode_t;
-
-typedef enum vpp_color_space_type_e {
- VPP_COLOR_SPACE_AUTO,
- VPP_COLOR_SPACE_YUV,
- VPP_COLOR_SPACE_RGB,
-} vpp_color_space_type_t;
-
-typedef enum vpp_display_mode_e {
- VPP_DISPLAY_MODE_169,
- VPP_DISPLAY_MODE_PERSON,
- VPP_DISPLAY_MODE_MOVIE,
- VPP_DISPLAY_MODE_CAPTION,
- VPP_DISPLAY_MODE_MODE43,
- VPP_DISPLAY_MODE_FULL,
- VPP_DISPLAY_MODE_NORMAL,
- VPP_DISPLAY_MODE_NOSCALEUP,
- VPP_DISPLAY_MODE_CROP_FULL,
- VPP_DISPLAY_MODE_CROP,
- VPP_DISPLAY_MODE_ZOOM,
- VPP_DISPLAY_MODE_FULL_REAL,//add for N360 by haifeng.liu
- VPP_DISPLAY_MODE_MAX,
-} vpp_display_mode_t;
-
-typedef enum vpp_color_management2_e {
- VPP_COLOR_MANAGEMENT2_MODE_OFF,
- VPP_COLOR_MANAGEMENT2_MODE_OPTIMIZE,
- VPP_COLOR_MANAGEMENT2_MODE_ENHANCE,
- VPP_COLOR_MANAGEMENT2_MODE_DEMO,
- VPP_COLOR_MANAGEMENT2_MODE_MAX,
-} vpp_color_management2_t;
-
-typedef enum vpp_noise_reduction2_mode_e {
- VPP_NOISE_REDUCTION2_MODE_OFF,
- VPP_NOISE_REDUCTION2_MODE_LOW,
- VPP_NOISE_REDUCTION2_MODE_MID,
- VPP_NOISE_REDUCTION2_MODE_HIGH,
- VPP_NOISE_REDUCTION2_MODE_AUTO,
- VPP_NOISE_REDUCTION2_MODE_MAX,
-} vpp_noise_reduction2_mode_t;
-
-typedef enum vpp_noise_reduction_mode_e {
- VPP_NOISE_REDUCTION_MODE_OFF,
- VPP_NOISE_REDUCTION_MODE_LOW,
- VPP_NOISE_REDUCTION_MODE_MID,
- VPP_NOISE_REDUCTION_MODE_HIGH,
- VPP_NOISE_REDUCTION_MODE_AUTO,
- VPP_NOISE_REDUCTION_MODE_MAX,
-} vpp_noise_reduction_mode_t;
-
-typedef enum vpp_xvycc_mode_e {
- VPP_XVYCC_MODE_OFF,
- VPP_XVYCC_MODE_STANDARD,
- VPP_XVYCC_MODE_ENHANCE,
- VPP_XVYCC_MODE_MAX,
-} vpp_xvycc_mode_t;
-
-typedef enum vpp_mcdi_mode_e {
- VPP_MCDI_MODE_OFF,
- VPP_MCDI_MODE_STANDARD,
- VPP_MCDI_MODE_ENHANCE,
- VPP_MCDI_MODE_MAX,
-} vpp_mcdi_mode_t;
-
-typedef enum vpp_color_temperature_mode_e {
- VPP_COLOR_TEMPERATURE_MODE_STANDARD,
- VPP_COLOR_TEMPERATURE_MODE_WARM,
- VPP_COLOR_TEMPERATURE_MODE_COLD,
- VPP_COLOR_TEMPERATURE_MODE_USER,
- VPP_COLOR_TEMPERATURE_MODE_MAX,
-} vpp_color_temperature_mode_t;
-
-typedef struct vpp_pq_para_s {
- int brightness;
- int contrast;
- int saturation;
- int hue;
- int sharpness;
- int backlight;
- int nr;
-} vpp_pq_para_t;
-
-typedef enum pq_param_e {
- BRIGHTNESS = 1,
- CONTRAST,
- SATURATION,
- HUE,
- SHARPNESS,
- BACKLIGHT,
- NR,
-} vpp_pq_param_t;
-
-typedef enum pq_color_param_e {
- EN = 1,
- PRE_OFFSET_R,
- PRE_OFFSET_G,
- PRE_OFFSET_B,
- GAIN_R,
- GAIN_G,
- GAIN_B,
- POST_OFFSET_R,
- POST_OFFSET_G,
- POST_OFFSET_B,
-} pq_color_param_t;
-
-typedef enum vpp_gamma_curve_e {
- VPP_GAMMA_CURVE_AUTO = -1,//choose gamma table by value has been saved.
- VPP_GAMMA_CURVE_DEFAULT,
- VPP_GAMMA_CURVE_2_1,
- VPP_GAMMA_CURVE_2_2,
- VPP_GAMMA_CURVE_2_3,
- VPP_GAMMA_CURVE_2_4,
- VPP_GAMMA_CURVE_MAX,
-} vpp_gamma_curve_t;
-
-//tvin port table
-typedef enum tvin_port_e {
- TVIN_PORT_NULL = 0x00000000,
- TVIN_PORT_MPEG0 = 0x00000100,
- TVIN_PORT_BT656 = 0x00000200,
- TVIN_PORT_BT601,
- TVIN_PORT_CAMERA,
- TVIN_PORT_VGA0 = 0x00000400,
- TVIN_PORT_VGA1,
- TVIN_PORT_VGA2,
- TVIN_PORT_VGA3,
- TVIN_PORT_VGA4,
- TVIN_PORT_VGA5,
- TVIN_PORT_VGA6,
- TVIN_PORT_VGA7,
- TVIN_PORT_COMP0 = 0x00000800,
- TVIN_PORT_COMP1,
- TVIN_PORT_COMP2,
- TVIN_PORT_COMP3,
- TVIN_PORT_COMP4,
- TVIN_PORT_COMP5,
- TVIN_PORT_COMP6,
- TVIN_PORT_COMP7,
- TVIN_PORT_CVBS0 = 0x00001000,
- TVIN_PORT_CVBS1,
- TVIN_PORT_CVBS2,
- TVIN_PORT_CVBS3, //as atv demod to tvafe
- TVIN_PORT_CVBS4,
- TVIN_PORT_CVBS5,
- TVIN_PORT_CVBS6,
- TVIN_PORT_CVBS7,
- TVIN_PORT_SVIDEO0 = 0x00002000,
- TVIN_PORT_SVIDEO1,
- TVIN_PORT_SVIDEO2,
- TVIN_PORT_SVIDEO3,
- TVIN_PORT_SVIDEO4,
- TVIN_PORT_SVIDEO5,
- TVIN_PORT_SVIDEO6,
- TVIN_PORT_SVIDEO7,
- TVIN_PORT_HDMI0 = 0x00004000,
- TVIN_PORT_HDMI1,
- TVIN_PORT_HDMI2,
- TVIN_PORT_HDMI3,
- TVIN_PORT_HDMI4,
- TVIN_PORT_HDMI5,
- TVIN_PORT_HDMI6,
- TVIN_PORT_HDMI7,
- TVIN_PORT_DVIN0 = 0x00008000,
- TVIN_PORT_VIU = 0x0000C000,
- TVIN_PORT_MIPI = 0x00010000,
- TVIN_PORT_ISP = 0x00020000,
- TVIN_PORT_DTV = 0x00040000,
- TVIN_PORT_MAX = 0x80000000,
-} tvin_port_t;
-
-typedef enum tv_source_input_type_e {
- SOURCE_TYPE_TV,
- SOURCE_TYPE_AV,
- SOURCE_TYPE_COMPONENT,
- SOURCE_TYPE_HDMI,
- SOURCE_TYPE_VGA,
- SOURCE_TYPE_MPEG,
- SOURCE_TYPE_DTV,
- SOURCE_TYPE_SVIDEO,
- SOURCE_TYPE_IPTV,
- SOURCE_TYPE_SPDIF,
- SOURCE_TYPE_MAX,
-} tv_source_input_type_t;
-
-/* tvin signal format table */
-typedef enum tvin_sig_fmt_e {
- TVIN_SIG_FMT_NULL = 0,
- //VGA Formats
- TVIN_SIG_FMT_VGA_512X384P_60HZ_D147 = 0x001,
- TVIN_SIG_FMT_VGA_560X384P_60HZ_D147 = 0x002,
- TVIN_SIG_FMT_VGA_640X200P_59HZ_D924 = 0x003,
- TVIN_SIG_FMT_VGA_640X350P_85HZ_D080 = 0x004,
- TVIN_SIG_FMT_VGA_640X400P_59HZ_D940 = 0x005,
- TVIN_SIG_FMT_VGA_640X400P_85HZ_D080 = 0x006,
- TVIN_SIG_FMT_VGA_640X400P_59HZ_D638 = 0x007,
- TVIN_SIG_FMT_VGA_640X400P_56HZ_D416 = 0x008,
- TVIN_SIG_FMT_VGA_640X480P_66HZ_D619 = 0x009,
- TVIN_SIG_FMT_VGA_640X480P_66HZ_D667 = 0x00a,
- TVIN_SIG_FMT_VGA_640X480P_59HZ_D940 = 0x00b,
- TVIN_SIG_FMT_VGA_640X480P_60HZ_D000 = 0x00c,
- TVIN_SIG_FMT_VGA_640X480P_72HZ_D809 = 0x00d,
- TVIN_SIG_FMT_VGA_640X480P_75HZ_D000_A = 0x00e,
- TVIN_SIG_FMT_VGA_640X480P_85HZ_D008 = 0x00f,
- TVIN_SIG_FMT_VGA_640X480P_59HZ_D638 = 0x010,
- TVIN_SIG_FMT_VGA_640X480P_75HZ_D000_B = 0x011,
- TVIN_SIG_FMT_VGA_640X870P_75HZ_D000 = 0x012,
- TVIN_SIG_FMT_VGA_720X350P_70HZ_D086 = 0x013,
- TVIN_SIG_FMT_VGA_720X400P_85HZ_D039 = 0x014,
- TVIN_SIG_FMT_VGA_720X400P_70HZ_D086 = 0x015,
- TVIN_SIG_FMT_VGA_720X400P_87HZ_D849 = 0x016,
- TVIN_SIG_FMT_VGA_720X400P_59HZ_D940 = 0x017,
- TVIN_SIG_FMT_VGA_720X480P_59HZ_D940 = 0x018,
- TVIN_SIG_FMT_VGA_768X480P_59HZ_D896 = 0x019,
- TVIN_SIG_FMT_VGA_800X600P_56HZ_D250 = 0x01a,
- TVIN_SIG_FMT_VGA_800X600P_60HZ_D000 = 0x01b,
- TVIN_SIG_FMT_VGA_800X600P_60HZ_D000_A = 0x01c,
- TVIN_SIG_FMT_VGA_800X600P_60HZ_D317 = 0x01d,
- TVIN_SIG_FMT_VGA_800X600P_72HZ_D188 = 0x01e,
- TVIN_SIG_FMT_VGA_800X600P_75HZ_D000 = 0x01f,
- TVIN_SIG_FMT_VGA_800X600P_85HZ_D061 = 0x020,
- TVIN_SIG_FMT_VGA_832X624P_75HZ_D087 = 0x021,
- TVIN_SIG_FMT_VGA_848X480P_84HZ_D751 = 0x022,
- TVIN_SIG_FMT_VGA_960X600P_59HZ_D635 = 0x023,
- TVIN_SIG_FMT_VGA_1024X768P_59HZ_D278 = 0x024,
- TVIN_SIG_FMT_VGA_1024X768P_60HZ_D000 = 0x025,
- TVIN_SIG_FMT_VGA_1024X768P_60HZ_D000_A = 0x026,
- TVIN_SIG_FMT_VGA_1024X768P_60HZ_D000_B = 0x027,
- TVIN_SIG_FMT_VGA_1024X768P_74HZ_D927 = 0x028,
- TVIN_SIG_FMT_VGA_1024X768P_60HZ_D004 = 0x029,
- TVIN_SIG_FMT_VGA_1024X768P_70HZ_D069 = 0x02a,
- TVIN_SIG_FMT_VGA_1024X768P_75HZ_D029 = 0x02b,
- TVIN_SIG_FMT_VGA_1024X768P_84HZ_D997 = 0x02c,
- TVIN_SIG_FMT_VGA_1024X768P_74HZ_D925 = 0x02d,
- TVIN_SIG_FMT_VGA_1024X768P_60HZ_D020 = 0x02e,
- TVIN_SIG_FMT_VGA_1024X768P_70HZ_D008 = 0x02f,
- TVIN_SIG_FMT_VGA_1024X768P_75HZ_D782 = 0x030,
- TVIN_SIG_FMT_VGA_1024X768P_77HZ_D069 = 0x031,
- TVIN_SIG_FMT_VGA_1024X768P_71HZ_D799 = 0x032,
- TVIN_SIG_FMT_VGA_1024X1024P_60HZ_D000 = 0x033,
- TVIN_SIG_FMT_VGA_1152X864P_60HZ_D000 = 0x034,
- TVIN_SIG_FMT_VGA_1152X864P_70HZ_D012 = 0x035,
- TVIN_SIG_FMT_VGA_1152X864P_75HZ_D000 = 0x036,
- TVIN_SIG_FMT_VGA_1152X864P_84HZ_D999 = 0x037,
- TVIN_SIG_FMT_VGA_1152X870P_75HZ_D062 = 0x038,
- TVIN_SIG_FMT_VGA_1152X900P_65HZ_D950 = 0x039,
- TVIN_SIG_FMT_VGA_1152X900P_66HZ_D004 = 0x03a,
- TVIN_SIG_FMT_VGA_1152X900P_76HZ_D047 = 0x03b,
- TVIN_SIG_FMT_VGA_1152X900P_76HZ_D149 = 0x03c,
- TVIN_SIG_FMT_VGA_1280X720P_59HZ_D855 = 0x03d,
- TVIN_SIG_FMT_VGA_1280X720P_60HZ_D000_A = 0x03e,
- TVIN_SIG_FMT_VGA_1280X720P_60HZ_D000_B = 0x03f,
- TVIN_SIG_FMT_VGA_1280X720P_60HZ_D000_C = 0x040,
- TVIN_SIG_FMT_VGA_1280X720P_60HZ_D000_D = 0x041,
- TVIN_SIG_FMT_VGA_1280X768P_59HZ_D870 = 0x042,
- TVIN_SIG_FMT_VGA_1280X768P_59HZ_D995 = 0x043,
- TVIN_SIG_FMT_VGA_1280X768P_60HZ_D100 = 0x044,
- TVIN_SIG_FMT_VGA_1280X768P_85HZ_D000 = 0x045,
- TVIN_SIG_FMT_VGA_1280X768P_74HZ_D893 = 0x046,
- TVIN_SIG_FMT_VGA_1280X768P_84HZ_D837 = 0x047,
- TVIN_SIG_FMT_VGA_1280X800P_59HZ_D810 = 0x048,
- TVIN_SIG_FMT_VGA_1280X800P_59HZ_D810_A = 0x049,
- TVIN_SIG_FMT_VGA_1280X800P_60HZ_D000 = 0x04a,
- TVIN_SIG_FMT_VGA_1280X800P_85HZ_D000 = 0x04b,
- TVIN_SIG_FMT_VGA_1280X960P_60HZ_D000 = 0x04c,
- TVIN_SIG_FMT_VGA_1280X960P_60HZ_D000_A = 0x04d,
- TVIN_SIG_FMT_VGA_1280X960P_75HZ_D000 = 0x04e,
- TVIN_SIG_FMT_VGA_1280X960P_85HZ_D002 = 0x04f,
- TVIN_SIG_FMT_VGA_1280X1024P_60HZ_D020 = 0x050,
- TVIN_SIG_FMT_VGA_1280X1024P_60HZ_D020_A = 0x051,
- TVIN_SIG_FMT_VGA_1280X1024P_75HZ_D025 = 0x052,
- TVIN_SIG_FMT_VGA_1280X1024P_85HZ_D024 = 0x053,
- TVIN_SIG_FMT_VGA_1280X1024P_59HZ_D979 = 0x054,
- TVIN_SIG_FMT_VGA_1280X1024P_72HZ_D005 = 0x055,
- TVIN_SIG_FMT_VGA_1280X1024P_60HZ_D002 = 0x056,
- TVIN_SIG_FMT_VGA_1280X1024P_67HZ_D003 = 0x057,
- TVIN_SIG_FMT_VGA_1280X1024P_74HZ_D112 = 0x058,
- TVIN_SIG_FMT_VGA_1280X1024P_76HZ_D179 = 0x059,
- TVIN_SIG_FMT_VGA_1280X1024P_66HZ_D718 = 0x05a,
- TVIN_SIG_FMT_VGA_1280X1024P_66HZ_D677 = 0x05b,
- TVIN_SIG_FMT_VGA_1280X1024P_76HZ_D107 = 0x05c,
- TVIN_SIG_FMT_VGA_1280X1024P_59HZ_D996 = 0x05d,
- TVIN_SIG_FMT_VGA_1280X1024P_60HZ_D000 = 0x05e,
- TVIN_SIG_FMT_VGA_1360X768P_59HZ_D799 = 0x05f,
- TVIN_SIG_FMT_VGA_1360X768P_60HZ_D015 = 0x060,
- TVIN_SIG_FMT_VGA_1360X768P_60HZ_D015_A = 0x061,
- TVIN_SIG_FMT_VGA_1360X850P_60HZ_D000 = 0x062,
- TVIN_SIG_FMT_VGA_1360X1024P_60HZ_D000 = 0x063,
- TVIN_SIG_FMT_VGA_1366X768P_59HZ_D790 = 0x064,
- TVIN_SIG_FMT_VGA_1366X768P_60HZ_D000 = 0x065,
- TVIN_SIG_FMT_VGA_1400X1050P_59HZ_D978 = 0x066,
- TVIN_SIG_FMT_VGA_1440X900P_59HZ_D887 = 0x067,
- TVIN_SIG_FMT_VGA_1440X1080P_60HZ_D000 = 0x068,
- TVIN_SIG_FMT_VGA_1600X900P_60HZ_D000 = 0x069,
- TVIN_SIG_FMT_VGA_1600X1024P_60HZ_D000 = 0x06a,
- TVIN_SIG_FMT_VGA_1600X1200P_59HZ_D869 = 0x06b,
- TVIN_SIG_FMT_VGA_1600X1200P_60HZ_D000 = 0x06c,
- TVIN_SIG_FMT_VGA_1600X1200P_65HZ_D000 = 0x06d,
- TVIN_SIG_FMT_VGA_1600X1200P_70HZ_D000 = 0x06e,
- TVIN_SIG_FMT_VGA_1680X1050P_59HZ_D954 = 0x06f,
- TVIN_SIG_FMT_VGA_1680X1080P_60HZ_D000 = 0x070,
- TVIN_SIG_FMT_VGA_1920X1080P_49HZ_D929 = 0x071,
- TVIN_SIG_FMT_VGA_1920X1080P_59HZ_D963_A = 0x072,
- TVIN_SIG_FMT_VGA_1920X1080P_59HZ_D963 = 0x073,
- TVIN_SIG_FMT_VGA_1920X1080P_60HZ_D000 = 0x074,
- TVIN_SIG_FMT_VGA_1920X1200P_59HZ_D950 = 0x075,
- TVIN_SIG_FMT_VGA_1024X768P_60HZ_D000_C = 0x076,
- TVIN_SIG_FMT_VGA_1024X768P_60HZ_D000_D = 0x077,
- TVIN_SIG_FMT_VGA_1920X1200P_59HZ_D988 = 0x078,
- TVIN_SIG_FMT_VGA_1400X900P_60HZ_D000 = 0x079,
- TVIN_SIG_FMT_VGA_1680X1050P_60HZ_D000 = 0x07a,
- TVIN_SIG_FMT_VGA_800X600P_60HZ_D062 = 0x07b,
- TVIN_SIG_FMT_VGA_800X600P_60HZ_317_B = 0x07c,
- TVIN_SIG_FMT_VGA_RESERVE8 = 0x07d,
- TVIN_SIG_FMT_VGA_RESERVE9 = 0x07e,
- TVIN_SIG_FMT_VGA_RESERVE10 = 0x07f,
- TVIN_SIG_FMT_VGA_RESERVE11 = 0x080,
- TVIN_SIG_FMT_VGA_RESERVE12 = 0x081,
- TVIN_SIG_FMT_VGA_MAX = 0x082,
- TVIN_SIG_FMT_VGA_THRESHOLD = 0x200,
- //Component Formats
- TVIN_SIG_FMT_COMP_480P_60HZ_D000 = 0x201,
- TVIN_SIG_FMT_COMP_480I_59HZ_D940 = 0x202,
- TVIN_SIG_FMT_COMP_576P_50HZ_D000 = 0x203,
- TVIN_SIG_FMT_COMP_576I_50HZ_D000 = 0x204,
- TVIN_SIG_FMT_COMP_720P_59HZ_D940 = 0x205,
- TVIN_SIG_FMT_COMP_720P_50HZ_D000 = 0x206,
- TVIN_SIG_FMT_COMP_1080P_23HZ_D976 = 0x207,
- TVIN_SIG_FMT_COMP_1080P_24HZ_D000 = 0x208,
- TVIN_SIG_FMT_COMP_1080P_25HZ_D000 = 0x209,
- TVIN_SIG_FMT_COMP_1080P_30HZ_D000 = 0x20a,
- TVIN_SIG_FMT_COMP_1080P_50HZ_D000 = 0x20b,
- TVIN_SIG_FMT_COMP_1080P_60HZ_D000 = 0x20c,
- TVIN_SIG_FMT_COMP_1080I_47HZ_D952 = 0x20d,
- TVIN_SIG_FMT_COMP_1080I_48HZ_D000 = 0x20e,
- TVIN_SIG_FMT_COMP_1080I_50HZ_D000_A = 0x20f,
- TVIN_SIG_FMT_COMP_1080I_50HZ_D000_B = 0x210,
- TVIN_SIG_FMT_COMP_1080I_50HZ_D000_C = 0x211,
- TVIN_SIG_FMT_COMP_1080I_60HZ_D000 = 0x212,
- TVIN_SIG_FMT_COMP_MAX = 0x213,
- TVIN_SIG_FMT_COMP_THRESHOLD = 0x400,
- //HDMI Formats
- TVIN_SIG_FMT_HDMI_640X480P_60HZ = 0x401,
- TVIN_SIG_FMT_HDMI_720X480P_60HZ = 0x402,
- TVIN_SIG_FMT_HDMI_1280X720P_60HZ = 0x403,
- TVIN_SIG_FMT_HDMI_1920X1080I_60HZ = 0x404,
- TVIN_SIG_FMT_HDMI_1440X480I_60HZ = 0x405,
- TVIN_SIG_FMT_HDMI_1440X240P_60HZ = 0x406,
- TVIN_SIG_FMT_HDMI_2880X480I_60HZ = 0x407,
- TVIN_SIG_FMT_HDMI_2880X240P_60HZ = 0x408,
- TVIN_SIG_FMT_HDMI_1440X480P_60HZ = 0x409,
- TVIN_SIG_FMT_HDMI_1920X1080P_60HZ = 0x40a,
- TVIN_SIG_FMT_HDMI_720X576P_50HZ = 0x40b,
- TVIN_SIG_FMT_HDMI_1280X720P_50HZ = 0x40c,
- TVIN_SIG_FMT_HDMI_1920X1080I_50HZ_A = 0x40d,
- TVIN_SIG_FMT_HDMI_1440X576I_50HZ = 0x40e,
- TVIN_SIG_FMT_HDMI_1440X288P_50HZ = 0x40f,
- TVIN_SIG_FMT_HDMI_2880X576I_50HZ = 0x410,
- TVIN_SIG_FMT_HDMI_2880X288P_50HZ = 0x411,
- TVIN_SIG_FMT_HDMI_1440X576P_50HZ = 0x412,
- TVIN_SIG_FMT_HDMI_1920X1080P_50HZ = 0x413,
- TVIN_SIG_FMT_HDMI_1920X1080P_24HZ = 0x414,
- TVIN_SIG_FMT_HDMI_1920X1080P_25HZ = 0x415,
- TVIN_SIG_FMT_HDMI_1920X1080P_30HZ = 0x416,
- TVIN_SIG_FMT_HDMI_2880X480P_60HZ = 0x417,
- TVIN_SIG_FMT_HDMI_2880X576P_60HZ = 0x418,
- TVIN_SIG_FMT_HDMI_1920X1080I_50HZ_B = 0x419,
- TVIN_SIG_FMT_HDMI_1920X1080I_100HZ = 0x41a,
- TVIN_SIG_FMT_HDMI_1280X720P_100HZ = 0x41b,
- TVIN_SIG_FMT_HDMI_720X576P_100HZ = 0x41c,
- TVIN_SIG_FMT_HDMI_1440X576I_100HZ = 0x41d,
- TVIN_SIG_FMT_HDMI_1920X1080I_120HZ = 0x41e,
- TVIN_SIG_FMT_HDMI_1280X720P_120HZ = 0x41f,
- TVIN_SIG_FMT_HDMI_720X480P_120HZ = 0x420,
- TVIN_SIG_FMT_HDMI_1440X480I_120HZ = 0x421,
- TVIN_SIG_FMT_HDMI_720X576P_200HZ = 0x422,
- TVIN_SIG_FMT_HDMI_1440X576I_200HZ = 0x423,
- TVIN_SIG_FMT_HDMI_720X480P_240HZ = 0x424,
- TVIN_SIG_FMT_HDMI_1440X480I_240HZ = 0x425,
- TVIN_SIG_FMT_HDMI_1280X720P_24HZ = 0x426,
- TVIN_SIG_FMT_HDMI_1280X720P_25HZ = 0x427,
- TVIN_SIG_FMT_HDMI_1280X720P_30HZ = 0x428,
- TVIN_SIG_FMT_HDMI_1920X1080P_120HZ = 0x429,
- TVIN_SIG_FMT_HDMI_1920X1080P_100HZ = 0x42a,
- TVIN_SIG_FMT_HDMI_1280X720P_60HZ_FRAME_PACKING = 0x42b,
- TVIN_SIG_FMT_HDMI_1280X720P_50HZ_FRAME_PACKING = 0x42c,
- TVIN_SIG_FMT_HDMI_1280X720P_24HZ_FRAME_PACKING = 0x42d,
- TVIN_SIG_FMT_HDMI_1280X720P_30HZ_FRAME_PACKING = 0x42e,
- TVIN_SIG_FMT_HDMI_1920X1080I_60HZ_FRAME_PACKING = 0x42f,
- TVIN_SIG_FMT_HDMI_1920X1080I_50HZ_FRAME_PACKING = 0x430,
- TVIN_SIG_FMT_HDMI_1920X1080P_24HZ_FRAME_PACKING = 0x431,
- TVIN_SIG_FMT_HDMI_1920X1080P_30HZ_FRAME_PACKING = 0x432,
- TVIN_SIG_FMT_HDMI_800X600_00HZ = 0x433,
- TVIN_SIG_FMT_HDMI_1024X768_00HZ = 0x434,
- TVIN_SIG_FMT_HDMI_720X400_00HZ = 0x435,
- TVIN_SIG_FMT_HDMI_1280X768_00HZ = 0x436,
- TVIN_SIG_FMT_HDMI_1280X800_00HZ = 0x437,
- TVIN_SIG_FMT_HDMI_1280X960_00HZ = 0x438,
- TVIN_SIG_FMT_HDMI_1280X1024_00HZ = 0x439,
- TVIN_SIG_FMT_HDMI_1360X768_00HZ = 0x43a,
- TVIN_SIG_FMT_HDMI_1366X768_00HZ = 0x43b,
- TVIN_SIG_FMT_HDMI_1600X1200_00HZ = 0x43c,
- TVIN_SIG_FMT_HDMI_1920X1200_00HZ = 0x43d,
- TVIN_SIG_FMT_HDMI_1440X900_00HZ = 0x43e,
- TVIN_SIG_FMT_HDMI_1400X1050_00HZ = 0x43f,
- TVIN_SIG_FMT_HDMI_1680X1050_00HZ = 0x440,
- /* for alternative and 4k2k */
- TVIN_SIG_FMT_HDMI_1920X1080I_60HZ_ALTERNATIVE = 0x441,
- TVIN_SIG_FMT_HDMI_1920X1080I_50HZ_ALTERNATIVE = 0x442,
- TVIN_SIG_FMT_HDMI_1920X1080P_24HZ_ALTERNATIVE = 0x443,
- TVIN_SIG_FMT_HDMI_1920X1080P_30HZ_ALTERNATIVE = 0x444,
- TVIN_SIG_FMT_HDMI_3840_2160_00HZ = 0x445,
- TVIN_SIG_FMT_HDMI_4096_2160_00HZ = 0x446,
- TVIN_SIG_FMT_HDMI_HDR = 0x447,
- TVIN_SIG_FMT_HDMI_RESERVE8 = 0x448,
- TVIN_SIG_FMT_HDMI_RESERVE9 = 0x449,
- TVIN_SIG_FMT_HDMI_RESERVE10 = 0x44a,
- TVIN_SIG_FMT_HDMI_RESERVE11 = 0x44b,
- TVIN_SIG_FMT_HDMI_720X480P_60HZ_FRAME_PACKING = 0x44c,
- TVIN_SIG_FMT_HDMI_720X576P_50HZ_FRAME_PACKING = 0x44d,
- TVIN_SIG_FMT_HDMI_640X480P_72HZ = 0x44e,
- TVIN_SIG_FMT_HDMI_640X480P_75HZ = 0x44f,
- TVIN_SIG_FMT_HDMI_MAX = 0x450,
- TVIN_SIG_FMT_HDMI_THRESHOLD = 0x600,
- //Video Formats
- TVIN_SIG_FMT_CVBS_NTSC_M = 0x601,
- TVIN_SIG_FMT_CVBS_NTSC_443 = 0x602,
- TVIN_SIG_FMT_CVBS_PAL_I = 0x603,
- TVIN_SIG_FMT_CVBS_PAL_M = 0x604,
- TVIN_SIG_FMT_CVBS_PAL_60 = 0x605,
- TVIN_SIG_FMT_CVBS_PAL_CN = 0x606,
- TVIN_SIG_FMT_CVBS_SECAM = 0x607,
- TVIN_SIG_FMT_CVBS_MAX = 0x608,
- TVIN_SIG_FMT_CVBS_THRESHOLD = 0x800,
- //656 Formats
- TVIN_SIG_FMT_BT656IN_576I_50HZ = 0x801,
- TVIN_SIG_FMT_BT656IN_480I_60HZ = 0x802,
- //601 Formats
- TVIN_SIG_FMT_BT601IN_576I_50HZ = 0x803,
- TVIN_SIG_FMT_BT601IN_480I_60HZ = 0x804,
- //Camera Formats
- TVIN_SIG_FMT_CAMERA_640X480P_30HZ = 0x805,
- TVIN_SIG_FMT_CAMERA_800X600P_30HZ = 0x806,
- TVIN_SIG_FMT_CAMERA_1024X768P_30HZ = 0x807,
- TVIN_SIG_FMT_CAMERA_1920X1080P_30HZ = 0x808,
- TVIN_SIG_FMT_CAMERA_1280X720P_30HZ = 0x809,
- TVIN_SIG_FMT_BT601_MAX = 0x80a,
- TVIN_SIG_FMT_BT601_THRESHOLD = 0xa00,
- TVIN_SIG_FMT_MAX,
-} tvin_sig_fmt_t;
-
-typedef enum tvin_trans_fmt {
- TVIN_TFMT_2D = 0,
- TVIN_TFMT_3D_LRH_OLOR, // Primary: Side-by-Side(Half) Odd/Left picture, Odd/Right p
- TVIN_TFMT_3D_LRH_OLER, // Primary: Side-by-Side(Half) Odd/Left picture, Even/Right picture
- TVIN_TFMT_3D_LRH_ELOR, // Primary: Side-by-Side(Half) Even/Left picture, Odd/Right picture
- TVIN_TFMT_3D_LRH_ELER, // Primary: Side-by-Side(Half) Even/Left picture, Even/Right picture
- TVIN_TFMT_3D_TB, // Primary: Top-and-Bottom
- TVIN_TFMT_3D_FP, // Primary: Frame Packing
- TVIN_TFMT_3D_FA, // Secondary: Field Alternative
- TVIN_TFMT_3D_LA, // Secondary: Line Alternative
- TVIN_TFMT_3D_LRF, // Secondary: Side-by-Side(Full)
- TVIN_TFMT_3D_LD, // Secondary: L+depth
- TVIN_TFMT_3D_LDGD, // Secondary: L+depth+Graphics+Graphics-depth
- /* normal 3D format */
- TVIN_TFMT_3D_DET_TB,
- TVIN_TFMT_3D_DET_LR,
- TVIN_TFMT_3D_DET_INTERLACE,
- TVIN_TFMT_3D_DET_CHESSBOARD,
- TVIN_TFMT_3D_MAX,
-} tvin_trans_fmt_t;
-
-typedef enum tv_source_input_e {
- SOURCE_INVALID = -1,
- SOURCE_TV = 0,
- SOURCE_AV1,
- SOURCE_AV2,
- SOURCE_YPBPR1,
- SOURCE_YPBPR2,
- SOURCE_HDMI1,
- SOURCE_HDMI2,
- SOURCE_HDMI3,
- SOURCE_HDMI4,
- SOURCE_VGA,
- SOURCE_MPEG,
- SOURCE_DTV,
- SOURCE_SVIDEO,
- SOURCE_IPTV,
- SOURCE_DUMMY,
- SOURCE_SPDIF,
- SOURCE_ADTV,
- SOURCE_MAX,
-} tv_source_input_t;
-
-typedef enum vpp_picture_mode_e {
- VPP_PICTURE_MODE_STANDARD,
- VPP_PICTURE_MODE_BRIGHT,
- VPP_PICTURE_MODE_SOFT,
- VPP_PICTURE_MODE_USER,
- VPP_PICTURE_MODE_MOVIE,
- VPP_PICTURE_MODE_COLORFUL,
- VPP_PICTURE_MODE_MONITOR,
- VPP_PICTURE_MODE_GAME,
- VPP_PICTURE_MODE_SPORTS,
- VPP_PICTURE_MODE_SONY,
- VPP_PICTURE_MODE_SAMSUNG,
- VPP_PICTURE_MODE_SHARP,
- VPP_PICTURE_MODE_MAX,
-} vpp_picture_mode_t;
-
-typedef enum tvpq_data_type_e {
- TVPQ_DATA_BRIGHTNESS,
- TVPQ_DATA_CONTRAST,
- TVPQ_DATA_SATURATION,
- TVPQ_DATA_HUE,
- TVPQ_DATA_SHARPNESS,
- TVPQ_DATA_VOLUME,
-
- TVPQ_DATA_MAX,
-} tvpq_data_type_t;
-
-typedef enum vpp_test_pattern_e {
- VPP_TEST_PATTERN_NONE,
- VPP_TEST_PATTERN_RED,
- VPP_TEST_PATTERN_GREEN,
- VPP_TEST_PATTERN_BLUE,
- VPP_TEST_PATTERN_WHITE,
- VPP_TEST_PATTERN_BLACK,
- VPP_TEST_PATTERN_MAX,
-} vpp_test_pattern_e;
-
-typedef enum vpp_color_demomode_e {
- VPP_COLOR_DEMO_MODE_ALLON,
- VPP_COLOR_DEMO_MODE_YOFF,
- VPP_COLOR_DEMO_MODE_COFF,
- VPP_COLOR_DEMO_MODE_GOFF,
- VPP_COLOR_DEMO_MODE_MOFF,
- VPP_COLOR_DEMO_MODE_ROFF,
- VPP_COLOR_DEMO_MODE_BOFF,
- VPP_COLOR_DEMO_MODE_RGBOFF,
- VPP_COLOR_DEMO_MODE_YMCOFF,
- VPP_COLOR_DEMO_MODE_ALLOFF,
- VPP_COLOR_DEMO_MODE_MAX,
-} vpp_color_demomode_t;
-
-typedef enum vpp_color_basemode_e {
- VPP_COLOR_BASE_MODE_OFF,
- VPP_COLOR_BASE_MODE_OPTIMIZE,
- VPP_COLOR_BASE_MODE_ENHANCE,
- VPP_COLOR_BASE_MODE_DEMO,
- VPP_COLOR_BASE_MODE_MAX,
-} vpp_color_basemode_t;
-
-typedef struct noline_params_s {
- int osd0;
- int osd25;
- int osd50;
- int osd75;
- int osd100;
-} noline_params_t;
-
-typedef enum noline_params_ID_e {
- OSD_0 =1,
- OSD_25,
- OSD_50,
- OSD_75,
- OSD_100,
-} noline_params_ID_t;
-
-typedef enum noline_params_type_e {
- NOLINE_PARAMS_TYPE_BRIGHTNESS,
- NOLINE_PARAMS_TYPE_CONTRAST,
- NOLINE_PARAMS_TYPE_SATURATION,
- NOLINE_PARAMS_TYPE_HUE,
- NOLINE_PARAMS_TYPE_SHARPNESS,
- NOLINE_PARAMS_TYPE_VOLUME,
- NOLINE_PARAMS_TYPE_BACKLIGHT,
- NOLINE_PARAMS_TYPE_MAX,
-} noline_params_type_t;
-
-typedef enum tvin_cutwin_param_e {
- CUTWIN_HS,
- CUTWIN_HE,
- CUTWIN_VS,
- CUTWIN_VE,
-} tvin_cutwin_param_t;
-
-typedef enum Set_Flag_Cmd_e{
- PQ_WITHOUT_HUE = 0,
- HUE_REVERSE,
- GAMMA_ONOFF,
- NEW_CM,
- NEW_NR,
- COLORTEMP_BY_SOURCE,
- XVYCC_SWITCH_CONTROL,
- CONTRAST_WITHOSD,
- HUE_WITHOSD,
- BRIGHTNESS_WITHOSD,
- RESET_ALL,
-} Set_Flag_Cmd_t;
-
-typedef enum SSM_status_e
-{
- SSM_HEADER_INVALID = 0,
- SSM_HEADER_VALID = 1,
- SSM_HEADER_STRUCT_CHANGE = 2,
-} SSM_status_t;
-
-// ***************************************************************************
-// *** struct definitions *********************************************
-// ***************************************************************************
-
-typedef struct source_input_param_s {
- tv_source_input_t source_input;
- tv_source_input_type_t source_type;
- tvin_port_t source_port;
- tvin_sig_fmt_t sig_fmt;
- tvin_trans_fmt_t trans_fmt;
- is_3d_type_t is3d;
-} source_input_param_t;
-
-typedef struct tvin_cutwin_s {
- unsigned short hs;
- unsigned short he;
- unsigned short vs;
- unsigned short ve;
-} tvin_cutwin_t;
-
-typedef struct tvafe_vga_parm_s {
- signed short clk_step; // clock < 0, tune down clock freq
- // clock > 0, tune up clock freq
- unsigned short phase; // phase is 0~31, it is absolute value
- signed short hpos_step; // hpos_step < 0, shift display to left
- // hpos_step > 0, shift display to right
- signed short vpos_step; // vpos_step < 0, shift display to top
- // vpos_step > 0, shift display to bottom
- unsigned int vga_in_clean; // flage for vga clean screen
-} tvafe_vga_parm_t;
-
-typedef struct am_phase_s {
- unsigned int length; // Length of total
- unsigned int phase[20];
-} am_phase_t;
-
-typedef struct tvpq_data_s {
- int TotalNode;
- int NodeValue;
- int IndexValue;
- int RegValue;
- double step;
-} tvpq_data_t;
-
-typedef struct tvpq_sharpness_reg_s {
- int TotalNode;
- am_reg_t Value;
- int NodeValue;
- int IndexValue;
- double step;
-} tvpq_sharpness_reg_t;
-
-typedef struct tvpq_sharpness_regs_s {
- int length;
- tvpq_sharpness_reg_t reg_data[50];
-} tvpq_sharpness_regs_t;
-
-#define CC_PROJECT_INFO_ITEM_MAX_LEN (64)
-
-typedef struct tvpq_nonlinear_s {
- int osd0;
- int osd25;
- int osd50;
- int osd75;
- int osd100;
-} tvpq_nonlinear_t;
-
-typedef struct di_mode_param_s {
- vpp_mcdi_mode_t mcdi_mode;
- vpp_deblock_mode_t deblock_mode;
- vpp_noise_reduction2_mode_t nr_mode;
-}di_mode_param_t;
-
-#endif
diff --git a/tvutils/serial_base.cpp b/tvutils/serial_base.cpp
index 7de25aa..823d6c6 100644
--- a/tvutils/serial_base.cpp
+++ b/tvutils/serial_base.cpp
@@ -21,8 +21,8 @@
#include <termios.h>
#include <errno.h>
-#include "serial_base.h"
-#include "CTvLog.h"
+#include "include/serial_base.h"
+#include "include/CTvLog.h"
#define CS_SERIAL_A_DEV_PATH "/dev/ttyS0"
#define CS_SERIAL_B_DEV_PATH "/dev/ttyS1"
diff --git a/tvutils/serial_operate.cpp b/tvutils/serial_operate.cpp
index 8de0edb..8eafdad 100644
--- a/tvutils/serial_operate.cpp
+++ b/tvutils/serial_operate.cpp
@@ -22,9 +22,9 @@
#include <errno.h>
#include <linux/hidraw.h>
-#include "serial_base.h"
-#include "serial_operate.h"
-#include "CTvLog.h"
+#include "include/serial_base.h"
+#include "include/serial_operate.h"
+#include "include/CTvLog.h"
//******************************************************
#ifndef HIDIOCSFEATURE
diff --git a/tvutils/tvconfig/CIniFile.cpp b/tvutils/tvconfig/CIniFile.cpp
index 985f7a9..8e10100 100644
--- a/tvutils/tvconfig/CIniFile.cpp
+++ b/tvutils/tvconfig/CIniFile.cpp
@@ -16,9 +16,9 @@
#include <assert.h>
#include <string.h>
#include <ctype.h>
-#include <CTvLog.h>
+#include <include/CTvLog.h>
-#include "CIniFile.h"
+#include "include/CIniFile.h"
CIniFile::CIniFile()
{
diff --git a/tvutils/tvconfig/tvconfig.cpp b/tvutils/tvconfig/tvconfig.cpp
index 42a02ed..b3ec180 100644
--- a/tvutils/tvconfig/tvconfig.cpp
+++ b/tvutils/tvconfig/tvconfig.cpp
@@ -14,10 +14,10 @@
#include <stdlib.h>
#include <string.h>
#include <errno.h>
-#include "tvconfig.h"
+#include "include/tvconfig.h"
-#include "CTvLog.h"
-#include "CIniFile.h"
+#include "include/CTvLog.h"
+#include "include/CIniFile.h"
static const char *TV_SECTION = "TV";
//INI_CONFIG* mpConfig = NULL;
static char mpFilePath[256] = {0};
diff --git a/tvutils/tvutils.cpp b/tvutils/tvutils.cpp
index 26c4de1..01f6fe0 100644
--- a/tvutils/tvutils.cpp
+++ b/tvutils/tvutils.cpp
@@ -31,11 +31,11 @@
#include <utils/threads.h>
#include <binder/IServiceManager.h>
-#include <systemcontrol/ISystemControlService.h>
+#include <systemcontrol/SystemControlClient.h>
-#include "tvconfig.h"
-#include "tvutils.h"
-#include "CTvLog.h"
+#include "include/tvconfig.h"
+#include "include/tvutils.h"
+#include "include/CTvLog.h"
#include <vector>
#include <map>
@@ -51,52 +51,25 @@ static unsigned int user_counter = 0;
static unsigned int user_pet_terminal = 1;
static Mutex amLock;
-static sp<ISystemControlService> amSystemControlService;
-class DeathNotifier: public IBinder::DeathRecipient {
-public:
- DeathNotifier() {
- }
-
- void binderDied(const wp<IBinder> &who __unused) {
- LOGW("system_control died!");
-
- amSystemControlService.clear();
- }
-};
-
-
-static sp<DeathNotifier> amDeathNotifier;
-static const sp<ISystemControlService> &getSystemControlService()
+static sp<SystemControlClient> sysctrlClient = nullptr;
+static const sp<SystemControlClient> &getSystemControlService()
{
Mutex::Autolock _l(amLock);
- if (amSystemControlService.get() == 0) {
- sp<IServiceManager> sm = defaultServiceManager();
- sp<IBinder> binder;
- do {
- binder = sm->getService(String16("system_control"));
- if (binder != 0)
- break;
- LOGW("SystemControlService not published, waiting...");
- usleep(500000); // 0.5 s
- } while(true);
- if (amDeathNotifier == NULL) {
- amDeathNotifier = new DeathNotifier();
- }
- binder->linkToDeath(amDeathNotifier);
- amSystemControlService = interface_cast<ISystemControlService>(binder);
+ if (sysctrlClient == nullptr) {
+ sysctrlClient = new SystemControlClient();
}
- ALOGE_IF(amSystemControlService == 0, "no System Control Service!?");
+ ALOGE_IF(sysctrlClient == nullptr, "no System Control Service!?");
- return amSystemControlService;
+ return sysctrlClient;
}
int getBootEnv(const char *key, char *value, const char *def_val)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
- if (sws != 0) {
- String16 v;
- if (sws->getBootEnv(String16(key), v)) {
- strcpy(value, String8(v).string());
+ const sp<SystemControlClient> sws = getSystemControlService();
+ if (sws != nullptr) {
+ std::string v;
+ if (sws->getBootEnv(key, v)) {
+ strcpy(value, v.c_str());
return 0;
}
}
@@ -107,9 +80,9 @@ int getBootEnv(const char *key, char *value, const char *def_val)
void setBootEnv(const char *key, const char *value)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
- if (sws != 0) {
- sws->setBootEnv(String16(key), String16(value));
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
+ sws->setBootEnv(key, value);
}
}
@@ -121,7 +94,7 @@ int writeSys(const char *path, const char *val) {
return -1;
}
- //LOGI("write %s, val:%s\n", path, val);
+ LOGD("write %s, val:%s\n", path, val);
int len = write(fd, val, strlen(val));
close(fd);
@@ -169,11 +142,11 @@ exit:
int tvReadSysfs(const char *path, char *value) {
#ifdef USE_SYSTEM_CONTROL
- const sp<ISystemControlService> &sws = getSystemControlService();
- if (sws != 0) {
- String16 v;
- if (sws->readSysfs(String16(path), v)) {
- strcpy(value, String8(v).string());
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
+ std::string v;
+ if (sws->readSysfs(path, v)) {
+ strcpy(value, v.c_str());
return 0;
}
}
@@ -188,9 +161,9 @@ int tvReadSysfs(const char *path, char *value) {
int tvWriteSysfs(const char *path, const char *value) {
#ifdef USE_SYSTEM_CONTROL
- const sp<ISystemControlService> &sws = getSystemControlService();
- if (sws != 0) {
- sws->writeSysfs(String16(path), String16(value));
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
+ sws->writeSysfs(path, value);
}
return 0;
#else
@@ -208,9 +181,9 @@ int tvWriteSysfs(const char *path, int value, int base)
}
LOGD("tvWriteSysfs, str_value = %s", str_value);
#ifdef USE_SYSTEM_CONTROL
- const sp<ISystemControlService> &sws = getSystemControlService();
- if (sws != 0) {
- sws->writeSysfs(String16(path), String16(str_value));
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
+ sws->writeSysfs(path, str_value);
}
return 0;
#else
@@ -220,9 +193,9 @@ int tvWriteSysfs(const char *path, int value, int base)
int tvWriteDisplayMode(const char *mode)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
- if (sws != 0) {
- sws->setSinkOutputMode(String16(mode));
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
+ sws->setSinkOutputMode(mode);
}
return 0;
}
@@ -230,8 +203,8 @@ int tvWriteDisplayMode(const char *mode)
//Add for PQ
int tvResetLastVppSettingsSourceType(void)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
sws->resetLastPQSettingsSourceType();
}
return 0;
@@ -239,8 +212,8 @@ int tvResetLastVppSettingsSourceType(void)
int tvLoadPQSettings(source_input_param_t source_input_param)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
sws->loadPQSettings(source_input_param);
}
return 0;
@@ -248,8 +221,8 @@ int tvLoadPQSettings(source_input_param_t source_input_param)
int tvLoadCpqLdimRegs(void)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
sws->loadCpqLdimRegs();
}
return 0;
@@ -257,8 +230,8 @@ int tvLoadCpqLdimRegs(void)
int tvSSMReadNTypes(int id, int data_len, int *data_buf, int offset)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
int tmp_val = 0;
tmp_val = sws->sysSSMReadNTypes(id, data_len, offset);
*data_buf = tmp_val;
@@ -268,8 +241,8 @@ int tvSSMReadNTypes(int id, int data_len, int *data_buf, int offset)
int tvSSMWriteNTypes(int id, int data_len, int data_buf, int offset)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
sws->sysSSMWriteNTypes(id, data_len, data_buf, offset);
}
return 0;
@@ -278,8 +251,8 @@ int tvSSMWriteNTypes(int id, int data_len, int data_buf, int offset)
int tvGetActualAddr(int id)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
sws->getActualAddr(id);
}
return 0;
@@ -288,8 +261,8 @@ int tvGetActualAddr(int id)
int tvGetActualSize(int id)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
sws->getActualSize(id);
}
return 0;
@@ -298,9 +271,9 @@ int tvGetActualSize(int id)
int tvSetPQMode ( vpp_picture_mode_t mode, int is_save, int is_autoswitch)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
+ const sp<SystemControlClient> &sws = getSystemControlService();
- if (sws != 0) {
+ if (sws != nullptr) {
sws->setPQmode((int)mode, is_save, is_autoswitch);
}
@@ -309,8 +282,8 @@ int tvSetPQMode ( vpp_picture_mode_t mode, int is_save, int is_autoswitch)
vpp_picture_mode_t tvGetPQMode ( void )
{
- const sp<ISystemControlService> &sws = getSystemControlService();
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return (vpp_picture_mode_t)sws->getPQmode();
}
@@ -319,9 +292,9 @@ vpp_picture_mode_t tvGetPQMode ( void )
int tvSavePQMode ( vpp_picture_mode_t mode )
{
- const sp<ISystemControlService> &sws = getSystemControlService();
+ const sp<SystemControlClient> &sws = getSystemControlService();
- if (sws != 0) {
+ if (sws != nullptr) {
return sws->savePQmode(mode);
}
@@ -330,9 +303,9 @@ int tvSavePQMode ( vpp_picture_mode_t mode )
int tvGetPQParams(source_input_param_t source_input_param, vpp_picture_mode_t pq_mode, vpp_pq_para_t *pq_para)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
+ const sp<SystemControlClient> &sws = getSystemControlService();
- if (sws != 0) {
+ if (sws != nullptr) {
vpp_pq_para_t tmp_value;
tmp_value.brightness = sws->getPQParams(source_input_param, pq_mode, BRIGHTNESS);
tmp_value.contrast = sws->getPQParams(source_input_param, pq_mode, CONTRAST);
@@ -343,7 +316,6 @@ int tvGetPQParams(source_input_param_t source_input_param, vpp_picture_mode_t pq
tmp_value.backlight = sws->getPQParams(source_input_param, pq_mode, BACKLIGHT);
*pq_para = tmp_value;
-
return 0;
}
@@ -352,9 +324,8 @@ int tvGetPQParams(source_input_param_t source_input_param, vpp_picture_mode_t pq
int tvGetAutoSwitchPCModeFlag(void)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->getAutoSwitchPCModeFlag();
}
@@ -363,9 +334,8 @@ int tvGetAutoSwitchPCModeFlag(void)
int tvSetBrightness(int brightness, int is_save)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->setBrightness(brightness, is_save);
}
return -1;
@@ -373,9 +343,8 @@ int tvSetBrightness(int brightness, int is_save)
int tvGetBrightness ( void )
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->getBrightness();
}
@@ -384,9 +353,8 @@ int tvGetBrightness ( void )
int tvSaveBrightness ( int brightness )
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->saveBrightness(brightness);
}
@@ -395,9 +363,8 @@ int tvSaveBrightness ( int brightness )
int tvSetContrast ( int contrast, int is_save )
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->setContrast(contrast, is_save);
}
@@ -406,9 +373,8 @@ int tvSetContrast ( int contrast, int is_save )
int tvGetContrast (void)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->getContrast();
}
@@ -417,9 +383,8 @@ int tvGetContrast (void)
int tvSaveContrast (int contrast)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->saveContrast(contrast);
}
@@ -428,9 +393,8 @@ int tvSaveContrast (int contrast)
int tvSetSaturation (int satuation, int is_save)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->setSaturation(satuation, is_save);
}
@@ -439,9 +403,8 @@ int tvSetSaturation (int satuation, int is_save)
int tvGetSaturation (void)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->getSaturation();
}
@@ -450,9 +413,8 @@ int tvGetSaturation (void)
int tvSaveSaturation (int satuation)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->saveSaturation(satuation);
}
@@ -461,9 +423,8 @@ int tvSaveSaturation (int satuation)
int tvSetHue (int hue, int is_save)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->setHue(hue, is_save);
}
@@ -472,9 +433,8 @@ int tvSetHue (int hue, int is_save)
int tvGetHue (void)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->getHue();
}
@@ -483,9 +443,8 @@ int tvGetHue (void)
int tvSaveHue (int hue)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->saveHue(hue);
}
@@ -494,9 +453,8 @@ int tvSaveHue (int hue)
int tvSetSharpness ( int value, int en, int is_save )
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->setSharpness(value, en, is_save);
}
@@ -505,9 +463,8 @@ int tvSetSharpness ( int value, int en, int is_save )
int tvGetSharpness (void)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->getSharpness();
}
@@ -516,9 +473,8 @@ int tvGetSharpness (void)
int tvSaveSharpness (int value)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
sws->saveSharpness(value);
}
@@ -527,9 +483,8 @@ int tvSaveSharpness (int value)
int tvSetColorTemperature (vpp_color_temperature_mode_t mode, int is_save)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->setColorTemperature(mode, is_save);
}
@@ -538,9 +493,8 @@ int tvSetColorTemperature (vpp_color_temperature_mode_t mode, int is_save)
int tvGetColorTemperature (void)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->getColorTemperature();
}
@@ -549,9 +503,8 @@ int tvGetColorTemperature (void)
int tvSaveColorTemperature (vpp_color_temperature_mode_t mode)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->saveColorTemperature(mode);
}
@@ -560,9 +513,8 @@ int tvSaveColorTemperature (vpp_color_temperature_mode_t mode)
int tvSetColorTemperatureParams(vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t params)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->setColorTemperatureParam(Tempmode, params);
}
@@ -571,9 +523,8 @@ int tvSetColorTemperatureParams(vpp_color_temperature_mode_t Tempmode, tcon_rgb_
int tvGetColorTemperatureParams(vpp_color_temperature_mode_t Tempmode, pq_color_param_t id)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->getColorTemperatureParam((int)Tempmode, (int)id);
}
@@ -582,9 +533,8 @@ int tvGetColorTemperatureParams(vpp_color_temperature_mode_t Tempmode, pq_color_
int tvSaveColorTemperatureParams(vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t params)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->saveColorTemperatureParam((int)Tempmode, params);
}
@@ -593,9 +543,8 @@ int tvSaveColorTemperatureParams(vpp_color_temperature_mode_t Tempmode, tcon_rgb
int tvSetNoiseReductionMode (vpp_noise_reduction_mode_t mode, int is_save)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->setNoiseReductionMode(mode, is_save);
}
@@ -604,9 +553,8 @@ int tvSetNoiseReductionMode (vpp_noise_reduction_mode_t mode, int is_save)
int tvGetNoiseReductionMode (void)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->getNoiseReductionMode();
}
@@ -615,9 +563,8 @@ int tvGetNoiseReductionMode (void)
int tvSaveNoiseReductionMode ( vpp_noise_reduction_mode_t mode)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->saveNoiseReductionMode(mode);
}
@@ -626,8 +573,8 @@ int tvSaveNoiseReductionMode ( vpp_noise_reduction_mode_t mode)
int tvSetGamma(int gamma_curve, int is_save)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->setGammaValue(gamma_curve, is_save);
}
@@ -636,8 +583,8 @@ int tvSetGamma(int gamma_curve, int is_save)
int tvGetGamma(void)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->getGammaValue();
}
@@ -646,8 +593,8 @@ int tvGetGamma(void)
int tvSetEyeProtectionMode(source_input_param_t source_input_param, int enable)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->setEyeProtectionMode(source_input_param, enable);
}
@@ -656,8 +603,8 @@ int tvSetEyeProtectionMode(source_input_param_t source_input_param, int enable)
int tvGetEyeProtectionMode(void)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->getEyeProtectionMode();
}
@@ -666,8 +613,8 @@ int tvGetEyeProtectionMode(void)
int tvGetDisplayMode(source_input_param_t source_input_param)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->getDisplayMode(source_input_param);
}
@@ -676,9 +623,8 @@ int tvGetDisplayMode(source_input_param_t source_input_param)
int tvFactoryResetNonlinear(void)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->factoryResetNonlinear();
}
@@ -687,9 +633,8 @@ int tvFactoryResetNonlinear(void)
int tvGetOverscanParam(source_input_param_t source_input_param, tvin_cutwin_param_t id)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->getOverscanParam(source_input_param, (int)id);
}
@@ -698,9 +643,8 @@ int tvGetOverscanParam(source_input_param_t source_input_param, tvin_cutwin_para
int tvFactoryResetPQMode(void)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->factoryResetPQMode();
}
@@ -709,9 +653,8 @@ int tvFactoryResetPQMode(void)
int tvFactoryResetColorTemp(void)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->factoryResetColorTemp();
}
@@ -720,9 +663,8 @@ int tvFactoryResetColorTemp(void)
int tvFactorySetPQParam(source_input_param_t source_input_param, int pq_mode, vpp_pq_param_t id, int value)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->factorySetPQParam(source_input_param, pq_mode, id, value);
}
@@ -731,9 +673,8 @@ int tvFactorySetPQParam(source_input_param_t source_input_param, int pq_mode, vp
int tvFactoryGetPQParam(source_input_param_t source_input_param, int pq_mode, vpp_pq_param_t id)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->factoryGetPQParam(source_input_param, pq_mode, id);
}
@@ -741,9 +682,8 @@ int tvFactoryGetPQParam(source_input_param_t source_input_param, int pq_mode, vp
}
int tvFactorySetColorTemperatureParam(int colortemperature_mode, pq_color_param_t id, int value)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->factorySetColorTemperatureParam(colortemperature_mode, id, value);
}
@@ -751,9 +691,8 @@ int tvFactorySetColorTemperatureParam(int colortemperature_mode, pq_color_param_
}
int tvFactoryGetColorTemperatureParam(int colortemperature_mode, pq_color_param_t id)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->factoryGetColorTemperatureParam(colortemperature_mode, id);
}
@@ -761,9 +700,8 @@ int tvFactoryGetColorTemperatureParam(int colortemperature_mode, pq_color_param_
}
int tvFactorySaveColorTemperatureParam(int colortemperature_mode, pq_color_param_t id, int value)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->factorySaveColorTemperatureParam(colortemperature_mode, id, value);
}
@@ -772,9 +710,8 @@ int tvFactorySaveColorTemperatureParam(int colortemperature_mode, pq_color_param
int tvFactorySetOverscanParam(source_input_param_t source_input_param, tvin_cutwin_t cutwin_t)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->factorySetOverscan(source_input_param, cutwin_t.he, cutwin_t.hs, cutwin_t.ve, cutwin_t.vs);
}
@@ -782,9 +719,8 @@ int tvFactorySetOverscanParam(source_input_param_t source_input_param, tvin_cutw
}
int tvFactoryGetOverscanParam(source_input_param_t source_input_param, int id)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->factoryGetOverscan(source_input_param, id);
}
@@ -794,9 +730,8 @@ int tvFactoryGetOverscanParam(source_input_param_t source_input_param, int id)
int tvFactorySetGamma(int gamma_r, int gamma_g, int gamma_b)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->factorySetGamma(gamma_r, gamma_g, gamma_b);
}
@@ -805,9 +740,8 @@ int tvFactorySetGamma(int gamma_r, int gamma_g, int gamma_b)
int tvFactorySetNolineParams(source_input_param_t source_input_param, int type, noline_params_t noline_params)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->factorySetNolineParams(source_input_param, type, noline_params.osd0, noline_params.osd25,
noline_params.osd50, noline_params.osd75, noline_params.osd100);
}
@@ -817,9 +751,8 @@ int tvFactorySetNolineParams(source_input_param_t source_input_param, int type,
int tvFactoryGetNolineParams(source_input_param_t source_input_param, int type, int id)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->factoryGetNolineParams(source_input_param, type, id);
}
@@ -828,9 +761,8 @@ int tvFactoryGetNolineParams(source_input_param_t source_input_param, int type,
int tvFactorySetParamsDefault(void)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->factorySetParamsDefault();
}
@@ -840,9 +772,8 @@ int tvFactorySetParamsDefault(void)
int tvFactorySSMRestore(void)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->factorySSMRestore();
}
@@ -852,9 +783,8 @@ int tvFactorySSMRestore(void)
int tvSSMRecovery(void)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->SSMRecovery();
}
@@ -863,9 +793,8 @@ int tvSSMRecovery(void)
int tvGetSSMStatus(void)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->getSSMStatus();
}
@@ -874,33 +803,28 @@ int tvGetSSMStatus(void)
int tvSetPLLValues(source_input_param_t source_input_param)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->setPLLValues(source_input_param);
}
return -1;
-
}
int tvSetCVD2Values(source_input_param_t source_input_param)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->setCVD2Values(source_input_param);
}
return -1;
-
}
int tvSetPQConfig(Set_Flag_Cmd_t id, int value)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
return sws->setPQConfig(id, value);
}
@@ -910,9 +834,8 @@ int tvSetPQConfig(Set_Flag_Cmd_t id, int value)
int tvSetCurrentSourceInfo(tv_source_input_t tv_source_input, tv_source_input_type_t source_type,tvin_port_t source_port,
tvin_sig_fmt_t sig_fmt, is_3d_type_t is3d, tvin_trans_fmt_t trans_fmt)
{
- const sp<ISystemControlService> &sws = getSystemControlService();
-
- if (sws != 0) {
+ const sp<SystemControlClient> &sws = getSystemControlService();
+ if (sws != nullptr) {
source_input_param_t source_input_param;
source_input_param.source_input = tv_source_input;
source_input_param.source_type = source_type;
@@ -923,11 +846,10 @@ int tvSetCurrentSourceInfo(tv_source_input_t tv_source_input, tv_source_input_ty
return sws->setCurrentSourceInfo(source_input_param);
}
-
return -1;
}
-
//PQ end
+
int Tv_MiscRegs(const char *cmd)
{
FILE *fp = NULL;
@@ -1397,7 +1319,7 @@ Paras Paras::operator + (const Paras &p)
int Paras::getInt(const char *key, int def) const
{
- STR_MAP::const_iterator it = mparas.find(std::string(key));
+ STR_MAP::const_iterator it = mparas.find(std::string(key));
if (it == mparas.end())
return def;
return atoi(it->second.c_str());
@@ -1469,6 +1391,7 @@ int paramGetInt(const char *param, const char *section, const char *value, int d
return def;
return jsonGetInt(param, section, value, def);
}
+
const std::string paramGetString(const char *param, const char *section, const char *value, const char *def) {
if (!param || !strlen(param))
return def;
diff --git a/tvutils/zepoll.cpp b/tvutils/zepoll.cpp
index fadbe6f..0e563a6 100644
--- a/tvutils/zepoll.cpp
+++ b/tvutils/zepoll.cpp
@@ -7,7 +7,7 @@
* Description: c++ file
*/
-#include "zepoll.h"
+#include "include/zepoll.h"
Epoll::Epoll(int _max, int maxevents): max(_max),
epoll_fd(-1),