author | Tellen 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) |
commit | ba6d844ff037b06d632ed8ad568a6f859cf9c83c (patch) | |
tree | 04428787d022a5454ae2fc770d9d713cb61ebd2e | |
parent | d9344ce4fd26378d7798390e32656d232c144635 (diff) | |
download | tvserver-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
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), |